基于LonWorks现场总线的电能检测系统设计与实现
2008-10-30
作者:卢世超1, 罗新民1, 刘国海2
摘 要:详细介绍了基于LonWorks现场总线的电能检测系统的硬件与软件设计" title="软件设计">软件设计,在软件设计中采用了面向对象方法,并给出了其问题描述与主题层。
关键词:LonWorks 现场总线 OOA 电能检测
电力系统是一类特殊的系统,安全性和可靠性要求很高。达到这个目标的关键是要保证现场设备之间可靠通信,实现配电网综合自动化。基于LonWorks现场总线的电能检测系统是配电网综合自动化的一个子集,它完成电网数据的采集与监控。LonWorks网络是将控制系统接入局域网络(LAN),用网络节点代替LAN中的工作站,每个节点可以实现点到点的信息传送,具有极其良好的互操作性,从而使整个网络实现了无中心的真正的分布式控制模式。因此采用LonWorks总线技术可以把整个复杂配电网综合自动化系统分解为相对简单的多个子系统。LonWorks网络采用ISO/OSI模型的全部7层协议和面向对象的设计方法。通过网络变量将网络通信设计简化为参数设置,其通信速率为78.125kbps或1.25Mbps,直接通信距离可达2700m。LonWorks网络支持双绞线、通轴电缆、光纤、无线射频、红外线、电力线等多种通信介质,被誉为通用控制网络。目前已经有2600多家公司不同程度地介入了LonWorks技术,1000多家公司已经推出了LonWorks产品,并进一步组织起LonMark互操作协会。它已被广泛应用于楼宇自动化、家庭自动化、保安系统、办公设备、工业过程控制等行业。
1 基于LonWorks现场总线的电能检测系统的硬件设计
LonWorks网络系统由智能节点组成,每个智能节点可具有多种功能的I/O" title="I/O">I/O功能。在本系统中,基于LonWorks总线的网络模型如图1所示。图中,神经元芯片" title="神经元芯片">神经元芯片和通信协议是LonWorks网络的技术核心。LonWorks网络采用LonTalk通信协议,该协议可由Neuron芯片自带,也可固化在外部存储器中。神经元芯片采用3120。它有3个8位CPU,第一个用于完成LonTalk协议的第一层和第二层功能,成为介质访问控制处理器,实现介质访问的控制与处理;第二个用于完成第三层至第六层的功能,成为网络处理器,实现网络的寻址、处理、背景诊断、路径选择、软件计时和网络管理,并实现网络通信控制、收发数据包等;第三个是应用处理器,执行操作系统服务与用户程序。芯片中还具有存储信息缓冲区,用以实现CPU之间的数据传输,并作为网络缓冲区和应用缓冲区。图中,电能检测仪负责检测电网的电能参数,负责采集电网上的电压、电流、频率等变量,并能在仪表掉电时长期(时间由用户的要求和系统存储容量确定)保存数据。其具体要求为:(1)实时检测三线电压Va、Vb、Vc和四线电流Ia、Ib、Ic和Io;(2)实时检测A、B、C三相电压、电流的频率;(3)检测A、B、C三相有功、无功功率;(4)支持两种通信模式:LonWorks总线方式和RS232串行方式;(5)保存整点时刻的电压、电流等数据;(6)从仪表第一次工作时开始累计总的正常运行时间和停电时间;(7)保存月统计数据;(8)保存一个月的电能运行数据;(9)用数码管显示和键盘输入实现与用户的交互,用户可以在现场察看和设置仪表的运行参数和历史记录。图中,电容器组用于对电网的无功补偿,其它现场设备为电网自动化的其它智能节点。由于系统主要是实现其电能检测功能,因此本系统需要完成上位监控计算机的软件编制、上位监控PC机与神经元芯片3120的接口设计以及电能检测仪的设计。下面对这几个方面进行介绍。
1.1 电能检测仪的硬件设计
电能检测仪实质上是本系统的一个智能节点,它主要完成现场电能数据的采集与处理并能根据上位监控机的要求把数据传送到上位监控机,同时它也能根据用户要求设置其工作参数。在本系统中,根据具体的设计要求,电能检测仪可分为电压电流检测模块、频率检测模块、数据存储模块、多路转换模块、互感器模块、LonWorks通信模块" title="通信模块">通信模块、RS232通信模块和键盘与显示接口,其原理如图2所示。电压、电流检测模块负责实时检测三线电压、四线电流;频率检测模块负责实时检测A、B、C三相电压和电流的频率;RS232通信模块负责电能检测仪与外部RS232网络和单片机的通信;EEPROM负责长期保存用户所需的电压、电流等历史数据;LonWorks通信模块负责神经元芯片与LonWorks网络和单片机通信。RS232通信模块、键盘与显示模块、多路转换模块等技术已经非常成熟,本文不再详述。本文着重介绍LonWorks通信模块和电压电流检测模块。
普通数字电压、电流表只能测量直流电压、电流。如果要测量交流电压、电流,必须增加交流/直流(AC/DC)转换器。它一般有两种转换方式:平均值转换和真有效值转换。本系统采用真有效值方法检测电压、电流。其核心是TRMS/DC转换器,这类电路现已实现单片集成化。本系统中真有效转换芯片采用AD公司的AD536,它是一种低功耗、精密的TRMS/DC转换器;AD转换芯片采用TI公司生产的TLC1543,它是10位的ADC,最大采样速率66kbps。电压电流采样原理框图如图3所示。图中,MC14052是双四选一多路模拟开关。89C52" title="89C52">89C52的P1.5、P1.6用于选通MC14052的模拟通道。在任一时刻,只有一相电压和电流输入通道被选通。两片AD536分别对交流电压、交流电流进行真有效值转换,转换结果送到串行A/D芯片TLC1543进行模/数转换。89C52的P1.0~P1.4对TLC1543进行控制,完成采样过程。
LonWorks通信模块的功能是实现神经元芯片3120与89C52单片机的通信以及神经元芯片3120与LonWorks总线的通信。神经元芯片支持串行操作和并行操作。对于串行操作,它用得最多的是I2C总线方式。在这种总线方式下,其IO8,IO9端口可被定义成I2C总线接口(此时IO8为串形时钟线SCA,IO9为串行数据线SDA)。在软件编写上,要首先将IO8,IO9定义为I2C总线方式,定义格式为:IO_8 i2c io_object_name。
io_object_name为对该I/O对象的命名。由于IO8、IO9成对使用,故只需要定义IO8。在本系统中,选用的是并行方式。神经元芯片提供了专门的并行口通信协议,共有三种并行口通信模式,即master、slave A、slave B模式。master模式是一种智能的并行I/O对象模式,在这种模式下,神经元芯片master对从CPU发起并建立同步操作。从CPU必须是工作于slave A模式或模拟的slave A模式的神经元芯片。工作于slave A模式的神经元芯片使用了握手信号线HS,HS和数据出现在同一个时钟周期内。虽然这种模式主要用于与master模式的神经元芯片接口,但是它同样适用于外部CPU(非神经元芯片)。slave B模式与slave A模式相似。它们不同之处在于:前者的握手信号出现在不同的时钟周期内,而后者出现在同一个时钟周期。在这种模式下,主CPU必须是外部CPU。外部CPU与神经元芯片的接口可以使用slave A,也可以使用slave B。在本系统中,89C52与神经元芯片3120的通信方式采用并行方式,3120的工作模式为slave A。因为神经元芯片3120的握手信号是集电极开路,因此需要接一个上拉电阻。89C52与3120的硬件接口如图4所示。神经元芯片3120并行I/O接口包含8个I/O数据线和3个控制线。在slave A模式下,IO0~IO7为数据信号端,IO8为CS#信号端,IO9为R/W#信号端,IO10为HS信号端,CS#信号由80C52驱动,有效表示正在进行数据传输,脉冲下沿将数据写入80C52或3120中。R/W#信号在CS#有效时控制数据的读写,它由80C52控制。HS信号由3120驱动,它通知80C52、3120正处于忙状态。当HS为高电平,表示3120正在读写数据;当HS为低电平,表示3120数据已经处理完毕,可以进行下一次通信了。
神经元芯片使用令牌心会协议实现多种设备共享总线,在任何时刻只能有一个设备将数据送到总线上。虚拟写令牌在80C52与3120间进行巡回。获得虚拟令牌的CPU拥有向总线发送数据的权力,否则只能从总线上读取数据。其过程如下:如果3120具有虚拟令牌,在向总线发送完一个字节后HS变为高电平,80C52从总线上取走数据后,HS自动变为低(由神经元芯片韧件完成);如果89C52拥有写令牌,在它使得CS#和R/W#变为低电平、3120取走数据之前,一直查询IO10,如果为低,表示3120已经取走数据,可以发送下一个字节了。
1.2 LonWorks与PC机硬件接口设计
在本系统中,上位监控PC机与神经元芯片的接口是通过ISA扩展槽完成的,其原理图如图5所示。图中,GAL16V8将ISA总线的地址线A0、A1和写信号线IOW#进行译码,共有两路输出。一路用于选通神经元芯片,另一路用于控制地址锁存器74245。当74245选通时,D0和HS形成直通,PC端程序读取数据线内容,屏蔽掉D0之外的位后,获取神经元芯片的握手信号HS状态;当74245未被选通时,进行正常的数据传输。
PC机中仅使用A0~A9地址位来表示I/O口地址,即有1024个口地址。前512个提供给系统电路板使用,后512个供扩充插槽使用。当A9=0时,表示为系统板上的I/O口地址;当A9=1时,表示为扩充槽接口卡上的口地址。因此在制作接口电路卡时,其口地址要保证A9=1。在1024个口地址中,有很多已被IBM或其他厂商制作的各种与主机配套的接口卡占用,有些保留有待今后继续开发。因此一般用户可以使用的口地址范围是:200~03FF。在本系统中,经GAV片译码后,神经元芯片和地址锁存器74245的口地址分别为200H和201H。
2 基于LonWorks现场总线的电能检测系统的软件设计
本系统的软件设计主要包括两部分。第一部分为下位机的软件设计,它主要完成现场数据收集、处理与存储;配置3120的工作模式;80C52与3120进行通信,把数据传输到3120并进而传输到上位监控机等。在本系统中使用了Neuron C编程语言,现以并行口读写为例说明其特点,对并行口读写首先要用下面的语句声明并行口对象:
IO_0 parallel slave/slave_b/master io_object_name
Io_in和io_out分别用于对并行口进行读写。为了使用并行口对象,io_in和io_out需要定义parallel_io_interface结构,如下所示:
Struct parallel_io_interface{
Unsigned length; //length of data field
Unsigned data[maxlength]; //data field
}pio_name;
Neuron C内部还有许多函数和事件很容易访问神经元芯片并行I/O对象,如io_in_ready,io_out_request, io_out_ready等。
第二部分为上位监控机的软件设计,在本系统的软件设计采用了面向对象的软件设计方法。由于本系统是整个配电自动化系统的一部分,因此,它有效地提高了系统的可维护性与可扩充性。面向对象的分析是针对问题域和系统的,它分为5个层次,即对象——类层、属性层、服务层、结构层和主题层。本文将对本系统的问题域和主题层进行描述。
其问题域描述为:(1)拥有一个用户登记界面,用户需要输入现场子站的基本属性,包括配电名称、仪表号、检测容量和线路号等;(2)用户可以远程查询现场仪表的运行参数,包括量程、输入回路数、无功投入门限、投入延时、电压上下限等;(3)用户可以远程查询子站月数据、整点数据;(4)用户可以远程设置子站的运行参数;(5)允许在通信中,用户随时中断通信;(6)根据用户的查询条件可以输出报表,并提供打印功能;(7)能够维护数据库,如导入导出数据;(8)要求保存用户的最新参数设置,在每次运行程序时能够调入。
根据问题域的描述及其对象层、属性层和服务层的分析,把其主题层分为用户界面、文件系统、报表输出和通信。我们将注册表和数据库归于文件系统是由于两者都涉及文件的存储,其中CregisterTable封装了与注册表相关的API函数如RegCreateKey、RegOpenKey、RegQueryValue等,CDatabase采用动态生成技术,以方便数据库的组态。主题层的描述如图6所示。
对系统进行了面向对象分析与设计之后,即可进入软件的具体实现。本系统用Visual C++6.0开发。由于关于VC++编程的资料非常多,本文不再对数据库组态、界面组态以及上位机与下位机通信协议进行详述。
本系统是我们为广东一家公司开发的电能检测系统,已经交付使用。作为整个电网自动化的一个子集,本系统由于采用了LonWorks总线和面向对象技术,因而容易进行扩展和维护。以上较详细地介绍了基于LonWorks的电能监控系统的软硬件设计,虽然有一定的特殊性,但对于其它的LonWorks总线系统设计仍具有一定的参考意义。
参考文献
1 Echelon Corporation.LonMaker for Windows user′s guide. Version 1.0,1998
2 Echelor Corporation.Neuron C Reference Guide,1995
3 阳宪惠.现场总线技术及其应用.北京:清华大学出版社,1999
4 郑 章,陈 刚,张勇等.Visual C++6.0数据库开发技术. 北京:北京机械工业出版社,1999
5 David J.Kruglinski.Visual C++技术内幕(第四版).北京:清华大学出版社,1999