研选课堂
HOME
研选课堂
正文内容
plc简化编程 使用状态机方式简化PLC程序的编写
发布时间 : 2025-03-17
作者 : 小编
访问数量 : 23
扫码分享至微信
Scan me!

使用状态机方式简化PLC程序的编写

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

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

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

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

状态的选择

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

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

状态之间的转换

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

状态机实现流程控制方法

举例1

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

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

举例2

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

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

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

PLC编程小知识:相同功能带定时器的PLC程序怎么简化?

有时做梯形图会遇上几十个类似程序往下运行,它们都有各自独立的I,Q,T。如果逐条把程序写下去,工作量会非常大,那么我们应该如何简化相同功能带定时器的PLC程序呢?

简化方法

我们以西门子1200为例,使用FB功能块和多重背景功能块,并对定时器使用多重背景数据块进行简化(如果有人能做成循环的,就更加完美了)。

第一步

建立”电磁阀控制”功能块FB1,设定INPUT/OUTPUT变量接口参数,在静态变量中设定定时器参数TOF,类型为IEC_TIMER,写入控制程序。

插入TOF定时器时,需设置背景数据块为多重背景数据块,接口名称为之前设定的TOF。

第二步

再建一个”多重背景数据”功能块FB2,在静态变量设定要使用到的多个设备参数“电磁阀1”“电磁阀2”“电磁阀3”……数据类型为“电磁阀控制FB1”。

第三步

将FB1功能块拖入到程序中,使用几个设备(近似重复的程序段)就用几个FB1,分别设定为使用多重背景,接口类型分别选择“电磁阀1”“电磁阀2”“电磁阀3”……并输入实参。

结果如下:

第四步

在OB1中调用FB2,将FB2拖入主程序中,建立FB2背景数据块FB2_DB后保存。这样就完成了。

方法优点

1.程序做成了功能块,修改起来极为方便,只需改修单个功能块就行,不必逐条修改成百上千条类似的语句。当子程序较长时,优势更加明显;

2.排列整齐,输入输出接口清晰,也便于接口数据的输入、检查和修正;

3.避免无数条重复程序部分写错;

4.对于1200、1500而言,定时器使用多重背景数据块可以节约数据块的数量,避免使用过多的DB块,解放内存。

相关问答

plc程序化简的口诀是?

在PLC(可编程逻辑控制器)编程中,有一个常用的简化程序的原则,可以用以下的"口诀"来概括:KISS原则:保持简单,愚蠢可行(KeepItSimple,Stupid)这个...

plc状态机编程思路及方法?

PLC状态机编程是一种基于状态转移的程序设计方法,主要思路是将程序分解成多个状态,每个状态对应着一种特定的工作模式和控制逻辑,通过状态之间的转移实现程序...

PLC编程才开始怎样入门提高?

随着科技的进步,社会的发展,PLC取代了传统的继电器控制盘,在工业自动控制系统担起了重要的角色,应用日益广泛。如何提高PLC编程能力,适应社会的发展需要,是PLC技...

plc不同品牌设备的编程区别?

不同厂家PLC的编程语言一般不一样的。主流的有西门子和三菱。不同厂家,不同型号的PLC的编程语言只能适应自己的产品。IEC中的PLC编程语言标准中有五种编程语...

plc程序设计语言?

形...1、梯形图(LadderDiagram)程序设计语言梯形图程序设计语言是用梯形图的图形符号来描述程序的一种程序设计语言。采用梯形图程序设计语言,程序采用梯形...

plc用st语言编程调试方便吗?

PLC用ST语言编程调试相对比较方便。ST语言是一种结构化的编程语言,它具有类似于传统计算机编程语言的特性,如变量定义、循环控制和函数调用等,因此对于熟悉传...

plc中qb是什么意思?

看plc中qb的意思1.QB在电气领域中代表"QuickBreak",意为快速断开。2.QB是一种电气术语,常用于描述断路器或开关的动作特性。QB指的是在电路中断开电流...

plc编程并联和自锁有什么区别?

自锁电路是无机械锁定开关电路编程中常用的电路形式,是指输入继电器触点闭合,输出继电器线圈得电,控制其输出继电器触点锁定输入继电器触点;当输入继电器触点...

泰和安联动编程符号说明?

泰和安联动是一种流程自动化工具,类似于编程语言,其中包括一些编程符号。下面是泰和安联动编程符号的基本说明:1.开始符号:用来标记流程的开始。2.结束符...

三菱PLC编程软件安装不了?

三菱PLC编程软件的安装步骤如下:1、鼠标右键点击下载好的三菱PLC安装包,把安装包解压到指定文件夹。2、解压压缩包之后,会有一个文件夹出现,打开文件夹,找...

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

QQ

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

热线

188-0000-0000
专属服务热线

微信

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