2.2 数控软件主界面设计
利用QT优越的图形界面设计功能,实现人机接口界面如图2所示,界面实现:坐标、速度、状态、程序的显示,三维图形的显示和模拟仿真,自动加工信息处理,文件的管理,零件尺寸、系统、伺服、砂轮等参数设置,MDI,G代码编译,错误诊断等功能。整个界面秉承了设计友好,操作简单,交互性好的原则。
2.3 各功能模块的设计和开发
数控软件作为整个数控系统的核心组成部分,功能众多。为了使数控系统易于维护,具有可重构性、可扩展性,采用模块化设计方法,软件的功能模块如图3所示。
(1)系统的初始化
建立injtial()函数实现控制器的初始化,首先调用SelectDevice(int hWiIldow,im&pdwDe、rice,bool&pbsuccess)函数选择设备号,调用后会弹出设备选择对话框,选择PMAC 00,点击OK按钮。然后,调用open(int&pdwDevice,b001&pbSuccess)函数打开运动控制器,若PC未连接卡或通讯出现异常则报错,另外系统关闭时需调用close(int&p“Device)关闭控制卡。
(2)系统设置及处理下载系统的配置文件,如I、M、P、Q变量配置,G代码的解释程序,监控的PLC程序以及其它的特殊的参数设置。
(3)NC文件的读取、编译、下载
对系统进行设置完成后,打开并读取加工文件,然后对其进行编译,编译成功后下载至运动控制器,下载文件到控制器时使用:D响rIlload(int dwDevice,constQString&fileP讪,bool bMacro,b00l bM印,bool bkg,b001 bDmd,bool&pbSuccess)函数,该函数在使用时需要注意参数:①filepatll指的是绝对路径,相对路径无法识别。②bDIlld代表是否下载,所以需要置为tme,否则,不能成功执行。③执行多个DowIlload命令需要中间调用Sleep()函数。其中G代码的编译流程图如图4所示。
另外,PMAC虽然支持G、M、D、T代码,但是需要按照要求的格式来预先对各种代码进行解释,PMAC在执行上述代码时会自动转去调用相应的子程序(即解释程序),例如:执行G01会自动调用PROGl000的N1000行,执行M03会自动调用豫OGl001的N3000行,其它类似。
(4)自动加工、手动运行、回零等功能的实现下载编译完加工程序文本,通过调用GetResponse(0,”&1BlR”,pAnswer)使程序自动连续运行,同样的对于单步运行、暂停亦可通过该函数发送命令“S”、“H"。GetResponse(int dwDevice,const QString&question,QString&pAnswer)相当于万能函数,它能直接向控制器发送指令,而pmac自带类似Basic的语言,两者结合使用。手动功能的实现通过发送手动命令“#nJ+”或“#nJ-”(n为电机号),回零发送回零指令“#nHM”,该函数执行成功则字符串pAnswer为空,否则会报错。若要发送控制符指令,则利用GetcontmlRe—sponse(int dwDeVice,int number,QString&pAnswer)函数,number代表控制符的ASCII码的十进制值。在编写软件时,利用GetRespo璐e函数直接发送指令,同在PMAC自带的PEWIN32软件终端窗口操作类似,通过变量、命令和程序三者相互配合,完成运动控制、过程控制和主机通信等任务。
(5)坐标、速度、状态的实时显示开设一个监控线程类MoIlitorThread,实时获取系统的状态反馈并显示。在一个statusGeⅡtems()函数内调用GetResponse()函数获取位置、速度、行号等程序信息,并将获取的信息传递给对应的全局变量。线程启动时就调用stamsGetItems(),设定多长时间获取一次数据,获取完一次则发送信号,激发updatedata()槽,使得显示在编辑框中的信息随之更新。
(6)基于OpenGL的三维模拟仿真Qt提供的QOpenGL模块,轻松地实现了在应用程序中使用openGL功能,建立基于OpenGL交互控制的虚拟数控机床加工仿真系统,实现G代码的三维模拟仿真,使系统具有良好的实时性、交互性以及三维图形显示能力。