# Modbus TCP协议

适用范围

可用版本:V1.8.0及以后

仅支持博灵A4系列

在1.8.0版本之后,设备支持通过Modbus TCP协议推送告警信息、常用告警控制能力,可应用于工业领域,对接各类PLC、工业自动化设备等。以下将介绍如何使用。

目前支持的功能如下:

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

# 方式1-指令模版

# 功能介绍

1.9.0版本增加该功能,这是一种比较简单的对接方法,只需要在界面中配置好播报模板和对应ID,传入对应ID即可播报。

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

# Modbus TCP配置图:

# 自定义指令配置图:

参数说明:

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

注意事项:

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

# 调试案例

假设在规则表中添加了如下规则

寄存器值:a

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

通知组:默认

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

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

# 方式2-自定义声光播报

# 功能介绍

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

# 操作说明

目前的功能都在保持寄存器中实现,即Holding Register寄存器,以下简称hr寄存器除了hr寄存器之外请不要操作其他寄存器。

Slave ID说明

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

# 读写权限

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

# 地址范围分配

# 注意事项

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

# Modbus寄存器地址表

以下地址默认为保持寄存器地址范围。表中的地址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
模板播报功能区-读写支持写单、寄存器操作
100 模板ID 0x0001 与Modbus模板配置界面ID一致即可调用
自定义播报功能区-读写 仅支持多寄存器操作
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 设置播报时长,功能等同常规Api-构造请求-play_time参数
111 铃声编号 0x0014 设置铃声编号,功能等同常规Api-构造请求-tone参数
0xFFFF表示不使用铃声
112 播报速率 0x0000 设置播报速率,功能等同常规Api-构造请求-tts_speed参数
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)