Modbus协议与现场总线解析.ppt
《Modbus协议与现场总线解析.ppt》由会员分享,可在线阅读,更多相关《Modbus协议与现场总线解析.ppt(35页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Modbus Modbus 在在OSI OSI 模型中所使用的层模型中所使用的层3.1.1 Modbus 协议的物理层协议的物理层 1.网络结构网络结构 总线式主从结构总线式主从结构 主设备:主设备:PC机,机,PLC 从设备:从设备:PLC,智能仪表,智能仪表 一个主站可有一个主站可有1253个从站,个从站,从站之间不能相互通讯。从站之间不能相互通讯。 2.通讯方式通讯方式 (a)一对一:主设备可以和从设备通讯,从设备响应。)一对一:主设备可以和从设备通讯,从设备响应。 (b)一对)一对N(广播):主设备对(广播):主设备对N个从设备,从设备无响应。个从设备,从设备无响应。 0地址表示广播地
2、址。地址表示广播地址。 3.物理层物理层 支持支持RS-485、RS-232C。 CRLF0D0A COLON3A3.1.2 Modbus3.1.2 Modbus协议的帧格式协议的帧格式ModbusModbus有两种格式有两种格式: ASCII: ASCII格式格式; RTU; RTU格式格式1.ASCII1.ASCII码帧格式码帧格式( (用用ASCII ASCII 表示数据表示数据) )(1).(1).字节格式字节格式(2).(2).数据表示方法数据表示方法 地址地址:21 :21 表示表示ASCIIASCII码码 32H,31H32H,31H(:)(2)(2)说明:说明: a.a.地址域
3、:从设备地址地址域:从设备地址0-253,0-253,地址地址0 0为广播地址。为广播地址。 b.b.功能域:代码范围功能域:代码范围1-2551-255,命令从设备执行哪些功能,命令从设备执行哪些功能( (如读测量如读测量值,读开关量状态)值,读开关量状态) c.c.数据域:(两部分内容)数据域:(两部分内容) 主设备到从设备:变量起始地址、变量个数。主设备到从设备:变量起始地址、变量个数。 从设备到主设备从设备到主设备 : 字节数字节数n、数据、数据n。 d.d.检错:检错:CRC-16, CRC-16, 生成多项式生成多项式 Y=X16+X15+X2+1Y=X16+X15+X2+1。 2
4、. RTU2. RTU格式格式( (用二进制数表示数据用二进制数表示数据) )(1) RTU(1) RTU帧格式帧格式3.1.3 ModBus3.1.3 ModBus功能码功能码 1. Modbus1. Modbus功能码功能码2.2.功能码功能码3:3:读取读取在一个或多个保持寄存器中取得当前的二进制值在一个或多个保持寄存器中取得当前的二进制值该功能码主要用于读取设备参数该功能码主要用于读取设备参数例:主机命令例:主机命令:读读6BH开始的开始的3个寄存器内容个寄存器内容从机响应从机响应:回传回传6个字节数据个字节数据说明说明 (1)应用层:应用层: 寄存器中存储的内容用户定义。寄存器中存储
5、的内容用户定义。 (2)寄存器地址与寄存器:寄存器号减)寄存器地址与寄存器:寄存器号减1为寄存器地址为寄存器地址 3.功能码功能码4:读取一个或多个输入寄存器值:读取一个或多个输入寄存器值主要用于读取设备测量数据主要用于读取设备测量数据从寄存器从寄存器8开始读一个寄存器值开始读一个寄存器值4. 功能功能6:写单个寄存器:写单个寄存器例:从寄存器地址例:从寄存器地址1开始,写一个寄存器值开始,写一个寄存器值03寄存器地址:0001H寄存器: 0002H5. 5. 功能码功能码16:16:写多个寄存器写多个寄存器主机从主机从01H01H地址开始写地址开始写2 2个寄存器个寄存器从机响应主机从机响应
6、主机3.1.4应用举例应用举例 题题: 有某地址为有某地址为1的从设备的从设备,其变量定义如下其变量定义如下: 例例1:主设备用主设备用3号命令寻址地址为号命令寻址地址为1的从设备的从设备,读取寄存器地址为读取寄存器地址为0000H 的量程的量程. 主设备命令帧主设备命令帧 从设备响应帧从设备响应帧变量定义变量定义主机请求主机请求从机响应从机响应量程量程(参数)参数)寄存器地址0000H测量值测量值0002H字节数2byte 2 byte 主从地地址址功能功能码码变量地址变量地址高高变量数变量数高高CRC校验校验01H03H00H00H变量数变量数低低地地址址功能功能码码01H03H字节字节数
7、数02H数据数据103HCRC校验校验*流量流量 = 3E8H =1000变量地址变量地址低低00H01H*数据数据2E8H例例2:主设备用主设备用4号命令寻址地为号命令寻址地为1的从设备的从设备, 读取地址为读取地址为0002H 的的测量值测量值 01H04H0002H0001H#地址地址功能功能码码变量地址变量地址变量变量数数CRC校验校验地址地址功能码功能码 字节数字节数 数据数据1 数据数据2CRCCRC01H04H02H03H20H* 从设备响应从设备响应主设备命令帧主设备命令帧测量值测量值 = 320H= 320H =800 =800问题:测量值有小数和正负怎么办?问题:测量值有小
8、数和正负怎么办?3.1.5 CRC-16校验校验 1.1.说明说明: : (1) CRC校验 = 地址码 + 功能码 +数据 (2) (2) 生成多项式生成多项式 G(x)=X16+X15+X2+1G(x)=X16+X15+X2+1 (1 1000 0000 0000 0101) (1 1000 0000 0000 0101) (3) (3) 生成多项式最高位总是生成多项式最高位总是 1,1,所以实际中的所以实际中的 生成多项式为生成多项式为 1000 0000 0000 0101 1000 0000 0000 0101 (4) Modbus (4) Modbus 采用逆序生成多项式采用逆序生
9、成多项式 1010 0000 0000 00011010 0000 0000 0001 (5) CRC本质本质: :移位异移位异, ,是是1 1与生成多项式或和与生成多项式或和 2:CRC2:CRC方法方法0211073.CRC3.CRC计算程序计算程序( (标准程序标准程序) )数据指针数据长度CRC低位表CRC高位表auchCRCHi0 xFDauchCRCHi0 x39auchCRCLo0 xFDauchCRCLo0 x39 CRCLo 1 1 1 1 1 1 1 11 ST 0 0 0 0 0 0 1 0 XORuIndex 1 1 1 1 1 1 0 1auchCRCHi0 xFD
10、= 0 xC1 uchCRCHi 1 1 1 1 1 1 1 1 XOR 1 1 0 0 0 0 0 1 uchCRCLo 0 0 1 1 1 1 1 0uchCRCHi = auchCRCLo0 xFD 1 0 0 0 0 0 0 1 2 ST 0 0 0 0 0 1 1 1uchCRCLo 0 0 1 1 1 1 1 0 XOR uIndex 0 0 1 1 1 0 0 1auchCRCH0 x39 =0 xC0uchCRCHi 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 XOR uchCRCLo 0 1 0 0 0 0 0 0 1 uchCRCHi =auch
11、CRCLo0 x39 = 0 x12结果结果 0 x1241例例:x2=0 x02,0 x07;CRC_n= CRC16( x, 2); n压3.2 Modbus协议通讯从站软件设计协议通讯从站软件设计(1).主站使用主站使用Modbus 04号命令采集从站测量数据号命令采集从站测量数据(2).寄存器应用层定义寄存器应用层定义3.2.1 从站软件设计要求从站软件设计要求寄存器内容压力温度液位流量2000HModbus寄存器寄存器 实际设计考虑问题实际设计考虑问题(1). Modbus命令帧结束判定方法命令帧结束判定方法,(2).帧间隔控制方法帧间隔控制方法(3)如何解决通讯数据串位及数据残如何
12、解决通讯数据串位及数据残 缺等异常情况对通讯的影响缺等异常情况对通讯的影响.3.2.2 从站软件设计内容从站软件设计内容2004H2008H200CH寄存器地址1.接收数据接收数据 (1) 串口接收数据串口接收数据 (2) 根据主站根据主站MODUBS命令读命令读寄存器。寄存器。(2)发送数据发送数据 将所读寄存器发送出去将所读寄存器发送出去主站一次可能读一个寄存器,也可能主站一次可能读一个寄存器,也可能读多个寄存器。读多个寄存器。3.2.3 从站接收命令帧方法从站接收命令帧方法(1).设置一个定时器设置一个定时器,定时定时3.5 char时间时间(2).每接收一个数据每接收一个数据,启动定时
13、器定时启动定时器定时.(3).定时时间到定时时间到,说明在说明在3.5 char时间里没有通讯数据时间里没有通讯数据,表明帧结束表明帧结束, 在定时中断服务程序中处理在定时中断服务程序中处理Modbus 命令命令.定时中断定时中断帧结束帧结束,读读命令回答命令回答数据数据启动定时器启动定时器3.5 char地址地址功能码功能码变量地址变量地址变量数变量数CRC校验校验主站发给从站读寄存器命令8byte,从站3.5char后回答数据如何确定MODBUS帧结束?帧结束?帧间隔帧间隔3.5char定时方法定时方法ICR1(触发寄存器)计数器PWM输出3.2.4 从站程序设计从站程序设计(AVR ME
14、GA64 CPU)void main(void) unsigned char i=0; unsigned long num=0; OutSet1480; /* R485 接收方向接收方向 */ Set1480Rxd; Delays(100); _CLI(); /* 关中断关中断 UartInit(); /* UART初始化初始化 TimeDelay=OscF*10/BaudRate0; /* 根据波特率设置定时时间根据波特率设置定时时间 */ TCCR1B=(1CS11)|(1WGM12)|(1WGM13); /* 设置设置3.5char定时器定时器 */ TIM16_WriteTCNT1(0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Modbus 协议 现场总线 解析
限制150内