2 数控代码转换
PMAC有一套完整的专用数控编程语言,支持用户进行数控程序设计。而对于通用数控机床,编程语言通常采用国际ISO标准规定的代码字符和格式,我国的数控机床标准也是参照ISO制定的,如GB8870—88(代替JB3050—82)等效IS0840标准。因此由PMAC构建的数控系统必须将G、M、T等代码转换为PMAC的专用语言。
PMAC能以子程序的方式支持G、M等代码的使用,只需在PMAC中编制相应的子程序,将G和M代码转换为PMAC的运动程序表达式,即可实现对ISO代码的支持。子程序的入口地址根据代码字符和后续的功能号确定,G代码的转换子程序格式如下:程序中,M902对应主轴的控制端口,M02代码转换中使用延时指令的目的是停止PMAC的程序预读功能,以免主轴提前停止。
3 数控加工程序跟踪
数控加工过程中,需要对程序的运行过程进行跟踪,即要求实时显示当前正在执行的数控代码。在“PC+PMAC”的数控系统中,可通过显示界面显示程序执行过程。
PMAC的在线指令“PE”能够显示当前正在执行程序行的偏置地址,但由于用户程序是以ISO标准代码编制,在PMAC中使用了代码转换,因此用“PE”指令很难捕捉到当前的G或M代码指令,基本上只能返回转换子程序中的PMAC语句在该子程序中的偏置地址,而该地址数据对于用户程序中的任何同功能代码都是一致的,因而无法判断当前正在执行的程序代码。
有一个简单的方法可以解决数控程序跟踪问题,即在用户程序下载到PMAC之前,自动在每一行程序前自动插入标志变量赋值语句,赋值量与对应的用户程序行号一致,但界面显示仍为原始的用户程序。通过标志变量的值即可判断正在执行的代码位置,并可以在界面显示的程序中做明显标记。实际下载到PMAC中程序格式如下:
程序中的M1变量为标志变量,不能使用“=”赋值格式,必须使用“==”赋值格式。PMAC具有程序预读功能,“=”赋值会在预读时立即执行,导致M1的赋值提前于实际运行的程序代码。“==”是一种同步赋值格式,使用该赋值格式的M变量称为同步变量,同步变量在预读时不会进行立即赋值,只有在该变量的下一个运动程序块开始实际运行时才进行赋值,从而保证了M变量值与当前运行的程序行完全同步。
4 结束语
本文对开发基于PMAC的数控系统中的有关软件设计技术进行了探讨,分析了常规PLC的运行原理,将集中输入输出思想、梯形图设计方法和布尔逻辑表达式引入到PMAC的PLC程序设计中,简化了程序设计,提高了程序的可靠性和逻辑清晰度。对G代码和M代码的转换方法做了说明,使数控系统能直接支持广泛使用的ISO代码编程。数控加工程序行的实时跟踪是数控系统的重要实用功能,文中对PMAC由于代码转换而不能有效跟踪程序执行过程的问题提出了解决方法。文中提到的设计技术均应用于北京理工大学PRS-XY混联机床开放式数控系统设计中,并取得了很好的效果。