【SCL】1200案例:天塔之光&数码管显示&液体混合&水塔水位

使用scl编写天塔之光&数码管显示&液体混合&水塔水位

这里将剩余的四个小案例:天塔之光&数码管显示&液体混合&水塔水位,写在这里,比较简单易懂,大家可以自己编写一下!


一、案例1:天塔之光

1.控制要求

按下启动按钮,L10 亮 0.5S 后灭→L9 亮 0.5S 后灭→L1 亮 0.5S 后灭→L2、L3、L4、L5
亮 0.5S 后灭→L6、L7、L8、L9 亮 0.5S 后灭→L10 亮 0.5S 后灭,以此循环下去.........
按下停止,全部灯灭

2.编写程序 

这一个比较简单,我们继续使用脉冲和case语句就可以啦!

//停止
IF #OFF THEN
    #S := 0;
    #ZJ1 := 0;
    #ZJ2 := 0;
    #L1 := 0;
    #L2 := 0;
    #L3 := 0;
    #L4 := 0;
    #L5 := 0;
    #L6 := 0;
    #L7 := 0;
    #L8 := 0;
    #L9 := 0;
    #L10 := 0;
END_IF;

//定时器
#T[0].TON(IN := #ZJ1 & NOT #ZJ2,
   PT := T#1s,
   Q => #ZJ2);
  
IF #ZJ1 THEN
    #P[0](CLK := #ZJ2);
END_IF;
IF #P[0].Q THEN
    #S := #S + 1;
END_IF;

//启动接通中继
IF #ON THEN
    #ZJ1 := 1;
    #L10 := 1;
END_IF;

//指示灯运行部分
CASE #S OF
    1:
        #L10 := 0;
        #L9 := 1;
    2:
        #L9 := 0;
        #L1 := 1;
    3:
        #L1 := 0;
        #L2 := 1;
        #L3 := 1;
        #L4 := 1;
        #L5 := 1;
    4:
        #L2 := 0;
        #L3 := 0;
        #L4 := 0;
        #L5 := 0;
        #L6 := 1;
        #L7 := 1;
        #L8 := 1;
        #L9 := 1;
    5:
        #L6 := 0;
        #L7 := 0;
        #L8 := 0;
        #L9 := 0;
        #L10 := 1;
    6:
        #L10 := 0;
        #S := 1;
END_CASE;

3.效果

 

 


二、案例2:液体混合

1.控制要求

S1、S2、S3 为液面传感器,液体 1、2 阀门与混合液阀门由电磁阀 Y1、Y2、Y3 控制,
M 为搅动电机,控制要求如下:
按下启动按钮, 液体 Y1 阀门打开,液体 1 流入容器。当液面到达 S2 时,Y2 接通,关
闭液体 1 阀门,打开液体 Y2 阀门。液面到达 S1 时,关闭液体 Y2 阀门,搅动电机 M 开始
搅动。搅动电机工作 6 秒后停止搅动,混合液体阀门 Y3 打开,开始放出混合液体。当液面
下降到 S3 时,再过 2 秒后,容器放空,混合液阀门关闭,开始下一周期。
按下停止按钮,停止操作。 

 

2.编写程序

 这个也是可以用case语句来完成的!

//停止按钮
IF #OFF THEN
    #Y1 := 0;
    #Y2 := 0;
    #Y3 := 0;
    #M := 0;
    #BSF1 := 0;
    #BSF2 := 0;
    #X := 0;
END_IF;

//两个定时器
#T[0].TON(IN := #BSF1,
          PT := T#6s);
#T[1].TON(IN := #BSF2,
          PT := T#2s);

//流程步
CASE #X OF
    0:
        IF #ON THEN
           
            #X := 1;
        END_IF;
    1:
        #Y1 := 1;
        IF #S2 THEN
            #Y1 := 0;
            #Y2 := 1;
            #X := 2;
        END_IF;
    2:
        IF #S1 THEN
            #Y2 := 0;
            #M := 1;
            #BSF1 := 1;
            #X := 3;
        END_IF;
    3:
        IF #T[0].Q THEN
            #M := 0;
            #BSF1 := 0;
            #Y3 := 1;
            #X := 4;
        END_IF;
    4:
        IF #S3 THEN
            #BSF2 := 1;
            #X := 5;
        END_IF;
    5:
        IF #T[1].Q THEN
            #Y3 := 0;
            #X := 6;
        END_IF;
    6:
        #BSF1 := 0;
        #BSF2 := 0;
        #X := 1;
END_CASE;

 

三、案例3:数码管显示

 1.控制要求

 按下开关 ON,LED 灯显示 1→2→3→4→5→6→7→8→9→0→1→2......依次循环下去,
按下开关 OFF,灯全灭。

 

2.编写程序

 以数字1来举例,只要f,e 得电,就显示数字1,那么后面的数字都是用相应的字母的灯表示就可以啦!

IF #OFF THEN
    #a := 0;
    #b := 0;
    #c := 0;
    #d := 0;
    #e := 0;
    #f := 0;
    #g := 0;
    #h := 0;
    #KS1 := 0;
    #K := 0;
END_IF;

#T.TON(IN := #KS1 & NOT #SC1,
       PT := T#1s,
       Q => #SC1);
#P(CLK := #SC1);
IF #P.Q THEN
    #K := #K + 1;
END_IF;

CASE #K OF
    0:
        IF #ON THEN      //数字1
            #KS1 := 1;
            #f := 1;
            #e := 1;
        END_IF;
        
    1:                  //灭1亮2
        #f := 0;
        #e := 0;
        #a := 1;
        #b := 1;
        #g := 1;
        #e := 1;
        #d := 1;
    2:                //灭2亮3
        #a := 0;
        #b := 0;
        #g := 0;
        #e := 0;
        #d := 0;
        #a := 1;
        #b := 1;
        #g := 1;
        #c := 1;
        #d := 1;
    3:                //灭3亮4
        #a := 0;
        #b := 0;
        #g := 0;
        #c := 0;
        #d := 0;
        #f := 1;
        #g := 1;
        #b := 1;
        #c := 1;
    4:
        #f := 0;
        #g := 0;
        #b := 0;
        #c := 0;
        #a := 1;
        #f := 1;
        #g := 1;
        #c := 1;
        #d := 1;
    5:
        #a := 0;
        #f := 0;
        #g := 0;
        #c := 0;
        #d := 0;
        #a := 1;
        #f := 1;
        #g := 1;
        #c := 1;
        #d := 1;
        #e := 1;
    6:
        #a := 0;
        #f := 0;
        #g := 0;
        #c := 0;
        #d := 0;
        #e := 0;
        #a := 1;
        #b := 1;
        #c := 1;
    7:
        #a := 0;
        #b := 0;
        #c := 0;
        #a := 1;
        #b := 1;
        #c := 1;
        #d := 1;
        #e := 1;
        #f := 1;
        #g := 1;
    8:
        #a := 0;
        #b := 0;
        #c := 0;
        #d := 0;
        #e := 0;
        #f := 0;
        #g := 0;
        
        #a := 1;
        #b := 1;
        #c := 1;
        #d := 1;
        #f := 1;
        #g := 1;
    9:
        #a := 0;
        #b := 0;
        #c := 0;
        #d := 0;
        #f := 0;
        #g := 0;
        
        #a := 1;
        #f := 1;
        #e := 1;
        #d := 1;
        #c := 1;
        #b := 1;
    10:
        #a := 0;
        #f := 0;
        #e := 0;
        #d := 0;
        #c := 0;
        #b := 0;
      
    11:
        #f := 1;
        #e := 1;
    12:
        
        #K := 1;
END_CASE;

 3.效果

 


四、案例4:水塔水位 

 1.控制要求

 当水池水位低于水池低水位界(S4 为 OFF 表示),阀 Y 打开进水(Y 为 ON)定时器
开始定时,5 秒后,如果 S4 还不为 ON,那么阀 Y 指示灯闪烁,表示阀 Y 没有进水,出现
故障。
S3 为 ON 后,阀 Y 关闭(Y 为 OFF)。当 S4 为 ON 时,且水塔水位低于水塔低水位界
时 S2 为 OFF,电机 M 运转抽水。当水塔水位高于水塔高水位界时 S1 为 ON 电机 M 停止。

 

 2.编写程序

IF #OFF THEN
    #BZ1 := 0;
    #BZ2 := 0;
    #BZ3 := 0;
    #M := 0;
    #P := 0;
END_IF;

#Y := #BZ2 OR #BZ3 & "Clock_1Hz" ;

#T[1].TON(IN := #BZ2,
          PT := T#3s);

IF #ON THEN
    #BZ1 := 1;
    #BZ2 := 0;
    #BZ3 := 0;
    #M := 0;
END_IF;

CASE #P OF
    0:
        IF #BZ1 THEN
            #P := 1;
        END_IF;
    1:
            IF #S4 = 0 THEN
                #BZ2 := 1;
            END_IF;
            IF #T[1].Q & #S4 = 0 THEN
                #BZ2 := 0;
                #BZ3 := 1;
                #P := 2;
            END_IF;
    2:
        IF #S3 THEN
            #BZ3 := 0;
            #BZ2 := 0;
            #P := 3;
        END_IF;
    3:
        IF #S4 & #S2 = 0 THEN
            #M := 1;
            #P := 4;
        END_IF;
    4:
        IF #S1 THEN
            #M := 0;
            #P := 5;
        END_IF;
    5:
        #BZ2 := 0;
        #BZ3 := 0;
        #M := 0;
        #P := 0;
        #P := 0;
END_CASE;

 



 

总结

上面就是这四个小案例的所有内容啦!

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

'...

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值