欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Modbus协议学习(二)

程序员文章站 2022-07-09 13:46:57
...

Modbus事务处理定义

一旦服务器处理请求,使用合适的MODBUS服务器事务建立MODBUS响应。
根据处理结果,可以建立两种类型的响应:
● 一个正MODBUS响应:
● 响应功能码 = 请求功能码
● 一个MODBUS异常响应:
● 用来为客户机提供处理过程中发现的差错相关的信息;
● 响应功能码 = 请求功能码 +0x80 (二进制:1000 0000);
● 提供一个异常码来指示差错原因。

功能码分类

  1. 公共功能码:
    1.1 是较好被定义的功能码
    1.2 保证是唯一的
    1.3 MODBUS组织可改变的
    1.4 公开证明的
    1.5 具有可用的一致性测试
    1.6 MB IETF RFC 中证明的
    1.7 包含已被定义的公共指配功能码和未来使用的为指配功能码
  2. 用户定义功能码:
    2.1 有两个用户定义功能码的定义范围,即65-72和十进制100-110
    2.2 用户没有MODBUS组织的任何批准就可以选择和实现一个功能码
    2.3 不能保证被选功能码使用是唯一的
    2.4 如果用户要重新设置功能作为一个功能码,那么用户必须启动RFC,以便将改变引入公共分类中,并且指配一个新的公共功能码。
  3. 保留功能码:
    一些公司对传统产品通常使用的功能码,并且对公共使用是无效的

Modbus协议学习(二)

几个重要的功能码

  1. (0x14)读文件记录:
    使用该功能码进行文件记录读取。根据字节数量提供所有请求数据长度,并且根据寄存器提供所有记录长度。
  2. (0x15)写文件记录:
    使用该功能码进行文件记录写入。根据字节数量提供所有请求数据长度,并且根据16 比特字的数量提供所有记录长度。
    注意:被写入的寄存器数量不能超过MODBUS 报文允许的长度:256个字节,这个寄存器数量与询问中的所有其它域组合。
    Modbus协议学习(二)
  3. (0x16)屏蔽写寄存器:
    该功能码用于通过利用AND 屏蔽、OR屏蔽以及寄存器内容的组合来修改特定保持寄存器的内容。使用这个功能设置或清除寄存器中的单个比特。
    算法:结果= (当前内容AND And_Mask) OR (Or_Mask AND And_Mask)

Modbus协议学习(二)

MODBUS异常响应

MODBUS 异常响应
当客户机设备向服务器设备发送请求时,客户机希望一个正常响应。从主站询问中出现下列四种可能事件之一:

! 如果服务器设备接收到无通信错误的请求,并且可以正常地处理询问,那么服务器设备将返回一个正常响应
! 如果由于通信错误,服务器没有接收到请求,那么不能返回响应。客户机程序将最终处理请求的超时状态。
! 如果服务器接收到请求,但是检测到一个通信错误(奇偶校验、LRC、CRC、…),那么不能返回响应。客户机程序将最终处理请求的超时状态。
! 如果服务器接收到无通信错误的请求,但不能处理这个请求(例如,如果请求读一个不存在的输出或寄存器),服务器将返回一个异常响应,通知用户错误的本质特性。

异常码列表:    名称
    01       非法功能
    02       非法数据地址
    03       非法数据值
    04       从站设备故障/服务器故障
    05       确认
    06       服务器忙
    07       存储奇偶性差错
    0A       不可用网关路径
    0B       网关目标设备响应失败
相关标签: modbus协议