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

news2024/11/17 3:50:38

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

文章目录

目录

文章目录

前言

一、案例1:天塔之光

1.控制要求

2.编写程序 

3.效果

二、案例2:液体混合

1.控制要求

2.编写程序

三、案例3:数码管显示

 1.控制要求

2.编写程序

 3.效果

四、案例4:水塔水位 

 1.控制要求

 2.编写程序

总结


前言

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


一、案例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;

 



 

总结

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/354734.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

转载:项目分析信息方法论

转载一篇最近看到的项目分析信息法:如何快速分析项目和如何详细分析项目。 一、如何快速分析项目? 可以从6个点进行分析,分别是:「流量效率,销转效率,交付效率,客单价,毛利率&…

【程序化天空盒】过程记录02:云扰动 边缘光 消散效果

写在前面 写在前面唉,最近筋疲力竭,课题组的东西一堆没做,才刚刚开始带着思考准备练习作品,从去年5月份开始到现在真得学了快一年了,转行学其他的真的好累,,不过还是加油! 下面是做…

zlib压缩原理

数据压缩的本质 去除数据中的冗余信息,对于ABABABABABABAB字样的字符串,AB出现了7次,占用14个字节,如果将该字符串编码为7AB,只占用3个字节。 为什么需要对数据压缩 数据需要存储或者传输,为了节省磁盘空…

ONNXRUNTUIME实例分割网络说明

ONNXRUNTUIME c使用(分割网络)与相关资料(暂记) initiate a env with an id name(使用id名称启动env) create session (创建会话 ) onnxenv -> sessioninputname [“x”] ,outputname [“t”]inputnodedim [[1,1,192,192…

Linux单一服务管理systemctl

基本上systemd这个启动服务机制只有systemctl命令来处理,所以全部的操作都需要使用systemctl systemctl管理单一服务 一般来说服务的启动有两个阶段,一个是开机是否启动,以及现在是否启动 systemctl【command】【unit】 command主要有&…

VS2017+OpenCV4.5.5 决策树-评估是否发放贷款

决策树是一种非参数的监督学习方法,主要用于分类和回归。 决策树结构 决策树在逻辑上以树的形式存在,包含根节点、内部结点和叶节点。 根节点:包含数据集中的所有数据的集合内部节点:每个内部节点为一个判断条件,并且…

mysql详解之innoDB

索引 Mysql由索引组织,所以索引是mysql多重要概念之一。 聚簇索引 InnoDB和MyISAm一样都是采用B树结构,但不同点在于InnoDB是聚簇索引(或聚集索引),将数据行直接放在叶子节点后面。 这里可能存在一个误区&#xff1…

【C语言】编程初学者入门训练(14)

文章目录131. kiki学结构体和指针132. kiki定义电子日历类133. 圣诞树134. 超级圣诞树131. kiki学结构体和指针 问题描述:KiKi学习了结构体和指针,他了解了结构体类型可以定义包含多个不同类型成员,而指针本质是内存地址,是引用数…

【人脸检测】Yolov5Face:优秀的one-stage人脸检测算法

论文题目:《YOLO5Face: Why Reinventing a Face Detector》 论文地址:https://arxiv.org/pdf/2105.12931.pdf 代码地址:https://github.com/deepcam-cn/yolov5-face 1.简介 近年来,CNN在人脸检测方面已经得到广泛的应用。但是许多…

【C++的OpenCV】第一课-opencv的间接和安装(Linux环境下)

第一课-目录一、基本介绍1.1 官网1.2 git源码1.3 介绍二、OpenCV的相关部署工作2.1 Linux平台下部署OpenCV一、基本介绍 1.1 官网 opencv官网 注意:官网为英文版本,可以使用浏览器自带的翻译插件进行翻译,真心不推荐大家去看别人翻译的&am…

过滤器和监听器

1、过滤器Filter 作用是防止SQL注入、参数过滤、防止页面攻击、空参数矫正、Token校验、Session验证、点击率统计等等; 使用Filter的步骤 新建类,实现Filter抽象类;重写init、doFilter、destroy方法;在SpringBoot入口中添加注解…

演示Ansible中的角色使用方法(ansible roles)

文章目录一、ansible 角色简介二、roles目录结构三、role存放的路径:配置文件ansible.cfg中定义四、创建目录结构五、playbook中使用rolesplaybook变量会覆盖roles中的定义变量六、控制任务执行顺序七、ansible—galaxy命令工具八、安装选择的角色1.从网上下载&…

使用vue3,vite,less,flask,python从零开始学习硅谷外卖(41-82集)

第41集:这里遇到个大坑,因为这种项目有很多页面,有时候有的页面忘了保存就会出错,还很难排查,浪费了我快半天的时间。可以把vscode的代码自动保存打开,以后就不会踩坑了。 第42集:没啥好说的。 …

判断字符串中的字符的类型isdecimal();isalpha();isdigit();isalnum()

【小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 判断字符串中的字符的类型 isdecimal();isalpha();isdigit();isalnum() [太阳]选择题 对于代码中isdecimal()和isalnum()输出的结果是? s "ABc123&…

亿级高并发电商项目-- 实战篇 --万达商城项目 十一(编写商品搜索功能、操作商品同步到ES、安装RabbitMQ与Erlang,配置监听队列与消息队列)

👏作者简介:大家好,我是小童,Java开发工程师,CSDN博客博主,Java领域新星创作者 📕系列专栏:前端、Java、Java中间件大全、微信小程序、微信支付、若依框架、Spring全家桶 &#x1f4…

Sandboxie-沙箱软件-Plus版本(Qt)-主框架程序-SandMan.exe-创建语言文件-tr-Qt-语言国际化

文章目录1.功能介绍2.Qt语言国际化3.设置软件的语言版本4.作者答疑1.功能介绍 沙箱软件的增强版本采用Qt架构开发,核心模块与经典版本相同,本文主要介绍SandMan.exe这个主程序代码。在main.cpp这个入口函数里,有主窗口入口,如下所…

2.5|iot冯|方元-嵌入式linux系统开发入门|2.13+2.18

一、 Linux 指令操作题(共5题(共 20 分,每小题 4分)与系统工作、系统状态、工作目录、文件、目录、打包压缩与搜索等主题相关。1.文件1.1文件属性1.2文件类型属性字段的第1个字符表示文件类型,后9个字符中,…

【物联网】智慧农业病虫害精准辨识竞赛思路及代码分享

来源:投稿 作者:LSC 编辑:学姐 比赛官网: https://www.dataglobal.cn/cmpt/signUpInfo200.html 任务描述 请参赛者设计智慧农业病虫害检测系统,给出一体化问题解决方案,鼓励参赛选手结合某一果园/农作物实际情况建立…

使用 URLSearchParams 解析和管理URL query参数

介绍 首先 URLSearchParams是一个构造函数,会生成一个URLSearchParams对象,参数类型: 不传 | string | object | URLSearchParams, 并且遇到特殊字符它会自动帮我们encode 和 decode const ur…

Java模块化概述

3 模块化 3.1 模块化概述 Java语言随着这些年的发展已经成为了一]影响深远的编程语言,无数平台,系统都采用Java语言编写。但是,伴随着发展,Java也越来越庞大,逐渐发展成为-门“臃肿” 的语言。而且,无论是运行个大型的…