现场总线水轮机组状态监测系统
这里所说的状态监测实际上是对水轮机组众多参数进行的实时在线监测。水轮机组的参数较多,为了分析方便,对部分参数还需要进行高速采样。这样,一个监测系统通常要由分布在不同现场位置的多个采集节点组成。各节点将大量的采集数据传送到上位机,由上位机从多角度评估机组的运行状态。采用全数字化通信的现场总线整合整个监测系统可以实现彻底的分散控制,抵抗各种干扰因素,简化系统的结构,提高数据传输效率。于是,本文设计实现了一种基于LONWORKS现场总线的水轮机组状态监测系统。
1 LONWORKS现场总线的技术特点
LONWORKS总线是美国Echelon公司推出的一种现场总线技术。具有开放性、高速性和互操作性;采用面向对象的设计方法,使网络通信的设计简化为参数设置,降低了开发难度;支持多种传输介质,网络容量可达32000个节点,网络通信速率可达1.25Mbps/130m,直接通信距离可达2700m/78kbps;其网络采取了配置1500V直流隔离变压器进行隔离等适合于工业现场环境的措施,具有很强的抗干扰、抗振动能力,适合于水电厂等较恶劣的工业环境。
在水轮机组状态监测系统中,有几十个现场数据采集节点,它们通过现场总线将采样结果传送到距离较远的上位机,并且数据通信频繁。考虑到LONWORKS总线技术具有强大的强信能力,以LON总线来组成系统的实时数据通信网络,极大地简化了系统的通信软、硬件设计,使数据的传输与通讯变得十分便捷。
2 系统构成
基于LONWORKS现场总线的水轮机组状态监测系统由上位监控机和多个现场监测单元组成,其系统结构如图1所示。
每个现场监测单元监测三个现场数据采集节点,现场数据采集节点的现场监测单元主要负责对现场数据进行采集、存储和传送。现场监测包括压力监测;温度监测;水位及油位等液位监测;水流量监测;机组振动摆度监测、机组电气监测、机组转速及导叶开度监测、效率监测;水沦机气蚀监测;发电机气隙监测;发电机绝缘监测;尾水管真空监测等。
各个现场采集节点通过LONWORKS总线组成一个现场监测网络。用开发的LONWORKS-ETHERNET互连适配器把LON总线上采集节点发送的数据转换为UDP格式,利用速度较高的工业以太网将其发送到上位同,再把上位下达的命令转换为LonTalk协议的形式发给各个现场节点,从而实现上位机和底层各个现场节点之间的通信。与以短训班采用昂贵的LON总线适配器的方法相比,这种方法既提高了数据的传输速度又节省了方法费用。上位机将现场节点传送上来的各种监测数据存进MS-SQLSERVER2000数据库,提供人机交互的界面,并完成实时数据的图形化、格式化显示,同时用傅立叶变、换(FT)和小波变换(WT)对数据进行分析。
2.1现场节点设计
现场节点既要接收上位机发出的采集命令,命令标准传感器采集现场信号;又要把采集到的现场信号通过LON总线送到上位机,由上位机进行处理。其结构如图2所示。
2.1.1节点组成
节点由神经元芯片Neuron3150、LONWORKS双绞线、网络收发器、程序程序器、数据存储器、十二位A/D转换芯片AD1674等组成。其中,3150神经元芯片选用TOSHIBA公司生产的TMPN3150;FLASHROM选用AT29C512;数据存储器(RAM)选用ISSI公司的IS61C256;Neuron3150芯片与LON总线的网络介质接口选用Echelon公司的自由拓扑型收发器FTT10A,它是一种变压器耦合收发器,可提供一个与双绞线的无及性接口,且支持网络的自由拓扑结构;网络通讯介质采用最常用的双绞线;A/D转换芯片采用性价比较高的AD1674芯片,其转换精度为1/2LSB,转换速率为100kSPS,具备三态输出缓冲区。
2.1.2存储空间分配
Neuron3150芯片片内存储器的地址范围为E800H~FFFFH,包含2KB的RAM(E800~EFFF)、0.5KB的EEPROM(F000~F1FF)、2.5KB的保留空间(F200~FBFF)和1KB的用于存储器映像I/O的空间(FC00~FFFF)。外部扩展存储器的地址由Neuron3150的地址引脚和控制引脚来确定:给FLASHROM分配的地址空间为0000~7FFF,其中,0000~3FFF的16KB空间用于系统固件(Firmware),系统固件实现了LonTalk协议,4000~7FFF的16KB空间用于用户程序代码;给RAM分配的地址空间为8000~E7FF的24KB地址空间;将E000~E7FF的2KB地址空间分配为外部设备的内存映像I/O的空间。
2.1.3A/D转换接口方案
本文在设计时曾考虑过使用Neuron芯片为A/D转换电路提供串行I/O及并行I/O接口方式。然而串行I/O方式速度太慢;并行I/O方式实现起来需要占用Neuron芯片全部11个I/O接口,同时还要编程实现Neuron芯片的握手/令牌传递算法,开发费用和难度比较高。因此本文将节点保留的E000~E7FF的2KB地址空间分配给A/D转换芯片,作为AD1674的端口地址,采用内存映像的方法直接读取AD1674的数据。对于本设计而言,AD1674转换数据的高8位地址为E002H,低4位数据地址为E003H。由于实现软件没有使用NeuronC的内嵌函数,因此执行速度得到大幅度的提升,实验证明,对同样采用AD1674转换芯片的节点而言,采用这种方法设计的节点,采集速度超过了其它两种方法设计的采集节点的采集速度,而且节省了Neuron芯片的全部11个I/O引脚。
3 系统通信程序的设计
3.1现场节点通信程序
现场节点向上位机发送的数据首先发送到LONWORKS-ETHERNET互连适配器,该适配器实际上是一个特殊的LONWORKS节点,它把接收到的LON总线上的数据用UDP封装,然后通过以太网发送到上位机。
LONWORKS网络的节点之间的通信方式主要有两种方式:网络变量和显式消息。使用网络变量不必考虑消息的打包、发送以及接收问题,可以大大简化编程,缩短应用开发周期,但每个周期变量的数据长度一经确定就不能改变,且最多只有31字节。而显式消息的数据长度则是灵活可变的,最长可以是228字节,但实现方法更为复杂。鉴于水轮机组状态监测系统对数据传输的实时性要求较高,同时需要提高足球场采集数据的上传速度,因此希望每一次传送的报文包含尽量多的数据,因而在设计中采用显示消息的方式实现与上位机的通信,每个显式消息报文携带134个字节的数据,其中的128个字节为传送的数据,另外6个字节为附加信息。报文的帧结构如图3所示。
显示报文的初始化和发送部分的实现程序如下:
初始化节点地址
#include所需头文件
#include
#include
domain_structmydomain;//定义域结构
mydomain=*(access_domain(0));//读节点域表
mydomain.subnet=0;//设置节点子网号
mydomain.node=5;//设置节点号
up date_damain(&mydomain,0);//写节点域表
发送数据报文
msg_tagtest_out;//声明报文标签
msg_out.tag=test_out;//传递报文标签
msg_out.dest_addr.snode.node=0;//定义目的地址节点号
msg_out.dest_addr.snode.subnet=0;//定义目的地址子网号
msg_out.code=0x0c;//定义报文码
msg_out.service=ACKD;//定义报文服务类型
msg_out.dest_addr.snode.type=1;//定义目的节点类型
memcpy(msg_out.data,a0,nLength);//填充报文内容
msg_send();//发送报文
在初始化程序中,用数据结构domain_struct定义节点的子网号、节点号,即设置节点在LON总线上的地址。在发送程序中利用msg_out结构构造报文,其中,目的地址指向适配器。显示报文的接收程序与发送部分类似,不再多述。
3.2上位机通信程序
上位机与现场节点通讯的数据通过适配器转发,适配器的IP必须事先指定。上位机利用msg_out变量(如前所述)创建显示报文,将目标节点的地址、需要改变的参数或要下达的命令填充到该变量中,然后用UDP封装该变量,通过以太网发往适配器;适配器解析上位机发来的数据包,得到显示报文,将该显示报文直接向相应的节点发送。同样,适配器也将现场节点发来的显示报文通过UDP封装后发往上位机,上位机解包后根据节点等信息将数据存入相应的数据库,等待后后续的信号处理模块和故障诊断模块调用
文章版权归西部工控xbgk所有,未经许可不得转载。