五、用VB6.0实现对流量计积算仪表的串行通讯控制:
在Windows9X VB6.0编程环境下,新建工程引用MSComm通讯控件,在窗体中至少添加以下几个基本控件: 1、 1个MSComm控件,控制名为MSComm1,用于软件对串口的访问; 2、 两个定时器控件,名为(TimPeriodic和TimNonPeriodic),TimPericodic 用于使PC机定时向各仪表发送周期性命令,使其定时回传实时数据;TimNonPeridic 用于控制两次非周期性指令传送之间的时间间隔; 3、 1个非周期性命令发送按钮CmdNonPeriodec,用于非周期性指令的传送启动; 4、若干个用于显示仪表参数的文本框和设置仪表参数的对话框; 监控软件的核心是如何读取和处理现场仪表的实时数据,编程时应注意以下几个问题: ①、 主机采用轮询方式访问从机,从机应答,到发送完数据有一定的时间间隔,一般设定为2—3秒; ②、 由于采用一个串口和半双工通讯方式,在发送非周期性命令时,必须停止轮询,否则会发生数据冲突; ③、 主机呼叫从机无应答时,要有报警设置,提示通讯出错,一般设置3次呼叫无应答后,即可停止呼叫,提示通讯出错,跳过此从机继续执行; ④、 当从机故障或停运时,应可自动从轮询链中删除,以节省轮询时间,并在显示窗口提示,同时写入故障记录。 下面给出给出读取和处理现场仪表数据时的源代码,供参考: 5.1 窗体中各控件初始设置: Sub Form-load() MSComm1,CommPort=2
| //选用COM2口通讯 | MSComm1,Setting=“9600,N,8,1
| //设置通讯参数 | MSComm1,Inputlen=0
| //Input将读取缓冲区全部内容 | MSComm1,InputlenSize=1024
| //设置接收缓冲区大小 | MSComm1,PortOpen=True
| n //打开通讯端口 | MSComm1,InBufferCount=0
| //清除发送缓冲区
| | MSComm.OutbufferCount=0 | //清除接收缓冲区
| | TimPeriodic.Interal=3000 | //设置3秒定时间间隔
| | TimNoPeriodic.Interal=500 | //设置0.5秒定时间间隔
| | CmdPressed=False | //命令按钮在未激活状态
| | DuringPeriodic=False | //周期命令传输未开始
| | DuringNonPeriodic=False | //非周期命令传输未开始
| End Sub
| |
5.2 周期性命令的发送: Sub CmdNomPeriodic_click()
| | If DuringNonPeriodic=True Then Exit Sub
| //非周期命令数据传送未结束退出过程 | DuringPeriodic=True
| //周期命令准许发送 | Call Send Date (Periodic_COMMAND)
| //发送周期性命令 | MSComm1.Rthreshold=R_PERIOPIE_BYTE
| //接收字节后引发OnCommgk 事件 | | End Sub | |
5.3 非周期命令的发送 Sub CmdNomPeriodic_click()
| | CmdPressed=true
| //允许发送 | End Sub
| | Sub TimNoPeriodic_Timer()
| //发送周期性命令 | If DuringPeriodic=True or CmdPressed=False Then Exit Sub
| //周期性命令传送未结束或本次传送来被允许时,退出本过程 | CmdPressed=false
| //发送命令按钮恢复禁止 | | Call SendDate(NoPeriodic_COMMAND) | //发送命令
| | MSComm1.Rthreshold=R_NONPERIODIC_BYTE | //接收字节后引发Oncomm事件 |
5.4 数据的接收和处理: 流量计积算仪表回传数据时即可在主机上引发OnComm()事件,在此事件处理函数中,首先判断接收数据的完整性,然后将数据一次全部读到所定义的变量参数中,根据流量计通讯协议中定义的内容,分别取出各个字节,解析出意义,在屏幕上显示,同时利用Windows9X自带的Access数据库,在VB监控程序中加入DATA控件,将数据存入数据库中,使用VB的报表功能即可产生日、月、年报表,同时可以通过编程将数据发往企业内部主数据库,实现能源计量数据的自动上报。 六、结语: 本文利用VB6.0下的ActiveX控件实现了在Windows9X环境下,单台PC与多台流量计的通讯监控。本系统在湘钢煤气调试系统中成功使用,实现了分散计量点数据的自动采集、汇总与上报,及时反应出生产中能源计量数据,为生产的成本控制起到了积极作用,整个系统结构简单,无需购置价格昂贵的组态软件,方便、灵活,具有较好的实际价值和使用性。 |