直播课堂
HOME
直播课堂
正文内容
PLC状态机编程思路 PLC编程状态机如何实现
发布时间 : 2025-01-19
作者 : 小编
访问数量 : 23
扫码分享至微信

PLC编程状态机如何实现

在PLC程序的编写过程中,可以使用状态机的控制思路,将一些复杂的控制过程使用状态机的方法处理。这里简单给大家介绍一下什么是状态机?如下图所示,为一个状态机的状态图。

从以上图中可以看到,其是将动作执行的各个状态进行了一个划分、规划。动作程序的执行就是使程序在不同的条件下进行各个状态之间的转换。

以上这些都比较抽象,初次接触的话不是特别能让人理解,接下来我们看一下一个程序功能如何拆分为状态机的单个状态。

如何拆分设计状态机的状态

状态的选择

一般将程序执行过程中,会存在停留、保持、等待等过程。在设计状态的时候,就可以将状态的最小单位设计为这些过程。例如,1、控制气缸伸出/收回,这就可以选做状态机的一个状态;2、设备停止,等待接收命令,这也应该是一个状态;3、启动电机运行,电机运行到停止这也应该是一个状态;

总的来说,在选择状态的时候,状态在程序的时序结构上,在时间单位上应该是一个“保持”的状态。

状态之间的转换

状态转换一定是要某种条件的。即状态在处于保持的过程中,检测到条件满足,就进行状态间的转换。例如,气缸伸出/收回这个状态,在气缸动作的过程中,其缸动作到位传感器检测到到位信号,则程序就应该转换到下一个状态。下一个状态可以是另一个气缸的动作、也可以是等待延时、还可以是其他设备流程上的步骤。

状态机实现流程控制方法

举例1

这里以机械手物料取放机构为例给大家分享。这个是我以前给大家分享的一篇文章PLC编程示例-机械手物料取放。在这篇文章中,我以类似于“流水线”的方式给大家分享如何处理这类流程控制逻辑。

这种方式简单方便,编写程序的时候就依照动作的流程顺序执行下去就可以。但是如果设备的动作比较复杂,就可能会将这个“流水线”设计得非常得长。这当然不是一个优质的程序结构。但是如果使用状态机的方式来处理,就可以将程序简化许多。且程序的代码质量也会提高不少。

举例2

串口自定义协议实现过程。在处理串口通信的过程中,在进行数据传输的过程中一般都会有几个动作,如串口状态查询、串口空闲查询、数据发送、数据接收、异常检测、异常处理。

同样的,将串口通信的过程均使用状态机的方式来进行处理,可以极大的简化程序的结构。尤其在通信过程为动态变化的情况下,如某一时刻,仅需要数据发送流程;某一时刻,仅需要数据接收;某一时间既要发送又要接收;在处理此类流程复杂的过程时,选用状态机的方式可以灵活的适用在各种变化的通信过程。

(转载请注明来源函控自动化工程师头条号)

PLC编程实例|4个基本控制电路设计方法,教你吃透控制原理

1 单输出自锁控制电路

启动信号 I0.0 和停止信号 I0.1 持续为 ON 的时间般都短。该电路最主要的特点是具有“记忆”功能。

2 多输出自锁控制电路(置位、复位)

多输出自锁控制即多个负载自锁输出,有多种编程方法,可用置位、复位指令

3 单向顺序启停控制电路

1. 单向顺序启动控制电路是按照生产工艺预先规定的顺序,在各个输入信号的作用下,生产过程中的各个执行机构自动有序动作。只有 Q0.0 启动后,Q0.1 方可启动,Q0.2 必须在 Q0.1 启动完成后才可以启动。

2. 单向顺序停止控制电路就是要求按一定顺序停止已经执行的各机构。只有 Q0.2 被停止后才可以停止 Q0.1,若想停止 Q0.0,则必须先停止 Q0.1。I0.4 为急停按钮。

4 延时启停控制电路

1. 延时启动控制 设计延时启动程序,要利用中间继电器(内部存储器 M)的自锁状态使定时器能连续计时。定时时间到,其常开触点动作,使 Q0.0 动作。

2. 延时停止控制 定时时间到,延时停止。I0.0 为启动按钮、I0.1 为停止按钮。

3. 延时启停控制电路该电路要求有输入信号后,停一段时间输出信号才为 ON;而输入信号 0FF 后,输出信号延时一段时间才 OFF。T37 延时 3 s 作为 Q0.0 的启动条件,T38 延时 5 s 作为 Q0.0 的关断条件。

经验设计法及注意事项

应用程序设计过程中,应正确选择能反映生产过程的变化参数作为控制参量进行控制;应正确处理各执行电器、各编程元件之间的互相制约、互相配合的关系,即互锁关系。应用程序的设计方法有多种,常用的设计方法有经验设计法、顺序功能图法等。

1 经验设计法

经验设计法要求设计者具有较丰富的实践经验,掌握较多的典型应用程序的基本环节。根据被控对象对控制系统的要求,凭经验选择基本环节,并把它们有机地组合起来。其设计过程是逐步完善的,一般不易获得最佳方案。程序初步设计后,还需反复调试、修改和完善,直至满足被控对象的控制要求。

经验设计法的设计不规范,没有一个普遍的规律可循,具有一定的试探性和随意性。

编写梯形图程序时应遵循的规则:

(1)“输入继电器”的状态由外部输入设备的开关信号驱动,程序不能随意改变它。

(2)梯形图中同一编号的“继电器线圈”只能出现一次,通常不能出现,但是它的触点可以无限次地重复使用。

编写梯形图程序时应遵循的规则:

(3)几个串联支路相并联,应将触点多的支路安排在上面;几个并联回路的串联,应将并联支路数多地安排在左面。按此规则编制的梯形图可减少用户程序步数,缩短程序扫描时间。

(4) 程序的编写按照从左至右、自上至下的顺序排列。一个梯级开始于左母线,终止于右母线,线圈与右母线直接相连。

①桥式电路必须修改后才能画出梯形图。

②非桥式复杂电路必须修改后才能画出梯形图

2 注意事项

(1)先编制 I/O 分配表,后设计梯形图。先对输入、输出信号及内部线圈进行编号分配,再确定 PLC 各输入 / 输出接线端子的实际接线图。

(2)合理排列梯形图,使输入 / 输出响应滞后现象不影响实际响应速度。通常可根据工艺流程图按动作先后顺序排列各输出线圈,同时兼顾内部线圈、时间继电器等线圈的排列顺序,使输入/输出延迟响应不影响实际输出对响应速度的要求。

(3)高速计数指令、高速脉冲输出指令应尽量放在整个用户程序的前部。由于高速计数器和高速脉冲串发生器与 CPU 之间的信息交换是在 I/O 扫描时进行的,所以在执行其他命令时就可能影响高速计数器、高速脉冲串发生器与 CPU 之间的信息交换,甚至有可能丢失脉冲。

(4)在 PLC 输入端子接线图中,对于同一个发信元件,通常只需选其中某一触点(例如常开触点或常闭触点)接入输入端子,即对一个发信元件,它只能占一个输入地址编号。

( 5)合理接入输入信号的触点(常开或常闭触点),提高设备的可靠性、安全性。PLC 实际 I/O 接线图中,某输入信号(如按钮)究竟是接入电器的常开触点还是常闭触点,应从设备的可靠性、安全性角度考虑。当输入端接线故障断线时,设备状态应向着安全的状态发展。因此, 停止按钮应以常闭触点接入 PLC 输入接线端子,而启动按钮应以常开触点接入 PLC 输入接线端子(为便于理解,本书前面章节各图均按常开触点接入处理)。

(6)从安全考虑,重大安全部分不接入 PLC 的输入端,而做硬件处理。例如,紧急停车按钮、互锁触点、紧急限位开关、热继电器控制触点等,接至 PLC 的输出端子上,直接对输出负载(KM1、KM2)进行控制,以保证 PLC 故障时不损坏设备,不造成重大安全事故。

(7)应保证有效输入信号的电平保持时间。要保证输入信号有效,输入信号的电平保持时间必须大于 PLC 一个扫描周期。除非对开关量输入信号设置允许脉冲捕捉功能,这样就允许 PLC 捕捉到持续时间很短的脉冲。

(8)PLC 指令的执行条件有信号电平有效和跳变有效的区别,编程时应加以注意。

(9)由电气控制图转换为梯形图时应注意:对旧设备改造时可借鉴原继电器控制电路图转换为梯形图。继电器控制电路图中的电器触点大多为先断后合型,而 PLC 梯形图中的“软继电器”的常开触点和常闭触点的状态的转换是同时发生的。设计梯形图时可使用延迟电路(如利用内部时间继电器延迟或利用 PLC 循环扫描工作方式而产生的输入 / 输出延迟响应)来模拟先断后合型电器的功能。

顺序功能图与设计法

功能图及其组成

功能表图(Function Chart Diagram)是用图形符号和文字叙述相结合的方法,全面描述控制系统,含电气、液压、气动和机械控制系统或系统某些部分的控制过程、功能和特性的一种通用语言。在功能表图中,把一个过程循环分解成若干个清晰的连续阶段,称为“步”(Step),步与步之间由“转换”分隔。当两步之间的转换条件满足,并实现转换,上一步的活动结束,而下一步的活动开始。一个过程循环分的步越多,对过程的描述就越精确。

1. 步

在控制系统的一个工作周期中,各依次顺序相连的工作阶段,称为步或工步,用矩形框和文字(或数字)表示。步有两种状态:“活动步、“非活动步” 、“初始步”:一系列活动步决定控制过程的状态。对应控制过程开始阶段的步,每一个功能表图至少有一个初始步,初始步用双线矩形框表示。

2. 动作

在功能表图中,命令(Command)或称动作(Action)用矩形框文字和字母符号表示,与对应步的符号相连。一个步被激活,能导致一个或几个动作或命令,亦即对应活动步的动作被执行。若某步为非活动步,对应的动作返回到该步活动之前的状态。对应活动步的所有动作被执行,活动步的动作可以是动作的开始、继续或结束。若有几个动作与同一步相连,这些动作符号可水平布置,也可垂直布置。

3. 有向连线

有向连线将各步按进展的先后顺序连接起来,它将步连接到转换,并将转换连接到步。有向连线指定了从初始步开始向活动步进展的方向与路线。有向连线可垂直或水平布置。为了使图面更加清晰,个别情况下也叫用斜线。在功能表图中,进展的走向总是从上至下、从左至右,因此有向连线的箭头可以省略。如果不遵守上述进展规则,必须加注箭头。若垂直有向连线与水平有向连线之间没有内在联系,允许它们交叉,但当有向连线与同一进展相关时,则不允许交叉。在绘制功能表图时,因图较复杂或用几张图表示有向连线必须中断,应注明下一步编号及其所在的页数。

4. 转换

在功能表图中,生成活动步的进展是按有向连线指定的路线进行的,进展由一个或几个转换的实现来完成。转换的符号是一根短画线,与有向连线相交,转换将相邻的两个步隔开。如果通过有向连线连接到转换符号的所有前级步都是活动步,该转换为“使能转换”,否则该转换为“非使能转换”。只有当转换为使能转换且转换条件满足时,该转换才被实现。某转换实现,所有与有向连线和相应转换符号相连的后续步被激活,而所有与有向连线和相应转换符号相连的前级步均为非活动步。

5. 转换条件

转换条件标注在转换符号近旁,转换条件可以用 3 种方式表示。

(1)文字语句:b、c 触点中任何一个闭合,触点 a 同时闭合。

(2)布尔表达式:a(b+c)。(3)图形符号:

所谓转换条件是指与该转换相关的逻辑变量,可以是真(1),也可以是假(0)。如果逻辑变量为真,转换条件为“l”,转换条件满足;如果逻辑变量为假,转换条件为“0”,转换条件不满足。只有当某使能步转换条件满足时,转换才

选择序列的开始称为 分支,转换符号只能标在水平线之下,每个分支上必须具有一个或一个以上的转换条件,且具有优先级。

选择序列的结束称为 合并,几个选择序列合并到一个公共序列时,转换符号只能标在水平线之上。

并行序列用双水平线表示,转换符号在双水平线之上,为公共转换条件。

并行序列的结束称为合并。转换符号在水平线以下,当双水平线之上的所有前级都处于活动状态时,且转换条件成立,则下一步被激活。同时所有前级步都变为不活动步。

绘制原则及注意事项

1. 控制系统功能图的绘制必须满足以下规则。

(1)状态与状态不能相连,必须用转移分开。

(2)转移与转移不能相连,必须用状态分开。

(3)状态与转移、转移与状态之间的连接采用有向线段,自上向下画时,可以省略箭头。当有向线段从下向上画时,必须画上箭头,以表示方向。

(4)一个功能图至少要有一个初始状态。

2. 注意事项

(1)顺控指令仅对元件 S 有效,顺控继电器 S 也具有一般继电器的功能,所以对它能够使用其他指令。

(2)SCR 段程序能否执行取决于该状态器(s)是否被置位,SCRE 与下一个 LSCR 之间的指令逻辑不影响下一个 SCR 段程序的执行。

(3)不能把同一个 S 位用于不同程序中,例如:如果在主程序中用了 S0.1,则在子程序中就不能再使用它了。

(4)在 SCR 段中不能使用 JMP 和 LBL 指令,就是说不允许跳入、跳出或在内部跳转,但可以在 SCR 段附近使用跳转和标号指令。

(5)在 SCR 段中不能使用 FOR、NEXT 和 END 指令。

(6)在状态发生转移后,所有的 SCR 段的元器件一般也要复位。如果希望继续输出,可使用置位 / 复位指令。

(7)在使用功能图时,状态器的编号可以不按顺序编排。

用 SCR 指令的顺序控制梯形图设计方法

单序列顺序功能图的编程

这是最简单的功能图,其动作是一个接一个地完成的。每个状态仅连接一个转移,每个转移也仅连接一个状态。如图示为单流程的功能图、梯形图和语句表。

选择序列编程

在生产实际中,对具有多流程的工作,要进行流程选择或者分支选择。即一个控制流可能转入多个可能的控制流中的某一个,但不允许多路分支同时执行。到底进入哪一个分支,取决于控制流前面的转移条件哪一个为真。

并行序列编程

在许多实例中,一个顺序控制状态流必须分成两个或多个不同分支的控制状态流,这就是并行分支。当一个控制状态流分成多个分支时,所有的分支控制状态流必须同时激活。当多个控制流产生的结果相同时,可以把这些控制流合并成一个控制流,即并行分支的连接。在合并控制流时,所有的分支控制流必须都是完成了的。这样,在转移条件满足时才能转移到下一个状态。并行顺序一般用双水平线表示,同时结束若干个顺序也用双水平线表示。

PLC经典案例

相关问答

机器有自动和手动两种状态用PLC怎么编程?

一般分步编写。手动一个分支。自动一个分支。也可以分主程序和分程序编写。一般分步编写。手动一个分支。自动一个分支。也可以分主程序和分程序编写。

PLC状态器是什么,做什么用的啊,求解?

是状态继电器,在三菱fx系列plc的状态继电器是用S表示,就是控制PLC输出的状态----------------比如:要控制第一个灯亮5秒接着第一个灯和第二个灯一起亮3秒。在...

plc200常用的指令?

西门子S7-200PLC是可编程逻辑控制器的一种,广泛应用于工业控制领域。以下是S7-200PLC常用的指令:LD:逻辑“与”指令,用于将两个触点进行串联,形成逻辑“与...

plc和中间继电器怎样控制电机?

PLC和中间继电器可以作为控制电机的开关,在不同的状态下控制电机的工作。PLC通过编程实现运行逻辑,根据传感器信号或其他输入信号控制中间继电器的开关状态,...

请问PLC的运行模式、监视模式、编程模式都是在什么情况下使用?

编程模式用于程序编写和程序传送。监视模式用于程序调试,此时PLC程序运行,但仍可以通过软件进行程序的修改和参数的修改。运行模式是PLC正常使用状态下的模式...

谁能解释下plc中的S和R指令是怎么回事,如何使用,谢谢了?

plc中的S和R指令:S:置位指令,只要是置位了不管其梯形图电路中是否接通,被置位的Q/M状态都为1,即使当前梯形图状态是断开的Q/M状态也还是为1,直到被复...plc...

plc初始化程序如何编写三种方法?

PLC的初始化程序主要是指PLC在上电启动时运行的程序。下面介绍三种常用的PLC初始化程序编写方法:1.使用自定义函数块可以在PLC编程软件中新建一个自定义函...

200的plc运行模式有几种?

常见的PLC运行模式包括以下几种:1.循环扫描模式:PLC按照事先设定的程序循环扫描执行,从输入模块读取输入信号,经过逻辑处理后输出控制信号,然后再次循环执...

西门子plc模拟量编程实例?

以下是一个使用西门子PLC的模拟量编程示例:假设有一个温度传感器,将温度值转换为4-20mA模拟量信号,然后将信号输入到PLC的模拟量输入模块中。我们需要将输入的...

plc如何确定控制逻辑?

首先明确PLC的控制逻辑指的是编写正确的程序并下载到控制器中,在运行状态下PLC开始循环扫描程序,并按照程序中的各种逻辑进行输入输出。其次如果想编写好程序...

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

QQ

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

热线

188-0000-0000
专属服务热线

微信

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