2. 产线启停过程的状态建模

产线启停控制的核心难点,不在于“按下启动按钮让电机转起来”,而在于让整条产线在启停过程中始终处于可预期、可判断、可干预的状态。要做到这一点,第一步不是写程序,而是把产线运行过程抽象成有限个离散状态,并明确每个状态之间的迁移条件。这就是产线启停过程的状态建模。

状态建模的本质,是把连续变化的物理过程(速度、张力、温度、位置)映射为控制器可以判断和调度的离散状态机。控制器在每个扫描周期读取输入信号,判断当前状态是否满足迁移条件,满足则切换到目标状态,并执行该状态对应的输出动作。这样,启停过程就不再是一串“凭经验写死的延时”,而是一张可验证、可排障的状态迁移图。

一、六个基本状态的划分依据

对于典型的连续输送类产线(如皮带输送、辊道输送、多工位同步线),启停过程通常可划分为六个基本状态:停机(Stopped)、启动(Starting)、爬坡(Ramping)、稳态(Steady)、减速(Decelerating)、急停(E-Stop)。划分依据不是时间长短,而是“速度给定方式”和“安全等级”两个维度。

  • 停机:速度给定为 0,所有驱动使能关闭,产线无物料流动。这是初始状态,也是正常停车的终点状态。
  • 启动:驱动使能打开,但速度给定仍为 0,处于“抱闸松开、转矩建立”的短暂时段。此状态用于确认各工位就绪信号、安全门锁、急停回路均正常。
  • 爬坡:速度给定从 0 按设定斜率上升到额定值。此状态是启停过程中最危险的阶段,因为张力、物料堆积、同步误差都在动态变化。
  • 稳态:速度给定等于额定值,各工位同步误差在允许窗口内,产线进入正常生产。
  • 减速:速度给定从额定值按斜率下降到 0,用于正常停车。
  • 急停:安全回路断开,驱动以最大减速度或自由停车方式停止,属于安全状态,优先级最高。

二、状态迁移条件的设计

状态迁移条件必须由“可测量的信号”构成,不能依赖操作员口头确认。以一条三段式输送线为例,假设额定线速度 v_rated = 0.5 m/s,爬坡斜率 a_up = 0.1 m/s²,减速斜率 a_down = 0.15 m/s²,同步误差窗口 ±3 mm。各迁移条件可设计如下:

迁移触发条件说明
停机 → 启动启动按钮按下 且 安全回路闭合 且 各工位就绪就绪信号包括变频器无故障、抱闸已松、物料检测正常
启动 → 爬坡驱动使能反馈为 ON 且 转矩建立完成(约 200 ms)避免在转矩未建立时给速度给定,防止溜车
爬坡 → 稳态实际速度 ≥ 0.95×v_rated 且 同步误差 ≤ 3 mm两个条件同时满足才进入稳态
稳态 → 减速正常停车按钮按下 或 生产计数到达正常停车路径
减速 → 停机实际速度 ≤ 0.02 m/s 且 抱闸已合确认完全停止后才切断使能
任意状态 → 急停急停回路断开 或 安全门打开无条件、最高优先级迁移

这里有一个容易被忽略的细节:爬坡 → 稳态的迁移条件必须同时检查速度和同步误差。如果只检查速度,可能出现“速度到了但同步误差超限”的情况,此时产线虽然速度正常,但物料已经在工位间堆积或拉断。因此,稳态的进入条件应设计为“速度达标 + 同步误差在窗口内 + 持续稳定 500 ms”,用持续时间过滤瞬时波动。

三、状态迁移图

下图给出上述六个状态及其迁移条件的完整关系。图中实线箭头表示正常启停路径,虚线箭头表示异常或安全路径,箭头旁标注的是迁移条件。

停机 Stopped 启动 Starting 爬坡 Ramping 稳态 Steady 减速 Decel 急停 E-Stop 启动按钮 + 安全回路闭合 使能反馈 ON + 转矩建立 v ≥ 0.95v_rated 且 同步误差 ≤ 3mm 正常停车按钮 / 计数到达 v ≤ 0.02 m/s 且 抱闸已合 急停回路断开 / 安全门打开 急停触发 急停触发 急停触发 正常启停路径 安全/异常路径 进入稳态条件

四、状态建模中的三个关键约定

第一,急停状态必须独立于正常状态机。急停不是“减速到停”的变体,而是安全回路直接切断驱动使能。在状态机中,急停应作为最高优先级的中断处理,任何状态检测到急停信号都必须立即跳转到急停状态,并执行抱闸、切断输出、置位故障标志。急停恢复后,不能自动回到原状态,必须经过“停机 → 启动”的完整路径重新启动。

第二,爬坡和减速的斜率要分开设定。很多现场把加速和减速用同一个斜率参数,这是不合理的。加速时物料从静止到运动,需要克服静摩擦和建立张力,斜率应偏小;减速时物料已有动能,斜率可以稍大,但过大可能导致物料前冲或堆叠。示例中 a_up = 0.1 m/s²、a_down = 0.15 m/s² 就是基于这个考虑。

第三,状态迁移要有“确认”环节。例如“减速 → 停机”不能只判断速度给定为 0,而要判断实际速度反馈 ≤ 0.02 m/s 且抱闸已合。否则可能出现给定为 0 但实际仍在惯性滑行时就切断使能,导致下次启动时位置偏移。

状态建模的成果不是一张图,而是一份可执行的“状态-条件-动作”表。每个状态对应一组输出动作(如使能、速度给定、抱闸控制),每个迁移对应一组判断条件。把这张表直接映射到 PLC 的 CASE 语句或状态机功能块,就能得到可运行、可排障的启停控制程序。

五、从状态模型到程序结构

在 PLC 中实现时,通常用一个整数变量 state 表示当前状态,用 CASE state OF 分支执行各状态动作,在每个分支内判断迁移条件并更新 state。例如:

CASE state OF
  0: (* 停机 *)
     drive_enable := FALSE;
     speed_ref := 0.0;
     IF start_btn AND safety_ok AND all_ready THEN
        state := 1;
     END_IF;

  1: (* 启动 *)
     drive_enable := TRUE;
     speed_ref := 0.0;
     IF enable_fb AND torque_ready THEN
        state := 2;
     END_IF;

  2: (* 爬坡 *)
     speed_ref := RAMP(v_rated, a_up);
     IF actual_speed >= 0.95*v_rated AND sync_err <= 3.0 THEN
        stable_timer := stable_timer + 1;
        IF stable_timer >= 500 THEN
           state := 3;
        END_IF;
     ELSE
        stable_timer := 0;
     END_IF;

  3: (* 稳态 *)
     speed_ref := v_rated;
     IF stop_btn OR count_reached THEN
        state := 4;
     END_IF;

  4: (* 减速 *)
     speed_ref := RAMP(0.0, a_down);
     IF actual_speed <= 0.02 AND brake_closed THEN
        state := 0;
     END_IF;
END_CASE;

(* 急停中断,最高优先级 *)
IF NOT safety_ok THEN
   state := 5;
   drive_enable := FALSE;
   speed_ref := 0.0;
   brake_close := TRUE;
   fault_flag := TRUE;
END_IF;

这段结构的关键在于:急停判断放在 CASE 之外,确保任何状态下都能立即响应;爬坡到稳态的迁移用 stable_timer 做 500 ms 持续确认,避免瞬时波动导致状态抖动;减速到停机同时检查实际速度和抱闸反馈,保证停稳后再切断使能。

状态建模完成后,调试的重点就从“调延时参数”变成了“验证迁移条件”。可以用强制变量逐条测试每个迁移条件是否按预期触发,也可以记录状态切换的时间戳,分析爬坡时间、稳态进入时间是否符合设计。这样,产线启停过程就从经验操作变成了可分析、可优化的工程对象。