基于RS-485总线的PC与多单片机间的串行通信
数据发送数组
send_arr1(0)=BPQ_Address
……
send_arr7(0)=send_arr1(0)Xor send_arr2(0)…Xor send_arr6(6)
Output_Enable=False ; 关闭轮询
Open_Port ; 开串口
MSComm1.RTSEnable=False ; 置发送状态
MSComm1.Output=send_arr0 ; 发送
Choose_Delay ; 发送延时
MSComm1.Output=send_arr1
Choose_Delay
……
MSComm1.Output=sen_arr7
Choose_Delay
MSComm1.RTSEnable=True ; 置接收状态
Choose_Frame_delay ; 接收延时
Accept_arr=MSComm1.Input ; 数据接收数组
For j=Lbound(Accept_arr)To Ubound(Accept_arr)
If Ubound(Accept_arr)=7 Then
Buf(j)=buf(j)+Str(Accept_arr(j))
由于程序较长,对程序其它部分不详细叙述,这里只列几个注意点:
(1)由于采用半双工传输方式,开始发送前要禁止接受。发送结束后要先关闭发送再开启接收,以保证数据传输的正确性。
(2)发送以字节为单位,每个字节间要考虑延时,以免因溢出而丢失数据。延时时间主要取决于传输时所确定的波特率。
(3)接收数据也要考虑延时,以等待下位机将一个单位的数据全部发给上位机。
3.2 下位机通信软件的设计[2]
本系统中的单片机采用的是ATMEL公司89C51,这是在国内应用相当广泛的一款单片机,程序用C51来编写,从实时性角度来考虑,下位机的通信方式采用中断方式。这样下位机程序就包括了下位机主程序和下位机中断服务程序。主程序用于定时器T1初始化、串行口初始化和中断初始化。中断服务程序用于对上位机的通信。主程序和中断服务程序的框图如图3、图4所示。由于篇幅所限,程序这里就不做介绍。
图(3) 下位机主程序框图
图(4)下位机中断服务程序框图
4 结束语
本文设计并实现了一种应用于油田钻井滚动轴承的振动信号测控系统。该系统采用PC与多单片机之间的串行通信实现测控,采用RS-485总线标准,半双工传输方式。上位机采用Windows环境下VB6.0开发,编程简单,界面良好,维护方便;下位机利用单片机内自带的USART通信接口,很好的实现异步串行通信。实验表明,该方法对于工作环境比较恶劣的钻井油田滚动轴承的振动信号的采集与传输,达到了实际要求,为滚动轴承故障检测提供了方便而有效的振动信号。
参考文献
基金号:江苏省高校自然科学基金资助项目(03KJB510025)
1 范逸之,陈立元 Visual Basic与RS-232串行通信控制 北京:中国青年出版社 2002
2 石东海 单片机数据通信技术从入门到精通 西安:西安电子出版社 2002
3 ADAM 4000 Data Acquisition Modules User’s Manual Advantech Co.Ltd 1999
4 王金成 王旭 一种基于RS-485总线的远程通信系统软件实现 《微计算机信息》 2001年17卷第9期
- 基于RS-485总线的水轮机温度监测系统(12-20)
- RS-485总线通信故障的处理(12-19)
- RS-485总线通信故障处理方法(12-16)
- RS-485总线布线规则及方法——(RS485总线系统应用之4)(12-15)
- 基于RS-485总线的温湿度监测系统——(RS485总线系统应用之5)(12-15)
- RS-485总线的可靠性(12-14)