SCL编程语言学习(2)-启保停电路(起保停电路plc程序)
liebian365 2025-04-05 20:00 17 浏览 0 评论
“启保停”电路是学习过程中最常见的一个案例,也是最简单易懂的控制程序。如果采用梯形图编程,如图1所示。在实际工程的电路中,很少有这么简单的起保停电路,一般都需要考虑急停、限位、过载保护等多项因素,启停信号也可能由多个触点组成的串、并联电路。所以“启保停”电路仅能作为入门学习的案例。
在“启保停”电路中,启动信号X1和停止信号X2一般都是触发信号(实体按钮或HMI屏幕虚拟按钮提供的信号),也叫短信号,其按钮没有记忆保持功能(目前也有触发保持型的按钮,但作为启动/停止按钮不常用),不能保证Y1线圈的持续接通。
当启动信号X1按钮触发时(高电平),X1的常开触点接通,如果此时X2无动作,X2的常闭触点也接通,则Y1的线圈“通电”,其常开触点同时接通。此时即使X1回到低电平状态,其常开触点断开,“能流”仍可经Y1的常开触点和X2的常闭触点流过Y1,Y1仍为接通状态,这就是所谓的“自保持”功能。当停止信号X2触发时,它的常闭触点断开,使Y1的线圈“断电”,其常开触点同时断开。以后即使停止按钮复位,X2的常闭触点恢复接通,Y1的线圈仍然“断电”。
下面我们看看如何用SCL语言实现“启保停”的功能。
首先从逻辑上分析,要想“Y1接通”这一命题成立,从成立条件上是“X1或Y1为真,且X2为真”,这里就需要IF条件执行语句,其结构:
IF X1=TRUE OR Y1=TRUE AND X2=TRUE THEN
Y1=TRUE;
END_IF; //这种写法不规范也不全面,这是从分析上先建立一个框架。
这里需要学习“IF:条件执行”指令的内容。
IF:条件执行
使用“条件执行”指令,可以根据条件控制程序流的分支。该条件是结果为布尔值(TRUE 或 FALSE)的表达式。可以将逻辑表达式或比较表达式作为条件。执行该指令时,将对指定的表达式进行运算。如果表达式的值为 TRUE,则表示满足该条件;如果其值为 FALSE,则表示不满足该条件。
根据分支的类型,可以对以下形式的指令进行编程:
- IF 分支:
IFTHEN
END_IF;
如果满足该条件,则将执行 THEN 后编写的指令。如果不满足该条件,则程序将从 END_IF 后的下一条指令开始继续执行。
- IF 和 ELSE 分支:
IFTHEN
ELSE
END_IF;
如果满足该条件,则将执行 THEN 后编写的指令。如果不满足该条件,则将执行ELSE 后编写的指令。程序将从 END_IF 后的下一条指令开始继续执行。
- IF、ELSIF 和 ELSE 分支:
IFTHEN
ELSIFTHEN
ELSE
END_IF;
如果满足第一个条件(<条件 1>),则将执行 THEN 后的指令(<指令 1>)。执行这些指令后,程序将从 END_IF 后继续执行。
如果不满足第一个条件,则将检查第二个条件(<条件 2>)。如果满足第二个条件(<条件 2>),则将执行 THEN 后的指令(<指令 2>)。执行这些指令后,程序将从 END_IF 后继续执行。
如果不满足任何条件,则先执行 ELSE 后的指令(<指令 0>),再执行 END_IF 后的程序部分。
在 IF 指令内可以嵌套任意多个 ELSIF 和 THEN 组合。可以选择对 ELSE 分支进行编程。
明确了框架,再定义变量,此处只有三个变量X1,X2,Y1,由于X1和X2需要有数字输入地址,所有需要在PLC变量中进行定义,如图2所示。I0.0和I0.1是PLC的数字量输入点,作为外部输入信号的存储位,而M10.0则是PLC内部存储区的一个位变量,作为中间变量使用。如果Y1的信号直接作为输出信号,需要定义为Qx.x(数字量输出点)。这里涉及了数据类型,数据类型很多,没必要全部死记硬背,建议用哪个深入了解一下就可以。
数据类型:
在用户程序中,可使用预定义的数据类型,并将这些数据类型添加到用户自定义数据类型中。可使用以下类别:
- 基本数据类型(二进制数、整数、浮点数、定时器、DATE、TOD、LTOD、CHAR、WCHAR)
- 复杂数据类型(DT、LDT、DTL、STRING、WSTRING、ARRAY、STRUCT)
- 用户自定义数据类型(PLC 数据类型 (UDT))
- 指针
- 参数类型
- 系统数据类型
- 硬件数据类型
定义变量完成后,下一步就可以编程了。这里需要说明,程序既可以写在OB1里,也可以新建FB块,再将FB对应的DB块添加到OB1中循环执行。对于这种简单的程序运行结果没有什么不同,但是对于复杂的程序,建议采用模块化的多个FB实现,每个FB完成的单个或几个功能性的或任务性的完整程序,便于后期修改、调试,整个程序也显得简洁明了。
“启保停”程序示例如图3所示,使用IF指令的嵌套,第一层判断X1和Y1,嵌套第二层判断X2,实际上也可以写成一层,如图4所示。其实完成一个功能的可以多种程序编写形式,可以根据自己的习惯进行编写,只要满足所需功能,没有对错好坏之分。拆分成嵌套的形式,有的时候便于查看,尤其判断条件多的时候,监控时比较直观的观察每个判断条件的结果。
最后将对应的DB插入到OB1中循环执行即可(如图5所示)。
- 上一篇:GCC的常用编译选项(gcc编译工具)
- 下一篇:西门子SCL高级语言之数据转换介绍
相关推荐
- msp的昌伟哥哥(伟昌怎么样)
-
佩戴HoloLens的多个用户可以使用场景共享特性来获取集合视野,并可以与固定在空间中某个位置的同一全息对象进行交互操作。这一切是通过空间锚共享(AnchorSharing)来实现的。为了使用共享服...
- VOculus Rift、Gear VR平台开发者合作申请指南
-
编译/游戏陀螺案山子OculusHome平台——OculusRift和三星Gear主要的应用平台,包括PC版和移动版都可以使用。而现在使用的OculusShare平台,据悉将来也会整合到Ocu...
- 游戏中的"状态机”和"行为树”是什么?
-
状态机是一种模型,用于描述对象在不同状态下的行为和转换。在游戏里,状态机通常用于控制角色或NPC在不同状态下的行为。比如说,一个角色可以有多个状态,比如“待机”、“行走”、“攻击”、“受伤”等,每个状...
- JetBrains Rider现已支持PS5和Xbox主机游戏开发
-
IT之家3月27日消息,Rider是一款由JetBrains出品的跨平台.NETIDE,在2024.3版本中,JetBrainsRider增加了对PlayStation5...
- Unity WebGL 应用开发总结(unity webgl发布)
-
UnityWebGL应用开发总结1.开发环境软件版本Unity2020.1.0f1PyCharm2022.3.2Python3.7.32.编译WebGL对Unity项目进行WebGL编译时...
- 【6.Physics和动画】5.动画(动画电影)
-
5.动画现在,角色可以移动了,但在移动时形象一直不变,对于玩家来说比较生硬,本节中我们让角色在移动时能够播放动画。Unity2D游戏中,角色动画一般采用帧动画的形式来实现。所谓帧动画就是在每一帧显...
- unity3d开发教程-开发环境搭建(unity3d开源项目)
-
一、安装Unity1、从官网下载UnityHub:https://unity.com/download,选择[DownloadforWindows]下载完成后,双击打开安装。一直点...
- 【2.UI元素】3.Panel and Button(ui界面元素)
-
3.PanelandButton3.1PanelPanel(面板)本质上就是预先设置好的Image。可以作为其他UI元素的父级。在层级窗口右击选择UI->Panel即可创建。...
- 揭秘!你玩的字节抖音小游戏制作流程公布
-
1.1注册字节开发者后台1.2Unity版本说明1.3检查AppID是否有效2.1创建项目2.2接入SDK3.1发布安卓Apk3.2发布双端WebGL3.3IOS15.4版本问题字节抖...
- 临时工闯下大祸《糖豆人》源代码更新时不慎泄露
-
这次《糖豆人》工作室Mediatonic的临时工闯下了大祸,在更新时一不留神把游戏的源代码给泄露了。当然,这次泄露之后,官方删除的动作也很快,但是没快过SteamDB创始人PavelDjundik...
- 为3D手游打造, Visual Studio Unity扩展下载
-
IT之家(www.ithome.com):为3D手游打造,VisualStudioUnity扩展下载7月30日消息,微软正式发布升级版VisualStudioToolsforUnity扩...
- 【2.C#基础】3.脚本入门(c# 脚本引擎)
-
3.脚本入门3.1脚本概要在上一节创建的脚本中,包含了一段模板代码,双击工程窗口中的脚本图标,系统自动打开代码编辑器(VSCode)可以看到代码如下图所示:说明:System.Collections...
- unity专题:unitask库(1)(unitypackage)
-
UniTask是一个Unity引擎中的异步编程库,它可以帮助你在Unity项目中编写更简洁、高性能的异步代码。UniTask以Promise/Task的编程模式为基础,提供了与C#...
- 零基础带你看游戏内灰度效果实现原理
-
前言在Unity中实现后处理效果有两种方式:一种是通过使用Unity官方提供的Post-Processing插件。另外一种方式就是使用脚本获取到渲染后帧缓冲区的图像,再通过shader写后处理的效果,...
- 团结引擎自定义Scene视图的层叠面板和工具栏
-
团结引擎提供的了功能,可以为Scene视图添加层叠面板和自定义工具栏,这里学习官方的经典案例。创建层叠面板。总结需要三个步骤:1、创建编辑器脚本(需存放在Editor目录下)2、继承Overlay类,...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- wireshark怎么抓包 (75)
- qt sleep (64)
- cs1.6指令代码大全 (55)
- factory-method (60)
- sqlite3_bind_blob (52)
- hibernate update (63)
- c++ base64 (70)
- nc 命令 (52)
- wm_close (51)
- epollin (51)
- sqlca.sqlcode (57)
- lua ipairs (60)
- tv_usec (64)
- 命令行进入文件夹 (53)
- postgresql array (57)
- statfs函数 (57)
- .project文件 (54)
- lua require (56)
- for_each (67)
- c#工厂模式 (57)
- wxsqlite3 (66)
- dmesg -c (58)
- fopen参数 (53)
- tar -zxvf -c (55)
- 速递查询 (52)