3. 产线常见状态定义

状态机设计的第一步不是画转移箭头,而是把每个状态的语义和边界说清楚。产线设备上常见的状态名称看似直观,实际在工程中经常被混用:有人把“停机”当成“断电”,有人把“待机”当成“就绪”,有人把“报警”和“急停”都归为“故障”。这些混淆会直接导致状态机出现死锁、误转移或安全漏洞。本节逐一界定八个核心状态的语义、进入条件、退出条件与边界,并给出可直接用于状态机编码的判定依据。

停机(Stopped):能量已切断的静止态

停机的语义是:设备主回路已断电或动力源已隔离,所有执行机构处于无动力静止状态,控制系统可以保留低压供电用于状态显示和通信。停机的关键边界是“能量隔离”,而不是“没有动作”。一台设备可能因为等待物料而静止,但它仍处于待机而非停机。停机的进入条件通常是操作员按下主电源断开、维护开关打到“隔离”位,或安全回路触发后由系统执行受控下电。退出停机只能通过人工上电或复位上电流程,不允许自动恢复。在状态机中,停机应作为最高优先级的安全状态之一,任何自动转移都不能绕过它。

待机(Standby):已上电、已就绪、等待启动

待机的语义是:设备已完成上电自检,安全回路正常,气源、液压、伺服使能等辅助条件满足,程序停在初始步,等待启动指令。待机与停机的边界在于“动力已就绪但未输出”。待机与自动运行的边界在于“是否收到启动命令并进入循环”。待机状态下,输出点应全部处于安全默认值,例如气缸退回、电机使能但零速、加热关闭。待机的进入条件包括:上电自检通过、无未复位报警、急停回路闭合、维护开关在“运行”位。退出待机有两个方向:收到启动命令进入自动运行,或收到手动请求进入手动运行。若自检失败或安全条件不满足,应转入报警而非停留在待机。

自动运行(Auto Running):按节拍循环执行

自动运行的语义是:设备按照预设程序循环执行动作序列,节拍由内部时序或外部触发驱动,操作员不直接干预单步动作。自动运行的关键边界是“程序控制权在PLC/控制器,且处于连续循环”。进入条件:处于待机、无报警、启动命令有效、模式选择开关在“自动”位。退出条件包括:完成当前循环后收到停止命令、触发报警、急停按下、模式切换到手动、或维护请求。自动运行中允许存在“暂停”子状态,但暂停不应等同于待机,因为暂停时程序步可能停在中间位置,输出可能保持,重新启动应从暂停点继续而非从头开始。这一点在状态机设计中必须用独立状态或子状态表达,否则会出现“暂停后回原点”的误动作。

手动运行(Manual Running):人工控制单动作

手动运行的语义是:操作员通过HMI、按钮盒或示教器直接控制单个执行机构,程序不执行自动循环。手动运行的关键边界是“控制权在人,且一次只允许一个或一组受控动作”。进入条件:设备处于待机或暂停,模式开关切到“手动”,且安全条件满足。手动运行中必须禁止自动启动,同时应限制速度、力矩或行程,例如手动模式下伺服限速到额定速度的10%,气缸采用点动。退出条件:切回自动模式并回到待机、或触发报警/急停。手动运行与维护的边界在于“是否打开安全门或进入受限空间”。若维护人员需要进入设备内部,应从手动运行转入维护状态,而不是继续在手动模式下操作。

报警(Alarm):可恢复的异常提示

报警的语义是:系统检测到异常条件,已停止自动循环或禁止启动,但安全回路仍完整,设备处于可控停止状态。报警的关键边界是“异常可被复位,且不需要人工进入危险区域”。典型报警包括:物料缺失、气压低、伺服过载、通信超时、温度超限。报警的进入条件由传感器或程序监控触发。报警状态下,输出应进入安全停止逻辑,例如关闭加热、停止进给、保持夹紧。退出报警的唯一路径是“排除原因+复位”。复位按钮应只清除报警锁存,不直接启动设备;复位后应回到待机,由操作员重新发出启动命令。报警与急停的边界在于:报警不切断安全回路,急停切断安全回路。

急停(Emergency Stop):安全回路断开的强制态

急停的语义是:操作员按下急停按钮或安全回路断开,设备所有危险动作被立即切断,安全回路处于断开锁存状态。急停的关键边界是“安全回路物理断开,且必须人工复位”。急停进入条件:急停按钮按下、安全门打开、光幕遮挡、安全继电器动作。急停状态下,动力输出应被硬件切断,而非仅靠软件停止。退出急停必须满足:急停按钮旋起、安全门关闭、光幕恢复、安全继电器复位,然后执行复位操作。急停复位后不应自动进入自动运行,而应回到待机或停机,由操作员确认安全后重新启动。急停与报警的边界在于:急停是安全功能,报警是过程监控;急停不允许被软件屏蔽,报警可以根据工艺条件做有限抑制。

复位(Resetting):从异常回到就绪的过渡态

复位的语义是:系统正在执行清除报警、回原点、恢复初始位置或重新使能的动作序列。复位是一个过渡状态,不是稳态。复位的关键边界是“正在执行恢复动作,尚未就绪”。进入条件:操作员按下复位按钮,且急停已释放、安全条件满足。复位过程中,设备可能执行回原点、清料、复位气缸等动作,这些动作必须处于安全速度和安全方向。复位完成条件:所有轴回到原点、所有报警清除、所有输出处于初始值。复位成功后转入待机;复位失败或超时应转入报警。复位与待机的边界在于:待机是稳态,复位是过渡态;复位中不允许启动自动循环。

维护(Maintenance):进入受限空间的服务态

维护的语义是:设备已进入服务模式,安全门可能打开,人员可能进入设备内部,动力被隔离或限制,控制系统允许特定维护操作。维护的关键边界是“人员进入危险区域,安全回路可能被旁路或切换到维护模式”。进入条件:设备停止、模式开关打到“维护”、安全门打开、维护钥匙开关动作。维护状态下,自动运行和手动运行都应被禁止,只允许维护专用的点动、单步或参数调整功能,且这些功能必须由维护人员持续按压使能。退出维护必须满足:人员撤离、安全门关闭、维护钥匙复位、执行复位流程。维护与停机的边界在于:停机是能量隔离但人员不一定进入;维护是人员进入且需要特殊安全策略。

产线八状态语义与边界关系图 实线=正常转移 红色=安全强制 绿色=复位恢复 橙色=模式切换 停机 Stopped 能量隔离 · 无动力静止 退出:人工上电 待机 Standby 已上电 · 已就绪 · 等待启动 输出安全默认值 自动运行 Auto 程序控制 · 连续循环 暂停≠待机 手动运行 Manual 人工控制 · 单动作 限速 · 点动 报警 Alarm 可恢复异常 · 安全回路完整 复位后回待机 急停 E-Stop 安全回路断开 · 硬件切断 人工复位 · 不自动恢复 复位 Resetting 过渡态 · 回原点/清报警 成功→待机 失败→报警 维护 Maintenance 人员进入 · 安全门打开 禁止自动/手动 上电自检通过 启动命令 停止/循环结束 模式切手动 切回自动 自检失败 复位按钮 复位成功 复位失败/超时 急停释放后复位 安全回路断开 安全门打开 撤离后复位 关键边界速查: 停机↔待机:能量是否隔离 | 待机↔自动:是否收到启动并进入循环 | 自动↔手动:控制权在程序还是人 报警↔急停:安全回路是否断开 | 复位是过渡态非稳态 | 维护:人员是否进入危险区域 | 暂停≠待机,需独立子状态

状态边界判定的工程实现

把上述语义落到状态机代码时,建议为每个状态定义三个要素:进入动作(entry action)、退出动作(exit action)和转移条件(transition guard)。以“待机→自动运行”为例,转移条件应写成:mode == AUTO && startCmd == TRUE && alarmLatched == FALSE && eStopOK == TRUE && maintenanceKey == FALSE。其中 alarmLatched 必须由复位流程清除,不能由启动命令直接清除。再以“自动运行→报警”为例,转移条件应包含:anyAlarmActive == TRUE,进入报警后执行 stopCycle(); safeOutputs();,退出报警只能通过 resetCmd 且 alarmCause == CLEARED。

一个常见的实现错误是把“暂停”做成待机的子状态。假设自动运行到第5步时按下暂停,若状态机转入待机,待机的进入动作可能执行“输出归零、程序回初始步”,重新启动就会从第1步开始,造成工件报废或机械干涉。正确做法是定义独立的“暂停”状态,进入时保持当前步和输出,退出时从暂停点继续。暂停与待机的边界可以概括为:待机是“程序在起点、输出安全”,暂停是“程序在中间、输出保持”。

安全边界提醒:急停和报警不能共用同一个复位按钮逻辑。急停复位必须经过安全继电器确认,且复位后只能回到待机或停机;报警复位可以清除锁存并回到待机。若把两者合并,可能出现“按下复位后设备直接自动启动”的危险行为。维护状态必须与手动运行严格区分,维护钥匙开关应作为硬件信号接入安全回路,而不是仅靠HMI上的模式选择。

状态语义对照速查

状态核心语义进入条件退出条件安全回路
停机能量隔离、无动力静止主电源断开/维护隔离人工上电可断开
待机已上电就绪、等待启动自检通过、无报警、急停OK启动/切手动/自检失败闭合
自动运行程序控制、连续循环待机+启动+自动模式停止/报警/急停/切手动闭合
手动运行人工控制单动作待机+手动模式+安全条件切回自动/报警/急停闭合
报警可恢复异常、可控停止传感器/程序监控触发排除原因+复位闭合
急停安全回路断开、硬件切断急停按钮/安全门/光幕人工复位+安全确认断开
复位过渡态、回原点/清报警复位按钮+安全条件满足成功→待机;失败→报警闭合
维护人员进入、服务模式停止+维护开关+安全门打开撤离+关门+钥匙复位+复位可能旁路

这张对照表可以直接作为状态机设计评审的检查清单。评审时逐行确认:进入条件是否可被程序可靠检测、退出条件是否唯一且无歧义、安全回路状态是否与状态语义一致。尤其注意“维护”行的安全回路可能被旁路,这意味着维护状态下的任何动作都必须由维护人员持续使能,且不能存在自动循环路径。把八个状态的语义和边界固定下来之后,后续的转移图、代码实现和测试用例才有共同的语言基础。