微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于Ethernet现场总线的多协议网络通信系统设计与实现

基于Ethernet现场总线的多协议网络通信系统设计与实现

时间:12-20 来源:互联网 点击:

中以太同驱动程序的设计,如图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层分别处理即可。

图7系统驱动程序框图

SERCOSIII协议初始化过程包括CP0~CP4五个阶段,CP0~CP3为接口初始化的阶段。CP4是正常通信阶段。其初始化流程图如图8所示。CP0的作用是检测环路是否闭合和确定环路的延时。在CPO阶段,主机通过发送同步信息来检测环路,当检测环路为闭合时,系统进入下一通讯阶段CPI,在CP0阶段的主要函数为void SendCP0(),它的作用是发送CP0阶段的信息,在CP0阶段MDT数据区40字节。AT数据区512字节。CPI是识别所有连接在环路上的伺服装置,主站向环路发送包含待识别的伺服装置地址的MDT与AT电报,其中MDT与AT发送时间小于650/us(下同),当环路上所有装置都作出正确的应答,则可以进入下一个通信阶段CP2。CPI阶段的函数主要为void SendCPl(),功能为发送CPl阶段的参数,在该阶段MDT、AT数据区均1280字节。CP2是通过非周期数据的传输,完成主站向各个伺服装置发送周期通信所需要的配置参数,实现过程与CPl阶段相同,MDT中包含每个从机的地址及配置数据,配置成功从站回复主站AT包作为应答。在CP2阶段的主要函数为发送函数void SendCP2()和参数配置函数void InitCP2Idn()。CP3是通过非周期数据传输设置各伺服装置的运行参数,在CP3阶段,主站向各从站发送MDT与AT报文,各伺服装置都能接收本机报文后回复AT作为应答,在CP3阶段主要的函数为发送函数voidSendCP3()和参数配置函数InitCP3Idn()。CP4是正常的通讯阶段,初始化CP4阶段实时数据队列函数InitCP4RTData()。在CP1~CP4的任何阶段中,从站只要超过65ms没有收到新的MDT0报文,则自动切换到CP0阶段。且

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top