| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> modbus-rtu和modbus-tcp和modbus-rtu-Over-tcp/ip -> 正文阅读 |
|
[网络协议]modbus-rtu和modbus-tcp和modbus-rtu-Over-tcp/ip |
经典的modbus协议帧如图: Modbus-TCP:由TCP头+地址+PDU组成, Modbus的PDU(Protocol Data Unit,协议数据单元)由功能码+寄存器地址+寄存器数量(可选)+寄存器值组成,PDU在TCP和RTU两种形式上是相同的。 ?
所以:这里就有了三个协议: modbus-rtu:纯粹的串口通信 modbus-tcp:TCP网络通信 modbus rtu Over tcp/ip:是tcp网络通信,但是本质上还是rtu。 modbus仿真软件就可以看到这三个协议:(ModbusSlaveSetup64Bit) 其中Seria Port就是串口,那用这个通信的话就是modbus-rtu, 可以使用modbus-rtu连接,例如插入USB查看串口。 或者自己测试的时候可以在自己的电脑虚拟两个串口,工具为(Launch Virtual Serial Port Driver Pro) 然后modbus tcp/ip,这个可以用很多工具链接了,很多上位机软件(NetAssist)(Modbus Poll)都可以,程序的话java也提供了很多工具包,(com.digitalpetri.modbus? ?modbus-master-tcp)(或者可以建立socket或者nio链接,只不过这个需要解析格式(报文头啊,校验码,从机地址,功能码这些)) 然后modbus rtu Over tcp/ip : 这个通信还是 tcp的,但是数据是rtu的数据,因此,不能用常规的modbus-tcp建立链接的代码建立链接,可以采用socket或者nio去建立链接,只不过还是要去解析对应的从机地址,功能码,校验位,数据等。那可以用什么工具去建立链接呢,其实跟modbus-tcp差不多,(NetAssist)(Modbus Poll)都可以的; 我这里简单列举几个例子: 就不用modbus-pull链接了,这个工具很好用,但是看不到具体发送的数据的细节; 1:modbus-rtu-Over-tcp/ip 比如我从机地址1,两个保持寄存器,40001是写入数据指令的,400002是读取设备信号的 ? ?这里注意选这个; 然后用上位机链接: ?这里为什么要勾选【自动发送校验位】呢? 因为rtu数据是需要发送校验位的,而校验位是需要一个算法计算出来的,我就让这个软件自动帮我算,如果你自己知道你发数据的校验位,那也是可以不用勾选直接自己填也行; 举例:读取40001地址的值:slaveId:01,功能码03 举例:写入40002地址数据,功能码06 ? ? 解释下rtu协议发送和接受反馈的这个数据格式: modbus-rtu发送数据的格式: ? modbus-rtu接受反馈信号的数据格式: ?如果用modbus-pull工具的话,更直观, 而且发送数据也贼简单: ? 是不是,这里工具自动帮我做了校验码,功能码这些封装, 懂了rtu数据格式后,可以用这个,一开始还是建议先用上面的那个,方便加深学习; ? modbus-tcp发送数据的格式: ?其实tcp除了没有校验位,跟rtu的区别就是前面多了这个报文头, 其实就是5个0和1个6; 而且是不需要勾选CRC校验的,因为tcp不需要校验,在报文头就会有校验了; 注意: ? 题外话: 1:几个寄存器的区别 离散输入寄存器 ?只读 ?? ??? ?简单的开关量状态,如是否处于急停 2:常用的功能码 0x01: 读线圈寄存器 0x05: 写单个线圈寄存器 这其中有涉及到线圈、离散输入、保持、输入四种寄存器。 Modbus通讯协议学习 - 认识篇_pooooong的博客-CSDN博客_modbus通讯协议学习 freemodbus modbus TCP 学习笔记_xukai871105的博客-CSDN博客_freemodbus tcp |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 2:39:19- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |