CNC 系统巨量NC 程序解释实现方法.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
CNC系统巨量NC程序解释实现的方法 ?熊清平 张正勇 李作清? ??????在数控加工中,对于复杂零件的加工,如水轮机叶片,用CAD/CAM生成的基于微小直线段的NC程序能达到几兆。对于这些程序量非常大的NC程序,称之为巨量NC程序。? 对于专用体系结构的CNC系统,NC程序存储空间有限,在解释巨量NC程序时,一般采用RS-232通讯接口,边传送边加工,加工复杂零件较不便,同时也增加了数控加工系统的成本,降低了数控加工的可靠性。对于基于工业PC平台的CNC系统,只有640k的基本内存,由于操作系统和CNC系统控制软件占用一定的内存空间,当要解释运行巨量NC程序时,一般将巨量NC程序分成多个程序块,系统根据每块程序大小进行内存分配,如分配不合理,则需重新分块,这给操作带来不便。华中型CNC系统以工业PC为平台,对于巨量程序的加工,通过使用系统的扩展内存实现巨量NC程序的解释,同时要兼容处理类似高级语言BASIC编写的NC程序。根据用户的加工程序的最大需要,来配置系统的扩展内存。系统使用扩展内存,充分利用PC的软件资源,使用扩展内存设备管理程序EMM386.EXE,用DOS的67H号中断对高端内存的物理页的读写,完成对扩展内存的逻辑页操作[1]。CNC系统运行前,需在CONFIG.SYS文件中装载:? DEVICE=C:\HIMEM.SYS? DEVICE=C:\EMM386.EXE?   1 NC程序的装载 在NC程序装入之前,检测程序检测有多大的扩展内存,能运行多大的NC程序,根据所要求加工的NC程序判断能否装载。 无论是手工编制的NC程序还是巨量NC程序,运行时统一采用扩展内存进行装载。为了使用系统的扩展内存,需调用DOS的67H中断的多项子功能。首先申请一个包含一定逻辑页数的句柄,然后把这些扩展内存清空,清空后再把NC程序调入扩展内存,这样所要加工的NC程序的大小与系统的基本内存无关,只与系统的扩展内存有关。只要CNC系统的扩展内存满足就能把NC程序装入并投入运行。NC程序首先装入高端内存的物理页,再通过物理页和逻辑页的映射关系,把NC程序装入扩展内存逻辑页。程序开始运行以后,可以根据提示的剩余的内存选择所要编辑的程序。?   2 巨量NC程序的解释 程序装入扩展内存的逻辑页后,对程序的解释操作在高端内存的物理页中进行,这时要把扩展内存逻辑页的内容分页映射到高端内存的物理页,再对物理页中的NC程序进行解释。对高端内存的物理页进行操作,必须不断地考虑程序指针的变换中所涉及的逻辑页的转换以及程序指针的逻辑页数是否超过这个句柄所拥有的总的逻辑页数等问题[2]。这就要求在程序指针变换时记录下程序指针所对应的扩展内存上的逻辑页中的逻辑位置,称为程序逻辑指针。把程序指针在高端内存物理页中的实际物理位置称作程序实际指针。程序逻辑指针在扩展内存中从逻辑低地址移向逻辑高地址,程序实际指针只是在物理页中往复地从头至尾地移动,直到所有的程序行解释执行完毕。程序逻辑指针和程序实际指针有一种对应关系,设计一个结构体来代替基于系统S基本内存的程序解释器的程序指针,用来记录程序的逻辑位置。 struct?Page?ProgPtr{    charhugeProgPtr;.∥物理页中程序实际指针    int?NumOfCurPage;∥当前的逻辑页    int?PagenumOfHandle;∥句柄所拥有的逻辑页数    unsigned?int?Handle;∥当前程序句柄}? 在具体的解释器实现中要考虑到程序实际指针和程序逻辑指针处于页首和页末的情况。当程序实际指针和程序逻辑指针在页首时,程序逻辑指针的下个位置可能在前一逻辑页末尾,程序实际指针可能要退到物理页的末尾。而当程序实际指针和程序逻辑指针在页末时,程序逻辑指针的下个位置可能在后一逻辑页首,程序实际指针可能从物理页的页尾移到物理页的页首。针对这2种情况进行处理,设计了2个处理函数:? struct?PageProgPtr?TreatOfFrameEnd(struct?PageProgPtr); struct?PageProgPtr?TreatOfFrameStart(struct?PageProgPtr); 通过这种处理保证程序实际指针在物理页中和程序逻辑指针在扩展内存的逻辑页中的准确性。 由于在程序解释时程序实际指针只在物理页中来回变化,而程序逻辑指针在扩展内存的逻辑页中移动,在解释器的设计中必须把程序实际指针和程序逻辑指针结合在一起考虑。解释器通过解释高端内存中物理页的内容来完成扩展内存的NC程序的解释任务。 解释器解释NC程序所得到的数据送到一个环形缓冲队列中,当填满缓冲队列后,解释任务就停止。当插补器从解释器中取走数据,使缓形队列中有空单元时,通过任务调度把解释器再次激活,这样

文档评论(0)

***** + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档