多工序顺序控制用状态机最清爽。本课用 switch 把「待机→运行→报警→复位」组织起来,比一堆触点清晰得多。
工序一多,梯形图就是一排并联自锁,画到眼花。换成状态机的思路:记住现在在第几步,来一个命令就前进一步。用 C 的 switch,工序表一目了然。
拿四步小工序举例:待机、运行、暂停、完成。编号 0 到 3,转一圈回到 0。当前状态存 HD1,来一个触发就加一,取余四,就这么转起来。
C 里用 switch 状态编号:等于 1 是运行,等于 3 是完成。每个 case 只管自己那一段,互不打扰。比梯形图那一大堆自锁支路,清爽太多了。
命令不能一直连着就狂跳步——按住不动,状态得只进一步。所以触发要走上升沿:只有从断到通那一拍算一次。这正是上节课边沿检测的用武之地。
对外只给两个信号:active 表示正在运行或暂停,done 表示已到完成。梯形图读这两个位就知道工序走到哪,不用去解内部那几个状态。
状态机就三句话:记住现在第几步,来上升沿就前进一步,每一步只驱动自己的输出。工序想加就加一个 case,梯形图不用拆了重画。