基于AVR单片机的检测设备通讯系统的开发研究
中图分类号:TP914.3 文献标识码:A
1引言
在测控系统中,通常采用计算机作为上位机,单片机为下位机的分布式结构[1],完成数据采集、测量、控制和管理等任务。这些系统因其使用灵活、性价比较高、功能较强,而在许多领域得到广泛的应用。
随着数字控制技术的发展,由单片机构成的测控系统也日益复杂。在一些要求响应速度快、实时性强、控制量多的应用场合,单个单片机构成的系统往往难以胜任[2]。这时,由多个单片机结合工控机组成分布式测控系统成为一个比较好的解决方案。在这些分布式测控系统中,如何更好地解决通讯问题显得尤为重要。本文针对某型测地仪配套检测设备的通讯系统设计部分进行阐述,构建一个由AVR单片机和工控机组成的RS485现场总线测控系统。
2需求分析
某型测地仪是一种集惯性技术、卫星技术、光电技术为一体的综合性装备,具有快速数据综合、处理、传输能力,并能满足测地作业各种计算的需要。由于测地仪由七个部分单体组成,每个单体又独立系统,并且都有相对应的通信以及供电接口与外界相连,其系统连接关系如图1所示。
从图中可以看出,系统总体以控显器为中心,协调各测量单体工作,并给各测量单体分配了唯一地址。系统总体开始作业时,控显器会自动查找测量单体,以判断是何种配置状态,再进行相应控制作业。因此,测地仪的检测设备设计思路是既扮演控显器的角色向其他单体发送控制命令,使各单体工作,并采集数据,判断工作状况,又模拟各单体工作状态向控显器反馈信号。
3总体方案设计
针对测地仪各单体相对独立,其通讯接口均是RS485的特点,检测设备采用一个由工控机作为上位机,AVR单片机作为主控机,各单体上的单片机作为从机构成的RS485现场总线测控系统,整个测控系统的功能示意图如图2所示。
AVR单片机是检测设备RS485现场总线测控系统的核心部分,它不仅要给测地仪各单体提供相应的激励信号,采集反馈信号,判断工作状况,还接收工控机的控制命令,并将各单体数据上传给工控机。AVR单片机通过RS232接口与工控机进行通讯,同时,通过RS485接口与测地仪7个单体进行通讯。
4系统硬件设计
4.1系统硬件电路
随着现代测控技术的迅猛发展,以单片机为主的微机自动测控系统逐步取代了常规测量仪表。现有高性能、低功耗的8位AVR RISC单片机中,ATmega128是AVR系列中功能最强的单片机。该芯片还具有比较丰富的片上资源,其内部集成了128。用于本通讯系统设计时,既可以省去扩展程序存储器和A/D转换器,又可以满足系统串行通信要求。以AVR单片机为核心设计的系统硬件电路,其原理框图如图3所示。
4.2串口通信电路
串口通信有多种工业标准,设计中采用的是RS232接口和RS485接口电平规范。通过RS232来完成AVR单片机与工控机之间的通讯,实际上只需要RXD,TXD和GND三根线即可。其中RXD为输入引脚,用于接收数据,TXD为输出引脚,用于发送数据。由于RS232标准采用负逻辑方式,标准逻辑1对应-5V~-15V,标准逻辑0对应+5V~+15V。为了与RS232的电压相匹配,在单片机的I/O引脚和RS232连接器之间需要加电平转换芯片。图4为RS232接口原理图。
图5给出了RS485驱动电路原理,由于RS485的发送控制端仅在需要发送时打开,平时应关闭发送器,所以在由MAX485构成的半双工式差分平衡通信网络,多个接收器的使能控制信号485#C禁止的驱动器可以直接挂在传输线上而不会影响信号的正常传输。
5系统软件设计
5.1通信协议设计
在软件设计中,首先需要进行通信协议的设计。在单片机多机通信中,为了保证消息的正确发送和接收,主机和从机之间首先要规定通信的流程和具体的通信信息帧结构。主从机之间通信的流程即采用主从式结构[4]:数据通信总是由主机发起,若从机需要发送数据,则必须等到主机轮询本地从机时,才可提出请求。这种网络模式下从机不会“侦听”其他从机对主机的响应,这样就不会对其他从机产生错误的响应。
单片机的串口通讯均设置波特率9600,数据8位,停止位1位,无校验位,数据帧长可变。帧结构由帧头、数据包和校验三分组成,如图6所示。其中,帧头由6个字节内容组成,包括包头(第1字节)、发方地址(第2字节)、收方地址(第3字节)、命令字(第4字节)、数据长度字节(第5字节)以及帧头校验(第6字节)。包头固定为AA,表示命令帧头,可当同步码;地址字节包括发方地址和收发地址,以01-06代表各单体的地址,0A代表工控机,0B代表下位机地址;命令字30,31……3F代表工控机向AVR单片机发送命令字单片机转发给相应单体,完成测试,40,41……4F代表AVR单片机向工控机发送命令字,用于返回单体数据;数据长度N表示后面数据包数据长度,如果长度N为0时,该帧数据就只有帧头,即表示单纯的指令帧,帧数据长度为6个字节,如果不为0,则帧数据长度为N+6;第6个字节校验是对帧头前5个进行校验和计算并随数据帧一起发送,在接收端进行误码判断。
5.2校验算法
校验编码是差错检测技术的核心,常用的编码技术有两种:一是奇/偶校验编码,目前大多数带通信的芯片都具有该功能,可以在发送时进行配置校验编码方式;二是循环冗余校验编码(Cycle Redundancy Check, CRC)必须为1。CRC的处理方法是:发送方以k(X)去除t(X),得到余数作为CRC校验码。校验时,以计算的校正结果是否为0来判断数据帧是否出错。
CRC校验可以100%地检测出所有奇数个随机错误和长度≤n(n为g(x)的阶数)的突发错误。所以,CRC的生成多项式的阶数越高,误判的概率就越小。本文采用在数据的校验方法上采用CRC256校验,即将所有传送字符的ASCII
码累加后除以255得到校验码。
5.3软件设计流程
整个系统软件分为工控机端和单片机端两部分,单片机端软件包括数据采集和串口通信程序,数据采集部分可设计成一个函数,在主程序中调用即可,AVR单片机串口通信部分软件流程如图7所示。以发送/接收中断函数为例,其实现的功能是采用中断的方式保存或发送一帧的数据,可以实现双全工的数据传输。按照数据帧结构,中断函数需要对0xAA开头的数据进行处理,下面以接收中断函数为例,程序流程如图8所示:6结束语
本文基于AVR单片机设计一个RS485通讯系统以满足测地仪的数据采集和故障检测中的通信需求。在数据传输过程中,通信协议的制定和传输线状态的稳定直接影响数据传输的可靠性。本设计已在某型测地仪的检测上调试通过,结果表明数据传输可靠、移植性好,同时也大大降低研发成本。
参考文献
[1]任伟,王艳. 主从分布式网络监控系统的设计与实现[J]. 计算机测量与控制,2010,18(11):2539-2541.
[2]刘海成. AVR单片机原理及测控工程应用——基于ATmega48/ATmega16[M]. 北京:北京航空航天大学出版社,2008.
[3]ATmega128[EB/OL]. literature.
[4]陈铁军,谢春萍. PC机与RS 485总线多机串行通信的软硬件设计[J]. 现代电子技术,2007,5:103-105.
[5]张守尚. 串行通信校验算法和传送持续性的保证[C]. 上海市电气工程设计研究会2009年学术年会论文集:154-156.