本文将详细探讨如何使用欧姆龙NJ系列PLC通过EtherCAT总线控制雷赛步进电机,涵盖硬件配置、接线方式、参数设置及ST语言程序编写,特别包含IO映射的实现方法。1.系统概述与硬件配置欧姆龙NJ系列控制器是基于EtherCAT总线的运动控制器,其运动控制功能非常强大,性价比高,广泛应用于锂电、3C、新能源等复杂多轴控制场合。雷赛DM3C系列步进驱动器支持EtherCAT通信协议,能够实现高性能的运动控制。
1.1所需硬件组件·欧姆龙NJ系列PLC(如NJ-501)
·雷赛DM3C系列EtherCAT步进驱动器
·雷赛步进电机
·24V直流电源
·Micro USB调试线
·EtherCAT通信电缆
1.2硬件连接步骤1. 电源接线:将24V电源正极连接到驱动器的V+端子,负极连接到GND端子
2. 电机接线:使用万用表测量电机绕组,将同一绕组的两根线分别接到A+和A-、B+和B-端子。如果电机方向相反,可以交换A+和A-或B+和B-的接线。
3. EtherCAT通信:使用网线将NJPLC的EtherCAT端口与DM3C驱动器的EtherCATIN端口连接,多个驱动器可以通过EtherCATOUT端口串联。
4. IO信号接线:DM3C驱动器数字量输入接口可做共阴极或共阳极接法。如果需要连接限位开关或原点信号,请注意:
o 正限位默认对应DI4
o 负限位默认对应DI5
o 原点信号默认对应DI1(探针输入1)
o Home开关默认对应DI3
重要提示:如果PLC输出信号为24V,而步进驱动器输入需要5V信号,则需要在脉冲和方向信号线上串联一个2kΩ的电阻。否则可能会损坏驱动器输入点。
2.软件配置与参数设置2.1软件准备使用欧姆龙Sysmac Studio软件进行配置和编程:
1. 安装Sysmac Studio软件(确保版本与PLC固件兼容)
2. 获取雷赛DM3C驱动器的ESI文件(DM3C-EC_V1.06.xml)
3. 将ESI文件复制到Sysmac Studio安装目录的EsiFiles/UserEsiFiles文件夹下
2.2新建工程与通信设置1. 新建工程:打开Sysmac Studio,创建新工程,选择对应的NJPLC型号和版本
2.设置通信:
o 将计算机和PLC设置为同一网段(例如PLC IP地址为192.168.250.1,计算机可设置为192.168.250.x)
o 在Sysmac Studio中设置通信参数,建立与PLC的连接
3.EtherCAT配置:
o 在线成功后,双击"EtherCAT"项目
o 右键点击"主设备",选择"与物理网络配置比较和合并"
o 点击"应用物理网络配置"
o 系统会自动扫描连接到网络上的DM3C驱动器
2.3驱动器参数设置通过Sysmac Studio可以修改驱动器的多项参数:
// 通过SDO修改驱动器参数的示例程序段
VAR
bExecute: BOOL; // 执行触发
diStatus: INT; // 状态显示
bBusy: BOOL; // 忙状态
bError: BOOL; // 错误状态
diErrorCode: INT; // 错误代码
END_VAR
// 修改电流参数(对象字典0x2030)的示例
MC_BWriteParameter(
Axis:= Axis1,
Execute:= bExecute,
DeviceId:= 1601,
Index:= 162030,
SubIndex:= 1,
DataType:= DINT,
Value:= 1500,
Done=> ,
Busy=> bBusy,
Error=> bError,
ErrorCode=> diErrorCode
);
// 修改细分参数(对象字典0x2001)的示例
MC_BWriteParameter(
Axis:= Axis1,
Execute:= bExecute,
DeviceId:= 1601,
Index:= 162001,
SubIndex:= 1,
DataType:= DINT,
Value:= 6400,
Done=> ,
Busy=> bBusy,
Error=> bError,
ErrorCode=> diErrorCode
);
注意:DM3C和CL3C系列中,数据类型为DINT,需要设置为4字节。其他可能需要修改的参数包括:细分(0x2001)、IO极性(0x2152-子索引值+0x80)、运行方向(0x2051)。 2.4轴参数配置1. 添加轴:在"运动控制设置"→"轴设置"中,右键点击"添加"→"运动控制轴"
2. 单位换算配置:根据实际需求设置工程单位(如脉冲、毫米、度等)
3.回零参数配置:
o 欧姆龙采用主站回零,提供多种回零方法
o 注意信号映射:欧姆龙的原点接近输入 = 雷赛的原点输入HOME switch(默认对应DI3)
o 欧姆龙的原点输入信号 = 雷赛的探针输入1 Probe1(默认对应DI1)
4.PDO配置:
o 对于常用功能,DM3C默认配置的PDO已经足够
o 如需添加对象字典到PDO中,可在PDO配置界面中进行添加
3. ST语言程序编写本节展示使用ST语言编写控制程序,包括变量声明、IO映射和运动控制功能实现。
3.1变量声明与IO映射// 全局变量声明
VAR_GLOBAL
// 输入信号结构体
stInputs: STRUCT
// 限位信号
bPositiveLimit: BOOL; // 正限位信号
bNegativeLimit: BOOL; // 负限位信号
bOriginSensor: BOOL; // 原点传感器信号
bEmergencyStop: BOOL; // 急停信号
// 按钮信号
bStartBtn: BOOL; // 启动按钮
bStopBtn: BOOL; // 停止按钮
bJogPlusBtn: BOOL; // 正点动按钮
bJogMinusBtn: BOOL; // 负点动按钮
// 保留信号
bReserved01: BOOL; // 保留IO1
bReserved02: BOOL; // 保留IO2
END_STRUCT;
// 输出信号结构体
stOutputs: STRUCT
bReadyLED: BOOL; // 就绪指示灯
bRunningLED: BOOL; // 运行指示灯
bErrorLED: BOOL; // 故障指示灯
bOutput01: BOOL; // 输出01
bOutput02: BOOL; // 输出02
END_STRUCT;
// 轴变量
Axis1: AXIS_REF; // 轴1参考
bAxisEnabled: BOOL; // 轴使能状态
// 运动控制功能块变量
mcPower: MC_POWER; // 使能功能块
mcHome: MC_HOME; // 回零功能块
mcMoveAbsolute: MC_MOVEABSOLUTE; // 绝对定位功能块
mcMoveRelative: MC_MOVERELATIVE; // 相对定位功能块
mcMoveVelocity: MC_MOVEVELOCITY; // 速度运动功能块
mcStop: MC_STOP; // 停止功能块
// 状态变量
bPowerOn: BOOL; // 电源开启状态
bHomed: BOOL; // 回零完成状态
bBusy: BOOL; // 忙状态
bError: BOOL; // 错误状态
diErrorCode: INT; // 错误代码
END_VAR
// IO映射实现
// 将物理IO映射到程序变量
PROGRAM MAIN
VAR_INPUT
// 物理输入映射 - 根据实际硬件配置调整地址
PHYSICAL_INPUT01 AT %I0.0: BOOL;
PHYSICAL_INPUT02 AT %I0.1: BOOL;
PHYSICAL_INPUT03 AT %I0.2: BOOL;
PHYSICAL_INPUT04 AT %I0.3: BOOL;
PHYSICAL_INPUT05 AT %I0.4: BOOL;
PHYSICAL_INPUT06 AT %I0.5: BOOL;
PHYSICAL_INPUT07 AT %I0.6: BOOL;
PHYSICAL_INPUT08 AT %I0.7: BOOL;
PHYSICAL_INPUT09 AT %I1.0: BOOL;
PHYSICAL_INPUT10 AT %I1.1: BOOL;
END_VAR
VAR_OUTPUT
// 物理输出映射 - 根据实际硬件配置调整地址
PHYSICAL_OUTPUT01 AT %Q0.0: BOOL;
PHYSICAL_OUTPUT02 AT %Q0.1: BOOL;
PHYSICAL_OUTPUT03 AT %Q0.2: BOOL;
PHYSICAL_OUTPUT04 AT %Q0.3: BOOL;
PHYSICAL_OUTPUT05 AT %Q0.4: BOOL;
END_VAR
VAR
// 本地变量
END_VAR
// IO映射操作
// 输入映射
stInputs.bPositiveLimit := PHYSICAL_INPUT01;
stInputs.bNegativeLimit := PHYSICAL_INPUT02;
stInputs.bOriginSensor := PHYSICAL_INPUT03;
stInputs.bEmergencyStop := PHYSICAL_INPUT04;
stInputs.bStartBtn := PHYSICAL_INPUT05;
stInputs.bStopBtn := PHYSICAL_INPUT06;
stInputs.bJogPlusBtn := PHYSICAL_INPUT07;
stInputs.bJogMinusBtn := PHYSICAL_INPUT08;
// 输出映射
PHYSICAL_OUTPUT01 := stOutputs.bReadyLED;
PHYSICAL_OUTPUT02 := stOutputs.bRunningLED;
PHYSICAL_OUTPUT03 := stOutputs.bErrorLED;
PHYSICAL_OUTPUT04 := stOutputs.bOutput01;
PHYSICAL_OUTPUT05 := stOutputs.bOutput02;
END_PROGRAM
3.2轴使能控制// 轴使能控制程序
mcPower(
Axis := Axis1,
Enable := TRUE,
Enable_Positive := TRUE,
Enable_Negative := TRUE,
Status => bPowerOn,
Busy => bBusy,
Error => bError,
ErrorCode => diErrorCode
);
// 检查使能状态并更新输出
IF bPowerOn THEN
stOutputs.bReadyLED := TRUE;
stOutputs.bErrorLED := FALSE;
ELSE
stOutputs.bReadyLED := FALSE;
IF bError THEN
stOutputs.bErrorLED := TRUE;
END_IF
END_IF;
3.3回零操作// 回零操作程序
// 当启动按钮按下且系统已使能但未回零时,执行回零操作
IF stInputs.bStartBtn AND bPowerOn AND NOT bHomed THEN
mcHome(
Axis := Axis1,
Execute := TRUE,
Position := 0.0,
Done => ,
Busy => bBusy,
Error => bError,
ErrorCode => diErrorCode
);
END_IF;
// 回零完成检测
IF mcHome.Done THEN
bHomed := TRUE;
stOutputs.bRunningLED := TRUE;
END_IF;
3.4点动运动控制// 点动运动控制程序
// 正点动
IF stInputs.bJogPlusBtn AND bPowerOn AND bHomed THEN
mcMoveVelocity(
Axis := Axis1,
Execute := TRUE,
Velocity := 1000.0,
Acceleration := 10000.0,
Deceleration := 10000.0,
Direction := MC_POSITIVE_DIRECTION,
Busy => bBusy,
Error => bError,
ErrorCode => diErrorCode
);
END_IF;
// 负点动
IF stInputs.bJogMinusBtn AND bPowerOn AND bHomed THEN
mcMoveVelocity(
Axis := Axis1,
Execute := TRUE,
Velocity := 1000.0,
Acceleration := 10000.0,
Deceleration := 10000.0,
Direction := MC_NEGATIVE_DIRECTION,
Busy => bBusy,
Error => bError,
ErrorCode => diErrorCode
);
END_IF;
// 点动按钮释放时停止
IF NOT stInputs.bJogPlusBtn AND NOT stInputs.bJogMinusBtn THEN
mcStop(
Axis := Axis1,
Execute := TRUE,
Deceleration := 10000.0,
Done => ,
Busy => bBusy,
Error => bError,
ErrorCode => diErrorCode
);
END_IF;
3.5绝对位置运动// 绝对位置运动程序
// 当启动按钮按下且系统已使能且已回零时,执行绝对运动
IF stInputs.bStartBtn AND bPowerOn AND bHomed THEN
mcMoveAbsolute(
Axis := Axis1,
Execute := TRUE,
Position := 5000.0,
Velocity := 2000.0,
Acceleration := 10000.0,
Deceleration := 10000.0,
Done => ,
Busy => bBusy,
Error => bError,
ErrorCode => diErrorCode
);
END_IF;
4.调试与监控4.1 PDO变量监控在Sysmac Studio的I/O映射中,可对PDO变量进行监控。这有助于调试和验证通信是否正确建立。
4.2常见故障排除1. 通信故障:检查EtherCAT网络连接、节点地址设置和ESI文件是否正确导入1
2. 电机不运动:检查使能信号、脉冲输出和驱动器参数设置
3. 位置偏差:检查细分设置、齿轮比和单位换算配置
4. 限位故障:检查限位开关接线和极性设置
5.总结本文详细介绍了欧姆龙NJ系列PLC通过EtherCAT总线控制雷赛步进电机的完整过程,包括硬件配置、接线方式、参数设置以及ST语言程序编写。通过使用IO映射和标签变量,程序可读性和维护性大大提高。
关键配置要点:
2. 导入正确的ESI文件到Sysmac Studio 4. 使用ST语言编写结构化程序,实现运动控制功能
5. 通过IO映射将物理IO与程序变量关联
这种方法不仅适用于雷赛步进电机,也可作为其他EtherCAT从站设备配置的参考,为工业自动化系统提供了一种高效、可靠的解决方案。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!