Modbus协议_试验台控制设备基础协议范例模版.doc

上传人:苏美尔 文档编号:8604459 上传时间:2020-12-05 格式:DOC 页数:12 大小:511.50KB
返回 下载 相关 举报
Modbus协议_试验台控制设备基础协议范例模版.doc_第1页
第1页 / 共12页
Modbus协议_试验台控制设备基础协议范例模版.doc_第2页
第2页 / 共12页
Modbus协议_试验台控制设备基础协议范例模版.doc_第3页
第3页 / 共12页
亲,该文档总共12页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《Modbus协议_试验台控制设备基础协议范例模版.doc》由会员分享,可在线阅读,更多相关《Modbus协议_试验台控制设备基础协议范例模版.doc(12页珍藏版)》请在三一文库上搜索。

1、Modbus协议_试验台控制设备基础协议合同编号: 合 同 模 版Xxxx年xx月注意事项为了维护您的合法权益,确保交易的安全,请在使用本合同范本前仔细阅读下列注意事项:1、本合同为根据相关法律规定制定的通用性示范文本;2、如有必要,请根据具体的交易背景、交易目的等适当修改、调整本合同范本的相关条款;Modbus协议_试验台控制设备基础协议20161028更新一、Modbus串行链路协议基本要求物理层RS232 接口或RS485接口:RJ45DB 9连接器与电缆相接数据信号发送速率:要求 9600bps 波特率,推荐 19200bps 波特率串行链路系统上的 Modbus只应用于短距离( 20

2、m)点到点的互连Modbus 串行链路电缆必须屏蔽。在电缆两端,其屏蔽必须接到保护地上(若在这个端部使用了连接器,该连接器外壳要连在电缆屏蔽上)可视诊断必须用 LED(发光两极管)指示通信状态和设备状态。Modbus 实现等级Modbus 串行链路上的每个设备必须遵守相同实现等级的所有的强制的要求,常规等级必须提供可配置能力。二、Modbus串行链路帧模式RTU 传输模式(建议采用)当设备使用RTU (Remote Terminal Unit) 模式在 Modbus 串行链路通信, 报文中每个8 位字节含有两个4 位十六进制字符。这种模式的主要优点是较高的数据密度,在相同的波特率下比ASCII

3、 模式有更高的吞吐率。每个报文必须以连续的字符流传送。RTU模式位序列报文中每个8 位字节含有两个4 位十六进制字符(09, AF),每个字符传送11位。1 起始位8 数据位, 首先发送最低有效位1 位作为奇偶校验(默认偶校验)1 停止位(注:使用无校验要求2个停止位.)通用Modbus帧PDU协议数据单元 ADU-应用数据单元RS232 / RS485 ADU = 253 字节+服务器地址(1 byte) + CRC (2 字节) = 256 字节RTU模式帧序列由发送设备将Modbus 报文构造为带有已知起始和结束标记的帧。这使设备可以在报文的开始接收新帧,并且知道何时报文结束。不完整的报

4、文必须能够被检测到而错误标志必须作为结果被设置。CRC校验在RTU 模式包含一个对全部报文内容执行的,基于循环冗余校验 (CRC Cyclical RedundancyChecking) 算法的错误检验域.CRC 域检验整个报文的内容.不管报文有无奇偶校验,均执行此检验。CRC 包含由两个8 位字节组成的一个16 位值.CRC 域作为报文的最后的域附加在报文之后。计算后,首先附加低字节,然后是高字节。CRC高字节为报文发送的最后一个子节。其实现的C语言程序附后。unsigned CRC16 (unsigned char puchMsg,unsigned usDataLen ) unsigned

5、 char uchCRCHi = 0xFF ; / CRC 的高字节初始化 */unsigned char uchCRCLo = 0xFF ; / CRC 的低字节初始化 /unsigned uIndex ; /* CRC 查询表索引 */while (usDataLen-) /* 完成整个报文缓冲区 /uIndex = uchCRCLo *puchMsgg+ ; uchCRCLo = uchCRCHi auchCRCHiuIndex;uchCRCHi = auchCRCLouIndex;return (uchCRCHi 8 | uchCRCLo);高字节表static unsigned ch

6、ar auchCRCHi = 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,0x00, 0xC1, 0x81,0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81,0x40, 0x01, 0xC0,0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1,0x81, 0x40, 0x01,0xC0, 0x80, 0x41, 0x0

7、0, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01,0xC0, 0x80, 0x41,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,0x00, 0xC1, 0x81,0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80,0x41, 0x01, 0xC0,0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x4

8、0, 0x01, 0xC0,0x80, 0x41, 0x01,0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00,0xC1, 0x81, 0x40,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,0x00, 0xC1, 0x81,0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81,0x40, 0x01, 0xC0,0x80,

9、 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1,0x81, 0x40, 0x01,0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01,0xC0, 0x80, 0x41,0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,0x00, 0xC1, 0x81,0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,

10、 0x80, 0x41, 0x00, 0xC1, 0x81,0x40, 0x01, 0xC0,0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,0x80, 0x41, 0x01,0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01,0xC0, 0x80, 0x41,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,0x00,

11、0xC1, 0x81,0x40 ;低字节表static char auchCRCLo = 0x00, 0xC0, 0xC1, 0x01, 0xC3, 0x03, 0x02, 0xC2, 0xC6, 0x06, 0x07, 0xC7,0x05, 0xC5, 0xC4,0x04, 0xCC, 0x0C, 0x0D, 0xCD, 0x0F, 0xCF, 0xCE, 0x0E, 0x0A, 0xCA, 0xCB,0x0B, 0xC9, 0x09,0x08, 0xC8, 0xD8, 0x18, 0x19, 0xD9, 0x1B, 0xDB, 0xDA, 0x1A, 0x1E, 0xDE,0xDF, 0x

12、1F, 0xDD,0x1D, 0x1C, 0xDC, 0x14, 0xD4, 0xD5, 0x15, 0xD7, 0x17, 0x16, 0xD6, 0xD2,0x12, 0x13, 0xD3,0x11, 0xD1, 0xD0, 0x10, 0xF0, 0x30, 0x31, 0xF1, 0x33, 0xF3, 0xF2, 0x32,0x36, 0xF6, 0xF7,0x37, 0xF5, 0x35, 0x34, 0xF4, 0x3C, 0xFC, 0xFD, 0x3D, 0xFF, 0x3F, 0x3E,0xFE, 0xFA, 0x3A,0x3B, 0xFB, 0x39, 0xF9, 0xF

13、8, 0x38, 0x28, 0xE8, 0xE9, 0x29, 0xEB, 0x2B,0x2A, 0xEA, 0xEE,0x2E, 0x2F, 0xEF, 0x2D, 0xED, 0xEC, 0x2C, 0xE4, 0x24, 0x25, 0xE5, 0x27,0xE7, 0xE6, 0x26,0x22, 0xE2, 0xE3, 0x23, 0xE1, 0x21, 0x20, 0xE0, 0xA0, 0x60, 0x61, 0xA1,0x63, 0xA3, 0xA2,0x62, 0x66, 0xA6, 0xA7, 0x67, 0xA5, 0x65, 0x64, 0xA4, 0x6C, 0xA

14、C, 0xAD,0x6D, 0xAF, 0x6F,0x6E, 0xAE, 0xAA, 0x6A, 0x6B, 0xAB, 0x69, 0xA9, 0xA8, 0x68, 0x78, 0xB8,0xB9, 0x79, 0xBB,0x7B, 0x7A, 0xBA, 0xBE, 0x7E, 0x7F, 0xBF, 0x7D, 0xBD, 0xBC, 0x7C, 0xB4,0x74, 0x75, 0xB5,0x77, 0xB7, 0xB6, 0x76, 0x72, 0xB2, 0xB3, 0x73, 0xB1, 0x71, 0x70, 0xB0,0x50, 0x90, 0x91,0x51, 0x93,

15、 0x53, 0x52, 0x92, 0x96, 0x56, 0x57, 0x97, 0x55, 0x95, 0x94,0x54, 0x9C, 0x5C,0x5D, 0x9D, 0x5F, 0x9F, 0x9E, 0x5E, 0x5A, 0x9A, 0x9B, 0x5B, 0x99, 0x59,0x58, 0x98, 0x88,0x48, 0x49, 0x89, 0x4B, 0x8B, 0x8A, 0x4A, 0x4E, 0x8E, 0x8F, 0x4F, 0x8D,0x4D, 0x4C, 0x8C,0x44, 0x84, 0x85, 0x45, 0x87, 0x47, 0x46, 0x86,

16、 0x82, 0x42, 0x43, 0x83,0x41, 0x81, 0x80,0x40;三、Modbus事务处理和功能码Modbus事务处理(含异常码生成)通用Modbus帧Modbus数据模型常用功能码(公共功能码)使用以下组公共码1读线圈读多个寄存器5写单个线圈16写多个寄存器43读设备识别码1读线圈在一个远程设备中,使用该功能码读取线圈的1 至2000 连续状态。请求PDU 详细说明了起始地址(高字节在前,后同),即指定的第一个线圈地址和线圈编号,从零开始寻址线圈。线圈数量(高字节在前)指示需访问线圈个数。数据域每个比特指示状态为1= ON 和0= OFF。第一个数据字节的LSB(最

17、低有效位)指向起始地址的线圈,其它线圈依次类推,一直到这个字节的高位端为止,并在后续字节中从低位到高位的顺序.如果返回的线圈数量不是8的倍数,将用零填充最后数据字节中的剩余比特(一直到字节的高位端)。(异常码参照Modbus事务处理机制,下同)读多个寄存器在一个远程设备中,使用该功能码读取保持寄存器连续块的内容。请求PDU 说明了起始寄存器地址和寄存器数量。从零开始寻址寄存器。每个寄存器有两字节, 高字节在前。5写单个线圈在一个远程设备上,使用该功能码写单个输出为ON 或OFF。请求PDU说明了线圈地址,从零开始寻址线圈.线圈值域的常量说明请求的ON/OFF 状态。十六进制值0XFF00 请求

18、线圈为ON.十六进制值0X0000 请求线圈为OFF。其它所有值均为非法的,并且对线圈不起作用.16写多个寄存器在一个远程设备中,使用该功能码写连续寄存器块(1 至约120 个寄存器).在请求数据域中说明了请求写入的值。每个寄存器将数据分成两字节(高字节在前).43读设备识别码这个功能码允许读取与远程设备的物理描述和功能描述相关的识别码和附加报文。将读设备识别码接口模拟为一个地址空间,这个地址空间由一组可寻址数据元素组成。数据元素是被叫对象,并且对象Id 确定这个数据元素.接口由3 种对象组成:基本设备识别码。所有此种对象都是必备的:厂商名称、产品代码和修订本号.正常设备识别码。除基本数据对象

19、以外,设备提供了附加的和可选择的识别码以及数据对象描述.按标准定义所有种类的对象,但是这种对象的执行是可选的.扩展设备识别码。除正常数据对象以外,设备提供了附加的和可选的识别码以及专用数据描述。所有这些数据都是与设备有关的。可只选设计基本设备识别码。MEI类型: 14(0x0E)功能子码,强制。ReadDevId: 限制为01,02,03,04含义如下01:请求获得基本设备识别码(流访问) 02:请求获得正常设备识别码(流访问)03:请求获得扩展设备识别码(流访问)04:请求获得特定识别码对象(单个访问)对象Id:一致性等级: 设备的识别码一致性等级和支持访问的类型01:基本识别码(仅流访问)

20、02:正常识别码(仅流访问)03:扩展识别码(仅流访问)81:基本识别码(流访问和单个访问)82:正常识别码(流访问和单个访问)83:扩展识别码(流访问和单个访问)随后更多:在ReadDevId 码01、02 或03 (流访问)的情况下,如果识别码数据超出单个响应(总256字节),那么需要几个请求/响应事务处理。00:可完整响应;FF:需要更多MODBUS事务处理下一个对象Id: 随后更多=FF,那么请求下一个对象id随后更多=00,那么必须设置为00 (无用的)对象号 在响应中返回的对象id个数(对于单个访问,对象号码= 1)对象id列表第一个对象id(流访问)或请求对象的识别码(单个访问)

21、对象长度 第一个对象的字节长度对象值 第一个对象值直到完成本次MODBUS事务处理.四、Modbus应用层协议前三部分为Modbus串行链路的基础通用协议,必须进一步完成应用层协议.重点设计Modbus的数据表及其应用说明.以下仅给出示例。数据表与说明地址变量类型 变量定义 功能码 其他说明0 线圈(位变量) 存储器读写出错 11 线圈(位变量) ECU空闲 1,52 线圈(位变量) ECU实时监控 1,53 线圈(位变量) ECU参数设置 1,54 线圈(位变量) 电磁阀短路 1 单体泵5 线圈(位变量) 电磁阀开路 1单体泵6 线圈(位变量) 光电传感器故障 1单体泵7 线圈(位变量) 霍

22、尔传感器故障 1单体泵8 线圈(位变量) 驱动脉宽标定出错 1单体泵9 线圈(位变量) 喷油角度标定出错 1单体泵10 线圈(位变量) 喷射脉宽过大 1单体泵100 线圈(位变量) 通讯连接 1,5 101 线圈(位变量) 紧急停止1,5102 线圈(位变量) 故障清除 52000寄存器(16bits) 最小轨压值 3,16 轨压MAP参数2001 寄存器(16bits) 最小轨压值AD 3,16 轨压MAP参数2002 寄存器(16bits) 最小轨压值 3,16 轨压MAP参数2003 寄存器(16bits) 最小轨压值AD 3,16 轨压MAP参数4000 寄存器(16bits)4001 寄存器(16bits)4002 寄存器(16bits)6000 寄存器(16bits)6001 寄存器(16bits)6002 寄存器(16bits)数据表确定后,再附加表Modbus操作流程的必要说明就完成整个协议。本文结束12 / 12

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1