4. 数控机床模式选择与互锁
任务目标
在数控系统PLC中实现四种操作模式(手动JOG、自动AUTO、MDI、回零REF)的互锁选择逻辑:任一时刻仅允许一种模式生效,模式切换需在非运行状态下进行,防止因模式冲突导致进给轴误动作。
实现思路
采用“请求-仲裁-生效”三段式结构:面板按钮产生模式请求信号,仲裁逻辑按优先级和互锁条件选出唯一有效模式,输出对应的模式标志位供后续进给/主轴控制程序使用。关键互锁条件:循环启动中(自动运行)禁止切换模式;急停或进给保持时强制回到手动模式。
PLC变量定义
以下为最小可复现的变量表(以IEC 61131-3 ST语言为例,可直接在CODESYS/西门子S7-1500等平台运行):
VAR_INPUT
btnJog : BOOL; // 手动按钮
btnAuto : BOOL; // 自动按钮
btnMdi : BOOL; // MDI按钮
btnRef : BOOL; // 回零按钮
cycleRun : BOOL; // 循环启动中信号
eStop : BOOL; // 急停信号
feedHold : BOOL; // 进给保持信号
END_VAR
VAR_OUTPUT
modeJog : BOOL; // 手动模式生效
modeAuto : BOOL; // 自动模式生效
modeMdi : BOOL; // MDI模式生效
modeRef : BOOL; // 回零模式生效
END_VAR
VAR
reqJog, reqAuto, reqMdi, reqRef : BOOL; // 请求锁存
modeActive : INT := 0; // 0=无 1=JOG 2=AUTO 3=MDI 4=REF
END_VAR
核心互锁逻辑
模式请求锁存后,先检查互锁条件,再按优先级仲裁,最后输出唯一模式标志。
// --- 1. 模式请求锁存(按钮上升沿置位,互锁时清除)---
IF btnJog AND NOT cycleRun AND NOT eStop THEN
reqJog := TRUE; reqAuto := FALSE; reqMdi := FALSE; reqRef := FALSE;
END_IF;
IF btnAuto AND NOT cycleRun AND NOT eStop THEN
reqAuto := TRUE; reqJog := FALSE; reqMdi := FALSE; reqRef := FALSE;
END_IF;
IF btnMdi AND NOT cycleRun AND NOT eStop THEN
reqMdi := TRUE; reqJog := FALSE; reqAuto := FALSE; reqRef := FALSE;
END_IF;
IF btnRef AND NOT cycleRun AND NOT eStop THEN
reqRef := TRUE; reqJog := FALSE; reqAuto := FALSE; reqMdi := FALSE;
END_IF;
// --- 2. 互锁强制复位 ---
IF eStop OR feedHold THEN
reqJog := TRUE; reqAuto := FALSE; reqMdi := FALSE; reqRef := FALSE;
END_IF;
// --- 3. 优先级仲裁(REF > JOG > MDI > AUTO)---
IF reqRef THEN
modeActive := 4;
ELSIF reqJog THEN
modeActive := 1;
ELSIF reqMdi THEN
modeActive := 3;
ELSIF reqAuto THEN
modeActive := 2;
ELSE
modeActive := 0;
END_IF;
// --- 4. 输出唯一模式标志 ---
modeJog := (modeActive = 1);
modeAuto := (modeActive = 2);
modeMdi := (modeActive = 3);
modeRef := (modeActive = 4);
运行与验证
将上述代码导入PLC编程环境(如CODESYS、TIA Portal),编译下载后在线监控变量。验证步骤:
- 依次按下各模式按钮,观察对应modeXxx输出为TRUE且其余为FALSE,确认互斥生效。
- 置cycleRun=TRUE后按任意模式按钮,观察modeActive保持不变,确认运行中禁止切换。
- 置eStop=TRUE或feedHold=TRUE,观察modeJog强制为TRUE,其余为FALSE。
- 同时置多个按钮为TRUE,观察modeRef优先输出,验证优先级仲裁正确。
通过条件:任一时刻仅一个modeXxx为TRUE;互锁条件下模式不切换;急停/保持时强制回手动。