資料類型

每個變數在可編程邏輯控制器中都會自動獲得正確的資料類型。轉換只需在介面中設定即可。本章將說明Antcas Control中的各種類型。

布林值 BOOL

此類型僅能有兩種狀態:真或假。在應用程式中,可以使用TRUE(真)或FALSE(假)來定義值,而非變數。

此外,還使用特殊類型NULL。此狀態在初始化變數時設定,即未寫入的變數。此外,NULL還可用於特殊功能。例如,當不得將值通訊至介面時。

整數 INT (Integer)

整數是一個整數,例如026。此外,值也可以為負數。Antcas Control使用64位元可編程邏輯控制器,可計算非常大的數字。最大的數字由常數INT_MAX(9223372036854775807)定義。最小的數字在INT_MININT_MAX+1,因為符號使用一位元。所有超出範圍的數字將以帶有指數的浮點數表示。計算結果則不精確。

整數可以獲得值-0,它不等於FALSE。然而,使用函數EQ(-0,0)的檢查結果為TRUE-0僅可作為字串'-0'定義。

也可以直接定義十六進位值。它以0x0X開頭。例如,0xFF變為255

浮點數 REAL (Float)

浮點數或實數是一個小數,例如0.122.005(使用點號)。指數也受到支援。例如,10E2代表1'00010e-2代表0.1。大小寫不影響結果。系統會嘗試將數字轉換為整數,因為這樣對可編程邏輯控制器更簡單。可能發生在大數字上計算時不精確的情況。最大小數位數固定限制為14,以提高可編程邏輯控制器效能。

浮點數有限制的精度。儘管這取決於系統,但Antcas Control通常使用,它產生最大相對四捨五入誤差約1.11e-16。然而,非基本算術運算可能會導致較大的錯誤,並且當多個運算組合時,必須考慮錯誤傳播。

此外,存在基於10的浮點數可以精確表示的有理數,例如0.10.7,但它們沒有基於2的浮點數精確表示法。然而,內部使用基於2的浮點數表示法,無論尾數大小如何。因此,它們無法轉換為其內部二進位表示法而不損失少量精度。這可能導致混淆結果:FLOOR((0.1+0.7)*10)通常會產生7,而非預期的8,因為內部表示法類似於7.9999999999999991118

因此,永遠不要依賴浮點數的最後一位小數,並且永遠不要直接檢查浮點數是否相等。

字串 STRING

字串或稱作字串,使用單引號' '或雙引號" "定義。例如'Text 1'。使用功能區塊CONCAT可合併多個字串。

換行符或新行可以使用CTRL+Enter創建。然後以箭頭↵表示。

在字串本身中指定'或"的轉義字元不需要。字串可直接使用"Da ist ein " Zeichen"指定。

可以聲明特殊字符。為此,在字串內部使用雙引號指定以下序列:

轉義序列 ASCII縮寫
\\ Escaped \
\n LF
\r CR
\r\n CRLF
\0 NUL
\t TAB
\e ESC
\f FORMFEED
\x## 任意位元組

例如,要聲明任意位元組1267E作為十六進位數字,使用以下表達式:"\x7E"。此字串對應於"~"

在此,7E作為占位符值。可以指定所有在十六進位值00到FF之間的值。請注意,UTF-8 BOM"\xEF\xBB\xBF"會被大多數瀏覽器自動移除。可以掩蓋字串。為此,使用前導反斜線:"\\x7E",這對應於'\x7E'

注意:所有超出UTF-8範圍的字串都無法永久儲存。在即時視圖中,這些會以深紫色顯示。

請參閱文章字串轉換為數字

日期和時間 DT (Date and Time)

使用DT#定義日期和時間,例如DT#2016-03-25-22:12:00時間轉換為從日期1970年1月1日(此值在UTC/GMT時區)開始的毫秒整數。

日期 D (Date)

使用D#定義從午夜開始的日期,例如D#2016-03-25。時間轉換為從日期1970年1月1日(此值在UTC/GMT時區)開始的毫秒整數。

時間 T (Time)

使用T#定義以毫秒為單位的時間,例如T#5d3h5m11s500ms。時間轉換為毫秒整數。

陣列

無法直接定義陣列。然而,可以使用點號對變數進行分配。請參閱變數

非常重要:永遠不要在陣列中定義下方的值。例如set和set.p - 可編程邏輯控制器將在此處崩潰並停止運行。此外,這可能會導致意外錯誤。