基于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層分別處理即可。
評論