APP下载

利用Visual Basic及无线装置实现仪表数据远程传输

2021-08-21李国铸李文胜陈玉芝

仪器仪表用户 2021年8期
关键词:数据表微机字节

李国铸,李文胜,陈玉芝,曹 冲

(山东华鲁恒升化工股份有限公司,山东 德州 253024)

0 引言

由于发展需要,山东华鲁恒升化工股份有限公司需自华能集团采购大量过热蒸汽,第一阶段需求在400t/h 左右。流量测量仪表安装在华能集团院内,采用差压式流量计进行测量,温度压力补偿用上海肯特的智能流量积算仪进行运算及显示。出于生产及管理两方面的要求,需要实时了解蒸汽计量情况,要求对这台仪表的数据进行监控。由于仪表距最近的DCS 系统直线距离也有1000m,且敷设电缆、光缆都不方便,所以决定利用无线传输装置实现数据传输。之前用过一家公司的无线设备效果不错,于是重新采购了一套,包括一台采集器、一台还原为四路模拟量的无线接收装置,还有一台还原为串口通讯数据的无线接收装置作为备选方案。采集器安装在流量积算仪处,用串口方式采集仪表数据并周期性地(15s)通过无线方式发出。计划将还原为模拟量的无线接收装置安装在DCS 处,目的是将流量、温度等信号还原成直流4mA~20mA 标准电流信号接入DCS 进行显示。但是,由于无线设备厂家在设备设计生产过程中并没有用肯特仪表进行实际测试,致使不能还原出正确的电流信号。咨询后得知,这种情况需要更换数据采集装置且需较长时间。用MODBUS 数据扫描软件试验了作为备选方案的还原为串口通讯数据的接收装置,发现可以将瞬时流量、压力、温度、差压、累积流量正确还原,但是设备厂商提供的配套软件却不能正确地安装。综合考虑,决定自行开发一套软件,实现数据的显示及记录等相关功能。

1 项目实施

还原为串口通讯数据的无线接收装置周期性地接收无线发送装置发来的数据并存储到相应的寄存器中,串口数据传输遵循的协议为Modbus,因此可以通过微机RS232串口发送指令到无线接收装置,得到当前数据。得到数据之后,可以进一步实现数据显示、历史数据表、趋势图等功能。

1.1 软件开发

为了提高软件开发效率,决定采用VB 来实现。

VB 全称Visual Basic,是一款由微软公司开发的可视化的、面向对象和采用事件驱动方式的结构化高级程序设计语言,可以轻易地使用DAO、RDO、ADO 等方式连接各种数据库,且简单易学、界面友好、效率高且功能强大。在Visual Basic 环境下,利用事件驱动的编程机制、新颖易用的可视化设计工具,使用Windows 内部的API 函数,以及动态数据交换(DDE)、对象的链接与嵌入(OLE)、动态链接库(DLL)、开放式数据连接(ODBC)等技术,可以高效、迅捷地开发出Windows 环境下图形界面丰富、功能强大的应用软件系统[1]。

由于需要利用微机的串口与无线接收装置进行数据通讯,所以要用到VB 的串口控件MSComm,按照设备厂商对接收器预置的参数,对MSComm 的数据传输格式进行同样的设置,波特率为9600,数据位8 位,无奇偶校验,停止位1 位[2]。

Modbus 是一种工业协议,于1979 年开发,用于实现自动化设备之间的通信,是使用主从关系实现的请求-响应协议。在此例中,微机是主,无线接收装置是从,需要微机周期性地向无线接收装置发送指令才能采集到相应的数据。其目的是读取无线接收装置寄存器中的数据,因此根据Modbus 命令定义,应该使用功能码03,命令格式见表1。

表1 Modbus读保持寄存器命令格式Table 1 Modbus read holding register command format

图1 软件界面Fig.1 Software interface

目标站号是1,十六进制也为“1”,补齐字节位数,写为“01”。

起始地址是十进制3000,换算为十六进制为“BB8”,补齐字节位数,高字节在前,低字节在后,所以第三字节是“0B”,第四字节是“B8”。

查询设备说明书,读取个数为12 即可将数据全部读出。“12”换算为十六进制为“C”,同样补齐字节位数,高字节在前,低字节在后,第五字节是“00”,第六字节是“0C”。

最后,两个字节是CRC 校验码,通过计算得知,应为“C7CE”[3,4]。

这样就得到了读取数据的Modbus 指令,只要周期性地向串口发送这个指令就可以得到想要的数据了。

当侦测到串口有数据输入时,将报文从十六进制转换为浮点数,就得到了各参数值。

到此为止,数据已经可以正常的显示了。但是,这样看到的只是实时的数据,无法追溯历史数据,因此还需要将得到的数据进行存储,方便回溯比较。这就需要用到数据库,在这个项目中用的是Mysql 数据库。

1.2 数据存储

MySQL 是一款关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于Oracle 公司。由于其体积小、速度快、多线程,尤其是提供免费版本及开放源码这一特点,得到了广泛的应用。

VB 利用ODBC 的方式与Mysql 数据库通信,因此安装完Mysql 数据库后,需要安装它的ODBC 驱动,建立固定的数据库,命名为flowdata,并添加数据源,测试连接是否正常。为了提高查询的速度和方便性,每天建立一个数据表,将当天的数据存到当天的数据表中,SQL 语句是:insert into data"+Trim(Str$(Year(Date))) +Trim(Str$(Month(Date)))+Trim(Str$(Day(Date)))+" values('" +Str$(flow)+"','"+Str$(deltap)+"','"+Str$(pressure)+"','" +Str$(temperature)+"','"+Str$(total)+"','"+Str$(Now)+"')。由于在VB 程序中流量、压力等各参数的数据类型都是单精度浮点数,所以需要转换为字符串类型才能够正确执行。数据表存储数据后,可以在程序中对数据表进行查询,实现历史数据显示及趋势图的作用。数据表的调用使用两个VB 控件,它们是Adodc 和DataGrid,分别实现获取数据的记录集以及以表格形式进行显示的功能。首先,将需要查看的数据获取到记录集中,SQL 语句是:select flow as 流量,deltap as 差压,pressure as 压力,temperature as 温度,total as 累积,time as 时间 from data"+Trim(Str$(Year(DTPicker1.Value)))+Trim(Str$(Month(DTPicker1.Value))) +Trim(Str$(Day(DTPicker1.Value)))+" order by time desc",之所以采用“select … as …”的格式是因为数据表中的字段名都是英语,直接显示到软件界面上不直观,所以转换为汉字,增强界面友好性。"order by time desc"的作用是按照时间降序排列,显示出来的效果如图2 所示。

图2 数据记录表Fig.2 Data record table

1.3 趋势图实现

这个软件中做了两个趋势图,一个是软件首界面的实时趋势图,它用软件获得的实时数据进行绘图。勾选“跟踪”开关时,最新的数据绘制出的像素显示到数据区最右侧,之前的数据依次左移;不勾选“跟踪”开关时,可以点击下方的箭头按照时间进行查询。这种情况数据区中的数据是存储到内存中的,软件重启后之前的数据即被清除。另一个趋势图就是历史趋势图,是用存储到数据表中的数据进行曲线绘制,数据查询不受软件及微机重启的影响。趋势图看起来比数据表更形象,可以第一时间感受数据的变化。这两个趋势图是用TeeChart8 控件完成的,使用前必须用“regsvr32 TeeChart8.ocx”命令对控件文件进行注册。在趋势图中可以隐藏、显示相应参数的曲线,鼠标进入曲线时可以显示相应点的时间和数据,可以进行前后翻阅,图像放大,纵坐标的迁移,历史趋势图还可以指定趋势区间等。历史趋势图效果如图3 所示。

图3 历史趋势图Fig.3 Historical trend chart

2 项目拓展应用

这个项目做好后不久,公司调度中心也需要对这些数据进行监控,最初的想法是将无线接收装置和软件直接移过去,但是,调试过程中发现由于调度中心控制室为防爆结构,对无线信号屏蔽非常强,接收装置接不到信号,只能将无线装置又放回原处。好在公司除了DCS 网络外,OA网络覆盖面也很大,安装无线接收装置的微机就有OA 网络,调度中心的微机也有OA 网络,可以利用OA 网进行数据传输。于是,将调度中心的微机同样安装上数据库软件,并开放网络接口,增加原微机软件的功能,使原微机自串口接收到数据后既保存在本地数据库,又保存到调度中心的远程数据库中。这样,因为采集的数据同时存放到两台微机的数据库中,实现了数据的冗余,即使两台微机中的任一台出现问题,存储的数据都不会受到影响。

在调度中心微机上将原有微机运行的源码进行改造,使之周期性地读取本地数据库的最新数据代替读取串口的数据。为了实现由于网络问题造成的数据错误能够被及时发现,在调度中心微机程序里增加了数据判断功能:一是判断当天的数据表是否存在,如果未发现当天数据表则在状态条信息栏中提示“无当日数据......”;二是判断数据表中有无数据,如果没有则提示“无有效数据......”;三是判断数据表中的数据会不会得到及时更新,如果持续一段时间(如30s)没有更新则提示“数据无更新......”。上述任意一种异常,软件中的实时数据都会变为“#”,提醒调度人员知道。这时一般只要检查两边的微机是否可以上网,接收无线数据的微机采集是否正常就可以了。

3 结束语

如今DCS 系统的功能非常发达,但是总会因这样或那样的原因有些数据暂时无法进入DCS。比如,设备不匹配,DCS 不能在线下装,或者担心下装会引起生产扰动等。这时,可以利用既有设备自行开发软件解决燃眉之急。而利用公司的OA 网络实现数据传输,省时省力,同接入DCS系统相比,节省了OPC 软件及防火墙或专用操作站及配套软件的投资费用,为生产监控提供了灵活的技术方案。

猜你喜欢

数据表微机字节
No.8 字节跳动将推出独立出口电商APP
湖北省新冠肺炎疫情数据表(2.26-3.25)
湖北省新冠肺炎疫情数据表
Fuzzy Search for Multiple Chinese Keywords in Cloud Environment
No.10 “字节跳动手机”要来了?
基于列控工程数据表建立线路拓扑关系的研究
TDJ微机可控顶调速系统在平顶山东站的应用
简谈MC7字节码
电力系统微机保护装置的抗干扰措施
图表