梯形图顺序功能图(SFC)步进阶梯转移条件重复导致的死步排查

发布于 2026-03-17 19:24:48 · 浏览 3 次 · 评论 0 条

梯形图顺序功能图(SFC)是PLC编程中实现复杂顺序控制的核心工具,尤其在包装机械、装配线、注塑机等需多阶段分步执行的设备中被广泛采用。SFC以“步(Step)”为单位组织逻辑,每步代表一个稳定状态,步与步之间通过“转移条件(Transition Condition)”触发跃迁。当多个转移条件指向同一目标步,或同一转移条件被重复配置于不同路径,极易引发死步(Dead Step)——即程序运行中某步被激活后,因无有效转移条件满足而永久停留,导致后续动作停滞、产线卡死。

本文不讲理论定义,只聚焦实操:如何快速定位、验证并修复由转移条件重复配置引发的死步问题。全文按真实排故流程组织,从现象观察开始,逐层深入至逻辑根源,所有方法均基于标准IEC 61131-3规范下的主流PLC(如三菱FX系列、欧姆龙NJ/NX系列、西门子S7-1200/1500)通用操作,无需专用诊断软件,仅靠编程软件内置功能即可完成。


一、识别死步:三类典型现象(无需读程序)

死步不是语法错误,编译能通过,运行时却“静默卡顿”。先确认是否为死步,避免误判为传感器故障或执行器损坏。

  1. HMI界面状态冻结:某工位图标持续显示“运行中”,但对应气缸未动作、电机未启停、指示灯不切换,且该状态超过正常周期时间(例如:夹紧步标准耗时2秒,实际停留超10秒)。
  2. PLC监控窗口中某步标志位持续为ON:在编程软件在线监控模式下,打开SFC编辑页,观察各步对应的内部软元件(如三菱用S0–S999,西门子用Mx.xDBx.DBXx.x)。若某步(如S20)在应退出时刻后仍保持TRUE达5秒以上,且其所有出向转移条件的监控值均为FALSE,即高度疑似死步。
  3. 后续步全部未激活,且无任何报警代码:检查SFC中该步之后的所有步(包括并行分支),其激活标志全为OFF;同时PLC系统报警缓冲区(如TIA Portal的“Diagnostic Buffer”或GX Works3的“Error Log”)中无F0001类硬件报警,也无E8000类用户自定义错误码。

满足以上任一现象,即可进入排查流程。注意:若HMI报“夹紧超时”但PLC中S20已变为OFF,则问题在转移条件本身(如传感器未到位),不属于本文所述“转移条件重复导致的死步”。


二、锁定可疑步:两步法缩小范围

避免全盘扫描整个SFC(可能含上百步),用逻辑剪枝快速定位问题步。

  1. 逆向追踪法:从卡住的步(记为Sx)出发,回溯所有能激活Sx的前序步及对应转移条件。

    • 在SFC编辑界面,右键点击Sx → 选择“查找引用”或“Show Cross Reference”(各品牌名称略有差异)。
    • 查看列表中所有“激活来源”:例如S10 --[X0]--> SxS15 --[Y1 AND T3]--> SxS20 --[M100]--> Sx
    • 记录所有来源步和其转移条件表达式。
  2. 条件重叠检验:对上述所有转移条件,逐个验证是否可能同时为真。重点检查:

    • 是否存在完全相同的布尔表达式(如X0X0);
    • 是否存在逻辑等价表达式(如NOT X1X1 == FALSE);
    • 是否存在冗余嵌套(如(X2 OR X3) AND X4X2 AND X4,后者为前者子集);
    • 是否有定时器/计数器复位不同步导致的瞬时重叠(如T0.DNT1.DN在同一定时周期内均置位)。

若发现两个及以上来源步的转移条件在某一时刻可同时满足,则Sx即为死步候选——因为PLC执行SFC时,一旦某步被激活,其所有入向转移即失效(IEC 61131-3第3部分明确要求:“a step is active only if at least one of its input transitions is enabled and the transition condition is true”)。当多路同时满足时,PLC仅执行首次扫描到的路径,其余路径的转移条件虽为真,但因Sx已激活而被忽略;更危险的是,若这些条件中混有自复位信号(如脉冲上升沿X0.P),首次触发后信号消失,后续扫描再无任何条件满足,Sx即永久锁定。


三、验证死步:在线强制+单步仿真(零风险)

在生产现场,切勿直接修改运行中程序。使用编程软件的调试功能安全复现问题。

  1. 强制置位目标步

    • 进入在线监控模式,找到Sx对应软元件(如S20)。
    • 右键点击该元件 → 选择“Force ON”或“Set Bit”。此时Sx强制激活,模拟卡死状态。
  2. 监控所有入向转移条件实时值

    • 在同一监控窗口中,添加上一步骤中记录的所有转移条件变量(如X0Y1T3.DNM100)。
    • 观察10秒以上:若其中任意一个条件在SxON期间从未变为TRUE,则非本问题;若多个条件曾同时为TRUE(例如X0=ONY1=ONT3.DN=ON),但Sx未自动退出,则确认为转移条件重复冲突导致的死步。
  3. 单步执行验证(关键)

    • 停止PLC运行(或切换至“Test Mode”)。
    • 点击“Single Scan”或“Step Over”按钮,手动执行一次PLC扫描周期。
    • 观察:Sx是否在本次扫描中被任何出向转移条件触发退出?若所有出向条件监控值均为FALSE,且Sx仍为ON,即实锤死步。

此过程不改动逻辑,不触发输出,100%安全。


四、根因分析:四类重复配置模式(附修正公式)

死步的根源是SFC结构违反了“单入单出”隐含约定。以下是工程中最常见的四类重复配置,每类均给出可直接套用的修正逻辑。

模式1:同条件多路径指向同一目标步

现象S10 --[X0]--> S50S20 --[X0]--> S50S30 --[X0]--> S50
问题X0闭合瞬间,S50被多次请求激活,但PLC仅响应首次;若S10已退出而S20尚未退出,X0再次闭合时因S50已激活,转移失效。
修正公式:将重复条件统一归并为互锁使能

S50的激活条件 = (S10 OR S20 OR S30) AND X0

即删除三条独立转移线,在S50入口处添加一个“合并使能”步,其转移条件为“任一前序步激活 且 X0为真”。

模式2:逻辑等价条件分散配置

现象S10 --[NOT X1]--> S40S15 --[X1 == FALSE]--> S40
问题NOT X1X1 == FALSE 功能完全相同,但PLC视作两个独立条件,增加扫描负担且易因数据刷新时序导致竞争。
修正公式全局替换为标准布尔运算
统一使用 NOT X1(避免== FALSE类比较,减少CPU周期)。

模式3:定时器条件未同步复位

现象S10 --[T0.DN]--> S40S20 --[T1.DN]--> S40,但T0T1的启动条件不同(如T0X2启动,T1X3启动),且复位逻辑分离。
问题:当X2X3先后触发,T0.DNT1.DN可能在相邻扫描周期内连续为真,造成S40被重复请求;若S40退出条件依赖T0复位,而T1未复位,则S40无法退出。
修正公式共用定时器 + 独立使能

使用单一定时器T0;  
S10转移条件 = X2 AND NOT T0.DN;  
S20转移条件 = X3 AND NOT T0.DN;  
S40转移条件 = T0.DN  

并在S40激活时强制复位T0RST T0),确保每次仅一个路径触发定时。

模式4:并行分支未加同步约束

现象:SFC中存在并行分支A与B,均最终汇聚至S60

  • 分支A:S10 --[X4]--> S20 --[T2.DN]--> S60
  • 分支B:S15 --[X5]--> S25 --[T3.DN]--> S60
    问题:若分支A快于B,S60提前激活,但分支B仍在执行S25,此时S60的出向转移可能因S25未完成而缺失必要使能信号,导致S60停滞。
    修正公式汇聚点必须增加“全分支完成”约束
    S60转移条件 = T2.DN AND T3.DN  

    而非任一完成即转移。若分支耗时不固定,改用“完成标志位”:

  • S20退出时置位M100S25退出时置位M101
  • S60转移条件 = M100 AND M101
  • S60激活后立即复位M100M101

五、修复与验证:三步闭环

修复不是改完就完,必须闭环验证。

  1. 修改SFC结构

    • 删除所有重复指向同一目标步的转移线
    • 按上述公式重构转移条件,确保每个目标步仅有一个逻辑清晰的入向条件;
    • 为所有定时器/计数器添加明确复位路径(严禁依赖步退出自动复位)。
  2. 离线仿真测试

    • 在编程软件中启用“Simulation Mode”;
    • 手动设置各输入信号(X0–X9)组合,覆盖所有可能触发路径;
    • 逐帧查看SFC步进过程,确认Sx激活后必有且仅有唯一路径退出,无停滞。
  3. 上线前最后检查

    • 下载程序前,执行“Cross Reference Check”(各品牌均有此功能),确认Sx的引用数=1(仅被修正后的唯一转移线引用);
    • 导出SFC结构报告为PDF,打印后人工勾选:所有步入向线数≤1,所有转移条件无重复文本。

六、预防机制:建立三项硬性规范

死步修复是救火,预防才是根本。在团队开发中强制推行:

规范项 执行要求 检查方式
转移条件命名规范 所有转移条件变量必须采用“来源步_目标步_功能”格式,如S10_S50_ClampOKS20_S50_UnclampDone 代码审查时用搜索功能查_S50_,确认无重复命名
SFC层级深度限制 单个SFC图内步数≤32,超限时必须拆分为子SFC(Sub-SFC),主图仅留汇聚逻辑 编程软件中“Properties”页查看“Step Count”
转移条件唯一性扫描 每次提交代码前,运行脚本自动提取所有转移条件字符串,去重后比对原始条目数 使用Python脚本解析.awl/.xml项目文件,输出重复项报告

遵守以上三项,可消除90%以上的转移条件重复类死步。


死步排查的本质,是让PLC的确定性执行与工程师的逻辑预期严格对齐。每一次重复条件的删除,都不是简化逻辑,而是剔除不确定性;每一次转移条件的重构,都不是增加复杂度,而是加固确定性。自动化系统的鲁棒性,就藏在这些看似琐碎的“唯一性”坚持里。

评论 (0)

暂无评论,快来抢沙发吧!

扫一扫,手机查看

扫描上方二维码,在手机上查看本文