CODOSYS之結構化文本(ST)—— 初級篇(五)基礎-變量定義

變量的定義可以在POU的定義部分實現或者通過自動定義對話框,同樣的方法適用於DUT 或者 GVL 編輯器中。

變量的 "分類" (在定義對話框中名爲 "範圍") 必須通過特殊的關鍵字包含其中一個或者多個變量。例如命令變量定義是通過 "VAR" 和 "END_VAR"。更多類型參見:VAR_INPUT, VAR_OUTPUT, VAR_IN_OUT, VAR_GLOBAL, VAR_TEMP, VAR_STAT, VAR_EXTERNAL, VAR_CONFIG

變量類型關鍵字是由 屬性關鍵字提供。例如: "RETAIN" (VAR_INPUT RETAIN)。

變量的定義必須符合以下規則:

語法:

<標識> {AT <地址>}:<數據類型> {:=<初始值>};

eg:Test  AT%IW0 :WORD:=52;

位於大括號 {} 中的是操作部分。

標識:變量名的標識。當定義一個標識時以下列出的名目要注意,也請注意以下給予的建議: 標示符的命名建議

  • 不能包含空格或者特殊字符。
  • 不區分大小寫,例如 "VAR1", "Var1" 以及 "var1" 都表示相同的變量。
  • 定義中可以使用下劃線 (例如 "A_BCD" 以及 "AB_CD" 被認爲是兩個不同的定義),但是一行中最多只能有一個下劃線。
  • 定義部分的長度也就是它的說明部分,沒有限制。
  • 下文中列出的文本塊規則必須要進行注意:

多個變量定義 (命名空間):

  • 一個識別符不能在附近複製。
  • 識別符不能與關鍵字相同。
  • 全局定義的標識符可以被複用,本地變量名可與全局變量名相同。在一個 POU 內部本地變量將被進行操作。
  • 定義在 全局變量列表 - GVL 的變量可以與定義在其他區域的全局變量有相同的名稱。這這種情況下注意以下 IEC 61131-3 擴展因素,在之前的CODESYS V2.3中不可用:
    • 全局範圍操作:一個以 "." 啓動的實例路徑打開一個全局範圍。所以,如果有本地變量,例如 "ivar",與全局變量有相同的名稱, ".ivar" 將會被作爲全局變量引用。
    • 全局變量列表可以用過一個包含變量的命名空間。所以相同變量可以在其他全局變量類表中定義,並且可以通過列表名稱來進行特殊全局變量的指定。
      示例:
      globlist1.ivar := globlist2.ivar; (* ivar from GVL globlist2 is copied to ivar in GVL globlist1 *)
    • 在包含的函數庫中定義的全局變量可以通過語法 "<函數庫命名空間>.<GVL名稱>.<變量名>" 獲得。參閱以下函數庫命名空間的說明。
      示例:
      globlist1.ivar := lib1.globlist1.ivar (* ivar from globlist1 in library lib1 is copied to ivar in GVL globlist1 kopiert *)
  • 對於一個函數庫一個命名空間被定義,當其包含在函數庫管理中時。所以可以訪問一個函數庫模塊或者通過"<函數庫命名空間>.<模塊名|變量名>" 獲得變量。注意所有函數庫中相近的函數庫命名空間必須被相繼啓動。
    例如:如果 Lib1 參考於 Lib0,模塊 fun 位於 Lib1 的獲得方式爲 "Lib0.Lib1.fun":

    ivar := Lib0.Lib1.fun(4, 5); (* return value of fun is copied to variable ivar in the project *)
    同時 "發佈工程中所有 IEC 圖標,如果這些參考沒有被包含在函數庫中。" 將會在相關的函數庫中的屬性中被激活,模塊 fun 也可以通過路徑 "Lib0.fun" 獲取。

 

AT <地址>: 這個變量可以直接被連接到明確的地址通過使用關鍵字 AT。

在功能塊中也可以使用不完全地址指定特殊的變量。以便於這個變量可以在本地接口中使用,但是在 '變量配置' 中必須有一個接口。

類型: 有效的 數據類型, 通過  ":=<初始化>"進行擴展。

 

任意的變量說明 可以包含在一個工程中的定義部分,以便清楚的瞭解變量的用途與目的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章