首页 > 其他分享 >TIA使用SCL写FB做交通信号灯控制练习

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

时间:2024-11-26 20:11:06浏览次数:6  
标签:SCL END TON3 FB RedLight GreenLight TIA CurrentState

这个练习尝试使用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画面,点击启动按钮就按照设定的时序动作,点击停止就停下来,再次点击启动按钮,就重新开始红绿黄灯时序动作。

 

标签:SCL,END,TON3,FB,RedLight,GreenLight,TIA,CurrentState
From: https://www.cnblogs.com/fishingsriver/p/18570801

相关文章

  • 如何激活CATIA许可证
    轻松激活CATIA许可证,开启设计新征程在工程设计领域,CATIA软件以其卓越的性能和广泛的应用而备受推崇。然而,对于许多新手用户来说,激活CATIA许可证可能是一个令人困惑的步骤。本文将为您提供详细的指导,帮助您轻松激活CATIA许可证,迅速开启设计新征程。一、了解CATIA许可证激活的重要......
  • Applied Spatial Statistics(十)多级模型 Multi-level models(变化的截距和斜率)
    AppliedSpatialStatistics(十)多级模型Multi-levelmodels(变化的截距和斜率)这是一个如何使用python和pymer4包拟合MLM模型的示例。Pymer4是R中著名的lme4包的python版本,其文档可在以下位置找到:https://eshinjolly.com/pymer4/#pipinstallpymer4import......
  • TIA做交通信号灯练习2
    今晚在昨天的基础上增加要求,三种灯在计时还剩下5秒时进行闪烁。在昨天项目基础上新建一个FB,定义下面的变量。在此FB内部写下面的程序在OB1调用这个FB,分配参数在wincc新建变量关联TIA中的变量在WINCC画面上放置2个按钮和3个圆形,2个按钮的鼠标按下使start1和stop......
  • TIA 做交通信号灯控制练习1
    练习一下交通信号灯程序,从简单的功能做起。红绿黄等交替亮起。使用TIA编程,做成FB。 新建一个TIA项目,选择一个1200CPU.1.新建一个FB,在新建的FB,先配置输入输出变量。 2.在FB写下面的程序3.在WINCC上建立1200?1500的变量连接,连接博图模拟器,建立变量。4.WINCC画面上添加......
  • 【芯智雲城】Broadcom博通BCM5389IFBG以太网控制器应用
    Broadcom公司的BCM5389IFBG以太网控制器芯片,适用于独立的千兆以太网交换机和千兆以太网控制平面及背板应用。一、芯片特点集成度高:BCM5389IFBG将数据包缓冲区、SerDes(串行解串器)、媒体访问控制器(MAC)、地址管理和非阻塞交换结构集成到一个0.13µmCMOS器件中,减少了系统的复杂......
  • python系列&deep_study系列:【已解决】Failed to initialize NVML: Driver/library ver
    【已解决】FailedtoinitializeNVML:Driver/libraryversionmismatchNVMLlibraryversion:535.161【已解决】FailedtoinitializeNVML:Driver/libraryversionmismatchNVMLlibraryversion:535.161问题描述原因分析和解决当我把这个问题喂给`chatgpt`的时......
  • C#关于EF Core 8.0 使用 Contians 遇到的坑
    最近接手一个项目二开,由于需要用到Sqlserver的JSON_Value功能,所以升级成EFCore8.0。但是使用FindAsIQueryable进行集合包含查找的时候报错了。查看EFview发现生成的Sql不对劲竟然用的是OPENJSON最后查了一下国外相关文章发现是EF8.0改了生成SQL的包含逻辑。由于使用的s......
  • JedisCluster 中psetex()方法如何使用
    JedisCluster 中的 psetex 方法用于设置一个键值对,并同时设置该键的过期时间(以毫秒为单位)。与 setex 的区别在于 psetex 接受的过期时间是以毫秒为单位,而 setex 接受的是以秒为单位。psetex方法说明方法签名:publicStringpsetex(Stringkey,longmilliseconds......
  • Spatial-Temporal Large Language Model for Traffic Prediction
    1.输入数据这符合时间序列预测的典型设置:输入数据包含多个特征(如历史的流量、天气、时间等),这些特征用于帮助模型进行预测。输出数据则通常是要预测的目标变量,比如未来某个时间步的流量或温度,这个目标变量是一个单一的值,因此输出通道数是1。x_train包含多个特征(3个通道),作......
  • 23_图解partial update实现原理以及动手实战演练
    课程大纲1、什么是partialupdate?PUT/index/type/id,创建文档&替换文档,就是一样的语法一般对应到应用程序中,每次的执行流程基本是这样的:(1)应用程序先发起一个get请求,获取到document,展示到前台界面,供用户查看和修改(2)用户在前台界面修改数据,发送到后台(3)后台代码,会将用户修改的......