0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

状态机如何简化PLC程序的编写

h1654155282.3538 来源:自动化工程师的日常 作者:自动化工程师的日 2020-09-10 14:44 次阅读

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

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

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

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

状态的选择

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

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

状态之间的转换

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

状态机实现流程控制方法

举例1

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

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

举例2

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

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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 状态机
    +关注

    关注

    2

    文章

    486

    浏览量

    27182
  • PLC程序
    +关注

    关注

    4

    文章

    68

    浏览量

    11151
收藏 人收藏

    评论

    相关推荐

    STM32按键状态机2——状态简化与增加长按功能

    本篇继续介绍状态机的使用,在上篇的基础上,通过简化按键去抖逻辑,并增加按键长按功能,进一步介绍状态图的修改与状态机代码的实现,并通过实际测试,演示
    的头像 发表于 09-03 21:26 3387次阅读
    STM32按键<b class='flag-5'>状态机</b>2——<b class='flag-5'>状态</b><b class='flag-5'>简化</b>与增加长按功能

    状态机编程

    、基于状态机分析的简单按键设计(一)我们把单个按键作为一个简单的系统,根据状态机的原理对其动作和确认的过程进行分析,并用状态图表示出来,然后根据状态
    发表于 07-10 18:00

    状态机结构

    自己编写状态机结构程序
    发表于 08-14 21:46

    状态机下载到片子,状态不转移。

    我用VHDL编写程序,Modelsim跑前后仿真都没有问题。下载到片子上怎么都没结果。后来考虑可能是没有进状态机,试着用LED发现没有状态转移。后来
    发表于 09-29 10:11

    JKI状态机问题

    JKI状态机中,如何在前面板关闭前,执行相机停止与资源释放两个状态我现在这么编写,好像不会做这两个状态
    发表于 02-28 10:29

    为什么PIC32的Harmony编写没有交互的状态机

    重新定义,但是基于和声方法,这些状态机也基于中断在不同的文件中从一个状态移动到另一个状态。这个应用程序运行良好,但我询问您的意见,如果这种方法是正确的或可以改进的,或者如果您有任何SU
    发表于 08-12 08:36

    有限状态机按键接口程序怎么编写

    的系统,根据状态机的原理对其动作的操作和确认的过程进行分析,并用状态图表示出来,然后根据状态编写出按键接口程序
    发表于 10-21 08:33

    什么是状态机状态机是如何编程的?

    什么是状态机状态机是如何编程的?
    发表于 10-20 07:43

    什么是有限状态机

    在嵌入式,机器人领域,由于多的复杂逻辑状态,我们编写程序的时候不得不考虑很多种情况,容易造成功能间的冲突。有限状态机(finite-state machine),简称状态机,是一种表示
    发表于 12-20 06:51

    什么是状态机

    目录1 前言2 状态机2.1 什么是状态机2.2 状态机的概念2.3 使用状态机写键盘的思路3 代码实例3.1 使用软件3.2 protues电路图3.2
    发表于 01-24 06:23

    状态机思路在单片机程序设计中的应用

    状态机思路在单片机程序设计中的应用 状态机的概念状态机是软件编程中的一个重要概念。比这个概念更重要的是对它的灵活应用。在一个思路清晰而且高效的程序
    发表于 02-09 11:25 1w次阅读
    <b class='flag-5'>状态机</b>思路在单片机<b class='flag-5'>程序</b>设计中的应用

    状态机思路在单片机程序设计中的应用

    状态机思路在单片机程序设计中的应用 状态机的概念       状态机是软件编程中的一个重要概念。比这个概念更重要的是对
    发表于 03-18 15:00 1136次阅读
    <b class='flag-5'>状态机</b>思路在单片机<b class='flag-5'>程序</b>设计中的应用

    利用状态机的按键消抖程序

    利用状态机的按键消抖程序讲解,很好的资料下载吧。
    发表于 01-11 09:32 30次下载

    状态机VHDL程序

    状态机VHDL程序,感兴趣的小伙伴们可以瞧一瞧。
    发表于 11-11 15:51 5次下载

    简述如何使用Harmony的动态驱动和状态机编写程序

    本篇就来介绍一下如何使用Harmony的动态驱动和状态机编写程序。其实状态机是挺简单的,就是事先定义好可能发生的哪些状态,然后主循环里根据不同的
    的头像 发表于 02-01 03:33 3799次阅读
    简述如何使用Harmony的动态驱动和<b class='flag-5'>状态机</b>来<b class='flag-5'>编写程序</b>