抖音粉丝群1
『7x24小时有问必答』

AI浪潮下的计算机行业——从业者现状与未来展望
本文将详细探讨如何使用欧姆龙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通信:使用网线将NJPLCEtherCAT端口与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
);
注意DM3CCL3C系列中,数据类型为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 StudioI/O映射中,可对PDO变量进行监控

。这有助于调试和验证通信是否正确建立。
4.2常见故障排除
1. 通信故障:检查EtherCAT网络连接、节点地址设置和ESI文件是否正确导入1
2. 电机不运动:检查使能信号、脉冲输出和驱动器参数设置
3. 位置偏差:检查细分设置、齿轮比和单位换算配置
4. 限位故障:检查限位开关接线和极性设置
5.总结
本文详细介绍了欧姆龙NJ系列PLC通过EtherCAT总线控制雷赛步进电机的完整过程,包括硬件配置、接线方式、参数设置以及ST语言程序编写。通过使用IO映射和标签变量,程序可读性和维护性大大提高。
关键配置要点:
1. 正确设置节点地址并通过拨码开关配置

2. 导入正确的ESI文件到Sysmac Studio

3. 配置PDO参数和轴参数以适应应用需求

4. 使用ST语言编写结构化程序,实现运动控制功能
5. 通过IO映射将物理IO与程序变量关联
这种方法不仅适用于雷赛步进电机,也可作为其他EtherCAT从站设备配置的参考,为工业自动化系统提供了一种高效、可靠的解决方案。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 获取邀请码

本版积分规则

上一主题上一主题         下一主题下一主题
QQ手机版小黑屋粤ICP备17165530号

Copyright 2010-2015. All rights reserved. 

微信公众号二维码 抖音二维码 百家号二维码 今日头条二维码哔哩哔哩二维码