// 伺服自动攻牙机主程序
// 功能:实现自动上料、定位、攻牙、退刀、下料全流程控制
// --------------------------
// 输入信号定义
// I0.0:启动按钮(点动)
// I0.1:急停按钮(常闭)
// I0.2:上料到位传感器
// I0.3:攻牙深度到位传感器
// I0.4:下料完成传感器
// I0.5:伺服就绪信号
// I0.6:过载报警信号(伺服驱动器输出)
// 输出信号定义
// Q0.0:上料电磁阀
// Q0.1:伺服使能
// Q0.2:攻牙方向(正向=攻牙,反向=退刀)
// Q0.3:下料电磁阀
// Q0.4:报警指示灯
// Q0.5:运行指示灯
// 中间继电器定义
// M0.0:自动运行标志
// M0.1:上料完成标志
// M0.2:攻牙开始标志
// M0.3:攻牙完成标志
// M0.4:退刀完成标志
// M0.5:下料开始标志
// 定时器定义
// T37:上料延时(500ms)
// T38:攻牙到位确认延时(200ms)
// T39:退刀到位确认延时(200ms)
// T40:下料延时(500ms)
// --------------------------
// 初始化与急停处理
LD SM0.1 // 首次扫描
SET M1.0 // 系统初始化标志
R M0.0 // 清除运行标志
R Q0.1 // 伺服失能
LD I0.1 // 急停按钮断开
OR I0.6 // 过载报警
AN SM0.0
= Q0.4 // 报警指示灯亮
R M0.0 // 停止自动运行
R Q0.1 // 伺服失能
R Q0.0 // 停止上料
R Q0.3 // 停止下料
// --------------------------
// 启动自动运行
LD I0.0 // 启动按钮
EU // 上升沿触发
AN M0.0 // 未在运行中
AN I0.1 // 急停正常
AN I0.6 // 无过载报警
SET M0.0 // 置位自动运行标志
SET Q0.5 // 运行指示灯亮
// --------------------------
// 上料控制
LD M0.0 // 自动运行中
AN M0.1 // 未上料完成
= Q0.0 // 启动上料电磁阀
LD I0.2 // 上料到位
EU
SET M0.1 // 置位上料完成
R Q0.0 // 关闭上料电磁阀
TON T37, 50 // 上料稳定延时500ms
// --------------------------
// 攻牙准备(伺服使能)
LD T37 // 上料延时完成
AN Q0.1 // 伺服未使能
A I0.5 // 伺服就绪
= Q0.1 // 伺服使能
LD Q0.1
EU
SET M0.2 // 置位攻牙开始标志
// --------------------------
// 攻牙过程控制
LD M0.2 // 攻牙开始
AN M0.3 // 未攻牙完成
= Q0.2 // 正向旋转(攻牙方向)
// 调用伺服定位指令(示例:移动到攻牙深度位置)
CALL "SERVO_MOVE"
Axis:=1 // 攻牙轴
Position:=50.0 // 攻牙深度50mm
Speed:=300 // 攻牙速度300rpm
Done=>M2.0 // 移动完成标志
LD I0.3 // 深度到位传感器触发
AN M0.3
TON T38, 20 // 确认延时200ms
LD T38
SET M0.3 // 置位攻牙完成
R M0.2 // 清除攻牙开始标志
// --------------------------
// 退刀控制
LD M0.3 // 攻牙完成
AN M0.4 // 未退刀完成
R Q0.2 // 反向旋转(退刀方向)
// 调用伺服回退指令
CALL "SERVO_MOVE"
Axis:=1
Position:=0.0 // 退回原点
Speed:=400 // 退刀速度400rpm
Done=>M2.1
LD M2.1 // 退刀到位
AN M0.4
TON T39, 20 // 确认延时200ms
LD T39
SET M0.4 // 置位退刀完成
R M0.3 // 清除攻牙完成标志
// --------------------------
// 下料控制
LD M0.4 // 退刀完成
AN M0.5 // 未下料
= M0.5 // 置位下料开始
= Q0.3 // 启动下料电磁阀
LD I0.4 // 下料完成
EU
TON T40, 50 // 下料延时500ms
LD T40
R M0.0 // 清除自动运行标志
R M0.1 // 清除上料完成
R M0.4 // 清除退刀完成
R M0.5 // 清除下料开始
R Q0.1 // 伺服失能
R Q0.5 // 关闭运行指示灯