星三角降压启动是工业控制领域最常见的电机启动方式之一,这个案例将使用CoDeSys平台实现完整的控制逻辑。作为一名电气自动化工程师,我在多个工业现场都实施过类似方案,今天就来分享如何用结构化文本(ST)语言编写这个经典控制程序。
三相异步电动机直接启动时,启动电流可达额定电流的5-7倍,这对电网和机械设备都会造成冲击。星三角降压启动通过改变电机绕组连接方式,将启动电压降为额定电压的1/√3,有效减小启动电流。在CoDeSys中,我们需要使用定时器精确控制星形接法和三角形接法的切换时机,这正是本案例的技术核心。
典型星三角启动主电路包含:
重要提示:KM2和KM3必须设置机械互锁和电气互锁,防止同时吸合导致短路。我在现场就遇到过因互锁失效烧毁接触器的案例。
以西门子S7-1200为例:
st复制VAR
// 输入变量
StartBtn AT %I0.0 : BOOL;
StopBtn AT %I0.1 : BOOL;
Thermal AT %I0.2 : BOOL;
// 输出变量
KM1 AT %Q0.0 : BOOL;
KM2 AT %Q0.1 : BOOL;
KM3 AT %Q0.2 : BOOL;
// 内部变量
StartTrig : BOOL := FALSE;
StarTime : TON; // 星形运行定时器
ChangeTime : TON; // 切换延时定时器
TimerSet : TIME := T#5S; // 星形运行时间设定
END_VAR
st复制// 启动触发
IF StartBtn AND NOT StopBtn THEN
StartTrig := TRUE;
ELSIF StopBtn OR Thermal THEN
StartTrig := FALSE;
END_IF
// 星形启动阶段
IF StartTrig THEN
KM1 := TRUE;
KM2 := TRUE;
KM3 := FALSE;
StarTime(IN := TRUE, PT := TimerSet);
// 定时器到达后进入切换阶段
IF StarTime.Q THEN
KM2 := FALSE;
ChangeTime(IN := TRUE, PT := T#500MS); // 500ms切换延时
END_IF
// 切换至三角形运行
IF ChangeTime.Q THEN
KM3 := TRUE;
END_IF
ELSE
// 停止状态复位
KM1 := FALSE;
KM2 := FALSE;
KM3 := FALSE;
StarTime(IN := FALSE);
ChangeTime(IN := FALSE);
END_IF
TON(Timer ON Delay)是CoDeSys中最常用的定时器类型:
经验分享:在ST语言中,定时器是功能块实例,需要先声明后使用。与梯形图不同,ST中的定时器不会自动复位,必须手动控制IN端。
星形运行时间(TimerSet):
切换延时(500ms):
先不带负载测试:
带负载测试:
| 故障现象 | 可能原因 | 解决方案 |
|---|---|---|
| 切换时跳闸 | 切换时间过短 | 增加ChangeTime的PT值 |
| 电机启动无力 | 星形时间过长 | 减少TimerSet值 |
| 接触器异响 | 机械互锁不良 | 调整接触器机械联锁装置 |
| 定时器不工作 | 定时器未复位 | 检查StopBtn和Thermal信号 |
st复制VAR
StarMode : BOOL;
DeltaMode : BOOL;
END_VAR
StarMode := KM1 AND KM2 AND NOT KM3;
DeltaMode := KM1 AND KM3 AND NOT KM2;
st复制VAR
StartCount : INT := 0;
MaxStarts : INT := 3;
END_VAR
IF StartTrig AND NOT StartTrig_Last THEN
StartCount := StartCount + 1;
END_IF
StartTrig_Last := StartTrig;
IF StartCount >= MaxStarts THEN
StartTrig := FALSE;
// 报警输出
END_IF
这个案例虽然基础,但涵盖了PLC编程的核心要素:IO控制、定时器使用、安全互锁等。实际应用中还需要考虑电网电压波动、机械负载变化等因素,建议先用小型电机进行充分测试再应用到产线设备。