电子产业一站式赋能平台

PCB联盟网

搜索
查看: 1236|回复: 0
收起左侧

【HarmonyOS HiSpark Wi-Fi IoT 套件试用连载】MODBUS TCP

[复制链接]

2607

主题

2607

帖子

7472

积分

高级会员

Rank: 5Rank: 5

积分
7472
发表于 2020-12-8 09:56:08 | 显示全部楼层 |阅读模式
【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 分
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


联系客服 关注微信 下载APP 返回顶部 返回列表