CNC系统巨量NC程序解释实现的方法论文

| 收藏本文 下载本文 作者:变身绝色神

以下是小编精心整理的CNC系统巨量NC程序解释实现的方法论文(共含5篇),仅供参考,希望能够帮助到大家。同时,但愿您也能像本文投稿人“变身绝色神”一样,积极向本站投稿分享好文章。

CNC系统巨量NC程序解释实现的方法论文

篇1: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:CNC系统巨量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程序所得到的数据送到一个环形缓冲队列中,当填满缓冲队列后,解释任务就停止。当插补器从解释器中取走数据,使缓形队列中有空单元时,通过任务调度把解释器再次激活,这样解释器和插补器就能协调工作。

3 关于巨量NC程序和类似高级语言BASIC编写的NC程序兼容处理

在一般NC代码解释器中,只能进行ISO代码的NC程序解释,而对于带有高级语言特性的一些NC语句如DO―WHILE语句、IF语句、GOTO语句等和宏变量不支持。对于带有高级语言特性的NC语句的解释有2种方法:第1种方法是做2个解释器分别对ISO代码的NC程序和类似高级语言编写的NC程序进行解释;第2种方法是做1个兼容的通用解释器,它对2种程序都能处理。第1种方法思路简单,解释器编程容易,由于ISO代码的NC程序和类似高级语言编写的NC程序只能分别编写,NC程序的处理能力不强;第2种方法解释器编程较难,但程序的解释功能较强,在ISO代码的程序中可以带有一些高级语言特性的语句如DO―WHILE语句,这样用户所编写的NC程序的处理功能可以很强。

在华中Ⅰ型CNC系统的解释器中,采用的是第2种方法,进行巨量NC程序和类似高级语言编写的NC程序进行兼容处理,保证在巨量NC程序中也能加入一些高级语言的特性,这就要进行类似高级语言的表达式计算、子程序的`调用和程序跳转等高级语言处理过程。

在基于基本内存的NC程序解释器中,对于类似高级语言BASIC编写的NC程序的子程序标号和跳转标号的处理一般先通过扫描整个程序而形成子程序表和标号表,再每次遇到NC调用子程序或执行跳转程序时,通过查表来找到子程序的地址或跳转的目的地址。这样不仅浪费内存,而且影响解释任务的执行速度。如果NC标号非常多,就会占用较多的基本内存,而且解释程序的速度非常慢,特别是CAD/CAM所生成的巨量NC程序,基本上每行都有N标号,更容易出现这样的问题。由于使用扩展内存不仅要对一般的手工编制的较短NC程序进行处理,而且要对巨量NC程序进行处理,采用直接寻址,每次遇到子程序和跳转程序指令时,通过比较标号,找到目的地址执行,这样既节省

系统的基本内存,又提高系统的处理速度和CNC运行的稳定性。通过2个函数来解决这个问题:

struct PageProgPtr Find_Nlabel(struct PageProgPtr);

struct PageProgPtr Find_Ocode(struct PageProgPtr);

4 扩展内存的资源竞争问题

为了节约基本内存,要编辑的程序也装入扩展内存,这也通过一个句柄进行操作。在程序的编辑时,所要编辑的程序从扩展内存的逻辑页轮流装入高端内存的物理页,所有程序的编辑都在高端内存进行,从而保证在程序编辑过程不占用基本内存。

由于所编辑程序和运行的程序都是通过高端内存对扩展内存进行操作,存在资源竞争的问题。在系统中,扩展内存都是通过句柄进行操作的,通过EMM386.EXE文件对扩展内存的逻辑页进行管理,只要能申请到相应扩展内存的句柄,就能保证扩展内存的逻辑页使用不发生冲突。在高端内存中,总共有每页16k的4页物理页,把这些物理页进行分配,程序解释运行使用第1页,而程序编辑使用第2页,由于EMM386.EXE程序本身能保证67H中断的重入问题,通过这样内存的分配方式,解决了扩展内存资源竞争问题[3]。

5 结束语

笔者利用系统的扩展内存实现了在CNC系统中解释巨量NC程序。基于系统扩展内存所做的NC解释器和编辑器使运行程序和编辑程序的大小与基本内存无关,而只与扩展内存有关。计算机可配置的扩展内存越来越大,现已能达到256M,而现阶段8M的扩展内存已能满足一般巨量NC程序运行和编辑的要求,这给更复杂零件加工程序一次装载解释运行提供更大的方便。同时,在多通道的CNC系统软件中,由于每增加一个通道大约要增加到最大20k到30k的内存开销,解释器和编辑器利用扩展内存也能让多通道CNC系统增加更多的通道数,控制更多的独立过程,这对FMS、CIMS的实现也有一定的意义。采用该方法所设计的NC代码解释器,已运用到华中Ⅰ型数控系统上。

参考文献

[1] 黄山,万玉丹.DOS的全部剖析与编程启示.北京:学苑出版社,1993:85~87

[2] [美]TerryDettmann著,熊桂喜,陆益民,黎军英等译.DOS程序员参考手册.北京:清华大学出版社,:158~162

[3] 熊清平,孙联胜,刘延巍.CNC实时多任务操作系统.机械与电子,(3):20~22

篇3:CNC系统巨量NC程序解释实现的方法

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

[1] [2] [3]

篇4:CNC系统巨量NC程序解释实现的方法论文

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基本内存的程序解释器的程序指针,用来记录程序的`逻辑位置。

structPageProgPtr{

charhugeProgPtr;.∥物理页中程序实际指针

intNumOfCurPage;∥当前的逻辑页

intPagenumOfHandle;∥句柄所拥有的逻辑页数

unsignedintHandle;∥当前程序句柄}

在具体的解释器实现中要考虑到程序实际指针和程序逻辑指针处于页首和页末的情况。当程序实际指针和程序逻辑指针在页首时,程序逻辑指针的下个位置可能在前一逻辑页末尾,程序实际指针可能要退到物理页的末尾。而当程序实际指针和程序逻辑指针在页末时,程序逻辑指针的下个位置可能在后一逻辑页首,程序实际指针可能从物理页的页尾移到物理页的页首。针对这2种情况进行处理,设计了2个处理函数:

structPageProgPtrTreatOfFrameEnd(structPageProgPtr);

structPageProgPtrTreatOfFrameStart(structPageProgPtr);

通过这种处理保证程序实际指针在物理页中和程序逻辑指针在扩展内存的逻辑页中的准确性。

由于在程序解释时程序实际指针只在物理页中来回变化,而程序逻辑指针在扩展内存的逻辑页中移动,在解释器的设计中必须把程序实际指针和程序逻辑指针结合在一起考虑。解释器通过解释高端内存中物理页的内容来完成扩展内存的NC程序的解释任务。

解释器解释NC程序所得到的数据送到一个环形缓冲队列中,当填满缓冲队列后,解释任务就停止。当插补器从解释器中取走数据,使缓形队列中有空单元时,通过任务调度把解释器再次激活,这样解释器和插补器就能协调工作。

3 关于巨量NC程序和类似高级语言BASIC编写的NC程序兼容处理

在一般NC代码解释器中,只能进行ISO代码的NC程序解释,而对于带有高级语言特性的一些NC语句如DO―WHILE语句、IF语句、GOTO语句等和宏变量不支持。对于带有高级语言特性的NC语句的解释有2种方法:第1种方法是做2个解释器分别对ISO代码的NC程序和类似高级语言编写的NC程序进行解释;第2种方法是做1个兼容的通用解释器,它对2种程序都能处理。第1种方法思路简单,解释器编程容易,由于ISO代码的NC程序和类似高级语言编写的NC程序只能分别编写,NC程序的处理能力不强;第2种方法解释器编程较难,但程序的解释功能较强,在ISO代码的程序中可以带有一些高级语言特性的语句如DO―WHILE语句,这样用户所编写的NC程序的处理功能可以很强。

在华中Ⅰ型CNC系统的解释器中,采用的是第2种方法,进行巨量NC程序和类似高级语言编写的NC程序进行兼容处理,保证在巨量NC程序中也能加入一些高级语言的特性,这就要进行类似高级语言的表达式计算、子程序的调用和程序跳转等高级语言处理过程。

在基于基本内存的NC程序解释器中,对于类似高级语言BASIC编写的NC程序的子程序标号和跳转标号的处理一般先通过扫描整个程序而形成子程序表和标号表,再每次遇到NC调用子程序或执行跳转程序时,通过查表来找到子程序的地址或跳转的目的地址。这样不仅浪费内存,而且影响解释任务的执行速度。如果NC标号非常多,就会占用较多的基本内存,而且解释程序的速度非常慢,特别是CAD/CAM所生成的巨量NC程序,基本上每行都有N标号,更容易出现这样的问题。由于使用扩展内存不仅要对一般的手工编制的较短NC程序进行处理,而且要对巨量NC程序进行处理,采用直接寻址,每次遇到子程序和跳转程序指令时,通过比较标号,找到目的地址执行,这样既节省系统的基本内存,又提高系统的处理速度和CNC运行的稳定性。通过2个函数来解决这个问题:

structPageProgPtrFind_Nlabel(structPageProgPtr);

structPageProgPtrFind_Ocode(structPageProgPtr);

4 扩展内存的资源竞争问题

为了节约基本内存,要编辑的程序也装入扩展内存,这也通过一个句柄进行操作。在程序的编辑时,所要编辑的程序从扩展内存的逻辑页轮流装入高端内存的物理页,所有程序的编辑都在高端内存进行,从而保证在程序编辑过程不占用基本内存。

由于所编辑程序和运行的程序都是通过高端内存对扩展内存进行操作,存在资源竞争的问题。在系统中,扩展内存都是通过句柄进行操作的,通过EMM386.EXE文件对扩展内存的逻辑页进行管理,只要能申请到相应扩展内存的句柄,就能保证扩展内存的逻辑页使用不发生冲突。在高端内存中,总共有每页16k的4页物理页,把这些物理页进行分配,程序解释运行使用第1页,而程序编辑使用第2页,由于EMM386.EXE程序本身能保证67H中断的重入问题,通过这样内存的分配方式,解决了扩展内存资源竞争问题[3]。

5 结束语

笔者利用系统的扩展内存实现了在CNC系统中解释巨量NC程序。基于系统扩展内存所做的NC解释器和编辑器使运行程序和编

辑程序的大小与基本内存无关,而只与扩展内存有关。计算机可配置的扩展内存越来越大,现已能达到256M,而现阶段8M的扩展内存已能满足一般巨量NC程序运行和编辑的要求,这给更复杂零件加工程序一次装载解释运行提供更大的方便。同时,在多通道的CNC系统软件中,由于每增加一个通道大约要增加到最大20k到30k的内存开销,解释器和编辑器利用扩展内存也能让多通道CNC系统增加更多的通道数,控制更多的独立过程,这对FMS、CIMS的实现也有一定的意义。采用该方法所设计的NC代码解释器,已运用到华中Ⅰ型数控系统上。

参考文献

[1] 黄山,万玉丹.DOS的全部剖析与编程启示.北京:学苑出版社,1993:85~87

[2] [美]TerryDettmann著,熊桂喜,陆益民,黎军英等译.DOS程序员参考手册.北京:清华大学出版社,:158~162

[3] 熊清平,孙联胜,刘延巍.CNC实时多任务操作系统.机械与电子,(3):20~22

篇5: 基于GPS的时标系统实现方法探究论文

基于GPS的时标系统实现方法探究论文

摘要:介绍一种利用全球定位系统(GPS)并辅以复杂可编程逻辑器件,给高速数据采集系统中的采集数据帖上精确时间标签的方法。该方法显著地提高了时间标签的精度和可靠性。利用MAXPLUSII开发环境验证了设计方案的正确性。此设计方案已经成功地应用到自行设计的高速数据采集卡中。

关键词:全球定位系统(GPS)复杂可编程逻辑器件时间标签ADuC812

基于全球定位系统(GPS)的双端行波故障定位系统是利用行波的第一个波头到达线路两端的时间差来计算故障点的位置的。由于行波的传播速度非常快(约为光速的98%),因此对行波波头到达线路两端时刻的时间精度要求非常高。在现场运行中,由于卫星信号调整、天线干扰以及GPS接收系统故障等原因,使得GPS接收系统可能在短时间内失步。这时不同厂站间GPS接收器发出的秒脉冲之间的相对误差可能达到几百μs。再者,相对于高速数据采集系统而言,单片机对时间的分辨能力很低,而且单片机不能直接得到故障发生时对应于静态存储器(SRAM)的确切地址。这两方面的因素都会大大降低时间标签的精度和可靠性,直接影响故障测距的精度,甚至导致定位失败。针对上述问题,对高速数据采集系统中精确时标的实现方法进行了探讨。

1全球定位系统

GPS是美国于1993年全面建成并运行的新一代卫星导航、定位和授时系统。电力系统中主要是利用GPS的精确授时特点。GPS接收器在任意时刻能同时接收其视野范围内4-8颗卫星信号,其内部硬件电路和处理软件通过对接收到的信号进行解码和处理,能从中提取并输出两种时间信号:(1)时间间隔为1s的脉冲信号PPS,其脉冲前沿与国际标准时间(格林威治时间)的同步误差不超过1μs;(2)经串行口输出的与PPS脉冲前沿对应的国际标准时间和日期代码。若以PPS信号作为标准时钟源去同步电网内运行的各时钟,则能保证各厂站时钟的高精确度同步运行。

2ADuC812

ADuC812芯片是美国AD公司推出的微转换器。它是一个完整的数据采集微系统,其组成为:一个8通道、5μs转换时间、精度自校准、12位精度、逐次逼近的ADC;两个12位DAC;10.5KB的闪存E2PROM;16位计数/定时器和32条可编程I/0接口的8051/8052微控制器;256字节的SRAM。由于ADuC812的特殊功能寄存器组中添加了一个DPP(地址为84H),它与特殊功能寄存器DPH、DPL配合,使得ADuC812能够访问16MB的外部数据地址空间。ADuC812的内核是国内技术人员熟悉的Intel8051,应用开发比较方便。

3复杂可编程逻辑器件及MAXPLUSII开发平台

本设计选用ALTERA公司的MAX7000系列复杂可编程逻辑器件(CPLD)。其高性能和高密度是基于它先进的多重阵列矩阵架构。它采用E2CMOS工艺制作,传播延迟最小为3.5ns,可以实现速度高于200MHz的计数器,非常适合高速设计时应用。该公司推出的MAXPLUSⅡ软件是一款易于使用的开发工具,其界面友好、集成化程度高、兼容工业标准、支持FLEX等系列产品。CPLD要实现的逻辑功能一般是在MAXPLUSⅡ环境下通过硬件描述语言开发出来的,并能脱离硬件对设计方案进行仿真,在确认逻辑功能正确无误的情况下,通过并行口下载烧到CPLD中。CPLD在实际应用中有如下优点:

(1)以内部连线代替外部器件的连接,降低了噪声干扰,实现了线路互联的较短延时。

(2)可以在板编程,提高了系统的PCB设计和调试效率。

(3)在实际调试前,可由MAXPLUSⅡ开发平台对CPLD的逻辑功能进行仿真,确保了系统逻辑设计的正确性。

4GPS失步监测及时钟信号实现方案

对GPS的PPS失步监测是通过解读其有关输出语句报文信息来实现的。报文信息通常使用NMEA-0183格式输出,目前广泛使用V2.0版本,输出的数据代码为ASCⅡ码字符。在NMEA-0183的主要语句中,GPRMC为时间、定位和日期输出语句,其标准格式为:

$GPRMC,hhmmss.ss,a,ddmm.mmmm,n,dddmm.mmmm,w,z.z,y.y,ddmmyy,d.d,v*CC

每一项以逗号相隔,其中第一项为格林威治时间的时、分、秒信息;第九项为格林威治时间的日、月、年信息;第二项为定位数据是否有效信息,“A”表示有效,“V”表示警告或者数据无效。单片机通过解读此报文信息便可判断GPS是否失步。

在GPS接收器工作正常时(GPS接收器能接收到卫星信号),由GPS提供秒脉冲信号。否则,由频率为20MHz的高精度恒温晶振(OXOF系列频率精度为1×10-8~1×10-9)和一个25位计数器临时替代GPS发出秒脉冲信号,使不同厂站间时钟偏差在一定时间内控制在要求的范围。时钟系统原理图如图1所示。

时钟系统工作过程如下:

(1)采用

Jupiter型GPS接收器,在秒脉冲信号前沿来临前先发报文。

(2)采用单片机(如AT89C2051)接收GPS串行报文数据,产生年、月、日、时、分、秒信号,并判断GPS即将发出的秒脉冲信号是否有效,从而控制P1.0口的状态。

(3)采用频率为20MHz的高精度恒温晶振驱动25位

计数器计数,当计数器计满1312D00H个数(时间为1s)时,计数器清零重新开始计数,同时在其输出口置“1”。当计数器计到7D000H个数(时间为25.6ms)时,在其输出口置“0”,产生秒脉冲信号。

(4)当单片机获悉GPS接收器跟踪到卫星信号时,P1.0口置“1”,与门(1)打开,与门(2)关闭,在与门(1)的输出口输出精确的秒脉冲信号,同时每一个秒脉冲信号上跳沿对25位计数器清零使之重新开始计数,为计数器提供精确的时间基准,以减少计数器的累计误差。

(5)当单片机获悉GPS接收器没有跟踪到卫星信号时,P1.0口置“0”,与门1关闭,与门2打开,由25位计数器临时产生秒脉冲信号。用MAXPLUSⅡ做仿真实验时,由于计算机资源不足,无法进行1秒钟的仿真实验,可以仿真1ms的情况。计数器计满4E20H个数(0000H-4E1FH),时间为1ms。图2和图3反映的是同一次仿真的两个不同片断。

5精确时间标签的实现方案

时钟系统能保证在任何情况下产生个稳定的、高精度的秒脉冲信号,从而为高速数据采集系统中的采集数据贴上精确的时间标签打下坚实基础。

时标系统原理图如图4所示。高速ADC、地址发生器、地址计数器、计时器在时钟源CLK(5MHz)的同步下以统一的步调工作。在ADuC812初始化时,将P3.5置“0”,P3.4发出清零脉冲对地址发生器和地址计数器同时清零;当故障信号出现时,ADuC812将P3.5置“1”,计时器和地址计数器同时停止计数;暂态信号记录完毕后,ADuC812分时读出计时器中的值并将该数值保存在双口RAM中,此值即为精度为0.2μs的时间信息;A-DuC812分时读出地址计数器中的值并将该数值保存在双口RAM中,此地址的精确时间即为计时器中的计数值。这样,就为高速数据采集系统中的采集数据贴上了精确的时间标签。

时标系统工作过程如下:

(1)ADuC812初始化时P3.5置“0”,同时P3.4发出清零脉冲使地址发生器和地址计数器同步计数。ADuC812控制内部的A/D转换模块对经过调整的取自电流互感器二次侧的电流进行A/D转换。采用半波比较,在每个工频内采集36个点,分别用第n个点和第n+18个点、第n+1个点和第n+19个点比较,依此类推。如果大于事先设定的门槛值即认为故障已经发生,ADuC812将P3.5置“1”,计时器和地址计数器同时停止计数,计时器中的数据即为地址计数器记录的对应于SRAM相同地址的采集数据的`时间标签。由于高速ADC的转换频率固定(本次设计为5MHz),所以,可以此为基准为整个SRAM中的采集数据贴上时间标签。

(2)当P3.5置“0”即STOP端口为低电平时,计时器在5MHz的时钟源下以相同的频

率计数。由于它是一个24位的计数器,从而确保了计时器能够记录一个整秒,并为一个整秒刻上了o.2ps(五而1丐面子:o.21xs)的最小刻度。时钟系统输出的PPS信号(或SECOND信号)的上跳沿给计时器清零,从而为计时器提供精确的时间基准,以消除计时器的累计误差。

(3)当P3.5置“1”即STOP端口为高电平时,计时器停止计数,在此状态下时钟系统输出的PPS信号(或SECOND信号)的上跳沿不能对计时器清零。

(4)地址计数器的工作过程与计时器的工作过程类似,唯一的区别是地址计数器的清零信号(CLR)是在初始化时由ADuC812的P3.4口发出的。由于地址发生器和地址计数器共用同一个清零信号,从而确保地址发生器和地址计数器中的计数值完全相同。同理,当STOP端口为高电平时,地址计数器也停止计数,在此状态下ADuC812发出的清零信号不能改变地址计数器中的计数值。

5)由于ADuC812是一种8位单片机,所以地址计数和计时器中的数据只能“分批”地送至双口RAM中保存。所以要设计锁存器、译码电路和总线隔离电路,避免总线冲突以及保证总线上的数据能正确无误地传递。在本次设计中;当ADuC812的特殊功能寄存器DPP高3位的值为“00H”时将计时器的高8位数据通过A-DuC812送至双口RAM中。依此类推,当特殊功能寄存器DPP高3位的值为“05H”时将地址计数器的低8位数据通过ADuC812送至双口RAM中保存。当特殊功能寄存器DPP为其它值时释放数据总线,便于ADuC812进行其它操作。其仿真结果如图5所示。

本文对GPS失步后的补救措施及给高速数据采集系统中的采集数据贴上精确时间标签的方法进行了详尽的叙述和仿真,得出如F结论:

(1)在高频恒温晶振的精度得到保证的前提下,时钟系统产生的秒脉冲信号能满足实际应用的要求。

(2)设高速ADC的转换频率为5MHz,时标系统能为存人SRAM中的转换数据贴上精度为0.2μs的时间标签。

(3)通过CPLD间接地实现了“低速”的单片机系统对高速数据采集系统的实时监视。

顶岗实习管理系统设计与实现论文

浅析数字律师事务所应用系统设计与实现论文

教你EXE程序的自删除实现

过程方法与系统方法

信息管理系统论文

浅谈大学实验成绩系统的设计方法论文

银行管理系统测试工作量估算方法论文

基于XML技术的自动阅卷系统设计与实现论文

win7系统打补丁的方法

网络购物系统论文

CNC系统巨量NC程序解释实现的方法论文(精选5篇)

欢迎下载DOC格式的CNC系统巨量NC程序解释实现的方法论文,但愿能给您带来参考作用!
推荐度: 推荐 推荐 推荐 推荐 推荐
点击下载文档 文档为doc格式
点击下载本文文档