PLC變量地址釋義

於 2022年9月24日 (六) 13:22 由 Xyy對話 | 貢獻 所做的修訂
(差異) ←上個修訂 | 最新修訂 (差異) | 下個修訂→ (差異)

前言

每個品牌的PLC,在其開發工具里都有一套地址規範來確認一個變量的存儲區域,在Foresight SCADA里,這些原始地址會根據對應協議來生成一個實際採集地址,通常這個地址不用工程師去關心;需要注意的是,如果沒有生成採集地址,則說明原始地址不符合規範或者我們尚未實現,需要聯繫我們進行排查

數據類型支持以及佔用空間

  1. Bool,1個bit,在scada里顯示為true/false(請注意並非1/0)
  2. Byte,1Byte單字節,0~255
  3. Int, 2 Bytes包含符號整數,數值範圍:-32768 ~ 32767
  4. Word、UInt,2Bytes無符號整數,0~655535
  5. DInt,4 Bytes含符號整數,-2,147,483,648 ~ 2,147,483,647
  6. DWord、UDInt,4Bytes無符號整數, 0~4294967295
  7. Real,4Bytes的單精度浮點數
  8. DReal,8Bytes的雙精度浮點數
  9. String,單字1Byte的一般用UTF-8來存儲

西門子PLC的S7協議

取單個數字

例如:原始地址 %DB30.DBW100 數據類型 Int,轉換為SCADA地址會變成 DB30,INT100

原始地址的含義為在30號DB塊,偏移100個bytes,取一個W(Word, 2位元組,即第100和101兩個字節),然後當成Int來讀。需要注意的是偏移量100的單位永遠都是bytes,而不是字或者雙字。

原始地址 %DB30.DBW100 數據類型 Word,轉換成SCADA地址會變成 DB30,WORD100,也就是說SCADA里會將數據類型表示在地址里

取浮點數:原始地址 %DB30.DBD102 數據類型 Real,轉換成SCADA地址為 DB30,REAL102;也就是從DB30里取了102~105這4個Bytes來當做一個單精度浮點數來展示

取位bit

原始地址 %DB60.DBX50.0 Bool 轉換成SCADA地址為 DB30,X50.0 即DB30的第50位byte的第0位

取數組/連續bits

原始地址 %DB60.DBX0.0 數據類型Array of Word(20)轉換成SCADA地址為 DB60,WORD0.20 最終讀出來的為長度20的Word數組 [1, 0, 122, 255, .....]

字符串