[問題] Rs485 Modbus訊號解析

看板ASM (組合語言)作者 (渾沌與秩序)時間1年前 (), 1年前編輯推噓5(5011)
留言16則, 7人參與, 1年前最新討論串1/1
大家好,問題如標題所示 遇到一個很神奇的問題,搞得我很煩 我有一組溫濕度計, 我用 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://www.ptt.cc/bbs/ASM/M.1583939870.A.F71.html

03/12 00:10, 1年前 , 1F
不良品吧 叫廠商來當場讀給你看
03/12 00:10, 1F

03/12 00:56, 1年前 , 2F
照你的敘述 你應該是要放溫濕度計的詳細資料才是
03/12 00:56, 2F
溫濕度計這一款我有買四組,外加一組廠商的USB轉RS485/422轉換器 使用廠商的轉換器可以正常讀取,但用我上述的那些就不行 所以撇除硬體(溫濕度計壞掉)或485晶片(上述的晶片我有同時測試讀取其他設備正常) 我在想是否溫濕度計的回傳訊號速度(0.3ms)太快的問題 晶片是讀得到訊號,只是解析的格式錯誤,上述的晶片都是一樣的問題 我用DSO138讀取的波形如下 https://upload.cc/i1/2020/03/12/IuMnf4.jpg
溫濕度計訊號回傳放大 這問題好難解啊,一個點卡在那裡心很煩= = ※ 編輯: aaa7513231 (36.232.168.44 臺灣), 03/12/2020 09:44:31

03/12 21:42, 1年前 , 3F
既然有他的轉接就比對一下訊號,再用他的轉接去讀其它s
03/12 21:42, 3F

03/12 21:42, 1年前 , 4F
ersor看看。如果可以就買4000賣12000,你也省事。
03/12 21:42, 4F
雖然廠商的轉接器可以使用,但我是在開發電路板其中有整合Rs485輸出,可以的話還是希望可以支援多一點的設備,也怕未來又遇到這種問題

03/13 09:56, 1年前 , 5F
把包覆線的鋁套接在兩邊設備的地看看
03/13 09:56, 5F
我只有用兩條短線測試,我想線材影響應該不大,但有時間我還是會是買雙絞線測試看看

03/13 11:55, 1年前 , 6F
是否傳輸格式錯誤,MODBUS如果傳輸錯誤是不會有回傳值的
03/13 11:55, 6F
格式應該不是問題,我有讀取其他設備測試過,謝謝~

03/14 12:16, 1年前 , 7F
可能傳送接收切換速度過慢
03/14 12:16, 7F
我有考慮過這問題,我看過這些晶片的Datasheet,但我猜不出來哪一個是晶片收發切換速度,我看各家廠商的定義又不太一樣,然後我想說乾脆看這款溫濕度計的485晶片 是VP22,想說跟你用一樣就沒問題,結論是測試依舊失敗。

03/15 04:33, 1年前 , 8F
看波形, baud rate 應是 9600 bps. parity/stop bit 是 ?
03/15 04:33, 8F

03/15 04:40, 1年前 , 9F
試試看 none parity.
03/15 04:40, 9F

03/15 04:43, 1年前 , 10F
又,因packet間隔短(0.3ms),且是連續回8Byte-間隔-9Byte,
03/15 04:43, 10F

03/15 04:45, 1年前 , 11F
程式最底層讀取 UART port 是用 polling 或 interrupt ?
03/15 04:45, 11F

03/15 04:46, 1年前 , 12F
建議用 Interrupt 收回傳值. 因4000元模組讀得到, 推測
03/15 04:46, 12F

03/15 04:48, 1年前 , 13F
UART port FIFO 應有 8byte以上(概估).
03/15 04:48, 13F

03/15 04:50, 1年前 , 14F
簡言之,用中斷(background)收資料,收到程式(F/W)的Queue
03/15 04:50, 14F

03/15 04:53, 1年前 , 15F
(通常是宣告array),在Foreground的程式讀queue,再解析之.
03/15 04:53, 15F
我測試設定是UART為8N1,硬體用Arduino Mega R3 M大講的比較專業,我會再花時間研究一下,謝謝 謝謝大家幫忙分享經驗 因為我家設備簡陋,所以測試跟回覆都會比較慢一點 請見諒~ ※ 編輯: aaa7513231 (1.165.182.34 臺灣), 03/15/2020 10:21:13

03/16 12:25, 1年前 , 16F
你如何切換RE/DE? 檢查一下訊號回傳時DE是否已經釋放
03/16 12:25, 16F
文章代碼(AID): #1UQG4Uzn (ASM)
文章代碼(AID): #1UQG4Uzn (ASM)