Modbus、PLC、OPC数据采集与MQTT云端转发工具(直接对接Thingsboard开源平台)
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
1. IoT Hub软件功能概览
IoT Hub是一款专门应用Modbus、DLT645、PLC、OPC DA、OPC UA等协议进行工业数据采集与MQTT云端转发的工具软件(可直接对接开源Thinsboard平台)。如下图所示
图 1 软件概览
1功能架构
图 2 数据采集转发示意
如上图IoT Hub内置Modbus-RTU、Modbus-TCP、DLT645 1997/2007、OPC DA、OPC UA、S7等协议可通过RS-232、RS-485、以太网、以太网透传等多种方式对接现场各种设备并将采集到的数据打包通过MQTT协议发送给云端服务器。软件可直接支持Thingsboard和阿里云数据协议即JSON数据打包格式。
2现场部署
图 3 采集软件现场部署示意
如上图在实际的工业现场数据采集中各个车间的设备通过网络与工业互联网平台连接可以考虑在每个车间的汇聚交换机和核心交换机上部署IoT Hub数据采集软件。IoT Hub一般运行在安装了Windows系统的无风扇工控机中这样可以部署在复杂的工业现场环境中。
2. IoT Hub软件功能描述
本节首先概要介绍一下操作界面元素再详细介绍如何使用几个最常见工业数据采集协议采集现场设备的数据。
2.1 操作界面
图 4 界面功能示意
软件采用传统工业软件界面包括
1菜单栏提供设备、数据点文件打开、保存、导、导出MQTT和HTTP转发配置软件语言设置查看设置等功能。
2工具栏提供文件打开、保存通道、设备、数据点添加与删除MQTT转发启动、停止等功能。
3协议Tab页数据采集分为三大类通用设备、OPC DA和OPC UA。在每个Tab页可以对通道、设备进行增删改查操作。
4数据点查看页可以对每个设备的数据点实时值进行查看并可对该数据点进行增删改查操作。
5事件查看页用户可以查看重要的历史记录与提示信息。
2.2 设备数据采集
Modbus协议是一种古老、简单但又应用极其广泛的设备数据采集协议在各行各业中数量众多的传感器、数字仪表、PLC等都支持Modbus协议。下面以Modbus RTU协议为例详述软件数据采集和转发的详细过程其他Modbus TCP、DLT-645/1997、DLT-645/2007、PLC等也类似。
2.2.1 通道添加
通道是数据采集通信协议传输的接口包括硬件接口信息和通信协议信息。例如对于Modbus RTU协议它可以通过RS-232、RS-485接口直接传输也可以通过以太网进行透传。这样“Modbus RTU+串口”和“Modbus RTU+以太网透传”就是两种不同的通道。一个通道比如Modbus RTU以太网透传通道可以被多个设备共用而Modbus RTU RS-232串口通道就只能被一个设备单独使用。通道能够共用一般取决于接口属性例如对于Modbus RTU协议来说如果接口是RS-232则只能一个设备单独使用但如果是RS-485则可以多个设备同时使用。
首先使用Configure Virtual Serial Port Driver软件创建一对虚拟串口比如Port7和Port8。再如下图所示在Device页面的空白处通过右键菜单或工具栏图标创建通道
图 5 Modbus RTU通道添加
1设备供应商选择Modbus协议选择Modbus RTU。
2通信类型选择串口它是软件直接通信的接口。
3在通用页面填写通道名称、描述信息。
4在串口页面填写选择串口通信信息选择COM7填写波特率等信息。
5对于以太网和以太网透传页面与串口无关系统会自动禁止编辑。
填写好后通道的四个页面信息如下图所示
图 6 Modbus RTU通道页面
2.2.2 设备添加
设备是对现场各种仪器、仪表、传感器、PLC等待采集设备的抽象。每个设备都有自己的地址数据采集软件通过设备地址与设备通信。
选中某个通道可以通过右键菜单或工具栏图标来创建设备如下图所示
图 7 Modbus RTU通道添加设备
1在通用页面填写填写设备名称、备注等基本信息名称、备注等都支持中文。
2填写设备地址表达式对于Modbus RTU设备就是该设备的Slave ID。
3设定该设备的数据采集周期以毫秒为单位。
4设定设备连接和数据采集请求超时等待时间超时后会自动进行重连或重新请求。
5块读取页面一般保持默认设置即可它可以将Modbus多个读取命令合并成一条命令一次读取多个数据块提高数据采集效率。
2.2.3 数据点添加
数据点(英文称为Data Point或Tag)是对要采集的参数的统称每个设备中的数据点以唯一名称标记。比如某个温湿度传感器可以采集温度和湿度两个参数这两个参数就是两个数据点。选中某个设备可以通过右键菜单或工具栏图标来添加数据点如下图所示
图 8 Modbus RTU设备温度数据点添加
1在通用页面填写数据点名称和描述信息名称和描述都支持中文。本数据点采集温度。
2在地址表达式中填写该数据点的地址信息对不同协议地址格式也不同。对于Modbus协议数据点格式沿用工控软件的通用做法即内存前缀+寄存器编号构成符号索引的方法。实际使用时用户需要参考设备使用说明书确定要采集的参数地址。如下图
内存区块 | 前缀 |
线圈状态(或数字或离散量输出) | 0 |
离散输入 | 1 |
保持寄存器(或输出寄存器) | 3 |
输入寄存器 | 4 |
图 9 内存区块前缀示意
内存地址 | 寄存器编号 | 符号索引1 | 符号索引0 |
0 | 1 | 400001 | 400000 |
1 | 2 | 400002 | 400001 |
2 | 3 | 400003 | 400002 |
图 10 内存地址符号索引示意
- 图10是内存区块前缀不同的内存区域分别以1~4来表示。假设现在要读取输入寄存器内存区块这样前缀为4。
- 参考图11对于该内存区块的不同内存地址寄存器编号=内存地址+1这样就构成了红色字体标志的符号索引1这就是要填写的地址表达式。
本设备中地址表达式为300011意思是采集保持寄存器区域起始地址为10或起始第11个寄存器的数据。
3选择该数据点的数据类型及字节序。设备以二进制格式发送字节流数据如何解析完全由用户确定。实际使用时用户需要根据该设备的使用说明书确定数据类型、字节序及线性转化规则。以浮点数Float为例一个浮点数有四个字节以A、B、C、D表示则ABCD代表正序存储而DCBA代表完全逆序。
4当前版本数据点采集周期与所属设备采集周期一致不能单独设定采集周期。
5缩放页中本数据点不使用任何变换即使用原始采集值。
使用同样的方法再添加一个数据点采集湿度如下图所示
图 11 Modbus RTU设备湿度数据点添加
2.2.4 Modbus Slave模拟软件的配置和数据采集
为了方便使用Modbus Slave代替实际设备进行数据采集模拟。
1其连接配置如下图
图 12 Modbus Slave连接配置
选择串口Port8(与采集软件的Port7是一对虚拟串口)其它如波特率参数等的配置与采集软件保持一致。
2数据点配置和采集如下图
图 13 Modbus Slave数据配置和采集
由于采集软件配置的地址是300011和300013故需要在modbus slave地址10和12填充数据。填充完毕后数据就可以被采集到本地。
2.3 MQTT配置与数据转发
下面讲述如何配置MQTT将上一节中通过Modbus RTU协议采集的数据转发给MQTT Broker即MQTT服务器。
2.3.1 MQTT服务器配置
如果用户部署了Thingsboard服务器则可以直接将MQTT服务器地址设置为Thingsboard服务器地址此时在Thingsboard设备-->最新遥测数据里就可以看到IoT Hub软件上报的数据。本应用实例中为了简单MQTT服务器使用本地部署的Mosquitto服务器。需要通过mosquitto.conf配置文件对服务器进行如下配置
1配置用户名密码登录信息。
- 在mosquitto.conf文件中输入allow_anonymous false。不允许匿名登录。
- 在文件中输入password_file D:\ProgramFiles\Mosquitto\ my_pwd.txt。配置用户名和密码保存文件。
- 通过命令行配置用户名和密码.\mosquitto_passwd.exe -c my_pwd.txt tb_hub。配置用户名为tb_hub再按照提示输入密码。这些用户名和密码将保存在my_pwd.txt文件中。
2配置数组证书包括CA证书服务器证书和服务器私钥证书。
- 在文件中输入cafile D:\ProgramFiles\Mosquitto\mypem\ca-cert.pem。配置CA证书。
- 在文件中输入certfile D:\ProgramFiles\Mosquitto\mypem\server-cert.pem。配置服务器证书。
- 在文件中输入keyfile D:\ProgramFiles\Mosquitto\mypem\server-key.pem。配置服务器私钥证书。
- 在文件中输入require_certificate true。要求通信必须使用数字证书。
3MQTT通用配置。
在文件中输入
- listener 1883。
- protocol mqtt。
- use_identity_as_username false。
4启动服务器命令行中运行.\mosquitto.exe -c mosquitto.conf命令将使用mosquitto.conf中的配置启动mosquitto服务器。
2.3.2 IoT Hub转发配置
本系统支持同时给多个MQTT Broker转发数据。如下图所示点击菜单转发-->MQTT打开MQTT配置列表在列表中可以看到当前所有要转发的MQTT Broker配置信息。可以新建或删除MQTT Broker信息。
图 14 配置MQTT服务器
MQTT的详细配置如下图所示
1连接页中MQTT服务器地址信息因部署在本机故为127.0.0.1。端口为通用的1883。
2认证页中需要配置用户名、密码和客户端证书信息。注意客户端证书要与服务器证书是同一CA颁发才能被认证通过。
3发布页中发布的Topic为v1/gateway/telemetry。遵从Thingsboard协议。
15 MQTT参数配置
MQTT配置也可以通过配置文件iot_hub.cfg查看或修改如下图所示
图 16 MQTT配置文件
注意本软件所有配置文件必须是UTF-8编码。
2.3.3 通过mqtt.fx订阅数据点
本演示实例中通过常用的MQTT客户端mqtt.fx去订阅数据点其配置如下。
1如下图所示配置MQTT服务器信息地址为127.0.0.1。
图 17 mqtt.fx配置-1
2如下图所示配置用户名、密码及数字证书信息。与上一节IoT Hub的配置是类似的。
图 18 mqtt.fx配置-2
3如下图所示配置完毕后连接服务器从v1/gateway/telemetry订阅数据就可以接收到JSON格式的数据点如下图所示
图 19 数据点订阅显示
IoT Hub采集传感器数据发布(Publish)到云端MQTT服务器其它MQTT客户端订阅数据的整体流程图如下所示
图 20 IoT Hub采集订阅图
2.4 OPC DA数据采集
2.4.1 OPC DA服务器添加
如下图所示在空白处点击右键或点击工具栏上的图标都可以新建OPC服务器。OPC服务器可以类比Device中的通道。软件会自动浏览当前PC上存在的OPC服务器并以列表展示。如果OPC服务器在其它机器上则需要输入远程机器IP。
图 21 OPC DA服务器添加
2.4.2 OPC DA组添加
如下图所示选择服务器后点击右键或工具栏图标就可以创建OPC组每个组中的所有数据点采集周期一样。如果需要不同的采集周期则就需要创建多个组。一般创建一个组将所有数据加入即可。
图 22 OPC DA组添加
2.4.3 OPC DA数据点添加
如下图所示选中组点击右键或工具栏图标即可为改组添加数据点。软件会自动浏览OPC服务器中所有的数据点用户可以选择要添加的数据点加入到组中。
图 23 OPC DA数据点添加
2.4.4 数据采集和订阅
数据点添加成功后系统将自动从OPC DA服务器读取数据。数据点名称默认就是其ID用户如果要修改数据点名称(比如以中文命名)可以双击数据点修改其名称。
图 24 OPC DA数据点采集
在mqtt.fx软件中也可以看到上报的OPC DA数据如下图所示
图 25 OPC DA数据点订阅
2.5 OPC UA数据采集
2.5.1 OPC UA服务器添加
如下图所示在空白处点击右键或点击工具栏图标都可以创建OPC UA服务器。
1UA服务器的地址格式为opc.tcp://127.0.0.1:4841其中127.0.0.1为IP地址4841为端口。
2与MQTT配置类似也可以进行认证和安全设置使用用户名、密码、数字证书等加强通信和数据安全。本例中为了简单使用最简单的匿名登录。
图 26 OPC UA服务器添加
OPC UA服务器可以使用Prosys OPC UA Simulation Server其配置如下图所示
图 27 OPC UA模拟服务器配置
2.5.2 OPC UA组添加
与OPC DA类似UA也可以创建组每个组中所有数据点采集频率一致。如下图所示选中服务器点击右键或工具栏图标都可以创建组。
图 28 OPC UA组添加
2.5.3 OPC UA数据点添加
1数据点浏览与添加
如下图所示选中组后点击右键菜单或工具栏图标就可以逐级浏览Object(对象)下的数据点。勾选要添加的数据点点击添加按钮即可将这些数据点加入到组中。
图 29 OPC UA数据点添加
2数据点名称修改
对加入的数据点默认以其ID作为名称如果用户想修改其名称(比如以中文命名)则可以双击数据点修改其名称。如下图所示
图 30 OPC UA数据点名称修改
3数据点订阅
如下图所示加入UA后在mqtt.fx上订阅的数据如下图所示
图 31 OPC UA数据点订阅
3. 配置文件
3.1 系统配置文件
如下图所示系统配置文件sys_set.cfg中可以设置和保存相关系统变量用户修改保存文件后重启软件可以生效。例如
1语言目前系统支持中文(CH)和英文(EN)。
2最大数据点数目和每个数据点大小(JSON数据包格式占用的大小)系统默认支持12000个数据点用户根据实际需求可以进行调整。
图 32 系统配置文件
3.2 MQTT配置文件
如下图所示MQTT配置文件iot_hub.cfg中可以设置和保存MQTT信息用户修改保存文件后重启软件可以生效。如下图所示
图 33 MQTT配置文件
3.3 数据点配置文件
如下图所示数据点配置文件iot_hub.cfg中可以设置和保存所有通道、设备及数据点信息用户修改保存文件后重启软件可以生效。如下图所示
图 34 数据点配置文件
4. 使用联系
软件提供免费授权文件启动时每台PC机绑定唯一的授权文件。授权文件错误时会弹出如下提示框请点击“复制密钥”按钮联系下述微信申请使用授权码。也可提供源码级定制服务。
图35 授权错误提示
微信号(taibai_tu)二维码
图 36 微信联系方式