汇川中型 PLC(如 AM400、AC800 系列)与手脉(手持脉冲发生器,用于手动调节轴运动,常见于机床、机器人等设备)的连接与控制,需通过 PLC 的高速计数或脉冲输入功能实现。以下是详细的实现方案,包括硬件连接、参数配置和程序设计:
一、系统组成与原理
二、硬件连接(以 AM400 PLC 为例)
三、PLC 参数配置(InoProShop 软件)
四、程序设计(Codesys 平台)
核心逻辑:读取手脉脉冲数→转换为位移指令→发送给伺服驱动器→实时显示位置。
1. 手脉脉冲读取与方向判断
pascal
PROGRAM PLC_PRG // 手脉信号 Pulse_A : BOOL; // A相脉冲(高速输入I0.0) Pulse_B : BOOL; // B相脉冲(高速输入I0.2) Handwheel_Enable : BOOL; // 手脉使能(I1.0) // 计数变量 Pulse_Count : DINT := 0; // 累计脉冲数 Last_A : BOOL; // A相上一状态 Last_B : BOOL; // B相上一状态 // 方向与速度 Direction : BOOL; // 方向(TRUE=正转,FALSE=反转) Move_Speed : REAL := 50; // 手动速度(mm/s)END_VAR// 手脉使能有效时读取脉冲IF Handwheel_Enable THEN // 检测A相脉冲边沿(上升沿) IF Pulse_A AND NOT Last_A THEN // 根据B相状态判断方向 IF Pulse_B THEN Direction := TRUE; // 正转,脉冲数增加 Pulse_Count := Pulse_Count + 1; ELSE Direction := FALSE; // 反转,脉冲数减少 Pulse_Count := Pulse_Count - 1; END_IF; END_IF; // 保存当前状态用于下次判断 Last_A := Pulse_A; Last_B := Pulse_B;ELSE // 使能无效时清零 Pulse_Count := 0;END_IF;
2. 脉冲数转换为位置指令
pascal
VAR Axis_Position : REAL := 0; // 轴目标位置(mm) Pulse_Per_MM : REAL := 100; // 脉冲/毫米(根据电子齿轮比计算)END_VAR// 脉冲数转换为位置(仅在使能时更新)IF Handwheel_Enable THEN Axis_Position := Pulse_Count / Pulse_Per_MM;ELSE // 使能释放时保持当前位置 Axis_Position := Axis_Position;END_IF;
3. 控制伺服驱动器运动
通过 PROFINET 发送位置指令(以汇川伺服为例):
pascal
VAR Servo_Control : POINTER TO AXIS_REF; // 伺服轴引用 Move_Trigger : BOOL; // 运动触发END_VAR// 发送位置指令IF Handwheel_Enable AND (Pulse_Count <> 0) THEN Servo_Control^.PositionSet := Axis_Position; // 设置目标位置 Servo_Control^.SpeedSet := Move_Speed; // 设置速度 Move_Trigger := TRUE; // 触发运动ELSE Move_Trigger := FALSE;END_IF;
4. 异常处理
pascal
VAR
Error_Flag : BOOL; // 错误标志 Over_Travel : BOOL; // 超程信号(伺服反馈)END_VAR// 超程或手脉故障时停止运动IF Over_Travel OR (NOT Handwheel_Enable AND Pulse_Count <> 0) THEN Servo_Control^.Stop := TRUE; // 伺服急停 Error_Flag := TRUE; Pulse_Count := 0; // 清零脉冲数ELSE Error_Flag := FALSE;END_IF;
五、调试与优化
六、注意事项
通过以上方案,可实现汇川中型 PLC 与手脉的稳定通信,满足手动微调控制需求,适用于数控机床、雕刻机、装配机器人等设备。核心是准确解析手脉的正交脉冲信号,并将其可靠转换为伺服轴的运动指令。

