<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è) > 嵌入式系統 > 設計應用 > 基于RS-485總線(xiàn)多CPU控制系統簡(jiǎn)化網(wǎng)絡(luò )模型及其通訊協(xié)議

基于RS-485總線(xiàn)多CPU控制系統簡(jiǎn)化網(wǎng)絡(luò )模型及其通訊協(xié)議

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

3 系統通信協(xié)議

3.1 數據鏈路層協(xié)議

關(guān)于數據幀的定義前面已經(jīng)敘述,在這不予解釋。在多CPU的控制系統中子控制器的地址可以通過(guò)在硬件中設置一個(gè)撥碼開(kāi)關(guān),通過(guò)設置撥碼開(kāi)關(guān)的值來(lái)設置子控制器的物理地址。其網(wǎng)絡(luò )地址也就是撥碼開(kāi)關(guān)的“0”和“1”組合。在設置過(guò)程中其地址分配為:00H為主控制器,01H~FFH為子控制器。主控制器依次查詢(xún)子控制器的地址,當與某個(gè)子控制器對話(huà)的時(shí)候,其他子控制器均不作應答。

3.2 運輸層通信協(xié)議

TCP/IP運輸層有兩個(gè)主要的協(xié)議:TCP(傳輸控制協(xié)議)和UDP(用戶(hù)數據報協(xié)議)。TCP協(xié)議是面向連接的協(xié)議即發(fā)送方每發(fā)出一幀,接受方總要等待確認幀,否則認為出錯,因而該方式是一種可靠的通信方式。而UDP協(xié)議是無(wú)連接的協(xié)議,其發(fā)送方總是認為接收方接收正確,從而無(wú)需等待。這種協(xié)議雖然發(fā)送過(guò)程簡(jiǎn)單,但其可靠性不高。對于多CPU的控制系統來(lái)說(shuō),其傳輸的命令和參數都是非常重要的,所以選擇類(lèi)似于TCP協(xié)議方式,建立連接和數據幀傳送過(guò)程如圖3和4所示。

由圖3所示可知,當主控制器查詢(xún)到某個(gè)子控制器時(shí),如果子控制器有指令數據幀要發(fā)送給主控制器則子控制器發(fā)送A_S_HAVE,主控制器收到后發(fā)出應答控制字A_M_READY;如果子控制器被主控制器查詢(xún)到?jīng)]有指令數據幀要發(fā)送給主控制器,則發(fā)送A_S_OVER,告訴主控制器無(wú)數據幀發(fā)送,主控制器退出此次連接繼續查詢(xún)下一個(gè)子控制器。

由圖4所示可知,通信連接建立以后主控制器和子控制器之間可以進(jìn)行指令數據幀傳輸。當傳輸完一個(gè)數據幀后,接收方需要應答相應的連接控制字(如:“已接收一幀”即A_S_RECEIVED/A_M_RECEIVED),只有這樣才能繼續發(fā)送下一幀指令數據幀,否則認為發(fā)送不成功。

3.3 應用層通信協(xié)議

應用層是四層簡(jiǎn)化網(wǎng)絡(luò )模型中最頂層,其主要關(guān)心具體要發(fā)送什么數據和接收到數據后執行后續的操作等,而數據傳輸由應用層以下的層完成。應用層主要包含以下幾點(diǎn):

(1)數據格式:在多CPU控制系統中采用兩種格式的數據。一是本地使用的數據,為了編程方便和直觀(guān),采用ASCⅡ碼來(lái)表示。二是網(wǎng)絡(luò )通信數據,為了使通信程序高效、簡(jiǎn)潔,采用壓縮BCD碼。通過(guò)這兩種格式數據大大提高了網(wǎng)絡(luò )傳輸效率。

(2)消息:在應用層中采用WIN32操作平臺的“消息”概念來(lái)描述控制器之間的數據傳輸,其內容與指令數據幀相同。由于本地對數據處理可能很快,而數據傳輸要等待網(wǎng)絡(luò )連接建立,這樣數據本地處理和網(wǎng)絡(luò )傳輸就不能夠同步進(jìn)行,所以就必須采用緩沖機制來(lái)協(xié)調。仿照WIN32操作平臺中對消息的處理辦法,用循環(huán)隊列數據結構來(lái)緩沖消息(如圖5所示)。消息全部采用統一長(cháng)度,一般采用4個(gè)字節,隊列中每個(gè)元素為一個(gè)數組(長(cháng)度為4個(gè)字節),每個(gè)隊列中共有5個(gè)元素,采用先進(jìn)先出(FIFO)原則,并且循環(huán)使用。生成或收到的消息時(shí)先放入消息數組中,并作為一個(gè)元素放入REAL指針所指尾部入緩沖隊列(REAL加1),進(jìn)行通信時(shí)從HEAD指針所指首部取出最先進(jìn)入隊列數據幀(HEAD加1)。同時(shí)系統對當前的消息中第一個(gè)字節(控制指令)內容進(jìn)行判斷,從而進(jìn)入相應的消息處理程序。

4 通信軟件的抗干擾措施

4.1 在協(xié)議中增加差錯控制措施

當主控制器發(fā)送呼叫幀后,如果在規定的時(shí)間內沒(méi)有收到子控制器的應答幀或沒(méi)有得到正確應答幀,則認為通信失敗。只有等到下次再與該子控制器建立連接時(shí),重新完成上次未交換的數據幀。同時(shí)采用累加校驗字段來(lái)判斷數據是否正確,通過(guò)以上措施可以有效的防止通信錯誤發(fā)生。

4.2 在軟件設計中適當增加延時(shí)

當主控制器或子控制器有一種狀態(tài)轉到另一種狀態(tài)時(shí),插入一定延時(shí)(一般為幾十毫秒),其可以大大提高總線(xiàn)穩定性,從而可提高數據傳輸可靠性。

5 結束語(yǔ)

由RS-485網(wǎng)絡(luò )的多CPU控制系統的特點(diǎn),并參照ISO七層網(wǎng)絡(luò )模型和TCP/IP協(xié)議設計思想,提出了適用于該系統的四層簡(jiǎn)化網(wǎng)絡(luò )模型、各層的通信協(xié)議和數據幀的格式。在實(shí)際應用中,根據四層簡(jiǎn)化網(wǎng)絡(luò )模型及其通信協(xié)議編制的通信軟件在實(shí)際應用中效果良好、通信速度和可靠性得到大大的提高。


上一頁(yè) 1 2 下一頁(yè)

評論


相關(guān)推薦

技術(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>