基于CPAC的数控系统功能模块化封装*

2020-10-26 09:00杨冬香张爱华
机电工程技术 2020年9期
关键词:功能块数控系统调用

杨冬香,张爱华

(1.五邑大学智能制造学部,广东江门 529020;2.五邑大学数学与计算科学学院,广东江门 529020)

0 引言

数控系统对于制造装备来说相当于大脑,它反映着装备的智能化自动化水平[1]。成熟的数控系统功能齐全,但是价格昂贵,同时也不能满足目前制造市场上对数控系统多样化、个性化的功能需求[2]。因此,开发符合自身功能要求的低成本开放式数控系统符合目前市场上生产企业的需求。

虽然制造市场对数控系统功能需求不尽相同,但是数控系统的基本译码、刀具补偿、插补等功能不可或缺。因此,从降低开发成本出发,将数控系统的基本代码、刀具补偿、插补等进行模块化封装,作为一种通用的程序模块,可供相同平台用户调用组合,是一种行之有效的新的开放式数控系统开发思路。

CPAC是计算机可编程自动化控制器的简称,它是固高科技有限公司推出的应用于工业装备控制的软硬件开发平台,广泛应用于自动化装备数字控制系统的开发领域[3]。在CPAC软件平台对数控系统的常用代码模块进行模块化封装,作为有固定输入输出的程序块。封装好的程序块可以类似于软件底层函数,用于其他基于CPAC的嵌入式数控系统开发程序之中,这样可以大大地减少数控系统的开发时间。

1 CPAC软硬件平台介绍

CPAC硬件平台由运动控制器、人机界面和远程I/O模块3部分组成[4]。其核心控制器由FPGA和DSP 组成,支持多种运动模式,如点位模式、JOG 模式、电子齿轮模式、FOLLOW模式、插补模式、PT模式和PVT模式等,支持位置控制方式和速度控制方式,带有16路通用数字输入、16路通用数字输出点。

CPAC软件平台(Otostudio)是一种基于IEC61131-3工业控制语言标准的开发工具,支持文本化和图形化混合编程,用户可以用结构文本做复杂的数学运算和运动控制,同时用梯形图实现逻辑控制和过程控制。

Otostudio 程序类型多样,有主程序、子程序、功能块、功能。对于其中的关系在开发之前要清楚。每个程序必然包含一个主程序,这是程序运行的前提。子程序和主程序的变量是可见的,主程序可以调用子程序、功能块及功能。功能块对应输入变量和输出变量,有返回值。功能没有返回值。

功能块是Otostudio 平台本身具备的一种程序形式,其平台本身具备有运动模式等封装好的功能块,可以供平台使用者按需调用。本文利用平台功能块这一程序形式,对常用数控代码解释和编译等功能进行封装,形成可供用户选择调用的程序功能块。

2 程序功能块封装思路和实现

程序功能块FUNCTION_BLOCK不同于完整数控系统的开发,其独立于数控系统,封装后可供平台所有用户调用,用户只需给定满足程序功能块要求的输入参数即可。

本文依据常用数控代码来划分程序块,如G00/G01/G02/G03、G41/G42/G40、G90/G91 等,然后利用 Otostuidio 的功能块完成其程序块封装。具体开发思路如下:

(1)命名创建功能块;

(2)确定功能块输入和输出参数并进行定义;

(3)调用Otostudio 底层函数,按照其编程规则,根据程序代码功能,编写其译码程序;

(4)结束功能块。

以下以G01 指令程序块、译码功能块为例,阐述其封装流程。

2.1 G00快速点定位

平台仿真运行实验刀具按照系统设定好的进给速度从刀具当前的位置快速移动到程序段给定的位置。各坐标轴无需联动,没有运动轨迹要求。G00程序块封装流程如图1所示。

图1 G00程序块封装流程

图2 G01程序块封装流程

首先通过GT_PrfTrap(Axis),输入轴号变量Axis,设定指定轴的点位运动模式。定义结构体STRUCT TTrapPrm,存储点位运动参数,并采用GT_SetTrapPrm (Axis,ADR(Trap-Prm))设置给定轴的运动参数。通过GT_SetVel(Axis,Vel)设置给定轴的速度,GT_SetPos(Axis,Pos)设置给定轴的目标位置。所有参数定义完毕,采用GT_Update(Axis)启动给定轴的点位运动,完成程序块的定义。

2.2 G01直线插补

该指令可使机床沿X、Y、Z 方向实现单轴的运动,或在各坐标平面内实现两轴联动走出平面直线轨迹,也可使机床三轴联动走出空间直线轨迹。

缓存区中的数据是会实时更新的,当数据进行插补运动之后,会被释放出来,给后续新的数据提供存储空间,用户设定的插补数据会储存在缓存区中等待执行,接着启动插补运动,运动控制器则会依次执行用户所传递的插补数据,直到所有的插补数据全部运动完成。

因为要实现的是能三轴联动的直线插补运动,所以这里选用的是三维直线插补指令GT_LnXYZ 以及启动插补运动指令GT_CrdStart。虽然每个缓存区FIFO 都含有4 096 段插补数据的空间,由于不确定用户所给的G 代码程序会不会超出缓存区空间,所以每次在传递插补数据之前调用指令GT_Crd-Clear 来清理储存区里面的数据内存,确保用户有足够的存储空间可以使用。G01程序块封装流程如图2所示。

2.3 译码功能块

目前,国际上通用的数控机床的加工程序主要基于标准ISO6983的G、M代码语言编写而成的。最常用的程序段字地址格式如下所示[2]:

Nxxx Gxx Xxx Yxx Zxx Fxx Sxx Txx Mxx

在Otostudio 中,NC 代码文件的打开是通过指令SysFileOpen来实现的:

DwWritten: =SysFileRead (Hfile,ADR (buffer[origin]),SIZEOF(buffer)-(origin-1));

WHILE index<cycle_size+1 AND Buffer[index]<>0 DO

sBuffer[index]:=ASCII_TO_STRING(Buffer[index]);

index:=index+1;

END_WHILE;

由于数组buffer[]存放字符所对应的ASCII 值,必须将ASCII值转化为字符(ASCII_TO_STRING),为下面NC代码的编译做准备。

转换之后,NC代码的内容会以一个一个字符的形式被存放在数组sBuffer[index]中。读取和识别准备功能G指令的类型和辅助功能M指令的类型并把G、M指令后面的坐标值、进给速度、半径、转速、时间等作为输入参数赋值给所封装好的相应程序代码功能块,完成译码和驱动执行。

3 程序功能块在数控系统开发中的应用

为验证功程序功能块的有效性,本文利用CPAC和Otostudio搭建了简单的数控系统软硬件框架结构,并调用前期开发的程序功能块,快速实现了二维轮廓铣削、二维刀具补偿和孔类加工循环等功能,如图3所示。

图3 基于CPAC的数控系统界面与调用程序功能

在进行简单个性化界面编制的基础上,本数控系统对NC代码的读入、解释和驱动执行,都通过调用功能块完成。

输入如下代码:

G00 X400 Y200;

G01 X0 Y0 F100;

数控系统调用译码功能块和程序代码功能块,驱动显示模块走出图4所示线框,同时驱动CPAC输出轴做相应转动。

图4 数控系统刀具轨迹线框图

4 结束语

本文从缩短数控系统开发周期、降低开发成本出发,提出以程序功能块的方式,封装通用代码或功能模块,以供相同平台用户开发使用。同时,根据这一思想,基于CPAC软硬件平台,实现了通用程序功能块的开发,并在基于此平台的数控系统开发中得到应用,验证了程序功能块的通用性和有效性。

猜你喜欢
功能块数控系统调用
三种国外集散控制系统(DCS)功能块扫描规则和执行顺序的分析和总结
核电项目物项调用管理的应用研究
基于FANUC 32i A数控系统的外部测量设计
西门子840D sl数控系统在SC125大型车铣镗床技术改造中的应用
基于FANUC Oi mate TD数控系统的手动功能开发
数控系统中GUI软件平台设计和实现
Ovation系统FIRSTOUT和FIFO跳闸首出比较
基于系统调用的恶意软件检测技术研究
自定义功能块类型在电解槽联锁中的应用
PLCopen运动控制功能块的研究与开发