本發明專利技術公開了RS485總線多設備多協議解析方法及系統,包括物理層、數據鏈路層及應用層;物理層位于RS485總線三層協議的最底層,負責RS485總線物理鏈路的鏈接建立、釋放和數據接收、發送;數據鏈路層位于RS485總線三層協議的中間層,對來自物理層的數據包,識別出數據包相關數據,將有效數據提交給應用層進行處理;對來自應用層的數據包,添加數據相關參數,構造完整通信幀,并通過向物理層發送消息的方式將數據包提交給物理層;應用層位于RS485總線三層協議的最頂層,對于來自數據鏈路層的數據包按指令碼進行處理;本發明專利技術克服傳統RS485總線主機設備逐個協議嘗試解析,而導致識別多種從設備效率低,速度慢的問題。
【技術實現步驟摘要】
本專利技術涉及工業控制現場總線RS485總線技術,具體涉及一種RS485總線多設備多協議解析的方法及系統。
技術介紹
工業控制中經常遇到一個主設備需要與若干從設備的通信,其網絡拓撲結構為一對多的主從結構,此時使用低成本的RS485總線是最經濟實用的。RS485總線支持一對多的主從網絡結構、各從節點之間不通信,所有通信都是由主設備發起,主設備通過一問一答的問答式通信方法實現與各個從設備的通信。現場中主設備可能需要掛接若干從設備,比如帶RS485接口的溫濕度傳感器、帶RS485接口的電能表、帶RS485接口的光敏傳感器,由于RS485總線僅僅規定了通信的物理層電氣特性,沒有規定鏈路層通信協議,因此各廠家的RS485從設備會運行私有協議,這樣對于主設備來說,能識別運行不同協議的從設備就是問題的核心。對于同類設備,由于運行相同的協議,主設備通過在通信規約中的“從設備地址”來識別從設備。對于不同類的設備,由于運行不同的協議,主設備需要調用另外一套通信協議,在通信協議中同樣利用“從設備地址來識別從設備”。具體做法就是主設備發送詢問報文,然后等待接收從設備返回的數據,傳統的做法是協議的發送模塊和協議的解析模塊是完全獨立的,并且只有一個協議解析模塊,在這個協議解析模塊內,每次使用一種通信協議對應答幀嘗試進行解析,如果能解析成功則對數據進行提取,否則使用下一種通信協議,因此造成的問題是在進行協議解析的時候并不知道將要返回的從設備的協議,此時可能出現應答幀數據是電能表返回的,卻拿溫濕度協議去解析;也可能出現應答數據是溫濕度的,卻拿電能表的協議去解析,當從設備種類少的時候,這種逐個嘗試的辦法勉強是能接收的,但是當有幾十種設備的時候,這種逐個嘗試解析的辦法,就相當耗時間了,通常的做法就是更換主設備中的CPU,換用運算速度更快的CPU,這種使用運算速度更快的CPU的做法,同時硬件成本也高,雖然在一定程度上能問題,但是假如有五十種設備的話,整個嘗試一遍解析,依然是非常慢的,所以這種辦法仍然沒有徹底的解決問題。
技術實現思路
為解決現有技術存在的不足,本專利技術公開了RS485總線多設備多協議解析方法及系統,將協議的解析分為三層,分別是物理層、數據鏈路層、應用層,此三層協議各司其職,各層間通過發送消息的方式進行通信。RS485總線多設備多協議解析方法,包括以下步驟:步驟一:應用層初始化,根據用戶指令識別相應的從設備,根據從設備的應用層通信協議進行數據組包,構建主設備查詢數據包,并以發送消息的方式將數據包提交給數據鏈路層,同時將該設備的協議解析函數向數據鏈路層注冊;步驟二:數據鏈路層接收到應用層數據包后,構造通信幀,然后將通信幀以發送消息的方式提交給物理層;步驟三:物理層接收到通信幀后,根據預設的物理層配置,將數據流發送到RS485總線;步驟四:所有的RS485從設備都會接收到主設備發送的通信幀,但是只有與自身協議幀相同的從設備才能正確的將通信幀解析正確,進一步的只有那個自身地址與通信幀中目的地址一致的從設備才會返回應答幀;步驟五:主設備從RS485總線接收應答幀,物理層接收到數據后,放入接收數據緩沖區中,在一定的超時間內沒有收到新字符,認為應答數據幀結束,物理層將所有接收到的應答幀數據包提交給數據鏈路層;步驟六:數據鏈路層調用注冊的協議棧解析函數,完成應答幀數據的解析,然后將有效數據提交給應用層;應用層完成數據的提取。進一步的,在應用層初始化之后用戶指令識別之前還包括檢測用戶指令的步驟,檢測是否有用戶指令,如果沒有用戶指令,延時設定時間后再檢測。進一步的,數據鏈路層調用注冊的協議棧解析函數,每種不同協議的從設備其協議棧解析函數是不同的,在協議解析回調函數內僅僅負責解析本設備協議,在數據的解析時具體步驟為:A,查找幀起始符,如果找不到,則結果碼為FALSE;如果找到,轉入B;B,查找數據長度,如果數據長度無效,則結果碼為FALSE;如果數據長度有效,進入C;C,進行數據校驗,如果校驗錯誤,則結果碼為FALSE;如果數據校驗正確,進入D;D,查找幀結束符,如果找不到,則結果碼為FALSE;如果找到,返回結果碼為TRUE;經過數據鏈路層的協議棧解析后,如果幀正常則將有效數據提取,并以向應用層發送消息隊列的方式將有效數據提交應用層,然后清空數據,如果幀異常,則直接清空數據。進一步的,當主設備在與從設備進行通信,將此從設備的協議棧解析模塊注冊,也就是將協議解析函數作為回調函數掛接到數據鏈路層協議解析函數,數據鏈路層執行上面注冊的協議解析回調函數進行通信幀的識別,進而提取有效數據,進一步的將有效數據提交給應用層協議進行處理,在應用層進行具體功能碼的處理,從而完成一次通信過程。進一步的,物理層采用中斷方式進行數據的接收和發送;物理層采用中斷方式進行數據發送時,一個字節發出后CPU產生發送中斷,在發送中斷服務中將發送數據長度減去1,如果發送數據長度大于0,繼續發送數據,如果等于0,說明全部數據已經發送完,此時關閉發送中斷,發送結束;物理層數據的接收采用中斷的方式,每從RS485總線上接收到一個字節,CPU產生一個中斷,在中斷服務中將接收到的數據保存到全局的接收數據緩沖區中,并將接收數據長度加1,在每收到一個字節后都重新啟動一個定時器,在協議規定的時間內沒有新數據到來,則認為當前通信幀結束,然后將接收到的數據包提交給數據鏈路層處理。RS485總線多設備多協議解析系統,包括:物理層、數據鏈路層及應用層;物理層位于RS485總線三層協議的最底層,負責RS485總線物理鏈路的鏈接建立、釋放和數據的接收、發送;數據鏈路層位于RS485總線三層協議的中間層,對于來自物理層的數據包,識別出數據包相關數據,然后將有效數據提交給應用層進行處理;對于來自應用層的數據包,添加數據相關參數,構造完整的通信幀,并通過向物理層發送消息的方式將數據包提交給物理層;應用層位于RS485總線三層協議的最頂層,對于來自數據鏈路層的數據包按照指令碼進行處理;其中,數據鏈路層中針對每種不同協議從設備設有相應的協議棧解析模塊,協議棧解析模塊用于將協議解析函數作為回調函數掛接到數據鏈路層協議解析函數,主設備在發送數據時就根據協議棧解析模塊對應的從設備協議類型確定數據鏈路層的接收協議棧,從而在接收到從設備應答數據后,迅速調用對應協議棧解析出報文。進一步的,應用層中,不同的指令碼對應不同的功能,對于需要應答的指令碼,由用戶應用程序組織應用層數據,然后通過發送消息的方式提交給數據鏈路層;對于不需要應答的指令碼,本層協議僅僅提取用戶數據并保存。進一步的,對于從RS485總線接收到的數據包,物理層檢測到通信幀結束后,以向數據鏈路層發送消息的方式將數據包提交給數據鏈路層,對于來自數據鏈路層的數據包,物理層直接將數據發送到RS485總線。進一步的,數據鏈路層中,執行注冊的協議解析回調函數,每種不同協議的從設備其協議棧解析函數是不同的,在協議解析回調函數內僅僅負責解析本設備協議,經過數據鏈路層的協議棧解析后,如果幀正常則將有效數據提取,并以向應當前第1頁1 2 3 本文檔來自技高網...

【技術保護點】
RS485總線多設備多協議解析方法,其特征是,包括以下步驟:步驟一:應用層初始化,根據用戶指令識別相應的從設備,根據從設備的應用層通信協議進行數據組包,構建主設備查詢數據包,并以發送消息的方式將數據包提交給數據鏈路層,同時將該設備的協議解析函數向數據鏈路層注冊;步驟二:數據鏈路層接收到應用層數據包后,構造通信幀,然后將通信幀以發送消息的方式提交給物理層;步驟三:物理層接收到通信幀后,根據預設的物理層配置,將數據流發送到RS485總線;步驟四:所有的RS485從設備都會接收到主設備發送的通信幀,但是只有與自身協議幀相同的從設備才能正確的將通信幀解析正確,進一步的只有那個自身地址與通信幀中目的地址一致的從設備才會返回應答幀;步驟五:主設備從RS485總線接收應答幀,物理層接收到數據后,放入接收數據緩沖區中,在一定的超時間內沒有收到新字符,認為應答數據幀結束,物理層將所有接收到的應答幀數據包提交給數據鏈路層;步驟六:數據鏈路層調用注冊的協議棧解析函數,完成應答幀數據的解析,然后將有效數據提交給應用層;應用層完成數據的提取。
【技術特征摘要】
【專利技術屬性】
技術研發人員:許孝剛,王淑平,郝敬全,馬述杰,蔣德民,齊鵬,毛新東,趙吉祥,李亮報,張坤,于濤,
申請(專利權)人:泰華智慧產業集團股份有限公司,
類型:發明
國別省市:山東;37
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。