說明
使用“在計(jì)數(shù)循環(huán)中執(zhí)行”指令,重復(fù)執(zhí)行程序循環(huán),直至運(yùn)行變量不在指定的取值范圍內(nèi)。
也可以嵌套程序循環(huán)。在程序循環(huán)內(nèi),可以編寫包含其它運(yùn)行變量的其它程序循環(huán)。
通過指令“復(fù)查循環(huán)條件”(CONTINUE),可以終止當(dāng)前連續(xù)運(yùn)行的程序循環(huán)。通過指令“立即退出循環(huán)”(EXIT) 終止整個(gè)循環(huán)的執(zhí)行。有關(guān)本主題的更多信息,請(qǐng)參見“另請(qǐng)參見”。
說明 有關(guān)運(yùn)行次數(shù)和運(yùn)行變量的信息 程序運(yùn)行時(shí)無法更改運(yùn)行次數(shù)。 出于性能原因,應(yīng)在塊接口的“Temp”部分中聲明運(yùn)行變量。此外,程序運(yùn)行時(shí)不得更改運(yùn)行變量。否則,該指令可能根據(jù)實(shí)施情況返回未定義結(jié)果。 |
FOR 語句的限制
編寫不會(huì)導(dǎo)致死循環(huán)的“安全”FOR 語句時(shí),請(qǐng)遵循以下規(guī)則和限制:
FOR
END_FOR;
如果... | ... 則 | 說明 |
---|---|---|
起始值 < 結(jié)束值 | 結(jié)束值 <(PMAX 增量) | 運(yùn)行變量在正方向上運(yùn)行 |
起始值 > 結(jié)束值 AND 增量 < O | 結(jié)束值 >(NMAX 增量) | 運(yùn)行變量在負(fù)方向上運(yùn)行 |
限制
各種數(shù)據(jù)類型的限制不同:
數(shù)據(jù)類型 | PMAX | NMAX |
---|---|---|
SINT 類型的運(yùn)行變量 | 127 | -128 |
INT 類型的運(yùn)行變量 | 32767 | -32768 |
DINT 類型的運(yùn)行變量 | 2147483647 | -2147483648 |
LINT 類型的運(yùn)行變量 | 9223372036854775807 | -9223372036854775808 |
下表列出了該指令的參數(shù):
參數(shù) | 數(shù)據(jù)類型 | 存儲(chǔ)區(qū) | 說明 | |
---|---|---|---|---|
S7-1200 | S7-1500 | |||
<執(zhí)行變量> | SINT、INT、DINT | SINT、INT、DINT、LINT | I、Q、M、D、L | 執(zhí)行循環(huán)時(shí)會(huì)計(jì)算其值的操作數(shù)。執(zhí)行變量的數(shù)據(jù)類型將確定其它參數(shù)的數(shù)據(jù)類型。 |
<起始值> | SINT, INT, DINT | SINT、INT、DINT、LINT | I、Q、M、D、L | 表達(dá)式,在執(zhí)行變量首次執(zhí)行循環(huán)時(shí),將分配表達(dá)式的值。 |
<結(jié)束值> | SINT, INT, DINT | SINT、INT、DINT、LINT | I、Q、M、D、L |
表達(dá)式,在運(yùn)行程序最后一次循環(huán)時(shí)會(huì)定義表達(dá)式的值。在每個(gè)循環(huán)后都會(huì)檢查運(yùn)行變量的值: 未達(dá)到結(jié)束值: 執(zhí)行符合 DO 的指令 達(dá)到結(jié)束值: 最后執(zhí)行一次 FOR 循環(huán) 超出結(jié)束值: 完成 FOR 循環(huán) 執(zhí)行該指令期間,不允許更改結(jié)束值。 |
|
SINT, INT, DINT | SINT、INT、DINT、LINT | I、Q、M、D、L |
執(zhí)行變量在每次循環(huán)后都會(huì)遞增(正增量)或遞減(負(fù)增量)其值的表達(dá)式??梢赃x擇指定增量的大小。如果未指定增量,則在每次循環(huán)后執(zhí)行變量的值加 1。 執(zhí)行該指令期間,不允許更改增量。 |
<指令> | - | - | 只有運(yùn)行變量的值在取值范圍內(nèi),每次循環(huán)都就會(huì)執(zhí)行的指令。取值范圍由起始值和結(jié)束值定義。 |
有關(guān)有效數(shù)據(jù)類型的更多信息,請(qǐng)參見“另請(qǐng)參見”。
示例
以下示例說明了該指令的工作原理:
SCL |
---|
FOR i := 2 TO 8 BY 2 DO "a_array[i] := "Tag_Value"*"b_array[i]"; END_FOR; |
“Tag_Value”操作數(shù)乘以“b_array”ARRAY 變量的元素 (2, 4, 6, 8)。并將計(jì)算結(jié)果讀入到“a_array”ARRAY 變量的元素 (2, 4, 6, 8) 中。
審核編輯:劉清
-
西門子
+關(guān)注
關(guān)注
95文章
3062瀏覽量
116330 -
計(jì)數(shù)器
+關(guān)注
關(guān)注
32文章
2261瀏覽量
94917 -
SCL
+關(guān)注
關(guān)注
1文章
239瀏覽量
17145 -
S7-1200
+關(guān)注
關(guān)注
11文章
331瀏覽量
18054 -
S7-1500
+關(guān)注
關(guān)注
3文章
300瀏覽量
6504
原文標(biāo)題:西門子博途SCL: FOR:在計(jì)數(shù)循環(huán)中執(zhí)行
文章出處:【微信號(hào):gh_a8b121171b08,微信公眾號(hào):機(jī)器人及PLC自動(dòng)化應(yīng)用】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論