趙磊 穆蔚偉 杜石雷



摘 要:工業現場多從機通訊廣泛的應用于各類現場通訊系統中,本文提出了基于雙RS-485總線的多節點快速通訊的協議實現方法,通過雙路RS-485總線連接與主控器與多個節點間,在不影響正常的數據上傳交互條件下,同時有效的提高了即時控制指令的下發與執行效率;該系統采用私有化精簡通訊協議,以適應多節點、多功能的高效率通訊。
關鍵詞:工業控制;數據采集;RS-485
中圖分類號:TP273 文獻標識碼:A DOI:10.3969/j.issn.1003-6970.2021.02.018
本文著錄格式:趙磊,穆蔚偉,杜石雷.基于雙RS-485總線的多從機高效通訊協議的設計與實現[J].軟件,2021,42(02):061-063
Design and Implementation of Multi-Slave High-efficiency Communication Protocol Based on Dual RS-485 Bus
ZHAO Lei, MU Yuwei, DU Shilei
(Zhonghuan Information College Tianjin University of Technology, Tianjin? 300380)
【Abstract】:Industrial field multi-slave communication is widely used in various field communication systems. This article proposes a protocol implementation method for multi-node fast communication based on dual RS-485 buses, which one is connected to the master through dual RS-485 buses with multiple nodes, without affecting normal data upload interaction conditions, while effectively improving the issuance and execution efficiency of real-time control instructions; the system adopts a privatized and streamlined communication protocol to adapt to multi-node, multi-functional high efficiency communication.
【Key words】:industrial control;data acquisition;RS-485
0引言
工業現場多從機通訊通訊廣泛的應用于各種工業控制中,目前在工業控制中多從機的數據通訊常見于基于RS-485的Modbus-RTU協議,但在對實時控制及數據通訊并存的系統中,Modbus-RTU協議的通訊效率難以達到某些應用場景,無法兼顧數據采集、以及實時控制的要求,本文提出了一種基于雙RS485總線的多節點通訊協議,在較多從機接入總線時,可以有效的提高控制指令于數據采集的通訊效率。
1物理層設計
采用RS-485串行總線作為物理層設計,系統中采用雙路RS-485總線連接于系統主機與多個從機之間,RS-485總線采用平衡發送,差分接收的結構設計,因此具有抑制共模干擾的能力,采用總線式連接,實現一主多從機的鏈路結構,物理鏈路采用雙路通訊設計:控制總線、數據總線,在主從通訊中,控制總線多用于實時性較高的控制指令下發,以主機發送數據為主,當各個從機接收到指令校驗正確后立即執行相應操作,以提高控制指令的實時性。數據總線多用于常規性數據采集,主機常以輪詢方式采集各個從機數據。物理層連接方式如圖1所示。
RS-485通訊是基于通用異步串行通訊的協議標準,標準的異步串行通訊協議中以每個字節作為一幀,由多個字節組成的數據流進行通訊,通訊雙方或多方事先約定好通訊速率,按照此速率組成數據幀進行通訊。異步串行通訊幀結構由以下位構成:
起始位:先發出一個邏輯”0”信號,表示傳輸字符的開始。
數據位:緊接著起始位之后。數據的個數可以是4、5、6、7、8等,構成一個字符。通常采用ASCII碼。從最低位開始傳送,靠時鐘定位。
校驗位:數據位加上這一位后,使得“1”的位數應為偶數(偶校驗)或奇數(奇校驗),以此來校驗數據傳送的正確性。
停止位:它是一個字符數據的結束標志。可以是1位、1.5位、2位的高電平。
空閑位:處于邏輯“1”狀態,表示當前線路上沒有數據傳輸。
本系統中使用規定為1位起始位,8位數據位,無校驗位,1位停止位,為保證控制指令的數據穩定性,同時提高數據交互的效率,本系統中控制總線通訊速率為19200bps,數據總線通訊速率為115200bps,主機及各個從機均以此設置進行通訊。
2數據鏈路層設計
本系統中數據以十六進制格式構成的幀結構進行通訊,由于系統中主機設備、從機設備均連接于同一總線,每個設備將以1個字節的地址作為唯一標識,主機設備的地址固定為0x00,從機地址由設備自行固定從0x01開始編碼,最大支持128個設備,但須保持各個從機設備的地址唯一,0xFF表示廣播地址,所有設備均接收此數據。
主機在發送數據時在數據幀中標記接收從機,從機接收到數據后首先校驗數據幀的完整性,校驗成功后提取數據幀的地址字段,判斷是否屬于本機地址,將屬于本機地址的指令進行處理,并執行相應操作。
數據采用幀結構進行發送,每幀數據由可變長度字節數據構成,控制總線、數據總線均按照該幀結構進行通訊。該數據幀由幀頭、地址、功能碼、幀長度、數據、校驗字節構成,結構示意圖如圖2所示。
幀頭:幀頭占用1字節,由系統固定設置為0xFE,作為該數據幀的起始同步字符的開始。
地址:地址字節為數據接收方地址,由數據發送方確定,符合地址設定的從機正常接收并處理數據,不符合地址設定的從機自動放棄。
功能碼:功能碼為指示該幀功能作用,由數據發送方確定,數據接收方根據指令集進行指令、數據處理。
幀長度:幀長度用來標記該幀中有效載荷的數據長度,長度有效值為0-250字節。
數據:該部分為幀中有效載荷,用于傳輸數據使用,當該指令無需參數或數據時,該字節長度為0,當該指令含有數據,則該部分數據長度由幀長度字節標定的數據長度為準,添加數據。
校驗:校驗采用CRC-8對幀中所有字節進行校驗,校驗數據從幀頭開始截止到校驗字節前。當接收方接收到數據時,首先需要對數據幀進行校驗,以保證數據的準確性。
數據中固定參數占用5字節,有效載荷長度可變最少為0字節,最多為250字節,即數據幀總長度最少為5字節,最大為255字節;由于幀最大長度較小,可以有效的提高數據通訊的效率。
數據幀的界定由時間差決定,每幀數據中的字節間隔不得超過單字節數據通訊時長,該時長根據通訊波特率決定;協議規定各個數據幀之間的時間差最少為5倍單字節數據通訊時長,控制總線典型空閑時間約為4.2毫秒(波特率9600bps),數據總線典型空閑時間約為0.35毫秒(波特率115200bps),即總線上接收數據的設備根據總線空閑時間判斷一幀數據是否完成傳輸。協議規定當指令需要從機進行反饋時,從機從接收到數據至回饋數據發送間隔必須保證在100毫秒內,否則主機則認為從機故障。
3應用層設計
為了提高系統控制通訊的效率,系統采用控制指令與數據采集同步運行的工作方式,在通訊協議中預設控制指令功能碼與數據采集功能碼,分別應用于控制總線與數據總線。
控制指令以主機發送控制執行為主,因此當發生控制命令后可立即下發控制指令于從機,無需考慮數據采集總線工作情況,從而提高了控制指令的實時性,控制指令可以采用指定地址接收,也可以采用廣播接收方式,用于對單個從機,或所有從機進行控制指令的下發。當從機接收到控制指令,如接收成功可立即執行,如果指令接收失敗或校驗錯誤,則由從機發送錯誤指令至主機,主機重新發送。
主機下發控制指令后相應從機接收到指令解析成功后立即執行,如由物理鏈路造成數據錯位導致校驗失敗,或從機不支持相應控制指令導致控制指令執行失敗,此時從機需立即向主機發送錯誤代碼,主機根據錯誤代碼進行重發或異常處理。控制指令通訊流程如圖3所示。
數據采集指令以主機輪詢從機的方式進行,當從機接入較多時輪詢時間將會相應增加,因此數據采集指令適用于實時性要求不高的數據采集,主機通過輪詢方式以此發送采集指令,各個從機接收到采集指令,接收成功后上傳數據,主機接收到數據后進行下一從機的輪詢。
主機根據已接入總線的設備依次下發數據采集指令,對應從機接收到數據采集指令后對指令進行解析,并根據相應要求在規定時間內回復數據,當超過回饋時間,主機則認為數據采集指令未收到或接收錯誤,并進行重發,當多次指令未回饋,認為從機掉線,主機做出相應異常告警,并將該地址從機屏蔽,對其他正常從機繼續進行數據采集。數據采集指令通訊流程如圖4所示。
系統中預設部分常用指令,同時可以根據實際應用修改指令集,為提高系統的通訊效率,采用雙指令集進行通訊,基本控制指令集如表1所示。
4結語
本系統設計實現了工業現場多從機高效率通訊應用,基于雙RS-485總線指令、數據獨立通訊的結構,并使用精簡的數據結構及指令,減少數據幀大小,有效的提高了通訊速率,可以應用于要求高實時性工業控制的數據通訊。