前言
每個品牌的PLC,在其開發工具里都有一套地址規範來確認一個變量的存儲區域,在Foresight SCADA里,這些原始地址會根據對應協議來生成一個實際採集地址,通常這個地址不用工程師去關心;需要注意的是,如果沒有生成採集地址,則說明原始地址不符合規範或者我們尚未實現,需要聯繫我們進行排查
數據類型支持以及佔用空間
- Bool,1個bit,在scada里顯示為true/false(請注意並非1/0)
- Byte,1Byte單字節,0~255
- Int, 2 Bytes包含符號整數,數值範圍:-32768 ~ 32767
- Word、UInt,2Bytes無符號整數,0~655535
- DInt,4 Bytes含符號整數,-2,147,483,648 ~ 2,147,483,647
- DWord、UDInt,4Bytes無符號整數, 0~4294967295
- Real,4Bytes的單精度浮點數
- DReal,8Bytes的雙精度浮點數
- 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, .....]