




已阅读5页,还剩29页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
,3.1Modbus协议Modbus是MODICON公司于1979年开发的一种通讯协议。它是一种在工业领域被广为应用的真正开放、标准的网络通讯协议,已经成为一种电子控制器的通用语言,通过此协议控制器之间可以通讯,已成为一种工业标准。不同厂商生产的控制设备通过Modbus协议可以连成通讯网络,在PLC、变频器、电器设备及自动化仪表等领域都广泛应用Modbus协议。Modbus是链路层的主/从协议,采用请求响-应方式.主站发出带有从站地址的请求报文,具有该地址的从站收到该报文后发出响应报文。,第三章Modbus协议与现场总线,Modbus在OSI模型中所使用的层,3.1.1Modbus协议的物理层1.网络结构总线式主从结构主设备:PC机,PLC从设备:PLC,智能仪表一个主站可有1253个从站,从站之间不能相互通讯。2.通讯方式(a)一对一:主设备可以和从设备通讯,从设备响应。(b)一对N(广播):主设备对N个从设备,从设备无响应。0地址表示广播地址。3.物理层支持RS-485、RS-232C。,CRLF0D0A,COLON3A,3.1.2Modbus协议的帧格式,Modbus有两种格式:ASCII格式;RTU格式,1.ASCII码帧格式(用ASCII表示数据),(1).字节格式,(2).数据表示方法地址:21表示ASCII码32H,31H,(:),(2)说明:a.地址域:从设备地址0-253,地址0为广播地址。b.功能域:代码范围1-255,命令从设备执行哪些功能(如读测量值,读开关量状态)c.数据域:(两部分内容)主设备到从设备:变量起始地址、变量个数。从设备到主设备:字节数n、数据n。d.检错:CRC-16,生成多项式Y=X16+X15+X2+1。,2.RTU格式(用二进制数表示数据),(1)RTU帧格式,3.1.3ModBus功能码,1.Modbus功能码,2.功能码3:读取在一个或多个保持寄存器中取得当前的二进制值,该功能码主要用于读取设备参数,例:主机命令:读6BH开始的3个寄存器内容,从机响应:回传6个字节数据,说明(1)应用层:寄存器中存储的内容用户定义。(2)寄存器地址与寄存器:寄存器号减1为寄存器地址,3.功能码4:读取一个或多个输入寄存器值,主要用于读取设备测量数据,从寄存器8开始读一个寄存器值,4.功能6:写单个寄存器,例:从寄存器地址1开始,写一个寄存器值03,寄存器地址:0001H寄存器:0002H,5.功能码16:写多个寄存器,主机从01H地址开始写2个寄存器,从机响应主机,3.1.4应用举例题:有某地址为1的从设备,其变量定义如下:例1:主设备用3号命令寻址地址为1的从设备,读取寄存器地址为0000H的量程.主设备命令帧从设备响应帧,变量定义,主机请求,从机响应,量程(参数),寄存器地址,0000H,测量值,0002H,字节数,2byte,2byte,主,从,地址,功能码,变量地址高,变量数高,CRC校验,01H,03H,00H,00H,变量数低,地址,功能码,01H,03H,字节数,02H,数据1,03H,CRC校验,*,流量=3E8H=1000,变量地址低,00H,01H,*,数据2,E8H,例2:主设备用4号命令寻址地为1的从设备,读取地址为0002H的测量值,01H,04H,0002H,0001H,#,地址,功能码,变量地址,变量数,CRC校验,地址,功能码,字节数,数据1,数据2,CRC,CRC,01H,04H,02H,03H,20H,*,*,从设备响应,主设备命令帧,测量值=320H=800,问题:测量值有小数和正负怎么办?,3.1.5CRC-16校验,1.说明:(1)CRC校验=地址码+功能码+数据(2)生成多项式G(x)=X16+X15+X2+1(11000000000000101)(3)生成多项式最高位总是1,所以实际中的生成多项式为1000000000000101(4)Modbus采用逆序生成多项式1010000000000001(5)CRC本质:移位异,是1与生成多项式或和,2:CRC方法,02,1,1,07,3.CRC计算程序(标准程序),数据指针,数据长度,CRC低位表,CRC高位表,auchCRCHi0 xFD,auchCRCHi0 x39,auchCRCLo0 xFD,auchCRCLo0 x39,CRCLo111111111ST00000010XORuIndex11111101auchCRCHi0 xFD=0 xC1uchCRCHi11111111XOR11000001uchCRCLo00111110uchCRCHi=auchCRCLo0 xFD100000012ST00000111uchCRCLo00111110XORuIndex00111001auchCRCH0 x39=0 xC0uchCRCHi100000001110000000XORuchCRCLo010000001,uchCRCHi=auchCRCLo0 x39=0 x12结果0 x1241,例:x2=0 x02,0 x07;CRC_n=CRC16(x,2);,压,3.2Modbus协议通讯从站软件设计,(1).主站使用Modbus04号命令采集从站测量数据(2).寄存器应用层定义,3.2.1从站软件设计要求,寄存器内容,压力,温度,液位,流量,2000H,Modbus寄存器,实际设计考虑问题(1).Modbus命令帧结束判定方法,(2).帧间隔控制方法(3)如何解决通讯数据串位及数据残缺等异常情况对通讯的影响.,3.2.2从站软件设计内容,2004H,2008H,200CH,寄存器地址,1.接收数据(1)串口接收数据(2)根据主站MODUBS命令读寄存器。(2)发送数据将所读寄存器发送出去,主站一次可能读一个寄存器,也可能读多个寄存器。,3.2.3从站接收命令帧方法,(1).设置一个定时器,定时3.5char时间(2).每接收一个数据,启动定时器定时.(3).定时时间到,说明在3.5char时间里没有通讯数据,表明帧结束,在定时中断服务程序中处理Modbus命令.,定时中断帧结束,读命令回答数据,启动定时器,3.5char,地址,功能码,变量地址,变量数,CRC校验,主站发给从站读寄存器命令8byte,从站3.5char后回答数据,如何确定MODBUS帧结束?,帧间隔3.5char定时方法,ICR1(触发寄存器),计数器,PWM输出,3.2.4从站程序设计(AVRMEGA64CPU),voidmain(void)unsignedchari=0;unsignedlongnum=0;OutSet1480;/*R485接收方向*/Set1480Rxd;Delays(100);_CLI();/*关中断UartInit();/*UART初始化TimeDelay=OscF*10/BaudRate0;/*根据波特率设置定时时间*/TCCR1B=(1=1000)/*若没有通讯,则定时初始化串口*/num=0;/*防止通讯死机*/CloseINT0();/*关通讯中断*/UartInit();/*初始化串口*/OutSet1480;/*设置I/O口为输出方向*/Set1480Rxd;/*设置RS485接收方向控制*/OpenINT0();/*开通讯中断*/,(1).主程序,voidUartInit(void)/*设置通讯波特率*/UBRR0L=(OscF/16/(BaudRate0+1)%256;UBRR0H=(OscF/16/(BaudRate0+1)/256;/*Uart0发送和接收引脚使能*/UCSR0B=(1RXEN0)|(1TXEN0);/*设置帧格式:8个数据位,1个停止位*/UCSR0C=(1URSEL0)|(1UCSZ01)|(1UCSZ00);UCSR0A=(1RXC0)|(1TXC0)|(1UDRE0)|(1FE0);,#pragmainterrupt_handlerusart0:iv_USART0_RXCvoidusart0(void)unsignedcharcombuf;combuf=UDR0;/*读通讯数据*/TIM16_WriteTCNT1(0 x0000);/*清定时时间常数*/TIM16_WriteICR1(TimeDelay);/*设置定时3.5char时间常数*/TIFR|=(1ICF1);/*定时记数器加,上限捕捉*/TIMSK|=(1TICIE1);/*启动定时中断*/ReciveBuff_485ReceiveNum_485+=combuf;/*存储通讯数据*/,(2).串口初始化,(3).UART0中断接收(只接收一个字节数据),#pragmainterrupt_handlertimedelay:iv_TIMER1_CAPTvoidtimedelay(void)unsignedinti,x;unsignedintlen;unsignedintstart;unsignedintCheckSum;unsignedintbuff2;if(ReceiveNum_485=8)TIMSK/*BYTE地址*/,(D).定时3.5char中断服务,帧结束,unionIntToCharU8OTT2;U16TTO;,SendBuff_4850=Address;SendBuff_4851=0 x04;SendBuff_4852=len*2;/*字节数*/for(i=0;i(len*2);i+)x=start+i;SendBuff_4853+i=LMAG_Cachex;/*取数据*/CheckSum=CRC16(SendBuff_485,(len*2)+3);/*计算CRC*/CRC16Value.TTO=CheckSum;SendBuff_485(len*2)+3=CRC16Value.OTT1;SendBuff_485(len*2)+4=CRC16Value.OTT0;SendLen_485=(len*2)+5;/*发送字节长度*/SendNum_485=0;UCSR0A|=(1TXC0);/*设置发送完成中断*/UCSR0A|=(1UDRE0);/*设置发送寄存器空中断*/UCSR0B|=(1UDRIE0);/*允许发送寄存器空中断*/ReceiveNum_485=0;TIMSK/*关闭3.5char定时中断*/,#pragmainterrupt_handlersend0:iv_USART0_UDRE/*发送寄存器空中断服务*/voidsend0(void)Set1480Txd;/*RS485发送方向控制*/UDR0=SendBuff_485SendNum_485+;/*发送数据*/if(SendNum_485=SendLen_485)/*发送数据结束*/UCSR0B/*发送完成中断打开*/,#pragmainterrupt_handlersendover:iv_USART0_TXC/*发送完成中断服务*/voidsendover(void)UCSR0B/*改变通讯方向为接收*/,(4).中断发送数据,(F).发送结束,通讯转为接收,unsignedintCRC16(unsignedchar*puchMsg,unsignedintusDataLen)unsignedcharuchCRCHi=0 xFF;/*高CRC字节初始化*/unsignedcharuchCRCLo=0 xFF;/*低CRC字节初始化*/unsignedcharuIndex;/*CRC循环中的索引*/while(usDataLen-)uIndex=uchCRCHi*puchMsg+;/*计算CRC*/uchCRCHi=uchCRCLoauchCRCHiuIndex;uchCRCLo=auchCRCLouIndex;return(uchCRCHi8|uchCRCLo);,(5).CRC校验,3.2.5ARM下的Modbus帧间隔处理方法,NXPLPC2478ARM7TDI核(208脚),1.UART特性(16c550)16字节收发FIFO接收器FIFO触发点可为1、4、8、14字节接收到有效字符中断达到FIFO触发点中断具有3.5CHAR超时中断,2.Modbus从站帧接收方法:(1)上位机发送命令帧8byte(2)下位机接收FIFO触发点设为14(3)当下位机接收到8byte后,超过3.5char产生超时中断.(4)在超时中断处理中接收FIFO数据,并发送响应帧,3.相关UART寄存器,(1)中断使能寄存器,(2)FIFO控制寄存器,(3)中断标志寄存器,voidUart0Isr(void)Int32UUartIntId=U0IIR,LineStatus,Counter;Int8UData;Int32Un;Int32Ui;switch(UartIntId,4.中断接收程序,读FIFO数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030阿胶美容食品市场投资前景分析及供需格局研究研究报告
- 2025-2030防滑涂料行业市场深度分析及竞争格局与投资价值研究报告
- 2025-2030镇痛药产业规划行业深度调研及投资前景预测研究报告
- 2025-2030运动鞋市场行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030轿车行业市场深度分析及发展策略研究报告
- 2025-2030货车行业市场发展分析及前景趋势与投资研究报告
- 2025-2030证券行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030装修产业行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030蜡染布产业行业市场现状供需分析及投资评估规划分析研究报告
- 餐饮企业考试试题及答案
- 中国传统文化北京胡同介绍八大胡同教育PPT实施课件
- 跨道施工保通方案(门洞式)
- 甲午中日战争-完整版课件
- 2022年陕西金融资产管理股份有限公司招聘笔试题库及答案解析
- (高职)经济数学电子课件完整版PPT全书电子教案
- LNG加气站质量管理手册
- 2021新《安全生产法》全面解读课件(PPT 84页)
- 乡镇干部民情恳谈制度
- 一般单位消防安全建设标准
- 《北京市市级投资基金绩效评价管理暂行办法》
- 100道凑十法练习习题
评论
0/150
提交评论