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

相关推荐
tianxuanjg6 小时前
无人机科研轻量化结构件采购指南|高校实验室选型避坑:轻量化与结构强度如何兼顾
人工智能·经验分享·机器人·无人机·制造
美狐美颜SDK开放平台7 小时前
开发直播APP、电商短视频与视频社交平台时,能否共用一套美颜SDK?
android·图像处理·人工智能·音视频·直播美颜sdk
海盗12348 小时前
微软技术日报 2026-11-02:开发者环境服务退役、Defender 清点本地 AI 代理
人工智能·microsoft·机器人·人工智能aigc
m0_719640878 小时前
2026年高校科研用轮式双臂机器人二次开发平台怎么部署搭建
经验分享·机器人
品牌常新8 小时前
室外巡检机器人推荐:园区与厂区怎么选
数据库·人工智能·机器人
爱吃火鸡面呀8 小时前
OpenCV 颜色识别实战:从 HSV 原理到摄像头实时检测
人工智能·opencv·计算机视觉
会议咨询8 小时前
2027年神经网络、计算机视觉与信息工程国际会议(NCVIE 2027)
人工智能·神经网络·计算机视觉
Bode_200210 小时前
机器人自动化装配线 SPC 控制图工程实战案例与计算报告
机器人·智能制造
ahccqw12 小时前
OpenCV 缩放 与 位移
人工智能·opencv·计算机视觉
Martina_03211 天前
AI生成的3D模型打印后沿层纹开裂?用6步检查方向、壁厚与填充
图像处理·人工智能·数学建模·3d·自然语言处理·游戏策划·1024程序员节