来源:网络转载更新时间:2020-12-15 16:24:10点击次数:2665次
1.前言
VB作为Windows环境下的可视化编程语言开发系统。不但提供了良好的界面设计能力,而且在微机串口通信方面也有很强的功能。采用VB开发WinodW8环境下的数据采集和工业控制应用软件,其界面设计简洁。编程工作量较小,使用十分方便。
下面给出实时数据采集应用实例。通过对“秦港二公司双架皮带秤"双通道实时检测仪表数据通讯系统进行分析,解决了数据实时处理和数据解压问题,给出了一种开发微机通过串口对工业仪表进行实时数据采集程序的新方法。
2系统的总体结构图
系统的总体结构如图1所示.
3 皮带秤仪表通讯协议及数据格式
该实时检测仪表接两路高精度压力传感器,用于测量前后两秤的置量.该仪表带有一个9针的RS一232C串口,能与微机进行串口数据通讯,实时传送检测数据,通过微机软件处理可实现工业实时监控.
该仪表的串口数据通讯协议是·数据传输速率为9600bps,1位开始位,8位数据位·1位停止位,无奇偶校验位.仪表数据传输每帧数据的格式如下。
开始标志l位,为二进制常数d7HI秤号2位,16进制,表示不同的秤l以后的数据为10进制包括总累计量/单次累计量8位t前通道总累计量/前通道单次累计量8位,盾通道总累计量/后通道单次累计量8位-流量5位I故障号1位,工作状态l位I运行状态1位,自检误差l位。
4主要技术及算法
(1)用MSComm控件实现微机串口的数据通MSComm控件是Microsoft提供的扩展控件,用于支持VB程序对串口的访问.该控制“隐藏”了大部分串口通讯的底层运行过程和许多烦琐的处理过程,同时支持查询方法和事件驱动通讯的机制。事件驱动通讯是交互方式处理串口事务的一种非常有效的方法,特别适合Windows程序的编写.在串口通讯过程中,当发送数据、收秤秤田l系统总体结构圈到数据或产生传输错误时.触发MSComm控件的OnComm事件。然后可以通过判断Corn.mEvent属性值获得事件类型,再根据事件类型进行相应数据处理。因此用其实现微机串口的数据通讯可以用较少的程序代码轻松实现串口的访问和数据通讯。
(2)采用MSComm事件驱动方式采集数据
MSComm串口控件数据接收方式有以下两种t
①在OnComm事件中接收数据.这种方式能充分MSComm控件的特性.OnComm事件还可以检查和处理通讯错误·可以通过检查CommEvent属性的值来查询事件和错误.对于不定长数据以及对数据进行处理比较复杂的情况,此法不是很方便.
②定时器轮循法采集数据。对于数据包方式收发数据以及不需实时响应情况,用轮循法更好些.实际上轮循法最大的好处在于集中处理数据而且不太占用CPU。轮循法要注意定时采集的时间片段大小I这里用二进制收发模式I使属性RThreshold、SThreahold为0,屏蔽On.Comm事件。
③本实时数据采集处理程序采用MSComm事件驱动方式。MSComm--OnComm的事件处理程序只处理comEvReceive事件。
(3)接收数据模式设置设置
MSComm控件的接收数据模式采用=进制方式.即InputMode=comlnput ModeBinary,但用Input属性读取数据时,不能直接赋值给Byte类型变量,只能通过先赋值给一个Variant类型变量,返回一个二进制数据的数组,再转换保存到Byte类型数变量中。
(4)添加循环等待处理
仪表通讯传输速率为9600bps。则最快速度为1.0417ms发送一个字节·仪表每秒发送250个字节.平均4.0ms发送一个字节。在查询方式或连续读取串口数据时要在程序中添加循环等待程序,等待接收缓冲区收到足够的宇节才能进行数据处理.
(5)数据实时性处理
仪表定时发送字节数据,微机只有收到1完整帧数据后,才能进行数据处理.如果微机在下l帧数据接收前能将数据计算处理完毕,则接收缓冲区内只会保存有一帧效据,不会存有两帧以上数据,接收缓冲区的大小不会影响实时监测效果(接收缓冲区大于等于1完整帧长度),这时完全可以实现实时监测或实时控制·如果微机在规定的时间内不能将数据计算处理完毕,接收缓冲区设置的又很大,在数据计算处理完毕前,接收缓冲区内就会保存有两帧以上数据,254而且一次工作时间越长,缀冲区内滞留数据帧就越多.数据采集和数据处理之间产生逐渐增大的额外时间差。当接收缓冲区充满后,时间差不再增大,固定在某一值,部分数据因不能及时采集到接收缓冲区中,数据产生丢失现象,真实工作情况就会和微机处理结果产生较大的时间差,对实时监测和实时控制很不利,这种情况下接收缓冲区的大小就会影响实时监测效果,所以接收缓冲区设置不能过大,让部分数据丢失,以保证数据处理的实时性。
本文源于网络转载,如有侵权,请联系删除
×