1、序言
前文已经介绍过Codesys软件可以将dxg格式的CAD文件直接读取出来转换成G代码,导入到软件可以使用的CNC程序,通过对该CNC程序的编程,可以实现将CAD图纸转成CNC指令并运行,参考博文地址:https://blog.csdn.net/qq_19979629/article/details/122602348;
但是,在实际应用中,CAD图纸不但不是固定一成不变的,而且图纸的更新频率会比较高,因此,CAD图纸导入的功能局限性比较明显,那就是程序一旦做好,只能按照做好的图纸轨迹运行,而想要换图纸,就需要重新做程序。那么Codesys有没有通用的程序可以适应不同的图纸,答案当然是可以的,需要用到SMC_ReadNCFile功能块来实现文件读取功能
2、功能块介绍
SMC_ReadNCFile功能块用于从控制器文件系统中读取 NC-ASCII-文件,以便于被 SMC_NCDecoder使用。通过这个功能块可以实现在运行系统中读取一个CNC程序,该功能块只能识别ASCII码文件,在应用中,需要先将dxf格式的CAD文件先导出成ASCII码文件,可以用Codesys软件实现转换,功能块示意图如下:
该功能块常用引脚及功能如下:
a、bExecute,类型开关量BOOL,作用:输入,激活功能块,上升沿启动;
b、sFileName,类型字符串STRING(255),作用:输入,是导入文件的文件路径;
c、bExecuteDecoder,类型开关量BOOL,作用:输出,脉冲触发信号,启动解码器;
d、ncprog,类型CNC格式SMC_CNC_REF,作用:输出,读出文件转换CNC程序输入解码器;
其他引脚功能,有需要的读者可以参考codesys帮助文件学习。
3、文件转换功能
codesys可以将CAD文件转成CNC文件,同时也可以将CNC文件导出成ASCII文件,以供SMC_ReadNCFile功能块读取,在CNC列表,选择将程序写入到ASCII文件,功能使用如图:
一般保存成CNC格式即可;注意目前Codesys软件的功能,字符串变量可能还无法识别中文,因此文件路径不能存在中文,建议ASCII文件放在根目录,且文件名也不能有中文。
本文导出3个CNC文件,分别实现圆内接三角形,圆外切正方形以及五角星的轨迹,导出文件名分别为3.cnc,4.cnc,5.cnc,保存在F:\upan文件夹下,轨迹图形及G代码如图所示
4、程序编写
程序参考codesys自带的示例,创建轴不再介绍,本例使用两个POU口程序,G代码文件读取采用ST编译方式,轴运行使用CFC编译模式,编程如下:
4.1、空闲等待程序
4.2、文件读取解码转换程序
xStart启动文件读取,开始读取文件,解码,路径预处理功能,程序如下:
4.3、轴运行程序
新增一个POU程序,插补器运行,逆解,轴控制使用CFC模式编译,参考其他G代码程序,如图所示
4.4、变量表
G代码读取程序变量表与轴控制变量表分别如下:
4.5、可视化界面
本文要根据不同的文件,仿真不同的运行轨迹,在可视化界面提前做好轨迹曲线,仿真时可直观查看,同时添加两个按钮,开启插补运行,添加文件切换及内容显示文本,变量连接不再过多描述,如有问题,可参考本博客其他可视化仿真文章学习,画面如图所示:
文件切换思路,定义三个字符串变量,分别对应3个文件路径,点以下按钮,切换一个文件路径,依次循环,(可以参考其他控制器的导入方式,使用固定文件名及路径替换),程序如图
5、仿真运行
3个图形通过切换按钮实现切换,仿真运行结果如下
文件1圆内接三角形流程
文件2圆外切正方形流程
文件3五角星流程
6、综述
通过以上运行和仿真试验,我们可以通过Codesys软件编程,实现在程序中导入不同G代码文件的功能,当然此功能无法直接将CAD图纸文件直接导入,目前只能识别ASCII文件。
本文所涉及的程序代码使用的软件版本为V3.5.14.10,可在以下地址下载: