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

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

3天内不再提示

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

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

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

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

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

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

状态的选择

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

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

状态之间的转换

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

状态机实现流程控制方法

举例1

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

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

举例2

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

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

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

    关注

    2

    文章

    492

    浏览量

    27493
  • PLC程序
    +关注

    关注

    4

    文章

    72

    浏览量

    11265
收藏 人收藏

    评论

    相关推荐

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

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

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

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

    采用状态机和消息机制的串口接收程序

    采用状态机和消息机制的串口接收程序
    发表于 05-16 14:51 48次下载

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

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

    状态机举例

    状态机举例 你可以指定状态寄存器和状态机状态。以下是一个有四种状态的普通状态机。 // Th
    发表于 03-28 15:18 977次阅读

    状态机原理及用法

    状态机原理及用法状态机原理及用法状态机原理及用法
    发表于 03-15 15:25 0次下载

    状态机VHDL程序

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

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

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

    如何对状态机程序进行灵活修改

    状态机最主要的特点就是灵活性,这个优势在程序后期的维护上更会显示出来,本集中工程师将展现出状态机是如何轻松对程序进行灵活修改,从而满足日益复杂的开发要求。
    的头像 发表于 06-14 03:19 3292次阅读
    如何对<b class='flag-5'>状态机</b>的<b class='flag-5'>程序</b>进行灵活修改

    状态机概述 如何理解状态机

    本篇文章包括状态机的基本概述以及通过简单的实例理解状态机
    的头像 发表于 01-02 18:03 1w次阅读
    <b class='flag-5'>状态机</b>概述  如何理解<b class='flag-5'>状态机</b>

    FPGA:状态机简述

    本文目录 前言 状态机简介 状态机分类 Mealy 型状态机 Moore 型状态机 状态机描述 一段式
    的头像 发表于 11-05 17:58 7325次阅读
    FPGA:<b class='flag-5'>状态机</b>简述

    状态模式(状态机)

    share,作者:亚索老哥)),原来状态机还可以这么简单地玩~~亚索老哥提出的状态机六步法(1)、定义状态接口(2)、定义系统当前状态指针(3)、定义具体
    发表于 12-16 16:53 9次下载
    <b class='flag-5'>状态</b>模式(<b class='flag-5'>状态机</b>)

    分享一款状态机自动生成工具

    为实用的软件系统编写状态机并不是一件十分轻松的事情,特别是当状态机本身比较复杂的时候尤其如此,许多有过类似经历的程序员往往将其形容为"毫无创意"的过程,因为他们需要将大量的时间与精力倾
    的头像 发表于 07-31 10:24 3198次阅读
    分享一款<b class='flag-5'>状态机</b>自动生成工具

    状态机自动生成工具FSME

    为实用的软件系统编写状态机并不是一件十分轻松的事情,特别是当状态机本身比较复杂的时候尤其如此,许多有过类似经历的程序员往往将其形容为“毫无创意”的过程,因为他们需要将大量的时间与精力倾
    的头像 发表于 09-13 16:45 1431次阅读
    <b class='flag-5'>状态机</b>自动生成工具FSME

    什么是状态机状态机的种类与实现

    状态机,又称有限状态机(Finite State Machine,FSM)或米利状态机(Mealy Machine),是一种描述系统状态变化的模型。在芯片设计中,
    的头像 发表于 10-19 10:27 9105次阅读