[西门子] S7-1200 -1500 SCL入门基础(八)

[复制链接]
查看146 | 回复1 | 5 天前 | 显示全部楼层 |阅读模式
本帖最后由 慧通工控 于 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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
lhsz | 5 天前 | 显示全部楼层
感谢楼主分享精彩内容
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则