在程式開發過程中為了測試方法或者驗證某個屬性的值是否正確 經常通過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 輸出 用於線...