慧程HiperMATRIX 支持对modbus协议的连接,可以使用 TCP/IP的方式 连接到modbus。与 Siemens 和某些 Allen Bradley 连接类似,modbus 设备不支持标签浏览。您可以在HiperMatrix手动创建设备属性,或使用点位导入/导出在 Excel 创建所有点位。目前,HiperMATRIX 支持使用TCP/UDP/RTU连接的modbus
创建modbus TCP/UDP 连接
- 进入配置管理-连接配置,点击新建连接
- 选择modbus协议, 根据您设备的通信协议是 TCP/UDP/RTU 选择对应的连接模式,其中TCP/UDP的连接配置信息完全相同,RTU的配置有很大差异,详情请看属性说明中的表格。
- 在连接中填入相关配置
其中:
- 基础属性中:主机名表示 modbus中master的ip地址,端口默认使用 502
- 高级属性中:client's station number 代表 master连接下的slave设备号
- 字节序:代表着此设备传输的数据格式,四种格式供选择,默认是大端,请根据设备具体的输出数据格式选择对应的格式。
英文 | 中文 |
---|---|
big endian | 大端 |
little endian | 小端 |
big endian byte swap | 大端字节序反转 |
little endian byte swap | 小端字节序反转 |
-
点击测试连接,连接成功代表master节点服务正常,如失败可以在连接日志中查看失败原因。
-
点击提交。提交完成后将显示连接列表,连接状态应该为已连接,启用状态为启用
相关属性说明:
通用信息 | 内容 |
---|---|
名称 | 设备连接的名称 |
描述 | 设备连接的描述 |
启用 | 连接是否处于活动状态。禁用此设置会终止与设备的通信。 |
连接性 | |
主机名 | 设备的主机名或 IP 地址。如192.168.13.12 |
端口 | 连接到设备时使用的端口。默认值为 502。 |
超时 | 请求超时时间,以毫秒为单位。默认值为 10,000。 (即为10秒钟) |
高级 | |
client's station number | 可以理解为设备号。默认值为 1。 |
连接超时后重新连接 | 在连续几次超时后,设备连接将尝试重新连接到设备。此设置确定在重新连接之前必须发生多少次连续超时。 |
字节序 | 传输出来的数据格式 |
连接性 | |
---|---|
串口名 | 开放的串口名称 |
波特率 | 符号的传输速率 |
数据位 | 数据包中的实际数据位 |
终止位 | 单个包中的最后一位 |
校验位 | 奇偶校验位 |
创建设备挂载连接
在设备配置中创建设备,将连接设置为刚刚创建的对应连接,
注意:连接一定要选择正确。否则匹配不到正确的连接。
配置数据地址:
根据modbus的配置,填入对应的地址即可获取对应的数据 .
modbus相关知识
Modbus协议是一个主/从架构的协议。
在同一个Modbus网络中同一时刻只有一个节点是主(master)节点,其他使用Modbus协议参与通信的节点是从(slave)节点,从节点的最大编号为247。每一个slave设备都有一个唯一的地址。在串行和MB+网络中,通讯总是由主节点发起(在以太网上,任何一个设备都能发送一个Modbus命令,但是通常也只有一个主节点设备启动指令),子节点在没有收到主节点请求时不会发送数据。各个子节点之间不会直接相互通信。
传输方式
Modbus 协议是一种应用层报文传输协议,包括ASCII、RTU、TCP三种报文类型,协议本身并没有定义物理层,只是定义了控制器能够认识和使用的消息结构,而不管它们是经过何种网络进行通信的。
Modbus 协议使用串口传输时可以选择RTU或ASCII模式,并规定了消息、数据结构、命令和应答方式并需要对数据进行校验。ASCII 模式采用LRC校验,RTU模式采用16 位CRC校验。通过以太网传输时使用TCP,这种模式不使用校验,因为TCP协议是一个面向连接的可靠协议。
modbus数据存储区(地址处理)
modbus的存储区分为5种
存储区 | 对应地址码 | 所占大小/bit | 读写权限 | 数据范围(短版本) |
---|---|---|---|---|
线圈状态(Coil Status) | 0(0xxxx) | 1 | 可读可写 | 00001-09999 |
离散输入状态(Input Status) | 1(1xxxx) | 1 | 只读 | 10001-19999 |
输入寄存器(Input Register) | 3(3xxxx) | 16 | 只读 | 30001-39999 |
保持寄存器(Holding Register) | 4(4xxxx) | 16 | 可读可写 | 40001-49999 |
扩展寄存器(Extended Register) | 6(6xxxx) | 16 | 可读可写 | 600000-699999 |
补充说明:
最初,Modbus 格式允许指定多达 10000 个地址或离散输入、线圈、输入寄存器和保持寄存器。后来,这被扩展为允许每个内存区域(扩展寄存器区域除外)内最多 65536 个地址。当使用长地址格式即输入寄存器:1 时,可以指定 1 到 65535 之间的地址。当使用较短的版本时,有两种可用的格式,即 30001 和 300001。较短的格式 3XXXX 被限制在 30001 和 39999 之间,而较长的格式 3XXXXX 被限制在 300001 和 365535 之间。这些内存区域都从地址 1 开始。
对于扩展寄存器区域,可以指定地址 0-99999。这些寄存器映射到长度为 10000 的文件记录。地址 600000 对应于文件记录 0 中的第一个地址。地址 610000 则是第二个文件记录中的第一个地址,依此类推。请注意,通常只有 10 个文件记录(600000 到 699999),但规范允许 65536 个文件记录。使用扩展寄存器:格式您可以引用所有这些,如果使用较短的格式,则它被限制为 699999。该内存区域从地址 0 开始。
大多数内存区域从地址 1 开始,除了从 0 开始的扩展寄存器区域。当它在 Modbus 协议中发送时,它们都映射到 0x0000。
输入、保持和扩展寄存器由 16 位寄存器组成,而离散输入和线圈区域由位组成。
对于数据存储,若处于离散量输入(1)、线圈(0)的数据存储区域,则其中只能存储boolean类型,占一个Bit
若处于输入寄存器(3)与保存寄存器(4),则默认占据2个byte
若类型属于长整型(Long),浮点数(Float),双重浮点数(Double) , 则占据4个byte,侵占其后的一个地址
modbus字节序说明
modbus中对于长整型(Long),浮点数(Float),双重浮点数(Double) 拥有多种解析方式
一般分为: 有些地方使用1234用以表示
- Null --用于bool、bit、uint16、int16四种数据类型,表示无字节序
- ABCD --Big-endian (大端模式),
- DCBA --Little-endian (小端模式),
- BADC --Big-endian byte swap (大端反转),
- CDAB --Little-endian byte swap (小端反转),
目前 **慧程HiperMATRIX ** 中默认采用ABCD形式进行解析查看。
暂不支持更改。所以在进行配置时需要指定大字节序进行配置。
不同解析会得到完全不同的结果。
另对于 kepServer ,默认采用CDAB
若选择对应的ABCD,则需要进行如下的设置
modbus对于数组的处理,
modbus中对于数组的处理,是指从起始位置,读取多少个,不存在单一位置存放数组的情况。
例如:
该模拟软件数据地址从0开始,故需要+1进行地址确认。
40001 数组长度为2 , 则读取到: [1, 4060]
40004 数组长度为2, 则读取到: [3.14, 2.7]