PLC
直播中

kmno4

12年用户 992经验值
私信 关注

怎样同时用LAD和ST语言去描写状态机

怎样用LAD语言表达状态机?
怎样用ST语言表达状态机?
怎样同时用LAD和ST语言去描写状态机?

回帖(1)

孔德羲

2021-9-30 15:05:01
  控制任务
  大家好,今天我们用状态机描述稍复杂的实例,同时用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为初始状态。其它的比较简单.
举报

更多回帖

发帖
×
20
完善资料,
赚取积分