2.3.2 Modbus数据模型
Modbus以一系列具有不同特征表格上的数据模型为基础,四个数据模型基本表格如表2.3.1:
表2.3.1 MODBUS数据模型基本表格
基本表格 对象类型 访问类型 内容
离散量输入 单个比特 只读 I/O系统提供这种类型数据
线圈 单个比特 读写 通过应用程序改变这种类型数据
输入寄存器 16比特 只读 I/O系统提供这种类型数据
保持寄存器 16比特 读写 通过应用程序改变这种类型数据
对于基本表格中任何一项,协议都允许单个地选择65536个数据项,而且设计那些项的读写操作可以越过多个连续数据项直到数据大小规格限制,这个数据大小规格限制与事务处理功能码有关。很显然,必须将通过Modbus处理的所有数据放置在设备应用存储器中。但是,存储器的物地址不应该与数据参考混淆,要求仅仅是数据参考与物理地址的链接。Modbus事务处理的一般过程为:一旦服务器处理请求,使用合适的Modbus服务器事务建立Modbus响应。根据处理结果,可以建立两种类型响应:
(1)Modbus正常响应:响应功能码 =请求功能码 ;
(2)Modbus异常响应:用来为客户机提供处理过程中与被发现的差错相关的信息, 响应功能码 =请求功能码 +0x80,提供一个异常码来指示差错原因。
2.3.3 Modbus功能码
Modbus协议有三类Modbus功能码。它们是:公共功能码、用户定义功能码和保留功能码。公共功能码是较好地被定义的,保证是唯一的,Modbus组织可改变的,公开证明的,具有可用的一致性测试,MB IETF RFC中证明的功能码。它包含已被定义的公共指配功能码和未来使用的未指配保留供功能码。公共功能码定义如表2.3.2,主要分为数据访问和封装接口功能码,其中数据访问分为比特访问、16比特访问和文件记录访问三类。
表2.3.2 公共功能码定义功能码 功能子码 十751进制
数据访问
比特访问 物理离散量输入 读输入离散量 02 02
物理线圈或内部比特 读线圈 01 01
写单个线圈 05 05
写多个线圈 15 0F
16比特访问 输入存储器 读输入寄存器 04 04
内部存储器或物理输出存储器 读多个寄存器 03 03
写单个寄存器 06 06
写多个寄存器 16 10
读写多个寄存器 23 17
屏蔽写寄存器 22 16
文件访问 读文件记录 20 6 14 VC++高级会所自动监控系统的研制+PID算法(5):http://www.751com.cn/jisuanji/lunwen_3967.html