已阅读5页,还剩22页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本科毕业论文题目:单片机实现RS485的通信 学生姓名: 学号: 院(系): 专业: 入学时间: 年 月导师姓名: 职称/学位: 副教授/博士 导师所在单位: 完成时间: 年 月单片机实现RS485的通信摘 要在工业控制自动化领域,智能装置之间的通信占有重要的地位,RS485这种串行通信方式在工控自动化领域应用非常广泛,这种远距离通信可以采集远程信息和远程数据,实现远程控制和远程调节。本文首先介绍了RS485通信标准,然后在此基础上设计了通信协议,并且提出了具体的通信实现方案。系统使用STC89C52RC为主控芯片,以MAX485芯片实现RS485收发功能,并且加上键盘输入和LCD显示功能,最终完成主站和子站的一套小型远程控制方案。关键词:RS485;工控自动化;总线;协议A Kind of Implementation Method of RS485 Communication With MCUAbstractIn the field of industrial control automation,communication between smart devices is very important. The serial communication interface RS485 is widely applied in the field of industrial control automation.Remote command and remote data can be transported by a established connection.So we can realize remote control and remote monitoring by communication. This article first introduces the RS485 communication standard, and then introduces the design of communication protocol,finally puts forward a specific implementation scheme of communication. This system uses STC89C52RC as main control chip,MAX485 as RS485 transceiver, and combined with keyboard input module and LCD module.This system is a small remote control solution between main and sub stations. Keywords: RS485; industrial control automation; bus; protocol目 录1. 绪论11.1. RS485简介11.2. 单片机的选型11.3. 通信协议简介21.4. 研究内容和意义22. 通信协议设计22.1. Modbus协议22.1.1. Modbus介绍22.1.2. Modbus帧格式32.2. 基于Modbus的协议设计42.2.1. 传输规则设计42.2.2. 设置单点命令52.2.3. 设置数据命令62.2.4. 召唤状态信息62.2.5. 召唤数据信息73. 系统设计73.1. 系统功能73.2. 系统硬件设计83.2.1. RS485收发模块83.2.2. LCD液晶模块93.2.3. 键盘输入模块103.2.4. 子站的LED灯模块113.2.5. 实际电路图113.3. 系统软件设计123.3.1. 主站程序设计123.3.2. 子站程序设计153.4. 编译和调试174. 论文总结19主要参考文献20附录A 主站协议实现21附录B 子站协议实现27致 谢321. 绪论1.1. RS485简介RS485,又叫EIA-485,是美国电子工业协会EIA制定的一种串行物理接口标准。一般采用两线制传输,利用两线间的电压差进行数据传输。RS485可以满足通信距离远,抗干扰能力大,传输速率高的要求。通过RS485总线连接的智能设备可以形成网络拓扑,满足了网络信息化的需要。一台主机可以同时控制多台从机,这种一对多的主从通信方式极大的提高了通信的效率,也节省了通信成本。RS485通信的特点如下:(1)逻辑“1”以两线间的电压差为+(26)V表示;逻辑“0”以两线间的电压差为-(26)V表示,接口信号电平与TTL电平兼容。2(2)RS485最大的通信距离约为1200m,最大传输速率为10Mbps,如果需传输更长的距离,需要加485通信中继器。 2(3)RS485接口抗干扰性能好,由于采用平衡驱动器和差分接收器的组合,使得它的抗共模干扰能力增强。(4)RS485仅仅规定了接受端和发送端的电气特性,它对数据协议未做规定,因此在通信方案中的协议要另行设计,但必须满足RS485的物理传输要求。(5)可以采用两线制,半双工通信方式,信息可以双向传输,但不能同时进行数据的收发。也可以采用四线制,全双工通信方式,这样就可以实现同时收发数据。RS485一般采用两线制,主从半双工通信,手拉手串联接线方式。连接图如下所示:图1:RS485连接图如图1所示,采用手拉手接线方式,可以在总线上挂接一个主站和多个从站,实现一站对多站的通信方式。 在实际应用中,实现RS485电平转换的有多种芯片,最为典型的为MAX485芯片,本设计也将采用MAX485芯片实现RS485的发送与接收过程,具体实现见本文第3章节。1.2. 单片机的选型单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的CPU、RAM、ROM、多种I/O、定时计数器和终端系统等功能集成到一块硅片上所构成的小型计算机系统。单片机具有多种通信接口,可以方便的实现通信。本设计中采用STC89C52RC型号单片机,STC89C52RC单片机是由宏晶科技设计的8位增强型51单片机,拥有8KB的FLASH程序存储区,512 byte的RAM,1个UART接口,3个定时/计数器,4个8bit 双向I/O口。对于本次设计,此型号单片机可以满足要求。1.3. 通信协议简介通信协议是指通信双方完成数据通信传输所必须遵循的规则和约定。协议定义了数据单元的格式、信息发送和接收的时序等,从而确保网络中数据顺利地传送到正确的地方。通信协议相当于是通信双方共同的语言,是通信过程中不可或缺的一部分。由于RS485属于物理层的接口标准,它没有规定任何数据协议,本次设计的通信协议在物理层上要符合RS485的传输要求,遵从半双工、主从通信的规则。Modbus作为一个问答式通信协议,是全球第一个真正用于工业现场的总线协议,它具有如下特点1:(1)作为一项标准、开放的协议,用户可以免费地使用,不会侵犯知识产权。(2)支持多种电气接口(如RS485),并且还能在各种介质上传送(如双绞线、光纤、无线等)。(3)帧格式简单、紧凑,协议内容通俗易懂,用户可以很容易的使用。通过以上特点可以看出,Modbus能够适应RS485的传输要求,所以本次设计的通信协议是在Modbus的基础上,进行了适当的改变所完成的。1.4. 研究内容和意义本文将依次介绍RS485和基于Modbus所设计的通信协议,然后提出具体系统设计方案,包括系统电路图和程序设计流程图,最终实现一套小型主从式的一点对多点远程智能控制方案。2. 通信协议设计2.1. Modbus协议2.1.1. Modbus介绍Modbus是一种串行通信协议,它是由Modicon在1979年发明的,是全球第一个真正用于工业现场的总线协议,Modbus协议如今交由分布式自动化接口组织进行管理,为Modbus今后的发展奠定了基础。Modbus是应用于电子控制器上的一种通用协议。通过此协议,网络上的控制器和其它各种智能设备之间就可以实现通信,它逐渐成为了一种通用工业标准。通过该协议,不同厂商生产的控制设备可以连成一个网络,进行集中监控。Modbus支持多种传输网络,它所支持的网络包括串行链路和标准以太网等。Modbus协议的标准连接方式为串行链路连接方式,多数Modbus设备通过串口RS485两线制接口进行通信。Modbus串行链路协议是一个主/从协议,可以实现由一个主站和多个子站进行通信的功能。它是OSI模型第二层上的链路层传输协议,串行链路上的客户机由主节点提供,服务器由从节点提供。在同一时刻,只有一个主节点连接于总线,一个或多个子节点(最大编号为247)连接于同一个串行总线。Modbus通信总是由主节点发起,子节点在没有收到来自主节点的请求时,从不会发送数据,子节点之间从不会互相通信。主节点在同一时刻只会发起一个Modbus事务处理。请求/应答过程如图1所示:图2:Modbus请求/应答过程图12.1.2. Modbus帧格式对于Modbus串行链路存在两种传输模式,Modbus RTU模式和Modbus ASCII模式。Modbus RTU模式是一种采用二进制表示数据的方式,Modbus ASCII模式是一种人类可读的、采用ASCII码值表示数据的方式。RTU格式采用循环冗余校验的校验方式,而ASCII格式采用纵向冗余校验的校验方式。配置为RTU模式的节点和配置为ASCII模式的节点不可以互相通信。(1) Modbus RTU模式表1:Modbus RTU模式子节点地址功能码数据CRC(循环冗余)校验1字节1字节0到252字节2字节(CRC低 | CRC高)注:报文帧由时长至少为3.5个字节时间的空闲间隔区分,RTU模式帧最大尺寸为256字节。CRC的计算:初始对一个16位寄存器预装全1,每个8位字节与寄存器中的值相异或,然后结果向最低有效位(LSB)方向移动1位,而在最高有效位(MSB)上填充零。然后提取并检查LSB:如果LSB为1,则寄存器中的值与一个固定的预设值相异或;如果LSB为0,则不进行任何操作,这个过程将重复直到执行完8次移位。完成每个字节的最后一次移位及相关操作后,下一个8位字节与寄存器的当前值相异或,然后又同上面描述过的一样重复8次。当所有报文中的字节都运算之后得到的最终值,就是CRC的值。(2)Modbus ASCII模式表2:Modbus ASCII模式起始地址功能码数据LRC(纵向冗余)结束:字符2字符2字符0到2*252字符2字符CR,LF注:Modbus ASCII帧的最大尺寸为513个字符。LRC的计算:对一帧报文中的所有的连续8位字节相加,忽略任何进位,然后求出其二进制补码。计算过程不包括起始“冒号”和结尾 CR,LF字符。在ASCII模式,LRC的结果被ASCII编码为两个字节并放置于ASCII模式报文帧的结尾,CR和LF之前。2.2. 基于Modbus的协议设计2.2.1. 传输规则设计根据本课题的要求,通信协议设计在Modbus的基础上做了如下的延伸和改变:(1) 取消了广播功能。(2) 功能码做了适当改变,采用自定义的功能码。(3) 校验方式采用简单加校验。(4) 对于命令帧,加校验从地址码开始算起。(5) 对于数据帧,加校验从数据起始字节开始算起。(6) 帧起始和结束由空闲3.5个字节来区分。(7) 对于数据传输时,为了便于屏幕显示,直接发送ASCII格式的字符。(8) 子站收到异常命令,将不做响应,主站会以超时处理。(9) 字节发送是从LSB开始发送,8位数据位,1位停止位,无校验位。主站状态图如下所示:图3:主站状态图如上图3所示,主站是主动发起通信的一方,开机启动初始化后进入空闲状态,只有当按下功能键后才会进行相应的动作或者启动通信;当主站主动发起通信请求后,将启动响应超时计时,并进入等待应答状态;在等待应答状态下,只有接收到期望子节点应答后才会进入应答处理,否则将以超时出错处理;当应答处理结束或者超时出错处理结束后,主站又将恢复到空闲状态。子站状态图如下所示:图4:子站状态图如上图4所示,子站开机启动初始化后进入空闲状态,子站从不主动发送数据,只有在收到主节点的通信请求后,才对请求进行检查,对检查正确的数据帧才会进行处理和应答,否则将以格式化错误进行处理,不做任何响应,并且返回至空闲状态。2.2.2. 设置单点命令功能码:0x06主站功能:命令主站所发送的帧格式如下表所示:表3:设置单点命令帧子站地址功能码单点命令加校验1字节0x061字节1字节子站功能:命令确认 子站所发送的帧格式如下表所示:表4:单点命令确认帧子站地址功能码单点命令加校验1字节0x061字节1字节此功能由主站发送LED灯控制命令至子站,并等待子站回发命令确认,子站收到命令后,对命令进行校验,校验成功后执行操作并发送命令确认至主站。单点命令:用来控制子站LED灯的亮灭,低四个比特位(01)为0表示熄灭,为1表示点亮;高四个比特位(18)用来标识子站LED位置。2.2.3. 设置数据命令功能码:0x01主站功能:命令主站所发送的帧格式如下表所示:表5:设置数据命令帧子站地址功能码数据长度数据加校验1字节0x011字节0到15字节1字节子站功能:命令确认子站所发送的帧格式如下表所示:表6:数据命令确认帧子站地址功能码数据长度加校验1字节0x011字节1字节此功能由主站发送显示数据至子站,并等待子站的命令确认,子站收到数据后进行校验,校验成功将在LCD上显示数据,并发送命令确认至主站。命令和命令确认帧所传输的数据为ASCII格式的字符数据。2.2.4. 召唤状态信息功能码:0x03主站功能:召唤主站所发送的帧格式如下表所示:表7:召唤状态信息帧子站地址功能码状态数目加校验1字节0x030x081字节子站功能:响应子站所发送的帧格式如下表所示:表8:状态信息响应帧子站地址功能码状态数目状态信息加校验1字节0x031字节8字节1字节此功能由主站发送召唤状态信息的命令至子站,并等待子站的数据响应,子站收到命令后进行校验,校验成功后搜集子站状态信息并回发响应数据至主站。状态信息:8个字节分别表示子站8个LED的状态信息,每个字节的低四个比特位(01)为0表示LED状态为熄灭,为1表示LED状态为点亮;高四个比特位(18)用来标识子站LED位置。2.2.5. 召唤数据信息功能码:0x02主站功能:召唤主站所发送的帧格式如下表所示:表9:召唤数据信息帧子站地址功能码数据类型加校验1字节0x020x001字节子站功能:响应子站所发送的帧格式如下表所示:表10:数据信息响应帧子站地址功能码数据长度数据加校验1字节0x021字节0到15字节1字节此功能由主站发送召唤数据信息,并等待子站的数据响应,子站收到命令后进行校验,校验成功后收集数据并回发数据信息响应至主站,主站收到响应后在LCD上显示。子站响应帧所传输的数据为ASCII格式的字符数据。3. 系统设计3.1. 系统功能1. 主站:主站是远控中心,通过RS485总线与多个子站相连,通过设置子站的地址,可以与指定地址的子站进行通信,实现远方控制。(1)主站设置通信地址功能,通过设置子站地址确定要通信的子站。(2)主站召唤LED状态功能,发送召唤单点信息命令。(3)主站召唤远方数据功能,发送召唤数据信息命令。(4)主站设置单点命令控制子站LED灯。(5)主站设置远方数据命令传输数据至子站的LCD显示。(6)主站LCD显示功能,用于显示子站LED灯状态信息和数据信息。(7)主站键盘输入功能,用于控制和数据输入。(8)主站RS485收发功能,用于与子站通信。2. 子站:子站是受控站,可以由主站控制,当然也拥有本地控制功能,同一时刻只能允许其中一种控制方式,以避免远方命令与本地命令的冲突。(1)子站本地控制功能,可以手动配置子站地址。(2)子站本地控制LED灯。(3)子站本地控制LCD上显示的数据。(4)子站接收主站的召唤命令,并响应数据。(5)子站接收主站的控制命令,解析命令、完成操作后并返回命令确认。(6)子站LCD显示功能,用于显示LED灯状态和数据信息。(7)子站键盘输入功能,用于控制和数据输入。(8)子站LED灯模块,此模块为受控模块。(9)子站RS485收发功能,用于与主站通信。3.2. 系统硬件设计硬件电路由以下模块组成:RS485收发模块、LCD液晶模块、键盘输入模块(对于子站还有LED模块)。系统硬件框图如下所示:图5:系统硬件框图3.2.1. RS485收发模块本设计采用Maxim设计生产的MAX485芯片来实现RS485收发功能。MAX485是一款低功耗的RS485收发器,可以实现最高2.5Mbps的传输速率。其内部结构图如下所示: 图6:MAX485芯片内部结构图6MAX485与STC89C52RC芯片的连接电路图如下所示: 图7:MAX485与STC89C52RC的连接电路图3.2.2. LCD液晶模块液晶模块采用的是1602LCD液晶模块,LCD按照显示内容划分,可以分为段式LCD、字符式LCD和点阵式LCD三种。其中字符式LCD以其廉价,显示丰富、美观,使用方便等特点,日渐成为LED数码管的理想替代品。本设计采用字符式1602LCD显示模块。字符式LCD专门用于显示数字、字母、图形符号以及少量自定义符号。这类显示器集成了LCD控制器、点阵驱动器、字符存储器在一块板子上,再与液晶屏一起组成一个显示模块。“LCD1602”其中的“16”代表每行可以显示16字,“02”代表可以显示2行。1602型LCD的主要技术参数表如下所示:表11:LCD1602技术参数显示容量16*2个字符芯片工作电压4.5V5.5V工作电源2.0mA(5.0V)模块最佳工作电压5.0V字符尺寸2.95*4.35mmLCD1602模块的实物图如下所示:图8:LCD1602实物图LCD1602与STC89C52RC的连接图如下所示:图9:LCD1602模块与STC89C52RC的连接图3.2.3. 键盘输入模块本设计的输入模块采用4*4矩阵键盘,由4个I/O线作为行线,4个I/O线作为列线组成的键盘。当输入按键比较多的情况下,矩阵键盘可以有效提高单片机I/O口的利用率。其连接原理图如下所示:图10:矩阵键盘 矩阵键盘与51单片机的P1口相连接,通过扫描确定按键的键值。本设计采用了查表法扫描方式,对P1口先置0xf0,然后读取扫描值,再对P1口置0x0f,然后读取扫描值,两次扫描值相位或后得到键编码值,通过查表后得到键值。3.2.4. 子站的LED灯模块子站拥有自己的LED灯模块,此模块包括8个LED发光二极管,是受控模块,受子站和主站的命令控制亮灭。LED发光二极管采用共阳极连接,当51单片机的控制I/O口置低电平时,LED灯亮,否则,LED灯熄灭。LED灯模块电路图如下所示: 图11:LED灯模块3.2.5. 实际电路图系统的实际电路图设计如下所示:图12:系统实际电路图3.3. 系统软件设计 3.3.1. 主站程序设计主站程序包括主函数循环、响应帧接收模块、数据/命令帧发送模块、协议解析模块、数字按键控制模块。(1)主函数工作流程图13:主站main函数流程图主站的main函数流程图如图13所示,主站在上电初始化以后,会循环检查是否有完整的接收帧,是否有按键按下,是否有发送帧。采用中断接收数据的方式,若检测到一帧接收完毕后,帧接收标志位置位,主函数会进行数据解析并在LCD上显示;若检测到有按键按下,会按照按键的特定功能进行特定的处理,比如设置地址功能、发送命令功能或者写入数据功能;若待发送的数据写入完成会置位数据写入完成标志,主函数检测到以后进行数据帧的打包和发送。(2)响应帧接收模块流程图14:主站响应帧接收流程图 主站响应帧接收流程如图14所示,通过4ms定时器的中断来判断是否接收完一帧数据。根据协议,以超过3.5个空闲字符时间来区分帧起始和帧结束,本设计定义为4ms时间。(3)命令/数据帧发送模块流程图15:主站命令/数据帧发送流程图 命令/数据帧通过按键功能发送,当发送键按下后,主控芯片启动发送流程,如图15所示,帧发送开始的同时启动Timer2定时器,用于子站响应超时计时,当160ms内未收到子站的响应或者确认帧,则主站以超时处理。(4)帧解析模块流程图16:主站帧解析流程图 主站的帧解析流程如图16所示,当接收完一帧数据后,启动解析过程,首先判断地址是否与主站通信的子站地址相匹配,然后判断功能码,针对不同的功能码,将进行不同的帧解析处理。(5)数字按键控制模块流程图17:主站数字按键控制流程图 按键控制流程如图17所示,按键分为数字按键和功能按键,功能按键包括地址输入键,命令输入键,以及数据输入键和发送键,数字按键能够输入从09的数字。3.3.2. 子站程序设计子站程序模块包括主函数循环、按键功能模块、数据帧接收模块、解析与应答模块。(1)主函数流程图18:子站main函数流程图子站main函数流程如图18所示,子站上电初始化后,循环扫描数据帧和按键动作,当接收一帧数据时,将对数据进行处理;当有按键动作时,对动作进行处理。子站的通信功能模块中,子站从来都不主动发送数据,只有在收到主站的召唤或者命令后对其进行响应和应答,而响应和应答过程在数据解析模块中实现。子站的本地控制功能模块中,通过按键功能控制LED灯的亮灭,同时也有数据输入功能和地址配置功能。(2)按键功能模块流程 图19:子站按键功能流程图 子站的按键功能如图19所示,功能按键包括地址输入键、数据输入键和数据确认键,而数字键可以输入09的数字。(3)数据帧接收模块流程图20:子站帧接收流程图 子站的帧接收流程如图20所示,与主站的接收过程一致,此处不再赘述。(4)帧解析与应答模块流程图21:子站帧解析与应答流程图 子站的帧解析与应答流程如图21所示,子站从不主动发送数据,它只对主站发来的命令或者数据进行确认或者响应。解析过程首先对地址进行验证匹配,地址匹配后才进行下面的解析,下一步针对不同的功能码进行不同向主站发送不同的确认帧或者响应帧,然后根据命令或者数据进行不同的控制操作。3.4. 编译和调试本设计编译程序使用的是Keil uvision3,编译主站和子站的界面如下所示:图22:主站编译结果图23:子站编译结果串口调试程序采用的是串口大师1.1版本,主站和子站的调试过程类似,本文只举例介绍子站的调试过程。下面用串口大师1.1程序模拟主站发送召唤状态信息指令到子站,其他命令的调试过程均与此类似,本文将不再赘述。首先把子站程序生成的hex文件下载到子站板上,通过子站的控制系统设置子站地址为11。图24:子站启动界面图25:设置地址 地址设置完成后通过子站的控制系统写入LCD显示数据1156,并置LED灯1号和4号亮。图26:显示界面 接下
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- AI时代高品质全光算力专线研究报告(2025年)
- 学校集中供热能源消耗分析与优化方案
- 废弃矿山复垦后土地利用方案
- 2025年教育法规试题(含答案)(全文)
- 水库水质实时监控与预警系统建设
- (2025年)车间级培训安全试题及答案
- 调节阀市场需求分析
- 防腐保温工程节能效果评估实施方案
- 粘土活动试题及答案
- 吉林成人高考真题及答案
- 铭记历史+勿忘国耻:从电影《731》看民族记忆-2025-2026学年高中上学期主题班会
- 总务人员考试试题及答案
- 2025年甘肃省庆阳市公安局面向社会招聘警务辅助人员58人考试参考试题及答案解析
- 急性心梗诊疗(2025指南)解读课件
- 1996年劳动合同模板下载 全新版
- 预防校园欺凌行为
- 毛坯房验收清单
- 2024执业药师考试《药学综合知识与技能》真题及答案大全
- 宁夏绿电园区方案
- 《植物生产与环境》习题与参考答案
- 高速气浮电主轴校准规范
评论
0/150
提交评论