與多個串列埠裝置通訊的上位機程式執行一段時間後串列埠自動斷開或不響應的一些排查處理經驗

尼古拉-卡什發表於2024-04-09

最近有個專案的裝置上有三臺硬體都用了串列埠通訊

分別是PLC、基恩士位移感測器GT2和梅特勒稱重模組

除了PLC是透過現成的通訊模組進行的USB直連

另外兩臺硬體都是用的串列埠轉USB

轉接線的驅動晶片分別是FTDI和PL2303GT

程式編寫除錯好 測試了一段時間

發現總是會出現連續執行0.5~2小時(約300~700次迴圈動作)後PC串列埠不響應的情況

偶發裝置上電後個別串列埠裝置找不到(裝置管理器看不到)

必須重新拔插PC上任意一個串列埠線或重啟電腦才能解決

否則不管是用哪種官方程式都通訊不上 無響應

排查處理過程:

①排查各介面連線是否鬆動,由擴充USB口換到主機板USB口(供電電壓不同)

無效

②重灌驅動程式,刪除重複驅動,減少驅動干擾的可能性

無效

③考慮程式通訊頻率太快,導致串列埠緩衝區溢位,故在PC端和程式端增加軟握手XonXoff

不可行,嚴重影響正常通訊或資料丟失

④關閉PC端串列埠高階選項中的“允許計算機關閉裝置以節約電源”,縮小“傳送緩衝區大小”和“接收緩衝區大小”,以及延時計時器數值

待觀察

其他經驗:

①首次透過遠端桌面連線工控機時,由於會佔用目標工控機的資源,導致這個過程中串列埠收發資料收到明顯影響。

相關文章