CODESYS控制总线驱动器实现步进电机单轴运动

总体配置流程

1,拿到驱动的XML文件安装到设备库中,点击安装选中要安装的XML即可

2,建立总线设备,先选中主设备,点击添加设备,选择工业以太网,选择主站,选中EtherCat Master SoftMotion选项,设备树中就会显示

3,从EtherCat Master SoftMotion点击添加设备,选中刚才加入的XML文件,再点击添加好的驱动名称,添加CIA402轴,不选精简那个。同时可以给轴重命名方便编程,这里我改为AXIS1.

4,配置总线部分的连接,网络名称以及MAC寻址,选择其中一种即可,这个是根据网口的地址来

5,此时编写代码已经可以控制轴使能,点动等。代码如下,用到的是codesys里面的MC运动功能块。PS:其中的变量都可以自己定义,我这里使用的是设备中的DO和变量控制的,可以自己添加布尔量及INT等变量来控制。

//电机使能FB功能块
MC_Power_FB(
    Axis:=AXIS1 , //电机名称
    Enable:= TRUE, //此处有输入才可以上使能
    bRegulatorOn:=DO32 , //触发上使能
    bDriveStart:=DO32 , //解除停止状态
    Status=>DO41 ,//输出时代表可以运行轴
    bRegulatorRealState=> , 
    bDriveStartRealState=> , 
    Busy=> , 
    Error=>DO42 , //报警状态输出
    ErrorID=> );
    
//电机点动功能块    
MC_Jog_FB(
    Axis:= AXIS1, 
    JogForward:=DO35 , //控制电机正转
    JogBackward:=DO34 , //控制电机反转
    Velocity:=R46 , //轴速度映射
    Acceleration:= R47, //轴加速度映射
    Deceleration:= R48, //轴减速度映射
    Jerk:=1, //轴跃度(无需处理)
    Busy=> , 
    CommandAborted=> , 
    Error=> , 
    ErrorId=> );
    
//电机停止功能块
MC_Stop_FB(
    Axis:=AXIS1 , 
    Execute:= DO33, //停止DO
    Deceleration:= 100, 
    Jerk:= 100, 
    Done=> , 
    Busy=> , 
    Error=> , 
    ErrorID=> );
    
//电机绝对位置FB功能块
MC_MoveAbsolute_FB(
    Axis:= AXIS1, //轴名称
    //Execute:=Data.GetDO(36) , //触发DO上升沿开始运行
    Execute:= , //测试用
    Position:=,
    Velocity:= R5, //轴速度映射
    Acceleration:= 10, //轴加速度映射
    Deceleration:= 10, //轴减速度映射
    Jerk:=5, //轴跃度(无需处理)
    Direction:= , 
    Done=>DO43 , //运动完成时置为TRUE,可以判断这个DO进行运动是否完成信号
    Busy=> , 
    CommandAborted=> , 
    Error=> , 
    ErrorID=> );
    

SMC3_ReinitDrive_FB(
    Axis:= AXIS1, 
    bExecute:= EtherCAT_Master_SoftMotion.xDistributedClockInSync, //此FB用于处理异常通讯自动复位,无需处理,多轴时进行复制即可
    bVirtual:= , 
    bDone=> , 
    bBusy=> , 
    bError=> , 
    nErrorID=> );
    
MC_Reset_FB(
    Axis:=AXIS1 , 
    Execute:= DO37, //复位轴错误
    Done=> , 
    Busy=> , 
    Error=> , 
    ErrorID=> );

选中轴,在基本视图中可以看到轴的设置值和实际位置。

6,电子齿轮比

1,增量电机转这里,右边的电机转1圈,代表需要用多少个脉冲,我用的这款电机是2000P,不过驱动厂家应该是做了倍频处理,乘以4,也就是8000,如果下面那些都设置成1的话,这里就代表我们此时给让当前位置加1的话,电机旋转一圈。

MC_MoveAbsolute_FB.Position:=0;

MC_MoveAbsolute_FB.Position:=1;(执行机构旋转一圈)

2,电机转动齿轮输出转这里,代表电机转动多少圈,减速机输出一圈。

3,减速机输出转应用的单位这里,由于我这个应用是电机旋转要和视觉配合,只关心其旋转角度,所以写上360。

MC_MoveAbsolute_FB.Position:=0;

MC_MoveAbsolute_FB.Position:=1; (执行机构旋转1度)

MC_MoveAbsolute_FB.Position:=360;(执行机构旋转360度)

  • 14
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值