电话/手机:联系客服
遇到个让人抓狂的控制权限逻辑死坑:
现场一台 G120C 变频器走 Profinet 总线连接 S7-1500 PLC。
正常运行中,变频器突然跳闸,面板报错:F07802(驱动器未就绪)。
诡异现象: 工程师按下变频器面板上的 Hand/Auto 键切到手动模式(Hand),面板上的 F07802 报警瞬间自动消失,机器恢复正常;但只要再按一下切回 Auto 远程控制,F07802 报警立马死灰复燃,连复位都复掉不!
PLC 侧监控 Profinet 通讯一切正常,控制字(STW1)也给出了 ON/OFF1 = 1。
为什么切到本地控制报警就会自己清除,切回总线控制就坚决报‘未就绪’?总线控制字里到底什么隐蔽信号把变频器给‘锁死’了?
优质评论内容
这个现象里,“Hand 正常、Auto 立刻 F07802”是最有价值的线索。
先把结论定准:
F07802 本身不是“Profinet 通讯故障”,也不是简单的“PLC 少给了一个运行位”。
西门子对 G120C 的官方定义是:收到内部 ON 命令以后,功率单元在 p0857 监控时间内没有返回 READY,于是报 F07802:Infeed or power unit not ready。
但既然 HAND 下驱动能正常恢复甚至运行,而一切 AUTO 就立即重现,那我会优先怀疑:AUTO 模式下 PLC 给出的控制字/外围使能顺序,让 G120C 在“不满足功率就绪条件”的时候又重新收到 ON 命令。
也就是说,这不是简单的硬件坏。
一、首先纠正一个现场最容易误判的地方
你说 PLC 侧:
STW1.0 ON/OFF1 = 1
这远远不能证明:
“PLC 给 G120C 的运行条件完整。”
G120C 的标准 PROFIdrive 控制字里,至少还要看这些:
STW1 位 1 时的含义
Bit 0 ON/OFF1 = ON
Bit 1 No OFF2
Bit 2 No OFF3
Bit 3 Enable operation
Bit 4 RFG Enable
Bit 5 RFG Start/Enable
Bit 6 Setpoint Enable
Bit 7 Fault acknowledge,脉冲
Bit 10 Master control by PLC
这是西门子 G120C 官方控制字定义。Bit1=0 就是 OFF2,Bit2=0 是 OFF3,Bit3=0 会立即取消脉冲使能,Bit10=0 则表示 PLC 没有控制权。
所以:
Bit0 = 1
而其余是:
Bit1 = 0
Bit2 = 0
Bit3 = 0
这种控制字根本不能理解成:
“运行允许已经给全了。”
二、标准情况下,先盯这两个字:047E 和 047F
西门子自己的 PROFIdrive 示例中,常见待机控制字就是:
16#047E
对应:
Bit0 = 0 OFF1
Bit1 = 1 No OFF2
Bit2 = 1 No OFF3
Bit3 = 1 Enable operation
Bit4 = 1 RFG enable
Bit5 = 1 RFG enable
Bit6 = 1 Setpoint enable
Bit10 = 1 PLC has master control
真正运行时再变成:
16#047F
也就是只把:
Bit0
0 → 1
送出 ON 命令。西门子官方资料直接用 047E 展示了这种标准控制字结构。
所以我现在第一件事会让 PLC 工程师不要再告诉我:
“Bit0已经是1。”
而是直接告诉我:
AUTO 故障时 STW1 整个 WORD 到底是多少?
例如:
16#047F?
16#047D?
16#0479?
16#007F?
还是别的?
这一下经常就能找到问题。
三、但这里还有一个更重要的细节:F07802 并不是 OFF2 少了直接造成的
这个要讲准确。
F07802 的触发逻辑是:
ON/OFF1 出现 0 → 1
↓
启动 p0857 功率单元监控计时
↓
等待 Power Unit READY
↓
规定时间内没有 READY
↓
F07802
西门子 G120C List Manual 就是这么定义 p0857 的。
所以真正值得问的是:
为什么 AUTO 模式发出 ON 后,Power Unit READY 没成立?
这才是根。
四、Hand/Auto 现象为什么特别有价值?
因为 BOP-2 的 Hand/Auto 不是简单改变显示界面。
西门子明确规定:
HAND/AUTO 键是在 BOP-2 本地控制源和 Fieldbus 远程控制源之间切换。
HAND:
控制权 → BOP-2
AUTO:
控制权 → Fieldbus / PLC
所以现场实际发生的事情很可能是:
AUTO
↓
PLC 的控制字接管
↓
F07802
按 HAND
↓
PLC 控制权被拿走
↓
原来的总线 ON 命令不再控制顺序机
↓
驱动进入本地状态
↓
故障可以清除 / 本地重新建立正常使能
然后:
再按 AUTO
↓
总线控制权重新交给 PLC
↓
PLC 当前那个错误状态的 STW1 立即重新灌进来
↓
再次产生 ON 条件
↓
Power Unit READY 条件不满足
↓
F07802 再次出现
所以:
Hand 并没有“修好了变频器”。
它只是把罪魁祸首——AUTO 下的远程命令链——暂时隔离了。
这也是为什么我现在不会先换 G120C。
五、还有一个特别容易造成“复位都复不掉”的坑
就是:
PLC 在故障状态下还一直保持 STW1.0 = 1。
西门子对 STW1.7 故障确认有一句很重要的话:
如果故障确认时 ON 命令仍然有效,驱动会进入 closing lockout / switch-on inhibit 状态。
所以错误 PLC 程序往往是:
运行要求 = TRUE
↓
STW1.0 一直 = 1
驱动故障
↓
PLC只给 Bit7 Reset 脉冲
但 Bit0 还是 = 1
工程师看到的是:
“怎么 RESET 都清不掉。”
其实 PLC 根本没有执行完整的故障恢复状态机。
六、正确的复位过程不是“Bit7戳一下”
我会让程序这么做。
发生故障以后
先撤掉 ON:
STW1 = 16#047E
即:
Bit0 = 0
但是:
Bit1 = 1
Bit2 = 1
Bit3 = 1
Bit4 = 1
Bit5 = 1
Bit6 = 1
Bit10 = 1
保持正常条件。
然后给 Fault Acknowledge 一个上升沿:
Bit7:
0 → 1 → 0
确认故障解除、switch-on inhibit 消失以后,最后才:
16#047E
↓
16#047F
重新启动。
而不是:
047F 一直焊死
+
不停戳 Reset
七、现场最应该看的其实是 ZSW1,不只是 STW1
现在不要只看 PLC“发了什么”。
还要看驱动“认为自己是什么状态”。
重点看:
ZSW1.0 Ready to switch on
ZSW1.1 Ready
ZSW1.2 Operation enabled
ZSW1.3 Fault active
ZSW1.4 OFF2 inactive
ZSW1.5 OFF3 inactive
ZSW1.6 Closing lockout / switch-on inhibit
西门子 G120C 官方状态字就是这样定义的。
尤其这个:
ZSW1.6
非常值得看。
如果切回 Auto 后出现:
Bit6 = 1
那就是:
Switch-on inhibited。
这比只盯:
STW1.0 = 1
有价值多了。
八、但是这次我最想让你看的是三个内部参数
不要只看 TIA PLC 里的 WORD。
直接在线连接 G120C,看:
r2050[0]
这是驱动实际从现场总线收到的 PZD01。
再看:
r2090
这是 PROFIdrive 收到的 Control Word 1 逐 bit 展开。
西门子明确规定:
r2050[0] = PZD01 received from fieldbus
r2090.0 ... r2090.15
= STW1各bit
然后还要看:
r0898
这个比 r2090 更重要。
因为:
r2090
告诉你:
PLC 发来了什么。
而:
r0898
告诉你:
经过 BICO、控制源选择、CDS 等逻辑以后,SINAMICS 顺序控制器最终真正收到的命令是什么。
西门子将 r0898 定义为 sequence control control word;同时 r0899 是 sequence control status word。
所以现场最好同时截:
HAND:
r2090 =
r0898 =
r0899 =
AUTO:
r2090 =
r0898 =
r0899 =
这三组一对比,问题很容易现形。
九、还有一个很隐蔽的地方:CDS 指令数据组
G120C 里面并不是所有控制方式共用完全同一套信号源。
它有:
CDS
Command Data Set
相关参数包括:
p0810 CDS选择
p0840 ON/OFF1
p0844 OFF2
p0848 OFF3
p0852 Enable operation
p0854 Control by PLC
西门子官方 G120C 参数表把这些都列在顺序控制/数据组区域。
所以如果机器以前有人改过参数,也完全可能出现:
HAND使用一组正确的命令源
AUTO切到另一组
↓
其中某个使能来源错误
这就会出现非常“玄学”的:
Hand 好好的。
Auto 就死。
其实一点都不玄学,是两套 command source。
十、我还会特别查 Bit10
也就是:
STW1.10
Control by PLC
这个经常被忽略。
西门子明确说明:
STW1.10 = 0
→ PLC没有主控制权
→ fieldbus process data不作为有效控制
STW1.10 = 1
→ Master control by PLC
→ 接受总线PZD
所以 Auto 下最低限度要确认:
r2090.10 = 1
而且不能只看 PLC DB 里的那个变量。
必须看:
驱动真正收到的 r2090.10。
十一、不过 F07802 还有一个比 STW1 更值得检查的外围条件
就是:
主电源 / DC Link / 接触器。
F07802 官方原因包括:
功率单元 READY 没回来;
DC Link voltage 不存在;
电源电压参数不正确;
Power Unit 异常;
p0857 监控时间太短。
而 G120C 顺序控制里还存在:
p0860
电网接触器反馈
p0861
电网接触器监控时间
西门子官方参数列表中也有。
所以我特别想确认现场有没有:
PLC → 主接触器 KM
↓
G120C
如果 PLC 在 Auto 模式的程序是:
驱动故障
↓
立即断主接触器
但与此同时:
STW1.0 仍然 = 1
那就会形成一个非常漂亮的死循环:
AUTO
↓
PLC要求变频器 ON
↓
但PLC自己的逻辑又没给主电源/接触器
↓
DC Link / Power Unit没有 Ready
↓
p0857开始计时
↓
F07802
↓
PLC看到Fault
↓
继续保持错误的状态
然后切 HAND:
总线命令退出
↓
这个矛盾暂时不存在
又看起来好了。
这个我会排在非常靠前的位置。
十二、所以现在不要直接把原因定成“OFF2 少了一位”
我会把嫌疑排序成这样:
第一嫌疑:PLC 的故障复位/启动状态机错误
典型:
Fault发生
↓
STW1.0仍保持1
↓
只脉冲Bit7
↓
没有先回047E
↓
Switch-on inhibit / 重新启动顺序异常
第二嫌疑:AUTO 下完整 STW1 不正确
重点:
Bit1 No OFF2
Bit2 No OFF3
Bit3 Enable Operation
Bit10 Master Control
不是只检查 Bit0。
第三嫌疑:AUTO 模式同时控制着某个外部主接触器/使能
结果:
PLC发ON
和:
Power Unit真正有电/Ready
时序矛盾。
第四嫌疑:HAND/AUTO 使用不同 CDS / BICO 信号源
检查:
p0810
p0840
p0844
p0848
p0852
p0854
以及:
r0836
当前到底选择了哪个 CDS。
第五嫌疑:真正的 p0857 / 电源问题
如果以上全部正确,再查:
p0857
DC link
p0210
功率单元READY
但由于 HAND 能正常工作,纯粹功率模块硬件损坏的概率我会往后放。
最快的现场定位法
我甚至不需要你先改程序。
把驱动在线监视窗口打开,做一次:
HAND → AUTO
同时看:
r2050[0] PLC实际收到的PZD1
r2090 Fieldbus STW1各bit
r0898 顺序控制器最终控制字
r0899 顺序控制器最终状态
r0836 当前CDS
PLC再同步看:
STW1
ZSW1
特别盯:
STW1.0
STW1.1
STW1.2
STW1.3
STW1.7
STW1.10
ZSW1.0
ZSW1.1
ZSW1.2
ZSW1.3
ZSW1.6
我认为这比继续“复位几次看看”有效得多。
这个案例一句话讲透
G120C 切到 HAND 后故障消失,并不能说明 F07802 是假的;它说明切换到本地以后,PLC 的远程 ON/使能链被隔离了。切回 AUTO 后,总线当前控制字又重新接管,如果 PLC 在 Power Unit 尚未 Ready 时立即重新给 ON,或者 OFF2/OFF3、Enable Operation、Master Control、外部主接触器等条件存在矛盾,就会再次触发 F07802。
所以这个案例里最容易误导人的一句就是:
“Profinet正常,STW1.0=1,所以PLC肯定没问题。”
恰恰相反。
Profinet 正常只说明数据包能到;Bit0=1只说明 PLC 在喊“开机”。它完全不能证明 G120C 此时具备正确的完整开机序列。