随着Ethernet(以太网)技术的发展,各种楼宇自控、智能家居、工业控制、智能仪器仪表、数据采集都在逐步实现网络化。但由于Ethernet在实时性和可靠性的先天不足,各种现场总线技术应运而生;更因为其彻底的开放性、分散性和完全可互操作性等特点,正成为未来新型工业控制系统的发展方向。Ethernet以其应用的广泛性和技术的先进性,逐渐垄断了商用计算机的通信领域和过程控制领域的上层信息管理与通信。为实现上层管理网络与下层控制网络的集成,在实际中必须实现现场总线与以太网互联。
LonWorks网络技术是美国Echelon公司1991年推出的局部操作网络。LonWorks现场总线在网络通信方面具有突出优点,如网络物理层支持多种通信介质,支持总线型、星形、环形、自由拓扑等多种网络拓扑结构等。目前基于LonWorks技术的产品广泛应用于工业自动化、智能建筑、智能家居、能源监管、电力自动化、轨道交通、船舶控制等自动化领域。
本文介绍一种LonWorks以太网适配器连接方案,能将LON控制网与Ethernet无缝连接,实现LON控制网络与Ethernet网络的透明传输。
1 互连适配器硬件电路设计
适配器使用的主要芯片为神经元芯片TMPN3150、51单片机89C51RD和Ethernet控制器RTL8019as.主要分为Lonworks控制模块、协议转换模块和Ethernet通信模块.其中,协议转换由单片机内部软件完成。
1.1 LonWorks控制模块
Lonworks控制模块主要完成对LON网数据的管理并向单片机传输数据,其核心是神经元芯片.神经元芯片与其他设备的互连是通过其11个I/O口,编程人员可以定义多个引脚为输入/输出对象。用户程序可通过io_in()和io_out()访问这些I/O对象,并在程序执行期间完成输入/输出操作。本文设计的适配器采用Neuron芯片预定义的并行I/O对象,实现了高数据速率和全双工工作方式。
并行I/O对象利用Neuron的11个I/O口进行通信。其中IO0~IO7为双向数据线,IO8~IO10为控制信号线.借助令牌传递握手协议,并行I/O口可外接处理器,实现Neuron芯片与外接各类微处理器之间的双向数据通信。并行口的速率可达3.3Mbps,工作方式有三种,即主模式、从A模式和从B模式.不同的模式下,IO8~IO10这三根控制信号线的意义不同。本文应用从A模式熡氲テ机连接如表1所示。
表1 Neuron芯片与单片机的连接
IO8 |
片选信号线(CS)接P2.5 |
IO9 |
读写信号线(R/W)接P3.6 |
IO10 |
握手信号线(HS)接P1.0 |
IO0~IO7 |
数据总线接P0.0~P0.7 |
从A模式中,Neuron芯片为从机,51单片机为主机。主机与从机间的数据传输通过虚拟的写令牌传递协议(Virtual Write Token-Passing Protocol)实现。主机和从机交替地获得写令牌,只有拥有写令牌的一方可以写数据(不超过255字节),或者不写任何数据传送一个空令牌。传送的数据要遵从一定的格式,即在要传送的数据前面加上命令码和传送的数据长度.命令码有CMD_XFER(写数据)、CMD_NULL(传递空令牌)、CMD_RESYNC(要求从机同步)、CMD_ACKSYNC(确认同步)四种,最后以EOM字节结束。写数据和传递空令牌的格式分别如表2、表3所示。
表2 写数据的格式
CMD_XFER |
Length |
Data |
EOM |
表3 传递空令牌的格式
CMD_NULL |
EOM |
1.2 Ethernet通信模块
Ethernet通信模块由51单片机和RTL8019as组成。Ethernet控制器RTL8019as由台湾Realtek公司生产,100脚PQFP封装。它支持8/16位数据总线及16个I/O基地址选择,使用Ne2000兼容的寄存器结构。它有一块16K字节的RAM,地址为0x4000~0x7fff。实际上它是双端口RAM,可以同时被网卡读/写和用户读/写,相互之间不影响。网卡读写比用户读写的优先级高。RAM分页存储,每256字节称为一页。将前12页作为发送缓冲区(0x4000~0x4bff),后52页作为接收缓冲区(0x4c00~0x7fff)。
Ethernet的介质访问控制、CRC校验及数据帧的接收和发送都由网卡自动完成,只需将IP包加上目的MAC地址和源地址,再通过远端DMA接口对RTL8019as内部RAM进行读写即可。网卡的地址线共20根。用到的网卡地址为十六进制的0240H~025FH,基地址为0240H,从地址240H~25FH。地址线的A19~A5是固定的000000000010010,只需5根地址线即可。所以RTL8019as输入输出地址共32个,地址偏移量为00H~1FH(对应于240H~25FH)。对于8位操作方式,32个地址中只有18个有用:00H~0FH共16个寄存器地址,10H为DMA地址,1FH为复位地址。本适配器采用轮询方式,不使用中断。故RTL8019as与单片机的连接如表4所示。
表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 互连适配器的软件设计
适配器的软件编写包括两部分:一部分是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网发往Ethernet的数据较多,应首先保证其优先权。且89C51RD只有1024字节的内存,无法处理大的以太网帧。经过实验比较,在最后具体实现时,选择LON最大为每帧64字节,尽量做到每收10个LON帧,发一个以太网帧,流程如图2所示。
2.3 服务器监控软件的设计
LonWorks现场总线使用网络变量的方式传送数据。一个网络变量是LonWorks网络节点的一个对象,各个节点之间的联系通过网络变量实现。当一个网络变量在一个节点中被应用程序改变时,LonTalk协议自动将新值构成隐式消息透明地发往可与之共享的其他节点,而应用程序则不必考虑发送、接收和寻址的问题.安装在服务器上的监控软件将需要改变的网络变量数据利用UDP通过Ethernet发往指定IP地址的适配器,适配器将自动完成各个数据向相应设备的传输。同样,适配器也将设备发来的网络变量使用UDP发往指定IP的服务器.使用Delphi6.0编写了一个简单的设备监控软件。实验中,它能同时管理16路的数据采集和控制,适配器达到了12kbps的峰值速率.实验模型如图3所示。
2.4 结束语
5168cc银河官网娱线路自动化公司现已推出新一代的LonWorks适配器iAdapt601,该型号采用了全隔离、全封闭式设计,运用ECHELON公司最新一代的Neuron芯片及高性能的单片机技术,满足了高端应用的需求 。
5168cc银河官网娱线路自动化LON控制网络适配器