博派智能-运动控制技术-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轴篇幅限制没有放上来)

相关推荐
AI的探索之旅1 天前
97 个 OpenCV 实例(三十):双目立体,从标定到点云
人工智能·opencv·计算机视觉
美狐美颜SDK开放平台1 天前
开发直播APP时如何接入视频美颜SDK?开发流程与注意事项
android·人工智能·计算机视觉·音视频·直播美颜sdk
风合星语1 天前
2026 具身智能技术实战(一):VLA 到底怎么控制机器人?——用 LeRobot 跑通 SmolVLA 推理
pytorch·机器人·具身智能·vla·lerobot·smolvla
鲁邦通物联网1 天前
图书馆机器人跨楼层运行,机器人梯控低噪设计与架构分析
机器人·巡检机器人·机器人梯控·agv梯控·非侵入式采集·机器人乘梯·机器人自主乘梯
拉你进_教堂1 天前
小龙虾技能之【Parkinson‘s & Epileptic Behavior Recognition Skill | 帕金森癫痫行为识别技能】简介
人工智能·计算机视觉·多模态大模型·openclaw小龙虾技能
PascalXie1 天前
人形机器人的“眼睛“:多目视觉方案怎么选?
计算机视觉·机器人
广州虚拟动力-动捕&虚拟主播1 天前
产教融合,具身智能数据采集实训室打造五大真实场景
机器人
普密斯科技1 天前
替代传统影像仪,摄像头磨切片测量新方案实测
计算机视觉·集成测试·测量
微信开发api1 天前
微信iPad协议怎么用?基于协议的二次开发实践
微信·机器人·ipad
QYR-分析1 天前
机器人精密运动升级,机器人关节动态旋转密封件行业全景市场报告
人工智能·机器人