# Modbus TCP协议
适用范围
可用版本:V1.8.0及以后
仅支持博灵A4系列
在1.8.0版本之后,设备支持通过Modbus TCP协议推送告警信息、常用告警控制能力,可应用于工业领域,对接各类PLC、工业自动化设备等。
目前支持的功能如下:
# Modbus寄存器地址表
# 操作说明
目前的功能都在保持寄存器
中实现,即Holding Register
寄存器,以下简称hr寄存器
。**除了hr寄存器
之外请不要操作其它寄存器。
**
Slave ID说明
以下操作均在Slave ID 1
下进行操作
# 读写权限
40001
-40060
寄存器为只读40080
-40223
寄存器为读写- 支持读指令
- 仅支持写多寄存器指令(即
0x10
功能码)
# 地址范围分配
- 地址
1
-2
可显示系统状态,只读 - 地址
80
-81
为功能位,当功能位存在非0数据位时播报功能不生效 - 地址
100
为方式1-指令模版 - 地址
101
-223
为方式2-自定义声光播报
以下地址默认为保持寄存器地址范围。表中的地址1
表示实际寄存器地址的40001
。
地址(DEC 10进制) | 功能 | 样例 | 备注 |
---|---|---|---|
状态区-只读 | |||
1 | 寄存器数据处理Busy | 0x0001 | 1表示正在处理,0表示空闲 |
2 | 队列待播报数量 | 0x0000 | |
3~79 | 保留未使用 | 0x0000 | |
控制功能区-读写 支持写单、寄存器操作 | |||
80 | 跳过当前播报功能 | 0x0001 | 设为1时,立刻进行下一条播报。 此寄存器设置值后系统会自动置0。 |
81 | 清空播报队列 | 0x0001 | 设为1时,立刻清空待播报的队列。 此寄存器设置值后系统会自动置0。 |
82~99 | 保留未使用 | 0x0000 | |
修改待机样式功能区-读写支持写单、寄存器操作 | |||
95 | Led样式和样式参数 | 0x0015 | 高8位为样式ID 低8位为样式参数 |
96 | Led颜色高8位 | 0xccbb | 例如颜色为`#ffccbb`,此处值就是`0x00ff` |
97 | Led颜色低16位 | 0x00FF | 例如颜色为`#ffccbb`,此处值就是`0xccbb` |
98 | 待机恢复时间(秒) | 0x0010 | 时间为:十六进制转整数(秒) |
模板播报功能区-读写支持写单、寄存器操作 | |||
99 或 550-599 | 删除由模版指令创建的周期性或无限循环播报 | 0x0001 | 指定需要删除周期性或无限循环播报的模版ID |
100 或 500-549 | 模板ID | 0x0001 | 与Modbus模板配置界面ID一致即可调用,如果配置重复播选项报将自动创建重复播报 |
# 注意事项
- 当写入功能位时,播报功能区即使写入数据也不会生效
- 当使用读取操作时,会触发设备更新状态区数据
- 功能位可以同时使用多个标志位,会同时生效
- 当Busy为1时,读取状态位得到的数据可能不准,请在Busy位为0时进行操作
- 由于Modbus写多寄存器指令,最多只能一次写入123个寄存器,所以这也是为什么播报地址在
223
就截止了。101
-223
正是一次写入命令支持的最大寄存器数量。
# 方式1-指令模版
# 功能介绍
1.9.0
版本增加该功能,这是一种比较简单的对接方法,只需要在界面中配置好播报模板和对应ID,传入对应ID即可播报。
播报时只需要对100
寄存器传入预设的对应ID即可触发一次对应语音播报,无需再发送端进行语音编码,极大减轻对接工作量。
以下是对该功能的介绍。地址表参见
# Modbus TCP配置图:

# 自定义指令配置图:

参数说明:
- 寄存器值:此参数为触发报警灯报警的值
- 播报内容:触发此指令时,报警灯会语音播报自定义的播报内容
- 通知组:触发指令时,报警灯会按照选择的通知组进行变化
注意事项:
- Modbus TCP配置内的端口号支持自定义
- 寄存器值不允许只填写一个0或首字符为0,如值为
0x000a
,则正确的输入应为a
# 调试案例
在规则表中添加如下规则
寄存器值:a
报警内容:设备温度超过阈值,请检查
通知组:默认
最终得到的发送数据结构如下,将0x000a
数据写入100
地址,即可触发一次语音告警
设备温度超过阈值,请检查
# 方式2-自定义声光播报
# 功能介绍
强大的播报方法,可以自定义灯光样式、颜色、播报内容,但构造数据较为复杂,使用写多寄存器实现。
地址(DEC 10进制) | 功能 | 样例 | 备注 |
---|---|---|---|
自定义播报功能区-读写 仅支持多寄存器操作 | |||
101 | Led样式 | 0x0015 | 参见常规告警Api中LED样式参数 |
102 | Led颜色1-高8位 | 0x00FF | 例如颜色为`#ffccbb`,此处值就是`0x00ff` |
103 | Led颜色1-低16位 | 0xccbb | 例如颜色为`#ffccbb`,此处值就是`0xccbb` |
104 | Led颜色2-高8位 | 0x00FF | 颜色赋值方式同上,如果不需要多色,设为0即可。 |
105 | Led颜色2-低16位 | 0xccbb | 颜色赋值方式同上,如果不需要多色,设为0即可。 |
106 | Led颜色3-高8位 | 0x00FF | 同上 |
107 | Led颜色3-低16位 | 0xccbb | 同上 |
108 | Led颜色4-高8位 | 0x00FF | 同上 |
109 | Led颜色4-低16位 | 0xccbb | 同上 |
110 | 播报时长 | 0x0015 | 设置播报时长 |
111 | 铃声编号 | 0x0014 | 设置铃声编号 `0xFFFF`表示不使用铃声 |
112 | 播报速率 | 0x0000 | 设置播报速率 |
113 | led样式参数 | 0x0301 | 只有Led样式参数为15或20时才有效。 当led样式为`15`时,`高8位`*0.01=`led_style[0]`,低8位为`led_style[1]`。 例如:[0.03, 1]对应的值为`0x0301`。 当led样式为`20`时,`高8位`*0.1=`led_style[0]`,`低8位`*0.1=`led_style[1]` 例如:[1, 1]对应的值为`0x1010`。 |
114-115 | 保留未使用 | 0x0000 | |
116 | 文本文字1-高8位 | 0x00e4 | 每个文字占用2个寄存器,使用utf-8编码。 例如`你`字,utf-8编码为`e4bda0`,那么116号寄存器存储`utf-8`编码高8位,即`0x00e4` 117号寄存器存储`utf-8`编码低16位,即`0xbda0`。以下的寄存器以此类推。 |
117 | 文本文字1-低16位 | 0xbda0 | |
118 | 文本文字2-高8位 | 0x00e5 | 每个文字占用2个寄存器,使用utf-8编码。 例如`好`字,utf-8编码为`e5a5bd`,那么118号寄存器存储`utf-8`编码高8位,即`0x00e5` 119号寄存器存储`utf-8`编码低16位,即`0xa5bd`。以下的寄存器以此类推。 |
119 | 文本文字2-低16位 | 0xa5bd | |
以下直到结束地址均为文本编码内容,以此类推。 | |||
223 | 文本文字54-低16位 | 0x0000 |
# 调试案例
led样式:
15
led颜色数组:
['#8a2be2']
播报时长:
0
提示音:
001
播报语速:
0
led样式参数:
[0.03,1]
语音播报内容:
欢迎使用
最终得到的发送数据结构如下
['0x000f', '0x008a', '0x2be2', '0x0000', '0x0000', '0x0000', '0x0000', '0x0000', '0x0000', '0x0000', '0x0001', '0x0000', '0x0301', '0x0000', '0x0000', '0x00e6', '0xaca2', '0x00e8', '0xbf8e', '0x00e4', '0xbdbf', '0x00e7', '0x94a8']
使用写多寄存器指令,从101地址开始写入,即可实现推送播报。
# Demo下载
提供了Modbus Poll
工具的工程文件,以及使用Python实现的通过Modbus
TCP发送告警的脚本。点我下载 (opens new window)