基於Socket訪問西門子PLC系列教程(二)

2022-06-05 11:24:09 字數 1397 閱讀 2946

基於socket訪問西門子plc系列教程(一)

在完成上述步驟後,接下來就是編寫上位機軟體與plc之間進行通訊。上位機ui介面設計如下圖所示:

從上圖可以看出,上位機需要完成以下功能:

(1)tcp的建立連線與斷開連線:tcp連線與斷開主要是呼叫socket的api函式來實現,**如下所示:

(2)開啟多執行緒持續接收伺服器資料:上位機連線上plc後,plc會定時向上位機傳送資料,上位機需要持續接收資料,因此在連線成功後,開啟乙個執行緒來接收伺服器資料。

(3)各種資料型別通用資料解析:當已經獲取到所有的資料(位元組陣列)時,如果想任意一種資料型別的解析,通過分析發現,至少需要三個元素,分別為起始位元組、資料型別、偏移(針對布林是位偏移,針對字串是長度),因此我們首先針對這三個元素,建立了乙個實體類,如下所示:

通過控制項顯示資料,因此需要給控制項做下繫結,這裡是通過tag屬性來做,按照datatype;start.offset的格式,datatype按照列舉型別填寫資料,start填寫乙個整數,對於offset,如果不是布林型別或者字串,該項可以不填,填寫格式如下所示:

獲取到控制項繫結的tag之後,需要編寫乙個方法,實現tag和實體物件bindvariable之間的轉換。

通用資料更新實現思路:遍歷所有的控制項,首先判斷其tag屬性是否滿足要求,如果滿足要求,將tag轉換為bindvariable物件,再根據bindvariable物件來進行資料解析,這裡可以將實時更新單獨封裝成乙個方法,多執行緒中直接進行呼叫,完成上述步驟後,可以直接執行上位機軟體,進行讀取功能測試,先在博途中建立乙個監控表,填入一些隨機數,然後通過上位機進行讀取對比,監控表如下圖所示:

上位機執行讀取資料如下圖所示:

選擇西門子

選擇西門子,我找工作的事情也就算是告了乙個段落。到西門子,算工資,絕對不是我想要的,只有4600,把扣掉的一去掉,到我手上的也就只有3000多點。為什麼我會選擇西門子呢?我問過很多朋友,在網上找到過很多西門子的資訊,網上褒貶不一,甚至來說,網上還有臭罵西門子的。工資低,眾所周知,甚至會出現缺少專案源...

筆記 西門子

介紹 使用說明 輕量的發布訂閱模式訊息傳輸協議,專門針對低頻寬和不穩定網路環境的物聯網應用設計。實時 mqtt 訊息 emq x 啟動後,mqtt 客戶端可通過 1883 埠接入系統。執行日誌輸出在 log 目錄。emq x 預設載入 dashboard 外掛程式,啟動 web 管理控制台。使用者可...

遠端訪問西門子PLC方案

原帖鏈結 要求 路由器能夠上網,而且必須有公網 internet ip位址,在國內可以諮詢運營服務商,或者檢視路由器wan口的ip位址,如果是私網ip範圍,那肯定不是直接上到internet,那就不行了 什麼是私網ip?問問某度 哪些協議使用哪些tcp埠?在使用路由器和防火牆時應該注意些什麼?如何通...