ST(結構化文本語言(ST))

結構化文本/結構式檔案程式語言英語:Structured text)也稱為ST語言,是為可程式邏輯控制器(PLC)設計的程式語言,是相關的IEC 61131-3標準中支援幾種語言之一[1]。結構式檔案程式語言是支援塊狀結構(block structured)的高階語言,以Pascal為 基礎,語法也類似Pascal。所有IEC 61131-3的語言都支援IEC61131通用元素(IEC61131 Common Elements)。其變數及函式呼叫是由IEC61131通用元素所定,因此同一個程式中可以使用IEC 61131-3中的不同語言。

結構式檔案程式語言類似於PASCALC語言,因此可利用與微電腦及個人電腦相同的程式設計技術,進行階梯圖所難以執行的複雜計算,完成程式的建立。常用的程式及迴路可透過FB(功能區塊)的建立輕易地重複利用。

基本介紹

  • 中文名:結構化文本/結構式檔案程式語言
  • 外文名:Structured text
ST的構成,範例,ST 表達式,ST 指令,

ST的構成

Structured text is one of the five languages supported by the IEC 61131-3 standard, designed for programmable logic controllers (PLCs). It is a high level language that is block structured and syntactically resembles Pascal, on which it is based. All of the languages share IEC61131 Common Elements. The variables and function calls are defined by the common elements so different languages within the IEC 61131-3 standard can be used in the same program.
結構式檔案程式語言支援複雜的敘述及巢狀指令:
  • 循環(REPEAT-UNTIL; WHILE-DO)
  • 條件式執行(IF-THEN-ELSE; CASE)
  • 函式(SQRT(), SIN())

範例

(* simple state machine *)TxtState := STATES[StateMachine];CASE StateMachine OF   1: ClosingValve();ELSE    ;; BadCase();END_CASE;
// PLC configurationCONFIGURATION DefaultCfg    VAR_GLOBAL        b_Start_Stop  : BOOL;         // Global variable to represent a boolean.        b_ON_OFF      : BOOL;         // Global variable to represent a boolean.        Start_Stop AT %IX0.0:BOOL;    // Digital   input of the PLC (Address 0.0)        ON_OFF     AT %QX0.0:BOOL;    // Digital output of the PLC (Address 0.0). (Coil)    END_VAR    // Schedule the main program to be executed every 20 ms    TASK Tick(INTERVAL := t#20ms);    PROGRAM Main WITH Tick : Monitor_Start_Stop;END_CONFIGURATIONPROGRAM Monitor_Start_Stop          // Actual Program    VAR_EXTERNAL        Start_Stop  : BOOL;        ON_OFF      : BOOL;    END_VAR    VAR                             // Temporary variables for logic handling        ONS_Trig    : BOOL;        Rising_ONS  : BOOL;    END_VAR    // Start of Logic    // Catch the Rising Edge One Shot of the Start_Stop input    ONS_Trig    := Start_Stop AND NOT Rising_ONS;        // Main Logic for Run_Contact -- Toggle ON / Toggle OFF ---    ON_OFF := (ONS_Trig AND NOT ON_OFF) OR (ON_OFF AND NOT ONS_Trig);            // Rising One Shot logic       Rising_ONS := Start_Stop;END_PROGRAM

ST 表達式

ST 語言中的表達式由運算符和運算元組成。運算元可以是常量、變數、函式調用或另一
個表達式。表達式的計算通過執行具有不同優先權的運算符完成。有最高優先權的運算符先
被執行,然後依次執行下一個優先權的運算符,直到所有的運算符被處理完。有相同優先權
的運算符按從左到右的順序執行。

ST 指令

賦值
執行賦值操作時,等號左邊是運算元(變數或地址),右邊是被賦予的表達式的值。例
如:Var1 := Var2 * 10;
調用功能塊
通過寫入功能塊實例的名字,並且在隨後的圓括弧中賦給參數值來調用功能塊。
舉例
變數聲明:
TPInst:TP;
VarBOOL1: BOOL;
VarBOOL2: BOOL;
程式:
TPInst(IN:= VarBOOL1,PT:= T#5s);(*參數IN 和PT 設定時鐘脈衝的觸發信號和高電平
的長度*)
VarBOOL2:=TPInst.Q;(*輸出脈衝值Q 賦給變數VarBOOL2*)
返回指令
返回指令可以根據條件退出POU。
IF 指令
使用IF 指令可以檢查條件,根據條件執行相應的指令。
語法:
IF <邏輯表達式> THEN
<IF 指令>
{ELSIF <邏輯表達式1> THEN
<ELSE IF 指令1>
ELSIF <邏輯表達式 n> THEN
<ELSE IF 指令 n>
ELSE
<ELSE 指令>}
END_IF;
其中{}的部分可選。
如果<邏輯表達式>返回TRUE,那么只有<IF 指令>被執行,其它的指令不被執行。同樣,
從<邏輯表達式1>開始,相繼執行邏輯表達式,直到其中一個表達式返回TRUE 為止,返回
TRUE 的邏輯表達式對應的指令被執行。
如果沒有邏輯表達式生成TRUE,那么只有<ELSE 指令>被執行。
舉例
IF temp<17
THEN heating_on := TRUE;
ELSE heating_on := FALSE;
END_IF;
這裡,如果溫度低於17 度,打開加熱器,反之則保持關閉狀態。
CASE 指令
使用CASE 指令,可以在結構中用一個相同的條件變數表示幾個條件指令。
語法:
CASE <Var1> OF
<Value1>: <指令1>
<Value2>: <指令2>
<Value3, Value4, Value5>: <指令3>
<Value6 .. Value10>: <指令4>
...
<Value n>: <指令n>
ELSE <ELSE 指令>
END_CASE;
CASE 指令根據下面的模型來執行:
如果變數<Var1>有值<值 i>,那么<指令i>被執行。
如果變數<Var1>沒有任何指定的值,那么<ELSE 指令>被執行。
如果變數的幾個值都需要執行相同的指令,那么可以把幾個值相繼寫在一起,並且用逗號分
開。這樣,就會有相同的執行指令。
如果對於變數的一個範圍需要執行相同的指令,可以寫入初值和終值,中間用兩個點分開。
這樣,條件就會有相同的執行。
舉例
CASE INT1 OF
1, 5: BOOL1 := TRUE;
BOOL3 := FALSE;
2: BOOL2 := FALSE;
BOOL3 := TRUE;
10..20: BOOL1 := TRUE;
BOOL3:= TRUE;
ELSE
BOOL1 := NOT BOOL1;
BOOL2 := BOOL1 OR BOOL2;
END_CASE;

相關詞條

熱門詞條

聯絡我們