摘要:利用activex控件的mscomm通信控件,实现了windows下单台pc机与多台计量仪表的串行通讯,达到了对分散设备的集中控制和计量数据的自动采集、自动汇总以及自动打印功能。
关键词:pc机 rs-485 计量仪表 大屏幕
一、引言
在工业生产中,能源、物资的计量设备分布在现场的各个区域,给设备的监控和数据的统计带来诸多不便,随着智能仪表技术的不断发展,其通讯技术也在不断加强,当今的测量仪表大多带有rs-485通讯或rs-232接口,用现场总线方式可以实现多台测量仪表的集中监控与数据采集,实现了仪表直接接入pc机,利用在现场安装大屏幕实时显示计量仪表数据,使现场配料人员做到配料心中有数,利用“远程传输”到办公室实现了window环境下一台pc机与多台测量仪表的串行通信功能,并且对仪表数据实现自动计量与自动汇总。
二、系统的硬件设计
采用rs-485总线技术的传统设计方式:根据rs-485电气规定,在两线制传输方式下,rs-485驱动器可带32个接收器,实现多点半双工通讯。系统方框图如下图所示:
图中pc机通过rs-232接口,经rs-232——rs-485模块与多台流量计仪表相连接,一条总线上zui多可接32台,每台仪表被赋予各自的通讯地址码用以识别身份,这样上位pc机就能通过rs-485总线对挂在总线上的每个仪表进行通讯。实现对计量仪表的远程数据采集与监控。
三、计量仪表及通讯功能
通常采用modbus通讯协议,采用rs-485半双工的方式,积算仪表作为从机,上位pc机作为主机,控制和监视计量仪表的运行,通讯波特率大多为9600bps。通讯格式为:1位起始位,8位数据位,1位奇偶校验位,1位停止位,每个从站被赋*的本机地址,采用主机轮询,从机应答的通讯方式。主机通过发送命令帧启动一次通讯,从机接收到数据后,判断呼叫地址是否和本机地址相同,若不同,则不予理睬,若相同则根据命令帧中的特征字(命令字),发送主机要求的数据帧。
四、windows下的activex控件
在windows环境下,出于对系统的安全考虑,操作系统*接管了各种硬件资源,不允许用户直接对包括串口在内的硬件中断进行管理,以往人们只能通过繁琐的api函数或visual c++标准通讯函数来控制各种硬件,现在vb6.0提供了一个activex控件称为mscomm控件,利用它可以方便地进行计算机串口的通讯管理。
五、用程序实现对仪表的串行通讯控制
1、在windowsvb6.0编程环境下,新建工程引用mscomm通讯控件,在窗体中至少添加以下几个基本控件:
① 1个mscomm控件,控制名为mscomml,用于软件对串口的访问;
② 两个定时器控件,名为(timperiodic和timnonperiodic),timperiodic用于使pc机定时向各仪表发送周期性命令,使其定时回传实时数据;timnonperiodic用于控制两次非周期性指令传送之间的时间间隔;
③ 1个非周期性命令发送按钮cmdnonperiodic,用于非周期性指令的传送启动;
④若干个用于显示仪表参数的文本框和设置仪表参数的对话框。
2、监控软件的核心是如何读取和处理现场仪表的实时数据,编程时应注意以下几个问题:
① 主机采用轮询方式访问从机,从机应答到发送完数据有一定的时间间隔,一般设定为2s~3s;
② 由于采用一个串口和半双工通讯方式,一方发送数据时另一方必须等待接收,因此在发送非周期性命令时,必须停止轮询,否则会发生数据包碰撞,使通讯失败。
3、数据的接收和处理:计量仪表回传数据时即可在主机上引发oncomm( )事件,在此事件处理函数中,首先判断接收数据的完整性,然后将数据一次全部读到所定义的变量参数中,根据仪表通讯协议中定义的内容,分别取出各个字节,解析出意义,在屏幕上显示,利用在vb监控程序中加入data控件,将数据存人数据库中,使用vb的报表功能即可产生日报、月报及年报。
六、结束语
本文利用windows下的activex控件实现了在windows环境下,单台pc与多台计量仪表的远程通讯监控。本系统在莱钢机制公司中成功使用,实现了分散计量点数据的自动采集、自动汇总,及时反应出生产中计量数据,为生产的成本控制起到了积极作用。整个系统结构简单、方便、灵活,具有较好的实用价值。