还记得第一篇博客中,我们在状态机中手写上升沿来处理有别于传统的一键启停程序,那个手写的上升沿就是优化手段。stateflow状态机是带事件的,事件本身支持上升沿和下降沿等事件,在这里,如果我们选择用事件来作沿触发,会导致程序不可读,很复杂,所以我们手写上升沿,保证了程序的简洁。请看下图。

那么我们不用它的上升沿,如何处理需要上升沿的情况。我们手写一个,请看下图。

在stateflow中新添加三个local变量,都是bool型的。tempStop是保持上次的stop值,risingTrigStop是上升沿,fallingTrigStop是下降沿。Stop状态中的转移条件我们把〔stop〕换为〔risingTrigStop〕,直接用上升沿了。

我们知道状态机分为三种类型, Moore和Mealy状态机,还有就是他们的混合状态机。Moore状态机就是输出只跟当前状态相关,比如当前状态是Set,那么只能在Set状态中来控制输出。Mealy状态机呢,可以在转移条件上输出,请看下图。

这种类型的状态机生成的程序会复杂,不大好理解。当然我们在matlab中,也不可能真正设置成Moore状态机,Moore状态机限制很大,en,du,ex等指令就无法使用,那么我们的上升沿也就无法使用。然后继续下面的设置。

自此,我们的状态机优化完成,生成的程序和自己写的很接近,效率很高了。但也牺牲了很多特有的功能,比如状态机的事件,不过好像事件在PLC里用途不是很大。。

到现在我们把状态机介绍的差不多了,状态机中还有很多强大的功能,需要进一步学习stateflow。

转载于:https://www.cnblogs.com/TomDing/p/7154490.html

PLC状态机编程第六篇-优化PLC程序生成相关推荐

  1. 汇川技术小型PLC梯形图编程系列教程(三):PLC系统程序与用户程序介绍

    原文链接:汇川技术小型PLC梯形图编程系列教程(三):PLC系统程序与用户程序介绍 PLC的定义 可编程逻辑控制器是种专门为在工业环境下应用而设计的数字运算操作电子系统.它采用一种可编程的存储器,在其 ...

  2. PLC状态机编程(沿指令使用注意事项)

    有关PLC的状态机编程详细内容,请参看下面的文章链接: PLC面向对象编程系列之有限状态机(FSM)详解_RXXW_Dor的博客-CSDN博客_plc面向对象编写PLC控制机器动作类程序时,当分支比较 ...

  3. 山西台达plc可编程控制器_什么是PLC,什么是可编程控制器,快速了解PLC常识和应用...

    一.简述 多年来,可编程控制器(以下简称PLC)从其产生到现在,实现了接线逻辑到存储逻辑的飞跃:其功能从弱到强,实现了逻辑控制到数字控制的进步:其应用领域从小到大,实现了单体设备简单控制到胜任运动控制 ...

  4. Windows界面编程第八篇 listbox彩色显示隔行变色

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 本文配套 ...

  5. 博途PLC 1200/1500PLC MODBUS-RTU通讯优化(状态机编程)

    博途MODBUS-RTU通信详细设置可以参看下面这篇文章,本篇文章给出MODBUS轮询的优化写法(基于状态机编程).限于本人能力和水平,文中难免出现错误和不足之处,诚恳的欢迎大家批评指正,同时感谢大家 ...

  6. 博途PLC 1200/1500PLC ModbusTcp通信之状态机编程

    状态机的详细讲解大家可以参看专栏的其他文章,这里不在赘述.这篇博文直接给出状态机编程的代码和讲解. PLC面向对象编程系列之状态机(FSM)详解_RXXW_Dor的博客-CSDN博客_plc 状态机编 ...

  7. weinview触摸屏编程软件_新手学习plc编程应该怎么做,老司机教你六招,轻松入门...

      作为初学者应该怎么去学习plc编程,从哪些方面下手比较好,这里个大家一点建议. 一.多收集程序范例.增加编程经验         收集一些别人做好的范例程序,用心去学习理解,想想别人为什么这么写, ...

  8. PLC可编程控制器控制热水供暖循环系统实训

    目前在我国采用集中供热方式的用户占有非常大的比重.而现在有许多供热站采用传统的手动阀位控制,人工值守的方式.随着我国自动七水平的快速提高,最近10年内大量的传统人工值守供热站已经陆续改造成无人值守,远 ...

  9. 不用在PLC内编程,实现西门子与罗克韦尔(AB)PLC之间数据通讯

    智能网关IGT-DSER支持多点对多点的设置之间通讯,支持以太网,串口设备混合数据交换:无需编程开发,只须配置数据的起始地址和数量即可,支持热插拔,断电重启后自恢复运行,在实际的工程项目中应用方便. ...

最新文章

  1. Leetcode每日必刷题库第1题,如何实现两数之和?
  2. Docker 入门到实践笔记1
  3. TCP请求发送和接收,如果接收端终止,发送端继续发送会出什么错
  4. 【ArcGIS风暴】ArcGIS添加超链接的两种方法详解
  5. php mysql xa事务_XA mysql php 分布式事务
  6. Log4j CVE-2021-44228后续-CVE-2021-45046,CVE-2021-45105
  7. python网络爬虫学习笔记(四):异常处理
  8. 真正的焦虑感来自对比
  9. Codeforces 831 A Unimodal Array
  10. soc 设计soc设计 uml实务手册_芯片设计进阶之路——SOC电源管理系统
  11. 计算机冰雪世界教案,教案有趣的冰
  12. 华芯微特SWM220R8T7-LQ64-22100最小系统板测试版开发板面包板
  13. 基于Pytorch的MNIST手写数字识别实现(含代码+讲解)
  14. 怎么建立win7无线热点
  15. 人成长中必须知道的20个故事
  16. C++实现高斯坐标的正反算
  17. 和风天气API 版本6和版本7
  18. “圣母”程心VS“暴君”维德
  19. 所有网站都通用的自定义弹出框alert
  20. 私域生态中的“消费者共创”:超级用户如何让Lego重焕生机

热门文章

  1. CSDN《老友记》简记
  2. 开源数字媒体资产管理系统:Razuna安装方法
  3. python tkinter text改变文本字体颜色_Python3 tkinter基础 Button text,fg 按钮上显示的文字 文字的颜色...
  4. redis php教程pdf,ThinkPHP中简单使用Redis
  5. ACM-ICPC常用模板更新
  6. JavaScript数组的声明及使用(1)
  7. linux 7 路由命令,CentOS7路由、端口和服务排障常用命令
  8. [leetcode双周赛]5312. 大小为 K 且平均值大于等于阈值的子数组数目
  9. TCP和UDP协议的特点和区别详解
  10. 贪心法——LeetCode 402 移除K个数字