CoDeSys入门实战一起学习(二十八):(FBD)三台电机顺起逆停程序详解—上升、下降沿使用下
网络5:逆序停止逻辑(核心时序控制)逆序停止逻辑分为4部分,实现「M3立即停止→延时→M2停止→延时→M1停止」的时序,停止命令触发后,优先停止最后启动的电机,避免设备冲击。
5.1 停止命令触发(启动停止时序)
逻辑解析: 当有停止命令(bStopCmd=TRUE)且系统正在运行(bSystemRunning=TRUE)时,触发停止定时器StopTimer1的输入(StopTimer1.IN=TRUE),开始停止时序。
5.2 立即停止电机3(停止流程第一步)
逻辑解析: 停止命令(bStopCmd=TRUE)触发后,立即执行复位指令(RST),Motor3_Run=FALSE(M3接触器断开,电机立即停止)。
为什么立即停止M3? 逆序停止的核心是「先停最后启动的电机」,M3是最后启动的,优先停止M3可避免其负载对前两台电机造成冲击,保障设备安全。
5.3 延时5秒停止电机2(停止流程第二步)
解析:
定时器启动:停止命令(bStopCmd=TRUE)触发后,StopTimer1开始计时(计时时间=StopInterval,默认5秒);
电机2停止:当StopTimer1.Q=TRUE(计时完成),执行复位指令,Motor2_Run=FALSE(M2接触器断开,电机停止)。
5.4 再延时5秒停止电机1(停止流程第三步)
逻辑解析:
定时器启动:StopTimer1.Q=TRUE(M2已停止)后,StopTimer2开始计时(延时5秒);
电机1停止:当StopTimer2.Q=TRUE(计时完成),执行复位指令,Motor1_Run=FALSE(M1接触器断开,电机停止),此时所有电机全部停止。
停止时序总结:
T=0秒:按下停止按钮 → bStopCmd=TRUE → M3立即停止(Motor3_Run=FALSE),StopTimer1开始计时
T=5秒:StopTimer1计时完成(StopTimer1.Q=TRUE) → M2停止(Motor2_Run=FALSE),StopTimer2开始计时
T=10秒:StopTimer2计时完成(StopTimer2.Q=TRUE) → M1停止(Motor1_Run=FALSE),所有电机停止
网络6:故障保护逻辑(电机过热保护,连锁停止)
故障保护逻辑针对每台电机的热继电器反馈信号(Motor1_OK、Motor2_OK、Motor3_OK),实现「故障电机停止+连锁保护」,避免故障扩大。
6.1 电机1故障处理
逻辑解析:
故障检测:当Motor1_OK=FALSE(M1热继电器动作,电机过热故障),执行置位指令,FaultMotor=1(记录故障电机为M1);
连锁停止:FaultMotor=1(检测到M1故障)时,同时复位Motor1_Run、Motor2_Run、Motor3_Run,停止所有电机。
为什么停止所有电机? M1是整个启动流程的基础,M1故障后,M2、M3失去启动前提,继续运行会导致设备负载异常,甚至损坏设备,因此采用最严格的连锁保护。
6.2 电机2故障处理(连锁停止M2、M3)
逻辑解析: 当Motor2_OK=FALSE(M2故障),FaultMotor=2(记录故障电机为M2),同时复位Motor2_Run、Motor3_Run(停止M2、M3),M1可继续运行(若M1无故障),减少生产损失。
6.3 电机3故障处理(仅停止M3)
逻辑解析: 当Motor3_OK=FALSE(M3故障),FaultMotor=3(记录故障电机为M3),仅复位Motor3_Run(停止M3),M1、M2可继续运行,最大限度保障生产连续性。
网络7:故障复位机制
组件解析:
[ > ]:比较指令,判断FaultMotor>0(系统存在故障);
[ MOV 0, FaultMotor ]:赋值指令,将0传给FaultMotor(清除故障记录)。
故障复位逻辑:
故障发生后,FaultMotor保存故障电机编号(1/2/3),系统故障指示灯(System_Fault)亮起,提醒操作人员处理故障;
故障排除后,需手动复位:按下启动按钮(Start=TRUE),此时FaultMotor>0,赋值指令触发,FaultMotor=0(清除故障记录),故障指示灯熄灭;
复位后,系统可重新按下启动按钮,开始顺序启动。
为什么用启动按钮复位? 符合工业安全规范,故障后必须由操作人员人工确认(排除故障后),才能复位启动,防止故障自动复位导致设备误启动,引发安全事故。
网络8:状态指示系统(现场可视化,便于维护)
状态指示系统分为4部分,分别显示系统整体状态和每台电机的独立状态,便于现场操作人员观察系统运行情况,快速定位故障。
5.1 调试步骤(CoDeSys仿真/现场调试通用)
第一步:检查输入信号(安全前提)
// 调试前,确认所有安全信号正常(CoDeSys仿真中可手动修改变量值)
EmergencyStop = TRUE;// 急停按钮未按下(常闭触点闭合)
Motor1_OK = TRUE; // 电机1无故障
Motor2_OK = TRUE; // 电机2无故障
Motor3_OK = TRUE; // 电机3无故障
第二步:测试单台电机(单独验证)
// 临时修改程序,测试每台电机独立启停(排除电机本身故障)
// 方法:将Motor1_Run、Motor2_Run、Motor3_Run分别直接关联Start按钮
第三步:测试顺序启动(核心时序)
// 恢复程序,按下启动按钮,观察时序是否符合要求
// 正常时序:M1启动 → 5秒 → M2启动 → 5秒 → M3启动
// 重点观察:定时器StartTimer1、StartTimer2的计时是否正常(ET值是否递增)
第四步:测试逆序停止(核心时序)
// 三台电机全部运行后,按下停止按钮,观察时序是否符合要求
// 正常时序:M3立即停止 → 5秒 → M2停止 → 5秒 → M1停止
// 重点观察:定时器StopTimer1、StopTimer2的计时是否正常
第五步:测试故障保护(安全验证)
// 模拟电机故障,验证连锁保护逻辑
1. 模拟M1故障:设置Motor1_OK=FALSE → 观察M1、M2、M3是否全部停止,FaultMotor=1
2. 模拟M2故障:设置Motor2_OK=FALSE → 观察M2、M3是否停止,M1是否继续运行,FaultMotor=2
3. 模拟M3故障:设置Motor3_OK=FALSE → 观察M3是否停止,M1、M2是否继续运行,FaultMotor=3
第六步:测试急停功能(最高优先级验证)
// 系统运行中,按下急停按钮(设置EmergencyStop=FALSE)
// 观察:所有电机是否立即停止,bEmergency=TRUE,System_Fault=TRUE
5.2 常见问题处理(新手避坑)
问题现象
可能原因
解决方案
所有电机无法启动
1. 急停按钮未复位(EmergencyStop=FALSE);2. 电机1故障(Motor1_OK=FALSE)
1. 复位急停按钮,确保EmergencyStop=TRUE;2. 检查Motor1_OK信号,排除M1故障
只有M1能启动,M2、M3无法启动
1. 定时器StartTimer1未计时(Motor1_OK=FALSE);2. Motor2_OK或Motor3_OK为FALSE
1. 检查Motor1_OK信号,确保M1正常运行;2. 检查Motor2_OK、Motor3_OK信号
停止后无法再启动
故障未复位(FaultMotor>0)
按下启动按钮,手动复位故障(FaultMotor=0)
启动顺序混乱(比如M1、M2同时启动)
定时器设置错误(StartInterval未设置单位或值错误)
检查StartInterval,设置为T#5S(带单位),确保定时器正常计时
急停无效
1. 急停按钮接线错误(接成常开);2. 程序中急停触点类型错误
1. 将急停按钮改为常闭接线;2. 检查网络1,确保EmergencyStop为常闭触点(|/|)
5.3 参数调整建议
根据电机功率和现场需求,可调整时间参数,以下是常见场景的参数建议:
// 1. 大功率电机(10KW以上):延长延时时间,避免启动电流冲击
StartInterval := T#8S;// 启动间隔调整为8-10秒
StopInterval := T#8S; // 停止间隔调整为8-10秒
// 2. 快速测试程序:缩短延时时间,提高调试效率
StartInterval := T#2S;// 测试时用2秒
StopInterval := T#2S;
作用:适配自动化生产线的集中监控需求,操作人员可在上位机(电脑、触摸屏)上监控电机状态,无需到现场。
七、总结
本文详细拆解的三台电机顺起逆停程序,是工业自动化中的经典应用,核心亮点的是「时序清晰、安全可靠、注释完整、易于复用」,新手可通过本程序,熟练掌握CoDeSys中定时器(TON)、上升沿检测、置位/复位指令、比较指令的综合应用,同时理解工业控制中的安全规范(急停优先级、手动故障复位、硬件互锁)。
程序的核心逻辑的是「顺序启动、逆序停止」,通过定时器实现延时联动,通过标志位实现逻辑锁存,通过故障检测实现连锁保护,完全适配现场实际应用需求,可直接复制到CoDeSys中,修改IO地址和时间参数后,即可投入使用。
掌握本程序的设计思路后,可轻松扩展到四台、五台电机的顺序控制,为后续学习更复杂的工业控制系统(如生产线联动、多设备协同)打下坚实基础。
页:
[1]