當前位置:首頁 > 公眾號精選 > 玩轉嵌入式
[導讀]早在2008年左右,我就在產品中使用Modbus協(xié)議與其它設備進行通信。記得第一款是智能馬達保護器,其作為Modbus從,與Modbus主設備進行通信。這么多年來,一直都沒有使用開源的Modbus協(xié)議代碼,而在在不斷在自己編寫的Modbus協(xié)議代碼上進行優(yōu)化,發(fā)現(xiàn)問題并解決。

早在2008年左右,我就在產品中使用Modbus協(xié)議與其它設備進行通信。記得第一款是智能馬達保護器,其作為Modbus從,與Modbus主設備進行通信。這么多年來,一直都沒有使用開源的Modbus協(xié)議代碼,而在在不斷在自己編寫的Modbus協(xié)議代碼上進行優(yōu)化,發(fā)現(xiàn)問題并解決。
自己寫的代碼用起來比較得心應用可以針對不同的平臺進行優(yōu)化,將處理器的性能發(fā)揮到極致。在此期間,也踩過一些坑,現(xiàn)在做一些總結:

串口數(shù)據(jù)接收完之后,到通過IO口重新使用接收的時間間隔。


發(fā)送完成之后切換接收的延時時間
如上圖所示的Td,按照Modbus協(xié)議的規(guī)定,接收完數(shù)據(jù)之后,必須要間隔3.5個字符對應的時間才能發(fā)送。
如果是9600bps的波特率,8位數(shù)據(jù)位,1位起始位,1位停止位,無奇偶校驗位,則1個字符為10個 bit,對應1.04ms,3.5個字符對應3.5ms。
考慮到總線上的電容對傳輸延時的影響,建議在發(fā)送完數(shù)據(jù)1.7個字符的時間之后再使能接收。對于這個時間,可能會犯一些錯誤,比如:
  • 在發(fā)送完最后一個字節(jié)的發(fā)送完成中斷中,直接將控制IO口使能485芯片的接收。殊不知,由于電容導致的信號延時,串口數(shù)據(jù)還沒有完全發(fā)送到總線,485芯片就被置為接收狀態(tài),導致最后幾個bit的數(shù)據(jù)誤碼;

  • 沒有正確理解發(fā)送完成中斷以及發(fā)送緩存器空中斷之間的差別;

  • 發(fā)送完成中斷一般是指串口數(shù)據(jù)已經從移位寄存器從端口送出。但是并不說明已經被送到RS485總線。從MCU的IO口到RS485總線還需要考慮隔離光耦、電容、RS485芯片的延時;

  • 發(fā)送緩存器空中斷是指騰出了緩存的位置,可以緩存數(shù)據(jù)。此時,上一個數(shù)據(jù)可能還在移位寄存器中被緊張有序地按位移出到IO口,此時把RS485芯片置為接收。還正在移位的數(shù)據(jù)就嗝屁了。

因此
  • 一定要搞清楚選用的中斷是發(fā)送完成中斷還是緩存器空的中斷;

  • 在發(fā)送中斷中,不能立即切為接收,應當延時一段時間,我現(xiàn)在的做法是不管三七二十一,在發(fā)送中斷中,如果判斷為最后一個byte,則延時1.7ms將RS485設置為接收;

  • 不應該啟動定時器進行延時,定時器資源很寶貴,應該在100us左右的定時器中斷中,通過變量計數(shù)來進行1.7ms左右的延時;

MODBUS從設備多少時間會應答

Modbus是問答式的通信,主設備發(fā)送完數(shù)據(jù)之后,從設備會做出響應。按照Modbus協(xié)議規(guī)定,從設備3.5個字符時間之后做出響應都是合法的。不同的傳感器應答響應時間各不相同。
有些差的傳感器可能到幾十ms才響應,有些3.5ms左右就立即響應了。
有些甚至沒有按照Modbus的協(xié)議出牌,還沒有到3.5ms左右的時間就響應了。
這就要求主設備在將RS485接收使能之后,立即進行接收狀態(tài)。 如果是用串口中斷進行接收,則應該注意在主程序中是否有關中斷的操作,關中斷的操作是否影響接收。

每一個串口數(shù)據(jù)之間的時間間隔

Modbus根據(jù)數(shù)據(jù)之間的時間間隔來判斷一楨消息的結束,需要保證一楨消息內的前后數(shù)據(jù)之間的間隔不超過3.5個字符。
而數(shù)據(jù)一般在發(fā)送中斷中發(fā)送,有些人為了保證數(shù)據(jù)完整性,保證數(shù)據(jù)訪問的互斥,很喜歡關中斷來保護現(xiàn)場。這種做法一不小心就會使發(fā)送兩個數(shù)據(jù)的間隔超過3.5個字符。
特別是當波特率比較高時,更容易出現(xiàn)這種情況。比如,當波特率為38400時,3.5 個字符僅為850us左右,在發(fā)送串口數(shù)據(jù)的時間內,中斷關閉850us,Modbus通信就嗝屁了。
如果MCU支持DMA,建議使用DMA+定時器進行數(shù)據(jù)收發(fā)。

作為Modbus從設備時,收到數(shù)據(jù)之后,多少時間應答

按照Modbus協(xié)議要求,3.5個字符之后就可以應答。有些Modbus主設備可以是為了保證實時性,對這個應答時間要求比較苛刻。比如我們前一段時間跟西門子的工控屏對接時,就碰到過這樣的問題,總線的波特率為19200bps,我們的設備在收到西門子的命令之后大概在5ms左右做出了應答。但是西門子工控屏卻判為錯誤。之后,我們將應答時間縮短到2ms左右,與西門子的通信才變得正常。
建議在3.5個字符之后,立即應答。

來源:頭條號-IT自動化交流

原文鏈接:https://www.toutiao.com/i6894161680406675981/

 

免責聲明:本文內容由21ic獲得授權后發(fā)布,版權歸原作者所有,本平臺僅提供信息存儲服務。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或將催生出更大的獨角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉型技術解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術公司SODA.Auto推出其旗艦產品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關鍵字: 汽車 人工智能 智能驅動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務中斷的風險,如企業(yè)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務連續(xù)性,提升韌性,成...

關鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網易近期正在縮減他們對日本游戲市場的投資。

關鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產業(yè)博覽會開幕式在貴陽舉行,華為董事、質量流程IT總裁陶景文發(fā)表了演講。

關鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數(shù)據(jù)產業(yè)博覽會上,華為常務董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權最終是由生態(tài)的繁榮決定的。

關鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應對環(huán)境變化,經營業(yè)績穩(wěn)中有升 落實提質增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務引領增長 以科技創(chuàng)新為引領,提升企業(yè)核心競爭力 堅持高質量發(fā)展策略,塑強核心競爭優(yōu)勢...

關鍵字: 通信 BSP 電信運營商 數(shù)字經濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術學會聯(lián)合牽頭組建的NVI技術創(chuàng)新聯(lián)盟在BIRTV2024超高清全產業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術創(chuàng)新聯(lián)...

關鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關鍵字: BSP 信息技術
關閉
關閉