美文网首页
ROS-Modbus

ROS-Modbus

作者: WilsonGuo | 来源:发表于2023-01-08 14:25 被阅读0次

    ROS中支持Modbus的相关包:

    robotiq包

    使用教程

    modbus

    图文详解Modbus

    Modbus分很多实现版本,总的来说是一种应用层协议。从OSI七层模型来看,位于第七层应用层。它定义了在不同类型的总线或网络上连接的设备之间提供 ”客户端/服务器“ 通信。对于使用串口的版本,也定义了layer 1 和 layer 2,实现在主站和一个或多个从站之间交换MODBUS 报文。具体有哪些版本呢?其实主要分两种:

    Modbus RTU(Remote Terminal Unit 远程终端单元):这种方式常采用RS-485做为物理层,一般利用芯片的串口实现数据报文的收发,报文数据采用二进制数据进行通信。

    Modbus ASCII :报文使用 ASCII 字符。ASCII 格式使用纵向冗余校验和。Modbus ASCII 报文由冒号 (“:”)开始 和换行符 (CR/LF) 结尾构成。

    当然其他还根据所使用的物理层不一样,有这么些做法:

    Modbus TCP/IP 或 Modbus TCP :这是一种 Modbus 变体版本,使用 TCP/IP 网络进行通信,通过 502 端口进行连接。报文不需要校验和计算,因为以太网底层已经实现了CRC32 数据完整性校验

    Modbus over TCP/IP 或 Modbus over TCP 或 Modbus RTU/IP :这也是一种 Modbus 变体,与 Modbus TCP 的不同之处在于,与 Modbus RTU 一样,校验和包含在报文中。

    Modbus UDP:也有在UDP上传输Modbus报文的,不过需要做错误重传机制,这么干的应该不多。

    在具体实现之前,先梳理一下基本概念

    报文结构

    前面说过,通信模式是主/从方式,也即主请求、从应答的方式。无论主请求报文,还是从应答报文其结构都是如下图这样的:

    地址:取值范围是0-247,如果是0,就是主站广播报文;如果是1-247,则有可能是主站请求或者从站应答。

    功能码:也就是报文命令,代表主站对从站的操作,读或者写

    数据:数据字段,主请求报文,从应答报文会有所差异。也就是说假设抓取总线报文,如何区分是主站请求还是从站应答,则需要通过数据字段进行区分了。

    CRC校验:采样CRC16,16位循环冗余校验。

    相关文章

      网友评论

          本文标题:ROS-Modbus

          本文链接:https://www.haomeiwen.com/subject/rseucdtx.html