結構化語言(Structured Text,ST)是一種類似 C 語言編程方式,程式碼最大的特色是使用人類孰悉的文字例如: if then else, while, for ..等文字敘述組合而成,與CPU有關的IL指令比較,結構化語言接近人類語法所以被稱為高階語言,IL指令式(或LD)被稱為低階指令,IL指令專長在處理0跟1的信號;ST語言則擅長在處理數值資料。當今的工業自動化已朝向智慧化發展,使用AD/DA、伺服馬達、視覺影像、機器手臂已經非常普遍,PLC程式也必須大量的處數值運算,可以預見未來結構化語言會逐漸成為PLC編碼的主流。
ST 程式要素
敘述句(Statement)是 ST 語言中最基本的執行單位,它代表的是一個階梯圖區段(NETWORK),敘述句由表達式(Expression)加上分號 ”;”
而成,而表達式由運算元(Operand)與運算子(Operator)組合而成。
運算元是資料,運算子是處理資料的方法。
EX:
D0 := D1+10;
敘述句: D0 := D1+10;
表達式: D1+10
運算元: D1,10
運算子: +
布林資料做AND,OR及 NOT位元邏輯運算。
EX:
M0 := X0.0 AND
X0.1;
數值資料做 加,減,乘,除 算術運算及 <, > ,<= ,>= 比較運算。
EX:
M0 := (D0 >=
100);
假如 D0的數值大於等於100,M0 ON;否則 M0 OFF。
在( * 與 * )符號之間的文字為註解不會進行編譯,程式中多寫注解以便後續維護。
在 ST 語言中使用常數時,其格式如下。
10 進制:23456
16 進制:16#5BA0
8 進制:8#55640
2 進制:2#101101110100000
字串:”XYZ”
BOOL:TRUE 或 FALSE。
ST 語法運算子表。
結構化語言包括3種結構:
l 順序結構:依照程式編寫順序,依序一行一行執行,用上表運算子組成的敘述屬順序結構。
指定結構 :=
語法
範例
:=
a :=
b;
範例說明
將b值指定(傳送)給a裝置或變數符號。
l 分歧結構(判斷結構):依判斷示結果(True或 False) 2擇1執行,有2種語法 IF, CASE。
分歧結構 IF
語法
範例
IF expression 1> THEN statements; ELSIF statements; . . ELSIF statements; ELSE statements; END_IF; IF d f:=1; ELSIF d=e THEN f:=2; ELSE f:=3; END_IF; 範例說明 假如 d 然後執行f:=1後離開;否則執行f:=3後結束。 分歧結構 CASE 語法 範例 CASE statements 1; statements 2; ... statements n; ELSE statements END_CASE; CASE f OF 1: g := 10; 2: g := 20; ELSE g := 0; END_CASE; 範例說明 判斷 f 的值是否為1,若是,則執行 g := 10; 後離開此結構;若否,繼續判斷 f 的值是否為 2,若是,則執行 g := 20; 後離開此結構;若否,則執行關鍵字「ELSE」之後的 g := 0; 後離開。 l 重複結構(迴圈結構):重複執行程式待條件成立後即離開迴圈,繼續執行下一行程式,有3種語法 REPEAT,WHILE及FOR。 迴圈結構 REPEAT 語法 範例 REPEAT statements; UNTIL END_REPEAT; REPEAT i := m + n; UNTIL i < 100 END_REPEAT; 範例說明 先執 i := m + n; 後再判斷 i < 100 的值是否為真(True),若其值為真,則程式會直接離開此結構;若為否(False),則結構內部的程序便會重複執行 i := m + n;,直 i < 100 值為真(True)之後才會離開。 迴圈結構 WHILE 語法 範例 WHILE statements; END_WHILE; WHILE m > 1 DO a := a + m; END_WHILE; 範例說明 先判斷假如 m > 1 的值是否為真(True),若為真,則程式便會重複執行 a := a + m;,直到 m > 1值為否(False)之後才會離開。 迴圈結構 FOR 語法 範例 FOR := statements; END_FOR; FOR h:=1 TO 10 BY 2 DO a := a + h; END_FOR; 範例說明 先將變數 h 設為初始值 1,假如變數 h 值小於終點值10,執行 a := a + h; 之後再將變數h的內容值加上增量值2,接著再判斷變數 h 值是否小於終點值10,若是,則繼續執行 a := a + h; 及 h 的內容值加上增量值2;直到 h 值大於終點值10,則程式便會離開 FOR 結構。
苹果手机为何遇到WiFi就自动打开?解析背后的原因与机制