PLC状态机编程第二篇-负载均衡
控制任务
大家好,今天我们用状态机描述稍复杂的实例,同时用LAD和ST语言写状态机.我们的控制任务如下:
真空泵A和真空泵B, 按下启动按钮后, 泵A启动, 3秒后泵B也启动, 此时泵A仍运行, 当容器真空达到后, 泵B停止, 泵A继续运行, 维持容器真空. 当按下停止按钮后, 泵A停止. 再次按启动按钮, 泵B启动, 3秒后泵A也启动, 此时泵B仍运行, 当容器真空达到后, 泵A停止, 泵B继续运行, 维持容器真空. 当按钮停止按钮后, 泵B停止.
注意: 任何状态按下停止按钮, 都停止, 在按启动后, 切换泵的顺序.
首先,我们写画状态机.

注意其中两个中间变量:isActivatedPumpAB和lastPumpA. lastPumpA 是记录泵的启动顺序,而isActivatedPumpAB保证每次任务,PumpAB只激活一次.另外Idle状态到PumpA和PumpB少了一个条件,这里我不想修改图片,直接文字说明一下,应改为
[start && ~stop && ~lastPumpA] 和 [start && ~stop && lastPumpA].
用LAD表达状态机

程序段1到程序段5代表每个状态, 每个状态用一个SR指令表示,S管脚是转移到此状态的条件,R管脚代表当有其它状态激活时,就把当前状态复位掉,一面有状态同时激活.
状态机就这么简单.

LAD的表达上,有两点需要注意,每个状态机需要一个默认的激活步,我们选Idle,那么stateIdle默认是true状态. 每个步的复位条件,必需RLO上升严,否则不会转移..
用SCL表达状态机


用SCL表达的状态机中,用case语句表达状态的转移.这里我们还是看stateIdle状态,其中的两个IF,是两个转移条件.#mainState中的值代表当前激活状态,它一共可以取4个值,代表4个状态,这里我用常量表示..另外注意初始状态,我们给#mainState的值初始化为0,代表stateIdel为初始状态.其它的比较简单.
PLC状态机编程第二篇-负载均衡的更多相关文章
- PLC状态机编程第一篇-状态机介绍
状态机的一般概念 过去我在学习PLC编程时,看的大部分书仅仅停留在软件的操作上,没有真正讲述如何组织程序,这里我们讲一个通用的描述控制算法的方法,就是状态机,和SFC很类似,其实SFC也是源于状态机啦 ...
- .net排坑篇:负载均衡域名转发的背后
背景 昨天因客户私有部署问题,需要到客户公司去排查问题. 他们是一家外企,各种权限需要提前申请(最大的坑).他们之前部署的一般为单域名,很少部署互联网类型多个域名的情形(第二个坑).这次私有部署总计使 ...
- PLC状态机编程-如何在STL中使用状态机
搞PLC编程多年,一直不知道状态机,学习matlab后,发现状态机编程异常方便,过去很多编程时的疑惑豁然开朗起来.今天跟大家分享一下如何在STL中使用状态机. 下面是用状态机描述的控制任务. 这个状态 ...
- .net core使用ocelot---第六篇 负载均衡
简介 .net core使用ocelot---第一篇 简单使用 .net core使用ocelot---第二篇 身份验证 .net core使用ocelot---第三篇 日志记录 .net core ...
- nginx入门篇----负载均衡策略
负载均衡策略 负载均衡策略:内置策略和扩展策略. 内置策略包括:轮询.加权轮询.IP hash:扩展策略包括:url hash.fair等 策略详细介绍 轮询:对前端的访问逐一分流到后端网络节点,类似 ...
- PLC状态机编程第六篇-优化PLC程序生成
还记得第一篇博客中,我们在状态机中手写上升沿来处理有别于传统的一键启停程序,那个手写的上升沿就是优化手段.stateflow状态机是带事件的,事件本身支持上升沿和下降沿等事件,在这里,如果我们选择用事 ...
- PLC状态机编程第五篇-状态机自动生成PLC程序
这篇比较简单了,我就直接上图了,不多废话. 一.选择求解器,一定要选择定步长的. 二.右击Chart状态机,出现图上菜单 三.左边红色的勾选择,选择右侧的菜单,然后点击Generate Code按钮, ...
- PLC状态机编程第四篇-历史状态处理
今天我们接着上次的控制任务,加入历史状态,这个任务会比较复杂,象这样的任务我们倾向于自动生成PLC程序,自己写容易出错.但为了演示,我们可以尝试一下.言归正传,下面是我们的控制任务. 控制任务 这次的 ...
- PLC状态机编程第三篇-RS信号处理
我们今天简要介绍RS指令在状态机中怎么处理的.有些设备按下停止按钮后,没有马上停止,而是到原点后才停止,那么这种情况在状态机中如何表示呢?我们以案例说明之,下面是我们的控制描述. 控制描述 小车从左位 ...
随机推荐
- #CSS的盒子模型、元素类型
CSS的盒子模型.元素类型 本文首先介绍了CSS元素的统一内部结构模型,盒子模型:然后介绍了CSS元素基于不同分类标准定义的元素类型,包括基于不同内容设置方式定义的replaced元素和non-r ...
- 云集微助手安装教程和授权说明old
安装教程 一 .手机越狱(如果已经越狱请跳过此步,直接进行第二步) 越狱教程:http://jailbreak.25pp.com/yueyu/ 二 .安装触动精灵(如果你已安装触动精灵最新版请跳过此步 ...
- 数据仓库是什么?OLTP和OLAP是什么?
数据仓库(Data Warehouse)是一个面向主题的(Subject Oriented).集成的(Integrate).相对稳定的(Non-Volatile).反映历史变化(Time Varian ...
- 数组k平移三种方法(java)
上代码,本文用了三种方法实现,时间复杂度不一样,空间复杂度都是o(1): public class ArrayKMove { /** * 问题:数组的向左k平移,k小于数组长度 * @param ar ...
- System Center Configuration Manager 2016 配置安装篇(Part1)
SCCM 2016 配置管理系列(Part 1- 4) 介绍AD01上配置了Active Directory域服务(ADDS),然后将Configuration Manager服务器(CM16)加入到 ...
- 类似LCS,构成目标单词(POJ2192)
题目链接:http://poj.org/problem?id=2192 解题报告: 1.类似最长公共子序列,dp[i][j]表示用s1前i个字符和s2前j个字符来构成目标单词的一部分,是否成功 2.状 ...
- 打表格,字符串处理,POJ(2136)
题目链接:http://poj.org/problem?id=2136 水题WA了半天,结果是数组开小了. #include <stdio.h> #include <string.h ...
- DFS+BFS(POJ3083)
题目链接:http://poj.org/problem?id=3083 解题报告:这个题目,搜最短路,没有什么问题.优先走左边,走右边,有很多说法,思路大概都相同,都是记录当前朝向,根据数学公式(i+ ...
- vuejs给组件绑定原生事件
给组件绑定事件,该事件是自定义的事件 <div id='root'> <child @click='handleClick'></child> </div&g ...
- Python-三元运算符和lambda表达式
一.三元运算符 #当满足条件1时,res=值1:否则res=值2 res = 值1 if 条件1 else 值2 举例说明: res=10 #简单的if else语句 if abs(res)>0 ...