APP下载

制丝车间集控反馈服务程序数据交互可靠性研究

2019-09-27邱振洲

好日子(下旬) 2019年10期

【摘 要】本文通过对某企业集控反馈服务程序所存在的数据交互丢失问题的研究,探究了基于C#编写的集控反馈服务程序中数据交互的细节实现,优化了集控反馈服务程序代码,解决了数据交互丢失问题。

【关键词】集控系统;数据交互;Web Service

一、前言

我厂一区制丝中控系统与我厂上层信息系统通过XML Web Service方式进行数据的交互。上层信息系统包括基础数据平台和MES系统。一区制丝中控系统一方面从基础数据平台获得基础数据,另一方面从MES获得生产任务数据,并在生产任务执行后将实际执行数据反馈回企业MES系统。本文主要分析了中控系统在反馈数据时的偶发性数据丢失问题的原因,通过优化代码解决问题,提高了反馈服务程序数据交互的可靠性。

二、问题现状

在MES系统的烟丝实际出丝率跟踪表里查询所得的叶片任务烟包重量数据存在偶发性丢失现象,具体表现为在同一个任务内只显示了烟包排序靠前的重量数据,排序靠后的重量数据不显示。该问题所涉及的数据流如下:1.任务运行过程中,该任务的所有烟包重量数据由电子静态秤采集后,通讯并暂存于切片机PLC的数据块中。2.该任务生产结束时,操作人员通过点击IFIX生产任务管理界面上的“任务完成”按钮,由IFIX的VBA脚本抓取暂存于PLC数据块里的烟包重量信息,通过SQL语句写入Oracle的本地烟包重量数据表里。3.通过安装在车间接口服务器上的集控数据反馈服务程序,周期性轮询Oracle里的数据表,将Oracle表中上传标志为“未上传”的数据按照接口协议生成XML文档。4.集控数据反馈服务程序通过企业MB平台,将XML文档转发到企业MES系统。5.企业MES系统根据接收的XML文档在网页端进行展示。

三、原因分析

(1)PLC采集数据过程时丢失。通过Step7实时监控跟踪PLC烟包数据块,该过程数据采集未发现明显异常,排除。

(2)写入Oracle表时丢失。通过PL/SQL查看Oracle表里问题任务的数据记录,表里数据完整,与所查任务要求的数据数目一致,未发现明显异常,排除。

(3)生成XML文档时丢失。通过对比Oracle表里的数据与所生成的XML文档内容,发现XML多次存在数据不完整的情况,确定其为造成最终所展示数据丢失的根本原因。

(4)转发XML文档时丢失。对比问题任务的发送方与接收方的XML文档,未发现两者之间的内容差异,排除。

(5)解析XML文档时丢失。对比问题任务的XML文档与网页所展示内容,未发现两者之间有内容差异,排除。

最终确认,数据丢失发生于集控反馈服务程序生成XML文档的环节。

通过分析烟包重量数据上报所涉及的C#源码,当程序在周期扫描时扫描到某一任务存在未上传的数据,在将未上传的数据打包生成XML文档后,调用负责置数据上传标志位的函数将任务里每粒烟包数据状态置为已上传。当任务完成时IFIX批量向Oracle里写入数据过程中,反馈程序扫描周期到,触发了新的扫描,由于扫描发生在写入数据的过程中,程序只抓取了扫描到的前半部分烟包数据生成XML文档,后半部分写入的烟包数据还未被上传就被置数据上传标志位的函数一并把状态置为了已上传,实际上后半部分烟包数据并未生成XML文档上传,造成了数据的丢失。

四、改进措施

修改置数据上传标志位函数逻辑,使其被调用时只对已上传的烟包数据进行置位。具体为,修改函数的形参,由只传递当前任务的第一粒烟包对象改为传递本次扫描打包的烟包对象数组,并只对数组对象进行置状态位。

五、结语

本文针对车间烟包数据在由中控系统上传至Mes系统过程中发生数据丢失问题的研究,理清了现场底层数据采集传递到上层系统的流程,优化了集控反馈服务程序的代码逻辑,解决了烟包数据丢失的问题,提高了系統数据交互的可靠性。

参考文献

[1]KrisJamsa.C/C++/C#程序员实用大全:C/C++/C#最佳编程指南[M].中国水利水电出版社,2002.

作者简介:

邱振洲(1991-),男,福建龙岩人,厦门烟草工业有限责任公司,助理工程师,研究方向:自动控制系统,集控系统。