浏览量:0 次 发布时间:2025-11-13 20:10 作者:明扬工控商城 下载docx
| 电气世界 | PLC 世界 | 含义 |
|---|---|---|
| 常开触点(NO) | 输入位 I.Start(按下=1) | 静止不导通,动作后导通 |
| 常闭触点(NC) | 输入位 I.EStop_NC(断开=0) | 静止导通,动作后断开 |
| 线圈(继电器、接触器) | 输出位 Q.Motor | PLC 置位=1 → 驱动线圈得电 |
| 辅助触点(自保持/互锁用) | 内部位 M.Run 或 Q.Motor 的触点 | 用线圈自身状态在程序里“搭桥” |
关键区别:电气图里“常开/常闭”指元件在静止状态的物理触点形态;而梯形图里你放的是条件:常开触点(检查该位=1)或常闭触点(检查该位=0)。所以“NC 按钮接入 PLC 后”,在程序里通常仍用“常开指令”读取它的位值,必要时再取反。
|--[/]--[ ]--[ ]-----------------( )--| | EStop Stop Start || RunLatch Q.Motor | |--[/]--[ ]--[ ]-----------------( )--| | EStop Stop RunLatch RunLatch
解释:
// 采集层:把物理 NC/NO 标准化
EStop_OK := I.EStop_NC; // NC 物理量,正常=TRUE
Stop_OK := I.Stop_NC; // NC 物理量,正常=TRUE
Start_PB := I.Start_NO; // NO 物理量,按下=TRUE
// 逻辑层:自锁
IF NOT EStop_OK THEN
RunLatch := FALSE;
ELSIF NOT Stop_OK THEN
RunLatch := FALSE;
ELSIF Start_PB THEN
RunLatch := TRUE;
END_IF;
Q.Motor := RunLatch;
实务建议:把所有物理 NC 输入先在“采集层”转成语义化的*_OK(TRUE=健康),梯形里再使用,错误率直线下降。
约束:正转与反转两输出不能同时为 1;若一方在运行,另一方请求应被拒绝或延时。
// 变量:CmdFwd, CmdRev(外部请求);Q.Fwd, Q.Rev(输出)
Fwd_Allow := EStop_OK AND Stop_OK AND NOT Q.Rev;
Rev_Allow := EStop_OK AND Stop_OK AND NOT Q.Fwd;
// 自锁 + 互锁
IF Fwd_Allow AND Start_Fwd THEN
RunFwd := TRUE;
END_IF;
IF Rev_Allow AND Start_Rev THEN
RunRev := TRUE;
END_IF;
// 任一停止或对方请求时的处理(禁止对打)
IF NOT Fwd_Allow OR Stop_All THEN
RunFwd := FALSE;
END_IF;
IF NOT Rev_Allow OR Stop_All THEN
RunRev := FALSE;
END_IF;
Q.Fwd := RunFwd;
Q.Rev := RunRev;
电气思路对应:在“正转线圈”支路上串入“反转接触器的常闭辅助触点”;在“反转线圈”支路上串入“正转接触器的常闭辅助触点”。程序里的NOT Q.Rev、NOT Q.Fwd就是它的抽象。
例如两台泵不可同时开启:
|--[/]--[ ]--[ ]--[/Q.B]----------( )--| | EStop Stop StartA Q.A |--[/]--[ ]--[ ]--[/Q.A]----------( )--| | EStop Stop StartB Q.B
加上“运行时间轮换”“故障切换”很常见,可在互锁条件里叠加PermitA/PermitB。
工况:运行中若出现故障(过载、保护),应落下并锁存,待人工复位。
// 故障采集(语义化)
OL_OK := NOT I.OL_Trip; // 过载继电器触点
Fault_In := NOT OL_OK OR NOT EStop_OK;
// 故障锁存
IF Fault_In THEN
FaultLatch := TRUE;
END_IF;
IF Reset_PB AND Fault_In = FALSE THEN
FaultLatch := FALSE;
END_IF;
// 运行许可
PermitRun := (NOT FaultLatch) AND EStop_OK AND Stop_OK;
// 自锁(带许可)
IF PermitRun AND Start_PB THEN
RunLatch := TRUE;
END_IF;
IF (NOT PermitRun) OR Stop_PB THEN
RunLatch := FALSE;
END_IF;
Q.Motor := RunLatch;
要点:复位只在故障消失后有效;Permit集中管理允许条件,便于维护和扩展。
// === 采集层(只做信号清洗) ===
EStop_OK := I.EStop_NC;
Stop_OK := I.Stop_NC;
Start_PB := I.Start_NO;
FBK_Main := I.KM_Aux_NO; // 接触器反馈
OL_OK := NOT I.OL_Trip; // 热继常闭
// === 许可层 ===
PermitRun := EStop_OK AND Stop_OK AND OL_OK;
// === 逻辑层 ===
IF PermitRun AND Start_PB THEN
RunLatch := TRUE;
END_IF;
IF (NOT PermitRun) OR Stop_PB THEN
RunLatch := FALSE;
END_IF;
// === 输出层 ===
Q.Motor := RunLatch;
// === 诊断层 ===
Alm_NoFBK := (Q.Motor = TRUE) AND (FBK_Main = FALSE) AFTER T#500ms;
Alm_Trip := NOT OL_OK;
说明:AFTER T#500ms表示延时确认;不同 PLC 可用定时器实现。
PLC 基础课 第 3 讲|定时器和计数器:典型 6 种写法(电机延时、风机延时、润滑周期)
将本文的Word文档下载到电脑
推荐度: