Modbus协议学习(二)
程序员文章站
2022-07-09 13:46:57
...
Modbus事务处理定义
一旦服务器处理请求,使用合适的MODBUS服务器事务建立MODBUS响应。
根据处理结果,可以建立两种类型的响应:
● 一个正MODBUS响应:
● 响应功能码 = 请求功能码
● 一个MODBUS异常响应:
● 用来为客户机提供处理过程中发现的差错相关的信息;
● 响应功能码 = 请求功能码 +0x80 (二进制:1000 0000);
● 提供一个异常码来指示差错原因。
功能码分类
- 公共功能码:
1.1 是较好被定义的功能码
1.2 保证是唯一的
1.3 MODBUS组织可改变的
1.4 公开证明的
1.5 具有可用的一致性测试
1.6 MB IETF RFC 中证明的
1.7 包含已被定义的公共指配功能码和未来使用的为指配功能码 - 用户定义功能码:
2.1 有两个用户定义功能码的定义范围,即65-72和十进制100-110
2.2 用户没有MODBUS组织的任何批准就可以选择和实现一个功能码
2.3 不能保证被选功能码使用是唯一的
2.4 如果用户要重新设置功能作为一个功能码,那么用户必须启动RFC,以便将改变引入公共分类中,并且指配一个新的公共功能码。 - 保留功能码:
一些公司对传统产品通常使用的功能码,并且对公共使用是无效的
几个重要的功能码
- (0x14)读文件记录:
使用该功能码进行文件记录读取。根据字节数量提供所有请求数据长度,并且根据寄存器提供所有记录长度。 - (0x15)写文件记录:
使用该功能码进行文件记录写入。根据字节数量提供所有请求数据长度,并且根据16 比特字的数量提供所有记录长度。
注意:被写入的寄存器数量不能超过MODBUS 报文允许的长度:256个字节,这个寄存器数量与询问中的所有其它域组合。
- (0x16)屏蔽写寄存器:
该功能码用于通过利用AND 屏蔽、OR屏蔽以及寄存器内容的组合来修改特定保持寄存器的内容。使用这个功能设置或清除寄存器中的单个比特。
算法:结果= (当前内容AND And_Mask) OR (Or_Mask AND And_Mask)
MODBUS异常响应
MODBUS 异常响应
当客户机设备向服务器设备发送请求时,客户机希望一个正常响应。从主站询问中出现下列四种可能事件之一:
! 如果服务器设备接收到无通信错误的请求,并且可以正常地处理询问,那么服务器设备将返回一个正常响应。
! 如果由于通信错误,服务器没有接收到请求,那么不能返回响应。客户机程序将最终处理请求的超时状态。
! 如果服务器接收到请求,但是检测到一个通信错误(奇偶校验、LRC、CRC、…),那么不能返回响应。客户机程序将最终处理请求的超时状态。
! 如果服务器接收到无通信错误的请求,但不能处理这个请求(例如,如果请求读一个不存在的输出或寄存器),服务器将返回一个异常响应,通知用户错误的本质特性。
异常码列表: 名称
01 非法功能
02 非法数据地址
03 非法数据值
04 从站设备故障/服务器故障
05 确认
06 服务器忙
07 存储奇偶性差错
0A 不可用网关路径
0B 网关目标设备响应失败
上一篇: AOP的三种实现
下一篇: Java SPI机制详解