基于现场总线的水轮机组状态监测系统
I/O的空间。
2.1.3 A/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。由于实现软件没有使用Neuron C的内嵌函数,因此执行速度得到大幅度的提升,实验证明,对同样采用AD1674转换芯片的节点而言,采用这种方法设计的节点,采集速度超过了其它两种方法设计的采集节点的采集速度,而且节省了Neuron芯片的全部11个I/O引脚。
3 系统通信程序的设计
3.1 现场节点通信程序
现场节点向上位机发送的数据首先发送到LONWORKS-ETHERNET互连适配器,该适配器实际上是一个特殊的LONWORKS节点,它把接收到的LON总线上的数据用UDP封装,然后通过以太网发送到上位机。
点击图片查看大图
LONWORKS网络的节点之间的通信方式主要有两种方式:网络变量和显式消息。使用网络变量不必考虑消息的打包、发送以及接收问题,可以大大简化编程,缩短应用开发周期,但每个周期变量的数据长度一经确定就不能改变,且最多只有31字节。而显式消息的数据长度则是灵活可变的,最长可以是228字节,但实现方法更为复杂。鉴于水轮机组状态监测系统对数据传输的实时性要求较高,同时需要提高足球场采集数据的上传速度,因此希望每一次传送的报文包含尽量多的数据,因而在设计中采用显示消息的方式实现与上位机的通信,每个显式消息报文携带134个字节的数据,其中的128个字节为传送的数据,另外6个字节为附加信息。报文的帧结构如图3所示。
显示报文的初始化和发送部分的实现程序如下:
初始化节点地址
#include 所需头文件 发送数据报文 msg_tag test_out; //声明报文标签 点击图片查看大图 在初始化程序中,用数据结构domain_struct定义节点的子网号、节点号,即设置节点在LON总线上的地址。在发送程序中利用msg_out结构构造报文,其中,目的地址指向适配器。显示报文的接收程序与发送部分类似,不再多述。 3.2 上位机通信程序 上位机与现场节点通讯的数据通过适配器转发,适配器的IP必须事先指定。上位机利用msg_out变量(如前所述)创建显示报文,将目标节点的地址、需要改变的参数或要下达的命令填充到该变量中,然后用UDP封装该变量,通过以太网发往适配器;适配器解析上位机发来的数据包,得到显示报文,将该显示报文直接向相应的节点发送。同样,适配器也将现场节点发来的显示报文通过UDP封装后发往上位机,上位机解包后根据节点等信息将数据存入相应的数据库,等待后后续的信号处理模块和故障诊断模块调用。 点击图片查看大图 4 故障诊断 系统采用连续小波变换对采集的信号进行处理,通过变换结果进行故障诊断。下面以采集到的水轮机的主轴上导Y轴方向径向摆度信号(图4)的数据为例说明通过小波变换进行故障诊断的结果。 选用消息矩为4的双正交样条小波,在[1:1:48]的尺度上对时域信号进行连续小波变换。图5为摆度信号的小波系数在尺度一时间上的三维图形表示。从图中可以明显看出周期性出现的四条模极大值曲线,且总是第三条斜率较小,而正常情况下三维图中将出现平稳的锥全,这说明这些点的奇异性较强。事实上这正是由于水轮机主轴滑动摩擦造成的。通过设置阈值算法得到小波的模极大值曲线,如图6所示。两条模极大值曲线的相交点即可以精确地指向故障点。 本文结合水轮发电机组状态监测的实际需要,研究开发了一种基于LONWORKS现场总线技术的水轮发电机组状态监测系统,完成了现场数据采集节点的软硬件开发,设
#include
#include
domain_struct mydomain; //定义域结构
mydomain=*(access_domain(0));//读节点域表
mydomain.subnet=0; //设置节点子网号
mydomain.node=5; //设置节点号
update_damain(mydomain,0); //写节点域表
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();//发送报文
- 状态监测系统保障风电设备正常运转(11-30)
- 现场总线水轮机组状态监测系统(08-10)
- 基于CAN总线分布式网架健康状态监测系统(02-20)
- LonWorks技术在列车监控系统中的应用(12-21)
- LonWorks现场总线介绍(12-19)
- 基于Lonworks技术的机器人监控系统(12-19)