博派智能-运动控制技术-PSO(位置同步输出)

 1、原理

PSO也叫位置同步输出。可以在轴运动中,精确控制指定间距输出指定宽度的脉冲,普通的PWM是以时间为周期,输出指定宽度的脉冲,二者有本质不同,左图为普通PWM功能的脉冲示意图,右图为PSO功能模式下,脉冲示意图。可见PSO功能的输出脉冲,在轨迹分布上更加均匀。

如果运动控制卡没有该功能,难以实现轨迹加工中的等间距脉冲输出,特定场合功能受限。

该功能常用于喷射点胶,激光焊机等应用场合。

2、具体代码

这里以博派智能的ETH_GAS系列网口运动控制卡为例说明,该运动控制卡有2-16路步进/伺服控制接口,每路接口都有编码器/脉冲/方向/报警/使能等信号,支持自动回零/点位/直线/圆弧插补/PT运动等功能,支持高速硬件捕获、比较输出/飞拍、PSO。高端款PMC系列甚至支持RTCP五轴联动,Delta/Scara/6轴机器人算法。

PSO相关函数一览表

API

说明

MC_CmpPluse

设置PSO输出IO立即输出指定电平或者脉冲

MC_BufPSO

缓冲区指令,开启PSO

参数详细说明:

int MC_CmpPluse(short nChannelMask, short nPluseType1, short nPluseType2, short nTime1,short nTime2, short nTimeFlag1, short nTimeFlag2)

nChannel

bit0表示通道1,bit1表示通道2

nPluseType1

通道1输出类型,0低电平1高电平2脉冲

nPluseType2

通道2输出类型,0低电平1高电平2脉冲        

nTime1

通道1脉冲持续时间

nTime2

通道2脉冲持续时间

nTimeFlag1

比较器1的脉冲时间单位,0:us,1:ms

nTimeFlag2

比较器2的脉冲时间单位,0:us,1:ms

示例代码:

int iRes = 0;

//下面代码控制PSO端口输出高电平(手动测试用)。

//第1个参数为1代表通道1

//第2个参数为1,代表立即输出高电平

//第3个参数预留,固定为1,无意义

//第4个参数代表脉冲时间,这里因为是输出高电平,并非脉冲,所以无意义

//第5个参数为预留,跟第4个参数相同即可

//第6个参数为时间单位,0代表微秒,1代表毫秒(这里因为是输出高电平,所以参数6无意义)

//第7个参数为预留,与第6个参数相同即可

iRes = MC_CmpPluse(1,1,1,100,100,0,0);

//下面代码控制PSO端口输出低电平(手动测试用)。

//第1个参数为1代表通道1

//第2个参数为0,代表立即输出低电平

//第3个参数预留,固定为1,无意义

//第4个参数代表脉冲时间,这里因为是输出高电平,并非脉冲,所以无意义

//第5个参数为预留,跟第4个参数相同即可

//第6个参数为时间单位,0代表微秒,1代表毫秒(这里因为是输出高电平,所以参数6无意义)

//第7个参数为预留,与第6个参数相同即可

iRes = MC_CmpPluse(1,0,1,100,100,0,0);

//下面代码控制PSO端口输出一个200ms的脉冲(手动测试用)。

//第1个参数为1代表通道1

//第2个参数为0,代表立即输出低电平

//第3个参数预留,固定为1,无意义

//第4个参数代表脉冲时间,这里因为是输出高电平,并非脉冲,所以无意义

//第5个参数为预留,跟第4个参数相同即可

//第6个参数为时间单位,0代表微秒,1代表毫秒

//第7个参数为预留,与第6个参数相同即可

iRes = MC_CmpPluse(1,2,1,200,200,1,1);

Int MC_BufPSO(short nCrdNum,short nPSONum,short nEnableFlag,short nMode,unsigned long ulMask,double dPitch,unsigned long ulTime,short nFirstFlag,short nFifoIndex,long lUserSegNum)

nCrdNum

坐标系号,从1开始

nPSONum

PSO端口号,从1开始

nEnableFlag

0关闭PSO,1开启PSO

nMode

固定0

ulMask

坐标系中,参与PSO功能的轴掩码,有的旋转轴不参与PSO

dPitch

PSO间距,单位脉冲

ulTime

PSO持续时间,单位us

nFirstFlag

起始点是否输出,1输出,0不输出

nFifoIndex

固定0

lUserSegNum

用户自定义段号

例程代码:

       

g_MultiCard.MC_LnXYZ(1,0,0,0,20,1,0,0,0);

    /*
    函数名:    MC_BufPSO(short nCrdNum,short nPSOMask,short nEnableFlag,short nMode,unsigned long ulMask,double dPitch,unsigned long ulTime,short nFirstFlag,short nFifoIndex,long lUserSegNum)
    函数说明:    缓存区指令,开启PSO
    参数说明:    nCrdNum坐标系号,取值范围:[1,CRDSYS_MAX_COUNT]
                nPSOMask:PSO掩码
                nEnableFlag   0关闭,1开启
                nMode:    无意义,固定0
                ulMask:   坐标系中,参数PSO的轴,有的旋转轴,不参与
                dPitch:PSO间距,单位脉冲
                ulTime:PSO持续时间,单位us
                nFirstFlag:起始点是否输出,1输出,0不输出
                nFifoIndex:固定0
                lUserSegNum:用户自定义段号
    返回值:    0成功,其他失败    
    注意事项:
    */
    g_MultiCard.MC_BufPSO(1,1,1,0,0X03,1000,20,1,0,0);
    //直线插补
    g_MultiCard.MC_LnXYZ(1,iLength,0,0,dVel,dAcc,0,0,0);
    g_MultiCard.MC_LnXYZ(1,iLength,iLength,0,dVel,dAcc,0,0,0);

    g_MultiCard.MC_LnXYZ(1,0,iLength,0,dVel,dAcc,0,0,0);
    g_MultiCard.MC_LnXYZ(1,0,0,0,dVel,dAcc,0,0,0);

    g_MultiCard.MC_CrdData(1,0,0);

博派智能ETH_GAS系列4轴运动控制卡接线示意图(8轴和16轴篇幅限制没有放上来)

博派智能ETH_GAS系列4轴运动控制卡应用示意图(8轴和16轴篇幅限制没有放上来)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值