原创 基于RS-485总线的PC与多单片机间的串行通信

2009-8-13 19:29 1827 6 6 分类: MCU/ 嵌入式

0  前言

v F!J0t)T,J44606电子园51单片机学习网,?:F0Ps P

    单片机因其优越的性价比和灵活的功能配置而被广泛的应用于测控领域。而PC则因为丰富的软、硬件资源,被广泛应用于网络监控系统中。这就是一台PC与多台单片机所组成的主从式网络测控系统。串行通信是计算机和外部设备进行数据交换的重要渠道,由于其成本低,性能稳定并遵循统一的标准,因而在工程中被广泛应用。本文以华东石油局的一台油田钻井的滚动轴承信号采集系统为例,讨论一种基于串行通信标准的测控系统的通信协议及其具体的软、硬件实现。在本系统中,上位机以PC和Windows操作系统为软、硬件资源;下位机采用ATMEL公司89C51,总线标准采用的是测控系统常用的RS-485。电子园51单片机学习网4a.bZU&u\$U



3U }mQ1A I#`sl446061  通信系统的硬件设计电子园51单片机学习网;Y%rsD8a'a

电子园51单片机学习网.I*E8c#])p"Hk

尽管RS-232有些缺点,但在两台短距离设备间的短距离信息传输时,最通用的还是RS-232。但对于多台设备的长距离传输,它就很难实现。而RS-485是一个多引出线接口,这个接口可以有多个驱动器和接收器,可以实现一台PC和多台单片机之间的串行通信;而且RS-485的最长的传输距离为1200m,适合中距离的传输。本文针对油田钻井的滚动轴承信号采集及传输,根据工地实际工作环境,采用RS-485通信接口。电子园51单片机学习网(A7WUF.ax


:q'~&}*KMY446061.1 PC和RS-485总线的接口[3]电子园51单片机学习网gr p6Pw


}7l]/U~,S44606该接口的主要功能是完成RS-232到RS-485的转变,完成这个功能的芯片很多,比如MAX-485,我们的系统采用的是ADAM公司的ADAM4250,RS-232/RS-485转换器,结构如图(1)所示:电子园51单片机学习网'wr-yz{zj(~

电子园51单片机学习网sH^,|:a Gb uJ]


 电子园51单片机学习网j~%H @1tS:J9c+[


电子园51单片机学习网1V`3k~;EM'|

点击看大图           电子园51单片机学习网ia~&_/_\

电子园51单片机学习网 j[6G%X.V&TI

                                  图1  ADAM4250电子园51单片机学习网7{9`y[6y!U

电子园51单片机学习网7rNR(r/B2E8^U


 

C&OJ'?!C*t44606

TT-H0nEO}44606 1.2  89c51和RS-485总线的接口[1],[4]

[_6J!y2T4|X;u44606

e(]#t;bZ&tN-v44606    电子园51单片机学习网z ?6Uxa7qoc)a


S{jg]+y?+J.X SA44606  由于MAX48x/49x系列收发器组成的差分平衡系统抗干扰能力强,接收器可检测到200mV的信号,传输的数据可以在千米以外得到恢复,特别适合远距离通信,可以组成标准的通信网络。本系统采用MAX487接口芯片作为收发器,由于它的输入阻抗是标准接收器的4倍,因此最多可以挂128个接收器。电子园51单片机学习网,NJ4c,H(Sq3XN



5N]Kw [fy5x&s446061.3 系统的总体连接电子园51单片机学习网J/E&v\8t})JB


8rO-Y:k |!_ e44606    本系统采用一主多从的总线型连接方式,如图2所示。为了消除反射,吸收噪音,采用2个120 的匹配电阻R1和R2连在总线的两端。其中n不大于128。电子园51单片机学习网#D3x.TDs

电子园51单片机学习网S MMs;v*}g%df6i|

6136_200904061354532G6OT.gif 

C XRG8zQ}5q44606

"Z-X b]3s4h`44606                           图2    系统总体连接图

k3V1Q GblI/|&i44606

$@_9{N/q*nE44606
 电子园51单片机学习网,\1wzf!}(p"a4F


电子园51单片机学习网m$mJXqjT4K]+bx$J

2  通信协议的设计电子园51单片机学习网8z.U5F.D-o n

电子园51单片机学习网 V_!cT8`_h+H3V

   由于RS-485通信是一种半双工通信,发送和接受共用同一物理通道,在任意时刻只允许一台单片机处于发送状态,因此要求应答的单片机必须在侦听到总线上呼叫信号已经发送完毕,并且在没有其他单片机应答信号的情况下才能应答。如果在时序上配合不好,就会发生总线冲突,使整个系统的通信瘫痪,无法正常工作。上位机与下位机之间如何进行数据传输,怎么提高通信的效率和可靠性,以及对通信过程中的故障处理,帧格式的约定,都需要一套详尽的通信协议。RS-485总线只制定了物理层电气标准,对上层通信协议没有规定。这给设计者提供了很大的灵活性。一套完整的通信协议既要求结构简单,功能完备,又要求具有可扩充性与兼容性,并且尽量标准化。本系统的协议就是从这几个方面考虑的,它主要包括以下几个部分:

YX0Wwgm8YW44606

2L:I%FAA.yeDt446062.1 上下位机间的通信过程

k#q3},n5KpIU9S%J44606 电子园51单片机学习网dR9G/P"^2WQ

(1)通信均有上位机发起,下位机不主动申请通信;

bPJ0w&E*B@b44606 电子园51单片机学习网 g:F W,i+f3d~q Jy

(2)当处于轮询状态时,上位机依据下位机地址,定时向下位机发送呼叫指令。此时,每台下位机都中断接受并判断,地址不相符的下位机中断返回,执行其他下位机任务;反之则把本机地址及其状态作为应答信号发送给上位机。上位机接收到应答信号后,可以作进一步的处理。电子园51单片机学习网|{W6j?"]


*ueI,e@1x2CK~!W446062.2 通信协议

e7K|+w:C44606

]_b ]#u3K44606本系统采用比较简单的通信协议:PC机需要与单片机通信时,首先发送一个字节的信号,以16进制表示为AAH,单片机接收到AAH后,就将需要发送的数据连续地向PC机发送;PC机与单片机通信结束时,向单片机发送一个字节的信号,以16进制表示为55H,结束数据发送。单片机发送给PC机的数据格式为:电子园51单片机学习网MzP`0hs5x2kJV


x;t7Kc X$k2g!L44606
 

@z*zS4G[44606


\ O+T%IeGw8m-v@1?44606开始码

|rAL.w4Nb(JP.y4d44606
电子园51单片机学习网Q,`(Q![0Lml

数据体电子园51单片机学习网E8X8g5[bZ_


mR-M9IQ g+BB&R44606校验和

-`#v+T*h E)_7r44606
电子园51单片机学习网d_Ks[4Q(f;F8m

结束码

;}3]1RQ^n*mLq}44606
电子园51单片机学习网+]xW4f?e:AnM'j

00H

|r%myT]"D(i44606
电子园51单片机学习网jQDo.^/r,iGO-dh

DATA[0]DATA[1]…DATA[N-1]电子园51单片机学习网"b(W7dsX2q(V"z7J

电子园51单片机学习网[#n.yJ-vhn7Ol0[

DATASUM电子园51单片机学习网8mT6d4`js]7p

电子园51单片机学习网p0i%N:b2o K [^

FFH电子园51单片机学习网6~8S K-Z+b

电子园51单片机学习网7\| pq)xJ


 

+K)p$z I,wMzxL44606
电子园51单片机学习网7{[;tzlvcP,j9L

3 通信系统的软件设计

+g ~kSa9ndSd44606

'}e9M4l_"W5D"MA{446063.1 上位机通信软件设计

!@ Y:A3L {Xa44606 电子园51单片机学习网(G/E$HYu(j^E

  本系统的上位机软件用VB6.0实现,利用VB6.0提供的MSComm通信控件,可以方便的访问串口,实现数据的接收和发送。由于本系统用一台上位机监控多台下位机,所以上位机监控界面主要包括3个:

p1x j8Wu g44606 电子园51单片机学习网k/N bqm;m](@6K

(1)轮询界面,即主监控界面。可以监测到下位机的状态(运行,停机,故障)。考虑到通用型,下位机的台数可以根据实际需要添加或删除,最多可带128台下位机。本系统默认为50台。

;S EqNy)R\44606

9^$yT Hi`-Dq#W44606(2)下位机运行监视和控制界面。主要是对某一台定位控制器进行状态监视和位置给定。电子园51单片机学习网 ]c4} ^'Gtj

电子园51单片机学习网;V"U1pGO&A o7u a

(3)下位机内部参数设定界面。可以根据实际需要对某一台定位控制器的运行参数进行修改。

H,zJk7e44606 电子园51单片机学习网sgh!KcP3SH

     开发通信程序的关键是发送和接受数据。下面给出上位机中数据发送和接收的部分程序:电子园51单片机学习网 M7[1_c$c-|#r

电子园51单片机学习网 B oz8bo


 

5i{hn o lhA44606

q |7z`\/jD'j44606     MSComml.Settings=Settings               ; 串口的波特率设置电子园51单片机学习网7_+y2`"t-S9io[5TW3WU,k


^6@Ef8?+p_ q44606     send_arr0(0)=&H02                       ; 数据发送数组电子园51单片机学习网L4[9S)~d*U/l#a


D9nVhD+rN44606     send_arr1(0)=BPQ_Address电子园51单片机学习网g^a@y N


2H f;S!q,l l*]1B44606     ……电子园51单片机学习网Yj)ZM%w$bqg*f]0?V


;J Ng{I@6};|+V$f44606     send_arr7(0)=send_arr1(0)Xor send_arr2(0)…Xor send_arr6(6)

;l7H+sW5Th{44606 电子园51单片机学习网q!pBC ],iV7t

     Output_Enable=False                     ; 关闭轮询电子园51单片机学习网+nsLU\x;fJ


.@/@O.JR0d ~*Tg44606     Open_Port                               ; 开串口电子园51单片机学习网O? I \` F&g,X A

电子园51单片机学习网5i)w`yr

     MSComm1.RTSEnable=False                 ; 置发送状态电子园51单片机学习网&F Y(Jwz6b


U&k*q V%Ae-j0S"OH%N44606     MSComm1.Output=send_arr0                ; 发送电子园51单片机学习网`h*]/c*}

电子园51单片机学习网:m x'|!`|;[j

     Choose_Delay                            ; 发送延时电子园51单片机学习网)wKR*n,vg.CXh

电子园51单片机学习网1z#^hVI `4aF

     MSComm1.Output=send_arr1

'Q7Wy3So*l#~[1k _t44606

_G+}f$n;b44606     Choose_Delay

D_mp.ut,X Q,^44606 电子园51单片机学习网2z kb5]ew?u7D

     ……电子园51单片机学习网|\ih(?sC mB z

电子园51单片机学习网Yy/TM.C"B~G

     MSComm1.Output=sen_arr7

5I4B:D2G.}+eS:~[7c44606 电子园51单片机学习网 X!v Il?$C

     Choose_Delay电子园51单片机学习网.B a@b ZT v&^M


#RbM]5m-L8Q44606     MSComm1.RTSEnable=True                  ; 置接收状态电子园51单片机学习网)F'O3~Y1R#|


t P S1VTS@44606     Choose_Frame_delay                      ; 接收延时电子园51单片机学习网wFqz k4wS'q^

电子园51单片机学习网.{I*N K h?5e\"~D%E

     Accept_arr=MSComm1.Input                ; 数据接收数组电子园51单片机学习网pV V!kfv\~$T}F


0iLv aZj44606     For j="Lbound"(Accept_arr)To Ubound(Accept_arr)

e0mv-Qj/i/}44606

;k RL#v7o4e'iK7P:eb44606        If Ubound(Accept_arr)=7 Then

^$XX#M m4lHZ(L44606

wkzB$J&Y {9M44606            Buf(j)=buf(j)+Str(Accept_arr(j))电子园51单片机学习网SZP@r{U^J]

电子园51单片机学习网 y8Lw"|1} ?N G

 电子园51单片机学习网k3|9h'H'fP H/`0R

电子园51单片机学习网\*h'co q!i


 电子园51单片机学习网T'B"R{1O1c



Jxv1b$|4}7_g44606由于程序较长,对程序其它部分不详细叙述,这里只列几个注意点:电子园51单片机学习网/HSC-`,r


a| hd\Y k'}!@44606(1)由于采用半双工传输方式,开始发送前要禁止接受。发送结束后要先关闭发送再开启接收,以保证数据传输的正确性。

k"IxRV|e`)[s44606

]ra;D%xU2H44606(2)发送以字节为单位,每个字节间要考虑延时,以免因溢出而丢失数据。延时时间主要取决于传输时所确定的波特率。

9]1~lO k44606

-\e&rnk44606(3)接收数据也要考虑延时,以等待下位机将一个单位的数据全部发给上位机。

tP7[2\)}OE0`5I44606

/w:\(\,qFU l446063.2 下位机通信软件的设计[2]电子园51单片机学习网J/~lf f*S&]k+m

电子园51单片机学习网\ _*kONcF;h

本系统中的单片机采用的是ATMEL公司89C51,这是在国内应用相当广泛的一款单片机,程序用C51来编写,从实时性角度来考虑,下位机的通信方式采用中断方式。这样下位机程序就包括了下位机主程序和下位机中断服务程序。主程序用于定时器T1初始化、串行口初始化和中断初始化。中断服务程序用于对上位机的通信。主程序和中断服务程序的框图如图3、图4所示。由于篇幅所限,程序这里就不做介绍。

+cMM2~J*p:@i4cdNg44606
电子园51单片机学习网 gR$m(HS,YQ3J D N7Sa

6136_200904061354533Y0mM.gif

AC'_Y xz+Qo r44606

*L!y4p8Ts\*w;W44606 图(3) 下位机主程序框图                

P R#S;ie Ft$MH&i44606

Ho)`^^Y44606 电子园51单片机学习网PdK ol/t


}Qi6a|G&B|446066136_200904061354534bAUJ.gif电子园51单片机学习网8_P3Hw5iz

电子园51单片机学习网"ePY} [

    图(4)  下位机中断服务程序框图无线SOC开发平台499元 S3C44B0 ARM7开发板378元 S3C2410 ARM9开发板780元 AT91SAM7S64 ARM7 单片机开发板之王——ELITE-I单片机学习开发系统1200元 S3C2410 ARM9开发板(II) 950元 EPM1270T144C CPLD开发板  480元电子园51单片机学习网G\ H7c dE$I,lE(e"C
4  结束语

1H``q@NB44606

电子园51单片机学习网(M\QJe;gs

   本文设计并实现了一种应用于油田钻井滚动轴承的振动信号测控系统。该系统采用PC与多单片机之间的串行通信实现测控,采用RS-485总线标准,半双工传输方式。上位机采用Windows环境 下VB6.0开发,编程简单,界面良好,维护方便;下位机利用单片机内自带的USART通信接口,很好的实现异步串行通信。实验表明,该方法对于工作环境比较恶劣的钻井油田滚动轴承的振动信号的采集与传输,达到了实际要求,为滚动轴承故障检测提供了方便而有效的振动信号。

#rzYbj u)l Ik44606

p*|:{~(y44606 参考文献电子园51单片机学习网B@?y'cI*v/Y



B qvf9qrE,a1E+\44606基金号:江苏省高校自然科学基金资助项目(03KJB510025)

muViJ{1g44606 电子园51单片机学习网#W\%X[XrQ/m4|+M

1  范逸之,陈立元  Visual Basic与RS-232串行通信控制  北京:中国青年出版社   2002电子园51单片机学习网H1U~ pk*J`

电子园51单片机学习网$QD![_R X7?+^w&L

2  石东海  单片机数据通信技术从入门到精通  西安:西安电子出版社  2002

[+L2]H6w:?-S?44606

(Dj-Yn^6m-Y446063  ADAM 4000 Data Acquisition Modules User’s Manual     Advantech Co.Ltd  1999         电子园51单片机学习网9Y up,fc3k


*NM8Cy7I44606
4  王金成  王旭  一种基于RS-485总线的远程通信系统软件实现  《微计算机信息》 2001年17卷第9期 

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
6
关闭 站长推荐上一条 /3 下一条