Modbus TCP协议说明

协议帧
事物处理标识|  协议标识|       长度|  从机地址| 功能码| 数据     
    0x00 00|  0x00 00|    0x00 08|     0x01|   0x0F|    0x00 14 0x00 01 0x01 0x01
  • 事物处理标识(占2字节)
    区分不同报文,请求和应答的一组报文有相同的事物处理标识。每次通信之后应当自增。
  • 协议标识(占2字节)
    0x0000 表示ModBus TCP
  • 长度(占1个字节)
    表示之后还有多少字节
  • 从机地址(占1个字节)
    表示设备地址(多个设备接一个总线)

  • 功能码(占1个字节)
    功能码部分定义如下:

功能码描述访问类型PLC地址数据类型操作数量
0x01线圈寄存器00001-09999单/多
0x02离散输入寄存器10001-19999单/多
0x03保持寄存器40001-49999单/多
0x04输入寄存器30001-39999单/多
0x05线圈寄存器00001-09999
0x06保持寄存器40001-49999
0x0F线圈寄存器00001-09999
0x10保持寄存器40001-49999
  • 寄存器起始地址
    表示寄存器地址

  • 数据部分

写请求数据帧

寄存器首地址|写个数|长度|值  
     0x0014|0x0001| 0x01|0x01
  1. 寄存器首地址(占两个字节),表示此次操作从哪个寄存器开始
  2. 写个数占(两个字节),表示批量操作多少个寄存器。例如首地址为0x0014,写个数为0x0002,则表示同时写0x0014和0x0015两个寄存器。
  3. 长度(占一个字节),表示该字节后还有多少字节。
  4. 值表示要写入的值。如果功能码是位操作,则值需要被拆成位赋值。例如写首地址为0x0014,写个数为0x0002。写字节为0x01,值为0x02。由于0x02用位表示为00000010,赋值后寄存器的结果为0x0014为0,0x0015为1。

写响应数据帧:

寄存器首地址|写个数
     0x0014|0x0001
  1. 寄存器首地址(占两个字节),表示此次操作从哪个寄存器开始
  2. 写个数(占两个字节),表示此次操作了多少个寄存器。

读请求数据帧

寄存器首地址|读个数
     0x0014|0x0001
  1. 寄存器首地址(占两个字节),表示此次操作从哪个寄存器开始读
  2. 读个数(占两个字节),表示要求读多少个寄存器。

读响应数据帧

读状态|读取值
  0x01|0x01
  1. 读状态表示读操作是否成功。0x01表示成功,0x02表示失败。
  2. 读取值表示读操作获取的值。如果功能码是位操作,那么读取的值也需要按位解析。例如从0x0014开始读取两个寄存器值。假设读到的值为0x03,那么表示0x0014和0x0015的值均为1。

转载于:https://www.cnblogs.com/insaneXs/p/11167679.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
用户可以根据需求在驱动库里选择相对应的通讯驱动程序,配置相应的通讯握手参数,自由定义需要控制和采集的变量名、通讯地址、数据类型和初始值。功能说明及图片展示: 1.安装完成首次进入将会显示三页功能简要展示页面。 2.点击“立即使用”按钮,进入登录界面(公测账户为admin,密码admin)。 3.登录成功进入APP主页,此时主页所有状态为初始未配置状态。 4.在主页状态下向右滑动,可打开功能模块选择列表。 5.点击“WIFI连接”进入连接现场设备网络页面,如果此时用户已通过手机WIFI页面连接现场设备,则直接跳过此步骤。 6.连接成功后返回功能模块选择列表,点击“参数设置”进入通讯相关参数配置页面(首先进入驱动配置页面),目前驱动库中只有支持Modbus TCP的驱动,后续会持续更新,用户通过在驱动库列表中长按操作将选中的驱动挑选至已选列表中,如果要取消,可以在已选列表中通过同样的长按操作完成。 7.配置要访问的设备通讯参数,与主页的操作逻辑一致,在驱动配置页面向右滑动打开配置功能列表,点击“通讯参数配置”进入通讯参数配置页,然后点击右上角的加号,此时软件会根据已选的驱动类型自动添加一条相对应的通讯参数,用户可以通过双击的方式打开修改列表,然后在列表的某一条参数处通过长按的方式进入最终的修改对话框,修改完成后,可以通过长按的方式选定当前需要的参数配置信息到已选区域。 8.通讯参数配置完成后,向右滑动进入配置功能列表,点击“IO参数配置”进入地址段的分配,点击右上角的加号,在弹出的对话框中根据实际需求分配响应的起始地址以及地址数量,分配完成后,可在屏幕右侧边缘向左滑动调出隐藏功能菜单,通过功能菜单可查看和修改配置地址段的功能对应的IO点信息。 9.所有配置完成后,可返回主页,此时主页显示当前配置的信息,其中“控制操作”功能可以通过按钮发送布尔值,操作逻辑为当前值为0时发送1,当前值为1时发送0,而“参数设置”功能通过对子项长按可以设置调出输入框设置相应的参数值。
### 回答1: Modbus TCP 是一种通讯协议,它基于 Modbus 协议TCP/IP 协议Modbus 协议是一种串行通讯协议,用于在工业控制系统中传输数据。TCP/IP 协议则是一种网络协议,用于在计算机之间传输数据。 Modbus TCP 协议的格式如下: - 功能码:1 字节,用于指定数据的类型。 - 数据地址:2 字节,用于指定数据的位置。 - 数据长度:2 字节,用于指定数据的长度。 - 数据:n 字节,用于传输数据。 Modbus TCP 协议的目的是通过使用 TCP/IP 协议在工业设备之间传输数据。它的应用范围很广,可用于工业自动化、楼宇自动化、电力系统等领域。 ### 回答2: 编写ModbusTCP协议包括以下步骤: 1. 确定通信协议ModbusTCP是基于TCP/IP协议栈的协议,因此需要首先使用TCP/IP协议栈建立通信连接。 2. 设计消息格式:ModbusTCP协议中,消息格式包括用于请求和响应的帧格式。请求帧包括功能码、起始地址和寄存器数量等信息,响应帧包括功能码、字节数和寄存器值等信息。 3. 实现功能码:根据Modbus协议规范,实现读取和写入寄存器的功能码。读功能码用于从设备中读取寄存器值,写功能码用于向设备中写入寄存器值。 4. 实现数据传输:使用TCP/IP协议栈提供的Socket接口,实现数据的传输。客户端向服务器发送请求帧,服务器接收请求帧后解析请求信息,执行相应操作并返回响应帧。 5. 错误处理:根据Modbus协议规范,实现错误处理机制。当发生错误时,响应帧中会包含错误码信息,客户端可以根据错误码进行相应处理。 6. 测试和调试:编写测试程序,对ModbusTCP协议进行测试和调试。通过发送请求帧并检查服务器返回的响应帧,验证协议的正确性和可靠性。 7. 文档和注释:为代码编写详细的注释,包括函数功能、参数说明等。编写ModbusTCP协议的文档,包括协议的设计思路、消息格式、功能码说明等内容,方便其他开发人员使用和理解。 总结:编写ModbusTCP协议需要熟悉TCP/IP协议栈、Modbus协议规范以及对编程语言的掌握。在实现协议时,需要注意消息格式、功能码的正确性以及错误处理机制。完成后,通过测试和调试,确保协议的正确性和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值