Skip to content

Modbus TCP

特别注意

本章节所有Api传递参数中的通知组必须与系统设置-->待机与通知组-->通知组管理中已有的通知组保持一致。

设备支持通过Modbus TCP协议推送告警信息、常用告警控制能力,可应用于工业领域,对接各类PLC、工业自动化设备等

支持功能

  • 推送告警信息(等同于基础功能
  • 通过指定ID触发一次预设的语音告警
  • 查询当前告警队列数量
  • 跳过当前告警
  • 清空播报队列
  • 指令模版

方式1-指令模板

只需要在界面中配置好播报模板和对应ID,传入对应ID即可播报。

播报时只需要对100寄存器传入预设的对应ID即可触发一次对应语音播报,无需再发送端进行语音编码,极大减轻对接工作量。 以下是对该功能的介绍。 地址表参见

特别注意

请勿快速频繁的点击保存配置按钮,否则可能会导致服务端口占用无法启动服务的情况,如果服务端口无法开放,请等待几分钟后点击保存配置重启服务后再试!

指令配置

参数说明

  • 寄存器值:此参数为触发报警灯报警的值
  • 播报内容:触发此指令时,报警灯会语音播报自定义的播报内容
  • 通知组:触发指令时,报警灯会按照选择的通知组进行变化

注意事项

  • Modbus TCP配置内的端口号支持自定义
  • 寄存器值不允许只填写一个0或首字符为0,如值为0x000a,则正确的输入应为a

调试案例

在规则表中添加如下规则

寄存器值:a

报警内容:设备温度超过阈值,请检查

通知组:默认

最终得到的发送数据结构如下,将0x000a数据写入100地址,即可触发一次语音告警

设备温度超过阈值,请检查

方式2-自定义播报

强大的播报方法,可以自定义灯光样式、颜色、播报内容,但构造数据较为复杂,使用写多寄存器实现。

操作说明

目前的功能都在保持寄存器中实现,即Holding Register寄存器,以下简称hr寄存器

除了hr寄存器之外请不要操作其他寄存器。

Slave ID说明

以下操作均在Slave ID 1下进行操作

调试案例

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地址开始写入,即可实现推送播报。

注意事项

  • 当写入功能位时,播报功能区即使写入数据也不会生效
  • 当使用读取操作时,会触发设备更新状态区数据
  • 功能位可以同时使用多个标志位,会同时生效
  • 当Busy为1时,读取状态位得到的数据可能不准,请在Busy位为0时进行操作
  • 由于Modbus写多寄存器指令,最多只能一次写入123个寄存器,所以这也是为什么播报地址在223就截止了。 101-223正是一次写入命令支持的最大寄存器数量。

Demo下载

提供了Modbus Poll工具的工程文件,以及使用Python实现的通过Modbus TCP发送告警的脚本。点击下载

地址寄存表

读写权限

  • 40001-40060寄存器为只读
  • 40080-40223寄存器为读写
  • 支持读指令
  • (即 0x060x10 功能码)

地址范围分配

以下地址默认为保持寄存器地址范围。表中的地址1表示实际寄存器地址的40001

地址(DEC 10进制)功能样例备注
状态区-只读
1寄存器数据处理Busy0x00011表示正在处理,0表示空闲
2队列待播报数量0x0000
3~79保留未使用0x0000
控制功能区-读写 支持写单、多寄存器操作
80跳过当前播报功能0x0001设为1时,立刻进行下一条播报。
此寄存器设置值后系统会自动置0。
81清空播报队列0x0001设为1时,立刻清空待播报的队列。
此寄存器设置值后系统会自动置0。
82~98保留未使用0x0000
模板播报功能区-读写支持写单、多寄存器操作
99 或 550-599删除由模版指令创建的周期性或无限循环播报0x0001指定需要删除周期性或无限循环播报的模版ID
100 或 500-549模板ID0x0001与Modbus模板配置界面ID一致即可调用,如果配置重复播选项报将自动创建重复播报
自定义播报功能区-读写 仅支持多寄存器操作
101Led样式0x0015参见常规Api中 [Led样式参数](./common_api.html#led样式参数)
102Led颜色1-高8位0x00FF例如颜色为`#22ffcc`,此处值就是`0x0022`
103Led颜色1-低16位0xccbb例如颜色为`#22ffcc`,此处值就是`0xffcc`
104Led颜色2-高8位0x00FF颜色赋值方式同上,如果不需要多色,设为0即可。
105Led颜色2-低16位0xccbb颜色赋值方式同上,如果不需要多色,设为0即可。
106Led颜色3-高8位0x00FF同上
107Led颜色3-低16位0xccbb同上
108Led颜色4-高8位0x00FF同上
109Led颜色4-低16位0xccbb同上
110播报时长0x0015设置播报时长,功能等同[常规Api-构造请求-play_time参数](./common_api.html#构造请求)
111铃声编号0x0014设置铃声编号,功能等同[常规Api-构造请求-tone参数](./common_api.html#构造请求)
`0xFFFF`表示不使用铃声
112播报速率0x0000设置播报速率,功能等同[常规Api-构造请求-tts_speed参数](./common_api.html#构造请求)
113led样式参数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