3.3 部分模块功能的具体实现
软件系统采用显式链接的方式将 PcommSever. exe添加到 VC ++6. 0 的 MFC 程序中,由此导入了 Pcom-mSever. exe 中的封装类 IPmacDevice。软件系统的各个功能模块都是基于 VC ++ 6. 0 的 MFC 程序框架,调用类 IPmacDevice 中的函数实现的。其中软件的主要功 能 是 通 过 GetResponseEx ( dwDevice,FALSE,&pAnswer ,&Pstatus) 函数实现的。
对于整个系统软件,要先解决上位机与 PMAC 的通讯问题。首先在程序中声明 IPmacDevice 类型的全局 变 量 PmacDevice, 然 后 通 过 PmacDe-vice. SelectDevice ( NULL, &dwDevice, &pbSuccess )和 PmacDevice. Open ( dwDevice,&pbSuccess) 函数建立通讯。
状态监测模块要完成显示状态信息和更新界面信息的功能。例如 X 轴 ( 即#1 轴) 的运动状态监测是调 用 PmacDevice. GetResponseEx ( dwDevice, "M140" ,FALSE,&pAnswer,&pStatus) 实现的。该函数向 PMAC 发送不同的 M 变量指令,并从 PMAC 得到响应指令 pAnswer,然后将变量 pAnswer 转换成 int型变量,判断该 int 型变量的值得出此时电机是否上电。各轴位置信息的实时更新是通过定时器实现的,以 X 轴为例,X 轴的位置是通过定时器发送 WM_TIMER 消息,然后在 OnTimer ( ) 消息响应函数中调用 GetResponseEx ( ) 函数向 PMAC 发送" #1p" 指令来更新的。此外,模块中其他状态监测功能与 X轴的运动状态监测功能的实现方法基本一致。初始化模块中,X 轴上电功能是通过函数 GetRe-sponseEx ( ) 来改变变量 M7904 的值实现的。按下按钮时,先判断电机的上电状态,如果电机未上电,则令 M7904 = 1 给电机上电,如果电机已上电,则令M7904 = 0 使电机断电。同时利用定时器控件来改变当前电机的上电状态。其他初始化按钮的实现方法基本类似。
JOG 运动控制模块主要用来进行加工前的对刀工作。速度控制通过改变变量 Ix22 来实现,其中 x 表示电机号。运动模式通过函数 GetResponseEx ( ) 向PMAC 发送" #xj: " 和" #xj = " 指令来实现,而正负方向的运动通过向 PMAC 发送指令" #Xj + " 和"#Xj - " 来实现。
PID 调节模块程序调用指令: WinExec( " C: \ Pro-gram Files \ Delta Tau \ PMAC Executive Pro2Suite \PmacTuningPro2 \ PmacTuningPro2. exe " , SW _SHOWNORMAL )
程序模块的部分功能实现指令如下:
程序运行指令: PmacDevice. GetResponseEx( dwDe-vice,command,0,&pAnswer,&pStatus)程序终止指令: PmacDevice. GetResponseEx( dwDe-vice," A" ,0,&pAnswer,&pStatus)程序下载指令: PmacDevice. Download( dwDevice,filepath,1,1,1,1,&pbSuccess) ; 其中 filepath 表示要打开的文件路径。
程序上传指令: PmacDevice. GetResponseEx( dwDe-vice,str,0,&pAnswer,&pStatus ) ; 其 中 str = LISTPROG N,N 表示需要上传到主机的程序号。
4 结论
根据超精密磨床的特点和加工要求,设计开发了一套基于 PMAC 的开放式数控系统。该数控系统采用上位机和下位机结合的方式,上位机工控机负责后台管理和人机交互,下位机 PMAC 负责运动控制和信号处理; 采用模块化的设计方法,基于 VC + + 的 MFC基础类框架,调用 PMAC 软件开发包的封装类,形成了一套功能齐全、交互友好、可以进行二次开发的数控系统软件。该数控系统开发周期短、成本低、具有良好的开放性,目前已在超精密磨床上投入使用,经过长期可靠运行,可以满足加工制造的要求。