利用嵌入式系统VBA开发水泥生产报表 点击:1223 | 回复:1



大城

    
  • 精华:25帖
  • 求助:0帖
  • 帖子:564帖 | 1178回
  • 年度积分:0
  • 历史总积分:8243
  • 注册:2006年8月25日
发表于:2008-09-21 22:52:33
楼主

摘要:  本文详细阐述了水泥生产报表开发的步骤,在数据采集和数据记录的基础上,重点介绍了利用嵌入式系统VBA设计水泥生产报表,充分体现了嵌入式系统对计算机监控软件的支持,最后给出了生产报表设计的应用程序。
关键词:  计算机监控系统    PLC  EXCEL  嵌入式系统-VBA

一、       前言

在水泥生产过程控制系统设计中,除了实现现场设备的控制和工艺流程的操作功能外,开发功能完善的水泥生产报表,对于生产管理人员统计主机设备运转率,控制水泥产量质量起着至关重要的作用。尽管计算机技术和网络技术的飞速发展不断推进工业生产监控系统软件的更新换代,但近几年国内水泥行业中应用的上位机监控软件自身的报表功能仍不完善,例如美国Rockwell 公司的RSVIEW32软件、德国Simense公司的WINCC软件以及国内开发的上位监控软件等。为了更好地满足工艺管理人员的要求,在我们设计的生产报表中,充分利用嵌入式系统VBA(The application of Visual Basic)的计算功能和微软公司的EXCEL软件的表格处理功能,弥补了上位监控软件在表格处理方面的不足,在VBA应用程序中调用EXCEL表格模板,通过监控画面上的命令按钮执行VBA应用程序,即可打印出生产报表。

二、       生产报表设计

水泥生产报表的开发流程主要由现场数据的采集、数据的记录、数据的统计和报表的输出打印四个部分完成。报表内容包括统计水泥产量,统计分析水泥配比以及主机设备的运转率,填充表格的数据来源有水泥原料称的瞬时流量和主机设备运行信号两种。数据采集流程见下图:

2.1现场数据采集

数据记录的原始数据来源于现场仪表设备,水泥生产的几种原料(包括熟料、石灰石、石膏等)通常采用皮带称计量。不同的生产规模和不同的原料配比选用皮带称的量程不同。物料流经皮带称时,安装在皮带下的荷重传感器计量物料重量,同时皮带电机的测速电机测量皮带转速,荷重传感器输出毫伏电信号给二次仪表,二次仪表通过它和皮带转速两个量计算出物料瞬时流量,输出4-20mA标准信号给PLC系统的模拟量输入模板,标准信号4-20mA通过A\D转换器转换数字量,通过与PLC软件组态的皮带称量称线性计算,得出原料的瞬时流量值存储在PLC内存地址中。PLC系统的模拟量输入模板的采样时间通常设置为200ms。

2.2数据记录

组态RSLinx软件的TOPIC(选用OPC方式),上位机系统的数据库标签与PLC相应标签内存地址建立连接,物料流量历史数据记录通过组态监控软件的数据记录功能即可完成。文件格式使用DBASE IV宽型格式;每10秒记录一次,周期性触发数据记录。运行监控系统时,在项目路径\DLGLOG\下,自动生成以时间为文件名的数据库文件,如“030820aw.dbf”。文件形式如图2。记录文件主要包括日期、时间和各种水泥原料某一时刻的瞬时流量值。

图2   数据记录表

2.3数据统计

生产报表并不直接显示每种物料的瞬时流量值,而是通过对数据记录文件中的瞬时流量值进行统计,生成每种物料的台时产量、班产量、日产量、月产量及其平均值。在数据记录文件中,采样时间为10S,台时产量的计算对10S周期的每个采样值进行累加,存入HOUR_SUM(i)变量数组元素中(数据定义时,i的最大值为24),台时产量计算公式如下:

台时产量HOUR(i)(吨/小时)=HOUR_SUM(i)(吨)x 10秒/3600(小时/秒)

对本班的8个小时的台时产量累加产生班产量,对本日的3个班产量累加则产生日产量,对本月的所有日产量累加则生成月产量。班平均值由班产量除以8即可,依此类推生成日平均值和月平均值。数据统计由嵌入上位监控软件中嵌入的VBA来完成。

2.4报表打印

生产报表除在上位机显示和每天定时自动打印外,还具有根据生产需要操作员选择日期手动打印功能。我们设计的打印功能利用EXCEL软件强大的表格处理功能,在EXCEL软件中建立生产报表的模板文件,把生产日期时间和经过计算处理的生产数据填入EXCEL文件中固定的单元格内。在VBA中调用EXCEL软件打印生产报表。

三、VBA程序实现

数据统计和报表打印主要由VBA程序完成,程序工作流程见下图:

以其中熟料产量为例,详细介绍报表程序。

3.1数据定义

①定义EXCEL应用对象;

 Dim Excelapp As Excel.Application

②定义存储台时产量和日产量的数组;

 Dim KilnWH(24) As Integer ‘熟料台时产量

 Dim KilnWD(31) As Integer ‘熟料日产量

 Dim HourW(11,24) As Integer ‘各种物料瞬时值的二维数组

③定义数据记录文件变量等字符串类型变量;

 Dim Dbfile As String ‘数据记录全称文件变量

 Dim Dbquery As String ‘数据记录文件变量

④定义数据库文件变量、数据记录集变量、字段变量;

 Dim Workresults As Workspace ‘数据库文件空间

Dim DBresults As database   ‘数据库文件变量

Dim RSresults As Recordset  ‘数据库记录集变量

Dim RSfields As field       ‘数据库字段变量

建立报表格式文件(如图3)

3.2数据变量初始化

     For i=0 To 24

        KilnWH(24)=0

     Next i

3.3建立EXCEL应用

    Set Excelapp = New Excel.Application

    Set X1book = Excelapp.workbooks.open(gProject.Path & “生产报表.xls”)

3.4统计台时产量

    Set DBresults = opendatabase(DBfile,False,True,“dBase IV” )

‘打开数据库文件并存入DBresults

Set RSresults =DBresults.openrecordset(“select * from “&DBquery””)

‘打开数据库文件记录集并存入DBresults

RSresults.movefirst

‘指针指向首记录集




wwlzcf

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 38回
  • 年度积分:0
  • 历史总积分:82
  • 注册:2009年3月23日
发表于:2010-02-03 09:53:11
1楼
呵,硬盘可以配320G的

热门招聘
相关主题

官方公众号

智造工程师