記kepServer讀寫西門子PLC

2022-04-26 05:26:04 字數 1609 閱讀 2171

在程式開發過程中為了測試方法或者驗證某個屬性的值是否正確 經常通過kepserver 的 opc quick client來手動置點或者讀取點位

例如

這裡顯示的值都是經過轉化後得到的十進位制值,那我們如果要針對該word中的某bit 該如何讀取,?

首先理解一下最基本的概念

位:bit 最小的儲存單位,bool量, 非0則1,表達兩個狀態

位元組:byte 8位組成乙個位元組  1byte=8bit

字:word 相鄰兩個位元組組成乙個字 即16位  1word=2byte=16bit

雙字:double word ,兩個字組成乙個雙字 即32位 

注意:西門子的字是雙數開頭,不能是單數,所以在kepserver編寫tag時需要注意

例如:西門子表達比較特殊,就是低位元組高位。高位元組低位

這個圖其實已經很明白了,我們借助下圖來簡單說明一下

這是db83這個資料塊中的乙個字的資料 一共16位 這個字的位址就是db83.dbw10

我們在kepserver中的tag中是這樣寫的,也就是

對比上面的高位元組低位示意圖我們把db83.dbw10這個字展開

dbw10

dbx10.7dbx10.6 dbx10.5 dbx10.4 dbx10.3 dbx10.2 dbx10.1 dbx10.0|dbx11.7 dbx11.6 dbx11.5 dbx11.4 dbx11.3 dbx11.2 dbx11.1 dbx11.0

這樣的話假設dbw10的值為0,我們如果想要將dbx10.4置為1

需要給dbw10賦值  0001 0000 0000 0000

在kepserver中賦值需要將對應二進位制轉化為10進製 在賦值

借助計算器  我們需要將4096賦值給dbw10

開啟opc quick client ,給對應tag寫值

這樣就給dbx10.4置為1了

這樣就滿足我們如何在某乙個"字"中的某一"位"置點;

在某一字中讀取某一位的值,反過來就可以,

例如 我們讀取到該字的值為34257

我們想要知道dbx10.2的值是0還是1 ?

我們先把十進位制34257轉化為二進位制

‭1000 0101 1101 0001‬

對比上面dbw10展開的示意圖,dbx10.2的值為1

可能寫的比較粗糙,望各位看官批評指正!

選擇西門子

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

筆記 西門子

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

西門子atch指令詳解 西門子plc指令詳解

1 ld load 裝載 動合觸點 2 ldn load not 不裝載 動斷觸點 3 a and 與 動合 用於動合觸點串聯 4 an and not 與 動斷 用於動斷觸點串聯 5 o or 或 動合 用於動合觸點併聯 6 on or not 或 動斷 用於動斷觸點併聯 7 out 輸出 用於線...