论文部分内容阅读
开放式数控系统是当前数控技术的研究热点。在发展高速高效高精度及智能化等性能的同时,功能的发展也要求越来越强,具体体现在尽量用软件来实现数控的所有功能,使硬件规模达到最小化。作为整个运动控制核心的机床逻辑控制也必然要以软件的形式来实现。我们可直接用高级语言编写机床逻辑,但实现软逻辑PLC的软件需要编译程序。因此以PC机为硬件开发平台和以Windows为软件开发平台的软PLC编译系统就成为一项重要技术。 本文以高级语言SIPROM编写机床逻辑用户源程序,以C语言编写编译程序和运行程序来完整分析编译系统。在编译程序总体设计中,以文法作为程序设计的依据,参照硬PLC的工作原理并以语法分析程序为中心来组织整个编译过程。并根据编译程序所应具有的功能,将编译程序划分为若干组成部分,分别地介绍了各部分应完成的基本工作及相互间的逻辑关系。 用正规文法和正规表达式描述了程序语言的单词符号的结构,用状态转换图构造了识别单词符号。在状态转换图的基础上,构造词形表,为每个状态设计一段处理程序,使词法分析能从字符串中识别单词。本文对递归下降分析法、LL(1)文法、简单优先关系法、分层法、算符优先文法、LR(0)分析法、LR(1)分析法作了优缺点比较后,选择使用LR(1)分析法。并描述了LR(1)分析器的逻辑结构和工作过程,并以实例说明分析器的核心——分析表的算法,使语法分析能判断一组单词是否为一合法句子。语法制导的翻译将语言的属性附加到文法符号上,并由一组附加到产生式上的语义规则来计算属性值。在编译前端的基础上,考虑目标机的指令系统、寻址方式和指令周期,采用回填技术对机器码填充数据以生成等价有效的目标代码——汇编语言程序。符号表管理程序用于查表或填表,错误管理程序主要用于查错。 本文采用一遍扫描的编译程序结构。一遍扫描就能对源程序从头到尾扫视一遍,并进行有关的加工处理工作,完成从源程序到目标代码翻译的编译程序,即翻译高级语言采用编译式。因为编译是按程序的静态顺序线形扫描程序的,而非动态顺序重复翻译,使用编译程序时,只需对源程序编译一遍,以后每次只运行目标程序。可以说,源程序中重复执行的成分,只是运行阶段的重复,编译阶段并不因此重复。编译阶段和运行阶段分开的好处使得整个过程只编译一次。总之,所开发编译系统实现了软PLC的功能,达到了机床逻辑控制的目的,具有硬PLC无法比拟的优势。