基于DS80C410串口至以太网接口转换器的实现
扫描二维码
随时随地手机看文章
摘要:介绍了一种基于高性能51内核网络微控制器的串口至以太网接口转换器的设计方案,采用网络单片机DS80C410,利用集成的MAC通过以太网收发器与以太网相连,借助TINI SDK软件开发包通过Java编程实现串口和以太网之间的数据通讯。串口至以太网接口转换器使得带有RS232/422/485通讯接口的设备和以太网服务器进行数据流传输,通过以太网服务器对串口设备进行实时监控。
关键词:串口;以太网;DS80C410;LXT972ALC;Java
1 引言
互联网硬件和软件的迅猛发展,使得各种电气设备、仪器仪表以及生产过程中的数据采集与控制设备逐渐走向网络化。计算机技术、测控技术、网络与通讯技术不断发展与融合是一个必然的趋势。目前以太网已经广泛应用于计算机网络,成为互联网链接不可缺少的部分,另外以太网一般都基于TCP/IP协议,使得整个网络只有一种互联通讯协议,满足控制系统各个层次的要求,而且易于和Internet实现无缝连接。现今大多数现场设备通过串口与外界通讯,甚至串口是它们与外界通讯的唯一通道,串口设备的广泛使用以及对设备上网能力的不断需求,使得如何实现串口到以太网的转换显得尤为重要。DS80C410利用集成的MAC通过物理层器件与以太网相连,借助TINI SDK软件开发包可以轻松实现串口至以太网的接口转换。
2 系统硬件
2.1 DS80C410简介
DS80C410是与8051兼容的高度集成的网络微控制器。它内置一个10/100bps的以太网MAC,3个串行端口,1个CAN2.0B控制器,一个1-Wire控制器和64个I/O口,具有64K字节内部SRAM,用于存储用户应用和网络堆栈。为了便于访问网络,在ROM中提供了一个完整的、可被应用访问的TCP / IP 协议栈, 支持IPv4 和IPv6, 可执行UDP, TCP, DHCP, ICMP和IGMP,协议栈支持32个TCP连接而且可以通过以太网MAC以5Mbps的速度发送数据。最高达75MHz的系统时钟频率使最短指令周期仅有54ns。为了加快微控制器和内存之间的数据传输, ROM包含固件用DHCP连接TFTP来实现以太网的网络启动。
DS80C410内部集成了10/1000Mbps的以太网控制器(MAC),它支持使用以太网/IEEE802.3协议的物理设备。它通过一个介质无关接口(MII)提供了接收、发送和流控制机制。MII包含了一个串行管理总线,它可以用来设置外部物理设备。MII可以设置为半双工和全双工模式,速率可以是10Mbps和100Mbps,也可以设置成支持1OMbps的ENDEC操作模式。以太网控制模块如图1所示:
缓冲控制单元(BCU):是所有DS80C410以太网操作的中央控制器,通过一系列特殊功能寄存器控制CPU与以太网控制模块的读/写操作。
命令/状态寄存器(CSR):旨在控制与检测以太网操作过程。
介质无关接口(MII):包括两个基本模块,即MII I/O模块和MII管理模块。MII I/O模块提供独立的发送和接收数据路径和物理层网络状态信号输入,MII管理模块执行2线串行通讯总线便于访问物理层寄存器。
地址检测模块(Address Check):监控所有输入数据包的目的地址,根据CPU配置的过滤标准决定是转发还是丢弃。地址检测结果和帧类型信号位一起由BCU存入数据包接收状态字中。
发送/接收缓冲寄存器(Tx/Rx):DS80C410用8KB内部SRAM作为发送/接收数据包的缓冲寄存器,CPU可用MOVX指令访问数据存储器,BCU也可以访问SRAM,在需要存储或找回以太网数据包信息时可自动读/写缓冲寄存器。
电源管理模块(Power Management):可以通过CPU设定为休眠模式,在不处理以太网通信时以便节省电源[1]。
2.2 LXT972ALC简介
LXT972ALC是一个遵守快速以太网协议的接口收发芯片,支持10/100MAC的标准MII,它是物理层设备,完成参考模型中以IEEE802.3标准定义的物理编码子层、物理媒体附加层和物理媒体独立子层的功能。LXT972ALC设备实现了标准IEEE802.3定义的MII提供了从MAC到LXT972ALC数据传输的独立通道。每一个通道都有各自的时钟、数据总线和控制信号[3]。MAC每一次发送都使用先导模式,当LXT972ALC检测到先导符时,它发送一个帧开始符,然后进行编码和发送数据包的剩余部分,包含包数据和CRC。当包结束时,LXT972ALC发送包结束分解符,然后转为发送空闲标识符。
2.3 转换器的硬件连接
基于DS80C410串口至以太网接口转换器的硬件连接如图2所示。
串口采用MAX202实现TTL电平到RS232电平的转换,通过RS232标准接口(DB9)接入外部串口设备。以太网收发器的输出经过网络变压器的隔离接入RJ45通过5类双绞线电缆连接10/100BASE-T以太网。
3 软件部分
DS80C410 MCU内部64KB的ROM程序中包含完全符合工业标准的完整的TCP/IP IPv4/v6 协议栈,抢占式调度程序和可以装载应用程序的网络引导程序、串口引导装载程序。系统启动时,ROM对单片机的串口0进行初始化,微控制器通过串口0和开发主机通信,向Flash写入程序。应用程序使用Java来开发,借助软件开发工具包TINI SDK在开发主机上完成,TINI SDK将DS80C410中的硬件部分虚拟成Java的类,通过调用相关的方法实现对硬件的操作。TINI SDK提供了Java程序的运行环境,在主机上开发Java应用程序经过转换,即可在目标系统上运行。以串口设备到以太网服务器数据流传输程序为例,包括串口到以太网主线程、维持线程,串口发送、串口接收子线程。各流程图分别如图3 、4、5、6所示:
串口到以太网的主程序包括串口参数、流控制模式的设定,串口输入输出流的初始化,流量计数器的设定和初始化,接收超时、接收门限的设定(接收门限为缓冲容量长度,接收超时设为100ms),连接网络服务器,创建并启动串口接收和发送子线程,启动维持线程。维持线程用于周期(周期为1分钟)更新和统计接收和发送的数据流量。串口接收以太网数据是通过网络接口从网络结点上获取数据并送至以太网缓冲区,再通过串口将数据流发送到串口设备。串口向以太网发送数据是把有效数据读到串口接收缓冲区,通过向网络缓冲区写数据把串口数据发送到网络结点(或服务器),并且对这两个进程进行监视,并确认是否出现异常(网络连接关断或流量计数器异常)。
Java编程要点:申明串口到以太网扩展线程类,申明内部串口类及相应的输入输出流对象,内部网络接口类及相应的输入输出流对象。输入流对象就是可以从其获得连续字节的对象,输出流对象就是可向其输入一系列字节的对象。在串口接收子线程中,将网络数据写到串口是通过调用串口输出流的写方法,将以太网缓冲器中接收到的数据发送到串口,具体为:spout.write(ethbuf,0,count) ,spout为串口输出流对象,write()为写方法作用是将数组ethbuf中count个字节写入串口输出流中,参数ethbuf为长度为1024的数组,参数0表示从数组的0处开始发送,参数count为以太网缓冲器中接收到的数据长度。类似的,在串口发送子线程中,将串口数据发到网络服务器是通过网络输出流的写方法,将串口输入缓冲器中的数据发送到网络服务器,具体为:sout.write(serbuf,0,count),sout为网络接口输出流对象,参数count为串口接收缓冲区中接收到的数据长度,其余同上不再细说。
4 结论
本文作者创新点:采用嵌入式以太网控制器,节省了外围器件,硬件电路设计相对简单,系统开发周期较短,开发成本相对较低;数据通信采用面向对象的Java语言,采用多线程技术,提高CPU工作效率;设计网络化的测量和控制装置。基于DS80C410串口至以太网接口转换器可以实现串口设备和以太网服务器的数据流传输,通过以太网服务器对串口设备进行监控。串口设备和以太网的连接有助于提高数据传输效率,克服串行通讯本身传输速度慢,传输距离短的限制。目前广泛用于厂站自动化的大量国内外保护测量设备都只有RS232/422/485通讯接口,串口设备通过外部转换增加上网能力可能更符合实际要求,这就使得串口到以太网转换器的实现具有现实性和应用可能性。