西门子博图编程:PLC状态机(一)状态机介绍

本文介绍了状态机在PLC编程中的使用,通过MATLAB描述控制任务,展示了如何用STL和ST语言实现状态机。状态机提供了一种组织程序结构的有效方法,特别是对于复杂的控制逻辑,能降低出错率并提高代码可读性。文中通过启保停电路的例子,解释了状态机的概念,并扩展到一键启停电路,讨论了并行状态的处理。状态机的表示方式包括梯形图和ST语言,对于复杂的机器,可以借助工具自动生成SCL代码,简化编程工作。

搞PLC编程多年,一直不知道状态机,学习matlab后,发现状态机编程异常方便,过去很多编程时的疑惑豁然开朗起来。
下面是用状态机描述的控制任务。
在这里插入图片描述
这个状态机较简单,那如何在STL中把它描述出来呢? 这里我们选择用JL指令…,我就直接上代码了,一看便知。但JL程序只能用来表示单步状态,遇到并行状态就处理不了了…,后面用ST语言来描述更复杂的状态机。

       L     #state     //  把#state的值载入累加器
       JL    rng1       // 如果累加器的值,大于4,也就是说,跳转分支不包含下面的分支,
                           就跳转到rng1,说明出错。其实这条语句相当于 else 语句
       JU    st0    // 当累加器的值为0时, 走这个分支
       JU    st1    // 当累加器的值为1时, 走这个分支
       JU    st2    // 当累加器的值为2时, 走这个分支
       JU    st3    // 当累加器的值为3时, 走这个分支
       JU    st4    // 当累加器的值为4时, 走这个分支
rng1: SET
      S     #error
      BEU
st0:  L     1                      // 这个 1 就是下个状态。
      A     #transition01         // 这个转移条件满足,状态将由state0,转移到 state1,
                                     下面的流程类似。。。
      JC    next
      JU    ovr
st1:  L     2
      A     #transition12
      JC    next
     
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值