应用背景
运动控制器正朝着高速度、高精度、开放式的方向发展,不仅对运动控制功能精益求精,还增加了视觉相关的定位、测量、检测和识别等,多种功能的穿插使用进一步增加了在编程设计代码时的复杂程度。
为了给客户提供更好地软件框架,简化程序结构、节省内存空间、提高代码可读性。
正运动技术在VPLC532E机器视觉运动控制一体机上增加了结构体功能,方便客户在大型项目上更高效的进行项目开发。
VPLC532E是正运动推出的一款EtherCAT视觉总线控制器,控制器集成了2个千兆以太网以及2个USB3.0、2个USB2.0接口,支持多种工业相机,支持多种视觉功能和复杂的运动控制功能。
VPLC532E硬件介绍
1.集成RS232、RS485、CAN接口、2路USB3.0、2路USB2.0接口。
2.2路千兆EtherNet、1路百兆EtherCAT、6个本地轴接口。
3.24进12出数字IO,其中4路高速输出,4路高速输入、2路vwin 量输出。
4.支持市场主流的USB3.0相机与GigE相机。
VPLC532E功能介绍
1.支持最多达32轴直线插补、任意空间圆弧插补、螺旋插补、样条插补。2.支持电子凸轮、电子齿轮、位置锁存、同步跟随、虚拟轴等功能。3.支持硬件比较输出(HW_PSWITCH2),硬件定时器,运动中精准输出。4.支持脉冲闭环,螺距补偿等功能。5.支持ZBasic多文件多任务编程。6.多种程序加密手段,保护客户的知识产权。7.掉电检测,掉电存储。
实现指令
1.STRUCTURE --结构体定义
Structure结构名称
Dim成员1名称[As数据类型1]
......
Dim成员n名称[(数组长度)][As数据类型1]End Structure
2.FLASH_WRITEDBL-- flash存储-double
FLASH_WRITEDBL sect_num [, varname] [, arrayname] [, arrayname(a)] [, arrayname(a,length)]
sect_num:flash块编号,不同类型不一样。
varname:变量名。
arrayname:数组名,可以为TABLE,VR,MODBUS。
a:操作的数组索引。
length:操作的数组元素个数。
结构体应用例程
该例程主要是对三轴的机械参数和配方文件以结构体框架来实现,通过结构体变量嵌套使用来减少变量,降低内存占用,提高代码的可复用性。
1.创建结构体变量
GLOBALSUBHMI_INIT() GLOBALgv_CurParamNum'当前配方号 gv_CurParamNum=0 GLOBALgv_PageNum'页码 gv_PageNum=0 GLOBALCONSTgv_SysMaxAxis=3'最大轴数 GLOBALSTRUCTUREAxisParam '''轴参数 DIMNo'轴号 DIMAxisAtype'轴类型 DIMAxisDpos'轴的当前位置 DIMOnePulses'轴电机一圈脉冲数 DIMAxisPitch'轴螺距 DIMAxisSpeed'轴的运动速度 DIMAxisAccel'轴的加速度 DIMAxisDecel'轴的减速度 DIMAxisSramp'轴的S曲线时间 DIMAxisLspeed'轴的起始速度 DIMFsLimit'轴正限位 DIMRsLimit'轴负限位 '''回零参数 DIMDatumMode'轴回零模式 DIMBackZeroSpeed'轴的回零速度 DIMAxisCreep'轴的回零第2段速度 DIMDatumIn'轴原点信号 DIMFwdIn'轴正限位信号 DIMRevIn'轴负限位信号 ENDSTRUCTURE GLOBALSTRUCTURESysParam DIMSysAxis(gv_SysMaxAxis)ASAxisParam'系统轴数 DIMFileName(50)'参数文件名 ENDSTRUCTURE GLOBALgs_SysParam(50)ASSysParam'定义系统结构体变量 LOCALlv_i FORlv_i=0togv_SysMaxAxis-1 '初始化轴参数变量 gs_SysParam(0).SysAxis(lv_i).No=lv_i gs_SysParam(0).SysAxis(lv_i).AxisAtype=0'轴类型 gs_SysParam(0).SysAxis(lv_i).OnePulses=8388608'轴电机一圈脉冲数 gs_SysParam(0).SysAxis(lv_i).AxisPitch=20'轴螺距 gs_SysParam(0).SysAxis(lv_i).AxisSpeed=100'轴的运动速度 gs_SysParam(0).SysAxis(lv_i).AxisAccel=1000'轴的加速度 gs_SysParam(0).SysAxis(lv_i).AxisDecel=1000'轴的减速度 gs_SysParam(0).SysAxis(lv_i).AxisSramp=0'轴的S曲线时间 gs_SysParam(0).SysAxis(lv_i).AxisLspeed=0'轴的起始速度 '初始化回零参数变量 gs_SysParam(0).SysAxis(lv_i).DatumMode=104'轴的回零模式 gs_SysParam(0).SysAxis(lv_i).BackZeroSpeed=50'轴的回零速度 gs_SysParam(0).SysAxis(lv_i).AxisCreep=2'轴的回零第2段速度 gs_SysParam(0).SysAxis(lv_i).DatumIn=-1'轴的回零信号 gs_SysParam(0).SysAxis(lv_i).FwdIn=-1'轴的正向硬限位信号 gs_SysParam(0).SysAxis(lv_i).RevIn=-1'轴的负向硬限位信号 gs_SysParam(0).SysAxis(lv_i).FsLimit=1000'轴正限位 gs_SysParam(0).SysAxis(lv_i).RsLimit=-1000'轴负限位 '初始化参数文件 gs_SysParam(0).FileName="NONE"'初始化参数文件名 NEXT FORlv_i=0to49 gs_SysParam(lv_i)=gs_SysParam(0)'初始化其他配方参数 NEXT ENDSUB
2.保存配置文件
GLOBALSUBSaveCurParam() LOCALiflsflag iflsflag=70214733 FLASH_WRITEDBLgv_CurParamNum,iflsflag,gs_SysParam(gv_CurParamNum) ?"下载成功" ENDSUB
3.读取配置文件
GLOBALSUBLoadCurParam() LOCALiflsflag,lv_i,addnum FORlv_i=0TO49 iflsflag=0 FLASH_READDBLlv_i,iflsflag IFiflsflag=70214733THEN FLASH_READ2DBLlv_i,1,gs_SysParam(lv_i) addnum=addnum+1 ENDIF NEXT ?"上传完成,上传配置文件数:"addnum ENDSUB
4.删除配置文件
GLOBALSUBDeleCurParam() LOCALlv_i FORlv_i=0togv_SysMaxAxis-1 '初始化轴参数变量 gs_SysParam(gv_CurParamNum).SysAxis(lv_i).No=lv_i gs_SysParam(gv_CurParamNum).SysAxis(lv_i).AxisAtype=0'轴类型 gs_SysParam(gv_CurParamNum).SysAxis(lv_i).OnePulses=8388608'轴电机一圈脉冲数 gs_SysParam(gv_CurParamNum).SysAxis(lv_i).AxisPitch=20'轴螺距 gs_SysParam(gv_CurParamNum).SysAxis(lv_i).AxisSpeed=100'轴的运动速度 gs_SysParam(gv_CurParamNum).SysAxis(lv_i).AxisAccel=1000'轴的加速度 gs_SysParam(gv_CurParamNum).SysAxis(lv_i).AxisDecel=1000'轴的减速度 gs_SysParam(gv_CurParamNum).SysAxis(lv_i).AxisSramp=0'轴的S曲线时间 gs_SysParam(gv_CurParamNum).SysAxis(lv_i).AxisLspeed=0'轴的起始速度 '初始化回零参数变量 gs_SysParam(gv_CurParamNum).SysAxis(lv_i).DatumMode=104'轴的回零模式 gs_SysParam(gv_CurParamNum).SysAxis(lv_i).BackZeroSpeed=50'轴的回零速度 gs_SysParam(gv_CurParamNum).SysAxis(lv_i).AxisCreep=2'轴的回零第2段速度 gs_SysParam(gv_CurParamNum).SysAxis(lv_i).DatumIn=-1'轴的回零信号 gs_SysParam(gv_CurParamNum).SysAxis(lv_i).FwdIn=-1'轴的正向硬限位信号 gs_SysParam(gv_CurParamNum).SysAxis(lv_i).RevIn=-1'轴的负向硬限位信号 gs_SysParam(gv_CurParamNum).SysAxis(lv_i).FsLimit=1000'轴正限位 gs_SysParam(gv_CurParamNum).SysAxis(lv_i).RsLimit=-1000'轴负限位 '初始化参数文件 gs_SysParam(gv_CurParamNum).FileName="NONE"'初始化参数文件名 NEXT LOCALiflsflag iflsflag=0 FLASH_WRITEDBLgv_CurParamNum,iflsflag,gs_SysParam(gv_CurParamNum) ?"删除成功" ENDSUB
本次,正运动技术机器视觉运动控制一体机结构体功能上线,助力客户高效开发,就分享到这里。
更多精彩内容请关注“正运动小助手”公众号,需要相关开发环境与例程代码,请咨询正运动技术销售工程师。
本文由正运动技术原创,欢迎大家转载,共同学习,一起提高中国智能制造水平。文章版权归正运动技术所有,如有转载请注明文章来源。
审核编辑黄宇
-
机器视觉
+关注
关注
161文章
4369浏览量
120278 -
一体机
+关注
关注
0文章
890浏览量
32707 -
自动化
+关注
关注
29文章
5562浏览量
79239 -
运动控制
+关注
关注
4文章
579浏览量
32855
发布评论请先 登录
相关推荐
评论