0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

狀態(tài)機如何簡化PLC程序的編寫

h1654155282.3538 ? 來源:自動化工程師的日常 ? 作者:自動化工程師的日 ? 2020-09-10 14:44 ? 次閱讀

PLC程序的編寫過程中,可以使用狀態(tài)機的控制思路,將一些復(fù)雜的控制過程使用狀態(tài)機的方法處理。這里簡單給大家介紹一下什么是狀態(tài)機?如下圖所示,為一個狀態(tài)機的狀態(tài)圖。

從以上圖中可以看到,其是將動作執(zhí)行的各個狀態(tài)進行了一個劃分、規(guī)劃。動作程序的執(zhí)行就是使程序在不同的條件下進行各個狀態(tài)之間的轉(zhuǎn)換。

以上這些都比較抽象,初次接觸的話不是特別能讓人理解,接下來我們看一下一個程序功能如何拆分為狀態(tài)機的單個狀態(tài)。

如何拆分設(shè)計狀態(tài)機的狀態(tài)

狀態(tài)的選擇

一般將程序執(zhí)行過程中,會存在停留、保持、等待等過程。在設(shè)計狀態(tài)的時候,就可以將狀態(tài)的最小單位設(shè)計為這些過程。例如,1、控制氣缸伸出/收回,這就可以選做狀態(tài)機的一個狀態(tài);2、設(shè)備停止,等待接收命令,這也應(yīng)該是一個狀態(tài);3、啟動電機運行,電機運行到停止這也應(yīng)該是一個狀態(tài);

總的來說,在選擇狀態(tài)的時候,狀態(tài)在程序的時序結(jié)構(gòu)上,在時間單位上應(yīng)該是一個“保持”的狀態(tài)。

狀態(tài)之間的轉(zhuǎn)換

狀態(tài)轉(zhuǎn)換一定是要某種條件的。即狀態(tài)在處于保持的過程中,檢測到條件滿足,就進行狀態(tài)間的轉(zhuǎn)換。例如,氣缸伸出/收回這個狀態(tài),在氣缸動作的過程中,其缸動作到位傳感器檢測到到位信號,則程序就應(yīng)該轉(zhuǎn)換到下一個狀態(tài)。下一個狀態(tài)可以是另一個氣缸的動作、也可以是等待延時、還可以是其他設(shè)備流程上的步驟。

狀態(tài)機實現(xiàn)流程控制方法

舉例1

這里以機械手物料取放機構(gòu)為例給大家分享。這個是我以前給大家分享的一篇文章PLC編程示例-機械手物料取放。在這篇文章中,我以類似于“流水線”的方式給大家分享如何處理這類流程控制邏輯。

這種方式簡單方便,編寫程序的時候就依照動作的流程順序執(zhí)行下去就可以。但是如果設(shè)備的動作比較復(fù)雜,就可能會將這個“流水線”設(shè)計得非常得長。這當(dāng)然不是一個優(yōu)質(zhì)的程序結(jié)構(gòu)。但是如果使用狀態(tài)機的方式來處理,就可以將程序簡化許多。且程序的代碼質(zhì)量也會提高不少。

舉例2

串口自定義協(xié)議實現(xiàn)過程。在處理串口通信的過程中,在進行數(shù)據(jù)傳輸?shù)倪^程中一般都會有幾個動作,如串口狀態(tài)查詢、串口空閑查詢、數(shù)據(jù)發(fā)送、數(shù)據(jù)接收、異常檢測、異常處理。

同樣的,將串口通信的過程均使用狀態(tài)機的方式來進行處理,可以極大的簡化程序的結(jié)構(gòu)。尤其在通信過程為動態(tài)變化的情況下,如某一時刻,僅需要數(shù)據(jù)發(fā)送流程;某一時刻,僅需要數(shù)據(jù)接收;某一時間既要發(fā)送又要接收;在處理此類流程復(fù)雜的過程時,選用狀態(tài)機的方式可以靈活的適用在各種變化的通信過程。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 狀態(tài)機
    +關(guān)注

    關(guān)注

    2

    文章

    492

    瀏覽量

    27600
  • PLC程序
    +關(guān)注

    關(guān)注

    4

    文章

    72

    瀏覽量

    11294
收藏 人收藏

    評論

    相關(guān)推薦

    STM32按鍵狀態(tài)機2——狀態(tài)簡化與增加長按功能

    本篇繼續(xù)介紹狀態(tài)機的使用,在上篇的基礎(chǔ)上,通過簡化按鍵去抖邏輯,并增加按鍵長按功能,進一步介紹狀態(tài)圖的修改與狀態(tài)機代碼的實現(xiàn),并通過實際測試,演示
    的頭像 發(fā)表于 09-03 21:26 ?4159次閱讀
    STM32按鍵<b class='flag-5'>狀態(tài)機</b>2——<b class='flag-5'>狀態(tài)</b><b class='flag-5'>簡化</b>與增加長按功能

    為什么PIC32的Harmony編寫沒有交互的狀態(tài)機

    重新定義,但是基于和聲方法,這些狀態(tài)機也基于中斷在不同的文件中從一個狀態(tài)移動到另一個狀態(tài)。這個應(yīng)用程序運行良好,但我詢問您的意見,如果這種方法是正確的或可以改進的,或者如果您有任何SU
    發(fā)表于 08-12 08:36

    采用狀態(tài)機和消息機制的串口接收程序

    采用狀態(tài)機和消息機制的串口接收程序
    發(fā)表于 05-16 14:51 ?48次下載

    狀態(tài)機思路在單片程序設(shè)計中的應(yīng)用

    狀態(tài)機思路在單片程序設(shè)計中的應(yīng)用 狀態(tài)機的概念       狀態(tài)機是軟件編程中的一個
    發(fā)表于 03-18 15:00 ?1288次閱讀
    <b class='flag-5'>狀態(tài)機</b>思路在單片<b class='flag-5'>機</b><b class='flag-5'>程序</b>設(shè)計中的應(yīng)用

    狀態(tài)機舉例

    狀態(tài)機舉例 你可以指定狀態(tài)寄存器和狀態(tài)機狀態(tài)。以下是一個有四種狀態(tài)的普通狀態(tài)機。 // Th
    發(fā)表于 03-28 15:18 ?991次閱讀

    狀態(tài)機原理及用法

    狀態(tài)機原理及用法狀態(tài)機原理及用法狀態(tài)機原理及用法
    發(fā)表于 03-15 15:25 ?0次下載

    狀態(tài)機VHDL程序

    狀態(tài)機VHDL程序,感興趣的小伙伴們可以瞧一瞧。
    發(fā)表于 11-11 15:51 ?5次下載

    簡述如何使用Harmony的動態(tài)驅(qū)動和狀態(tài)機編寫程序

    本篇就來介紹一下如何使用Harmony的動態(tài)驅(qū)動和狀態(tài)機編寫程序。其實狀態(tài)機是挺簡單的,就是事先定義好可能發(fā)生的哪些狀態(tài),然后主循環(huán)里根據(jù)不同的
    的頭像 發(fā)表于 02-01 03:33 ?4045次閱讀
    簡述如何使用Harmony的動態(tài)驅(qū)動和<b class='flag-5'>狀態(tài)機</b>來<b class='flag-5'>編寫程序</b>

    如何對狀態(tài)機程序進行靈活修改

    狀態(tài)機最主要的特點就是靈活性,這個優(yōu)勢在程序后期的維護上更會顯示出來,本集中工程師將展現(xiàn)出狀態(tài)機是如何輕松對程序進行靈活修改,從而滿足日益復(fù)雜的開發(fā)要求。
    的頭像 發(fā)表于 06-14 03:19 ?3329次閱讀
    如何對<b class='flag-5'>狀態(tài)機</b>的<b class='flag-5'>程序</b>進行靈活修改

    狀態(tài)機概述 如何理解狀態(tài)機

    本篇文章包括狀態(tài)機的基本概述以及通過簡單的實例理解狀態(tài)機
    的頭像 發(fā)表于 01-02 18:03 ?1.1w次閱讀
    <b class='flag-5'>狀態(tài)機</b>概述  如何理解<b class='flag-5'>狀態(tài)機</b>

    FPGA:狀態(tài)機簡述

    本文目錄 前言 狀態(tài)機簡介 狀態(tài)機分類 Mealy 型狀態(tài)機 Moore 型狀態(tài)機 狀態(tài)機描述 一段式
    的頭像 發(fā)表于 11-05 17:58 ?7485次閱讀
    FPGA:<b class='flag-5'>狀態(tài)機</b>簡述

    狀態(tài)模式(狀態(tài)機)

    share,作者:亞索老哥)),原來狀態(tài)機還可以這么簡單地玩~~亞索老哥提出的狀態(tài)機六步法(1)、定義狀態(tài)接口(2)、定義系統(tǒng)當(dāng)前狀態(tài)指針(3)、定義具體
    發(fā)表于 12-16 16:53 ?9次下載
    <b class='flag-5'>狀態(tài)</b>模式(<b class='flag-5'>狀態(tài)機</b>)

    分享一款狀態(tài)機自動生成工具

    為實用的軟件系統(tǒng)編寫狀態(tài)機并不是一件十分輕松的事情,特別是當(dāng)狀態(tài)機本身比較復(fù)雜的時候尤其如此,許多有過類似經(jīng)歷的程序員往往將其形容為"毫無創(chuàng)意"的過程,因為他們需要將大量的時間與精力傾
    的頭像 發(fā)表于 07-31 10:24 ?3501次閱讀
    分享一款<b class='flag-5'>狀態(tài)機</b>自動生成工具

    狀態(tài)機自動生成工具FSME

    為實用的軟件系統(tǒng)編寫狀態(tài)機并不是一件十分輕松的事情,特別是當(dāng)狀態(tài)機本身比較復(fù)雜的時候尤其如此,許多有過類似經(jīng)歷的程序員往往將其形容為“毫無創(chuàng)意”的過程,因為他們需要將大量的時間與精力傾
    的頭像 發(fā)表于 09-13 16:45 ?1513次閱讀
    <b class='flag-5'>狀態(tài)機</b>自動生成工具FSME

    什么是狀態(tài)機?狀態(tài)機的種類與實現(xiàn)

    狀態(tài)機,又稱有限狀態(tài)機(Finite State Machine,F(xiàn)SM)或米利狀態(tài)機(Mealy Machine),是一種描述系統(tǒng)狀態(tài)變化的模型。在芯片設(shè)計中,
    的頭像 發(fā)表于 10-19 10:27 ?9863次閱讀