TIA使用SCL写FB做交通信号灯控制练习

news/2024/11/28 3:01:57/文章来源:https://www.cnblogs.com/fishingsriver/p/18570801

这个练习尝试使用SCL编程,按照第一个交通信号灯的要求写控制程序。因为我是初学者,所以做出来的东西可能不是最简洁最优的,只是当学习体验做一个记录而已。

在前面的程序基础上新建一个FB,使用SCL编程方式,先建立变量如下:

 

写下面的SCL程序,其中TON这样的功能块通过从右边的指令集找到,鼠标拖拽到需要放置的位置,系统会自动要求配置北京数据块。

IF #stopbtn=1 THEN
  #CurrentState := 4;
END_IF;
IF #startbrn = 1 THEN
  #CurrentState := 1;
END_IF;
(*红灯控制*)
IF #CurrentState = 1 THEN
  #RedLight_in := 1;
  #RedLight := 1;
ELSE
  #RedLight_in := 0;
  #RedLight := 0;
END_IF;
"RedLight_TON3".TON(IN:=#RedLight_in,
PT:=#RedLightDuration);
IF "RedLight_TON3".Q THEN
  #CurrentState := 2;
END_IF;

(*绿灯控制*)
IF #CurrentState = 2 THEN
  #GreenLight_in := 1;
  #GreenLight := 1;
ELSE
  #GreenLight_in := 0;
  #GreenLight := 0;
END_IF;

"GreenLight_TON3".TON(IN:=#GreenLight_in,
PT:=#GreenLightDuration);
IF "GreenLight_TON3".Q THEN
  #CurrentState := 3;
END_IF;

IF #CurrentState = 3 THEN
  #yellowLight_in := 1;
  #YellowLight := 1;
ELSE
  #yellowLight_in := 0;
  #YellowLight := 0;
END_IF;
"YellowLight_TON3".TON(IN:=#yellowLight_in,
PT:=#YellowLightDuration);
IF "YellowLight_TON3".Q THEN
#CurrentState := 1;
END_IF;

IF #CurrentState = 4 THEN
  #RedLight := 0;
  #GreenLight := 0;
  #YellowLight := 0;
END_IF;

在OB1调用这个功能块,由于练习选用的CPU比较低端前面的例子把Q点用了,这里使用M点做测试。

在前面wincc程序上变量管理中加上启动和停止按钮的变量,关联M1.4和M1.5,画面上放置两个按钮,按下时M1.4和M1.5为1,弹起时M1.4和M1.5为0.

运行WINCC画面,点击启动按钮就按照设定的时序动作,点击停止就停下来,再次点击启动按钮,就重新开始红绿黄灯时序动作。

 

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

app搭建笔记(18)

一、app自动化测试环境和用途: 主要用于做app端UI自动化,熟悉adb命令(a表示安卓,d表示debug,b表示桥) adb是连接手机设备 二、搭建环境的工具 (1)jdk 已安装,java的一种编译器 (本地windows安装) jdk安装和配置环境变量(2)查看jdk版本如果如果配置好,就要配置…

IDEA如何整理代码格式,格式化代码,去除无效依赖,自动缩进等

前言 大家好,我是小徐啊。我们在IDEA中,经常是需要格式化代码的,这样代码才能好看一点。今天,我就来介绍下如何在IDEA中格式化代码,让代码看起来更加好看整洁一点。 如何格式化代码 首先,我们打开要格式化代码的文件。然后,鼠标右击下。然后,点击下重新格式化代码,或者…

『模拟赛』多校A层冲刺NOIP2024模拟赛26

『模拟赛记录』多校A层冲刺NOIP2024模拟赛26Rank 有点唐A. 随机游走 签。 重要的就后两句话。题意由此转化成:到每一个节点时,先后遍历其所有子节点的子树,使得 \(\sum t_i\times w_i\) 最小。 提前 dfs 一遍处理出便利完某棵子树所需要的总时间和子树总价值,容易发现对于两…

强化学习交易应用相关

FinRL尝试 这是第一个开源的金融强化学习框架,FinRL已经发展成为一个包含丰富资源的生态系统,为金融强化学习的研究和应用提供了强大的支持。 项目地址:https://github.com/AI4Finance-Foundation/FinRL个人使用体验:可能因为维护不及时,示例代码无法顺利运行,需要各种修…

24. 两辆交换链表中的节点

题目 卡哥的讲解很详细了 卡哥视频讲解一如既往的把小细节都讲到了 跟着卡哥的代码敲了下 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next…

jenkins搭建和使用_(17)

Jenkins操作手册 =================================================================== 一、jenkins介绍 1、持续集成(CI) Continuous integration 持续集成 团队开发成员每天都有集成他们的工作,通过每个成员每天至少集成一次,也就意味着一天有可 能多次集成。在工作中我…

Notepad++ 使用技巧

下载 Notepad++ 打开浏览器,前往 Notepad++ 的官方网站:Notepad++点我下载 常用快捷键 以下是一些常用的 Notepad++ 快捷键: Ctrl + N:新建一个文件 Ctrl + O:打开一个文件 Ctrl + S:保存当前文件 Ctrl + Shift + S:另存为 Ctrl + P:打印文件 Ctrl + Z:撤销上一步操作…

LeetCode 367[有效的完全平方数]

LeetCode 367[有效的完全平方数]题目 链接 LeetCode 367[有效的完全平方数] 详情实例提示题解 思路 求算术平方根,逐渐遍历的话,数值小应该是没问题的,但是数值大的话时间应该会超出限制 本质是:给定一个数字,在范围内找一个数字的平方为该数,找到了则输出ture,找不到则…

使用 Visual Studio Code 写网页

1、Visual Studio Code双击打开后 ,点击圈主的部分(资源管理器) 会出现 “打开文件夹” 2、点击 “打开文件夹” ,选中想要打开的文件夹 ,点击选择文件 也可以直接拖拽 想要打开的 文件夹 放进来3、可以看道文件夹里面的东西都进来了 之前我们写的 网页 代码 也在这里 可…

WPF 粉笔绘制

在做白板书写的时候,会有各种笔的绘制,比如 书写笔、马克笔、演示笔等等。粉笔的功能需求也是很有必要的。 上网搜了一圈,几乎没有绘制粉笔的。 有的是毛笔、楷体等绘制的如下博客: wpf inkcanvas customink 毛笔效果_wpf inkcanvas 笔锋-CSDN博客 【WPF】 InkCanvas 书写毛…

鸿蒙NEXT开发案例:温度转换

【引言】 温度是日常生活中常见的物理量,但不同国家和地区可能使用不同的温度单位,如摄氏度(Celsius)、华氏度(Fahrenheit)、开尔文(Kelvin)、兰氏度(Rankine)和列氏度(Reaumur)。为了方便用户在这些温度单位之间进行快速准确的转换,我们开发了一款温度转换工具。…

团队项目-7

一、昨日已完成的任务 前后端交互,调用接口完成页面。导入数据等 今日计划完成的任务 继续做好功能,测试运行 工作中遇到的困难 测试运行时出现不少问题,服务器连不上等问题 项目迁入记录代码:总结 一周的学习收获良多,项目实战难度大的同时也给了我们很多动力,是一次珍贵…