运动控制器PSO视觉飞拍与精准输出的C++开发(三):二维/三维/多轴PSO输出
ZMC408CE是正运动推出的一款多轴高性能EtherCAT总线运动控制器,具有EtherCAT、EtherNET、RS232、CAN和U盘等通讯接口,ZMC系列运动控制器可应用于各种需要脱机或联机运行的场合。
ZMC408CE内置高精度PSO位置同步输出功能,在加工圆角与曲线时即使进行有减速调整,在高速加工的场合中也能控制激光输出的等间距输出。
1.新建MFC项目并添加函数库
注:本例程在VS2010编译环境下,基于.NET Framework 4.0框架创建的MFC窗体应用程序。
(1)工具栏菜单“文件”→“新建”→“项目”,启动创建项目向导。
4.查看PC函数手册
5.控制器网口连接函数接口
7.硬件定时器函数接口
ZAux_Direct_HwTimer硬件定时器硬件比较输出后一段时间还原电平。
1.Demo交互界面如下
(1)2D比较(模式25)
opstate:第一个比较点的输出状态;
maxerr:比较位置每个轴左右的脉冲偏差,进入偏差范围后开始比较,此参数不能写0;
num:table里面存储的比较点坐标个数;
tablepos:第一个比较点坐标所在table编号。
该模式主要功能为,碰到设置好的二维比较点之后,输出口电平反转。
语法:HW_PSWITCH2(26,opnum,opstate,maxerr,num,tablepos,[ophwtimeus,ophwtimes,hwcyctimeus])
3.三维比较模式
(1)3D比较(模式35)
语法:HW_PSWITCH2(35,opnum,opstate,maxerr,num,tablepos)
该模式主要功能为,碰到设置好的三维比较点之后,输出口电平反转。
核心程序示例:
/*参数:mode 25, 26 ,35,36.2D/3D的比较模式 Axisnum:轴数组 Opnum :对应的输出口 Opstate: 第一个比较点的输出状态. maxerr:比较位置每个轴左右的脉冲偏差, 进入偏差范围后开始比较. num :TABLE 里面存储的比较点个数. tablepos: 第一个比较点坐标所在 TABLE 编号 与 hwtimer 并用时, 可以动态调整 hwtimer 参数. ModePara1:脉冲时间 ModePara2:脉冲个数 ModePara3:脉冲周期 */ int32 CMyControlDlg:: ZAux_Direct_HwPswitch2_2D(ZMC_HANDLE handle, int *Axisnum,int Mode,int Opnum , int Opstate,int maxerr,int num, int tablepos, float ModePara1, float ModePara2,float ModePara3) { if(0 > Axisnum[0] || Axisnum[0] > MAX_AXIS_AUX) { return ERR_AUX_PARAERR; } char cmdbuff[2048]; char tempbuff[2048]; char cmdbuffAck[2048]; //生成命令 sprintf(cmdbuff, "BASE(%d,%d)\n", Axisnum[0], Axisnum[1]); switch(Mode) { case 25: sprintf(tempbuff, "HW_PSWITCH2(%d,%d,%d,%d,%d,%d)", Mode, Opnum, Opstate, maxerr,num,tablepos); strcat(cmdbuff, tempbuff); break; case 26: sprintf(tempbuff, "HW_PSWITCH2(%d,%d,%d,%d,%d,%d,%f,%f,%f)", Mode,Opnum, Opstate, maxerr,num,tablepos,ModePara1,ModePara2,ModePara3); strcat(cmdbuff, tempbuff); break; case 35: sprintf(tempbuff, "HW_PSWITCH2(%d,%d,%d,%d,%d,%d)", Mode, Opnum, Opstate, maxerr,num,tablepos); strcat(cmdbuff, tempbuff); break; case 36: sprintf(tempbuff, "HW_PSWITCH2(%d,%d,%d,%d,%d,%d,%f,%f,%f)", Mode,Opnum, Opstate, maxerr,num,tablepos,ModePara1,ModePara2,ModePara3); strcat(cmdbuff, tempbuff); break; default: return ERR_AUX_PARAERR; break; } //调用命令执行函数 int ret=ZAux_Execute(handle, cmdbuff, cmdbuffAck,2048); if (strlen(cmdbuffAck)!=0) return ERR_ACKERROR; return ret; }
(2)3D比较(模式36)
/*参数:mode 25, 26 ,35,36.2D/3D的比较模式 Axisnum:轴数组 Opnum :对应的输出口 Opstate: 第一个比较点的输出状态. maxerr:比较位置每个轴左右的脉冲偏差, 进入偏差范围后开始比较. num:TABLE 里面存储的比较点个数. tablepos: 第一个比较点坐标所在 TABLE 编号 与 hwtimer 并用时, 可以动态调整 hwtimer 参数. ModePara1:脉冲时间 ModePara2:脉冲个数 ModePara3:脉冲周期 */ int32 CMyControlDlg:: ZAux_Direct_HwPswitch2_2D(ZMC_HANDLE handle, int *Axisnum,int Mode,int Opnum , int Opstate,int maxerr,int num, int tablepos, float ModePara1, float ModePara2,float ModePara3) { if(0 > Axisnum[0] || Axisnum[0] > MAX_AXIS_AUX) { return ERR_AUX_PARAERR; } char cmdbuff[2048]; char tempbuff[2048]; char cmdbuffAck[2048]; //生成命令 sprintf(cmdbuff, "BASE(%d,%d)\n", Axisnum[0], Axisnum[1]); switch(Mode) { case 25: sprintf(tempbuff, "HW_PSWITCH2(%d,%d,%d,%d,%d,%d)", Mode, Opnum, Opstate, maxerr,num,tablepos); strcat(cmdbuff, tempbuff); break; case 26: sprintf(tempbuff, "HW_PSWITCH2(%d,%d,%d,%d,%d,%d,%f,%f,%f)", Mode,Opnum, Opstate, maxerr,num,tablepos,ModePara1,ModePara2,ModePara3); strcat(cmdbuff, tempbuff); break; case 35: sprintf(tempbuff, "HW_PSWITCH2(%d,%d,%d,%d,%d,%d)", Mode, Opnum, Opstate, maxerr,num,tablepos); strcat(cmdbuff, tempbuff); break; case 36: sprintf(tempbuff, "HW_PSWITCH2(%d,%d,%d,%d,%d,%d,%f,%f,%f)", Mode,Opnum, Opstate, maxerr,num,tablepos,ModePara1,ModePara2,ModePara3); strcat(cmdbuff, tempbuff); break; default: return ERR_AUX_PARAERR; break; } //调用命令执行函数 int ret=ZAux_Execute(handle, cmdbuff, cmdbuffAck,2048); if (strlen(cmdbuffAck)!=0) return ERR_ACKERROR; return ret; }
本次,正运动技术运动控制器PSO视觉飞拍与精准输出的C++开发(三):二维/三维/多轴PSO输出,就分享到这里。
更多精彩内容请关注“正运动小助手”公众号,需要相关开发环境与例程代码,请咨询正运动技术销售工程师:400-089-8936。
<section data-source="bj.96weixin.com" style="margin: 0px 0px 32px; padding: 0px; outline: 0px; max-width: 100%; color: rgb(34, 34, 34); font-family: system-ui, -apple-system, BlinkMacSystemFont, " helvetica="" neue",="" "pingfang="" sc",="" "hiragino="" sans="" gb",="" "microsoft="" yahei="" ui",="" yahei",="" arial,="" sans-serif;="" letter-spacing:="" 0.544px;="" background-color:="" rgb(255,="" 255,="" 255);="" line-height:="" 1.5em;="" text-indent:="" 0em;="" box-sizing:="" border-box="" !important;="" overflow-wrap:="" break-word="" !important;"="">
提交
正运动全国产EtherCAT运动控制器ZMC432H用户手册
正运动全国产EtherCAT运动控制器ZMC432H
正运动技术运动控制器如何快速实现单轴/多轴同步跟随功能?
正运动ECI1408运动控制卡用户手册
正运动机器视觉运动控制一体机VPLC710