本帖最后由 慧通工控 于 2025-4-2 09:01 编辑
一、FOR循环语句: Ø使用“在计数循环中执行”指令,重复执行程序循环,直至运行变量不在指定的取值范围内。 Ø也可以嵌套程序循环。 Ø在程序循环内,可以编写包含其它运行变量的其它程序循环。 Ø通过指令复查循环条件(CONTINUE)可以终止当前连续运行的程循环。 Ø通过指令立即退出循环(EXIT) 终止整个循环的执行。 ● FOR语句格式: FOR<循环变量>:=<变量起始值>TO<变量结束>BY<步值>DO <要执行的语句> ; END_FOR; //FOR语句格式:FOR <循环变量> := <变量起始值> TO <变量结束值> BY <步值> DO <要执行的语句> ;END_FOR; 执行过程: ① 判断<循环变量>的值是否在<变量起始值>与<变量结束值>之间,如果<循环变量>的值在二者之间,执行<语句>;否则,跳出循环,不再执行<语句>。 ② 在每次执行<语句>时,<循环变量>总是按照指定的步值增加其值。步值可以是任意的整数值。 [BY <步值>]表示可以省略,不指定步值,则其默认值是1。 ③ 当<循环变量>的值大于<变量结束值>时,退出循环。 程序片段 ●变量、起始值、结束值、支持的数据类型: 变量、起始值、结束值、支持的数据类型 ●使用FOR语句的注意事项: ① FOR循环在一个扫描周期内执行完成,否则会出错。可以使用IF语句作为FOR循环的触发条件。 ② FOR循环语句可以嵌套,但不宜嵌套过多。 ③ 循环变量必须定义为整数类型,不能定义为REAL。 ④ 循环结束时的变量值不能大于循环变量的取值范围。 ⑤ 常用的循环变量:i、 j、 k、 m、 n等单个字母。 程序片段 二、应用示例: ① 计算1-100之间数据和; 1、编写程序: 2、下载仿真: 下载测试 ②计算数组数据中最大值、最小值(冒泡排序); 定义变量 1、编写程序:
公众号:Smart Auto Control -- WangQuanFuGui 原创//上升沿信号判断#EnableEdgeUp := #Enable AND NOT #EnableEdgeHF;#EnableEdgeHF := #Enable;IF #EnableEdgeUp THEN //获取数组的下限、上限 #statLowerBound := LOWER_BOUND(ARR := #arraySort, DIM := 1); #statUpperBound := UPPER_BOUND(ARR := #arraySort, DIM := 1); //冒泡排序 FOR #i := #statLowerBound TO #statUpperBound - 1 DO //内层循环 FOR #j := #statLowerBound TO (#statLowerBound + #statUpperBound - #i - 1) DO IF NOT #Mode THEN //升序 IF #arraySort[#j] > #arraySort[#j + 1] THEN #tempReal := #arraySort[#j + 1]; #arraySort[#j + 1] := #arraySort[#j]; #arraySort[#j] := #tempReal; END_IF; ELSE //降序 IF #arraySort[#j] < #arraySort[#j + 1] THEN #tempReal := #arraySort[#j + 1]; #arraySort[#j + 1] := #arraySort[#j]; #arraySort[#j] := #tempReal; END_IF; END_IF; END_FOR; END_FOR; //最大值、最小值输出 IF NOT #Mode THEN #ArrayMax := #arraySort[#statUpperBound]; #ArrayMin := #arraySort[#statLowerBound]; ELSE #ArrayMax := #arraySort[#statLowerBound]; #ArrayMin := #arraySort[#statUpperBound]; END_IF;END_IF;
2、主程序调用: 3、下载仿真: 下载测试1 下载测试2 注:程序仅供参考!!!
如需程序源码请打赏小编或私信留言。 参考文献《STEP7和WinCC Engineering系统手册》 STEP 7 和 WinCC EngineeringV16-V20 全集成自动化获取 TIA Portal 相关信息的最短途径! https://docs.tia.siemens.cloud/ 后台回复关键字获取TIA系列软件V11-V20 |