1. 程式人生 > >西門子S7通訊

西門子S7通訊

在使用Github上開源的S7.net 跟西門子PLC通訊時遇到了一個問題。

在逐步除錯時發現每次走到非同步傳送的地方之後,便阻塞在那裡。

經過幾天的測試,原來是因為多執行緒同時對同一個PLC物件操作。造成的錯誤。

解決方法:單獨建立一個執行緒及訊息佇列,然後將需要傳送的資料放入佇列中。PLC連線物件只由新建立的執行緒呼叫,執行緒迴圈檢測佇列中的個數,如果有資料需要傳送,則呼叫PLC物件傳送。

 

教訓:跟下位機通訊,或者說操作某一個資源,儘量只使用一個執行緒去操作。