|
【HarmonyOS HiSpark Wi-Fi IoT 套件试用连载】MODBUS TCP, 在工业场景,modbus还是比较常用的通信协议。
modbus协议可以去www.modbus.org下载。
在传统串口模式中,modbus都是分主机和从机。由于今年席卷全球的反种族主义,modbus组织取消了“主从”这种敏感此汇,由服务器和客户端来描述modbus通信。
客户端启动通信并向服务器发送请求,服务器设备处理请求并返回响应。
所以变送器应该作为服务器设备,建立服务器后等待客户端建立通信。客户端就是上位机或者PLC系统。
modbus/tcp
modbus是一种应用层消息传递协议,位于OSI模型的应用层。在TCP/IP层使用时,modbus默认的端口号为502,也可以有其他的端口号,但是502是modbus保留的端口号,服务器必须监听这个端口号。
modbus帧格式
通用的modbus帧格式如下图,从机地址+功能码+数据+crc校验
modbus_tcp1.png (20.99 KB, 下载次数: 0)
下载附件 保存到相册
昨天 23:12 上传
基于tcp的modbus帧格式如下图,由于tcp/ip协议有数据校验,所以基于tcp的modbus协议没有CRC校验。通常在MODBUS串行线路上使用的MODBUS“从站地址”字段被替换为MBAP标头中的单个字节“单位标识符”。
modbus_tcp2.png (22.58 KB, 下载次数: 0)
下载附件 保存到相册
昨天 23:12 上传
MBAP内容以及客户端和服务器操作如下表:
modbus_tcp3.png (97.63 KB, 下载次数: 0)
下载附件 保存到相册
昨天 23:13 上传
Transaction Identifier 用于指式当前服务器响应的是客户端的哪一条需求,这里需要说明,modbus/tcp不需要像串行线路上一样,modbus/tcp客户端可以在没有接收到服务器的响应时再次发出新的响应,此时客户端就可以通过Transaction Identifier确定是哪一条需求的响应。
Protocol Identifier 必须是0,表示是modbus协议。
Length 是Unit Identifier+PDU的长度
Unit Identifier 相当于原来的从机地址。如果当前设备作为一个网关,Unit Identifier可以指示连接到该网关的其他设备。
下面demo是基于hi3861实现的部分modbus协议,包括0x3和0x10命令。
modbus_tcp.zip
(5.01 KB, 下载次数: 0) 昨天 23:15 上传 点击文件名下载附件
下载积分: 积分 -1 分 |
|