一种新型的基于现场总线的水轮机组状态监测系统
2.1.2 存储空间分配
Neuron 3150芯片片内存储器的地址范围为E800H~FFF
FH,包含2KB的RAM(E800~EFFF)、0.5KB的EEPROM(F000~F1FF)、2.5KB的保留空间(F200~FBFF)和1KB的用于存储器映像I/O的空间(FC00~FFFF)。外部扩展存储器的地址由Neuron3150的地址引脚和控制引脚来确定:给FLASH ROM分配的地址空间为0000~7FFF,其中,0000~3FFF的16KB空间用于系统固件(Firmware),系统固件实现了LonTalk协议,4000~7FFF的16KB空间用于用户程序代码;给RAM分配的地址空间为8000~E7FF的24KB地址空间;将E000~E7FF的2KB地址空间分配为外部设备的内存映像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封装,然后通过以太网发送到上位机。
图3
LONWORKS网络的节点之间的通信方式主要有两种方式:网络变量和显式消息。使用网络变量不必考虑消息的打包、发送以及接收问题,可以大大简化编程,缩短应用开发周期,但每个周期变量的数据长度一经确定就不能改变,且最多只有31字节。而显式消息的数据长度则是灵活可变的,最长可以是228字节,但实现方法更为复杂。鉴于水轮机组状态监测系统对数据传输的实时性要求较高,同时需要提高足球场采集数据的上传速度,因此希望每一次传送的报文包含尽量多的数据,因而在设计中采用显示消息的方式实现与上位机的通信,每个显式消息报文携带134个字节的数据,其中的128个字节为传送的数据,另外6个字节为附加信息。报文的帧结构如图3所示。
显示报文的初始化和发送部分的实现程序如下:
初始化节点地址
#include<ADDRDEFS.H> 所需头文件
#include<ACCESS.H>
#include<MSG_ADDR.H>
domain_struct mydomain; //定义域结构
mydomain=*(access_domain(0));//读节点域表
mydomain.subnet=0; //设置节点子网号
mydomain.node=5; //设置节点号
update_damain(&mydomain,0); //写节点域表
发送数据报文
《一种新型的基于现场总线的水轮机组状态监测系统(第2页)》