LON现场控制网络到以太网互连适配器的设计
表4 RTL8019as单片的连接
IORB | 读信号,接P3.6 |
IOWB | 写信号,接P3.7 |
RSTDRV | 复位信号,P3.4 |
AEN | 地址信号,接地 |
IOCS16 | 接下拉电阻,选择8位模式 |
S0~S7 | 数据总线,接单片机P0口 |
A19~A10,A6 | 地址线接地 |
A9,A5 | 接P2.5(高电平时选中) |
A4~A0 | 接单片机P2.0×P2.4 |
表5 单片机发往RTL8019as的数据格式
以太网首部 | IP首部 | UDP首部 | 数据 |
14字节 | 20字节 | 20字节 | 128×n字节 |
本适配器使用UDP传送数据,同时支持ICMP的回应应答和回应请求报文(Ping命令),单片机发往RTL8019as的数据帧格式如表5所示。
用单片机实现UDP协议要作一些简化,不考虑数据分片和优先权。因此,在IP首部中不讨论服务类型和标志偏移域,只需填“0”即可。
1.3 互连适配器的硬件电路设计
由于P89C51RD2只有四个8位I/O口,无法同时与RTL8019as 和TMPN3150通信,故使用P0口作为数据总线。P2.5作为片选信号,高电平为RTL8019as,低电平为TMPN3150。图1给出了互连适配器的电路框图。其中3150和RTL8019as复用同一条8位数据线,依靠P2.5进行片选。当P2.5高电平时,RTL8019as地址(1XXXXX)有效,被选中。Max232作为单片机的下载线,互联适配器也可使用RS232口与计算机通信。
图2 适配器工作流程图
2 互连适配器的软件设计
适配器的软件编写包括两部分:一部分是TMPN3150上用Neuron C语言编写;另一部分是在P89C51上用C51语言开发TCP/IP协议栈和与TMPN3150、RTL8019as的通信软件,可读性强,可方便地移植到其他51核心单片机上。
2.1 适配器的初始化
P89C51单片机和TMPN3150之间先建立握手信号,即HS信号有效(由TMPN3150的固件自动实现);然后,主机发送一个CMD_RESYNC命令,要求从机同步,而从机接收到这个信号后,则发送CMD_ACKSYNC,表示已同步,可以通信了。RTL8019在通信前要先读取93C46的内容并设置内部寄存器的值(配置寄存器CONFIG1~4,网络节点地址),再由89C51对RTL8019的页0与页1相关寄存器进行初始化,即可正常工作。
2.2 适配器工作流程
考虑到LON网主要作为监控网络,特别在楼宇自动化中的监控,由LON网发往以太网的数据较多,应首先保证其优先权。且89C51RD只有1024字节的内存,无法处理大的以太网帧。经过实验比较,在最后具体实现时,选择LON最大为每帧64字节,尽量做到每收10个LON帧,发一个以太网帧,流程如图2所示。
javascript:window.open(this.src);" style="cursor:pointer;"/>
2.3 服务器监控软件的设计
Lonworks现场总线使用网络变量的方式传送数据。一个网络变量是Lonworks网络节点的一个对象,各个节点之间的联系通过网络变量实现。当一个网络变量在一个节点中被应用程序改变时,LonTalk协议自动将新值构成隐式消息透明地发往可与之共享的其他节点,而应用程序则不必考虑发送、接收和寻址的问题。安装在服务器上的监控软件将需要改变的网络变量数据利用UDP通过以太网发往指定IP地址的适配器,适配器将自动完成各个数据向相应设备的传输。同样,适配器也将设备发来的网络变量使用UDP发往指定IP的服务器。使用Delphi6.0编写了一个简单的设备监控软件。实验中,它能同时管理16路的数据采集和控制,适配器达到了12kbps的峰值速率。实验模型如图3所示。