LON现场控制网络到以太网互连适配器的设计
摘要:以51单片机为核心连接LON现场控制网络与以太网互连适配器的设计方案,描述了神经元芯片使用并行I/O模式与51单片机通信的方法,介绍了51单片机控制以太网控制芯片8019as的方法。并采用C51语言实现UDP传输,完成了系统的调试与验证。
关键词:Lonworks 以太网 RTL8019as 80C51单片机
随着互联网的发展,在使用计算机进行互联的同时,各种智能家电、工业控制、智能仪器仪表、数据采集都在逐步趋向网络化。但由于以太网在实时性和可靠性的先天不足,各种现场总线技术应运而生;更因为其彻底的开放性、分散性和完全可互操作性等特点,正成为未来新型工业控制系统的发展方向。以太网以其应用的广泛性和技术的先进性,逐渐垄断了商用计算机的通信领域和过程控制领域的上层信息管理与通信。为实现上层管理网络与下层控制网络的集成,在实际中必须实现现场总线与以太网互联。
Lonworks现场总线是美国Echelon公司1991年推出的局部操作网络。Lonworks现场总线在网络通信方面具有突出优点,如网络物理层支持多种通信介质,支持多种网络拓扑结构等。目前使用Lonworks技术的产品广泛应用于工业、楼宇、家庭、能源等自动化领域。本文提出的适配器连接方案,能将LON控制网与以太网无缝连接,实现透明传输。
图1 互连适配器的电路框图
1 互连适配器硬件电路设计
适配器使用的主要芯片为神经元芯片TMPN3150、51单片机89C51RD和以太网控制器RTL8019as。主要分为Lonworks控制模块、协议转换模块和以太网通信模块。其中,协议转换由单片机内部软件完成。
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 以太网通信模块
以太网通信模块由51单片机和RTL8019as组成。以太网控制器RTL8019as由台湾Realtek公司生产,100脚PQFP封装。它支持8/16位数据总线及16个I/O基地址选择,使用Ne2000兼容的寄存器结构。它有一块16K字节的RAM,地址为0x4000~0x7fff。实际上它是双端口RAM,可以同时被网卡读/写和用户读/写,相互之间不影响。网卡读写比用户读写的优先级高。RAM分页存储,每256字节称为一页。将前12页作为发送缓冲区(0x4000~0x4bff),后52页作为接收缓冲区(0x4c00~0x7fff)。
以太网的介质访问控制、CRC校验及数据帧的接收和发送都由网卡自动完成,只需将IP包加上目的MAC地址和源地址,再通过远端DMA接口对RTL8019as内部RAM进行读写即可。网卡的地址线共20根。用到的网卡地址为十六进制的0240H~025FH,基地址为0240H,从地址240H~25FH。地址线的A19~A5是固定的000000000010010,只需5根地址线即可。所以RTL8019as输入输出地址共32个,地址偏移量为00H~1FH(对应于240H~25FH)。