搞PLC编程多年,一直不知道状态机,学习matlab后,发现状态机编程异常方便,过去很多编程时的疑惑豁然开朗起来。今天跟大家分享一下如何在STL中使用状态机。

下面是用状态机描述的控制任务。

这个状态机较简单,那如何在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

L     3
       A     #transition13
       JC    next
       JU    ovr

st2:  L     4
       A     #transition24
       JC    next
       JU    ovr

st3:  L     1
       A     #transition31
       JC    next
       JU    ovr

st4:  L     3
       A     #transition43
       JC    next
       JU    ovr

next: T     #state
ovr:  NOP 0

PLC状态机编程-如何在STL中使用状态机的更多相关文章

  1. C++ STL中Map的相关排序操作:按Key排序和按Value排序 - 编程小径 - 博客频道 - CSDN.NET

    C++ STL中Map的相关排序操作:按Key排序和按Value排序 - 编程小径 - 博客频道 - CSDN.NET C++ STL中Map的相关排序操作:按Key排序和按Value排序 分类: C ...

  2. STL中实现 iterator trail 的编程技巧

    STL中实现 iterator trail 的编程技巧 <泛型编程和 STL>笔记及思考. 这篇文章主要记录在 STL 中迭代器设计过程中出现的编程技巧,围绕的 STL 主题为 (迭代器特 ...

  3. PLC状态机编程第六篇-优化PLC程序生成

    还记得第一篇博客中,我们在状态机中手写上升沿来处理有别于传统的一键启停程序,那个手写的上升沿就是优化手段.stateflow状态机是带事件的,事件本身支持上升沿和下降沿等事件,在这里,如果我们选择用事 ...

  4. STL中list用法

    本文以List容器为例子,介绍了STL的基本内容,从容器到迭代器,再到普通函数,而且例子丰富,通俗易懂.不失为STL的入门文章,新手不容错过! 0 前言 1 定义一个list 2 使用list的成员函 ...

  5. 服务化改造实践 | 如何在 Dubbo 中支持 REST

    什么是 REST REST 是 Roy Thomas Fielding [[1]](#fn1) 在 2000 年他的博士论文 [[2]](#fn2) “架构风格以及基于网络的软件架构设计” 中提出来的 ...

  6. C++ STL中哈希表Map 与 hash_map 介绍

    0 为什么需要hash_map 用过map吧?map提供一个很常用的功能,那就是提供key-value的存储和查找功能.例如,我要记录一个人名和相应的存储,而且随时增加,要快速查找和修改: 岳不群-华 ...

  7. STL 中的map 与 hash_map的理解

    可以参考侯捷编著的<STL源码剖析> STL 中的map 与 hash_map的理解 1.STL的map底层是用红黑树存储的,查找时间复杂度是log(n)级别: 2.STL的hash_ma ...

  8. STL中的map和hash_map

    以下全部copy于:http://blog.chinaunix.net/uid-26548237-id-3800125.html 在网上看到有关STL中hash_map的文章,以及一些其他关于STL ...

  9. 如何正确的使用json?如何在.Net中使用json?

    什么是json json是一种轻量级的数据交换格式,由N组键值对组成的字符串,完全独立于语言的文本格式. 为什么要使用json 在很久很久以前,调用第三方API时,我们通常是采用xml进行数据交互,但 ...

随机推荐

  1. Active Directory 域服务对象

    局域网计算机控制中心 可以在DC上控制所有局域网资源(计算机 .用户.设备) 大中型企业管理必备. 最后,它还可以让开发人员集成LDAP身份认证,使用域账号登录应用. 也就是说,此企业的所有系统,都可 ...

  2. Python built-in 函数

    一.abs(x) 说明:返回绝对值 参数可以是:负数.正数.浮点数或者长整形 实例: abs(-1.2) #返回 1.2 abs(1.2) #返回 1.2 abs(-11216.5) #返回 1121 ...

  3. SSIS 错误代码 DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER

    [OLE DB 源 [2]] 错误: SSIS 错误代码 DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER.对连接管理器“test.trade_sh ...

  4. 根据tomcat日志查找想要的错误日志

    1.首先要记得程序报的错误信息 我的错误信息是[2015接收的参数中有空值],对应程序中的返回值是2015 以及出现错误信息的大致时间,我的大概是吃过午饭后,12:40-13:20之间 2.先去log ...

  5. apache管理命令

    常用的 httpd.exe -k [install(安装).uninstall(卸载).start(启动).stop(停止).restart(重启)] 说明:要执行命令,需进入到apache安装目录/ ...

  6. java分页三个类 PageBean ResponseUtil StringUtil

    package ssmy.page; /** * 分页类 * @author Jesse * */public class PageBean { private int page;//第几页 priv ...

  7. position:fixed相对父级元素定位而不是浏览器

    position:fixed默认是相对浏览器定位的 原理:fixed定位相对父级容器定位,不添加:top,bottom,left,right样式,通过margin定位 代码:http://jsbin. ...

  8. PHP Regex

    <?php //Accpet the http client request and generate response content. //As a demo, this function ...

  9. poi3.8随记

    System.out.println(sheet.getFirstRowNum());//结果是0 System.out.println(sheet.getLastRowNum());//如果一共有3 ...

  10. Lua相关函数整理

    1.asset(a==b,tipmsg);错误处理 2.pcall,xpcall,debug,保护函数执行,并且查看相关信息 3.collectgarbage()函数相关: collectgarbag ...