modbus驱动

Navigation:  iCentroview系统的配置 > 配置客户端 > 服务端配置 > SCADA节点总览配置 > 驱动配置 >

modbus驱动

Previous pageReturn to chapter overviewNext page

modbus驱动该驱动支持modbus协议的TCPClient方式和Serial串口方式。

 

主要包含以下步骤:

 

u添加modbus驱动

u配置modbus设备

TCP方式

Serial串口方式

u配置modbus数据块

u变量管理-设备地址格式

免配块方式变量设备地址配置

配块方式变量设备地址配置


 

u添加modbus驱动

1.首先,需要配置好相应的SCADA节点。

ICV_CONFIG_DRIVER_S7_5

 

2.双击SCADA节点下的驱动配置,进入驱动配置页面,在页面的左上方,可以看到“添加驱动”的按钮,点击添加驱动,弹出可用驱动的选择对话框,在可用驱动列表中,选择modbus驱动所对应的“modbus”,然后单击确定。

icv_config_driver_modbus_1

 

3.签出该驱动,点击“配置驱动”按钮。

icv_config_driver_modbus_2

4.弹出modbus配置的主界面。

 

u配置modbus设备

1.选择modbus后点击确定按钮,签出modbus,点击配置驱动按钮,系统弹出配置界面,在设备列表处点击鼠标右键,选择“创建设备”选项,如下图:

ICV_CONFIG_DRIVER_IEEE1888_3

2.系统弹出设备配置窗口,填入相关配置项,如下图:

以TCP方式采集的设备按照以下方式配置

BD_AddDatablock

参数说明:

连接类型:选择TCPClient;

协议类型:选择Modbus/TCP;

设备名称:不能为空,不能以数字开头;

响应超时:连接设备和发送数据的响应超时时间;

IP地址:欲连接设备的IP;

端口号:欲连接设备使用的端口号,默认为502;

备机地址:备设备的IP;

备机端口号:欲连接备设备使用的端口号;

描述:自定义的设备描述信息;

是否支持多连接:该设备是否支持多连接;

任务号:同一任务号下的设备消息放在同一个进程中;

可选参数:默认为“0”。“0”表示当设备请求超时,会继续请求数据,不做重连操作;“1”表示连续三次设备请求超时,便断开重连设备;

多寄存器命令:勾选时,标识用写多寄存器(或多线圈)命令去实现写单寄存器(或单线圈)。

 

以Serial串口方式采集的设备按照以下方式配置

icv_config_driver_modbus_4

参数说明:

连接类型:选择Serial

设备名称:不能为空,不能以数字开头

响应超时:连接设备和发送数据的响应超时时间。

COMx:与设备连接的COM口

描述:自定义的设备描述信息。

波特率:欲连接设备使用的波特率。

奇偶校验位:欲连接设备使用的奇偶校验位。

数据位:欲连接设备使用的数据位。

停止位:欲连接设备使用的停止位。

任务号:同一任务号下的设备消息放在同一个进程中。

多寄存器命令:勾选时,标识用写多寄存器(或多线圈)命令去实现写单寄存器(或单线圈)。

注意:

Serial串口模式不支持免配块模式,需要配块才能进行正确通信。块的配置参见配置modbus数据块;

一个COM口只能配置一个设备, 这个设备下的数据块的任务号必须一致。

如果实际有多个设备连接一个COM口,则可以通过配置一个设备,然后在数据块上通过站号区分。  

3.点击确定按钮,完成设备配置。

 

u配置modbus数据块

注意:modbus驱动支持免配块方式。若选择免配块方式,则无需进行本章操作,相应的变量配置参见免配块方式下的变量设备地址配置 。若采用配数据块方式,具体操作参见本章说明,其变量配置参见配块方式下的变量设备地址配置

1.选中已经配置的设备,在“数据块列表”中点击右键,如下图:

icv_config_driver_modbus_5

2.选择“创建数据项”,弹出数据块配置界面,如下图:

icv_config_driver_modbus_7

名称:自定义的块名。

轮询周期:扫描数据块的周期。

相位:轮询周期中的相位。

地址:设备地址。

DO:000000-065535

DI:100000-165535

AI:300000-365535

AO:400000-465535

通过地址来区分信号类型

任务号:不同任务号的块将使用不同的线程进行采集。

元素个数:该数据块的长度,即,用户要在数据块中保存的查询记录的最大条数。

对于AI、AO而言,为寄存器个数,最大为125,推荐最大使用120;

注:元素个数填写,不用最大值的意义在于,当如FLOAT类型4个字节跨数据块时,可使用预留的部分进行两个数据块间的调整。数据块长度限制,是由于ModBus协议的通讯包限制为256bit。

对于DI、DO而言,为线圈个数,最大为1000;

描述:自定义的描述信息。

元素大小[字节]:用户查询的每条记录的元素大小。

对于AI、AO而言,为寄存器大小,输入2即可;

对于DI、DO而言,输入1即可;

1.数据块的长度=元素个数*元素大小。AI和AO类型的元素大小不能小于2。

2.配置数据块长度的时候需注意,Modbus的数据块长度是指个数,数据块总大小不得超过250个字节。如配置浮点型变量,每个浮点型变量需占用4个字节,所属驱动是Modbus驱动,那么数据块长度最大能配62个*4字节=248字节,第63个的数据块的长度为63个*4字节=252字节,超过了250最大限制,则无效。因此在工程实施时,到块的边界时,如果有变量占用的字节超过了一个块,可能会导致该变量读取数据不对,这个需要工程实施人员注意,在驱动的数据块配置时,对照实际点表,合理设定数据块的长度,同样在配置变量的时候,我们应该选择具有4个字节的单精度浮点型。

3.blob类型长度最大250。

设备站号:modbus设备的站号。

注意:以ASCII方式向modbus驱动的BLOB类型变量写入时要大于2个字节。

 

3.配置完毕后,点击“确定”按钮,完成数据块配置。

4.配置完毕后,关闭配置界面,将modbus签入则完成配置操作。

 

u变量管理-设备地址格式

注意:由于MODBUS协议是以寄存器为单位写的,因而双字寄存器拆分使用的变量在一个扫描周期内连续对同一寄存器进行写入会存在遗漏风险。因此保守起见,此种情况下,建议Tag点要配置成只读。以下列举了此情况下的Tag点配置:

DI/DO变量使用如400001:0、300001:15、DataBlock0:b161;

AI/AO变量可使用8位无符号/有符号整型等,具体根据modbus设备侧信号表数据类型而定;

TEXT/BLOB变量起始地址和长度跨字。

免配块方式变量设备地址配置

DI/DO:

格式:寄存器地址:位地址

例如:

300001:15  表示读取Modbus寄存器地址300001的第15个bit;

400001:0   表示读取Modbus寄存器地址400001的第0个bit;

000001     表示读取Modbus寄存器地址000001的第0个bit;

AI/AO:

8位无符号整型、8位有符合整型:

例如:400001:0、400001:8

400001:0代表取400001的第个一字节,400001:8代表取400001的第二个字节;

16位无符号整型、16位有符合整型:

例如:400001,读取一个完整400001寄存器;

32位无符号整型、32位有符合整型、单精度浮点型:

例如:400001,表示读取400001和400002两个寄存器;

双精度浮点型:

例如:400001,表示读取400001~400004四个寄存器。

TEXT/BLOB:

格式:起始地址#长度(字节),如果不配置长度,默认长度为250。

例如:400001#16,表示从400001开始读取16个字节。

变量配点的时候可以支持“站号@地址”的形式,例如1@400001,表示站号为1的地址为400001的变量;

没有配站号的话,默认为站1,用户想配站2的400001地址的话,格式为2@400001。

注意:

选择免配块方式,每个数据块最大250bytes。

选择免配块方式,对于某些modbus设备,如果某个地址的数据读取失败,会导致该地址后的数据按块读取时失败,这种情况建议采用配块方式,规避这些读取失败的地址。

例如:某些设备(数据段是固定的),寄存器地址1~125,中间的90~100寄存器是空的。请不要采用免配块方式,请配置两个数据块分别对应1~89和101~125。

 

配块方式变量设备地址配置

DI变量/DO变量的配置:

设备地址格式为:数据块名:b偏移量。(b代表以位为单位进行偏移)

例如:Datablock1:b61,表示读取数据块Datablock0中的第62位。

AI变量/AO变量配置:

设备地址格式为:数据块名:B(W)偏移量。(B代表以字节为单位进行偏移,W表示以字为单位进行偏移)

例如:Datablock0:B23,表示从数据块Datablock0中的第24字节开始读取,读取的长度根据AI变量的数据类型自动选取,8位整形读取1个字节,16位整形读取2个字节,32位整形和单精度浮点型读取4个字节,双精度浮点型读取8个字节。

Datablock0:W23,表示从数据块Datablock0中的第24字节开始读取,读取的长度根据AI变量的数据类型自动选取,由于W单位是字,一个字是2个字节,所以配置的数据类型不能是8位的整形,从16位整形开始读取1个字,32位整形和单精度浮点型读取2个字,双精度浮点型读取4个字。

TEXT、BLOB:

设备地址格式为:数据块名:偏移字节#字节长度

例:DataBlock0:2#50

表示从数据块DataBlock0的第3字节开始读取50字节的长度。

注:变量配点的时,也支持W,以16位为一个字,也支持按字去采集,一个字是两个字节。两个字节一个字,在采集string或者blob的时候会用到。