基于RS485多机通信的软件编程与系统调试综述.docx
《基于RS485多机通信的软件编程与系统调试综述.docx》由会员分享,可在线阅读,更多相关《基于RS485多机通信的软件编程与系统调试综述.docx(56页珍藏版)》请在冰豆网上搜索。
基于RS485多机通信的软件编程与系统调试综述
摘要
小局域网多机通信在如食堂刷卡收费管理系统、汽车加油刷卡系统、电能运输秒表管理系统等领域应用广泛。
因此,开展本领域的研究有较好的应用前景。
本文主要采用一种以PC机作为上位机,多台80C51单片机作为下位机,来进行上位机与下位机以及下位机与下位机的通信的研究。
主要包括:
系统总体方案设计;在PC机端,通过专用的RS232/485标准转换芯片S2-485将RS-232电平转换成RS-485电平,在80C51单片机端,通过MAX485转换芯片将TTL电平转换成RS-485电平,来实现上位机与下位机以及下位机与下位机的通信;在系统硬件设计的基础上,制定了通信协议。
为了达到使传输数据的准确性,开展了数据传输的错误检查与纠正,以及系统可靠性方面的研究;进行了PC机与下位机,以及下位机与下位机的软件编程、程序调试,实现了系统多机通信的数据传输。
关键词:
PC机;单片机;RS-485;数据传输;多机通信
Abstract
Multi-machinecommunicationshaveawiderangeofapplicationsinsmalllocalnetwork,suchasmanagementsysteminthecanteenforchargesofcreditcard,inthegasstationforrefueling,inthetransportofenergyforstopwatchtiming.Therefore,therearegoodprospectstocarryoutresearchinthisarea.
Thisarticleusespcmachineasahostcomputerandmultiple80C51single-chipsasslavemicrocomputerstocarryoutthestudyofcommunicationsbetweenPCandlowermachine,aswellaslowermachines.Thearticleincludesanoveralldesigningplan.IntheportofthePC,usingaS2-485,dedicatedRS232/485converterchip,convertstheRS-232levelintotheRS-485level.Intheportof80C51single-chip,MAX485willbeusedtoconvertTTLlevelintoRS-485level.Inthisway,communicationscanbeachievedbetweenPCandlowermachine,aswellaslowermachines.Inthebasisofhardwaredesign,thecommunicationalprotocoliscarriedout.Inordertoachievetheaccuracyofthedatatransmission,theerrorcheckingandcorrectionisimplemented,aswellasthestudyofreliability.Aftersoftwareprogrammingandprogramdebugging,thesystemcanachievedatatransmissionbetweenPCmachineandsingle-chip,aswellassingle-chips.
Keywords:
PCMachine;Single-chip;RS-485;DataTransmission;Multi-machineCommunication
第一章绪论
1.1引言
计算机技术、自动化技术和通信技术是现代信息科学技术的重要组成部分,是现代科学技术中的核心先导技术。
计算机控制是计算机技术与自动控制理论、自动化技术紧密结合并应用于实际的结果,它的应用领域非常广泛。
随着高性能计算机、网络技术及单片机技术的不断发展,不仅使计算机应用向网络化、综合化、集成化、智能化发展,而且使单片机的应用也从独立的单机控制向多机联网的方向发展,这就需要将各单机进行组网以进行相互通信,从简单的集中式控制逐渐向复杂的分布式形式发展,于是出现了以通信网络技术为基础的新的控制形式。
串行通信作为一种简单、廉价的通信方式在控制工程中得到了广泛的应用,其中RS-485总线型控制系统得到了推广和发展。
由PC机和多台单片机构成的多级网络通信系统已成为单片机技术发展的一个方向[1]。
1.2研究的背景及意义
单片机和计算机的不断发展使得单片机的应用也从独立的单机向网络发展,由计算机和单片机构成的多机网络系统已成为单片机技术发展的一个方向。
二者的结合,充分发挥了单片机在实时数据采集和数据管理上的优点。
单片机由于其具有体积小、功能强、价格低廉、开发应用方便、设计灵活和性能价格比高的特点,在计算机的网络通讯与数据传输、工业自动化过程的实时控制和数据处理等都有广泛地应用,已渗透到我们生活的各个领域。
然而,单片机对网络数据的处理方式不同于通用计算机系统,尤其有的单片机只提供8位的数据收发接口,在一定程度上阻碍了单片机在网络方面的应用。
因此,采用单片机技术与计算机网络技术相结合的办法,对单片机多机通信系统进行研究,在设计单片机网络的通信协议的基础上,系统网络拓扑结构采用总线型,网络接口电路采用端口转发的形式,实现了8位单片机多机通信,且PC机能弥补单片机数据处理能力弱和软硬件资源贫乏的缺陷。
因此,PC机(上位机)与各单片机(下位机)之间的通信就显得尤其重要。
在工业领域,主从式的设备监控管理模式应用越来越广泛。
一台上位机同时监控多台下位机(1:
N),相比一台上位机监控一台下位机(1:
1)的模式,更具有经济性、方便性和时效性。
在一对多的通信模式中,由于下位机与上位机、下位机与下位机之间的物理位置相距较远,运行环境复杂、干扰大,由于RS-232采用共模传输方式,只能实现十余米的短距离通信,且抗干扰能力不理想,因此使用RS-232串口通讯协议完全不能达到要求,易出现错码。
而通讯距离远(最长1200m),抗干扰能力强的RS-485总线通信模式由于具有简洁灵活、结构简单、价格低廉、软件易实现、性价比较高、传输距离较远、误码率较低、抗干扰能力强等优点而被广泛应用。
但RS-485总线存在自适应、自保护功能脆弱等缺点,如不注意一些细节的处理,常出现通信失败甚至系统瘫痪等故障,因此提高RS-485总线的运行可靠性至关重要[1]。
1.3论文的主要内容
本论文主要研究的内容是设计以PC机为主机,多个单片机为从机所构成的主从式结构网络。
为了方便读者快速地了解本论文的主要内容,在这里简要介绍一下论文的章节安排及内容。
第一章绪论。
主要介绍本论文研究的背景、意义。
第二章多机通信的基础。
主要介绍通信的一些基本概念以及方式,也对各种串行接口标准、MAX232和MAX485两种转换芯片作了一些讲解。
第三章系统方案设计。
主要介绍了一下通信的大致过程以及各个结构部分,并画出了原理框图。
第四章系统软件设计与调试。
首先介绍了通信原理,以及如何能实现它,并制定了通信协议,以及实行的差错控制。
接下来对上、下位机进行软件编程,并调试了程序。
第五章系统可靠性分析。
首先描述了可靠性的测评指标,然后在防止总线冲突,通信协议以及程序方面作了一些提高可靠性的讨论。
第六章总结。
第二章多机通信基础
2.1数据通信基础
2.1.1数据通信的概念
随着多微机系统的应用和微机网络的发展,通信功能越来越显得重要。
通信是指计算机与外界的信息交换,它既包括计算机与外部设备之间,也包括计算机和计算机之间的信息交换,所有这些信息交换都可称为数据通信。
数据通信方式有两种,即并行数据通信和串行数据通信。
通常根据信息传送的距离决定采用哪种通信方式。
并行数据通信是指数据的各位同时进行传送的通信方式,其优点是传送速率快;缺点是数据有多少位,就需要多少根传送线。
串行数据通信指数据是一位一位顺序传送的通信方式,外设和计算机间使用一根数据信号线,和按字节传输的并行通信相比,串行通信使用的传输线少,适用于长距离传输而速度要求不高的场合。
因此在数据通信、计算机网络以及分布式工业控制系统中,经常采用串行通信来交换数据和信息[2]。
2.1.2串行通信的传送方式
在串行通信中,数据通常是在二个站(点对点)之间进行传送,按照数据流的方向可分成三种传送模式:
全双工、半双工、单工。
下面就简单介绍这三种传送模式[2]。
(1)全双工(FullDuplex)
图2-1全双工通信
数据的发送和接收分别由两根可以在两个不同的站点同时发送和接收的传输线进行传送,通信双方都能在同一时刻进行发送和接收操作。
如图2-1所示。
(2)半双工(HalfDuplex)
使用同一根传输线,通信双方既可发送数据又可接收数据,但不能同时收发数据,如图2-2所示。
本文设计的RS-485通信接口芯片就是采用半双工的传送方式。
图2-2半双工通信
(3)单工(Simplex)
甲乙双方通信时只能单向传送数据,发送方和接收方固定。
如图2-3所示。
图2-3单工通信
2.1.3异步收发器
(1)UART(异步收发器)的组成
UART由三个部分组成:
接收器、发送器、控制器。
接收器——将接收到的串行码转换成并行码,并对其进行错误检测。
发送器——将并行码转换为一定数据格式的串行码。
控制器——用以接收CPU的控制信号、执行CPU所要求的操作,并输出状态信息和控制信息。
(2)异步串行通信中设立的出错标志。
①奇偶错误;
②帧错误(数据格式错);
③溢出错误(丢失错误、数据重叠)[3]。
2.1.4通信波特率的设置
波特率,即数据传送速率,表示每秒钟传送二进制代码的位数,它的单位是位/秒(b/s)。
波特率对于CPU与外界的通信是很重要的,它是衡量传输通道频宽的指标,它和传送数据的速率并不一致。
异步通信的传送速度在50~19200b/s之间。
常用于计算机到终端机和打印机之间的通信、无线电通信的数据发送等。
80C51单片机系统时钟绝大多数情况下都采用6MHz的石英晶体振荡器,其串行口的波特率是由其内部定时器TH1(8位)决定的,具体计算公式为[3]:
2.2异步串行通信接口标准
2.2.1RS-232C串行接口标准
RS-232C接口标准是在1969年由美国电气工业协会(EIA)联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定的用于串行通信的标准,所以RS-232C是PC机与通信工业中使用最早的一种串行接口标准。
在短距离、较低波特率串行通信中得到了广泛的应用。
RS-232C接口标准最初是为了远程通信连接数据终端设备DTE和数据通信设备DCE进行通行而设计的。
RS-232C中定义了20根信号线,使用25芯D型连接器(DB25)实现,其中除了用于全双工串行通信的两根信号线外,标准还定义了若干“握手线”。
实际应用中,这些“握手线”的连接不是必须的。
为了简化接口的线路连接,出现了简化的9芯D型连接器(DB9)。
图2-4为DB-9型连接器的引脚图,下面简要介绍一下9个引脚的功能。
(1)DCD数据载波检出(ReceiveLineSignalDetector)。
当本地DCE设备收到对方的DCE设备送来的载波信号时,该引脚有效,用于通知DTE准备接收,此时DCE将接收到的载波信号解调为数字信号后,经RXD线传送至DTE。
(2)RXD接收数据(ReceiveData)。
DTE通过该引脚接收DCE发送过来的串行数据。
(3)TXD发送数据(TransmittedData)。
串行数据通过该引脚从DTE发送至DCE。
(4)DTR数据终端准备好(DTEReady)。
该引脚有效时,表明数据终端处于可用状态,通常将其直接接至电源端,上电有效。
(5)GND信号地线。
该引脚为所有的电路提供参考电位。
(6)DSR数据装置就绪(DCEReady)。
该引脚有效时,表明MODEM处于可用状态,通常将其直接接至电源端,上电有效。
(7)RTS请求发送(RequesttoSend)。
用来表示DTE请求DCE发送数据,即当终端要发送数据时,该信号有效,向MODEM提出发送请求,此时MODEM进入发送状态。
(8)CTS允许发送(CleartoSend)。
用来表示DCE已准备好接收DTE发来的数据,是对请求发送信号RTS的相应信号。
当MODEM已准备好接收终端传来的数据时,该信号有效,通知终端开始发送数据。
(9)RI振铃提示(RingIndicator)。
当MODEM收到交换台送来的振铃呼叫信号时,该信号有效,用于通知终端已被呼叫。
图2-4DB9引脚图
与TTL,MOS逻辑电平完全不同,RS-232C其逻辑电平对地是对称的。
逻辑0电平规定为+5V~+15V之间,逻辑1电平为-5~-15V之间,因此为了使RS-232C能够和TTL器件相连接,就必须在RS-232C和TTL电路之间进行电平和逻辑关系的变换。
用RS-232C总线连接系统时,有近程通信方式和远程通信方式之分。
近程通信是指传输距离小于15米的通信,这时可以用RS-232C电缆直接连接,最少只需连接3根信号线即可。
由于RS-232C接口标准出现的较早难免有不足之处,主要有以下四点:
(1)接口的信号电平值较高,易损坏接口电路的芯片,又因为与TTL电平不兼容,使用电平转换电路才能与TTL电路连接。
(2)传输速率较低,在异步传输时,波特率最高为20Kbps。
(3)接口使用一根信号线和一根信号返回线而构成共地的传输形式,这种共地传输容易形成共模干扰,所以抗噪声干扰性弱。
(4)传输距离有限,最大传输距离也只能在15米左右[1]。
2.2.2RS-422串行接口标准
RS-422是在RS-232C以后发展起来的、平衡传送的电气标准,比起RS-232C非平衡的传送方式在电气指标上有了大幅度的提高。
RS-422标准全称是“平衡电压数字接口电路的电气特性”,它定义了接口电路的特性。
典型的RS-422是四线接口(实际上还有一根信号地线,共5根线)。
由于接收器采用高输入阻抗和发送驱动器比RS232更强的驱动能力,故允许在相同传输线上连接多个接收节点,最多可接10个节点。
即一个主设备(Master)其余为从设备(Salve),从设备之间不能通信,所以RS-422支持点对多的双向通信。
RS-422四线接口由于采用单独的发送和接收通道,因此不必控制数据方向,各装置之间任何必须的信号交换均可以按软件方式(XON/XOFF握手)或硬件方式(一对单独的双绞线)实现。
RS-422的最大传输距离为1200米,最大传输速率为10Mb/s。
其平衡双绞线的长度与传输速率成反比,在100kb/s速率以下,才可能达到最大传输距离。
只有在很短的距离下才能获得最高速率传输。
一般100米长的双绞线上所能获得的最大传输速率仅为1Mb/s。
RS-422需要一终接电阻,要求其阻值约等于传输电缆的特性阻抗,终接电阻接在传输电缆的最远端;一般在300米以下不需终接电阻[1]。
2.2.3RS-485串行接口标准
RS-485是从RS-422基础上发展而来的,所以RS-485许多电气规定与RS-422相仿。
该规范满足所有RS-422要求,而且比RS-422稳定性更强。
现从五个方面简单介绍如下:
(1)采用平衡发送和差分接收方式,即在发送端,驱动器将TTL电平信号转换成差分信号输出;在接收端,接收器将差分信号变成TTL电平,能有效的抑制共模干扰,提高信号传输的准确率。
(2)电气特性:
对于发送端,逻辑1以两线间的电压差为+(2~6)V表示;逻辑0以两线间的电压差为-(2~6)V表示。
对+接收端,A比B高200mV以上即认为是逻辑l,A比B低200mV以上即是逻辑0。
接口信号电平比RS-232降低了,不易损坏接口电路的芯片,且该电平与TTL电平兼容,可方便与TTL电路连接。
(3)共模输出电压在-7V~+12V之间,而RS-422在-7V~+7V之间。
RS-485接收器最小输入阻抗为12kΩ,RS-422是4kΩ,RS-485满足所有RS-422的规范,所以RS-485的驱动器可以用在RS-422网络中应用。
但RS-422驱动器并不完全适用于RS-485网络。
(4)最大传输速率为l0Mbps。
当波特率为1200bps时,最大传输距离理论上可达15千米。
平衡双绞线的长度与传输速率成反比,在100kbps速率以下,才可能使用规定最长的电缆长度。
RS-485需要2个终接电阻,接在传输总线的两端,其阻值要求等于传输电缆的特性阻抗,为120Ω。
在短距离传输时可不终接电阻,即一般在300米以下不终接电阻。
(5)采用二线与四线方式,二线制可实现真正的多点双向通信。
而采用四线连接时,只能有一个主(Master)设备,其余为从设备,它比RS-422有改进,无论四线还是二线连接方式总线上可连接多达32个设备。
RS-485总线挂接多台设备用于组网时,能实现点到多点及多点到多点的通信(多点到多点是指总线上所接的所有设备及上位机任意两台之间均能通信)。
连接在RS-485总线上的设备也要求具有相同的通信协议,且地址不能相同。
在不通信时,所有的设备处于接收状态,当需要发送数据时,串口才翻转为发送状态,以避免冲突。
在过去20年时间里,RS-485标准作为一种多点差分数据传输的电气规范,被应用在许多不同的领域,作为数据传输链路。
目前,在我国应用的现场网络中,RS-485半双工异步通信总线也是被各个研发机构广泛使用的数据通信总线。
但是基于在RS-485总线上任一时刻只能存在一个主机的特点,它往往应用在集中控制枢纽与分散控制单元之间[2]。
2.2.4RS-232,RS-422,RS-485通讯方式的区别
RS-232,RS-422,RS-485通讯方式的最主要的区别是RS-422和RS-485都采用平衡驱动和差分输入的方式,有效的消除了共模干扰,并且RS-485有更宽的共模输入范围(-7v~+12v);能实现一点对多点的通信;传输距离远;传输速率快。
如表2-1所示[2]。
表2-1RS-232,RS-422,RS-185的区别
标准
RS-232
RS-422
RS-485
工作方式
单端
差分
差分
节点数
1收1发
1发10收
1发32收
最大传输电缆长度
50英尺
4000英尺
4000英尺
最大传输速率
20kbps
10Mbps
10Mbps
最大驱动输出电压
+/-25V
-0.25V~+6V
-7V~+12V
发送器输出信号电平(负载最小值)
负载
+/-5V~+/-15V
±2.0V
±1.5V
发送器输出信号电平(空载最大值)
空载
+/-25V
±6V
±6V
发送器负载阻抗(Ω)
3k~7k
100
54
摆率(最大值)
30V/µS
N/A
N/A
接收器输入电压范围
±15V
-10V~+10V
-7V~+12V
接收器输入门限
±3V
±200mV
±200mV
接收器输入电阻(Ω)
3k~7k
4k(最小)
>=12k
发送器共模电压
---
-3V~+3V
-1V~+3V
接收器共模电压
---
-7V~+7V
-7V~+12V
2.3通信芯片的介绍
2.3.1RS-232通信芯片
PC机串口是RS232电平的,以正负电压来表示逻辑状态,而单片机的串口是TTL电平的,以高低电平表示逻辑状态。
因此,为了能够使计算机接口和终端的TTL器件连接,必须在RS232C与TTL电路之间进行电平和逻辑关系变换。
使用MAX232芯片可以将PC机串行口的RS-232C电平转换为TTL标准电平。
MAX232芯片内部有一个电源电压变换器,可以把输入的+5V电源电压变换成为RS-232C输出电平所需的士l0V电压。
所以,采用此芯片接口的串行通信系统只需单一的+5V电源就可以了。
MAX232芯片的引脚结构如图2-5所示:
图2-5MAX232引脚功能图
实际应用中,T1IN,T2IN可直接接TTL/CMOS电平的MCS-51单片机的串行发送端TxD;RIOUT,R2OUT可直接接TTL/CMOS电平的MCS-51单片机的串行接收端RxD;TIOUT,T2OUT可直接接PC机的RS-232串口的接收端RxD;R1IN,R2IN可直接PC机的RS-232串口的发送端TxD[1]。
2.3.2RS-485通信芯片
RS-485芯片作为一种常用的通讯接口器件,可以在许多半导体公司的“标准接口器件”栏目中“收发器”类元件中找到对应的型号。
所以在进行RS-485通讯芯片设计之前,有必要选择一款成功在市场上应用的相关芯片进行分析研究,以确保设计的成功性。
本设计选择的是MAXIM公司的MAX485,其内部结构如图2-6所示。
该芯片具有低功耗,单电源供电等优点,主要应用于低功耗RS-485收发器、低功耗RS-422收发器、RS232-485电平转换器和工业控制局域网等[4]。
图2-6MAX485芯片内部结构
其内部逻辑关系如表2-2所示:
表2-2MAX485逻辑关系
发送
/RE
DE
DI
A
B
×
H
H
H
L
×
H
L
L
H
×
L
×
Z
Z
接收
A-B
/RE
DE
RO
≥+0.2V
L
L
H
≤-0.2V
L
L
L
×
H
L
Z
MAX485芯片采用单一电源+5V工作,额定电流为300μA,采用半双工通讯方式。
它完成将TTL电平转换为RS-485电平的功能,将输入的TTL电平转换成差分电平输出。
其结构和引脚都非常简单,内部含有一个驱动器和接收器。
RO和DI端分别为接收器的输出和驱动器的输入端,与单片机连接时只需分别与单片机的RXD和TXD相连即可;RE和DE端分别为接收和发送的使能端,当RE为逻辑0时,器件处于接收状态;当DE为逻辑1时,器件处于发送状态,因为MAX485工作在半双工状态,所以只需用单片机的一个管脚控制这两个引脚即可;A端和B端分别为接收和发送的差分信号端,当A引脚的电平高于B时,代表发送的数据为1;当A的电平低于B端时,代表发送的数据为0。
在与单片机连接时接线非常简单。
只需要一个信号控制MAX485的接收和发送即可[2]。
第三章系统方案设计
3.1系统总体设计
本系统是由一台PC机为上位机,多台80C51单片机构成主从式结构网络作为下位机,以此来实现上位机与下位机,下位机与下位机之间信息的传输。
本系统通信过程如下:
上位PC机作为主机经过一定的程序后,先向下位机发出地址信号,各个下位机收到信息后,开中断去执行程序,与上位机发过来的地址相比较。
地址相同的那台