简介
MODBUS TCP/IP 是 MODBUS 系列简单、供应商中立的通信协议的一个变体,用于监控自动化设备。具体来说,它涵盖了使用 TCP/IP 协议在“Intranet”或“Internet”环境中使用 MODBUS 消息传递。此时协议最常见的用途是将 PLC、I/O 模块和“网关”以以太网连接到其他简单的现场总线或 I/O 网络。
MODBUS TCP/IP 协议作为自动化标准发布。由于 MODBUS 已经广为人知,因此本文档中应该很少有其他地方无法获得的信息。然而,已经尝试阐明 MODBUS 中的哪些功能对通用自动化设备的互操作性具有价值,以及哪些部分是作为 PLC 编程协议交替使用 MODBUS 的“包袱”。
这是通过将支持的消息类型分组到“一致性等级”中来完成的,这些等级区分了那些普遍实现的消息和那些可选的消息,特别是那些特定于诸如 PLC 之类的设备的消息。
安装Modbus模拟器
下载链接:https://www.hmisys.com/downloads/PeakHMISlaveSimulatorInstall.exe
下载完成后运行该模拟器:
点击Windows,会弹出Register data选项,点击进去:
根据弹出的窗口选择Holding Registers就可以设置每个点位地址对应的值。
安装Neuron
## 1.获取Docker镜像 docker pull neugates/neuron:2.0.1 ## 启动Docker容器 docker run -d --name neuron -p 7000:7000 -p 7001:7001 --privileged=true --restart=always neugates/neuron:2.0.1
tcp 7000: 用于访问web。
tcp 7001: http api端口。(api端口为web端口+1,例如,当web端口映射为8000时,api端口应映射为8001)
tcp 9081: eKuiper api端口.
--restart=always: docker进程重启时,自动重启neuron容器。
--privileged=true:便于排查问题。
--device /dev/ttyUSB0:/dev/ttyS0: 用于映射串口到docker。
Neuron web页面默认用户名admin,默认密码0000
南向配置
点击南向设备管理,添加设备
填写设备名称,选择协议类型,点击创建
点击设备配置,填写设备配置信息
填写信息确保无误后,点击提交
创建完成后,点击该设备面板进入Group列表子页面,点击创建group
首先,填写group名称和Interval采集频率,点击创建;其次,点击箭头所指图标进入子页面创建需要采集数据的点位信息,如图:
提示:neuron不但可以数据上报,同时还可以进行协议下发,在配置点位信息的时候,Attribute参数可以选择多个选项,只要将write选项也选上后,就可以通过neuron去修改modbus tcp模拟器上的点位对应的值,实际设备同理。
完成点位信息配置后点击创建,可以看到点位已经创建成功,如图:
另外在Tag列表页面还可以通过箭头所指对点位进行导入和导出的功能,这样可以避免手工添加点位的繁琐。
返回到南向设备管理页面,点击箭头所指开关选项后,可以看到工作状态变为“运行中”,连接状态为“已连接”。
点击数据监控页面,根据箭头顺序,可以监控已创建点位的值是否成功采集,如图:
北向配置
创建北向应用,点击北向应用管理,添加应用,填写相应名称选择插件类型,点击完成创建
这里以数据上报到EMQX为例,所以选择插件mqtt
和南向一样,首先点击应用配置
注:Upload topic是可以自定义的,如果不设置,消息将会往默认的主题发送(默认topic:neuron/client-id/upload)
填写相应应用配置信息,点击提交
与南向相同,点击箭头所指开关选项,可以看到工作状态处于“运行中”,连接状态处于“已连接”,表明北向已经成功连接EMQX且能够正常运行
点击已创建好的北向应用面板,进入group列表页面,点击添加订阅,选择需要订阅的南向设备及下面的group,选择提交
验证
最后所有都配置完成后,我们可以用一个客户端测试工具MQTTX连接(https://www.emqx.com/zh/try?product=MQTTX) EMQX去订阅neuron上报数据的topic,查看是否能收到消息。
首先通过EMQX Dashboard可以看到连接的两个客户端,一个是neuron北向连接上来的,一个是用MQTTX连接的,如图:
然后,在MQTTX上用该连接上的客户端去订阅neuron/neuron/upload主题,可以看到消息在不停的发送过来,如图:
提示:因为北向设置的clientid为neuron,Upload topic采用默认的(neuron/clientid/upload),所以此处订阅的topic为neuron/neuron/upload。
至此,通过neuron采集modbus tcp模拟器上的数据上报到EMQX已完成。