基于发那科C语言执行器二次开发应用

2022-01-07 11:15
精密制造与自动化 2021年4期
关键词:执行器C语言按键

薛 刚

(上海机床厂有限公司 上海 200093)

目前,随着国内外数控系统在柔性、可靠性和开放性等方面的飞速发展,许多理论和技术问题得到了较好的解决,数控机床可开发成为智能机床,满足用户的个性化需求。为了适应个性化市场的需要,数控系统向着开放式结构发展。发那科公司提供的 FANUC Series 0i-TF 数控系统没有专门针对磨床的控制界面,但它提供了 C语言执行器功能,用户可以通过二次开发把自己的功能模块集成到系统中去,满足定制化的需求。

发那科的 C语言执行器可以将机床制造商的独有画面编入发那科系统,自定义 CNC系统软件的显示和操作系统功能。可以用应用程序编写的画面置换 CNC的任意画面。和编写普通计算机程序相同,可以用一般的C语言来编写显示和操作系统的应用程序,并将执行文件编入CNC。将在计算机上编译的程序通过存储卡保存到CNC装置的Flash ROM,在启动CNC时,被读入内存并在C语言执行器上执行,流程开发流程如图1所示。

图1 软件开发流程

1 实施

功能: Macro executor + C Language Executor

Custom software size

C Language Executor additional SRAM

参数: 8661 变量区容量(一般设置为:59)

8662 SRAM磁盘容量(一般设置为:4)

8781 C执行器使用的DRAM容量(一般设置为:96)

在发那科C语言执行器功能包里已经搭好了应用程序的框架结构,应用程序主要由5个独立任务构成,如图2所示。

图2 任务框架

(A)主任务(tsk1main.c)

主任务进行画面显示、键输入、CNC数据的读写等几乎所有的处理。可以使用所有程序库的功能。

(B)通讯任务(tsk2main.c)

通讯任务通常在和主任务独立进行,监视周期启动的各种状态,阅读机/穿孔机的相关处理。

(C)报警任务(tsk3main.c)

通常周期性启动报警任务,进行各种状态的监视等。

(D)窗口任务(tsk4main.c)

在任意画面上进行窗口显示。

(E)高级任务(tsk5main.c)

独立的按一定周期执行任务,实时进行高优先级的处理和快速数据监视处理等。

主任务只在用户画面显示过程中执行。报警任务和通信任务都与显示画面无关,也就是说可以在后台执行。另外,应用程序可以只有一个任务构成,即主任务。

任务之间的数据存取

在进行其他任务和数据之间的通信时,使用任务之间的公共变量(dramver.c和sramver.c)中定义,作为任务之间的公共变量配置在任务之间的公共内存里,如图3所示。

图3 变量

1.1 主任务(task1main.c)

task1miain.c是整个C语言执行器的主程序,程序会从task1main开始运行。task1main.c中的程序当进入用户画面中才开始运行,程序流程见图4。

图4 程序流程

1)设定用户画面

登陆用户画面号:设定CRT模式:

设定 CNC画面和用户画面切换方式:设定调色板:

打开显示(CRT_OPEN):

设定视频模式画面显示

关闭显示(CRT_CLOSE):

/* 用户画面设定 */

crt_setuserscrn( scrn_tbl_size(crt_table),crt_table);

2)登陆用户画面号函数

在主任务中至少登陆一个用户画面(即使不需要 C语言执行器的用户画面),如果不指定用户画面就不能再次从 CNC画面返回用户画面。可以置换传统的CNC画面,也可以使用 C语言执行器专用画面。

crt_cncscrn(CRT_POS_ALL) ; // 设定用户画面返回方式。

/* 设定屏幕显示方式 */

_setvideomode( _VRES16COLOR ); // 16色,图像640×480,文字80×30

/* 设定用户画面到CNC画面切换方式 */

crt_setswt( CRT_SWT_GREN ) ; // 设定是否可切换、报警时是否切换,是否使用MDI键切换等

3)设定CNC画面和用户画面的切换方式

Bit 0 0:允许从用户画面向CNC画面切换 1;禁止从用户画面向CNC画面切换(CRT_SWT_DIS)

Bit 2 0:在图形显示打开过程中禁止画面切换1:在图形显示打开过程中可以画面切换(CRT_SWT_GREN);

Bit 3 CNC画面发生报警时,是否自动向报警画面切换0:根据通常CNC的设定(参数3111#7);1:基于用户画面(参数8650#1)(CRT_SWT_ACNC)

Bit 4 CNC软件对MDI面板的功能键 0:进行通常读取1:不能进行读取(CNC软键侧不能进行画面切换)(CRT_SWT_MFKY)。

在发那科基础框架下,还需要自己编写扩展一些辅助功能框架。运用这些功能来进行画面的处理。

1.2 界面显示模块(win.c)

win.c中的程序主要负责显示界面,一些非动态的图像以及文字的显示。

如上图所示,添加了一个win_test函数的定义,在其中定义了win_test这个函数中包含的内容。

Voidwin_test(void)

{ curWIN->WinFunc=win_test;//设定当前画面的函数为win_test。

curWIN->RefreshFunc=vawin_test;//设定当前画面的变量画面为vawin_test。

curWIN->InputFunc=0;//设定当前输入函数为0,0既是不调用输入函数。

curWIN->SpecialCurs=0;//判断是否使用特殊光标。

curWIN->LL_index=0x01;//函数画面所在的软按键层次。

curWIN->WinKey=SOFT_F1;//函数调用使用的软按键。

element_background();//插入背景

dlg_cncstate();//插入NC非动态状态显示

1.3 动态界面模块(vawin.c)

vawin.c中主要是负责显示界面中的一些动态的变量,如宏变量显示等。

通过上述两步,画面已经可以显示出一个画面的框架,现在需要将他们添加入软件中,便可以通过软件调用出我们所制作的画面。

1.4 系统变量模块(vadailog.c)

vadailog.c文件中主要包括了一些宏变量等变量的显示,应为宏变量不同文字显示,需要根据宏变量的变化适时刷新。

void vagrinding_GRHMI(short cys,short cxs)//设置画面变量显示

1.5 按键模块(softkey.c)

softkey.c 中主要是包括了软按键的排序,画面按钮的功能

打开softkey.c文件, 出现如下显示:

void ll_init0(void);

void ll_init1(void);

void ll_init2(void);

void ll_init3(void);

……

void ll_init12(void);

如上显示的函数中使画面的软件函数 void ll_init1(void)- void ll_init12(void);为不同的软件按钮层次所对应的函数,每一个函数对应一个软件层。这个函数可以添加,也可以直接在函数中编辑。如下图中所示的,在 void ll_init1(void)函数中添加一个画面。一个画面存在10个软按键,我们选择一个空着的软按键作为该画面选择的按键。

把win_test画面插入在SOFT_F6按键,对应的画面上的第6个软按键。

temp=(LLLnode*)malloc(sizeof(LLLnode));//这里为一个temp零时的结构体声明空间。

temp->ll_next=0;//

temp->ll_WinKey=SOFT_F6;//画面的按键编号为F6。

temp->ExeFunc=win_test;//选择该画面的运行函数,在这里是我们的画面函数,win_test。

temp->IndexFunc=0;//页面跳转选择,这里为0,可以填写一个。

temp->ll_index=0x01;//当前页面软件所属的层次。

temq->ll_next=temp;

temq=temp;

通过上述的过程,win_test就可以被第一层次的第6个软按键所调用。然后,可以编辑软按键所显示的字符或者图形。

1.6 输入区模块(input.c)

主要是画面中的输入设定,在 input中设定输入参数的宏变量值,输入方式等。

打开input.c文件,编辑输入函数,如下所示:

void input_grinding(void)

{struct odbst status;// 声明一个状态结构体

double MacroValue=0;// 声明一个双字型变量unsigned short nMacroNum=0;// 声明一个无符号短型变量

cnc_statinfo(&status);//读取系统状态到status中

if(status.aut==0 || status.emergency==0 )//判断当前状态

2 编译软件

WinRiver Compiler

作用:

源文件到最终文件生成的过程由 WinRiver Compiler直接编译完成。

MakeFile:

编译所需要的相关内容定义都在批处理文件Makefile中,执行时只需输入nmake.exe命令即可。

目标文件:最终文件为存储卡文件格式(.mem)

实际使用:在 NCguide中,复制 DLL文件到NCguide文件夹;在实际CNC系统时,用CF卡复制MEM文件到系统F-ROM,显示界面效果如图5所示。

图5 界面样式

3 结语

利用 C语言执行器提供的顺序控制把用C语言设计的人机界面嵌入到C语言执行器系统中, 最终把特有的磨床功能模块集成到C语言执行器系统中,形成了适合于磨床的操作系统。操作人员可以很方便地选择加工程序,并进行参数的编辑,而无须修改工件加工程序,还可以随时得到加工过程中的各种状态信息,实现数控机床的监控和操作。这样,不仅扩展了数控系统的使用范围,简化了操作,提高了劳动生产率, 而且还可`以为机床的维护提供大量的有价值的参考信息。

猜你喜欢
执行器C语言按键
更正说明
形状记忆合金执行器研究综述
自动驾驶汽车执行器故障冗余算法
基于有限状态机的按键检测程序设计
非触勿动 秒治键盘误触
互联网+教育背景下的C语言程序设计教学改革探究
基于Visual Studio Code的C语言程序设计实践教学探索
计算机中C语言的应用特点探析
X-431实测篇2010年奔驰B200空调执行器电机学习
汇编语言与C语言的混合程序设计技术研究