摘 要: 本文详细介绍了“自动抄表及收缴费管理系统”的设计和实现过程,并以此为基础讨论了基于LonWorks的管控一体MIS系统的设计和实现问题,给出了完整的解决方案。
以现场总线为基础的
管控一体化系统
现场总线是一种新型的以智能传感器、控制、计算机、数字通信、网络为主要内容的综合技术。一方面,它把单个分散的测量控制设备变成网络节点,以现场总线为纽带,连接成可以相互沟通信息、共同完成自控任务控制网络系统,另一方面,它有和计算机系统相互通信的协议标准,可以和上层的管理信息系统进行集成和互 *** 作。图1表示了基于LonWorks现场总线的管控一体化系统的结构。
(1)现场控制层: 由传感器、执行器等智能仪表构成。
(2)过程控制层:完成基于GUI的监控功能。
(3)信息管理层:完成信息管理、生产决策等功能。
管控一体化系统设计实例
为了对管控一体化系统的设计和实现进行实践性的研究,我们设计了自动抄表和收缴费信息管理系统。
系统概述
系统采用TCP/IP(TCP/IP协议)技术和LonWorks控制网络技术(LONTALK协议),使得网络拓扑结构具有良好的可靠性和可扩展性。软件采用动态数据交换技术(DDE)和Windows可视化编程技术,实现了实时监控和信息管理二者的集成和融合,并保证了软件的可扩展性。整个系统的结构如图2所示。
整个系统包括:
TCP/IP网络数据交换机;数据服务器;自动抄表服务器;LonWorks控制网络路由器;抄表控制器;远传表。
抄表控制器的设计和实现
我们利用LonBuilder开发工具进行了抄表控制器的设计,包括硬件和软件两部分,硬件以Neuron芯片为核心元件,软件采用Neuron C语言进行编制。抄表控制器能够对电表输出的数字脉冲进行实时采集,同时将脉冲数通过LonWorks网络传输给上层的监控软件,另外还可以接受监控软件的命令对电表进行实时的关断控制。
图1 基于LonWorks的管控一体化系统的结构
图2 自动抄表及收缴费管理系统结构
图3 自动抄表控制器的硬件接口图
硬件设计
软件设计
LonWorks抄表控制器软件的主要功能是:对远传电表的输出脉冲进行实时采集和计数,并根据监控程序传来的关断命令关断相应电度表的用电电路。软件中使用了网络变量、I/O对象、自定义事件等,其中的关键点是:
?网络变量和EEPROM存储类型数据
抄表值输出网络变量NVO_DATA:这是一个用户自定义的结构类型的输出网络变量,它用来存放与此抄表控制器相连接的最多4个电度表的脉冲输出累加值。
关断控制器状态网络变量NVI_STATE:这是一个整型的标准网络变量,它的值反映了四路关断控制开关Ki(i=1,2,3,4)的状态。NVI_STATE表示为二进制数为0000N4N3N2N1,Ki的状态对应NVI_STATE的第i位(Ni) 。当Ni为0时表示Ki 断开,相应的用电电路断开,当N1为1时表示Ki 关合,相应的用电电路通畅。可以通过此状态的变化进行用电电路的关断控制。
两个EEPROM存储类型的数据:一个是用于存储电脉冲累计值的unsigned 数组sum,另一个是用于保存关断状态的整数变量state。将它们放入EEPROM存储器中,而不是放入RAM中,这样当节点掉电时,其值不会丢失。
?I/O对象
IO0-IO3被定义为leveldetect I/O对象,用于检测远传电表发来的脉冲,该对象可以以最小间隔200ns的频率将外部TTL电平脉冲的下降沿锁定。当检测到脉冲的下降沿时,I/O对象的值被设定为1,可以用when语句对该锁定值进行采样,采样的同时清除该值。
IO4——IO7被定义为bit I/O对象,用于发出关断命令。
?系统事件和自定义事件
Neuron C语言采用事件驱动机制,当事件被用户 *** 作或系统命令触发时,相应的事件程序将被执行。
系统reset事件:当节点上电或芯片复位时将首先触发此事件,程序中用此事件进行初始化工作。
脉冲采集事件:当I/O0—I/O3的数据位(dat—data4)由0变为1时将触发该事件,用于脉冲的检测并进行脉冲值的累加。
关断事件:当NVI_STATE网络变量有变化时,意味着有关断命令到来,这时将触发关断事件,它将根据NVI_STATE的值置关断开关状态。
定时器事件:程序定义了一个秒计时器,用于定时的将采集数据存入EEPROM中。
图4为软件流程。
图4 抄表控制器软件流程
监控程序设计
要对底层远传电表进行监控,需要具有DDE功能的Windows应用程序和支持LonTalk数据格式的DDE Server程序,我们选用 C++++ Builder 5.0作为监控程序的开发语言,应用LonManager DDE Sever完成监控程序程序和LonWorks网络的底层通信。使用C++ Builder的DDE Seesion组件(DdeClientConv,DdeClienTItem,DdeServerConv和DdeServerItem),我们进行了监控程序设计,它可以实时读取和显示用户用电情况,并可根据用电用户的交费情况计算资金结余情况,下传关断命令。
下面是监控程序设计时的几个关键点。
?建立DDE会话:使用DdeClientConv组件可以建立Windows应用程序和DDE Server的会话。因为监控程序和底层抄表节点的通讯是通过LonTalk网络变量,所以建立DDE会话的话题(Topic)是“netvar”,对应的连接函数调用形式为SetLink("lmsrvr1","netvar")。连接建立后再用函数OpenLink()打开会话,这样DDE会话初始化工作便完成了。
?脉冲值读取和用电量的换算:当DDE连接建立以后就可以实时进行数据的读取了,程序通过查询的方式对抄表节点输出的电量脉冲累加值进行读取,函数调用形式为:DdeClientConv1->RequestData(cn.NVO_DATA)。然后根据电表的脉冲常数(PlusConst)进行用电量的换算,将折合后的用电量存放到数组Count中。
?欠费关断功能:从抄表节点读出用电量后和用电用户的预存用电量进行比较,如果两者的差值大于给定值(MaxCredit),将对关断网络变量NVI_STATE进行修改,即向抄表节点下达关断命令,具体的函数调用形式为:PokeData (cn.NVI_STATE, IntToStr(New_State))
?用电情况的显示和实时更新:用电情况分为“个表监控”和“全表监控”两种方式在不同表单页上同步显示出来。同时为了实时更新数据,程序中定义了一个计时器组件,当计时时间间隔(可在程序中随时设定)到时,将进行脉冲的重新读取、用电量的换算和关断状态重新指定等。另外,在任何时间都可以进行手动的数据更新 *** 作。
自动抄表及收缴费管理系统的设计和实现
我们在监控程序的基础上,用C++ Builder 5.0作为开发工具,利用它提供的数据库支持功能进行了“自动抄表及收缴费管理系统”的设计和实现。它除了可以完成实时监控功能外,还可以进行用电数据的抄收、查询、打印等信息管理功能。
运用C++ Builde的BDE Administrator工具,我们为整个系统建立了一个别名为CheckBD的数据库,数据库中主要含有以下数据表:
?用电用户帐户数据表Account.dbf:存储用户基本信息和帐户信息。
?用电用户用电数据表Check.dbf:存储用户的实时用电量。
?用电基本信息数据表Info.dbf:存储电价、利率基本信息等。
?系统合法用户数据表SysytemUser.dbf:存储系统合法的 *** 作员和管理员信息。
?系统 *** 作记录数据表OperaTIon.dbf:存储系统每次的使用记录。
围绕CheckDB数据库,充分应用C++ Builder提供的数据库组件,包括数据访问组件(Data Access)、数据源组件(Data Source)和数据感知组件(Data Aware)等,就可以实现此应用系统。它除包含了一般MIS系统的基本功能外,还集成了对远传电表的监控和抄收等控制功能。
管控一体化系统开发设计的一般方法
通过“自动抄表及收缴费管理系统”这一实例的设计和实现过程,我们探索出了一套基于LonWorks现场总线技术的管控一体化系统开发设计的一般方法和步骤,现总结如下:
(1)运用Neuron神经元芯片及其上的专用语言Neuron C进行Lonworks网络控制节点的设计,实现现场控制层的功能。
(2)利用DDE技术和支持DDE的高级语言进行Windows下GUI监控程序的设计,完成LonWorks控制信息向信息管理系统的转换和传递,实现过程监控层的功能。
(3)在信息管理层,利用数据库技术和可视化技术进行以监控程序为基础的信息管理应用软件(MIS系统)的开发,完成控制功能和信息管理功能的集成,实现信息管理层功能。
通过这三个步骤便可以实现任何图1所示结构的管控一体化系统。
结语
本文详细叙述了一个管控一体化系统的设计和实现过程,并以此为实例进行了管控一体化系统设计开发一般方法、一般步骤的总结和讨论。运用这个方法可以简单、快速、高效地进行任何管控一体化系统的设计和实现。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)