作者aaa7513231 (渾沌與秩序)
看板ASM
標題[問題] Rs485 Modbus訊號解析
時間Wed Mar 11 23:17:47 2020
大家好,問題如標題所示
遇到一個很神奇的問題,搞得我很煩
我有一組溫濕度計,
我用
Max485模組 ( 這種
https://goods.ruten.com.tw/item/show?21447776536912 )
或
USB轉Rs485 ( 這種
https://goods.ruten.com.tw/item/show?21440347643873 )
去讀,回傳訊號都會解析異常
我詢問廠商她只說便宜貨讀不了,用他四千塊的USB轉Rs485/422模組就讀的到
不管我用Max485/SP485ee/VP06/VP22/V6022
各種485的ic都無法讀取溫濕度計回傳的訊號
我用邏輯分析器解析的訊號讀如下
https://upload.cc/i1/2020/03/11/zwCeJa.png
這款溫濕度訊號迴響超快,約0.3ms
https://upload.cc/i1/2020/03/11/rvaJF7.png
其他可正常讀取的設備迴響就比較長
這是我目前搞了很久,唯一發現的差異點
主要是我開發硬件輸出Rs485訊號希望可以讀取他,我讀其他設備都可以
就這一款溫濕度計不行,搞得我心好煩= =
雖然換一款溫濕度計就好,但我好想知道原因啊~~~
希望有經驗的大大可以分享一下心得
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.232.168.44 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/ASM/M.1583939870.A.F71.html
1F:→ god145145: 不良品吧 叫廠商來當場讀給你看 03/12 00:10
2F:推 chuegou: 照你的敘述 你應該是要放溫濕度計的詳細資料才是 03/12 00:56
溫濕度計這一款我有買四組,外加一組廠商的USB轉RS485/422轉換器
使用廠商的轉換器可以正常讀取,但用我上述的那些就不行
所以撇除硬體(溫濕度計壞掉)或485晶片(上述的晶片我有同時測試讀取其他設備正常)
我在想是否溫濕度計的回傳訊號速度(0.3ms)太快的問題
晶片是讀得到訊號,只是解析的格式錯誤,上述的晶片都是一樣的問題
我用DSO138讀取的波形如下
https://upload.cc/i1/2020/03/12/IuMnf4.jpg
傳送+回傳
https://upload.cc/i1/2020/03/12/2xvFT8.jpg
溫濕度計訊號回傳放大
這問題好難解啊,一個點卡在那裡心很煩= =
※ 編輯: aaa7513231 (36.232.168.44 臺灣), 03/12/2020 09:44:31
3F:推 god145145: 既然有他的轉接就比對一下訊號,再用他的轉接去讀其它s 03/12 21:42
4F:→ god145145: ersor看看。如果可以就買4000賣12000,你也省事。 03/12 21:42
雖然廠商的轉接器可以使用,但我是在開發電路板其中有整合Rs485輸出,可以的話還是
希望可以支援多一點的設備,也怕未來又遇到這種問題
5F:→ easypro: 把包覆線的鋁套接在兩邊設備的地看看 03/13 09:56
我只有用兩條短線測試,我想線材影響應該不大,但有時間我還是會是買雙絞線測試看看
6F:推 wydct: 是否傳輸格式錯誤,MODBUS如果傳輸錯誤是不會有回傳值的 03/13 11:55
格式應該不是問題,我有讀取其他設備測試過,謝謝~
7F:推 DRQX: 可能傳送接收切換速度過慢 03/14 12:16
我有考慮過這問題,我看過這些晶片的Datasheet,但我猜不出來哪一個是晶片收發切換
速度,我看各家廠商的定義又不太一樣,然後我想說乾脆看這款溫濕度計的485晶片
是VP22,想說跟你用一樣就沒問題,結論是測試依舊失敗。
8F:→ yunnlai: 看波形, baud rate 應是 9600 bps. parity/stop bit 是 ? 03/15 04:33
9F:→ yunnlai: 試試看 none parity. 03/15 04:40
10F:→ yunnlai: 又,因packet間隔短(0.3ms),且是連續回8Byte-間隔-9Byte, 03/15 04:43
11F:→ yunnlai: 程式最底層讀取 UART port 是用 polling 或 interrupt ? 03/15 04:45
12F:→ yunnlai: 建議用 Interrupt 收回傳值. 因4000元模組讀得到, 推測 03/15 04:46
13F:→ yunnlai: UART port FIFO 應有 8byte以上(概估). 03/15 04:48
14F:→ yunnlai: 簡言之,用中斷(background)收資料,收到程式(F/W)的Queue 03/15 04:50
15F:→ yunnlai: (通常是宣告array),在Foreground的程式讀queue,再解析之. 03/15 04:53
我測試設定是UART為8N1,硬體用Arduino Mega R3
M大講的比較專業,我會再花時間研究一下,謝謝
謝謝大家幫忙分享經驗
因為我家設備簡陋,所以測試跟回覆都會比較慢一點
請見諒~
※ 編輯: aaa7513231 (1.165.182.34 臺灣), 03/15/2020 10:21:13
16F:推 ureikaze: 你如何切換RE/DE? 檢查一下訊號回傳時DE是否已經釋放 03/16 12:25
17F:推 jimiwm: 同意樓上說法 RE DE 訊號的問題 01/04 12:50