草庐IT

国产PLC软件PikePLC——基于梯形图开发交通灯控制示例

PLC_Master 2023-03-28 原文

基于PikePLCStudio用Ladder图形化编程语言开发了一个用于控制交通灯的简单示例。

本文最后的ST源代码是Ladder编译器将梯形图转换为ST语言后的结果。

说明:本示例主要是为了演示使用PikePLCStudio基于梯形图开发PLC程序的能力,至于交通灯控制程序逻辑本身,不排除还会有其它更好的逻辑算法。另外,本人不保证程序逻辑的正确性

  • 例子描述如下
十字路口有南北向和东西向四个红绿灯。
南北向和东西向的红灯亮时长为30秒。
南北向和东西向的绿灯亮时长为27秒,黄灯亮时长为3秒。
当电源控制开关接通后,南北向的先绿灯亮,东西向的红先灯亮。
当电源控制开关断开后,所有的红绿灯都关闭。
  • 定义变量
PROGRAM TrafficLight

 VAR
    power AT %IX0.0:BOOL;//红绿灯控制开关
    snRed AT %QX0.0:BOOL;//南北向红灯
    snGreen AT %QX0.1:BOOL;//南北向绿灯
    snYellow AT %QX0.2:BOOL;//南北向黄灯
    weRed AT %QX0.3:BOOL;//东西向红灯
    weGreen AT %QX0.4:BOOL;//东西向绿灯
    weYellow AT %QX0.5:BOOL;//东西向黄灯
    time0:TIME;
    time1:TIME;
    time2:TIME;
    time3:TIME;
    time4:TIME;
    time5:TIME;
    initialized:BOOL:=TRUE;//标记是否第一次初始化
 END_VAR

 VAR     
     TON0:TON;
    TON1:TON;
    TON2:TON;
    TON3:TON;
    TON4:TON;
    TON5:TON;
 END_VAR
END_PROGRAM
  • 程序逻辑

  • PikePLCStudio界面截图

  • Ladder编译器生成的ST代码
PROGRAM TrafficLight
 VAR
    power AT %IX10.1:BOOL;//红绿灯控制开关
    snRed AT %QX0.0:BOOL;//南北向红灯
    snGreen AT %QX0.1:BOOL;//南北向绿灯
    snYellow AT %QX0.2:BOOL;//南北向黄灯
    weRed AT %QX0.3:BOOL;//东西向红灯
    weGreen AT %QX0.4:BOOL;//东西向绿灯
    weYellow AT %QX0.5:BOOL;//东西向黄灯
    time0:TIME;
    time1:TIME;
    time2:TIME;
    time3:TIME;
    time4:TIME;
    time5:TIME;
    initialized:BOOL:=TRUE;//标记是否第一次初始化
     TON0:TON;
    TON1:TON;
    TON2:TON;
    TON3:TON;
    TON4:TON;
    TON5:TON;
 END_VAR

IF initialized AND power THEN
    snGreen:=TRUE;
END_IF;
IF initialized AND power THEN
    snYellow:=FALSE;
END_IF;
IF initialized AND power THEN
    snRed:=FALSE;
END_IF;
IF initialized AND power THEN
    weRed:=TRUE;
END_IF;
IF initialized AND power THEN
    weGreen:=FALSE;
END_IF;
IF initialized AND power THEN
    weYellow:=FALSE;
END_IF;
IF initialized AND power THEN
    initialized:=FALSE;
END_IF;
IF NOT(IN:=power) THEN
    snGreen:=FALSE;
END_IF;
IF NOT(IN:=power) THEN
    snRed:=FALSE;
END_IF;
IF NOT(IN:=power) THEN
    snYellow:=FALSE;
END_IF;
IF NOT(IN:=power) THEN
    weRed:=FALSE;
END_IF;
IF NOT(IN:=power) THEN
    weGreen:=FALSE;
END_IF;
IF NOT(IN:=power) THEN
    weYellow:=FALSE;
END_IF;
initialized:=(NOT(IN:=power));
TON0
(
    IN:=snGreen AND power,
    PT:=t#27s,
        ET=>time0
);
IF TON0.Q THEN
    snGreen:=FALSE;
END_IF;
IF TON0.Q THEN
    snYellow:=TRUE;
END_IF;
TON1
(
    IN:=snYellow AND power,
    PT:=t#3s,
        ET=>time1
);
IF TON1.Q THEN
    snYellow:=FALSE;
END_IF;
IF TON1.Q THEN
    snRed:=TRUE;
END_IF;
TON2
(
    IN:=snRed AND power,
    PT:=t#30s,
        ET=>time2
);
IF TON2.Q THEN
    snGreen:=TRUE;
END_IF;
IF TON2.Q THEN
    snRed:=FALSE;
END_IF;
TON3
(
    IN:=weGreen AND power,
    PT:=t#27s,
        ET=>time3
);
IF TON3.Q THEN
    weGreen:=FALSE;
END_IF;
IF TON3.Q THEN
    weYellow:=TRUE;
END_IF;
TON4
(
    IN:=weYellow AND power,
    PT:=t#3s,
        ET=>time4
);
IF TON4.Q THEN
    weYellow:=FALSE;
END_IF;
IF TON4.Q THEN
    weRed:=TRUE;
END_IF;
TON5
(
    IN:=weRed AND power,
    PT:=t#30s,
        ET=>time5
);
IF TON5.Q THEN
    weRed:=FALSE;
END_IF;
IF TON5.Q THEN
    weGreen:=TRUE;
END_IF;

END_PROGRAM

 

有关国产PLC软件PikePLC——基于梯形图开发交通灯控制示例的更多相关文章

  1. 叮咚买菜基于 Apache Doris 统一 OLAP 引擎的应用实践 - 2

    导读:随着叮咚买菜业务的发展,不同的业务场景对数据分析提出了不同的需求,他们希望引入一款实时OLAP数据库,构建一个灵活的多维实时查询和分析的平台,统一数据的接入和查询方案,解决各业务线对数据高效实时查询和精细化运营的需求。经过调研选型,最终引入ApacheDoris作为最终的OLAP分析引擎,Doris作为核心的OLAP引擎支持复杂地分析操作、提供多维的数据视图,在叮咚买菜数十个业务场景中广泛应用。作者|叮咚买菜资深数据工程师韩青叮咚买菜创立于2017年5月,是一家专注美好食物的创业公司。叮咚买菜专注吃的事业,为满足更多人“想吃什么”而努力,通过美好食材的供应、美好滋味的开发以及美食品牌的孵

  2. 基于C#实现简易绘图工具【100010177】 - 2

    C#实现简易绘图工具一.引言实验目的:通过制作窗体应用程序(C#画图软件),熟悉基本的窗体设计过程以及控件设计,事件处理等,熟悉使用C#的winform窗体进行绘图的基本步骤,对于面向对象编程有更加深刻的体会.Tutorial任务设计一个具有基本功能的画图软件**·包括简单的新建文件,保存,重新绘图等功能**·实现一些基本图形的绘制,包括铅笔和基本形状等,学习橡皮工具的创建**·设计一个合理舒适的UI界面**注明:你可能需要先了解一些关于winform窗体应用程序绘图的基本知识,以及关于GDI+类和结构的知识二.实验环境Windows系统下的visualstudio2017C#窗体应用程序三.

  3. 软件测试基础 - 2

    Ⅰ软件测试基础一、软件测试基础理论1、软件测试的必要性所有的产品或者服务上线都需要测试2、测试的发展过程3、什么是软件测试找bug,发现缺陷4、测试的定义使用人工或自动的手段来运行或者测试某个系统的过程。目的在于检测它是否满足规定的需求。弄清预期结果和实际结果的差别。5、测试的目的以最小的人力、物力和时间找出软件中潜在的错误和缺陷6、测试的原则28原则:20%的主要功能要重点测(eg:支付宝的支付功能,其他功能都是次要的)80%的错误存在于20%的代码中7、测试标准8、测试的基本要求功能测试性能测试安全性测试兼容性测试易用性测试外观界面测试可靠性测试二、质量模型衡量一个优秀软件的维度①功能性功

  4. kvm虚拟机安装centos7基于ubuntu20.04系统 - 2

    需求:要创建虚拟机,就需要给他提供一个虚拟的磁盘,我们就在/opt目录下创建一个10G大小的raw格式的虚拟磁盘CentOS-7-x86_64.raw命令格式:qemu-imgcreate-f磁盘格式磁盘名称磁盘大小qemu-imgcreate-f磁盘格式-o?1.创建磁盘qemu-imgcreate-fraw/opt/CentOS-7-x86_64.raw10G执行效果#ls/opt/CentOS-7-x86_64.raw2.安装虚拟机使用virt-install命令,基于我们提供的系统镜像和虚拟磁盘来创建一个虚拟机,另外在创建虚拟机之前,提前打开vnc客户端,在创建虚拟机的时候,通过vnc

  5. ruby-on-rails - (Ruby,Rails) 基于角色的身份验证和用户管理...? - 2

    我正在寻找用于Rails的优质管理插件。似乎大多数现有的插件/gem(例如“restful_authentication”、“acts_as_authenticated”)都围绕着self注册等展开。但是,我正在寻找一种功能齐全的基于管理/管理角色的解决方案——但不是简单地附加到另一个非基于角色的解决方案。如果我找不到,我想我会自己动手......只是不想重新发明轮子。 最佳答案 RyanBates最近做了两个关于授权的railscast(注意身份验证和授权之间的区别;身份验证检查用户是否如她所说的那样,授权检查用户是否有权访问资源

  6. ruby - 在 Rakefile 中动态生成 Rake 测试任务(基于现有的测试文件) - 2

    我正在根据Rakefile中的现有测试文件动态生成测试任务。假设您有各种以模式命名的单元测试文件test_.rb.所以我正在做的是创建一个以“测试”命名空间内的文件名命名的任务。使用下面的代码,我可以用raketest:调用所有测试require'rake/testtask'task:default=>'test:all'namespace:testdodesc"Runalltests"Rake::TestTask.new(:all)do|t|t.test_files=FileList['test_*.rb']endFileList['test_*.rb'].eachdo|task|n

  7. ruby - 在 StockChart (highchart) 中以编程方式显示柱形图的工具提示 - 2

    我有一个Highstock图表(带有标记和阴影的线条),并且想以编程方式显示一个highstock工具提示,例如,当我选择某个表上的一行(包含图表数据)我想显示相应的highstock工具提示。这可能吗? 最佳答案 股票图表thissolution不起作用:在thisexample你必须更换这个:chart.tooltip.refresh(chart.series[0].data[i]);为此:chart.tooltip.refresh([chart.series[0].points[i]]);解决方案可用here.

  8. ruby - 如何使用 Ruby 基于字母数字字符串生成颜色? - 2

    我想要像“嘿那里”这样的东西变成,例如,#316583。我希望将任意长度的字符串“归结”为十六进制颜色。我不知道从哪里开始。我在想,每个字符串的MD5散列都是不同的-但如何将该散列转换为十六进制颜色数字? 最佳答案 你可以只取几位前几位:require'digest/md5'color=Digest::MD5.hexdigest('Mytext')[0..5] 关于ruby-如何使用Ruby基于字母数字字符串生成颜色?,我们在StackOverflow上找到一个类似的问题:

  9. 网站日志分析软件--让网站日志分析工作变得更简单 - 2

    网站的日志分析,是seo优化不可忽视的一门功课,但网站越大,每天产生的日志就越大,大站一天都可以产生几个G的网站日志,如果光靠肉眼去分析,那可能看到猴年马月都看不完,因此借助网站日志分析工具去分析网站日志,那将会使网站日志分析工作变得更简单。下面推荐两款网站日志分析软件。第一款:逆火网站日志分析器逆火网站日志分析器是一款功能全面的网站服务器日志分析软件。通过分析网站的日志文件,不仅能够精准的知道网站的访问量、网站的访问来源,网站的广告点击,访客的地区统计,搜索引擎关键字查询等,还能够一次性分析多个网站的日志文件,让你轻松管理网站。逆火网站日志分析器下载地址:https://pan.baidu.

  10. 【自动驾驶环境感知项目】——基于Paddle3D的点云障碍物检测 - 2

    文章目录1.自动驾驶实战:基于Paddle3D的点云障碍物检测1.1环境信息1.2准备点云数据1.3安装Paddle3D1.4模型训练1.5模型评估1.6模型导出1.7模型部署效果附录show_lidar_pred_on_image.py1.自动驾驶实战:基于Paddle3D的点云障碍物检测项目地址——自动驾驶实战:基于Paddle3D的点云障碍物检测课程地址——自动驾驶感知系统揭秘1.1环境信息硬件信息CPU:2核AI加速卡:v100总显存:16GB总内存:16GB总硬盘:100GB环境配置Python:3.7.4框架信息框架版本:PaddlePaddle2.4.0(项目默认框架版本为2.3

随机推荐