ModBus TCP/RTU互转(主)(从)|| Modbus主动轮询下发的工业应用 || 基于智能网关的串口服务器进行Modbus数据收发的工业应用

目录

前言

[一、ModBus TCP/RTU互转(从)及应用||](#一、ModBus TCP/RTU互转(从)及应用||)

[1.1 举栗子](#1.1 举栗子)

[二、ModBus TCP/RTU互转(主)](#二、ModBus TCP/RTU互转(主))

[2.1 举栗子](#2.1 举栗子)

[三、ModBus 主动轮询](#三、ModBus 主动轮询)

[3.1 Modbus主动轮询原理](#3.1 Modbus主动轮询原理)

[3.2 Modbus格式上传与下发](#3.2 Modbus格式上传与下发)

3.2.1.设置Modbus主动轮询指令

[3.2.2 设置网络通道N1的参数](#3.2.2 设置网络通道N1的参数)

[3.2.3 设置串口通道U1的参数](#3.2.3 设置串口通道U1的参数)

[3.2.4 设置网络通道N2、N3的参数](#3.2.4 设置网络通道N2、N3的参数)

[3.2.5 打开两个Modbus Slave软件](#3.2.5 打开两个Modbus Slave软件)

[3.2.6 打开一个网络调试助手](#3.2.6 打开一个网络调试助手)

[3.2.7.打开一个Modbus Poll](#3.2.7.打开一个Modbus Poll)

[3.3 JSON格式上传与下发](#3.3 JSON格式上传与下发)

[3.3.1 数据上传](#3.3.1 数据上传)

[3.3.2 JSON格式的数据下发协议](#3.3.2 JSON格式的数据下发协议)


前言

本文主要通过一款智能网关的串口服务器来进行工业modbus数据收发的应用

一、ModBus TCP/RTU互转(从)及应用||

1.用户的串口设备是Modbus RTU从站,网络端的设备或组态软件是Modbus TCP主站, 则可以使用ModBus TCP/RTU互转(从)模式。 设备内部具有智能的消息排队机制,因此在该模式下,支持多个Modbus TCP主站同时 轮询Modbus RTU 从站设备。

以设备的第一路串口PORT1(U1)为例,来说明ModBus TCP/RTU互转(从)模式的配 置步骤。设备支持自定义数据通道,本测试选择的数据通道为U1↔N1。

1.1 举栗子

打开一个modbus Slave 软件,模拟用户的的Modbus RTU从站设备;打开4个或更多的 Modbus Poll 软件(配置参数完全一样),模拟用户Modbus TCP主站。实现多个主站同时轮 询一个从站的目的。

配置完成之后,通信成功后的截图如所示。

二、ModBus TCP/RTU互转(主)

若用户的串口设备是Modbus RTU主站,网络端的设备或组态软件是Modbus TCP从站 站,则可以使用ModBus TCP/RTU互转(主)模式。

以设备的第一路串口PORT1(U1)为例,来说明ModBus TCP/RTU互转(主)模式的配 置步骤。设备支持自定义数据通道,本测试选择的数据通道为U1↔N1。

2.1 举栗子

打开一个modbus Poll 软件,模拟用户的的Modbus RTU主站设备;打开一个Modbus Slave 软件,模拟用户Modbus TCP从站。实现Modbus RTU主站查询Modbus TCP从站数据 的目的。

配置完成之后,通信成功后的截图如所示。

三、ModBus 主动轮询

3.1 Modbus主动轮询原理

启用Modbus主动轮询功能功能后,用户服务器只需要接收数据,不需要再下发查询指 令,可极大的缓解服务器的压力。 阿里云ALINK 启用该功能后,设备会按照用户事先设置的ModBus指令轮询串口设备,设备会将不同 指令返回的数据保存到缓存里。定时主动将缓存中的所有数据一次性上传到设置好的网络通道上。

轮询接口:轮询接口可以选择设备的8个串口通道PORT1~PORT2(U1~U8)、24 个网 络通道(N1~N24),每个轮询接口之间相互独立。可以轮询Modbus RTU 协议,也可以轮 询Modbus TCP 协议。

数据类型:支持BYTE、整型(16bit)、整形(32bit高在前)、整形(32bit高在后)、 浮点型(高在前)、浮点型(高在后)。用户根据实际情况选择合适的数据类型。

JSON名:JSON名支持自定义,最大支持32个字符。 kx+b:设备可对轮询的数据进行简单的线性计算。比如k设置为0.01,b设置为0,则 将数据缩小100倍后,上传到服务器。

紧急数据:对于非常重要且实时性要求比较高的寄存器数据,用户可将该数据设置为紧 急数据,并将变化上传条件设置为紧急数据变化上传,则该数据一旦变化,就会立即上传, 轮询间隔时间对此无效。设置0,则该数据为非紧急数据,设置1,则该数据为紧急数据。

轮询间隔:每个数据通道所有设置的指令,全部轮询完之后,等待该轮询间隔时间后, 才会进行下一轮的指令轮询。轮询间隔时间设置的越小,数据的实时性也就越高。 超时时间:当轮询指令发出后,从站设备没有应答,网关设备需要等待该超时时间后, 才会轮询下一条指令。

超时处理:当轮询指令发出后,没有收到从站设备的应答,此时上报的数据可以设置为 上一次轮询的数据(超时无变化)、设置为FF(超时清FF)、设置为00(超时清00)。

指令延时:同一个数据通道中,每条轮询指令之间的时间间隔。不同的数据通道之间是 独立的,可以并发轮询。 映射地址:将所有数据通道的轮询的从站地址,设置为该映射地址,默认128。当上传 格式选择Modbus RTU或Modbus TCP格式上传时,则会按映射地址上传。服务器下发设置 指令,也是按照映射地址下发。

缓存地址:缓存地址可以理解为用户串口设备的Modbus寄存器地址的映射地址。当上 传格式选择Modbus RTU或Modbus TCP格式上传时,该缓存地址即为上传的寄存器地址。 用户解析上传的数据时,可根据该缓存地址,来确定该数据来自那一条指令。

定时上传:数据上传服务器的时间间隔,单位毫秒,设置为0,则不上传。如设置5000ms, 则设备会每隔5秒将数据上传到指定的服务器。

变化上传:若某个轮询数据对用户比较重要,可将该数据设置为紧急数据,并启用变化 上传,这样网关设备会将本次轮询的数据与上一次的数据做比较,若有变化,则立即上传服 务器,不需等待定时上传设置的时间间隔。

上传格式:数据上传格式支持Modbus RTU、Modbus TCP、JSON带设备ID、JSON自定 义、阿里云ALINK等。

JSON 自定义格式说明: "id":%id:设备的唯一标识符,可在配置软件中的设备信息中查看,适用于基于设备识 别的应用。 "imei":%imei:设备内的4G 模块的唯一识别码。 "iccid":%iccid :SIM 卡的唯一识别码,适用于基于SIM卡识别的应用。 "time":%t:时间戳。 %d:轮询的数据。

如设置为:{"id":%id,"imei":%imei,"iccid":%iccid,"time":%t,%d} 则上报的数据为: {"id":e461211757372e32,"imei":,"iccid":,"time":2022-03-0317:13:15,"k0":0,"k1":0}

数据上传到:可将数据上传到多个网络通道或串口通道,通过配置软件勾选即可。

3.2 Modbus格式上传与下发

用modbus Slave 模拟从站设备,网络调试助手和Modbus Poll模拟主站或服务器。 本次实验实现效果:网关设备主动轮询modbus从站数据(U1通道和N1通道),并将数据 上传到主站或服务器(N2通道和N3通道)。同时主站或服务器也可向从站写数据。

轮询数据通道选择N1:向设备的网络通道N1发送Modbus TCP轮询指令; 映射地址:默认128,将U1、N1通道上的从站地址全部映射为128。 数据上传到:勾选N2、N3,将轮询应答数据上传到网络通道N2、N3。

3.2.1.设置Modbus主动轮询指令

轮询数据通道选择U1:向设备的第一路串口PORT1发送Modbus RTU轮询指令;

轮询数据通道选择N1:向设备的网络通道N1发送Modbus TCP轮询指令;

映射地址:默认128,将U1、N1通道上的从站地址全部映射为128。

数据上传到:勾选N2、N3,将轮询应答数据上传到网络通道N2、N3。

3.2.2 设置网络通道N1的参数

与网络通道N1相连接的设备作为Modbus TCP从站,因此网关设备的工作模式设置为 TCP CLIENT,目标 IP 及端口号即为从站设备的IP及本地端口号。

3.2.3 设置串口通道U1的参数

确定串口通道U1即为设备的第一路串口PORT1,通过USB转RS485或RS232线连接电脑。 U1 参数默认即可(9600,8,N,1)。

3.2.4 设置网络通道N2、N3的参数

网络通道N2、N3作为轮询数据的上传通道,本次举例采用设备默认参数: 网络通道N2:TCP SERVER模式,IP为192.168.1.253,端口号为1031 网络通道N3:TCP SERVER模式,IP为192.168.1.253,端口号为1032

3.2.5 打开两个Modbus Slave软件

打开两个Modbus Slave软件,分别模拟Modbus RTU从站(与串口通道U1通信)、Modbus TCP 从站(与网络通道N1通信)。

3.2.6 打开一个网络调试助手

模拟modbus TCP从站设备 打开一个网络调试助手,连接设备的网络通道N2,在网络调试助手中就可以接收到主 动轮询的数据。

3.2.7.打开一个Modbus Poll

打开一个Modbus Poll,模拟Modbus TCP 主站,连接设备的网络通道N3(192.168.1.253: 1032)。连接之后即可接收主动轮询的数据。

通过以上配置之后,Modbus主站设备就可以对从站进行读写操作了。

3.3 JSON格式上传与下发

3.3.1 数据上传

在3.2的基础上,将设备modbus主动轮询的上报格式设置为JSON格式上传。网络 调试助手不要16进制显示,这样U1、N1通道的Modbus从站数据就会转成JSON格式向网 络通道N2、N3上发送。

3.3.2 JSON格式的数据下发协议

若用户需要对用户的串口设备进行写操作,如写线圈、写寄存器等,用户的服务器可按 照网关设备的JSON格式的数据下发协议格式,向网关设备下发数据,网关设备收到服务器 的下发数据后,会将解析后的数据发送到串口上;串口设备的应答数据,网关设备会转换成 JSON 格式上传给服务器。

JSON 格式的数据下发协议如下: 服务器下发格式: {"mb":"010600000008","sn":1,"ack":0,"crc":0,"uart":0} 网关设备应答数据格式: {"retmb":"010600000008880c","sn":1,"status":"ok"}

说明:

mb: 010600000008,是十六进制ascii格式,比如ff 就是255。网关设备收到服务器的 下发数据后,会将此处的ascii格式的数据转换为对应的十六进制数据,然后转发到串口上。

sn: 数据包的顺序,整数。网关设备收到服务器的下发数据中的 sn 值是多少,网关设 备应答给服务器的数据包中的sn值就是多少。用户可用该参数来识别网关设备的应答数据 与服务器请求数据的对应关系。

ack: 是否需要网关设备应答数据,0:不将应答数据上传到服务器;1:将应答数据上 传到服务器。非必须,若没有则按ack 等于1 处理。

crc: "mb"字段中的数据是否包含crc校验。1:mb字段不包含crc校验值,网关设备 会自动计算crc值;0:mb字段包含crc校验值,网关设备则不再会计算crc值。非必须。若没有则按crc等于0 处理。

uart:指定往哪一路串口(PORT)上发,0~23分别代表第1~24路串口(PORT)。非必 须,若没有则按uart 等于0 处理,即向第一路串口上下发。

若想向网络通道上发数据,则 可以用net替代uart即可,如:{"mb":"010300000001","sn":1,"ack":0,"crc":0,"net":0}。 retmb: 010300000001,是十六进制ascii 格式,比如ff 就是255。网关设备收到串口设 备的应答数据后,会将串口设备应答的十六进制格式的数据转换为对应的ascii格式的数据, 然后转发到服务器上。 status: timeout:超时;ok:正常

相关推荐
Do vis.57611 分钟前
网络编程中客户端与服务器的搭建与协议包应用
运维·服务器·网络
坏柠40 分钟前
基于STM32F103+ESP8266的OneNet物联网数据上传实战
stm32·嵌入式硬件·物联网
JhonKI1 小时前
【网络】手动部署并测试内网穿透
网络
charlie1145141912 小时前
IMX6ULL学习整理篇——Linux驱动开发的基础3:向新框架迁移
linux·驱动开发·嵌入式硬件·学习·教程
IDIOT___IDIOT2 小时前
51单片机和STM32 入门分析
stm32·嵌入式硬件·51单片机
风起逸尘2 小时前
硬件驱动——51单片机:独立按键、中断、定时器/计数器
单片机·嵌入式硬件·51单片机
小爬虫程序猿2 小时前
爬虫代码中需要设置哪些HTTP头部信息?
爬虫·网络协议·http
二年级程序员2 小时前
51单片机的寻址方式(完整)
单片机·嵌入式硬件·51单片机
Dream Algorithm3 小时前
光猫 和 全光 WiFi
网络·智能路由器
D-海漠4 小时前
西门子自动化冗余系统通过多层次冗余设计
网络