化工仓储企业储罐数据采集系统的设计与实现_第1页
化工仓储企业储罐数据采集系统的设计与实现_第2页
化工仓储企业储罐数据采集系统的设计与实现_第3页
化工仓储企业储罐数据采集系统的设计与实现_第4页
化工仓储企业储罐数据采集系统的设计与实现_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

化工仓储企业储罐数据采集系统的设计与实现孙学华;钱思宇【摘要】Aimingattheproblemsexistinginchemicalengineeringstorageenterprises,e.g.,variouscategoriesofequipment,informationisolationamongeachproductionunit,andtheproductiondataareunabletobeproperlymeasuredinrealtime,thusthereal-timeofdataacquisitionsystemisdesignedanddeveloped.Byadoptingdifferentdatacommunicationspecification,theproductiondataareobtainedfromvariousheterogeneoussystem,andtransportedandstoredthroughnetworkprotocol,thereal-timeandaccuratemeasurementofthetankyardisimplemented.Sincethesystemhasbeenputtingintooperation,theoperationaleffectisgood,andtheproblemsexistingindataacquisitionofenterprisesisefficientlysolved;thesystemissignificanttoimprovethelevelofinformationtoenterprises.%针对化工仓储企业设备种类较多、各生产单元之间信息孤立、生产数据得不到实时准确测量等问题,设计开发了一个实时数据采集系统.该系统利用不同的数据通信规范,从各种异构系统中获取生产数据,并通过网络协议进行传输存储,实现了罐区数据的实时准确测量.该系统自投用以来运行效果良好,有效地解决了企业数据采集过程中存在的问题,对提高企业信息化水平具有重要的意义.【期刊名称】《自动化仪表》【年(卷),期】2012(033)005【总页数】4页(P28-31)【关键词】数据采集;数据通信;实时数据库;Modbus;PLC【作者】孙学华;钱思宇【作者单位】南京工业大学电子信息与工程学院,江苏南京210009浦京工业大学电子信息与工程学院,江苏南京210009【正文语种】中文【中图分类】TP2740引言随着某化工仓储企业生产经营规模的不断扩大,不同时期所采用的现场仪表不同往往使得仪表种类越来越多,需要处理的数据量也越来越大。这些数据有的通过PLC控制系统采集,有的甚至还需要人工抄表和手动录入数据,这不仅造成了工作效率低下,而且还容易导致各个生产区之间的信息彼此孤立,形成一个个信息孤岛。信息孤岛使得企业的生产管理人员无法及时获知准确有效的数据并及时做出决策,这在一定程度上影响了企业的生产运营。在工业信息化的大背景下,有必要将各孤立系统的数据进行集成整合,建立实时数据库系统,从而为上层ERP系统及应用软件提供准确实时的数据。由于该企业的大部分仪表还能正常使用,如直接淘汰、更换系统将会造成很大的资源浪费。本文结合该企业的数据采集改造项目,设计实现了一套对全厂生产数据进行集成处理的软件系统。1系统设计罐区实时生产数据主要有储罐液位、温度和压力等,这些原始数据由现场的液位计、多点温度测量仪、压力表等获取。该化工仓储企业现有一套西门子S7-300PLC控制系统、2台AWG-HA型巡检仪、若干AWG-IB型光电智能液位仪、若干科隆BM100雷达液位计、若干带通信接口的罐旁指示仪和其他一些温度、压力、液位传感器。这些现场测量仪表有的通过4~20mA的模拟信号或通信线接入到PLC控制系统中,有的通过带有通信接口的罐旁指示仪或直接接入到巡检仪(二次表),其他的则未接入任何系统。根据现有系统设备的特点,数据采集软件需实现以下3个功能:与PLC控制系统通信并采集数据、从巡检仪中采集数据、直接与现场表通信并采集数据。整个数据采集系统以数据采集为中心,在一台工控机上运行数据采集程序;从底层采集各部分原始数据,根据相应的计算标准计算体积、储量等;并通过网络通信协议将数据转存到数据服务器。这些数据作为历史数据存入关系数据库,为上层的应用提供数据。系统结构图如图1所示。图1系统结构图Fig.1Structureofthesystem2数据通信由于系统中的设备类型各不相同,它们各自具有不同的通信协议,因此,数据采集程序必须遵循相应的通信规范才能从各种设备中读到数据。本系统数据通信解决方案如下。与PLC控制系统的通信采用OPC协议。OPC是过程控制数据采集的标准,为目前主流的组态软件所遵循[1]。西门子的上位机软件支持OPC标准,并提供OPCServer服务,即只要在客户端开发OPCClient,就可请求到存放在OPCServer中的过程数据[2]。由于OPC标准被大多数自动化厂家所采用,所以部分底层数据采集设备也支持OPC。在通信软件中开发OPCServer程序,将硬件设备作为OPC的数据源,可直接从底层采集设备中获取过程数据值。与巡检仪及部分现场仪表的通信采用Modbus协议。巡检仪及大部分现场设备都支持目前工业领域最流行的通信协议之一的Modbus。通过工控机串口与它们提供的接口相连,即可进行主从方式通信。部分不支持通信的采集设备,可将数值转换为4~20mA模拟信号,接入到PLC控制系统中,再通过OPC方式采集。由于OPC服务器很难穿过防火墙进行数据传输,所以采集程序与数据服务器及上层应用软件之间通过UDP协议交换数据[3]。通过该解决方案,所有的数据都能接入到采集系统,并进行实时准确测量。3系统实现主程序分为Modbus通信模块、OPC通信模块、UDP通信模块和数据计算模块。程序采用多线程技术,将各种数据的接收和发送放在优先级较高的线程中。在数据收发期间,数据的计算处理并不影响主程序的运行。此外,在程序中采用全局内存存放实时采集的数据,以便于数据的快速存取交换。系统主要程序基于VC++实现。3.1Modbus通信模块Modbus协议包括ASCII、RTU(远程终端单元)、TCP等工作模式,本系统采用较高数据传送密度的RTU通信模式。在该模式下,数据通信一般采用主从方式,主机向从设备发出请求消息;从设备接收到正确消息后就可以发送数据到主机,以响应请求[4]。ModbusRTU消息帧结构如图2所示,其中,T1-T2-T3-T4为不小于3.5个字符时间的停顿间隔。图2ModbusRTU消息帧结构Fig.2StructureofthemessageframeofModbusRTUModbus协议需要对数据进行校验。串行协议中除有奇偶校验外,RTU模式还采用16位CRC(循环冗长检测)校验。CRC的生成流程具体如下。①预置一个16位寄存器为0FFFFH(全1),即为CRC寄存器。把数据帧中的第一个字节的8位与CRC寄存器中的低字节进行异或运算,结果存入。日。寄存器。将CRC寄存器向右移一位,最高位填以0,最低位移出并检测其值。如果最低位为0,则进行下一次移位;如果最低位为1,将CRC寄存器与一个0A001H进行异或运算。重复步骤③~步骤④,直到8次移位,这样就处理完了一个完整的8位数据。处理下一个8位数据,直到所有的字节处理结束,最终CRC寄存器的值就是CRC的值。3.2OPC通信模块OPC服务器由服务器、组和数据项这3类对象组成[5]。服务器对象具有服务器的所有信息,同时也是组对象的容器。组对象具有本组的所有信息,同时包容数据项。项对象是读写数据的最小逻辑单位,项与具体的位号相连[6]。OPC服务器支持自动化接口和定制接口两种访问接口。OPCClient的具体开发流程如下。初始化COM库,当需要调用COM库时,需使用CoInitializeEx()来为当前线程初始化COM库[7]。CoInitializeEx()提供了一个让用户可以选择多线程模式还是单线程模式的参数。通过OPC服务器的ProgID查询CLSID,通过给定的ProgID,采用CLSIDFromProgID()函数从注册表中查找出对应的类标符。③创建OPC服务器对象,并查询OPC服务器对象的IOPCServer接口。通过调用CoCreateInstanceEx()函数,不仅可以在本机中创建COM对象并得到一个接口指针,还可以实现远程访问。将MULTI_QI结构体数组中指向IOPCServer接口的元素赋值给变量m_pIServer,以获取lOPCServer接口,进而可以使用该接口完成对组对象进行创建、删除、枚举和获取当前状态等操作。添加OPC组对象,并查询IOPCItemMgt接口,通过IOPCServer接口的AddGroup()方法添加组对象,它将返回一个指向OPC组对象IUnknown的指针。通过IUnknown的QueryInterface方法可获得OPC组对象的IOPCItemMgt接口指针,进而可以使用该接口完成对各项进行添加、删除和设置参数等操作。添加项:为保存项的相关属性值的结构体数组进行赋值。以该结构体数组为参数,用IOPCItemMgt接口的AddItem()方法添加项。同步读写:通过IUnknown的QueryInterface方法,获得OPC组对象的IOPCSyncIO接口指针。采用IOPCSyncIO接口的Read()方法,完成同步读操作。采用IOPCSyncIO接口的Write()方法,完成同步写操作。释放:在程序关闭之前,需要删除已创建的OPC对象并释放内存。首先删除以下项:接着释放OPC组对象的IOPCItemMgt接口和IOPCSyncIO接口,然后删除OPC组对象:调用服务器对象m_pIServer的RemoveGroup()方法,删除OPC组对象,再调用Release()释放服务器资源,最后关闭COM库。3.3UDP通信模块用户数据报协议(userdataprotocol,UDP)是一个简单的面向数据包的传输层协议[8],它所提供的是非面向连接的、不可靠的数据流传输。UDP不提供报文到达确认、排序、可靠以及流量控制等功能;它只是将应用程序传递给IP层的数据报发送出去,但是并不能保证它们能到达目的地[9]。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,因此,其传输速度更快。UDP数据通信格式和数据结构定义如下。UDP请求数据报格式如图3所示。图3UDP请求数据报格式Fig.3RequestdatagramformatofUDP其中,起始符为字符"#”,ASCII码为35(十进制);结束符为回车符,ASCII码为13;请求位号长度为10B,为固定长度,位号不足10B的用空格符补充。定义一个UDP请求数据报可同时打包不超过30个位号。UDP应答数据报格式如图4所示。图4UDP应答数据报格式Fig.4ResponsedatagramformatofUDP其中,起始符为字符“!”,ASCII码为33(十进制);结束符为回车符,ASCII码为13;应答位号长度为10B,为固定长度,位号不足10B的用空格符补充;返回值长度为20B,为固定长度,数据不足20B的用空格符补充;连接符、位号与数据之间用“=”号连接,ASCII码为61。定义一个UDP应答数据报可同时打包不超过30个位号的数据,数据报总长度不超过990B。本系统在MFC中使用CSocket类实现UDP通信。CSocket是对WinSockAPI的封装,用于管理通信,使得用户可以直接避免调用API函数,数据的收发也因此变得简单。程序实现时,系统分别构造服务器和客户端套接字对象,调用套接字对象的Creat()成员函数初始化套接字。调用CSocket类的重载函数OnReceive()响应接收事件;调用ReceiveFrom(lpBuf,bufLen,RemoteIP,RemotePort,0)接收数据报,并按照协议格式将数据从数据报中取出。按照通信协议将需要发送的数据打包,并调用SendTo(lpBuf,SendStrLen,RemotePort,RemotelP,0)发送数据报。4关于实时数据库的探讨该套数据采集软件的设计与实现,实际上为企业构建了一个实时数据库系统。程序中采用全局内存共享技术对实时数据进行存取,并采用内存、文件管理、关系数据库相结合的数据存储策略,使系统在响应速度、实时数据的共享性和时间一致性方面初步满足了实时数据库系统的定义要求[10]。5结束语系统自投用以来运行正常,效果良好,不仅解决了在生产数据管理过程中存在的问题,而且节省了购买SCADA硬件、软件系统的大笔费用。同时,避免了大量仍能使用的仪表设备的淘汰弃置,具有一定的经济效益。参考文献[1]蒋近,段斌.基于OPC技术的监控主站实时数据传输[J].电力自动化设备,,28(9):97-100.[2]西门子(中国)有限公司自动化与驱动集团.深入浅出西门子S7-300PLC[M].北京:北京航空航天大学出版社,2004.牛丹丹,孙学华.贮油罐存量管理系统的研究与实现[J].计算机应用与软件,,26(7):165-167.边凌燕.基于CP341模块的MODBUS协议免驱动应用[J].电气传动,2009,39(2):72-75.[5]李世学,王小进,余光洪.OPC技术及其在SCADA系统中的应用[J].船电技术,2010,30(3)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论