欢迎来到天天文库
浏览记录
ID:34491452
大小:286.61 KB
页数:4页
时间:2019-03-06
《modbus rtu单片机通信程序编写方法new》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、万方数据ModBusRTU单片机通信程序编写方法ModBusRTU单片机通信程序编写方法mplementationofRTUSCMCommunicationProgram尤慧芳(江苏信息职业技术学院,江苏无锡214101)摘要讲解如何利用ModBus通信协议,实现触摸屏与单片机的通信。详细介绍了单片机通信子程序、单片机应答程序、CRC校验程序的编写方法,给出了各程序的流程图。关键词:ModBus,通信协议,触摸屏,单片机AbstractThispaperdiscusseshowtorealizethecommunicationbetweenSCMandtouch
2、_screenbycommunicationprotoc01.SCMcommunicationsubprogram.SCMresponseprogramandCRCprogramaredescribed,andtheirprogramflowdiagramsaregiven.Keywords:ModBus,communicationprotocol,touch_screen,singlechipmicrocomputer随着触摸屏的应用和产量的增加,价格下降,使用触摸屏作为单片机控制设备的键盘和显示装置,提高单片机控制设备的档次。触摸屏与单片机联合使用时,触摸屏
3、的主要功能是:①显示单片机输入,输出端IZl或内部存储器的开关状态。②用触摸按键强制单片机输入,输出端口或内部存储器的开/关状态。(》显示单片机中数据存储器的内容。④用触摸屏键盘把设定数据送人单片机的内部数据寄存器中。可规纳成触摸屏与单片机间对应地址的数据位、字的读和写。因此可以利用ModBus通信协议来实现触摸屏与单片机的通信和控制,或触摸屏与多台单片机通信,构成一个集散控制系统。用ModBusRTU通信协议,触摸屏与单片机的通信是采用主从通信方式,触摸屏是主机,单片机作为从机,触摸屏周期的发送指令帧,(观察触摸屏的COM指示灯作周期闪烁,表示周期的发送指令帧
4、),单片机在接收到触摸屏的指令帧后,进行校验,并作出相应的应答。本文阐明单片机通信子程序、单片机应答子程序和循环冗余校验(CRC)程序的编写方法。1单片机通信子程序编写RTU通信格式为:起始地址功能码数据CRC校验结束l>3.5字符8位N+8位低8位高8位>3.5字符根据ModBusRTU通信协议规定,当发送数据帧时需延时>3.5个字符(若波特率为9600,发送一个字节约为1ms),即>3.5ms,当接收数据后延时超过3.5ms表示一帧数据接结束。本文介绍用定时器T0产生1ms定时器,接收在每次T0中断时用查询方式,发送用串行中断方式。编程时需用二个位标志:其中
5、一个为接收标志,一个应答标志。二个数据存储器:其中一个定时计时器、一个接收或发送字节计数器。定义十六个字节的接收或发送缓冲区。分配如下:FRXDBIT04H;接收标志位,F_ANSBIT00H;应答标志位T0_CNTEQU30H;定时计数器BYTE_CNTEQU31H:发送或接收字节计数器CRC—LEQU32H;CRC校验低字节CRCHEQU33H;CRC校验高字节50H-5FH设置为发送或接收缓冲区。接收触摸屏指令帧时,每次To中断时,查询RI,当RI=1,即接收到指令或数据,接收到第一个字节时写接收标志字F_RXD,定时计数器T0_CNT清零,把接收数据写入
6、接收缓冲区,字节计数器B、rTE-cNT加一。之后,每次To中断时,若有数据接收,重复把接收数据写入接收缓冲区,定时计数器T0_CNT清零,字节计数器BYTE_CNT加一,当触模屏不发数据后,定时计数器T0_CNT不再清零,每次T0中断,定时计数器TO_CNT加一,定时计数器T0_CNT值达四次,即延时4ms,清接收标志字F_RXD,定时计数器TO_CNT清零,写应答标志位F-ANS。表示单片机接收完触摸屏一帧指令。单片机用To中断程序接收触摸屏指令、数据子程序流程图如图1所示。坟蔓
7、t埒图1T0中断接收子程序流程图注意:定时器T0从送入初值后一直开中断,在每次
8、T0中断程序中置初值,To可作为1ms时基作其它定时器使用。发送应答程序是在主程序中的。发送应答时,先清应答标志位F.-ANS,把应答指令、数据、CRC校验值依次写入发送或接收万方数据《工业控制计算机》2009年22卷第12期87缓冲区,调用延时4ms子程序,发送字节数写入发送或接收字节计数器BYT已CNT(包括CRC校验值字节),开串行中断,发送第一个应答字节,发送或接收字节计数器BYTE-cNT减一,重复每串行中断,发送一个应答字节,发送或接收字节计数器BYTE_CNT减一,直到发送或接收字节计数器BYTE-CNT为零,表示发送应答帧结束,关串行中断,允许接
9、收。单片机串行通信中断子
此文档下载收益归作者所有