<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于Ethernet現場(chǎng)總線(xiàn)的多協(xié)議網(wǎng)絡(luò )通信系統設計與實(shí)現

基于Ethernet現場(chǎng)總線(xiàn)的多協(xié)議網(wǎng)絡(luò )通信系統設計與實(shí)現

作者: 時(shí)間:2016-12-20 來(lái)源:網(wǎng)絡(luò ) 收藏

DM9000A是一款完全集成的和符合成本效益單芯片快速以太網(wǎng)MAC控制器與一般處理接口,一個(gè)10/100M自適應PHY和內部集成的16 KB的SRAM(其中13KB用作接收緩沖區,3 KB作為發(fā)送緩沖區),對內部存儲器訪(fǎng)問(wèn)支持8位和16位數據接口以適用于不同的徽處理器;數據存取使用16bit模式時(shí),理論最高速度可達800Mbit/s(但DM9000A被設計為100M以太網(wǎng).因此最大速度被限定為100 Mbit/s)。DM9000A功耗非常低,單電源3.3 V工作,內置3.3 V變2.5 V電源電路,I/O端口支持3.3 V~5 V的容差。

2 軟件設計

2.1軟件結構設計

在單片機的方案中實(shí)現多種嵌人的協(xié)議棧,一個(gè)很大的問(wèn)題是單片機的資源有限。并且基于網(wǎng)絡(luò )的環(huán)境.一定是多用戶(hù)多任務(wù)的環(huán)境,因此,要達到實(shí)時(shí)性的要求,需要合理實(shí)現多種協(xié)議棧的流程,在單片機的實(shí)現方案下。必須進(jìn)行任務(wù)的優(yōu)化處理與調度。

本課題中以嵌入的SERCOSIII協(xié)議與TCP/IP協(xié)議棧實(shí)現為例,采用面向對象的編程思想,并重點(diǎn)介紹了SERCOS對象中SERCOSIII協(xié)議的實(shí)現與Main對象中以太同驅動(dòng)程序的設計,如圖5為軟件模塊結構,而SERCOSIII協(xié)議與TCP/IP協(xié)議在系統中相應架構如圖6所示。圖5中設置的6種對象:

(1)kernel對象:是系統核心。封裝了程序任務(wù)區、任務(wù)調度塊,以及有關(guān)任務(wù)調度的相關(guān)過(guò)程,保證所有對象能夠快速有序地被執行處理。

(2)Mac對象:是以太同數據幀處理核心。將接收到的數據及即將發(fā)送到的數據進(jìn)行以太網(wǎng)解封與封裝處理任務(wù)。

(3)DM9000對象:封裝了有關(guān)硬件設備的數據處理(發(fā)送和接收)功能。每個(gè)硬件芯片生成一個(gè)對象。如采用兩片DM9000,則有兩個(gè)DM9000對象。

(4)Sercos對象:是SERCOS協(xié)議處理的核心。封裝了有關(guān)SERcos協(xié)議的全部數據處理過(guò)程,實(shí)現了SERCOSIII協(xié)議的初始化及運行。

(5)Tcpip對象:是TCP/IP協(xié)議處理的核心。封裝rARP、IP、ICMP、TCP、UDP和HTTP六種協(xié)議的數據處理過(guò)程,主要實(shí)現上層管理層PC機對底層現場(chǎng)設備的遠程訪(fǎng)問(wèn)。

點(diǎn)擊放大圖片

圖5軟件模塊結構圖

點(diǎn)擊放大圖片

圖6軟件協(xié)議架構圖

2.2 Mac對象設計

系統軟件協(xié)議架構如圖6所示,在物理層與數據鏈路層的數據即為圖5的MAC對象,DM9000A從網(wǎng)絡(luò )端口列45接收到數據包進(jìn)行數據的解封后數據再往上層傳輸時(shí),CPU對端口讀取的數據則需進(jìn)行判斷再分類(lèi)處理。圖7所示為硬件上電后系統的初始化流程圖,首先清空串口接收緩沖區,接下來(lái)進(jìn)行Globallnit()、Kemellint()、SERCOSIint()及本地MAc地址初始化,其中Globallmt()包括:串口UART0_Ini()、網(wǎng)卡芯片1DM90001_init()、網(wǎng)卡芯片2DM90002_init()、GPIO口GPIO_Init()及中斷的初始化;再加載任務(wù)驅動(dòng)設備列表和加載系統定時(shí)器,其中加載任務(wù)驅動(dòng)設備列表為:HTTP、IP、ICMP、ARP、SERCOS、Ethernet、Ping等協(xié)議的收發(fā)任務(wù)。最終系統進(jìn)入一個(gè)任務(wù)處理的無(wú)窮循環(huán),先查找TaskReadyFind(&TaskNo,ALL_TYPE。COMM_TYPE)是否有就緒任務(wù)等待執行,該類(lèi)任務(wù)是指(TCP/IP協(xié)議族),如有則先執行一個(gè)就緒任務(wù),任務(wù)結束后進(jìn)行Netflgl判斷,沒(méi)有就緒任務(wù)則直接進(jìn)行Netflgl判斷,當其N(xiāo)etflgl大于等于1時(shí),則證明網(wǎng)卡1接收到數據包,進(jìn)而對包判斷,如果該數據包的站類(lèi)型為從站且數據包為SERCOS包,則接收數據。當不能同時(shí)滿(mǎn)足數據包的站類(lèi)型為從站且數據包為SERCOS數據這兩個(gè)條件時(shí)。再判斷站類(lèi)型是否為最后從站,是則接收數據,不是則轉發(fā)數據且表明該包為T(mén)CP/IP協(xié)議族包。當Netflgl與Netfi92都為0時(shí),則初始化SERC0SIII協(xié)議。

2.3 SERCOSIII對象設計

SERCOS(serial real time communication specification)是一種用于數字伺服和傳動(dòng)系統的現場(chǎng)總線(xiàn)接口和數據交換協(xié)議,能夠實(shí)現工業(yè)控制計算機與數字伺服系統、傳感器和可編程控制器I/O口之間的實(shí)時(shí)數據通訊。SERCOS-III是SER-COS接口的最新版本,使用了工業(yè)以太網(wǎng)作為傳輸機制。由圖6可知,SERCOS協(xié)議在層次上相當于TCP/IP模型的3~5層。兩種協(xié)議的數據鏈路層和物理層是完全相同的,因此協(xié)議開(kāi)發(fā)僅需針對模型3~5層分別處理即可。



評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>