基于Ethernet现场总线的多协议网络通信系统设计与实现
DM9000A是一款完全集成的和符合成本效益单芯片快速以太网MAC控制器与一般处理接口,一个10/100M自适应PHY和内部集成的16 KB的SRAM(其中13KB用作接收缓冲区,3 KB作为发送缓冲区),对内部存储器访问支持8位和16位数据接口以适用于不同的徽处理器;数据存取使用16bit模式时,理论最高速度可达800Mbit/s(但DM9000A被设计为100M以太网.因此最大速度被限定为100 Mbit/s)。DM9000A功耗非常低,单电源3.3 V工作,内置3.3 V变2.5 V电源电路,I/O端口支持3.3 V~5 V的容差。
2 软件设计
2.1软件结构设计
在单片机的方案中实现多种嵌人的协议栈,一个很大的问题是单片机的资源有限。并且基于网络的环境.一定是多用户多任务的环境,因此,要达到实时性的要求,需要合理实现多种协议栈的流程,在单片机的实现方案下。必须进行任务的优化处理与调度。
本课题中以嵌入的SERCOSIII协议与TCP/IP协议栈实现为例,采用面向对象的编程思想,并重点介绍了SERCOS对象中SERCOSIII协议的实现与Main对象中以太同驱动程序的设计,如图5为软件模块结构,而SERCOSIII协议与TCP/IP协议在系统中相应架构如图6所示。图5中设置的6种对象:
(1)kernel对象:是系统核心。封装了程序任务区、任务调度块,以及有关任务调度的相关过程,保证所有对象能够快速有序地被执行处理。
(2)Mac对象:是以太同数据帧处理核心。将接收到的数据及即将发送到的数据进行以太网解封与封装处理任务。
(3)DM9000对象:封装了有关硬件设备的数据处理(发送和接收)功能。每个硬件芯片生成一个对象。如采用两片DM9000,则有两个DM9000对象。
(4)Sercos对象:是SERCOS协议处理的核心。封装了有关SERcos协议的全部数据处理过程,实现了SERCOSIII协议的初始化及运行。
(5)Tcpip对象:是TCP/IP协议处理的核心。封装rARP、IP、ICMP、TCP、UDP和HTTP六种协议的数据处理过程,主要实现上层管理层PC机对底层现场设备的远程访问。
图5软件模块结构图
图6软件协议架构图
2.2 Mac对象设计
系统软件协议架构如图6所示,在物理层与数据链路层的数据即为图5的MAC对象,DM9000A从网络端口列45接收到数据包进行数据的解封后数据再往上层传输时,CPU对端口读取的数据则需进行判断再分类处理。图7所示为硬件上电后系统的初始化流程图,首先清空串口接收缓冲区,接下来进行Globallnit()、Kemellint()、SERCOSIint()及本地MAc地址初始化,其中Globallmt()包括:串口UART0_Ini()、网卡芯片1DM90001_init()、网卡芯片2DM90002_init()、GPIO口GPIO_Init()及中断的初始化;再加载任务驱动设备列表和加载系统定时器,其中加载任务驱动设备列表为:HTTP、IP、ICMP、ARP、SERCOS、Ethernet、Ping等协议的收发任务。最终系统进入一个任务处理的无穷循环,先查找TaskReadyFind(&TaskNo,ALL_TYPE。COMM_TYPE)是否有就绪任务等待执行,该类任务是指(TCP/IP协议族),如有则先执行一个就绪任务,任务结束后进行Netflgl判断,没有就绪任务则直接进行Netflgl判断,当其Netflgl大于等于1时,则证明网卡1接收到数据包,进而对包判断,如果该数据包的站类型为从站且数据包为SERCOS包,则接收数据。当不能同时满足数据包的站类型为从站且数据包为SERCOS数据这两个条件时。再判断站类型是否为最后从站,是则接收数据,不是则转发数据且表明该包为TCP/IP协议族包。当Netflgl与Netfi92都为0时,则初始化SERC0SIII协议。
2.3 SERCOSIII对象设计
SERCOS(serial real time communication specification)是一种用于数字伺服和传动系统的现场总线接口和数据交换协议,能够实现工业控制计算机与数字伺服系统、传感器和可编程控制器I/O口之间的实时数据通讯。SERCOS-III是SER-COS接口的最新版本,使用了工业以太网作为传输机制。由图6可知,SERCOS协议在层次上相当于TCP/IP模型的3~5层。两种协议的数据链路层和物理层是完全相同的,因此协议开发仅需针对模型3~5层分别处理即可。
评论