当前位置: 首页 » 行业资讯 » 行业新闻 » 正文

数控体系的数值解决措施


放大字体  缩小字体 发布日期:2013-05-15  作者:数控之家
     编辑预处理与译码分离传统的数据系统都提供了一个程序编辑器,它的功能只是对数控源程序进行编辑和修改,且操作不方便,而NC程序格式分析及词、语法分析(这些工作通常称为预处理)均由译码模块处理。在译码过程中,无论程序是否有错,都必须进行分析,浪费了CPU的时间。因此,我们在开发数据处理模块时,把预处理功能从译码子模块中分离出来,且融入编辑器子模块,使编辑器既能输入和编辑NC程序,又能对整个源程序一次性分析查错。当发现错误后及时修改,避免了加工过程中出现错误不得不停机的情况发生。微软的VisualC++5.0中的MFC提供一个文本编辑类CEditView,利用它几乎不用编写什么代码,便能生成一个类似Windows中WordPad的文本编辑器,虽然它没有Word的文字处理功能强大,但用来编辑数控系统清单已经足够。文本编辑器主要由两个子窗口组成,一个为编辑窗口,数控程序的所有编辑操作均在此进行;另一个为信息窗口,显示预处理过程中各种信息(包括各种错误信息),大大方便了程序的修改。  由于NC是以ASCII码形式存放,读入缓冲区前必须进行一定转换。另外,为加速预处理,要求源程序一次性读入内存。为此我们定义一种数据结构和一个数组:structNCFormat{LPTSTRNCLineS;程序段存放的数组UINTNCLength;预处理过程中,每个程序段均要经过两次扫描。第一次扫描是进行格式分析和词法分析,第二次扫描是进行语法分析。在两次扫描过程中每当发现错误,输出出错信息到信息窗口。其中出错信息是一种数据结构,其定义如下:structErrorInfo{UINTNCLineNO;出现错误的行charNOChar;出现错误的字符CStringLineStr;错误所在的程序段UINTErrorKind;错误种类编译与解释方法相结合单纯使用编译方法或解释方法都有不可避免的缺点,因此,我们把两种方法结合起来,取长补短。在开始加工前首先开辟一段内存作为缓冲区(一般不宜过大,如256K),然后一次性编译若干程序段,直到缓冲区满。在这里,编译的结果并不是机器能识别的最终代码,而是另外一种数据结构,其定义如下:structNCTemp{UINTNCLineNO;程序段行号CstringArrayModeAddress;存放模态字CstringArrayNoModeAddress;存放非模态字BOOLAbsReCord;绝对坐标或相对坐标标志UINTInterpG0123;插补类型CuterComG4012;刀具半径补偿类型LenthComG434;刀具长度补偿类型EntMsgWorkPiece;零件实体坐标信息BOOLDowithFlag;程序被解释处理过的标志;缓冲区满后,启动解释处理程序,每次从缓冲区中取出一个用上述数据结构存放的程序段,并将其处理成系统能识别的目的程序,再依次进行运动轨迹计算、进给速度计算、插补和位控。每个被解释处理过的程序段必须置标志DowithFlag为TRUE。  消息驱动是Windows95的根本运行机制,而多任务多线程操作又是其最大优点。在这里把编译定义成一个线程;解释、运动轨迹计算、进给速度计算定义成一个线程;插补、位控定义为一个线程。编译线程优先级最低,三个线程通过消息交互。一旦CPU空闲,且缓冲区中有被解释处理过的程序段,则启动编译线程,从源程序中读入程序段来刷新这些被解释处理过的程序段。如此交替,直至整个数控程序执行完毕,从宏观上看构成了时间上的资源重叠。
 
 
[ 免费发文

 

 
推荐图文
推荐行业资讯
点击排行
网站首页 | 关于我们 | 升级会员 | 联系客服 | 广告合作 | 广告位图 | 使用协议 | 版权隐私 | 蜀ICP备2021024440号
Powered by DESTOON