PLC编程状态机如何实现
在PLC程序的编写过程中,可以使用状态机的控制思路,将一些复杂的控制过程使用状态机的方法处理。这里简单给大家介绍一下什么是状态机?如下图所示,为一个状态机的状态图。
从以上图中可以看到,其是将动作执行的各个状态进行了一个划分、规划。动作程序的执行就是使程序在不同的条件下进行各个状态之间的转换。
以上这些都比较抽象,初次接触的话不是特别能让人理解,接下来我们看一下一个程序功能如何拆分为状态机的单个状态。
如何拆分设计状态机的状态
状态的选择
一般将程序执行过程中,会存在停留、保持、等待等过程。在设计状态的时候,就可以将状态的最小单位设计为这些过程。例如,1、控制气缸伸出/收回,这就可以选做状态机的一个状态;2、设备停止,等待接收命令,这也应该是一个状态;3、启动电机运行,电机运行到停止这也应该是一个状态;
总的来说,在选择状态的时候,状态在程序的时序结构上,在时间单位上应该是一个“保持”的状态。
状态之间的转换
状态转换一定是要某种条件的。即状态在处于保持的过程中,检测到条件满足,就进行状态间的转换。例如,气缸伸出/收回这个状态,在气缸动作的过程中,其缸动作到位传感器检测到到位信号,则程序就应该转换到下一个状态。下一个状态可以是另一个气缸的动作、也可以是等待延时、还可以是其他设备流程上的步骤。
状态机实现流程控制方法
举例1
这里以机械手物料取放机构为例给大家分享。这个是我以前给大家分享的一篇文章PLC编程示例-机械手物料取放。在这篇文章中,我以类似于“流水线”的方式给大家分享如何处理这类流程控制逻辑。
这种方式简单方便,编写程序的时候就依照动作的流程顺序执行下去就可以。但是如果设备的动作比较复杂,就可能会将这个“流水线”设计得非常得长。这当然不是一个优质的程序结构。但是如果使用状态机的方式来处理,就可以将程序简化许多。且程序的代码质量也会提高不少。
举例2
串口自定义协议实现过程。在处理串口通信的过程中,在进行数据传输的过程中一般都会有几个动作,如串口状态查询、串口空闲查询、数据发送、数据接收、异常检测、异常处理。
同样的,将串口通信的过程均使用状态机的方式来进行处理,可以极大的简化程序的结构。尤其在通信过程为动态变化的情况下,如某一时刻,仅需要数据发送流程;某一时刻,仅需要数据接收;某一时间既要发送又要接收;在处理此类流程复杂的过程时,选用状态机的方式可以灵活的适用在各种变化的通信过程。
(转载请注明来源函控自动化工程师头条号)
如何看懂PLC程序?按照这五个步骤!
1、PLC控制系统梯形图的特点
(1)PLC控制系统的输入信号和输出负载
继电器电路图中的交流接触器和电磁阀等执行机构用PLC的输出继电器来控制,它们的线圈接在PLC的输出端。按钮、控制开关、限位开关、接近开关等用来给PLC提供控制命令和反馈信号,它们的触点接在PLC的输入端。
(2)继电器电路图中的中间继电器和时间继电器的处理
继电器电路图中的中间继电器和时间继电器的功能用PLC内部的辅助继电器和定时器来完成,它们与PLC的输入继电器和输出继电器无关。
(3)设置中间单元
在梯形图中,若多个线圈都受某一触点串/并联电路的控制,为了简化电路,在梯形图中可设置用该电路控制的辅助继电器,辅助继电器类似于继电器电路中的中间继电器。
(4)时间继电器瞬动触点的处理
时间继电器除了延时动作的触点外,还有在线圈得电或失电时立即动作的瞬动触点。对于有瞬动触点的时间继电器,可以在梯形图中对应的定时器的线圈两端并联辅助继电器,后者的触点相当于时间继电器的瞬动触点。
(5)外部联锁电路的设立
为了防止控制正/反转的两个接触器同时动作,造成三相电源短路,除了在梯形图中设置与它们对应的输出继电器的线圈串联的动断触点组成的软互锁电路外,还应在PLC外部设置硬互锁电路。
2、梯形图的结构分析
采用一般编程方法还是采用顺序功能图编程方法;采用顺序功能图的单序列结构还是选择序列结构、并行序列结构,使用启/保/停电路、步进顺控指令进行编程还是用置位/复位指令进行编程。
梯形图的分解由操作主令电路(如按钮)开始,查线追踪到主电路控制电器(如接触器)动作,中间要经过许多编程元件及电路,查找起来比较困难。
无论多么复杂的梯形图,都是由一些基本单元构成的。按主电路的构成情况,利用逆读溯源法,把梯形图和指令语句表分解成与主电路的用电器(如电动机)相对应的几个基本单元,然后一个环节、一个环节地分析,最后再利用顺读跟踪法把各环节串起来。
(1)按钮、行程开关、转换开关的配置情况及作用
在PLC的I/O接线图中有许多行程开关和转换开关,以及压力继电器、温度继电器等,这些电器元件没有吸引线圈,它们的触点的动作是依靠外力或其他因素实现的,因此必须先把引起这些触点动作的外力或因素找到。其中行程开关由机械联动机构来触压或松开,而转换开关一般由手工操作,从而使这些行程开关、转换开关的触点在设备运行过程中便处于不同的工作状态,即触点的闭合、断开情况不同,以满足不同的控制要求,这是看图过程中的一个关键。
这些行程开关、转换开关的触点的不同工作状态单凭看电路图难以搞清楚,必须结合设备说明书、电器元件明细表,明确该行程开关、转换开关的用途,操纵行程开关的机械联动机构,触点在不同的闭合或断开状态下电路的工作状态等。
(2)采用逆读溯源法将多负载(如多电动机电路)分解为单负载(如单电动机)电路
根据主电路中控制负载的控制电器的主触点文字符号,在PLC的I/O接线图中找出控制该负载的接触器线圈的输出继电器,再在梯形图和指令语句表中找出控制该输出继电器的线圈及其相关电路,这就是控制该负载的局部电路。
在梯形图和指令语句表中,很容易找到该输出继电器的线圈电路及其得电、失电条件,但引起该线圈的得电、失电及其相关电路就不容易找到,可采用逆读溯源法去寻找:
在输出继电器线圈电路中串、并联的其他编程元件触点的闭合、断开就是该输出继电器得电、失电的条件。
由这些触点再找出它们的线圈电路及其相关电路,在这些线圈电路中还会有其他接触器、继电器的触点……
如此找下去,直到找到输入继电器(主令电器)为止。值得注意的是:当某编程元件得电吸合或失电释放后,应该把该编程元件的所有触点所带动的前、后级编程元件的作用状态全部找出,不得遗漏。
找出某编程元件在其他电路中的动合触点、动断触点,这些触点为其他编程元件的得电、失电提供条件或者为互锁、联锁提供条件,引起其他电器元件动作,驱动执行电器。
(3)将单负载电路进一步分解
控制单负载的局部电路可能仍然很复杂,还需要进一步分解,直至分解为基本单元电路。
(4)分解电路的注意事项
若电动机主轴接有速度继电器,则该电动机按速度控制原则组成停车制动电路。
若电动机主电路中接有整流器,表明该电动机采用能耗制动停车电路。
(5)集零为整,综合分析
把基本单元电路串起来,采用顺读跟踪法分析整个电路。
相关问答
plc状态表是什么?
PLC(可编程逻辑控制器)状态表是一种用于记录和表示PLC各个输入、输出、中继和内部寄存器的状态的表格。它通常以二进制形式表示,每个位的值对应于相应输入/输...
s7一200plc怎么进行程序调试?
1,程序编好号下载到PLC中,并保证电脑和PLC一直在通信状态2,编程软件上点击程序状态监控按钮3,例如我要在编程软件上接通I0.0,先选中I0.0,然后在表示I0.0...
西门子200plc怎么设置run状态?
你好,要设置西门子200plc为“run”状态,请按照以下步骤操作:1.连接PLC和编程器,确保连接正常。2.在编程器软件中打开PLC程序。3.检查程序中的所有错误和警...
在plc编程中判断状态字,是通过通过用逻辑用1与0和0或1来判断,还是读取状态字中每一位来判断好?
具体情况,具体分析:一般采用“与”操作,取出每一位的状态,然后判断,如去第一位,就“与”“01H”。具体情况,具体分析:一般采用“与”操作,取出每一位的状态,...
西门子PLC肿么编写脉冲程序-ZOL问答
Y=X-6400/25600*100,你的程序就按照这条公式编程就行了。有用(0)回复baidu_chuiguoyan一般直接加上或者减去一个数即可,如果是个常数,直接在plc里编程。如.....
plc如何确定控制逻辑?
首先明确PLC的控制逻辑指的是编写正确的程序并下载到控制器中,在运行状态下PLC开始循环扫描程序,并按照程序中的各种逻辑进行输入输出。其次如果想编写好程序...
plc编程状态寄存器的功能?
PLC寄存器可以对其进行赋值,然后调用PLC里面的内部资源。举个简单的例子,例如对定时器的计算机进行赋值,就可以调用PLC的定时器来进行定时。PLC寄存器可以对...
plc的两种基本工作?
plc有stop(停止)和run(运行)两种基本工作模式。可以通过手动更改位于plccpu模块上的模式转换开关,直接控制plc的stop与run。当plc操作系统检测到重大错误时...
plc读取程序是run还是stop?
在PLC(可编程逻辑控制器)中,读取程序的状态通常是"Stop"(停止)状态。当PLC处于"Stop"状态时,它将暂停执行程序,并停止所有的输入输出操作。这个...
plc各个代码意思?
不同商家的PLC有不同的编程语言,但就某个商家而言,PLC的编程语言也就那么几种,下面以PLC编程语言为例,简单描述下一、指令系统:按照使用的情况分,大致分为...