课程中心
HOME
课程中心
正文内容
plc编程本质 0615 「万泉河」PLC程序中SR逻辑的本质
发布时间 : 2025-02-25
作者 : 小编
访问数量 : 23
扫码分享至微信

0615 「万泉河」PLC程序中SR逻辑的本质

0615 【万泉河】PLC程序中SR逻辑的本质

看到题目, 很多读者可能不久前刚刚看过我的文章,关于启保停的本质,这里的答案脱口而出, 启保停啊!

你万老师还有没有的玩, 一个话题翻来覆去炒冷饭, 有意思吗?

嗯,有。

写上一篇关于启保停的本质的文章, 本意是针对刚毕业的年轻后生的, 把行业里的一个上古时代的名词解释给年轻人听,让他们了解了之后不再困惑,从此可以放开手脚用全新的思维逻辑方法来做PLC程序。

然而没想到,文章发布,却惹恼了一大批原本搞继电器逻辑的行业前辈。有一些前辈会想, 我搞了大半辈子继电器逻辑了,接过的启保停控制柜的线都可以绕地球小半圈了, 用得着你来告诉我启保停的本质?

所以, 确实是我错了。 我语序颠倒了。

就好比自行车发展发展进化成了摩托车, 电动自行车, 我说什么自行车的本质是摩托车,这是不对的,不可以说祖宗的本质是孙子,而应该倒过来说孙子的本质是祖宗, 电动自行车的本质是自行车,然后可能就不会那么惹前辈们生那么大的气了。

前几天,我发起的关于启保停与SR逻辑能否互相替换的投票:

https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1765618&b_id=50&s_id=0&pno=1

yanxiao老师的回复中有截图,把SMART 200的SR逻辑转换成STL, 都给发上来了。 说实话,我以前做程序也都是只用LAD, 即便有偶尔转换到STL,也只是出于编辑功能的用处。从来没有正眼好好看过。 这次看了截图,就被惊呆了, 转换之后虽然多了一些复杂的堆栈处理的指令,但本质上看得出, 那就是启保停啊!

即,SMART 200的SR逻辑在STL格式下,就是用的启保停,而未使用S或者R指令。 我甚至还以为它在STL下连S 和R指令都没有呢。然而事实上是有的。

S指令优先的SR:

以STL显示:

我把其中的每一句指令功能都研读搞懂之后,再以梯形图方式表达出来, 是这样:

这是妥妥的启保停啊!只要I0.1不导通, Q0.0就长时间自保持。

然后更有意思的是复位优先的SR逻辑:

转换后:

语法稍微复杂一些了, 换用LAD再抄写出来, 是这样:

这里我只是原样抄写, 实际在LAD中编译是不通过的,因为前面直通不符合语法。需要分到2个NW才可以。 当然可以加个SM0.0, 而到PORTAL中这样写也没有问题。

注意,这其中的两个线圈(外形上的),是有先后顺序的,你不可以简单把他们拼起来做成3行的OR逻辑。

而如果要拼,可以横着拼接为:

这里面两个I0.1有些重复,完全可以去掉前面的一个而逻辑结果不影响:

就变回成为最标准最原始的启保停逻辑了。

而在我们拼接之前,它其实是两段启保停逻辑。证明, 你即便对同一个Q点(或者M点)连续做多次的启保停控制, 也不存在双线圈语法错误。 而其实西门子原本早就在这么做了。 早在30年前,甚至可能在S7-200还未被西门子收购的时候。

用启保停开关逻辑来搭出来SR逻辑, 这是远古时代的事。那时候PLC还刚刚诞生, 继电逻辑还没完全断奶。

而等到TIA PORTAL面世, 一切语言都是以SCL为基础了, STL被彻底抛弃, 甚至LAD都是基于SCL了,对于一个SR逻辑功能,在SCL中会是如何写的呢?

有两种写法:

第一种是严格照抄的启保停的逻辑:

Q0.0 := (Q0.0 OR I0.0 ) AND NOT I0.1;

这种一口气写成的程序, 信息密度太大, 读起来有一种喘不过气的压迫感。 这里还是最简单的逻辑条件。

而第二种方式以IF 语句写成的则简单清晰多了:

IF I0.0 THEN

Q0.0 := TRUE;

END_IF;

IF I0.1 THEN

Q0.0 :=FALSE;

END_IF;

后一种方法,还有一个特点, 对系统的调用环境要求宽松多了。

前一种逻辑依赖于OB1的循环, 需要每个周期都扫描运行到,然后才能根据信号的变化及时计算得到新的结果。

而后一种方法,甚至可以只在I0.0 和I0.1变化的时候调用执行一次,其余时间, 程序不被调用,也可以,程序的运行结果都不受影响。

所以,不仅仅IF THEN语句带有高级语言的特性,这里甚至隐隐约约都带有基于事件的编程方法了。这一点, 在面向对象的高级语言编程中,经常遇到。 而对于大学课堂学过高级语言,自带高级语言属性的毕业生,来从事工控行业就简单多了。

所以,今天的题目, SR逻辑的本质,其实有两个答案。 向左看, 本质是启保停, 向右看, 本质是IF THEN。

所以,SR是继电器逻辑与计算机语言编程的交集、最大公约数、分水岭。

画个图表示:

PLC从继电器逻辑诞生, 然而在诞生之日起就不断在成长进化,我们现在回过头看它啥时候具备了乌鸡变凤凰的特质了呢?

大概是从具备了SR逻辑的时候。

当然,后来还进化出了函数, 功能块等各种接近于计算机的功能,以及支持面向对象的各种特征方法之后,加之以内存和工作存储区越来越大, CPU计算能力越来越高,才逐渐可以认为就是一台计算机了。

0612 【万泉河】浅议PLC程序中SR和RS逻辑的区别

0610 【万泉河】S7-1200 PLC中实现WINCC报警

0527 【万泉河】PLC程序中启保停的本质

【万泉河】面向企业的PLC系统设计编程标准化培训

图解WANQ-Y1更改WIFI网络

一位新加入三菱标准化的学员

0503 【万泉河】王者归来:完美报表谢幕后又要回来了。

0428 【万泉河】PLC编程:谈虎色变双线圈

0426 【万泉河】论PLC程序的可移植性(上):关于移植的定义

0417 【万泉河】三菱标准化程序打印版

0416 【万泉河】PLC标准化编程烟台方法的本质是颠覆

《PLC标准化编程原理与方法》已出版发行, 各大网上书店有售。

MCGS-OPC UA初体验

0407 【万泉河】汽车行业标准SICAR本质上是对自动化工程师的羞辱

0402 【万泉河】论工控行业中工艺的重要性

0407 SICAR程序获取方式

搞不懂PLC循环程序编写,那都算不上大佬

前言

学习S7-300/400,不能仅仅局限于阅读或编写一段程序,更要从本质上认识PLC,方能更好的驾驭它。

一、PLC的循环处理过程

CPU中的程序分为操作系统用户程序

操作系统 用来处理PLC的起动、刷新输入/输出过程映像区、调用用户程序、处理中断和错误、管理存储区和通信等任务。

用户程序 由用户根据需求自己编写,以完成特定的控制任务。STEP7将用户编写的程序和数据维护在"块"中,如功能块FB、功能FC和数据块DB等。

PLC采用循环扫描的方式执行用户程序,即扫描工作方式。

图1 PLC的扫描工作方式

1. PLC得电或由STOP模式切换到RUN模式时,CPU起动,同时清除没有保持功能的位存储器、定时器、计数器,清除中断堆栈和块堆栈的内容,复位保存的硬件中断等。

2. 执行"系统起动组织块"OB100,该组织块可以自定义编程,实现一些初始化的工作;

3. 系统进入周期扫描,并起动循环时间监控;

4. CPU将输出过程映像区的数据写入输出模块;

5. 读取输入模块的状态,并写入输入过程映像区;

6. CPU调用OB1,执行用户程序,期间,根据需要可调用其他逻辑块(FB、SFB、FC及SFC),来实现控制任务;

7. 在循环结束时,操作系统执行所有挂起的任务,例如下载和删除块、接收和发送全局数据等;

8. CPU返回"第3步",重新启动循环时间监控。

9、在执行用户程序的过程中,如果有中断事件发生,当前执行的块将暂停执行,转而执行相应的组织块,来响应中断。该组织块执行完成后,之前被暂停的块将从中断的地方继续开始执行。OB1具有很低的优先级,除了OB90外,所有的组织块都能中断OB1。

二、过程映像区

PLC的存储器中,特别设置了一片区域用来存放输入信号和输出信号的状态,分别称之为输入过程映像区和输出过程映像区。在循环程序处理过程中,CPU不会直接访问I/O模块,而是访问CPU内部的过程映像区。

如图1所示,在整个扫描周期内,CPU会分配一段时间集中将输出过程映像区的状态传送给输出模块。同样,输入模块的状态/数据也是集中、统一读入输入过程映像区。在程序的执行阶段,CPU只和输入/输出过程映像区做数据交互,这样做的好处是,即使外部输入信号的状态发生变化,输入过程映像区的状态也暂时不变,可防止程序执行时发生"紊乱";而给到输出模块的数据是"同时"的,也可有效避免执行机构的动作序列的不同步。

对过程映像区的访问可以以位、字节、字 以及双字 的方式进行。

图2 过程映像区直接寻址

如图2所示,假设其为输入过程映像区的一部分:

· I1.3 即可访问到粉色部分的内容,即寻址一个位;· IB0 即可访问绿色部分的内容,即寻址一个字节;· IW2 :即可访问蓝色部分的内容,即寻址一个字;· ID4 即可访问橙色部分的内容,即寻址双字;

三、扫描循环时间

扫描循环时间是指图1中相邻两次"循环时间监控"之间的时间,它与用户程序的复杂程度及CPU执行指令的速度有关。如下为315和416两款CPU的指令执行速度,相比315,CPU416的执行速度快很多。

CPU 315-2DP:0.3ms/1000条指令;

CPU416-2DP:0.08ms/1000条指令

扫描循环时间不是一成不变的,以下事件都会延长循环时间:

· 中断 · 诊断和故障处理 · 测试和调试功能 · 通讯 · 传送和删除块 · 压缩用户程序存储器 · 读/写MMC卡

图3 最大循环时间与最小循环时间

如图3所示,在硬件组态中,可以修改最大循环时间,默认150ms。如果实际的循环时间超出设置的最大时间,CPU会调用组织块OB80,在其中响应这个故障。如果OB80中未编写程序,CPU将转入STOP模式。

400的CPU中还可以设置最小扫描周期,当用户程序较为简单,使得循环时间太短时,过程映像区会太过频繁的刷新,设置最小扫描周期可以避免这种情况。

四、系统的响应时间

PLC的外部输入信号发生变化的时刻到它所控制的外部输出信号发生变化的时刻之间的时间间隔,称之为系统的响应时间。它由以下三部分组成:

1、输入电路的滤波时间

输入模块通过RC滤波电路来过滤输入端引入的干扰,并消除因外接输入触点的动作时产生的抖动而引起的不良影响,滤波电路的时间常数决定了输入滤波时间的长短,一般为10ms左右。

2、输出电路的滞后时间

输出模块的滞后时间与模块的类型有关,

· 继电器型输出电路的滞后时间一般在10ms左右;

· 双向晶闸管型输出电路在负载通电时的滞后时间约为1ms,负载由通电到断电时的最大滞后时间为10ms;

· 晶体管型输出电路的滞后时间一般在1ms以下。

3、CPU扫描循环工作方式带来的滞后时间

由扫描工作方式引起的滞后时间最坏的情况下,可达2-3个扫描周期。

PLC总的响应延迟时间一般只有几毫秒到几十毫秒,对于一般的系统是无关紧要的。在一些特殊应用场合,要求输入、输出信号之间的滞后时间尽可能短的时候,可以选用扫描速度更快的PLC或采取中断等措施。

相关问答

电气中PLC什么意思?

电气中PLC意思是ProgrammableLogicController的简写,中文为可编程逻辑控制器。PLC是一种采用一类可编程的存储器,用于其内部存储程序,执行逻辑运算、顺序控...

触摸屏为什么能控制PLC?

PLC本身的控制,是通过控制寄存器D,输入端口X,软继电器状态M还有时间继电器T等状态变量的改变来完成的,所以只要能修改到这些变量的状态,就能完成对PLC的控制...

工业PLC控制与电脑程序控制有什么区别?

工业PLC和电脑控制有本质区别:PLC是可编程逻辑控制器有强大的可拓展性,除了主机外专门针对工业场合提供了除了各种模块:模拟量模块,开入模块,继电器模块,通...

C语言跟PLC在本质上有什么区别?是不是说PLC是C语言里面的一种?

C语言和PLC(可编程逻辑控制器)在本质上有以下区别:1.用途不同:C语言是一种通用的计算机编程语言,可应用于各种计算机领域,例如操作系统、应用程序、嵌入式...

工控机和plc有什么区别?

简单的可能是用单片机,高级的就是PC。只是在耐用、抗干扰、适应恶劣环境、多路输入输出等方面加强了它的性能而已。PLC实质是一种专用于工业控制的计算机,其...

触摸屏的操作如何来实现PLC程序控制的?

....2.想要了解触摸屏的工作原理就必须要懂得通讯,我们知道一个按钮要控制一个接触器就必须要有电信号的传输,也就是开关量。3.而触摸屏控制一个接触器则必...

西门子触摸屏程序和plc程序,内容有什么区别?分别装的是什么内容?

触摸屏程序是下载到触摸屏上执行的程序,PLC程序是实际系统的PLC控制程序,运行在PLC上,两者有着本质上的差别,简单来说,PLC程序是控制现场设备的,但为了实现...

DCS比PLC的优势有哪些?

DCS和PLC是当前自动化控制领域的两大系统,是两种互不相同的系统,又紧密联系且互为主辅。在自动化控制装置中已被广泛应用,如石油、化工、冶金、电力等行业。它...

PLC和,单片机在应用范围上有什么区分么?

PLC与单片机的区别:1.PLC是应用单片机构成的比较成熟的控制系统,是已经调试成熟稳定的单片机应用系统的产品。有较强的通用性。2.而单片机可以构成...PLC与...

停止按钮是常闭触点,梯形图也是闭点,为什在PLC中,用常开接点呢?

PLC是继电器电路的软体功能实现,但是它完全是软的东西,最终要落地驱动继电器,还是需要转换的,这个转换过程,往往会造成逻辑电平上的颠倒,所以常开可以变成...KM...

 a fine frenzy  童双春 
王经理: 180-0000-0000(微信同号)
10086@qq.com
北京海淀区西三旗街道国际大厦08A座
©2025  上海羊羽卓进出口贸易有限公司  版权所有.All Rights Reserved.  |  程序由Z-BlogPHP强力驱动
网站首页
电话咨询
微信号

QQ

在线咨询真诚为您提供专业解答服务

热线

188-0000-0000
专属服务热线

微信

二维码扫一扫微信交流
顶部