日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

php读取西门子plc_基于Socket访问西门子PLC系列教程(二)

發布時間:2023/11/27 生活经验 62 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php读取西门子plc_基于Socket访问西门子PLC系列教程(二) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文是西門子開放式TCP通信的第2篇,上一篇我們講了使用西門子1200PLC作為TCP服務器的程序編寫,可以點擊下方鏈接閱讀:【公眾號dotNet工控上位機:thinger_swj】

基于Socket訪問西門子PLC系列教程(一)

在完成上述步驟后,接下來就是編寫上位機軟件與PLC之間進行通信。上位機UI界面設計如下圖所示:


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

  • TCP建立連接與斷開連接
  • 多線程接收服務器數據
  • 各種數據類型通用數據解析
  • 各種數據類型的通用寫入接下來我們將按照功能順序來逐個完成,具體如下:

(1)TCP的建立連接與斷開連接:TCP連接與斷開主要是調用Socket的API函數來實現,代碼如下所示:

(2)開啟多線程持續接收服務器數據:上位機連接上PLC后,PLC會定時向上位機發送數據,上位機需要持續接收數據,因此在連接成功后,開啟一個線程來接收服務器數據。

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

通過控件顯示數據,因此需要給控件做下綁定,這里是通過Tag屬性來做,按照DataType;Start.Offset的格式,DataType按照枚舉類型填寫數據,Start填寫一個整數,對于Offset,如果不是布爾類型或者字符串,該項可以不填,填寫格式如下所示:

Tag綁定方式如下所示:【公眾號dotNet工控上位機:thinger_swj】

獲取到控件綁定的Tag之后,需要編寫一個方法,實現Tag和實體對象BindVariable之間的轉換。

通用數據更新實現思路:遍歷所有的控件,首先判斷其Tag屬性是否滿足要求,如果滿足要求,將Tag轉換為BindVariable對象,再根據BindVariable對象來進行數據解析,這里可以將實時更新單獨封裝成一個方法,多線程中直接進行調用,完成上述步驟后,可以直接運行上位機軟件,進行讀取功能測試,先在博途中創建一個監控表,填入一些隨機數,然后通過上位機進行讀取對比,監控表如下圖所示:

上位機運行讀取數據如下圖所示:

總結

以上是生活随笔為你收集整理的php读取西门子plc_基于Socket访问西门子PLC系列教程(二)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。