鸿信自动化 ST/C 语言模块 指令讲堂 资料下载 第 5 课
C 语言模块 · 第 5 课 高级

状态机:用 switch 组织工序

6 段 · 共 1:14 · 数字人讲师示范 · 完全免费

多工序顺序控制用状态机最清爽。本课用 switch 把「待机→运行→报警→复位」组织起来,比一堆触点清晰得多。

正在加载数字人讲师…
讲师模型较大(约 87MB),首次打开需要等待。加载完后数字人会自动开始讲解,这段时间可以先往下读讲稿。
已等待 0 秒
等待中… 在仿真器里打开

本课讲稿

1/6为什么要状态机0:13

工序一多,梯形图就是一排并联自锁,画到眼花。换成状态机的思路:记住现在在第几步,来一个命令就前进一步。用 C 的 switch,工序表一目了然。

2/6四个状态一条线0:14

拿四步小工序举例:待机、运行、暂停、完成。编号 0 到 3,转一圈回到 0。当前状态存 HD1,来一个触发就加一,取余四,就这么转起来。

3/6switch 一个分支一个状态0:12

C 里用 switch 状态编号:等于 1 是运行,等于 3 是完成。每个 case 只管自己那一段,互不打扰。比梯形图那一大堆自锁支路,清爽太多了。

4/6触发要走上升沿0:13

命令不能一直连着就狂跳步——按住不动,状态得只进一步。所以触发要走上升沿:只有从断到通那一拍算一次。这正是上节课边沿检测的用武之地。

5/6active 和 done 两个输出0:11

对外只给两个信号:active 表示正在运行或暂停,done 表示已到完成。梯形图读这两个位就知道工序走到哪,不用去解内部那几个状态。

6/6小结:记住、步进、驱动0:11

状态机就三句话:记住现在第几步,来上升沿就前进一步,每一步只驱动自己的输出。工序想加就加一个 case,梯形图不用拆了重画。