您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > Micro830中文modbus教程
Copyright©2010RockwellAutomation,Inc.Allrightsreserved.(Confidential–ForInternalUseOnly)Allen-BradleyMicro800TM可编程控制器Micro830/830Modbus™技术培训Jan-23,2013(Confidential–ForInternalUseOnly)Copyright©2010RockwellAutomation,Inc.Allrightsreserved.Modbus协议概述•Modbus是Modicon公司在上世纪70年代为ModiconPLC开发的一款通信协议。•该协议使用简单,多年来被很多第三方设备供应商采用。•属于半双工的主/从协议。•由主站启动通信(称为的“查询”),从站根据主站的要求作出响应。•从站地址范围:1~247•“0”地址用于广播•主站没有地址•不使用ACK或NAK应答机制–数据传送只是由主站发起查询,从站响应来完成•Modbus接收者根据“静音”时间间隔来判断数据包是否传送完毕。(Confidential–ForInternalUseOnly)Copyright©2010RockwellAutomation,Inc.Allrightsreserved.Modbus串行传输模式•ModbusASCII–编码系统:十六进制的ASCII码0~9、A~F(每个ASCII码只包含一个十六进制字符)–每个字包括:1个开始位、7个数据位、可选的校验位、1~2个停止位–错误校验:纵向冗余校验(LRC)–间隔:半个字符–容易实现(LRCvs.CRC),间隔较短•ModbusRTU–编码系统:8位二进制码表示的十六进制0~9、A~F(8位数据中包含二个十六进制数)–每个字包括:1个开始位、8个数据位、可选的校验位、1~2个停止位–错误校验:循环冗余校验(CRC-16)–间隔:3.5个字符–更高效(包含的数据位较多),容错能力强(CRC校验)(Confidential–ForInternalUseOnly)Copyright©2010RockwellAutomation,Inc.Allrightsreserved.间隔时间很重要•一个ModbusRTU的信息帧期望在一个连续的数据流中被传输。如果在数据传输完成前出现一个时间大于预设的间隔时间的“静音”,那么接收者将丢弃不完整的数据,并且预期下一个字是下一个数据的地址信息,这将导致信息传输失败。•同理,如果下一个信息与上一个信息间隔小于预设的间隔,那么接收者会认为该信息是上一个信息的延续,这将导致校验出错。(Confidential–ForInternalUseOnly)Copyright©2010RockwellAutomation,Inc.Allrightsreserved.间隔时间很重要•因此,Modbus的健壮性并不比过去的会出现虚假字符的无线电网络强,也不比延时不确定的多通道的卫星网络强。•许多使用Modbus的人(包括我们在内),都会遇到因为间隔时间设置不当而带来的麻烦。(Confidential–ForInternalUseOnly)Copyright©2010RockwellAutomation,Inc.Allrightsreserved.Modbus信息帧•ASCII数据帧:开头地址功能码数据LRC校验结尾:(3A)2个字符2个字符n个字符2个字符CRLF(0D0A)•RTU数据帧:开头地址功能码数据CRC校验结尾T1-T2-T3-T48位8位nx8位16位T1-T2-T3-T4(Confidential–ForInternalUseOnly)Copyright©2010RockwellAutomation,Inc.Allrightsreserved.Modbus信息帧•(从站)地址–一个byte,有效值1~247,0用于广播•功能代码–一个byte,有效值1~255–告诉从站需要干什么•数据–包含从站与功能码相应的动作所必须使用的附加信息,如:起始地址、数据长度等–某些功能码不需要附加数据(因此,ModbusRTU包最小长度是4个byte)(Confidential–ForInternalUseOnly)Copyright©2010RockwellAutomation,Inc.Allrightsreserved.Modbus信息帧•响应–从站响应时,在地址区发回自己的地址–从站响应时,发回原先的功能码,作为接收正确的响应–如果有错误,则从站响应时,会将原功能码的最高位置位–如果有错误,则从站响应时,会将错误代码放在数据区•典型的错误响应–01–非法功能:出现从站不支持的功能码–02–非法数据地址:出现无效的数据地址–03–非法数据数值:出现无效的数据数值(Confidential–ForInternalUseOnly)Copyright©2010RockwellAutomation,Inc.Allrightsreserved.Modbus功能格式•Modicon处理器有4个主要数据存储区(数据表):线圈(输出位–读/写):00001-09999,010000-065536输入(输入位–只读):10001-19999,100000-165536输入寄存器(16位字-只读):30001-39999,310000-365536保存寄存器(16位字-读/写):40001-49999,410000-465536•注意:每组的数据范围都从“1”开始•然而,所有的Modbus信息帧中的数据地址偏移量是“0”!第一个出现的数据,其地址是“0”。例如:–线圈1在Modbus的地址是“0000”–线圈127在Modbus的地址是十六进制“007E”(十进制126)–保存寄存器40001在Modbus的地址是“0000”,(‘4XXXX’或‘4XXXXX’隐性地与功能码相对应)(Confidential–ForInternalUseOnly)Copyright©2010RockwellAutomation,Inc.Allrightsreserved.Modbus功能格式•这给文档描述带来混淆。你会发现如下针对保持寄存器的描述,例如:–保持寄存器0(从0开始的编址方式)–保持寄存器1(从1开始的编址方式)–保持寄存器40001(5位地址格式),或400001(6位地址格式)•数据长度–当读写多个数据时,表示数据长度的字会出现在数据和校验区之间。(Confidential–ForInternalUseOnly)Copyright©2010RockwellAutomation,Inc.Allrightsreserved.Modbus功能代码功能代码名称地址范围(5位6位)01读线圈状态00001-09999,000001-06553602读输入状态10001-19999,100001-16553603读保持寄存器40001-49999,400001-46553604读输入寄存器30001-39999,300001-36553605强制(写)单个线圈00001-09999,000001-06553606预置(写)单个寄存器40001-49999,400001-46553615强制(写)多个线圈00001-09999,000001-06553616预置(写)多个寄存器40001-49999,400001-465536(Confidential–ForInternalUseOnly)Copyright©2010RockwellAutomation,Inc.Allrightsreserved.Micro830/850串口设置•内置的串口设置方法与Plug-in串口模块(2080-SERIALISOL)的设置方法相同(注意:高级设置时,窗口需要展开):(Confidential–ForInternalUseOnly)Copyright©2010RockwellAutomation,Inc.Allrightsreserved.Micro830/850串口设置•CCWRelease2的通信驱动有4个可选:ASCII、CIPSerial(缺省值)、ModbusRTU、Shutdown:•可选比特率:1200,2400,9600,19200,38400(缺省值),校验类型可选:None(缺省值)、Odd、Even.(Confidential–ForInternalUseOnly)Copyright©2010RockwellAutomation,Inc.Allrightsreserved.串口ModbusRTU的设定•UnitAddress:0(缺省值),1~247,是ModbusRTU从站地址。注意:“0”地址用于广播,不用于ModbusRTU从站地址。ModbusRTU主站没有地址,可以设为“0”。•ModbusRole有三种可选:ModbusRTUMaster(缺省值)、ModbusRTUSlave、ModbusRTUAuto(既可作主站,也可作从站)(Confidential–ForInternalUseOnly)Copyright©2010RockwellAutomation,Inc.Allrightsreserved.串口ModbusRTU高级设定•Media:–RS232(缺省值)–无握手–RS232RTS/CTS–使用RTS/CTS握手–RS485–内置串口,需要1763-NC01电缆连接•RTSPre-Delay/Post-Delay:0ms(缺省值),0-999,999,999ms–在传输前和传输后,RTS被置位的最短提前和滞后时间(只有当介质设为RS232RTS/CTS时).•DataBits:固定8位•StopBits:1(缺省)或2(Confidential–ForInternalUseOnly)Copyright©2010RockwellAutomation,Inc.Allrightsreserved.串口ModbusRTU高级设置•ResponseTimer:200ms(缺省值),0-999,999,999ms–ModbusRTU主站等待从站响应的最长时间,该时间对所有的MSG_MODBUS指令有效。如果在此时间内没有响应,则指令出现超时故障(故障代码是55)。–注意:对于一个硬接线的Modbus网络,该时间可以减少到200ms(对应9600波特率),100ms(对应19,200波特率),50ms(对应38,400波特率),以减少无响应节点的等待时间。•BroadcastPause:200ms(缺省值),0-999,999,999ms–ModbusRTU主站发完前一个广播后到下一个广播前的最短时间间隔(Confidential–ForInternalUseOnly)Copyright©2010RockwellAutomation,Inc.Allrightsreserved.串口ModbusRTU高级设置•Inter-CharTimeout:0ms(缺省值),0-999,999,999ms–ModbusRTU协议根据传输过程中“静音”时间是否超过“Inter-CharTimeout”的值来判断一个数据包是否已完全被接收。数字0意味着Modbus的该值为3.5个字符的时间间隔。(Confidential–ForInternalUseOnly)Copyright©2010RockwellAutomation,Inc.Allrightsreserved.串口诊断•在Release2,CCW仍不能显示串口诊断计数。•当任何一个串口无论是发送数据还是接收数据,控制器的通信指示灯COMM都会闪烁(因此,在多串口情况下,无法判断哪个串口正在收发数据)。COMMLED指示灯闪烁最短时间是250毫秒。(Confidential–ForInternalUseOnly)Copyright©2010RockwellAutomation,Inc.Allrightsres
本文标题:Micro830中文modbus教程
链接地址:https://www.777doc.com/doc-3383186 .html