美文网首页
ModbusTCP学习笔记

ModbusTCP学习笔记

作者: AmberXiao | 来源:发表于2018-04-17 21:05 被阅读0次

    1 简介

    modbus由MODICON公司于1979年开发,是一种工业现场总线协议标准。1996年施耐德公司推出基于以太网TCP/IP的modbus协议:modbusTCP。

    Modbus协议是一项应用层报文传输协议,包括ASCII、RTU、TCP三种报文类型。

    标准的Modbus协议物理层接口有RS232、RS422、RS485和以太网接口,采用master/slave方式通信。

    2 帧结构

    Modbus定义了一个简单的协议数据单元(PDU):功能码+数据。

    功能码 描述 访问类型 PLC地址 数据类型 操作数量
    01H 线圈寄存器 00001-09999 单/多
    02H 离散输入寄存器 只读 10001-19999 单/多
    03H 保持寄存器 40001-49999 单/多
    04H 输入寄存器 30001-39999 单/多
    05H 线圈寄存器 00001-09999 单个
    06H 保持寄存器 40001-49999 多个
    0FH 线圈寄存器 00001-09999 多个
    10H 保持寄存器 40001-49999 多个

    3 事务处理

    客户端请求:功能码+数据
    服务器正常响应:请求功能码+响应数据
    服务器异常响应:异常功能码+异常码,其中异常功能码即将请求功能码的最高有效位置1,异常码指示差错类型

    4 ModbusTCP

    IANA(Internet Assigned Numbers Authority,互联网编号分配管理机构)给Modbus协议赋予TCP端口号为502,这是目前在仪表与自动化行业中唯一分配到的端口号。

    ModbusTCP数据帧
    事务处理标识 协议标识 长度 单元标识符 功能码 数据
    2字节 2字节 2字节 1字节 1字节 n字节

    事务处理标识:一般每次通信之后就要加1以区别不同的通信数据报文。
    协议标识符:00 00表示ModbusTCP协议。
    长度:表示接下来的数据长度,单位为字节。
    单元标识符:设备地址。

    ModbusTCP通信过程

    1.connect 建立TCP连接
    2.准备modbus报文
    3.使用send命令发送报文
    4.在同一连接下等待应答
    5.使用recv命令读取报文,完成一次数据交换
    6.通信任务结束时,关闭TCP连接

    5 Modbus poll / Modbus slave

    modbus poll 和modbus slave是一组modbus仿真软件,可以实现modbus RTU、TCP、串口仿真等。
    在modbusTCP中,modbus poll 作为客户端请求数据,modbus slave 作为服务器端处理请求。
    使用c语言编写客户端连接modbus slave时,注意数据格式,一条指令一次性发出,否则连接会出错。
    Linux C作为客户端连接modbus slave的源码:
    链接:https://pan.baidu.com/s/146svXpit0umpk809TV1Sdw 密码:b6gn

    参考:
    https://wenku.baidu.com/view/c2a9e1cc376baf1ffd4fad5c.html
    https://blog.csdn.net/zwxue251/article/details/24154951
    https://blog.csdn.net/lakerszhy/article/details/68927178?locationNum=4&fps=1

    相关文章

      网友评论

          本文标题:ModbusTCP学习笔记

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