【SCL】for循环指令的应用&三层电梯模拟控制

这篇具有很好参考价值的文章主要介绍了【SCL】for循环指令的应用&三层电梯模拟控制。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

使用scl编写三层电梯模拟控制,并学习for循环指令的应用。

文章目录

目录

文章目录

前言

1.指令学习

 2.循环传值

3.嵌套调用

4.冒泡排序

1.排序

 2.优化

二、三层电梯模拟控制

1.控制要求

2.编写思路

3.功能块部分编程

1.开门关门块

 2.去1层2层3层的块

 3.主程序部分

4.for循环部分(优先级) 

1.上升优先 

 2.下降优先

 3.等于楼层时

5. 完善程序

 1.上升下降互锁

 2.楼层限位判断

 3.启动停止

6.主程序(完整)

总结





前言

本章我们一起来完成12个小项目试验中的最后一个——三层电梯模拟控制;并通过本章来学习一下for循环指令的应用,其中包括:循环传值,嵌套调用,冒泡排序,和编写电梯的思路和方法。好的,下面我们进入今天的内容!


一、for循环指令

在前面的指令篇中,我们有提到过,但具体的使用没有说,这里我们来学习一下。 

1.指令学习

 关于for循环,它需要有明确的循环次数,下面第一个参数是一个变量的起始值,第2个是结束值,第3个是步宽(不使用默认是1,一次走一个,如果是2就是一次走两个),for循环中是执行内容。

scl语言的嵌套for循环,西门子1200,算法,排序算法,经验分享,windows,学习

 下面是博图中关于for循环的说明:

scl语言的嵌套for循环,西门子1200,算法,排序算法,经验分享,windows,学习

scl语言的嵌套for循环,西门子1200,算法,排序算法,经验分享,windows,学习

scl语言的嵌套for循环,西门子1200,算法,排序算法,经验分享,windows,学习

scl语言的嵌套for循环,西门子1200,算法,排序算法,经验分享,windows,学习


 2.循环传值

 这里简单使用for通过一个数组来对另一个数组进行传值:

建立两个数组和整型变量,在for循环中先确定变量的初始值,这里从0开始到5结束和数组的个数相同(如果变量超过数组个数,会导致溢出报错);by是1,一次一个(这里不用by也可以,默认是1);内容执行程序就是获取两个数组的下标然后进行传值。 

scl语言的嵌套for循环,西门子1200,算法,排序算法,经验分享,windows,学习

 效果:

scl语言的嵌套for循环,西门子1200,算法,排序算法,经验分享,windows,学习


3.嵌套调用

 for循环也可以嵌套调用,简单示范的话,这里我们可以给一个二维数组进行传值;二维数组有两个参数或者叫坐标,可以看下图:

scl语言的嵌套for循环,西门子1200,算法,排序算法,经验分享,windows,学习

这里我们给二维数组传参数,就建立两个二维数组 ,中间用,号隔开;建立两个整型变量。

scl语言的嵌套for循环,西门子1200,算法,排序算法,经验分享,windows,学习

 这里循环内部就是将变量w和t放在数组中,让他们不断变化,例:第一次的w为0,进入第2个for循环中,t从0循环到5,然后跳出,再走到第1个循环w为2,然后再次进入第2个循环;这样就将二维数组0到5,1到5,2到5,3到5等,全部走一遍。scl语言的嵌套for循环,西门子1200,算法,排序算法,经验分享,windows,学习

 
效果:

scl语言的嵌套for循环,西门子1200,算法,排序算法,经验分享,windows,学习


4.冒泡排序

1.排序

知道for循环如何使用后,这里我们可以来看一下冒泡排序;它是一个排序方法,可以看下360百科中的解释

scl语言的嵌套for循环,西门子1200,算法,排序算法,经验分享,windows,学习

 算法原理:

scl语言的嵌套for循环,西门子1200,算法,排序算法,经验分享,windows,学习

scl语言的嵌套for循环,西门子1200,算法,排序算法,经验分享,windows,学习


知道原理后,我们来用SCL中for循环来实现一下: 

 我们建立1个数组,来存放排序过的排序值;再建立一些变量;这里我们初始变量为0;

len是我们的总个数(像0..5,就有6个数),总个数-1就是下标的值;进入循环后,将第1个数据和第2个数据进行比较,如果第1个数据大于第2个数据,就将它们两个交换一下,然后一直循环直到结束,那么排序就完成了。

scl语言的嵌套for循环,西门子1200,算法,排序算法,经验分享,windows,学习

这里我们提前写好数组里面的起始值,然后再执行; 

scl语言的嵌套for循环,西门子1200,算法,排序算法,经验分享,windows,学习

 效果:

scl语言的嵌套for循环,西门子1200,算法,排序算法,经验分享,windows,学习

 2.优化

上面我们是提前写好起始值,然后进行排序的,我们这里也可以做两个数组,一个在运行时让我们输入初始值,另一个在运行时输出排序值;另外第2个循环也可以优化一下,每次让它-j,因为排序是有重复比较的,我们每次-j可以优化掉这一点;

在这个前面使用了一个peek指令,读取存储地址,然后放入到排序数组进行排序;注意:使用peek要取消块的优化,下面的np_temp是获取偏移地址的。

scl语言的嵌套for循环,西门子1200,算法,排序算法,经验分享,windows,学习

 效果:

scl语言的嵌套for循环,西门子1200,算法,排序算法,经验分享,windows,学习









二、三层电梯模拟控制

前面简单学习回顾一下for循环指令,接下来我们一起来看三层电梯的控制。

1.控制要求

 控制要求可以简单看一下,主要就是三个楼层来回切换上升或下降;

scl语言的嵌套for循环,西门子1200,算法,排序算法,经验分享,windows,学习

 电梯参考:

 scl语言的嵌套for循环,西门子1200,算法,排序算法,经验分享,windows,学习


2.编写思路

编写思路这里大家可以想一想平时的电梯都是如何工作的,其实简单的上升下降是比较好控制的,再加一个开门关门就差不多可以实现简单功能了,但是SCL写的话要用比较多的if来判断,这里我们的 上升,下降,开门关门,还有每个楼层外的按钮和电梯内的按钮这些可以都做成一个块,在使用时多次调用就可以,那么一个简单的电梯控制就差不多了,后面我们要根据电梯实际运行时的一个状态,再加一些控制,像简单的优先级,先去2层再去3层等等。


3.功能块部分编程

编程思路确定后,下面来编写具体的程序,这里我们先将多次需要使用的功能写在一个块里,将开关门做一个块,去1层2层3层做成块,最后在一个主的程序中将它们联系起来,来完成控制要求。

这里是用的FB块,建立的形参 ;

scl语言的嵌套for循环,西门子1200,算法,排序算法,经验分享,windows,学习

1.开门关门块

这里的要求就是,延时1s开门,延时2s关门,我们来编写一下:

变量m不等于0是触发条件,我们要执行开关门时只要让m不等0就可以了;变量HH是正在开门关门的一个标志位,开关门时不能进行其他操作; 

#T[0].TON(IN := #BZ1,
          PT := t#1s);
#T[1].TON(IN := #BZ2,
          PT := t#2s);
#T[2].TON(IN := #BZ3,
          PT := T#2s);

IF "电梯_DB".M <> 0 THEN
    #HH := 1;
    #BZ1 := 1;
    //"电梯_DB".CLOSE := 0;
    IF #T[0].Q THEN
        "电梯_DB".OPEN := 1;
        #BZ2 := 1;
    END_IF;
    IF #T[1].Q THEN
        "电梯_DB".OPEN := 0;
        "电梯_DB".CLOSE := 1;
        #BZ3 := 1;
    END_IF;
    IF #T[2].Q THEN
        "电梯_DB".CLOSE := 0;
        #BZ1 := 0;
        #BZ2 := 0;
        #BZ3 := 0;
        "电梯_DB".M := 0;
   
        RESET_TIMER(#T[0]);
        RESET_TIMER(#T[1]);
        RESET_TIMER(#T[2]);
        #HH := 0;
        "数据块_1"."SZ"["数据块_1".T] := 0;
        "数据块_1".T := 0;
        "数据块_1".W := 0;
        "电梯_DB".I := 0;
        "电梯_DB".Q := 0;
        "电梯_DB".O := 0;
 
    END_IF;
END_IF;

 2.去1层2层3层的块

这里我将这个块,分成了3个来写,方便后面调试或者完善; 

scl语言的嵌套for循环,西门子1200,算法,排序算法,经验分享,windows,学习

 去1层:(在2层或3层按下1层按钮时会触发)

这里就很简单了,A=1的时候,电梯下降 ,到达1层后给m赋值,执行开门关门,这里&上了一个开关门的一个标志位,代表开关门时无法执行去1层(后面的2层3层也一样)

//电梯去1层
#P[0](CLK := "电梯_DB".SQ1);
IF "电梯_DB".A = 1 & NOT "电梯_DB".BZ1 & NOT "开关门_DB".HH  & "电梯_DB".C = 0 THEN
    "电梯_DB".DOWN := 1;
    IF #P[0].Q THEN
        "电梯_DB".DOWN := 0;
        "电梯_DB".M := 4;
        "电梯_DB".A := 0;
    END_IF;
END_IF;

去2层:(去2层有两种情况,在3层会下降,在1层会上升)

 当b=1执行上升,当b1=2执行下降,到达楼层后停止;

//电梯去往2层
#P[1](CLK := "电梯_DB".SQ2);
IF "电梯_DB".B = 1 & NOT "电梯_DB".BZ2 & NOT "开关门_DB".HH THEN
    "电梯_DB".UP := 1;
ELSIF "电梯_DB".B1 = 2 & NOT "电梯_DB".BZ1 & NOT "开关门_DB".HH THEN
    "电梯_DB".DOWN := 1;
END_IF;
IF #P[1].Q & "电梯_DB".B = 1 THEN
    "电梯_DB".UP := 0;
    "电梯_DB".K := 1;
    "电梯_DB".B := 0;
    "电梯_DB".M := 2;
 
ELSIF #P[1].Q & "电梯_DB".B1 = 2 THEN
    "电梯_DB".DOWN := 0;
    "电梯_DB".K := 1;
    "电梯_DB".B1 := 0;
    "电梯_DB".M := 3;

END_IF;

 去3层:(去3层是上升,不管是1层还是2层呼叫,都会上升)

 这里和去1层基本相同;

//电梯去3层
#P[0](CLK := "电梯_DB".SQ3);
IF "电梯_DB".C = 1 & NOT "电梯_DB".BZ2 & NOT "开关门_DB".HH & "电梯_DB".O=0 THEN
    "电梯_DB".UP := 1;
    IF #P[0].Q THEN
        "电梯_DB".UP := 0;
        "电梯_DB".M := 3;
        "电梯_DB".C := 0;
    END_IF;
END_IF;

 3.主程序部分

 前面两个块好后,我们可以在主程序块中编写一下,让它们执行相应的动作:

 开始先调用一下我们的函数块,后面用3个楼层限位来触发3个楼层标志,再根据楼层标志来触发条件执行相应的的楼层;


    
    "开关门_DB"();   //开关门函数块
 
        "去1层_DB"();//楼层函数块
        "去2层_DB"();
        "去3层_DB"();
    
    // 用3个楼层限位的通和断,来接通或断开中继和楼层指示灯;
    // 是对三个楼层的限位进行控制。
    IF #SQ1 THEN
        #ZJ[1] := 1;
        #ZJ[2] := 0;
        #ZJ[3] := 0;
        #L1 := 1;
        "数据块_1".U := 1;
    ELSE
        #ZJ[1] := 0;
        #L1 := 0;
    END_IF;
    IF #SQ2 THEN
        #ZJ[2] := 1;
        #ZJ[3] := 0;
        #ZJ[1] := 0;
        #L2 := 1;
        "数据块_1".U := 2;
    ELSE
        #ZJ[2] := 0;
        #L2 := 0;
    END_IF;
    IF #SQ3 THEN
        #ZJ[3] := 1;
        #ZJ[2] := 0;
        #ZJ[1] := 0;
        #L3 := 1;
        "数据块_1".U := 3;
    ELSE
        #ZJ[3] := 0;
        #L3 := 0;
    END_IF;
    
    //在运行时进行互锁,上升时不能下降,下降时不能上升
    IF #UP = 1 THEN
        #BZ1 := 1;
    ELSE
        #BZ1 := 0;
    END_IF;
    IF #DOWN = 1 THEN
        #BZ2 := 1;
    ELSE
        #BZ2 := 0;
    END_IF;
    //获取按钮上升沿
    #P[0](CLK := #SQ1);
    #P[1](CLK := #SQ2);
    #P[2](CLK := #SQ3);
    
    #PR[0](CLK := #S1);
    #PR[1](CLK := #S2);
    #PR[2](CLK := #S3);
    #PR[3](CLK := #SU1);
    #PR[4](CLK := #SU2);
    #PR[5](CLK := #SD2);
    #PR[6](CLK := #SD3);





 这里就是楼层执行部分,在1层按下1楼按钮后,执行开门关门,如果按下2层3层按钮就执行我们的去2层去3层的块。

//一层执行
    IF #ZJ[1] THEN
        IF "数据块_1".T = 1 THEN
            #M := 1;
        END_IF;
        IF "数据块_1".T = 2 THEN
            #O := 1;
            #B := 1;
        END_IF;
        IF "数据块_1".T = 3 THEN
            #C := 1;
        END_IF;
        
    END_IF;
    //二层执行
    IF #ZJ[2] THEN
        IF "数据块_1".T = 2 THEN
            #M := 1;
        END_IF;
        IF "数据块_1".T = 1 THEN
            #A := 1;
        END_IF;
        IF "数据块_1".T = 3 THEN
            #C := 1;
        END_IF;
    END_IF;
    //三层执行
    IF #ZJ[3] THEN
        IF "数据块_1".T = 3 THEN
            #M := 1;
        END_IF;
        IF "数据块_1".T = 1 THEN
            #A := 1;
        END_IF;
        IF "数据块_1".T = 2 THEN
            #B1 := 2;
        END_IF;
    END_IF;

4.for循环部分(优先级) 

1.上升优先 

 在电梯执行时,如果在1层按下3 2 1 内部按钮,那么要优先执行距离1层最近的楼层,这里就用到for循环:在循环数组时,执行3,2,1,进行循环,如果按下3再按下2,那么2会将3覆盖掉;我们再判断一下它是否大于当前楼层,如果是就将找到的最小楼层给变量T,然后再执行楼层;

 //上升优先级(后按下的按钮会覆盖掉前面的)
    FOR "数据块_1".W := 3 TO 1 BY -1 DO
        IF "数据块_1".SZ["数据块_1".W] = TRUE THEN
            IF "数据块_1".W > "数据块_1".U THEN
                "数据块_1".T := "数据块_1".W;
            END_IF;
        END_IF;
    END_FOR;

 2.下降优先

 这里和上升优先相反,是从1到3,依次执行,然后判断是否小于当前楼层,如果是就执行;

 //下降优先级
    FOR "数据块_1".W := 1 TO 3 BY 1 DO
        IF "数据块_1".SZ["数据块_1".W] = TRUE THEN
            IF "数据块_1".W < "数据块_1".U THEN
                "数据块_1".T := "数据块_1".W;
            END_IF;
        END_IF;
    END_FOR;

 3.等于楼层时

在等于楼层时,再执行这一种情况; 

 //等于当前楼层时进行判断
        FOR "数据块_1".W := 1 TO 3 BY 1 DO
            IF "数据块_1".SZ["数据块_1".W] = TRUE THEN
                IF "数据块_1".W = "数据块_1".U THEN
                    "数据块_1".T := "数据块_1".W;
                END_IF;
            END_IF;
        END_FOR;

5. 完善程序

这里基本功能和简单优先级都可以实现了,我们再将各部分程序完善一下 ;

 1.上升下降互锁

在上面的楼层部分加上BZ1或BZ2的常闭,就可以了。 

 //在运行时进行互锁,上升时不能下降,下降时不能上升
    IF #UP = 1 THEN
        #BZ1 := 1;
    ELSE
        #BZ1 := 0;
    END_IF;
    IF #DOWN = 1 THEN
        #BZ2 := 1;
    ELSE
        #BZ2 := 0;
    END_IF;

 2.楼层限位判断

 判断是否有多个限位被触发,如果有就停止所有动作;

//判断是否有两个或两个以上的限位被触发,如果有就停止当前所有动作
IF (#SQ1 & #SQ2) OR (#SQ1 & #SQ3) OR (#SQ2 & #SQ3 OR #SQ1 & #SQ2 & #SQ3) THEN
    #BJ100 := 1;
    #L1 := 0;
    #L2 := 0;
    #L3 := 0;
ELSE
    #BJ100 := 0;
END_IF;

 3.启动停止

//停止,按下后运行完当前楼层后停止,按下停止后再按楼层呼叫按钮就无效了
IF #OFF THEN
    #TZ100 := 1;
END_IF;
//按下启动后,按钮恢复初始状态
IF #ON THEN
    #TZ100 := 0;
END_IF;

6.主程序(完整)

 这里还加了一个按下按钮后延时2s后再执行的定时器,主要是在多个按钮按下时有足够的时间来进行一个优先级判断,然后执行。

//判断是否有两个或两个以上的限位被触发,如果有就停止当前所有动作
IF (#SQ1 & #SQ2) OR (#SQ1 & #SQ3) OR (#SQ2 & #SQ3 OR #SQ1 & #SQ2 & #SQ3) THEN
    #BJ100 := 1;
    #L1 := 0;
    #L2 := 0;
    #L3 := 0;
ELSE
    #BJ100 := 0;
END_IF;
//停止,按下后运行完当前楼层后停止,按下停止后再按楼层呼叫按钮就无效了
IF #OFF THEN
    #TZ100 := 1;
END_IF;
//按下启动后,按钮恢复初始状态
IF #ON THEN
    #TZ100 := 0;
END_IF;

IF NOT #BJ100 THEN//多个限位按下就停止
    
    "开关门_DB"();   //开关门函数块
    IF #T[5].Q THEN  //启动延时时间
        "去1层_DB"();//楼层函数块
        "去2层_DB"();
        "去3层_DB"();
    END_IF;
    //启动延时
    #T[5].TON(IN := #BZ5,
              PT := T#2s);
    //当按钮全部复位后,标志位清零
    IF "数据块_1".SZ[1] = "数据块_1".SZ[2] & "数据块_1".SZ[2] = "数据块_1".SZ[3] & "数据块_1".SZ[3] = 0 THEN
        #BZ5 := 0;
    END_IF;
    
    // 用3个楼层限位的通和断,来接通或断开中继和楼层指示灯;
    // 是对三个楼层的限位进行控制。
    IF #SQ1 THEN
        #ZJ[1] := 1;
        #ZJ[2] := 0;
        #ZJ[3] := 0;
        #L1 := 1;
        "数据块_1".U := 1;
    ELSE
        #ZJ[1] := 0;
        #L1 := 0;
    END_IF;
    IF #SQ2 THEN
        #ZJ[2] := 1;
        #ZJ[3] := 0;
        #ZJ[1] := 0;
        #L2 := 1;
        "数据块_1".U := 2;
    ELSE
        #ZJ[2] := 0;
        #L2 := 0;
    END_IF;
    IF #SQ3 THEN
        #ZJ[3] := 1;
        #ZJ[2] := 0;
        #ZJ[1] := 0;
        #L3 := 1;
        "数据块_1".U := 3;
    ELSE
        #ZJ[3] := 0;
        #L3 := 0;
    END_IF;
    
    //在运行时进行互锁,上升时不能下降,下降时不能上升
    IF #UP = 1 THEN
        #BZ1 := 1;
    ELSE
        #BZ1 := 0;
    END_IF;
    IF #DOWN = 1 THEN
        #BZ2 := 1;
    ELSE
        #BZ2 := 0;
    END_IF;
    //获取按钮上升沿
    #P[0](CLK := #SQ1);
    #P[1](CLK := #SQ2);
    #P[2](CLK := #SQ3);
    
    #PR[0](CLK := #S1);
    #PR[1](CLK := #S2);
    #PR[2](CLK := #S3);
    #PR[3](CLK := #SU1);
    #PR[4](CLK := #SU2);
    #PR[5](CLK := #SD2);
    #PR[6](CLK := #SD3);
    IF NOT #TZ100 THEN //按下停止后按钮无效
        //根据按下的按钮传入相应的数值,然后启动bz5进行延时(目的是判断是否还有其它按钮按下,如果有在延时时间
        //内进行排序,走离自己比较近的楼层
        IF #PR[0].Q OR #PR[3].Q THEN
            "数据块_1".#"SZ"[1] := 1;
            #BZ5 := 1;
        ELSIF #PR[1].Q OR #PR[4].Q OR #PR[5].Q THEN
            "数据块_1".#"SZ"[2] := 1;
            #BZ5 := 1;
        ELSIF #PR[2].Q OR #PR[6].Q THEN
            "数据块_1".#"SZ"[3] := 1;
            #BZ5 := 1;
        END_IF;
    END_IF;
    //获取数组中的按钮值,进行判断
    //上升优先级(后按下的按钮会覆盖掉前面的)
    FOR "数据块_1".W := 3 TO 1 BY -1 DO
        IF "数据块_1".SZ["数据块_1".W] = TRUE THEN
            IF "数据块_1".W > "数据块_1".U THEN
                "数据块_1".T := "数据块_1".W;
            END_IF;
        END_IF;
    END_FOR;
    //下降优先级
    FOR "数据块_1".W := 1 TO 3 BY 1 DO
        IF "数据块_1".SZ["数据块_1".W] = TRUE THEN
            IF "数据块_1".W < "数据块_1".U THEN
                "数据块_1".T := "数据块_1".W;
            END_IF;
        END_IF;
    END_FOR;
    //等于当前楼层时进行判断
    IF NOT #BZ1 & NOT #BZ2 THEN
        FOR "数据块_1".W := 1 TO 3 BY 1 DO
            IF "数据块_1".SZ["数据块_1".W] = TRUE THEN
                IF "数据块_1".W = "数据块_1".U THEN
                    "数据块_1".T := "数据块_1".W;
                END_IF;
            END_IF;
        END_FOR;
    END_IF;
    
    //一层执行
    IF #ZJ[1] THEN
        IF "数据块_1".T = 1 THEN
            #M := 1;
        END_IF;
        IF "数据块_1".T = 2 THEN
            #O := 1;
            #B := 1;
        END_IF;
        IF "数据块_1".T = 3 THEN
            #C := 1;
        END_IF;
        
    END_IF;
    //二层执行
    IF #ZJ[2] THEN
        IF "数据块_1".T = 2 THEN
            #M := 1;
        END_IF;
        IF "数据块_1".T = 1 THEN
            #A := 1;
        END_IF;
        IF "数据块_1".T = 3 THEN
            #C := 1;
        END_IF;
    END_IF;
    //三层执行
    IF #ZJ[3] THEN
        IF "数据块_1".T = 3 THEN
            #M := 1;
        END_IF;
        IF "数据块_1".T = 1 THEN
            #A := 1;
        END_IF;
        IF "数据块_1".T = 2 THEN
            #B1 := 2;
        END_IF;
    END_IF;
END_IF;





总结

上面就是for循环和最后一个项目三层电梯的所有内容了!文章来源地址https://www.toymoban.com/news/detail-558312.html

到了这里,关于【SCL】for循环指令的应用&三层电梯模拟控制的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 如何循环执行windows和linux上的控制台指令

    linux以centos为例做介绍 将以下脚本复制到并命名为repeat.sh 执行指令 ps -ef,执行1000次 先考虑脚本的形式 将以下代码复制仅repeat.bat中 以下指令是通过curl向某个服务器的8866端口发送10000次图片的请求 使用方法,具体结果就是不同的服务器不同了 我们改一个可以在本地之心并看现

    2024年02月13日
    浏览(43)
  • 西门子SCL常用控制语句解析

    SCL作为一种编程语言,可以实现LAD/FBD所有的功能,大多数的指令与LAD/FBD都是相同的,只是在编辑器中的外形不同。只有一些指令使用是不太一样的甚至LAD/FBD没有的,这里只介绍这些不同的 。 SCL特殊的指令有以下几种,如图1-3红框中的指令: 图1 读/写存储器 图2 转换操作中的

    2024年02月16日
    浏览(38)
  • 【rabbitMQ】-延迟队列-模拟控制智能家居的操作指令

    这个需求为控制智能家居工作,把控制智能家居的操作指令发到队列中,比如:扫地机、洗衣机到指定时间工作   一.什么是延迟队列? 延迟队列存储的对象是对应的延迟消息,所谓“延迟消息” 是指当消息被发送以后, 并不想让消费者立刻拿到消息 ,而是等待特定时间后

    2024年02月06日
    浏览(41)
  • C++ While 和 For 循环:流程控制全解析

    使用 switch 语句选择要执行的多个代码块之一。 语法 它的工作原理如下: switch 表达式被评估一次 表达式的值与每个 case 的值进行比较 如果找到匹配项,则执行关联的代码块 break 和 default 是可选的 下面的示例使用星期几的数字来计算星期几的名称: 示例 当 C++ 遇到

    2024年04月08日
    浏览(60)
  • Python条件控制和循环语句(if while for )

    同样需要注意冒号和缩进。另外,在 Python 中没有 do..while 循环。 while+else whlie+break break跳出本层循环的含义 标志位的使用 while+continue 死循环: 程序中坚决不能出现死循环 for循环不会出现死循环,它的循环条件不是我们来控制,是人家内部已经控制好了 for循环和while循环都是

    2024年02月11日
    浏览(47)
  • 【factoryio】使用SCL编写 <机械手控制> 程序

    使用虚拟工厂软件和博图联合仿真来编写【scl】机械手控制程序 文章目录 目录 文章目录  前言 二、程序编写 1.机械手运行部分 2.启动停止部分 3.急停复位部分  三、完整代码 总结 在前面我们一起写过了许多案例控制的编写,在这一章我们一起来编写一下一个仿真机械手程

    2024年02月03日
    浏览(45)
  • Python的流程控制语句,while循环和嵌套、for循环、break和continue、冒泡排序

    流程控制语句是用于控制程序的执行顺序的语句。在Python中,主要有while循环和嵌套、for循环、break和continue语句、冒泡排序等。 while循环和嵌套: while循环用于多次执行一段代码,直到条件不再满足为止。嵌套是将一个while循环放在另一个while循环内部,实现多层循环。 示例

    2024年01月18日
    浏览(96)
  • 【python】Python基础语法详细教程以及案例教学之 while循环语句、while语句嵌套应用、for循环语句、for语句嵌套应用、循环中断

    目录  前言 一、while循环的基础语法  1)什么是while语句?  2)如何具体实现while语句? 二、while循环的基础案例 1)案例一:  2)案例二: 三、while循环的嵌套应用 1)学习目标: 2)什么是while循环的嵌套 3)如何实现while嵌套? 四、while循环的嵌套案例 1)学习目标 2)补充

    2024年01月25日
    浏览(60)
  • 微信小程序如何循环控制一行显示几个wx:for

    正如上图所显示的一样,我们改如何控制一行显示几个图形呢? 首先第一种方法,数量少的可以自己一行一行的写,但是当数据很多的时候呢? 这时候就需要我们区使用循环进行代码的编写。废话不多数,直接写代码。 .demo-item{ width: 40%; } .demo-item .screen-data{ padding: 10rpx; te

    2024年02月09日
    浏览(50)
  • 【Linux】Shell脚本之流程控制语句 if判断、for循环、while循环、case循环判断 + 实战详解[⭐建议收藏!!⭐]

    👨‍🎓 博主简介   🏅云计算领域优质创作者   🏅华为云开发者社区专家博主   🏅阿里云开发者社区专家博主 💊 交流社区: 运维交流社区 欢迎大家的加入! 🐋 希望大家多多支持,我们一起进步!😄 🎉如果文章对你有帮助的话,欢迎 点赞 👍🏻 评论 💬 收藏

    2024年02月13日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包