測驗環境是一個485主機負責連續回圈地向7個從機發送指令,主機發送指令后,收到從機的正確回復后,向下一個從機發送指令,依次回圈,
如果從機不回傳資料,或收到的資料不正常,主機則會等上60s左右,才會發下一條指令。所有的資料都通過串口除錯助手觀察。
485節點間用的是類似杜邦線的軟線,長度不越過100cm.
現在的問題是主機詢問從機,過一段時間就會有某個從機不回傳資料的情況,每個節點都有這樣的情況。
后來給其中一個節點斷電了(有點半蒙式的給他斷電,因為檢查資料時總覺得是發送資料的間隔太頻繁才會這樣),這樣主機就會有1分鐘左右的間隔不向從機發詢問指令,然后我就發現在除斷電的從機沒有資料外,其他從機的資料都正常回傳。
難道真的讓我蒙對了嗎,但還是不了解真相啊。所以請各位前輩指點下我測驗的這種情況的原因,及解決方法。
uj5u.com熱心網友回復:
估計是你的總線負載電阻太小,導致各接收到的RS485電平處于臨界,RS485總線可以支持多設備并聯在一起,但總體的驅動能力是有限的(這個以RS485收發器芯片的引數決定),建議調整終端電阻(主從機都要調整),但總線并聯總負載電阻大于120歐,另外最好做A上拉B下拉匹配(一般10K),這樣就可以并聯多個從機了。uj5u.com熱心網友回復:
終端電阻不是只在主節點和未節點有就可以了嗎,我的是120歐,A上拉B下拉用的是3K。
uj5u.com熱心網友回復:
您可以把具體的調整方法說下嗎,第一次弄485,真是不知道怎么下手,求指教
uj5u.com熱心網友回復:
485串行組網,終端電阻在拓撲結構的首節點和尾節點放置,而不是主機節點和尾節點;主機節點可以在任何一個節點處。
uj5u.com熱心網友回復:
主機1分鐘沒有發送資料,那應該查主機端主機端是怎么檢測超時的? 超時時間又是多少?
uj5u.com熱心網友回復:
主機1分鐘沒有發送資料,那應該查主機端
主機端是怎么檢測超時的? 超時時間又是多少?
一分鐘不發是我故意這么寫的,之前就有這個問題,我以為是從機返應慢,就讓主機等了,但問題并沒解決
uj5u.com熱心網友回復:
估計是你的總線負載電阻太小,導致各接收到的RS485電平處于臨界,RS485總線可以支持多設備并聯在一起,但總體的驅動能力是有限的(這個以RS485收發器芯片的引數決定),建議調整終端電阻(主從機都要調整),但總線并聯總負載電阻大于120歐,另外最好做A上拉B下拉匹配(一般10K),這樣就可以并聯多個從機了。
終端電阻不是只在主節點和未節點有就可以了嗎,我的是120歐,A上拉B下拉用的是3K。
485串行組網,終端電阻在拓撲結構的首節點和尾節點放置,而不是主機節點和尾節點;主機節點可以在任何一個節點處。
謝謝了解了,那么我要做實驗了。
uj5u.com熱心網友回復:
對于RS485,芯片手冊上是每個收發器節點為都放置,職下圖:
我使用的是這種配置:

這種上下拉配置可以保證空閑時的RS485總線不會觸 發UART接收中斷。可同可以保證9個主從節點并聯時的負載阻抗不會超 出驅動能力范圍。(已長期驗證過)
uj5u.com熱心網友回復:
對于RS485,芯片手冊上是每個收發器節點為都放置,職下圖:
我使用的是這種配置:
這種上下拉配置可以保證空閑時的RS485總線不會觸 發UART接收中斷。可同可以保證9個主從節點并聯時的負載阻抗不會超 出驅動能力范圍。(已長期驗證過)
太感謝了,那我不客氣,收下了,謝謝您的分享
uj5u.com熱心網友回復:
先單機通訊,去除其他。后面除錯總線仲裁uj5u.com熱心網友回復:
先單機通訊,去除其他。后面除錯總線仲裁
總線仲裁怎么調
uj5u.com熱心網友回復:
估計是你的總線負載電阻太小,導致各接收到的RS485電平處于臨界,RS485總線可以支持多設備并聯在一起,但總體的驅動能力是有限的(這個以RS485收發器芯片的引數決定),建議調整終端電阻(主從機都要調整),但總線并聯總負載電阻大于120歐,另外最好做A上拉B下拉匹配(一般10K),這樣就可以并聯多個從機了。
終端電阻不是只在主節點和未節點有就可以了嗎,我的是120歐,A上拉B下拉用的是3K。
485串行組網,終端電阻在拓撲結構的首節點和尾節點放置,而不是主機節點和尾節點;主機節點可以在任何一個節點處。
uj5u.com熱心網友回復:
先搞清楚終端電阻的真正意義,是為了防止波反射帶來的問題的,就是對于交流分量,傳輸線的末端可以被視作無窮長的線路眾所周知,電信號傳輸是光速(3*10^8m/s),那么如果信號在線路末端形成反射則會與正在發出的信號疊加從而令接收出錯,但這是有前提的,就是信號自身的頻率要足夠高,所以在較低速的RS422/485通訊上,這個所謂終端電阻事實上是不必要的,其唯一的功能是釋放掉總線上的殘余電荷。
針對樓主問題,我建議是總線上接個10K的電阻(終端電阻),取消所有節點中A上拉和B下拉的電阻,問題估計就解決掉了。
uj5u.com熱心網友回復:
看看從機是不是正常收到資料了uj5u.com熱心網友回復:
看看從機是不是正常收到資料了
我調了主機詢問間隔,不到20s,現在從機資料正常了,我現在想問下這個間隔是正常的嗎,是不是太大了。
從機的程式我基本上也都調了,除了對繼電器的操作有1s延時外,其他的modbus資料基本上在200ms左右就回傳資料了,但是如果詢問間隔過小的話,還是會有假死機的情況。
感覺把程式都調整了之后,跟以前沒調整的時候情況一樣。
uj5u.com熱心網友回復:
先搞清楚終端電阻的真正意義,是為了防止波反射帶來的問題的,就是對于交流分量,傳輸線的末端可以被視作無窮長的線路
眾所周知,電信號傳輸是光速(3*10^8m/s),那么如果信號在線路末端形成反射則會與正在發出的信號疊加從而令接收出錯,但這是有前提的,就是信號自身的頻率要足夠高,所以在較低速的RS422/485通訊上,這個所謂終端電阻事實上是不必要的,其唯一的功能是釋放掉總線上的殘余電荷。
針對樓主問題,我建議是總線上接個10K的電阻(終端電阻),取消所有節點中A上拉和B下拉的電阻,問題估計就解決掉了。
對電路還真不太明白,您的說法有機會了我測驗看看。
uj5u.com熱心網友回復:
先搞清楚終端電阻的真正意義,是為了防止波反射帶來的問題的,就是對于交流分量,傳輸線的末端可以被視作無窮長的線路
眾所周知,電信號傳輸是光速(3*10^8m/s),那么如果信號在線路末端形成反射則會與正在發出的信號疊加從而令接收出錯,但這是有前提的,就是信號自身的頻率要足夠高,所以在較低速的RS422/485通訊上,這個所謂終端電阻事實上是不必要的,其唯一的功能是釋放掉總線上的殘余電荷。
針對樓主問題,我建議是總線上接個10K的電阻(終端電阻),取消所有節點中A上拉和B下拉的電阻,問題估計就解決掉了。
對電路還真不太明白,您的說法有機會了我測驗看看。
一直認為是我的程式的問題呢。
uj5u.com熱心網友回復:
[我調了主機詢問間隔,不到20s,現在從機資料正常了,我現在想問下這個間隔是正常的嗎,是不是太大了。
從機的程式我基本上也都調了,除了對繼電器的操作有1s延時外,其他的modbus資料基本上在200ms左右就回傳資料了,但是如果詢問間隔過小的話,還是會有假死機的情況。
感覺把程式都調整了之后,跟以前沒調整的時候情況一樣。
20s時間太長了
uj5u.com熱心網友回復:
[我調了主機詢問間隔,不到20s,現在從機資料正常了,我現在想問下這個間隔是正常的嗎,是不是太大了。
從機的程式我基本上也都調了,除了對繼電器的操作有1s延時外,其他的modbus資料基本上在200ms左右就回傳資料了,但是如果詢問間隔過小的話,還是會有假死機的情況。
感覺把程式都調整了之后,跟以前沒調整的時候情況一樣。
20s時間太長了
一般多長時間,
把時間調小,基本上詢問兩三輪就有一個從機假死。
uj5u.com熱心網友回復:
2s以內吧,從機反應太慢。我實際使用時,AGV控制,無線,一般在0.5秒內,6臺車。
uj5u.com熱心網友回復:
先單機通訊,去除其他。后面除錯總線仲裁
485主從模式不需要總線仲裁
uj5u.com熱心網友回復:
對于RS485,芯片手冊上是每個收發器節點為都放置,職下圖:
我使用的是這種配置:
這種上下拉配置可以保證空閑時的RS485總線不會觸 發UART接收中斷。可同可以保證9個主從節點并聯時的負載阻抗不會超 出驅動能力范圍。(已長期驗證過)
電感是必須要的嗎?
沒加電感,因為之前的板子上沒做這個,要是加的話我得割板子,沒加電感,這效果不行啊,
uj5u.com熱心網友回復:
對于RS485,芯片手冊上是每個收發器節點為都放置,職下圖:
我使用的是這種配置:
這種上下拉配置可以保證空閑時的RS485總線不會觸 發UART接收中斷。可同可以保證9個主從節點并聯時的負載阻抗不會超 出驅動能力范圍。(已長期驗證過)
電感是必須要的嗎?
沒加電感,因為之前的板子上沒做這個,要是加的話我得割板子,沒加電感,這效果不行啊,
uj5u.com熱心網友回復:
MCU控制RS485芯片的收發引腳的時間問題。MCU通過串口發送完一個資料包后,不能馬上把RS485_DE1轉換成接收狀態,要根據串口所使用的波特率情況,適當延時1ms再轉換成接收狀態。假定波特率為9600,那么1000ms可以發送960個位元組,相當串出發送1個位元組需要1ms時間。當MCU發送完資料包最后一個位元組時,不能在發送暫存器空中斷中將485轉成接收,因為發送暫存器空并不代表位元組已經全部串出完成,此時轉成接收,會使得最后一個位元組發送到一半就被轉換線路終止了。查看使用MCU有無發送完成中斷標志,比如AVR和STM32都有兩個中斷,發送暫存器空和發送完成。轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/95699.html
標籤:單片機/工控
上一篇:關于51單片機入門學習的一些看法
下一篇:OS9 for vme172
