3.3.1 获得CNC文件
轨迹1采用3轴CNC---X轴、Y轴、R轴
非笛卡尔坐标系,需要采用InoTouchPad程序获取包含G代码的CNC文件。
轨迹2和轨迹3采用2轴CNC---X轴、Y轴
对于轨迹2/3,其X轴和Y轴是正交的直角坐标系,即笛卡尔坐标系。可以用InoProShop将CAD文件转换成G代码,在手动复制到记事本中保存成CNC文件。
(1)添加”CNC程序”,然后从菜单栏中选择“从DXF文件中导入”,就可以获得解析后的G代码。
(2)将G代码复制到记事本中,保存为“.cnc” 格式,便于后续调用。
对于常规轨迹控制和逻辑控制相关联,通过数组自动生成CNC文件相对便捷。
应用举例:五轴磨床,用来对工件表面进行打磨的一种设备,具备CNC文件读取、执行、程序示教、编辑、单步、手轮、M代码、自动解析导图功能。
3.3.2 导入PLC内存
使用Inoproshoptool,分别经过通信配置,选择目标PLC,选择文件,文件拷贝,将cnc文件导入PLC内存。
如果现场电脑没有InoProShopTool,或者用户需要进行二次开发,可以用Samba文件传输协议。
SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。
Windows系统下具体步骤:
1、按下“Win + R”快捷键打开运行窗口,输入“\”加上对方的IP地址,点击确定;
2、然后就可以看到此IP地址的电脑所共享的文件夹;
3、打开共享的文件夹,访问浏览里面的文件。
3.3.3 G代码文件编译
经过上一步,已经将G代码文件“.cnc”导入了PLC内存,再轨迹插补运行之前,需要首先对该程序进行读取和编译。
如果是通过建立添加对象“CNC程序”在后台程序中已经保存了G代码,则不需要从内存中读取G代码,相应的也就不需要进行编译。可以直接插补运行。
如果是通过文件形式,导入用户的G-Code 定义的轨迹,就需要用<SMC_ReadNCFile>,将文件格式的G-Code轨迹程序读入内存、进行解码、轨迹预处理后,得到OutQueue格式轨迹数据结构,供插补程序POU进行插补;
由于读取和解码G-Code轨迹的操作需要比较长的时间,远远超过了EtherCAT周期,因此该POU程序需放在20ms的普通任务下执行,避免造成EtherCAT中断超时出错;
因为解码与插补在两个不同的POU处理,一些相关变量需要在GVL定义,确保能正确访问;
又因解码与插补在两个不同的任务中执行,为确保轨迹插补所需的OutQueue数据结构不会出现数据流的干枯或溢出,在读取、解码、预处理等功能块分别都使用了各自的缓存数组(参见蓝色虚线标示部分),便于两个POU的OutQueue轨迹数据的FIFO缓存,缓存数组空间一般定义为50~100个轨迹点。
也就是说,解码POU一边生成的轨迹数据流,插补POU一边在消费这些数据,这有利于减小轨迹运行的启动延迟与所需的内存消耗。
3.3.4 插补运行
经过编译之后G代码已经被PLC识别,接下来就是PLC按照G代码描述的轨迹来分别控制各个轴动作。
插补运行的典型POU就是完成这部分功能的,主要有插补运算功能块,坐标变换功能块以及轴位控制功能块。
<插补程序>POU可以将OutQueue格式的G-Code轨迹程序进行插补,作了简单的垂直坐标偏移处理后,控制XYZ轴驱动伺服运行的一个POU程序,可以在类似轨迹控制应用中直接借用,需放在EtherCAT任务下执行;
该POU的核心功能块是<SMC_Interpolator>插补功能块①,将编译后的G-Code进行插补,生成下一个EtherCAT的周期时需要运行到达的空间坐标位置;
被插补执行的G-Code用户轨迹程序由指针型变量<poqPath1>来指定,所指定的轨迹格式为OutQueue,最简单的获得方式是由InoProShop将G-Code轨迹编译为OutQueue格式;
其中的<坐标变换>②功能块SMC_TRAFO_Gantry3只是根据系统结构及坐标定义原点,对目标点进行偏移修正,分别得到XYZ驱动轴坐标(即每个轴的位置目标);
其中的<轴位控制>③功能块SMC_ControlAxisByPos将轴目标位置指令,下发给驱动轴,并读取对应轴的状态;
若XYZ任一个插补轴有状态异常,或过载情况,将该逻辑④信号反馈给插补功能块进行减速,若异常立即消失,恢复到正常轨迹速度运行,若异常状态持续,降速直到停机。
3.3.5 Interpolator功能块
3.3.6 坐标变换功能块-SMC_TRAFO_Gantry3
Interpolator功能块得出的pisetposition是下一个ETHERCAT周期目标点的位置,是以笛卡尔坐标系XYZ坐标的形式给出的。
将XYZ坐标值分别转换为X/Y/R三轴伺服的目标位置,这就是坐标变换。
AM600提供了龙门坐标变换,极坐标变换,SCARA坐标变换,Delta坐标变换等诸多坐标变换功能块。
在本设备上,轨迹1的料盘轴实际是R轴,不同于笛卡尔坐标系下的Z轴,但是由于使用了ReadDXF转换G代码,故此处可以等效为X轴来控制。
3.3.7 CNC仿真练习
使用Visualization,新建以下图形,黑点使用刀补功能(D为半径长度),从(100,200)到(300,200),暂停1s,打开2号开关,旋转1圈,等待M10信号,再旋转1圈,关闭2号开关,回到(100,200);
采用【SMC_OutQueue】编译模式,执行完路径转换,直接调用CNC执行轨迹,实现左边黑点由(100,200),直线移动到(300,200),顺时针旋转一周,再直线移动回(100,200);
用【SMC_CNC_REF】编译模式, 执行步骤1相同功能;
采用【文件类】编译模式,执行步骤1相同功能;
使用H指令、M指令、G50平滑指令、和G42刀补指令
仿真根目录:
“C:\ProgramData\CODESYS\Simulation\PlcLogic\”