安防之家讯:3实时串行通讯程序设计3.1通讯协议(1)一桢数据由1位起始位,8位数据位、1位校验位、1位停止位共11位组成。(2)波特率为9600bps。电动装置测试系统的单片机的串口选用UART0进行数据的发送和接收,为了得到准确的波特率,ARM单片机采用振荡频率为1110592MHz的晶振。PC机串口波特率通过VB通讯控件MSComm的Setting属性设置,为保证数据传输的准确性,两者的波特率必须一致。(3)系统采用异步通讯方式,上位机通过令牌传递总线(token-passingbus)方式与远程单元进行通讯〔2〕。PC机发送的信息为固定4个字节。第1个字节和第2个字节分别为起始标志符和远程单元的具体地址号,第3个字节表示发送的是令牌还是命令,第4个字节为结束标志符。(4)远程单元接收到令牌后,对照令牌的地址号与本单元地址进行判断,得知令牌是本单元的,此时总线处于接收数据状态。此单元开始发送信息,发送的信息共158个字节。第1个字节和第2个字节分别表示起始标志符和命令符,第3个字节表示数据个数,第4个到第157个字节表示采集的测试数据,第158个字节表示结束标志符。如果地址不符,则将令牌转发到下一单元〔3〕。其通讯方式如图3所示。3.2远程单片机控制系统的串行通讯程序设计远程ARM单片机采用中断方式进行数据接收,基于软件ADS112编程与上位机进行通讯,上位机通讯子程序流程图以及下位机中断子程序流程图分别如图4和图5所示。控制中心上位PC机始终在循环发送令牌,当远程单元接收到与本机地址相同的令牌时,置接受数据标志,接收到自己的令牌后,远程单元开始上传数据到上位PC机,与此同时PC机停止发送令牌并处于接收数据状态,等到接收数据完毕并检验数据合格后发送确认命令到此远程单元,如果没收到数据或数据不合格发送错误标志到此远程单元。如果收到的令牌与本机地址不同时,程序返回中断入口处,继续执行其它操作。这样可保证远程单元把数据准确地发送到上位机PC机。3.3上位PC机串行通讯程序设计方法上位机利用VB610进行编程,用VB610开发串行通讯程序普遍采用两种方法:一种是利用Windows的API函数;另一种是采用VB的通讯控件MSComm。利用API函数编写串行通讯程序较为复杂,需要调用许多繁琐的API函数,而VB610的MSComm通讯控件提供了标准的事件处理函数、事件和方法,用户不必了解通信过程中的底层操作和API函数〔4〕,从而比较容易、高效的实现了串口通信。控件提供了两种功能完善的串口数据接收和发送功能:一种是查询法,通过Com2mEvent的值来轮询(polling)事件和通讯状态,可以使用定时器和DO.Loop程序来实现;另一种是事件驱动法(Event-driven),利用MSComm控件OnComm事件来捕获串口通讯错误或事件,并在OnComm事件中编写程序进行相应的处理〔5〕。本软件系统采用了定时器来发送令牌以及接收远程单片机的回执信息,使PC机作出更快的反应。软件采用定时器Timer1控件来实现令牌的循环发送。其中设置定时器响应一次的时间为10ms(Timer11Internal=10)。3.4下位机ARM2210系列单片机串行通讯程序设计方法下位机利用软件ADS112进行编程,此软件是专为ARM单片机开发的一种软件,其语言类似于C语言,有很好的应用性。4结语该系统应用在对远程设备的在线监测,其通讯网络部分运行平稳,数据传输误码率低,传输速度符合要求,效率高,操作简单,组网方便,满足生产现场的数据检测和控制要求。该系统可广泛应用于高精度的工业测控和数据采集等领域中。安防之家专注于各种
家居的安防,
监控,
防盗,安防监控,安防器材,安防设备的新闻资讯和O2O电商导购服务,敬请登陆安防之家:http://anfang.jc68.com/