FOR語句在控制變量處于指定的值范圍內時用來重復語句序列。控制變量必須是INT或DINT類型的本地變量的標識符。FOR循環的定義包括一個初始值和一個終止值的說明。兩個值必須與控制變量是同類型。
FOR語句如下執行:
在循環的開始。控制變量設置為初始值(初始化賦值),每次循環重復,其增加(正增量)或減少(負增量)一個增量,直到達到終止值。
接著循環的每次運行,檢查條件(終止值達到)證實是否滿足。如果條件滿足,語句序列被執行,否則跳過循環及其語句序列。
規則(Rules)
FOR語句的規則:
控制變量只能是INT或DINT數據類型。
能夠省去語句BY [增量]。如果不指定增量,則自動指定為+1。
初始賦值(Initial Assignment)
控制變量的初始值有下列語法。在賦值左邊的簡單變量必須是數據類型INT或DINT。
有效的初始賦值的例子:
FOR I := 1 TO 20
FOR I := 1 TO (START + J)
終止值和增量(Final Value and Increment)
能夠為終止值和所要求的增量寫一個基本表達式。此基本表達式有下列語法:
能夠省去語句BY [increment]。如果沒指定增量,則自動指定為+1。
初始值、終止值和增量是表達式(見"表達式、運算符和地址")。當FOR語句執行時,起先對他們進行求值。
循環執行后,不允許對終止值和增量值進行更改。
例子(Example)
FUNCTION_BLOCK FOR_EXA
VAR
INDEX : INT ;
IDWORD : ARRAY [1..50] OF STRING;
END_VAR
BEGIN
FOR INDEX := 1 TO 50 BY 2 DO
IF IDWORD [INDEX] = 'KEY' THEN
EXIT;
END_IF;
END_FOR;
實例: VASS標準中用確認類型合格的語句:
iTypAnz := WORD_TO_INT(pDB_STyp.Anz) / 12; 108/12=9
iRBSAnz := WORD_TO_INT(pDB_RBS.Anz) / 1666;6664/1666=4
IF (HAND OR Auto) AND NOT xUebern AND NOT FM_Reset AND xRBS_PZ_IO THEN
---如果在手動或者自動模式時沒有完成信號復位,有傳遞車型號正確時--
FOR iLauf := 1 TO iTypAnz BY 1 DO ---開始循環查9次找已有類型-
FOR i := 1 TO iRBSAnz BY 1 DO循環檢查給入數4位
IF tempDB_STyp.Typ[iLauf].arrText[i] = arrRBS[i]
OR tempDB_STyp.Typ[iLauf].arrText[i] = 'X' AND NOT cfg.X2
OR tempDB_STyp.Typ[iLauf].arrText[i] = '~' AND cfg.X2
THEN
如果在比較時有相等的,或者在比較位中有'X'或'~'時可以不比較,但是必須在cfg.X2上進行設置.那么車型號碼位合格被激活.
arrSTyp_IO[i] := True;有一位車型號碼合格
ELSE 如果沒有相同的,或是滿足條件的就退出循環
EXIT; 退出循環
END_IF; 結束IF
END_FOR;
IF arrSTyp_IO[iRBSAnz] THEN如果有一位車型號碼合格,就轉存
_wData := tempDB_STyp.Typ[iLauf].Data;
EXIT;退出循環
END_IF;
END_FOR;結束循環
xSTyp_IO := arrSTyp_IO[iRBSAnz]; 發出車型號碼合格
xSTyp_NIO := NOT xSTyp_IO;發出車型號碼不合格
END_IF;
審核編輯:劉清
-
控制器
+關注
關注
112文章
16214瀏覽量
177483 -
VaR
+關注
關注
0文章
38瀏覽量
11319 -
SCL
+關注
關注
1文章
239瀏覽量
17040 -
for循環
+關注
關注
0文章
61瀏覽量
2495
原文標題:西門子SCL語言for 循環事例
文章出處:【微信號:gh_a8b121171b08,微信公眾號:機器人及PLC自動化應用】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論