设为首页 加入收藏 联系我们
技术文章
当前位置:首页 > 技术文章 > 油库智能液位变送器的设计与实现
油库智能液位变送器的设计与实现
点击次数:1288 更新时间:2015-11-11

一、引言
用液位仪获取油库的油位、水位、温度等数据是加油站信息系统的重要组成部分。液位仪在用传感器获取各项数据后,将数据变送至信息系统进行数据集中处理的模式有:利用4~20mA模拟信号或Modbus串口协议。在实际应用中发现这两种工作模式有下列不足:①信息系统对数据的解析严重依赖特定的液位仪,使得液位仪更新和信息系统升级相互制约、无法独立进行;②信息系统所获得的测量数据缺乏品质、时标等信息,对数据分析不利;③在数据传输过程中若发生线路中断,则无法追溯历史数据,不利于故障分析。
显然,液位仪现有的数据变送模式已无法满足油库信息化系统建设的需求,故此设计并实现了新型的智能液位变送器。该设备以嵌入式操作系统为基础、借助电力系统中普及应用的IEC61850协议,成功地克服了液位仪现有数据变送模式的缺点,为油库管理的信息化和自动化控制预留丰富的接口。
二、应用IEC61850的可行性
1.IEC61850的特点
IEC61850是变电站自动化系统通信的标准,其目的是实现不同厂商设备间的无缝信息通信和互操作。该标准的突出特点有:①开放、分层的拓扑结构;②面向对象的统一建模技术;③建模与具体实现相独立、服务与通信网络独立;④提供能够自我描述的数据对象及服务;⑤不同的厂商设备间可互操作。

2.设备描述的概念模型
IEC61850用客户/服务器概念来实现设备的互操作和系统无缝集成,服务器的核心功能是提供数据服务,客户端,亦即后台信息系统,通过请求数据服务获取数据信息,其中能提供数据服务的设备也称作智能电子设备(IED)。
客户/服务器进行信息交互的基础是设备功能描述文件,它XML语言为基础,详细地描述了与通信相关的智能电子设备结构和参数、通信系统结构及它们之间关系。由于XML拥有可扩展性和自定义性、异构系统间的信息无障碍互通、数据内容与显示处理相分离等特点, 因此功能描述文件能够在不同厂家的IED和信息系统之间进行交换。同时,功能描述文件采用面向对象的建模方式,使得数据对象、设备功能以及数据服务具备自描述特性。以上2点决定了客户/服务器之间不存在直接的依赖关系,换言之二者的设计与实现*可以独立进行。
图1是描述IED设备功能的概念模型,位于顶层的是服务器(Server),它拥有名称和IP地址。Server以下的逻辑层次依次为逻辑设备(LD)、逻辑节点(LN)、数据(Data)、数据属性(DA)以及数据属性功能约束(FCDA),它们都以对象的方式存在。FCDA约束了DA的特性,表明DA所属的类别,如ST代表状态数据,MX代表测量数据。此外,LN中包含相同类别的FCDA所构成数据集(DataSet)、指明数据服务方式的报告控制块(RCB)以及可用于历史数据追溯的日志控制块(LCB)等对象模型。围绕设备功能描述,服务器端提供不同的服务,如读值、报告、日志、控制。
根 据 以 上 的 叙 述 可 看 出 , 虽 然IEC61850是变电站自动化的标准,但因为它广泛吸收了计算机、通讯和工业自动化领域的成熟技术,使得它可以无障碍地直接应用到其它的自动化控制领域。正是基于上述认识,本文决定采用IEC61850通讯协议设计和实现智能的液位数据变送器,使得设备实现、数据传输、信息处理系统的相互独立。
三、设备功能描述
IEC61850在电力系统的应用已经成熟,因此对如何描述设备功能亦有着详尽的规范可以遵循,但如何描述液位仪数据变送器的设备功能则需探讨。经实际分析认为新设计的变送器应具备的功能有:数据测量、信息告警、日志服务、设备遥控。限于篇幅,本文只从数据测量和日志记录2个方面简要叙述。
1.定义测量数据集
综合相关文献并结合油罐信息采集的实际需求,本文将测量数据分为2组:*组是液位、水位、温度、体积、密度等与储油量相关的数据;第二组是泵电流、泵进口压力、油气浓度等收油、发油相关的数据,每一组数据对应一个数据集。
一个FCDA描述了一个被测数据对象,相同性质的数据对象构成一个数据集,例如与储油量相关的数据构成个数据集dsMeasure,图2是数据集的示例。
图2所示是定义*组测量数据集实例的一部分,数据集名称为dsMeasure。
设服务器名为YG21MONT,则在客户/服务器中表示油液高度数据的语义路径为YG21MONT/SIML1$MX$OilLvl。
需要说明的是,由于测量数据的品质、时标等信息对测量值起到置信说明的缘故,因此本文在定义被测量对象时没有细化到daName,而仅有doName,这是与电力系统中常见的配置方法所不同之处。
按类似的方法可以定义状态数据集dsState,如阀门位置、液位开关位置;告警数据集dsAlarm包括油气浓度告警、温度告警、水位告警等信息。
2.定义日志服务
当客户端因网络故障没有收到IED发来的数据报告,客户端则可以通过日志服务检索历史数据。日志的内容按时间顺序构成一个“先入先出"队列,因此客户端可次序获取历史测量数据或告警信息,这为数据核对和故障分析带来了极大便利。
日志模型包括日志控制块和日志内容2部分,图3是设备功能描述中关于日志服务的内容片段,它定义数据集dsMeasure作为日志内容,而logName与数据集中的ldInst名称应相一致。
日志内容也是面向对象结构,对象成员包括数据集中的数据对象、原因代码、触发选项,客户端可以通过修改LogEna为false停止日志服务功能。触发选项TrgOps指明或者发生数据值变化、或者发生数据品质变化时才添加日志内容。
日志内容是保存在RAM中的队列,为保证IED重启后日志内容不丢失,因此在添加队列条目时,同时将之保存为磁盘文件,当IED重启后首先将文件内容依次加载到队列中。本文的日志服务实现始终保存zui近6个月的日志内容。
四、软件实现
目前,IEC61850通讯协议的实现大都采用SISCO公司的MMS-EASE Lite软件包,它利用MMS(报文制造规范)实现与IEC61850的数据映射本文的也采用该软件包。
为集中精力验证IEC61850协议在设计液位仪数据变送器应用中的可行性,本文在原有的液位仪等监测设备与IEC61850之间添加了一个转换层,该转换层一方面对上实现与MMS-EASE Lite的数据接口,另一方面与监测设备仍采用串行通讯的方式周期性查询监测设备的数据、状态等。作者认为:从经济角度和实现周期角度来看,采用“转换"模式是改造现有液位仪系统较为可行的方案。
该转换层利用可运行utuLinux2.6.24嵌入式操作系统的S3C2440的工控板实现的,其硬件资源有主频400MHz, 内存64MB,一个以太网口, 三个串行口,一个SD卡接口。本文中的可执行程序、设备功能描述文件以及日志文件都是保存在SD中的。
故而,软件实现主要考虑论如何合理地实现的MMS-EASE Lite数据接口、地完成与监测设备的数据通讯。
1.数据接口
客户端获取服务器数据对象的过程如下:①客户端解析设备功能描述文件获取对象的语义路径,以之为参数请求读数据服务;②服务器端应用程序访问内存中该对象的实例后,将结果传递给通信映射程序,然后将其映射为MMS的读响应服务; ③将响应报文按客户端组织报文的流程发送给客户端;④客户端接收到报文后分析、确认为读数据服务的响应。
由此可见,客户端是数据的消费者,而数据的生产者则是不同厂商的液位监测设备。为了能够程序少改动、甚至不改动的情况下,zui大限度兼容不同厂家的液位监测设备,本文在在消费者与生产者之间增加了用内存实现的数据库作为二者的数据接口。
以数据集dsMeasure为例,首先为该数据集中的数据对象定义通用的数据结构DATA_YC,typedef struct{FLOATfValue;UINT16 uQuality;MMS_UTC_TIME utc;}DATA_YC其中fValue为数据值,uQuality为数据品质,utc为UTC(世界标准时)格式的时标。
然后分配内存区域容纳RDB_YC型的数组,typedef struct{UINT16 uDevId;UINT16 uGrpNum;UINT16 uItemNum;DATA_YC dataYc;}RDB_YC;其中uDevId用于区分监测不同油罐的液位仪设备,uGrpNum用于区分相同设备中的不同数据集,例如3.1中与液位相关的数据和与进油相关的数据属于不同的分组,uItemNum则同一个数据集中的不同数据项。
通过uDevId、uGrpNum、uItemNum可以有效地将之与数据对象的语义路径*地关联起来,如此服务器在为客户端提供数据服务时,只需查看内存中的关系数据库即可,这一方面无需担心直接向液位仪查询数据而导致服务响应超时,令一方面也不必关心具体的液位仪类型。
利用内存关系数据库的另一个优点,可以方便地检查每2次数据之间变化的值和相对值,为判断数据品质,如溢出、越界、抖动、不一致,提供直接依据。

2﹒串行数据通讯
发送命令、等待响应、接收数据、分析结果Modbus串行数据通讯的常见模式,但作者发现等待时间过短会造成响应数据接收的遗漏,等待时间过长则又会严重地影响嵌入式系统的运行效率,使得客户端的服务请求经常得不到及时的响应。经过权衡,本文采用图4所示的方式与液位仪进行数据通讯。
图4显示本文以2个独立的线程分别处理串行口数据的发送和接收工作。首先,IEC61850服务程序可以接收客户端发来的远程操作命令,同时用定时器周期性地查询液位仪以及油泵的测量数据、状态信息以及告警信息。为了使同一时刻到达的命令可以井然有序地通过串行口发送,本文用同步原语的方式将这些命令缓存于命令链表CallList中。在向CallList中添加节点之前,需要遍历链表,以确保所添加的命令类型是*的。
其次,当函数Uart_Write()被调用时,它从CallList中取出一个命令节点并以设备相关的方式构造Modbus数据报文,构造好的数据包添加到待发送数据链表SendList中。写串行口的线程周期性地检查SendList中是否有待发数据,若有则调用操作系统所提供的接口函数将数据序列写入串行口。与此同时,Uart_Write()启动超时定时器,如果所发报文在的时间内未得到响应,重发一次报文,若仍无响应,则通知IEC61850的客户端:“设备通讯连接中断"。
zui后,串行口接收线程周期地读串行口,无论读出多少数据都将之依先后顺序存入数据接收缓冲区,供数据分析函数使用。分析函数根据具体设备的Modbus规约检查数据的完整性、正确性。如果接收长度不足以构成一个完整的数据报文,则暂不作分析;如果通过数据完整性和正确性的检查就进行数据解析,根据报文的种类解析出信息结果,并将结果放入内存关系数据库中;同时将解析过程所消耗的字节数从接收缓冲区中删除,剩余数据作为下一个数据报文的内容留作以后分析使用。一次成功的数据分析说明从SendList发出的数据报文得到了正确的响应,此时即可再次触发函数Uart_Write()的执行。从这里可以看到,Uart_Write()中设置超时定时器的一个重要目的:防止所发数据报文得不到响应后,导致整个发送流程中断,进而影响与其它设备的正常通讯。
至此,本文将与具体液位仪设备相关的Modbus协议隐藏在了IED设备内部,而对外统一地显露IEC61850数据服务接口,有效地消除了传统液位仪与后台信息系统间的强耦合关系。

五、应用实践
文中所设计的智能液位变送器,本文结合常州钟楼储油罐液位仪以及油泵监测设备做了实地应用实验。所有的液位仪和油泵监测设备都通过RS485挂接在工控板的2个串行口上。设定IED的服务器名称为YG21MONT,其局域网地址为192.168.1.21,而控制中心对设备的了解只来自设备功能描述文件。借助互联网的远程登陆服务,位于南京的控制中心可成功地连接IED设备,并实现数据信息的获取,如图5所示,其中左侧是监测对象列表,右侧为监测数据现实。
应用实践表明,无论在IED设备内部获取测量数据的方式如何,但它对外都采用了统一的IEC61850数据服务,这使得数据信息系统与具体液位仪设备不再相互依赖,故而本文所设计的新型液位智能变送器是成功的。

旋入式陶瓷液位变送器 射频电容液位变送器 双法兰液位变送器  投入式液位变送器

手机:
18915183688
电话:
0517-83303550
点击这里给我发消息
 

仪表网

推荐收藏该企业网站