基于C8051F020与MXA2500GL传感器的振动信号分布式检测方法
![](http://m.amcfsurvey.com/editerupload/fetch/20130823/161160_2_0.jpg)
图2 分布式检测系统的硬件架构
多机通信协议
C8051F020单片机具有适于多机通信的特殊功能,即方式2(3)。在这2个方式里,接收的第9位进入RB8,然后为停止位。串行口可程控为:当接收到停止位,只有当RB8=1时才产生串行口中断。这个特性可由置位SCON中的SM2控制。多机通信中使用这种特性的方法是:当主机要发送一个数据块给几个从机之一时,它先发送一个目标从机的地址字节,地址字节第9位为1而数据字节第9位为0。当SM2=1时,数据字节不会中断任何从机,然而,地址字节会中断所有从机,这样每一个从机可检查接收到的地址,看是否为寻址自己。被寻址的从机将SM2位清0,准备接收传送过来的数据字节,没被寻址的从机保持SM2为置位状态,继续处理其它工作。C8051F020单片机方式3下的信息桢格式见图3。
![](http://m.amcfsurvey.com/editerupload/fetch/20130823/161160_2_1.jpg)
图3 C8051F020单片机在方式3下的信息桢格式
PC机的异步串行通信口是采用通用异步接收发送器(简称UART)为核心构成的。UART的产品型号很多,大多采用Ins8250芯片。对UART的编程实际上是对其内部寄存器的操作。UART内部寄存器共有10个。编程时首先要确定串行通信的数据格式,这是通过将选定的数据格式参数写入到线路控制寄存器LCR来完成的,接下来需要将波特率因子写入到波特率因子寄存器来确定双方传输波特率,再通过读线路状态寄存器LSR来判断芯片是否就绪或有错等。通信线路控制寄存器LCR的格式如图4所示。
![](http://m.amcfsurvey.com/editerupload/fetch/20130823/161160_2_2.jpg)
图4 通信线路控制寄存器LCR
通过将参数字节写入到线路控制寄存器,可以将UART编程为这样的串行通信数据格式:1位起始位,8位数据位,1位奇偶校验位,1位停止位,1帧共11位。既然能够在PC机上实现1帧11位的数据格式,并且改变线路控制寄存器的D5、D4、D3位的值能将奇偶位设定为“恒1”或“恒0”,则若在发送地址帧时将奇偶位设定为“恒1”,在发送数据位时将奇偶位设定为“恒0”,便可以在PC机上模拟51系列单片机的多机通信持点,从而直接利用这种特点实现它们之间的主从分布式多机通信。
主机和从机遵循主从原则,主机用呼叫方式选择从机,数据在主机和从机之间双向传递,各从机之间的相互通信需通过主机作为中介。主从机之间还应传送一些供它们识别的命令和状态字,如以00H表示主机发送从机接收命令,以01H表示从机发送主机接收命令等。
PC主机通信程序的实现方法
对PC机UART的编程是主机通信程序的核心。一般可以通过两种方式实现对UART的操作。一种是直接访问底层地址实现对LCR、LSR、波特率因子寄存器的操作,这种方法只适用于Windows9X.在WindowsNT环境下系统禁止用户程序直接访问硬件和物理地址,因此该方法不可取。具体过程是通过调用标准通信函数inp()、outp()实现的。另一种方式是通过通信控件或WindowsAPI函数间接对LCR、LSR、波特率因子寄存器进行相关操作。因此本系统也使用MSComm控件,而WindowsAPI函数更适合在多现程领域应用。
结束语
实践证明基于C8051F020单片机与MXA2500GL传感器的振动信号分布式检测系统性能可靠,大大的节约了成本,因此该系统在汽车整车及零部件的测试与诊断过程极具推广价值。本文引用地址://m.amcfsurvey.com/article/161160.htm
评论