2.1.1 节点组成
节点由神经元芯片neuron 3150、lonworks双绞线、网络收发器、程序程序器、数据存储器、十二位a/d转换芯片ad1674等组成。其中,3150神经元芯片选用toshiba公司生产的tmpn3150;flash rom选用at29c512;数据存储器(ram)选用issi公司的is61c256;neuron 3150芯片与lon总线的网络介质接口选用echelon公司的自由拓扑型收发器ftt 10a,它是一种变压器耦合收发器,可提供一个与双绞线的无及性接口,且支持网络的自由拓扑结构;网络通讯介质采用最常用的双绞线;a/d转换芯片采用性价比较高的ad1674芯片,其转换精度为1/2lsb,转换速率为100ksps,具备三态输出缓冲区。
2.1.2 存储空间分配
neuron 3150芯片片内存储器的地址范围为e800h~ffffh,包含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封装,然后通过以太网发送到上位机。
lonworks网络的节点之间的通信方式主要有两种方式:网络变量和显式消息。使用网络变量不必考虑消息的打包、发送以及接收问题,可以大大简化编程,缩短应用开发周期,但每个周期变量的数据长度一经确定就不能改变,且最多只有31字节。而显式消息的数据长度则是灵活可变的,最长可以是228字节,但实现方法更为复杂。鉴于水轮机组状态监测系统对数据传输的实时性要求较高,同时需要提高足球场采集数据的上传速度,因此希望每一次传送的报文包含尽量多的数据,因而在设计中采用显示消息的方式实现与上位机的通信,每个显式消息报文携带134个字节的数据,其中的128个字节为传送的数据,另外6个字节为附加信息。报文的帧结构如图3所示。