常用的語句 st英教怎樣操作

上次我們已經介紹了部分ST語言的語法,這次主要介紹常用的語句 。
現在就接著上次的繼續吧!
IF語句
IF語句是選擇語句的一種, 其根據條件決定執行哪些語句 。判斷一個指定的條件是否為真,若真,則執行之后的語句若假,則執行ELSIF或者ELSE之后的語句 。一條標準的IF語句如下:
IF 條件表達式1 THEN
語句組1;
ELSIF 條件表達式2 THEN
語句組2;
ELSE
語句組3;
END_IF;
注意: 條件表達式可以是一個表達式,也可以是一個變量, 其結果或者類型必須為布爾類型 。
一個IF語句中可以有多個ELSIF,但是只能有一個IF,一個ELSE和END_IF 。
語句組中可以包含其他IF語句 。

常用的語句 st英教怎樣操作

文章插圖

IF語句
例如
范例程序:
IF 變量1 < 100 THEN
變量2:=變量1;
變量1:=變量1 + 1;
END_IF;
程序說明:
當變量1的值滿足小于100時,先將變量1的值賦給變量2,再將變量1進行自加1操作 。
當表達式滿足時,執行語句組1; 不滿足時,則執行語句組2:
IF 條件表達式1 THEN
語句組1;
ELSE
語句組2;
END_IF;

常用的語句 st英教怎樣操作

文章插圖

IF語句2
IF 的嵌套
IF語句中可嵌套IF語句,但IF與END_IF需成對出現:
IF 條件表達式1 THEN
語句組1;
IF 條件表達式2 THEN
語句組2;
END_IF;
END_IF;

常用的語句 st英教怎樣操作

文章插圖

IF的嵌套
帶ELSIF的IF語句
當表達式1滿足時,執行語句組1;如果表達1不滿足且表達式2滿足時,則執行語句組2;如果表達1和表達2均不滿足,則執行與語句組3:
IF 條件表達式1 THEN
語句組1;
ELSIF 條件表達式2 THEN
語句組2;
ELSE
語句組3;
END_IF;

常用的語句 st英教怎樣操作

文章插圖

帶ELSIF
可以講,IF語句是我們編程時最常用也是最實用的一個語句 。希望大家認真理解!
CASE語句
CASE語句是選擇語句的一種,在CASE語句中,控制變量與幾個值作比較,如果表達式的結果與其中一個值相同,那么就執
行相應的語句;如果表達式的結果與任何一個值都不相同,那么就執行ELSE后面的程序:
“表達式” 可以是一個表達式或者變量, 其數據類型必須為整數(如INT)
CASE 表達式 OF
數值1:
語句1;
數值2:
語句2;
數值3:
語句3;
。。。。
ELSE
語句4;
END_CASE;

常用的語句 st英教怎樣操作

文章插圖

case
CASE語句中,可對執行相同語句的分支進行簡寫;
例如數值3和數值4均是執行語句3,數值5到數值6之間的值均是執行語句組4
CASE 表達式 OF
數值1:
語句組1;
數值2:
語句組2;
數值3,數值4:
語句組3;
數值5 .. 數值6:
語句組4;
。。。。。。。
ELSE
語句5;
END_CASE;
例如:
CASE 比賽名次 OF
1: //第一名,獲特等獎,獎金10000
獲獎等級:=‘特等獎’;
獎金:=10000;
2: //第二名,獲一等獎,獎金8000
獲獎等級:=‘一等獎’;
獎金:=8000;
3, 4: //第三、四名,獲二等獎,獎金5000
獲獎等級:=‘二等獎’;
獎金:=5000;
5 .. 10: //第五至第十名,獲三等獎,獎金1000
獲獎等級:=‘三等獎’;
獎金:=1000;
ELSE //第十一名及以后,無獲獎,無獎金
獲獎等級:=‘無’;
獎金:=0;
END_CASE;
其實case也可以用IF來寫,但用CASE會來得更加簡潔易讀 。
循環語句
循環語句也稱為迭代語句,它重復執行操作直到滿足某個條件才結束循環 。
循環語句有FOR、 WHILE、 RAPEAT:

常用的語句 st英教怎樣操作

文章插圖

循環語句
FOR語句
按指定的循環次數循環執行 。
應用場合:如果預先可以確定循環次數,則適合采用FOR循環語句 。

常用的語句 st英教怎樣操作

文章插圖

for
FOR 控制變量:=初值表達式 TO 終值表達式 BY 增值表達式 DO
語句組;
END_FOR;
FOR循環語句格式中,控制變量是在循環過程中不斷變化的變量,在每次循環執行后,該變量的的值增加增量表達式所計算的值,即控制變量:=控制變量+增量表達式 。
初值表達式是控制變量起始值,終值表達式是控制變量終止值,增值表達式是控制變量的每次增量 。每次循環執行后控制變量的值變化,如果其值沒有超過終止值,則繼續執行循環,反之,
如果超過終止值或執行過程中執行到EXIT語句,則循環執行終止 。
控制變量的初值、終止值和增量的數據類型應一致且為整數類型(如SINT、 INT) 。
控制變量的初值和終止值,在執行過程中只計算一次 。
控制變量起始值和增量在不指定的情況為1,也即是FOR語句可簡化寫成:
FOR 控制變量 TO 終值表達式 DO
語句組;
END_FOR;
while語句
先判斷表達式條件是否為真(滿足),如果為真才執行循環有關語句,反
之則不執行 。
應用場合:循環次數不確定,且需要先判斷條件再確定是否執行 。

常用的語句 st英教怎樣操作

文章插圖

while
WHILE循環WHILE 條件表達式 DO
語句組;
END_WHILE;
WHILE循環語句格式中,條件表達式的結果必須是BOOL型 。
范例: 計算1到100的累加和SUM和階乘Factorial:
變量1 := 0; SUM:=0, Factorial:=0; //參數初始化
WHILE 變量1 < 100 DO
變量1 :=變量1 +1; //變量1從1~100變化
SUM :=SUM + 變量1; //計算累加
Factorial := Factorial * 變量1; //計算階乘
END_WHILE;
repeat語句
REPEAT語句先執行循環有關語句,再判斷條件表達式條件是否為真(滿足),
如果為真則結束循環,反之如果為假,則執行循環有關語句 。
應用場合:循環次數不確定,且需要先執行,再判斷條件 。
REPEAT循環語句格式中,條件表達式的結果必須是BOOL型 。

常用的語句 st英教怎樣操作

文章插圖

repeat
REPEAT
語句組;
UNTIL 條件表達式
END_REPEAT;
范例: 計算1到100的累加和SUM和階乘Factorial:
變量1 := 0; SUM:=0, Factorial:=0; //參數初始化
REPEAT
變量1 :=變量1 +1; //變量1從1~100變化
SUM :=SUM + 變量1; //計算累加
Factorial := Factorial * 變量1; //計算階乘
UNTIL 變量1 = 100 //當變量1=100時,結束循環
END_REPEAT;
注意:除了for不會出現死循環外,repeat,while都會出現死循環 。所以使用循環語句時要注意,防止出現死循環,導致看門狗報警 。還有for循環嵌套不宜太多,不然也會導致看門狗報警 。
EXIT語句
EXIT語句通常在執行循環有關語句的過程中立即中斷循環語句的執行 。
當EXIT位于嵌套循環語句內時,其執行時,其所在的循環回路立即中斷,但更外層的循環不受其影響 。
A3 := 0;
FOR A1:=1 TO 100 BY 1 DO
FOR A2:=1 TO 100 BY 1 DO
IF A2=50 THEN
EXIT; //當A2的值=50時,跳出循環 。
END_IF;
END_FOR;
A3 := A3+1;
END_FOR;
程序執行完后,變量A2的值為50,變量A3的值為101 。
跳轉語句
GOTO語句用于無條件跳轉到使用跳轉標號標記的代碼行, 僅限于在其所在POU中跳轉 。GOTO語法格式
如下:
<label名稱1>:
語句1;
……
<label名稱2>:
語句n+1;
……
GOTO <目標label名稱>;
語句m+1;
……
<label名稱3>:
語句p+1;
……
“label名稱”可以是任意的字符串,但同一個POU中不能重復, 它必須放在程序行的開始(程序行最左端) 。
GOTO指令后面一定緊跟<目標label名稱>,當程序執行到GOTO指令時,將自動跳轉到<目標label名稱>所在程序行,并從那一行
繼續執行程序 。
由于GOTO語句本身是無條件執行的,為了避免死循環,建議將GOTO語句置于條件語句中通過條件選擇語句控制GOTO語句的執行 。
注析:
注釋是對程序內部進行標注說明的內容;
詳細的注釋可方便維護人員對程序進行維護,也方便編寫程序人員之后更改程序, 所以經常需要在程序中適當地書寫注釋 。
注釋內容不是執行程序,編譯時,不會編譯注釋內容;
單行注釋:以“//” 開始,表示“//” 之后到這一行結束都是注釋內容;
區段注釋:使用“(*” 和“*)” 括起來的內容就是注釋 。這種方法進行注釋時不能嵌套注釋 。

常用的語句 st英教怎樣操作

文章插圖

注解
數組的聲明
數組是多個相同類型數據的集合, 這些數據稱為數組的的元素,使用時,通過下標進行區分;
在定義數組時,其數據類型的語法格式為:(以二維數組為例)

常用的語句 st英教怎樣操作

文章插圖

數組聲明
說明1:上面范例中數組為二維數組,一維的下標范圍為1~5,共5個;二維的下標范圍為1~3,共3
個;每個元素的數據類型均為INT;
說明2:數組下標的下限值可以不為1,但不能大于上限值;
說明3:數據類型可以是基本數據類型,也可以是用自定義的結構體或枚舉;
定義數組變量時,可指定其中元素的初始值,如下圖所示:

常用的語句 st英教怎樣操作

文章插圖

數組初始化
對數組變量的元素進行操作時,一維數組書寫方式為: 數組變量名[索引], 多維數組書寫方式為: 數組變量名[索引1,索引2, …]

常用的語句 st英教怎樣操作

文章插圖

數組的應用
結構體的定義
結構體是多個不同類型數據的集合, 這些數據稱為結構體的的成員 。定義結構體,就是定義結構體有哪些成員 。

常用的語句 st英教怎樣操作

文章插圖

struct
定義時,在“數據類型”的數據類型表,新建類型,類型選擇為STRUCT,即為結構體 。
結構體成員可以是任何數據類型,包括基本數據類型、數組、結構體、枚舉、聯合體、指針 。
結構體成員可以賦初始值 。此時,在每次實例化時,其實例化變量的成員的值,都會初始為結構體初始值 。若該實例化變量有
初始值,則以實例化變量的初始值為準 。
使用結構體之前,需要實例化結構體 。實例化結構體就是定義一個數據類型為結構體的變量 。所操作的也是這個實例化變量 。
在實例化時,可以對結構體的實例化進行初始化 。初始化時,在括號中,填寫“成員名:=值”,每一個用逗號分開即可 。

常用的語句 st英教怎樣操作

文章插圖

使用結構體,即為使用結構體的成員 。在使用時,使用“實例化名稱. 結構體成員名稱” 的方式進行訪問 。
例如:
產品1.長:=1000; //重新定義長 。
產品1.寬:=500; //重新定義寬 。
枚舉量的定義
枚舉量常用來表示一些有意義的數據,可以使用枚舉量來代表整數常量的符號名稱,提高程序的可讀性 。定義枚舉量, 就是定義枚舉量所需要的符號名稱與該符號對應的值 。

常用的語句 st英教怎樣操作

文章插圖

枚舉量的定義
定義時,在“數據類型”的數據類型表,新建類型,類型選擇為ENUM, 即為枚舉量 。
枚舉量的成員, 必須是INT類型 。
枚舉量成員,可以手動初始化為整數 。未手動初始化的成員,在編譯時,編譯器將按照順序從0開始,不與已分配的成員值重復,進行分配初始值 。
類似的,使用枚舉量前也要實例化 。所操作也是實例化的變量 。這個變量所表示的是枚舉量中的某一種符號 。
在實例化時,也可以進行初始化,要初始化為的枚舉量成員即可 。
使用枚舉量,直接使用名稱即可 。給枚舉量實例化變量賦值時,要將枚舉成員直接賦值給實例化變量 。也可以對枚舉量實例化的變量使用CASE語句,進行情形選擇 。

常用的語句 st英教怎樣操作

文章插圖

使用枚舉量
指針
指針是一個變量,其值為另一個變量的地址,即,內存位置的直接地址 。所有指針的值的實際數據類型,不管是整型、浮點型、字符型,還是其他的數據類型,都是一樣的,都是一個代表內存地址的十六進制數 。不同數據類型的指針之間唯一的不同是,指針所指向的變量或常量的數據類型不同 。

常用的語句 st英教怎樣操作

文章插圖

指針聲明
使用指針前必須先給指針賦值,否則會造成運行異常!
給指針賦值,即為取地址 。用ADR指令即可得到某個變量的地址,將其結果賦值給指針變量,即完成指針賦值操作 。
指針變量存儲的是一個內存的地址,解指針就是得到這個內存地址里的值 。用“^” 操作符即可解指針,將其結果賦給對應數據類型的變量,即可完成解指針操作 。
可以對指針進行加或者減操作,將結果賦值給另一個指針 。

常用的語句 st英教怎樣操作

文章插圖

指針的使用
這篇就到此為止,下一篇我們進入實際應用 。
【常用的語句 st英教怎樣操作】喜歡這篇文章的可以轉發和關注我,如果有好的建議或意見請留言告訴我 。