PLC 离散顺序控制把按钮、传感器、限位和模式信号转换为执行器命令。它不只是“满足启动条件就置位输出”,还要明确动作如何开始、保持、切换和退出,并保证故障、模式切换及异常输入不会留下危险的内部状态。
从设备名称抽象控制结构
面对陌生机构,先识别控制结构,而不是按设备名称生搬模板。常见结构包括:
- 双向运动与两端限位:门、推杆、移载台等;重点是正反互锁、到位停止和反向切换。
- 多执行器顺序启停:多段输送、提升搬运等;重点是启动/停止次序、步骤中断和联锁消失后的处理。
- 阶段顺控:压装、冲压、夹紧加工等;重点是等待、准备、执行、返回等状态及其转换条件。
- 组合结构:先把机构拆成上述子结构,再定义它们之间的允许条件,避免强行套用某一整套旧程序。
需求可先整理为状态转换表:
| 当前状态 | 转换条件 | 下一状态 | 输出动作 | 异常或退出条件 |
|---|---|---|---|---|
| 等待 | 启动条件满足 | 动作中 | 执行器运行 | 停止、故障、联锁消失 |
| 动作中 | 到位反馈有效 | 已到位 | 停止执行器 | 超时或矛盾限位 |
| 已到位 | 下一工序条件满足 | 返回中 | 反向运行 | 安全信号触发 |
这种表达能暴露自然语言中的“保持若干秒”“恢复为 0 后”“任意时刻”“只有……才允许”等关键约束。
命令、反馈与显示不能混用
控制命令表示 PLC 希望设备做什么,反馈表示设备实际处于什么状态,两者必须分开:
开门命令 ≠ 开门到位反馈
电机使能命令 ≠ 电机实际运行反馈
自动模式状态 ≠ 自动动作正在执行
显示变量应按语义选择来源:
- “正在开门”取开门命令或经过确认的运行状态;
- “开门到位”取限位反馈;
- “自动模式”取模式状态;
- “电机运行”若没有实际运行反馈,只能明确标成“电机运行命令”,不能冒充真实状态。
否则会出现动作到位后命令复位、状态灯反而熄灭等错误。
执行器接口还可能用两个布尔量编码“是否运行”和“运行方向”,例如:
| 使能 | 方向 | 语义 |
|---|---|---|
| 0 | 任意 | 停止 |
| 1 | 1 | 正向运行 |
| 1 | 0 | 反向运行 |
此时方向位为 0 不等于停止,停机判据必须看使能位;反向命令也不需要另占一个物理方向输出。变量名若写成“电机转动”却实际表示方向,会诱发误判,宜改成“方向”或在 I/O 契约中明确真值表。若正、反请求同时存在,应先在命令层互锁,再生成唯一的使能与方向输出;仅靠方向位的编码不能解决冲突请求。
分层与单写入点
一种清晰的实现边界是:
物理输入/HMI输入
↓
输入合并与规范化
↓
模式、状态机、定时、联锁和故障逻辑
↓
内部控制命令
↓
统一输出映射
↓
物理输出/HMI状态
实体按钮和 HMI 操作可以先合并成统一的“执行请求”,再进入控制逻辑,例如:
开门请求 := 实体开门按钮 OR HMI开门按钮
同一个普通线圈或物理输出应尽量只有一个最终写入位置。PLC 按扫描顺序执行,多处普通赋值可能使后面的网络覆盖前面的结果;同一变量混用普通赋值与 S/R 写入,也会让最终状态难以推断。逻辑块宜写内部命令,输出映射块统一写物理输出。
物理 I/O 还可先映射到符号化数据层,使控制逻辑不依赖散落的绝对地址:
物理输入 → I/O 映射 → 符号输入 → 控制逻辑
控制逻辑 → 内部命令 → 输出映射 → 物理输出
这层映射是接口契约,不只是改名。替换对象卡、仿真平台或硬件地址时,应优先改映射而非重写业务逻辑;外部程序若按绝对地址通信,还必须单独核对数据块编号、偏移、访问方式和版本兼容性,不能仅凭符号名判断已连通。
多设备单元之间也应交换有业务含义的接口状态,而不是让一个单元直接读取另一个单元的原始传感器并自行猜测其状态。例如下游单元的“可接料/空闲”通常不只取决于入口传感器无料,还可能要求下游处于自动模式、无故障且未占用。应由下游根据自身状态统一生成许可位,上游只消费该许可:
下游自动模式 AND 无故障 AND 入口无料 AND 未占用
→ 下游可接料
上游有效运行步 AND 下游可接料
→ 允许启动上料
这种所有权边界能避免两边对“空闲”的定义逐渐不一致,也便于以后增加故障、缓冲区满等条件。若许可必须连续稳定一段时间才有效,定时应放在使用该许可的顺控层,输出映射层仍只负责传递最终命令。
在 TIA Portal 一类工程中,还要区分两种容易混淆的“变量”:
- PLC 变量表中的符号为物理地址命名,例如把某个
%I、%Q地址命名为传感器或执行器;符号名变得易读,但对象仍是物理 I/O。 - 全局 DB 中的变量是程序可读写的数据,可以作为输入镜像、内部状态、控制命令或外部接口;它不因名称与 PLC 变量表相同就自动建立映射。
因此,输入映射是把 PLC 变量表所指向的物理输入复制到 DB 输入镜像,输出映射则把 DB 中的最终命令写到物理输出。IOMap 只是常见块名,不是系统要求的固定机制;是否单独建块属于工程组织选择,但映射关系必须明确、唯一且每周期得到刷新。只根据对象卡地址可以建立物理 I/O 契约,却不能推导出全部内部变量;后者还取决于模式、动作、保持状态、到位条件、故障和人机接口等控制需求。
按职责划分数据块
将所有变量堆入一个 DB 虽然可能运行,却会混淆外部接口、内部状态和最终命令。更清晰的职责划分可以是:
| 数据类别 | 典型内容 | 推导依据 |
|---|---|---|
| 输入镜像 | 按钮、传感器、限位、允许信号 | 对象卡、电气说明和 I/O 表 |
| 输出命令 | 电机使能、方向、阀线圈、指示灯 | 执行器接口和输出表 |
| 单元内部状态 | 自动/手动模式、程序步、动作保持位、故障状态 | 任务流程和状态转换表 |
| HMI 命令/参数 | 启动请求、点动请求、设定值 | 画面操作与读写契约 |
| 统计与上位接口 | 周期、计数、运行时间、质量标志 | 报表或外部通信需求 |
这不是要求每一类必定建立一个 DB。小项目可以合并,但仍应通过结构体、命名和单写入点保持边界。设计顺序通常是:先由任务书和对象卡得到物理 I/O,再由模式、动作、触发、到位和异常退出推导内部状态,最后定义 HMI 与上位系统真正需要读写的接口。内部逻辑变量不能只从 I/O 表机械抄出。
状态步、入口准备与转换
阶段顺控中的一个程序步通常不只是“等待某个传感器”,还可能包含三类行为:
- 步内持续动作:维持本步需要的命令;
- 入口或预备动作:在转入下一步前,让夹爪、气缸等进入已知且安全的状态;
- 转换动作:到位并稳定后更新程序步。
例如“检测工件—张开夹爪—下降抓取”可用两个有明确目的的延时表达:先确认夹爪已准备,再允许机构下降。延时只能补充机械稳定时间,不能替代到位反馈;更稳妥的转换条件是“准备命令已发出且相应反馈到位”,并为不到位配置超时处理。
执行器预置到哪个状态不能照搬模板。应依据以下条件选择:
- 下一动作需要的姿态;
- 该姿态是否会碰撞工件或其他机构;
- 失气、断电时的机械默认位置;
- 到位反馈是否可靠;
- 切换时互斥命令能否先撤销。
把夹爪先闭合以消除“半开半闭”的未知状态,只有在空载、无碰撞且闭合安全时才成立;若初始状态或工艺要求张开,则应预置为张开。关键不是固定选择闭合或张开,而是通过反馈确认一个安全的确定状态,并保证相反线圈不会同时得电。
在既有顺控中做局部工艺修改
面对“只改变若干标注项、其余功能保持不变”的修改任务,先把新旧任务书逐句对照,再沿每个差异寻找其最小控制边界:动作入口、步转换条件、模式/故障处理、跨单元接口、统计或 HMI。不要因增加一个前置动作或延时就重写整条状态链。
常见的最小修改方式包括:
- 在原步骤内发出预备命令,并把相应到位反馈加入原转换条件;
- 在目标到位的步骤中撤销运动命令、启动 TON,定时完成后才切换下一步;
- 只有当新增阶段具有独立动作、退出与故障语义时,才新增程序步;
- 保持输出映射块不变,把工艺时序留在顺控层;
- 修改后反向搜索目标动作的全部写入路径,确认旧支路不能绕过新条件。
修改初始状态时,复位动作和复位完成判据必须一起变化。例如最终要求夹爪夹紧,不能只把复位命令改成夹紧而仍以“松开到位”宣布完成。是否需要“先松开再夹紧”属于具体机械工艺,不是可泛化模板;只有任务明确要求且碰撞风险可接受时才采用。
任务触发后应冻结本轮上下文
进料检测、启动按钮或类别选择通常只是任务的触发条件,不应在整个动作周期中持续充当流程条件。触发成立时,应锁存“任务执行中”以及本轮需要保持的类别、目标或配方;后续步骤读取这份任务上下文,完成、取消或故障时再统一清除。
空闲 AND 进料触发
→ 锁存任务执行中
→ 快照本轮类别
任务执行中 AND 本轮类别 AND 到位反馈
→ 推进后续动作
这样可避免触发信号释放后动作中断,也可避免操作者在运行中改变选择开关,导致同一物料中途改变流程。仅用当前位置判断任务完成同样不可靠:机构的初始位置可能已经满足“返回原位”,因此完成条件还必须受“任务确已开始”和前序步骤已经完成的阶段门控。
提示阶段也属于流程的一部分。完成灯、蜂鸣或保持计时应在前序动作完成后才使能,并在提示周期真正结束后再清除任务;若刚进入提示阶段就复位任务,上游条件消失会使定时器复位,提示可能只维持一个扫描周期。
保持命令必须设计完整退出路径
S/R 线圈适合保持跨扫描周期的动作,但每个置位都必须同时回答:
- 正常到位时由谁复位?
- 反方向请求出现时如何切换?
- 停止或允许条件消失时是否复位?
- 模式切换时是否清除旧模式命令?
- 故障时是否清除内部保持状态?
只清除物理输出并不充分。若内部命令仍为 1,故障解除或切回原模式后,设备可能立即恢复动作。故障处理通常应先清内部动作命令、程序步和必要的计时状态,再由统一输出映射自然撤销输出。
“设备不再动作”可能来自不同控制事件,退出语义不能混写:
| 事件 | 核心语义 | 通常需要处理 | 是否保留流程位置 |
|---|---|---|---|
| 停止 | 暂停当前生产 | 撤销危险输出与运行资格 | 由需求决定;要求续作时保留程序步和任务上下文 |
| 模式切换 | 转移控制权 | 清除退出模式的保持命令,阻止旧命令在切回时复活 | 由模式切换策略决定 |
| 急停/故障 | 安全打断 | 清除危险命令和复位辅助位,锁存故障,禁止解除后自动重启 | 通常进入明确的安全恢复路径 |
| 复位 | 主动返回已定义初态 | 先撤销旧流程,再受控驱动机构回位并检查反馈 | 完成后进入规定初始步 |
因此,“停止时一律把程序步清零”和“急停时只切断最终输出”都不是可靠的通用做法。实现前应把每个事件的动作清理、状态保留、恢复入口和重新启动条件写成状态转换或测试表。
双向动作还应满足:
- 正向与反向命令互斥;
- 正向到位禁止继续正向,反向到位禁止继续反向;
- 反向请求是否允许打断当前动作,应按任务要求明确;
- 两个互斥限位同时有效时,通常应停止并进入待确认故障,而不是猜测真实位置。
检查双向机构时,应把每个方向的启动许可、停止反馈和复位对象成对核对。开门命令应由“未到开门限位”许可并由“开门到位”终止;关门命令则对应关门限位。把反方向限位复制进来,可能使机构在初始端点无法启动,或到达目标端点后仍不停止。模式触点也要与网络语义逐项核对,避免“手动关门”网络因复制残留而引用自动模式。
复位应作为有完成判据的过程
复位不是“按下按钮时把几个线圈清零”,而是一段从未知或中间状态返回已定义安全初态的受控过程。点动启动只负责触发,独立的“复位进行中”状态负责跨扫描周期保持;开始复位时通常还应清除自动顺控步和与旧流程有关的保持命令。
复位完成条件必须覆盖需求规定的全部初态。例如要求移载机构在原点、升降气缸在上位且夹爪张开,就应在三个反馈均确认后才结束复位:
复位进行中
AND 原点反馈
AND 气缸上位反馈
AND 夹爪张开反馈
→ 复位完成并清除复位进行中
不能只用最早到位的一个机构结束复位,否则可能出现指示灯已经停止、控制资格已经恢复,但其他执行器仍在动作。复位指示宜直接由“复位进行中 AND 时钟位”产生,使显示与过程生命周期使用同一个真值来源。故障中断复位时,除了清除复位进行中,还要清除复位专用的辅助保持位和动作命令,防止故障解除后接续旧动作。
初态由任务和机械安全条件决定,不能把“先张开再闭合”等旧模板动作照搬为通用复位。尤其对双线圈执行器,复位期间应明确最终方向,撤销相反命令,并以到位反馈而非命令位作为完成证据。
自动连续与手动单步的步进边界
同一套程序步可以复用动作链,但自动与手动的推进语义应明确区分:自动模式可在转换条件满足后连续推进;手动模式通常由一次启动沿只授权一个动作阶段,动作命令再通过 S/R 或状态步保持到反馈到位。
手动流程末尾可设置“等待按钮释放”的过渡步:完成本轮后先进入该步,只有确认启动请求恢复为 0 才返回等待步。这样可防止 PLC 扫描速度快于人的松手动作,导致同一次长按或尚未释放的按键直接触发下一轮。若 HMI 和实体按钮已合并为统一请求,该释放判据也应针对统一请求,而不是只检查其中一个输入源。
定时、边沿与中断条件
常见时间语义需要分别实现:
- 连续保持后动作:条件持续满足一定时间,通常使用 TON;
- 到位后延时动作:到位状态作为定时使能;
- 动作保持:到位后进入保持步骤,计时结束再转下一步;
- 动作超时:命令发出但期限内未到位,置故障;
- 时间窗口:两个事件必须在规定间隔内发生;
- 恢复为 0 后动作:需要下降沿或明确的“曾经触发—已经释放”状态,不能只检测当前为 0。
IEC 定时器应按题目描述的时间语义选择,而不是只看预设时长:
| 需求语义 | 常用定时器 | 输出行为 |
|---|---|---|
| 条件连续成立一段时间后才动作、到位后保持再跳步、期限内未到位则报警 | TON |
IN 连续为 1 达到 PT 后 Q=1;IN 变 0 时通常清零 |
| 触发后立即输出固定时长,如短时提示或完成脉冲 | TP |
触发时 Q 立即为 1,保持 PT 后自动变 0 |
| 条件消失后仍继续输出一段时间 | TOF |
IN 变 0 后 Q 延迟 PT 才变 0 |
| 暂停后还要保留已累计时间 | 保持型定时器(如 TONR) |
IN 撤销后累计值保留,需要显式复位 |
TON 表示“等待多久才接通”,不是“接通并只保持多久”。若 TON.Q 驱动普通线圈,线圈跟随 Q;若驱动 S 线圈,动作会在 Q 恢复为 0 后继续保持,必须另设完整的 R 条件。持续为 1 的 .Q 也不能直接驱动计数或其他应只执行一次的运算,应使用边沿或通过步转换让触发条件退出。
每个 IEC 定时用途应使用独立实例,并用用途命名。多个网络复用同一实例会互相覆盖 IN、ET 和 Q 的状态,使在线表现难以推断。在线诊断时同时观察 IN、ET、Q、当前程序步和故障/模式条件,可判断是未启动、条件中途断开,还是完成信号未被消费。
非保持型 TON 的输入失效后会清除累计状态,适合“条件必须连续成立”和每轮任务重新计时。保持型定时器的累计值不会仅因输入失效而自然回到初态;若选择保持型定时器,必须为正常结束、取消、切换模式和故障设计明确复位路径。否则第一轮可能正常,第二轮会因完成位或累计值残留而立即越过延时。选型时先问“输入撤销后是否仍需保留已累计时间”;答案为否时,通常优先使用 TON。
使用定时器完成位的常闭触点生成“计时期间输出”时,还要增加阶段入口条件。例如仅写 NOT 提示定时器.Q,会在定时器从未启动的上电阶段直接导通;应同时要求“前序动作已完成/提示阶段已进入”。
加入定时器后,要检查是否仍有旧的直接动作支路能够绕过定时条件。任何“只有满足 X 后才能动作”的要求,都应验证所有到达该动作命令的路径均经过 X。
顺序启动过程中若允许条件消失,也要定义是立即全停、进入顺序停止,还是保留步骤等待恢复;不能让尚未启动的后续设备继续启动。
多执行器时序必须从任务文字转换为明确的并行关系。例如“先启动 A,延时后 B、C 同时启动”只需要一个延时阶段,B、C 应由同一个完成条件驱动;若为 B、C 各串一个定时器,就会把“同时”错误实现成分级启动。停止顺序也应独立翻译,不能假定它只是启动顺序的简单反向。
产线为了缩短节拍,常在搬运上一件工件时预取下一件。并行不能简单写成“某几个程序步都开启输送带”,还应同时满足下游接料许可、上料点未占用、机构没有侵入危险区域等条件。应把“可预取”定义成明确谓词并覆盖允许的步骤区间,随后测试区间首尾、物料提前到达、下游许可撤销和停止恢复,防止并行支路绕过主流程联锁。
工件计数应绑定到具有工艺意义的完成事件,例如“放料步骤中松开到位”或“由放料步切换到后续步”,而不是绑定持续为 1 的到位电平。持续条件直接驱动 ADD 会在每个扫描周期重复累加,应使用 R_TRIG、CTU,或由一次性的步转换执行加一。还要明确复位是否清零、断电是否保持,以及故障发生在放料前后时本件是否计入,保证统计口径与工艺完成定义一致。
到位反馈若在执行器开始反向后会立即消失,就不适合直接持续使能一个尚未完成的 TON。例如机构触发下限后立即收回,以“下限仍有效”作为返回步骤的定时条件,可能因离开下限而使 TON 清零。更稳妥的做法是到位事件发生时先转换到独立的返回或保持步骤,再由该步骤维持动作,并以返回端反馈作为结束判据。
启动操作与后续完成处理应分开门控。双手按钮、点动按钮等可以只授权危险动作开始;一旦动作已进入有效步骤,到位后的停机、蜂鸣、反向返回和步转换不应继续依赖操作者保持按钮,否则松手可能让完成处理失效。是否要求全程按住属于另一种安全功能,必须由任务和风险评估明确,不能由梯形图支路位置偶然决定。
在 LAD 中,定时器调用与定时结果的组合也要分开考虑。多个 IEC 定时器功能块的输出端不应被当作普通触点直接硬并联;更清晰的做法是让每个实例在合法网络中独立调用,再在动作网络中引用各自的 .Q 触点。若两种时间条件代表替代路径,应并联它们的结果,而不是串联互斥条件。例如“无料持续 3 秒后运行”与“检测到物料上升沿后补送 0.5 秒”是两条 OR 路径:
有效运行步 AND (
(无料 AND TON.Q AND 机构处于允许位置)
OR TP.Q
)
AND 无故障
→ 输送命令
TP 的调用本身也要受有效模式和程序步约束,否则即使最终输出被挡住,定时器仍可能在复位或无关步骤被触发并留下跨步脉冲。实例名和引用处必须一致;修改网络后应编译,并在线观察输入、定时器状态、命令和程序步,而不能仅凭梯形图外观看起来连通就判定正确。
扫描周期与块调用
PLC 在一个扫描周期内按调用和网络顺序执行。若先执行输出映射、后计算控制逻辑,则本周期输出使用的是上一周期命令,新命令到下一周期才反映到输出;若先逻辑、后输出映射,则通常可在本周期刷新。两种顺序都可能工作,但必须作为显式设计决定记录并验证,不能假定块之间会自动同时更新。
创建 FC/FB 并不等于它会执行;它必须由循环组织块或已执行的上层块调用。检查项目时既要确认块正文,也要确认调用链、调用条件和实际调用的符号对象。
对负责刷新物理输出的块,条件调用尤其要谨慎:当使能条件变为假而块不再执行时,块内输出未必获得本周期的安全值,可能保留先前状态。优先做法是让最终输出映射每周期执行,并把模式、停止、故障和复位条件纳入输出表达式;若必须条件调用,则应在禁用路径显式写入安全状态,并验证 CPU、模块和指令的保持行为。
输出层重复检查模式或总允许信号可以形成纵深约束,但不能替代逻辑层清除保持命令。安全停机应同时处理内部状态与最终输出,避免模式恢复后因残留位重新动作。
常闭急停或安全回路输入应先按电气说明核对有效电平,再规范化为语义明确的 允许运行 或 急停有效。把急停复位网络放在程序前部并不天然获得最高优先级:若同一扫描周期后续网络再次写入同一命令、程序步或物理输出,前面的复位可能被覆盖。应优先消除多写入,在状态层统一清除危险命令,并在每周期执行的最终输出表达式中加入安全许可;不能仅靠调整网络先后顺序宣称安全功能可靠。真实急停功能仍应依据风险评估由合适的安全硬件和安全控制实现,普通 PLC 逻辑只构成补充约束。
判断“急停触点是否写反”时,不能只看梯形图中的常开或常闭符号,而应贯通检查整条极性链:
现场触点状态 → 物理输入电平 → I/O 映射是否取反
→ 符号变量语义 → 梯形图触点真值 → 最终停机动作
例如,若常闭回路在正常时输入为 1、触发或断线时输入为 0,并且 I/O 映射直接复制该电平,那么以该变量的常开触点建立 允许运行、以常闭触点触发停机清理,在布尔逻辑上是一致的。若映射层已经取反,同样的梯形图触点就会改变含义。审查时应至少验证两组真值:正常状态是否取得运行许可,以及触发状态是否撤销危险命令、阻断最终输出并进入规定的恢复路径。变量若直接命名为 急停信号,容易混淆它表示“回路健康”还是“急停已触发”;宜规范化成极性明确的 安全回路正常、允许运行 或 急停有效。
把动作命令、指示灯或程序步清零只能说明普通控制逻辑尝试进入某种停止状态,不能单独证明急停功能符合安全要求。还应检查断线是否产生安全响应、解除急停后是否禁止自动重启、后续网络能否重新置位命令,以及硬件安全回路、安全控制器和输出断能路径是否满足风险评估。
方向性安全联锁可同时放在状态层和最终输出层:联锁失效时清除危险方向的保持命令,并在输出表达式中再次阻断该方向。安全返回方向是否继续允许应按机械风险单独判断,不应机械地把两个方向一起禁止。例如防护罩打开时可禁止冲压伸出,而是否允许活塞收回要依据收回确为安全方向这一前提。软件联锁属于控制纵深,不能替代经过风险评估的硬件安全回路。
工程文件与可审阅资料的边界
审阅 PLC 项目时,应先确认拿到的是入口/元数据文件、完整工程目录(或归档),还是面向交换的导出物。某个扩展名看似项目文件,并不保证单文件包含程序块、设备组态、变量表和 HMI 画面;工程核心内容也可能以工具专有格式分散在配套目录中。完整工程包适合在匹配版本的工程软件中恢复和编译,但通用文本工具通常只能提取结构、名称或少量元数据,不能据此声称已经还原完整 LAD 逻辑。
若目标是让没有同等工程环境的人审阅程序,应按目的准备资料:
- 梯形图网络、注释和调用关系:打印或导出程序块 PDF;
- 可机器分析的块结构与符号:导出支持的块 XML;
- 地址和符号契约:导出 PLC/HMI 变量表;
- 操作与显示行为:提供 HMI 画面、对象事件和变量绑定;
- 设备通信关系:提供设备组态、网络视图和连接配置;
- 可复现恢复:保留完整工程归档,并记录所需软件版本。
PDF 适合忠实查看 LAD 图形但不便重建工程;XML 更适合结构化分析,却未必保留与工程软件完全相同的图形呈现;截图只适合少量网络,必须包含网络标题、变量、地址、注释和完整回路。审阅“完整项目”还需沿调用链检查所有被调用块及相关 DB,不能因看到块名、部分地址或一个 I/O 映射块就推断控制流程已经完整。
模板复用的安全边界
模板应复用工程骨架和成熟控制结构,而不是默认复用全部业务逻辑。迁移时先建立差异表:
| 检查项 | 模板 | 新需求 | 修改位置 |
|---|---|---|---|
| I/O 名称与地址 | 原设备 | 新设备 | 变量表、映射、HMI |
| 模式定义 | 手动/自动 | 工作/测试 | 模式逻辑、指示 |
| 启动条件 | 立即触发 | 连续保持 | 定时与动作入口 |
| 停止条件 | 单一到位 | 到位/联锁/故障 | 复位与状态转换 |
| 显示语义 | 命令状态 | 实际反馈 | 输出与HMI绑定 |
复制后必须检查旧变量名、旧页面文字、错误的手动/自动引用、主循环中的旧块调用,以及旧逻辑是否仍在写相同输出。若新对象与模板差异过大,保留 I/O、数据块、调用位置和 HMI 框架即可,控制逻辑应重新按状态表设计。
从任务书和对象卡建立可验证需求
面对陌生对象卡时,先把外部证据转成控制契约,再写程序。一般按以下优先级核对:
- 任务书和评分要求:决定动作流程、时序、联锁和验收方式。
- 对象卡的信号标识与电气说明:决定开关、指示灯的物理语义及常开/常闭极性。
- 现场组态与实际地址:决定物理 I/O 映射。
- 已有工程模板:只提供可复用骨架,不能反过来替代前三项。
有多份任务书时,可先做横向差异表,把内容分为两层:
- 稳定能力骨架:多份材料反复出现的主流程、模式语义、I/O 与 HMI 契约、联锁和验收方式;
- 可变对象场景:具体机构、动作次序、时间参数、工作/测试要求及对象卡信号。
模拟任务应保留稳定骨架,再选择一种具有代表性的可变场景重组需求。这样训练的是需求翻译、顺控和联调能力,而不是记忆某套旧程序。由历年或样例材料推断某个具体对象“最可能出现”只能算待验证预测:样例能证明能力范围,却不能证明正式任务会采用同一对象。编制训练题时应明确区分“覆盖已知能力范围”和“预测具体命题”,避免把后者写成确定结论。
受控改编与难度校准
若目标是让学习者在接近原难度下重新完成一套题,改编应先冻结设备规模、I/O 数量与语义、主流程长度、模式种类、HMI/上位接口和安全核心,再只改变少量工艺次序、时间参数、许可条件或局部联锁。这样既迫使学习者重新翻译需求,又不会因同时增加执行器、分支和异常状态而改变能力层级。
难度不能只用“预计增加百分之几”判断,应对照可观察的复杂度来源:状态步和分支数量、并行动作数量、需记忆的任务上下文、定时窗口、跨单元许可、安全联锁、故障恢复路径,以及必须联调的接口层数。降低难度时可以减少分类分支或把多执行器流程收敛为单一顺控,但不能删除对象本身必需的互锁;例如双向运动的方向互锁、冲压类对象的防护与启动约束仍属于安全核心。
改编后的任务书、对象卡和工程接口必须做一致性检查:每个任务文字都能映射到已定义的输入、输出或内部状态;对象卡标识、I/O 表、画面变量和测试步骤语义一致;旧题名称、地址、延时和支路没有残留。若交付物用于打印训练,还应在最终格式中逐页检查字体、表格越界、分页、裁切线与实际打印比例。版面检查只能证明文件可读可印,不能替代控制需求和信号契约检查。
读题时至少产出一张 I/O 契约表,列出信号名、输入/输出、物理位置、地址、有效电平、点动/保持特性和控制用途。不应假定所有开关都是高电平有效;常闭使能或急停信号通常需要先规范化为语义清晰的“允许运行”或“急停有效”位。
然后脱离程序说清五件事:全部输入、全部输出、手动流程、自动流程、关键联锁与异常退出。对每个动作都补齐“何时开始—何时停止—中途停止怎样处理—恢复后继续还是重置”。最后把每句要求转换为可观测的测试用例,避免只验证一次正常循环。
约束条件下的能力验收
对竞赛、现场调试或其他限时综合任务,“最终能做出来”只能证明功能上限,不能证明已经具备稳定交付能力。验收条件还应覆盖:面对未记忆的新场景、在规定资源和时间内、独立完成从需求翻译到联调,并从系统规定的正常入口一次性展示可重复结果。
可把能力拆成一条端到端交付链:
读题并建立 I/O 契约
→ 完成组态、通信与映射
→ 搭建模式、联锁和主流程
→ 建立 HMI 操作与观测接口
→ 在线定位首个失败层
→ 验证停止、故障、复位与再次运行
→ 撤销强制和旁路后正式验收
训练或考核指标应优先使用可观察证据,而不是“练了多少小时”或“做过多少旧题”:
- 完整性:PLC、HMI、通信、主流程和异常退出形成闭环,不以强制变量代替正式功能;
- 陌生场景迁移:更换设备名称、动作次序、I/O 极性或局部联锁后,仍能从需求重建控制结构,而不是只会复现原题;
- 时间余量:主体功能应在截止前完成,并为编译、下载、联调、复位和最终检查保留显式缓冲;具体分配应由当次规则和任务复杂度决定;
- 独立诊断:能沿通信、映射、程序步、内部命令、输出和反馈定位第一个失败层,而不是同时改动多个参数;
- 恢复能力:停止、模式切换、急停/故障、断连或复位后不会残留危险命令,并能按规定入口重新运行;
- 重复稳定性:在多次完整模拟和受控变题中持续满足同一验收表;单次成功不能证明稳定性。
若正式流程限制评分或验收次数,训练阶段就应模拟这种约束:调试期间可以多次观察和修正,但进入冻结验收状态后不再改程序、强制反馈或临时旁路。若同分时还比较用时或子任务完成度,则时间与功能优先级属于验收契约的一部分;具体排序必须以当届或当次正式文件为准,不能从旧规则外推。
实现顺序应服从依赖关系,而不是平均分配时间:先打通通信和最小信号往返,再完成安全初态、核心手动动作、自动主流程与异常恢复,最后补充不阻断主链的显示和辅助功能。固定模板适合复用变量分层、状态机骨架、报警接口和检查表,但正式能力仍要通过变题和完整闭环验证。
验证顺序
先静态检查,再按任务描述逐句做动态测试。
静态检查
- I/O 名称、地址和极性是否与任务一致。
- 是否存在旧模板变量、文字或调用残留。
- 命令与反馈是否混用。
- 同一普通线圈、物理输出是否多处写入。
- 每个保持命令是否有正常、反向、停机、切模式和故障退出路径。
- HMI 与实体信号是否进入统一请求层。
- 定时、边沿和联锁是否能被其他支路绕过。
顺控程序还应把全部程序步列成有向图或转换表,逐项检查:每个可达步都有执行网络和退出条件;每次跳转的目标步确实存在;除明确并行动作外,一个步号没有被两个网络意外复用;结束步能回到等待步或规定的后继步。复制网络后遗留旧步号,常会造成某一步无人处理,或两个本应先后执行的动作在同一步同时发生。
每个步内还要成对核对“动作方向—目标反馈—跳转条件”。例如下行命令应等待下位反馈,上行命令应等待上位反馈;若命令仍驱动下行却等待上位反馈,状态机会形成不可满足的转换而卡步。对 S/R 命令,同一张表中应同时标出本步置位或复位的对象、到位后如何撤销,以及停止和故障路径如何清除。
动态测试
- 分别验证手动、自动及模式切换;
- 在每个动作阶段撤销允许条件;
- 模拟到位、不到位、两个限位同时有效;
- 在双向运动中请求反向动作;
- 故障后复位,确认设备不会因残留命令自行启动;
- 核对 HMI 显示的是命令还是实际反馈;
- 从初始状态完整走一遍主流程及停止/恢复流程。
调试宜按层推进:先确认输入映射,再观察程序步和内部命令,最后核对物理输出与反馈。对每个状态转换记录“前置条件—期望命令—期望反馈—下一步—超时结果”,比只看完整流程是否跑通更容易定位错误。外部仿真通信应先用最小信号往返验证读写方向和地址契约,再运行整套顺控。
定位卡步时,先记录当前步号,再按固定顺序检查:本步命令是否产生、输出映射是否把命令送到执行器、执行器是否动作、目标反馈是否到达、反馈到达后是否跳到唯一正确的下一步。若设备在无启动资格时自行运行,优先反向搜索该命令的所有写入路径,检查模式支路、常开/常闭极性、定时器入口和旧模板旁路,而不是先修改主状态链。画面观察可以帮助确定“卡在哪个动作”,但无法区分命令、映射、执行器与反馈故障,不能替代分层监控。
按依赖链安排实现与验收优先级
功能的重要性不能只按“需求条目数量”或代码量判断,而要看它在运行与验收依赖图中的位置。通信、I/O 映射、模式、复位、关键联锁和主流程步转换属于上游基础;它们一旦失败,可能使后续自动流程、HMI 操作、跨单元联动和状态显示都失去可验证条件。相反,非关键提示、辅助显示或界面样式通常只影响局部结果。
因此应先建立一个可重复的最小闭环:
通信与映射可用
→ 设备能进入已知初态
→ 手动核心动作及方向/到位联锁正确
→ 自动主流程能完整结束
→ 停止、故障与复位后可再次运行
→ 再补辅助显示、特殊定时和非关键功能
所谓“小连锁”也必须按传播影响判断:若缺失条件会造成对向输出同时有效、执行器不到位仍推进、程序步卡死、停止后无法恢复或复位状态虚假完成,它就是关键条件;若只影响独立提示且不改变动作链,才可能是局部缺陷。测试计划应优先覆盖会截断多个下游功能的共同前置条件,并在每次局部修改后立即做对应层验证,避免累积多处改动后才运行整套流程。
调试手段与正式功能验收分离
强制变量、在线改值、临时旁路和直接驱动物理输出可以用于受控调试,但不能作为功能已经实现的证据。正式验收应从系统定义的正常入口施加输入,例如实体按钮与传感器、HMI 命令或仿真平台事件,再观察 PLC 是否经模式、状态机和联锁自然地产生正确输出。
进入冻结验收状态前,应完成编译和下载,撤销所有强制与临时旁路,使控制器处于运行状态,并让设备回到规定初态。验收过程中若继续修改程序、强制反馈或手动写输出,就混淆了“程序行为”和“调试者代替程序制造结果”;除非测试规程明确要求故障注入,否则不应把这种操作计作功能演示。对每一项测试应记录正常操作入口、可观察输出和完成判据,使演示可以按相同条件重复。
相关知识
- 过程控制与工业自动化系统分层
- PLC 与 HMI 的接口、画面与联调