CN107710086B - 平移模块、处理模块及控制系统 - Google Patents

平移模块、处理模块及控制系统 Download PDF

Info

Publication number
CN107710086B
CN107710086B CN201680033251.7A CN201680033251A CN107710086B CN 107710086 B CN107710086 B CN 107710086B CN 201680033251 A CN201680033251 A CN 201680033251A CN 107710086 B CN107710086 B CN 107710086B
Authority
CN
China
Prior art keywords
module
control
program code
programming language
machine
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201680033251.7A
Other languages
English (en)
Other versions
CN107710086A (zh
Inventor
德克·詹森
克劳斯·博恩善
拉夫·德礼森
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beckhoff Automation GmbH and Co KG
Original Assignee
Beckhoff Automation GmbH and Co KG
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beckhoff Automation GmbH and Co KG filed Critical Beckhoff Automation GmbH and Co KG
Publication of CN107710086A publication Critical patent/CN107710086A/zh
Application granted granted Critical
Publication of CN107710086B publication Critical patent/CN107710086B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/18Numerical control [NC], i.e. automatically operating machines, in particular machine tools, e.g. in a manufacturing environment, so as to execute positioning, movement or co-ordinated operations by means of programme data in numerical form
    • G05B19/408Numerical control [NC], i.e. automatically operating machines, in particular machine tools, e.g. in a manufacturing environment, so as to execute positioning, movement or co-ordinated operations by means of programme data in numerical form characterised by data handling or data format, e.g. reading, buffering or conversion of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/427Parsing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/436Semantic checking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/36Nc in input of data, input key till input tape
    • G05B2219/36031Programming in assembler, machine or high level language
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/36Nc in input of data, input key till input tape
    • G05B2219/36186Programming languages for lathe, mill or general use mixed

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Manufacturing & Machinery (AREA)
  • Automation & Control Theory (AREA)
  • Computational Linguistics (AREA)
  • Programmable Controllers (AREA)
  • Devices For Executing Special Programs (AREA)
  • Numerical Control (AREA)
  • Stored Programmes (AREA)

Abstract

本发明涉及一种用于设备控制的平移模块,其中该平移模块是配置以处理控制程序的输入程序代码,并由其产生具有用于由所述机器控制执行的工作指令的统一的中间表示,该输入程序代码包括第一程序代码组成和第二程序代码组成,其中该第一程序代码组成是以第一程序设计语言所撰写,该第二程序代码组成是以第二程序设计语言所撰写。该中间表示的工作指令包括第一工作指令与第二工作指令,其中该第一工作指令是根据该第一程序代码组成所产生,且该第二工作指令是根据该第二程序代码组成所产生。

Description

平移模块、处理模块及控制系统
技术领域
本发明是与用于机器控制的平移模块、用于机器控制的处理模块、以及用于控制机器的控制系统有关。
背景技术
具有机器控制的控制系统特别被使用于自动化工程中。对于运动控制,这主要涉及被配置作为数值控制(NC)或计算器数值控制(CNC)所实施的机器控制。配置作为NC或CNC控制的机器控制一般是从控制程序读取关于要被执行的机器的移动的信息,并且使用此信息来产生用于机器的位置控制器的设定点数值,其中位置控制器控制机器部件的位置和移动。典型地,设定点数值是以固定的循环时间来产生而且循环地输出。
NC控制典型地是通过命令式程序设计语言进行程序设计,其中在运行时间启动之后会执行一次加载的控制程序。用于程序设计配置为NC控制的机器控制的支配程序设计语言是语言G代码,如工业标准ISO 6983中所述者。G代码允许由机器执行的移动可通过几何元素(例如:连续的线或圆弧段)加以定义。然而,符合标准的G代码的缺点是对于可用的几何元素的语言的有限范围以及高级语言元素的大量缺乏。因此,无法使用、或仅可在有限的程度上使用命名的变量、渐进式控制流程指令(例如多种情况差异)、以及命名及/或参数化的函数。本机和用户定义的数据类型(例如多维数组、指针、结构、列表和字符串)是不可用的。面向对象程序设计的程序设计范例是无法应用的。
除了用于位置控制的NC控制以外,可程序设计逻辑控制器(PLC)也被使用于自动化工程中。可程序设计逻辑控制器是被用于过程控制工程,特别是例如用于控制生产线或化学设备。配置为可程序设计逻辑控制器的机器控制通过致动器(例如继电器、驱动器或阀门)来控制或调节机器与设备,所述致动器是基于配置在机器上或设备上的传感器已捕获的测量数值而受控制。
可程序设计逻辑控制器正常是于事件控制基础上运作,并且周期性地执行控制程序。在一次执行循环中,传感器的信号接着被读取,而且这些信号被使用作为用于计算和输出致动器的输出数值的基础。用于配置作为可程序设计逻辑控制器的机械控制的程序设计语言在工业标准IEC 61131-3中特别加以标准化。这些程序设计语言中的其中一种是结构化文本。结构化文本是以文本为基础,并且特别是包括基于高级语言(例如控制流程指令)的结构化能力。
IEC 61131-3的PLC语言仅适用于具有NC控制的移动控制。举例而言,如果通过功能块以PLC语言程序设计NC命令,则这会有的缺点是,通过控制程序的循环传递和功能块的重复评估是资源密集的,且会减慢程序执行。NC控制和可程序设计逻辑控制器同时执行(其中计算是从NC控制重新分配到可程序设计逻辑控制器)的缺点是,NC控制和可程序设计逻辑控制器之间为此目的所需的通信会减慢整个程序执行速度,并增加程序设计复杂性。
发明内容
本发明的一项目的在于允许增进的机器控制。特别地,本发明旨在允许能够灵活、简单且有效地程序设计的机器控制,并且同时允许控制程序的快速、节省资源地执行。
这个目的是通过如权利要求1所述的用于机器控制的平移模块、如权利要求10所述的用于机械控制的处理模块、以及如权利要求20所述的用于控制机器的控制系统来实现。其他有利的实施例是分别在从属权利要求中提出。
用于机器控制的平移模块是配置以处理控制程序的输入程序代码、以及由其产生具有用于由所述机器控制执行的工作指令的统一的中间表示。在这个情况中,输入程序代码包括第一程序代码组成和第二程序代码组成,其中所述第一程序代码组成是以第一程序设计语言所撰写,所述第二程序代码组成是以第二程序设计语言所撰写。所述中间表示的工作指令包括第一工作指令与第二工作指令,其中所述第一工作指令是根据所述第一程序代码组成所产生,所述第二工作指令是根据所述第二程序代码组成所产生。
这种平移器模块有利地允许第一程序设计语言和第二程序设计语言的语言元素在产生控制程序时能够组合。因此,具有两种程序设计语言的命令的程序设计者可以通过使用其他程序设计语言的程序语言轻松地表达不在程序设计语言其中一种的语言元素或结构。程序设计语言的语言元素是用程序设计语言编写的程序代码的所有有意义的单元,例如指令、声明、指定、控制流程指令、表达式、变量、关键词、数字或字符串。语言元素可以为相关程序设计语言的语法的被分配符号。
以第一程序设计语言组成的第一程序代码组成包括分别表示第一程序设计语言的符号的字符序列,而以第二程序设计语言组成的第二程序代码组成包括分别表示第二程序设计语言的符号的字符序列。这些符号可以是例如指令、表达式、指定、声明或控制流程指令之类的非终止符号。这些符号也可以是终止符号,例如文本,像是数字或字符串、描述符、关键词或特殊字符。终止符号也可以被称为个别的程序设计语言的基本符号。
如果由字符序列表示的字符序列或一系列基本符号可以根据第一或第二程序设计语言的规则而从非终止符号汇出,则输入程序代码的字符序列即表示第一或第二程序设计语言的非终止符号。如果字符序列可以从非终止符号汇出,则也可以说字符序列包括非终止符号。
第一程序代码组成和第二程序代码组成可以彼此交错,这表示在输入程序代码中,第一程序代码组成的字符序列之后可接以第二程序代码组成的字符序列,而第二程序代码组成的字符序列之后可接以第一程序代码组成的字符序列。类似地,输入程序代码可以包括以第一程序设计语言或第二程序设计语言所编写的另一个程序代码组成。
第一程序设计语言可以通过示例的方式允许机器控制的命令性程序设计,并且被设计成使得控制程序在运行时间中执行一次。第一程序设计语言可以是针对例如移动控制进行优化的程序设计语言,但是对于控制流程指令、或是变量或函数的使用,其仅具有有限的语言范围。特别地,第一程序设计语言可以是语言G代码。
第二程序设计语言可以是,例如针对在可程序设计逻辑控制器中使用而优化的程序设计语言。在这种情况下,第二程序设计语言可以包括允许使用例如命名变量、具有形式参数的命名函数或控制流程指令的高级语言元素。特别地,第二程序设计语言可以是工业标准IEC 61131-3的PLC语言之一,例如语言结构化文本。
统一的中间表示是基于由输入程序代码的第一程序代码组成和第二程序代码组成表达的所有控制指令。因此,由第一程序代码组成和第二程序代码组成形成的控制程序的两个部分被组合在中间表示中。作为示例,中间表示可以以适合于由机器控制的快速和有效的执行的形式而为可用,例如以面向对象的形式。
以第一程序设计语言组成的第一和第二程序代码组成、以及以第二程序设计语言组成的第一程序代码组成和第二程序代码组成可以以统一的中间表示形式组合,作为依次序执行的工作指令。因此有利地达成的效果是,在第一和第二程序代码组成中进行编码的控制指令可以按照正确的处理顺序由机器控制来处理。类似地,由第一程序代码组成形成的控制程序的部分和由第二程序代码组成形成的控制程序的部分之间的数据的有利地简单的交换是可能的。
在平移模块的一个实施例的情况中,所述平移模块包括解析模块,所述解析模块是被配置为从输入程序代码中读取第一程序代码组成和第二程序代码组成,并将其转换成基本符号。解析模块被配置为采用第一状态和第二状态。在这种情况下,第一状态下的解析模块将第一程序代码组成转换为第一程序设计语言的基本符号;第二状态下的解析模块将第二程序代码组成转换为第二程序设计语言的基本符号。
这种用于读取输入程序代码的解析模块以有利的简单方式允许平移模块实现将具有第一程序设计语言的程序代码组成和具有第二程序设计语言的程序代码组成的输入程序代码转换成统一的中间表示。作为示例,存在有模糊字符序列,其在第一程序设计语言和第二程序设计语言中表示或描绘基本符号,但是在两种程序设计语言中分别具有不同的含义,也就是可以转换成不同的基本符号。由于解析模块分别采用两种状态中其中一个来转换第一程序代码组成的字符序列和第二程序代码组成的字符序列,并且根据状态而使用第一程序设计语言的基本符号或第二程序设计语言的基本符号来进行转换,故有利地可以确定这种模糊字符序列总是会被转换成分别使用的程序设计语言的基本符号。
当输入程序代码的程序代码组成被转换为基本符号时,被配置以采用第一与第二状态的解析模块可被配置作为例如有限机器。除了第一与第二状态之外,解析模块其他状态的有限数量也有可能存在。
在平移模块的一个具体实施例的情况中,解析模块是配置以于从输入程序代码读取第一控制序列时执行从第一状态到第二状态的状态转换,并于从输入程序代码中读取第二控制序列时执行从第二状态到第一状态的状态转换。
作为示例,第一或第二控制序列可由单一字符所组成(例如特殊字符),或由具有多数个字符的字符序列所组成。第一和第二控制序列可由不同的、或相同的字符或字符序列组成。
第一控制序列可由不代表第一程序设计语言的基本符号的字符或字符序列所组成。同样地,第二控制序列可由不代表第二程序设计语言的基本符号的字符或字符序列所组成。在这些情况中,由解析模块读取第一或第二控制序列仅仅由解析模块起始了状态转换。可替代地,第一控制序列或第二控制序列也可代表第一或第二程序设计语言的基本符号。在这些情况中的解析模块会在第一与第二控制序列被读取时产生代表的基本符号,并且执行状态转换。
第一与第二控制序列的使用允许输入程序代码中的第一程序代码组成和第二程序代码组成可轻易地与彼此区分。这允许将输入程序代码明确地解析成第一和第二程序设计语言的基本符号,并且允许排除输入程序代码中的模糊字符序列的冲突。
在一个具体实施例的情况中,平移模块包括剖析器模块,其是配置以从基本符号产生控制程序的统一的结构树,其中所述剖析器模块是配置以根据组合语法对所述输入程序代码执行句法检查。在这个情况中,所述组合语法包括所述第一程序设计语言的第一语法规则、以及所述第二程序设计语言的第二语法规则。
包括来自第一和第二语法的组合语法的规则可以通过示例而规定以第一或第二程序设计语言分别有效且表示指令、表达式、指定、关键词的字符序列的方式,例如来自控制流程指令,或者例如数字和描述符所形成。因此,在第一或第二程序设计语言中为有效的这些字符序列也会再次形成组合语法的有效字符序列。在这个方面,组合语法定义了一种程序设计语言,其为第一与第二程序设计语言的组合,并且因此也被称为汇编语言。除了第一语法的规则和第二语法的规则以外,组合语法可能包括第一程序设计语言的哪些符号可以与第二程序设计语言的哪些符号组合的规则。
由剖析器模块对输入程序代码进行句法检查可有利地允许输入程序代码在实际上被读取时进行句法正确性的完全检查。在这种情况中,”完全”特别是表示关于第一语法的错误和关于第二语法的错误两者、以及基于组合第一与第二语法的规则差异所致的可能错误都可能被辨识出来。由平移模块的剖析器模块进行句法检查可在例如控制程序的加载时间执行。这有利于在执行时安全地排除由于语法上错误的输入程序代码所导致的控制程序中断。
在这个情况中,统一的结构树包括由解析模块从输入程序代码中产生的所有基本符号、以及组合语法的非终止符号。非终止符号在这个情况中是由剖析器模块从基本符号的系列产生。若组合语法的规则包括第一程序设计语言的哪些符号可能与第二程序设计语言的哪些符号组合,则结构树中与所述第一程序设计语言的符号相关联的第一节点可能具有与所述第二程序设计语言的符号相关联的第二节点(作为子节点)。同样地,结构树中与第二程序设计语言的符号相关联的节点可能具有与所述第一程序设计语言的符号相关联的节点作为子节点。结构树可因此包括:特别是先包括第一程序设计语言的符号的子树,以及再包括包括第二程序设计语言的符号的子树。
在平移模块的一个实施例的情况中,第一程序设计语言为G代码,及/或第二程序设计语言为结构化文本。语言G代码有利地特别适合用于组成对于移动控制的机器控制的控制程序。凭借于所使用的语言结构化文本的相关语言元素,在编写输入程序代码时,可以有利地补偿G代码语言的有限范围,例如关于变量、数据类型、函数和控制流程指令。由于两种语言都是广泛用于程序设计机器控制的程序设计语言,有利于让熟悉程序设计机器控制的程序设计者可不需花费太多心力学习和认识,就产出将程序代码组成或语言G代码的语言元素和语言结构化文本组合的控制程序。
在平移模块的一个实施例的情况中,输入程序代码包括具有第一指令和第二指令的一系列指令,其中第一程序代码组成包括第一指令,且第二程序代码组成包括第二指令,且其中第一指令是由G代码句所组成,而第二指令是由ST指令所组成。
在这个情况中,ST指令是以程序设计语言结构化文本所撰写,而G代码句是以程序设计语言G代码所撰写。根据结构化文本的语法规则,ST指令可为一种语言元素,举例而言,例如指定、控制流程指令或函数调用。指定可接着包括例如表达式。G代码句是由一系列的G代码文字所组成,其中所述G代码文字一般是包括地址字母与数值。所述数值由可被评估以形成数字的表达式所提供的数字组成。表达式可包括一或多个计算操作,举例而言,例如乘法或加法。
凭借于被配置以处理输入程序代码(其中所述输入程序代码具有由ST指令和G代码句所组成的一系列指令)的机器控制的平移模块,机器控制可有利地由包括两种程序设计语言的混合指令的输入程序代码加以控制。作为例示,机器控制可被配置以分别地依照包含于所述输入程序代码中的顺序执行ST指令和G代码句。
在平移模块的一个实施例的情况中,输入程序代码包括具有地址字母与数值的G代码文字,其中所述第一程序代码组成包括地址字母,而所述第二程序代码组成包括数值,且其中所述数值包括ST表达式。在所述ST表达式中,有利地是可使用ST变量或ST函数来计算所述G代码文字的数值。这特别是允许在控制程序的运行时间通过ST表达式来动态地计算所述G代码文字中所使用的数值以及,作为例示,被并入所述数值的计算中的当前过程变量。这延伸了语言G代码的语言范畴,因为通常它仅使用常数数值,亦即在控制程序加载时间可用的数值。
在平移模块的一个实施例的情况中,输入程序代码包括具有地址字母与数值的G代码文字,其中所述第一程序代码组成包括所述地址字母与所述数值,且所述数值包括ST变量。凭借平移模块(其被配置以处理具有G代码文字的输入程序代码,且所述G代码文字的数值包括ST变量),有利的是可以将执行时的ST变量的当前数字数值用于包含G代码字的控制程序的控制指令的执行。例如,这允许基于运行时间时可用的过程参数动态地计算变量的数字数值。
在平移模块的一个实施例的情况中,平移模块包括分析模块,其中所述分析模块是配置以根据组合的语义系统对所述输入程序代码执行语义检查。在这个情况中,所述组合的语义系统包括所述第一程序设计语言的第一语义系统的规定以及所述第二程序设计语言的第二语义系统的规定。
作为示例,所述语义分析可包含对于输入程序代码在所含表达式的类型的纯度方面、在所使用的变量与函数的名称关联性方面、或在被执行的函数参数的正确使用方面的检查。在这个情况中,所述组合的语义系统不仅可能包括第一程序设计语言的语义系统的规定和第二程序设计语言的语义系统的规定,也包括规范第一程序设计语言的基本符号和第二程序设计语言的基本符号的组合的进一步规定。分析模块可在控制程序的加载时间、以及在控制程序执行之前,执行输入程序代码的语义分析。这有利地允许在加载时间识别出静态语义错误,并且,特别地,允许其被排除由于语义错误而需在运行时间被中断或终止的控制程序的中间表示的执行。
在平移模块的一个实施例的情况中,平移模块包括包括内存分配模块,其中所述内存分配模块是配置以将包括所述机器控制的控制系统的内存的内存地址分配到包含于所述输入程序代码的变量。凭借在输入程序代码中所使用的变量在产生中间表示之前就被指定给内存地址,可以产生有利地有效执行的中间表示。特别是,在控制程序的运行时间对于内存管理的复杂性可被降低。
一种用于机器控制的处理模块是被配置以处理具有工作指令的中间表示,以及使用所述工作指令作为产生用于控制连接到机器控制的机器的控制命令的基础。在这个情况中,所述处理模块包括执行模块与NC处理器,其中所述执行模块是配置以利用所述中间表示的工作指令作为用于产生NC指令的基础,并且将后者传送至所述NC处理器,而且其中所述NC处理器是配置以采用NC指令作为用于产生所述控制命令的基础。
所述NC指令可通过所述执行模块而产生,使得它可以以一种程序设计语言完全地表达。作为例示,这种程序设计语言也许是被使用于撰写基于中间表示的输入程序代码的程序设计语言。若包括第一和第二程序设计语言的汇编语言已经被使用于撰写输入程序代码,则所述NC指令所基于的程序设计语言即可为例如第一程序设计语言。
作为例示,用于撰写基于工作指令的输入程序代码的第二程序设计语言可包括所述第一程序设计语言未包含的语言元素。作为例示,这些语言元素可为高级语言元素,例如命名变量、具有形式参数的命名函数或控制流程指令。工作指令的处理可涉及完整评估这些高级语言元素的执行模块。所述NC指令可接着在不需内存存取操作、变量评估或控制流程指令的评估下被所述NC处理器转换为控制命令。
执行模块可被配置以评估中间表示所包含的变量或函数调用,并通过使用在处理中间表示的时间于函数或变量的评估期间获得的显式数字数值(而不是变量或函数调用)来产生NC指令。结果是,所述NC指令可有利地包括在控制程序运行时间于控制命令产生期间所获得或产生的数据,即使是在所述NC指令所基于的程序设计语言并不支持变量或函数的情况。
NC指令可特别是基于不包括高级语言元素、但特别适合移动指令规则的程序设计语言。作为例示,这种程序设计语言可为语言G代码,而且执行模块可被配置以产生可由G代码表达的NC指令。NC处理器接着本质上被配置作为例如G代码解释器或平移器。由执行模块基于G代码处理中间表示以形成工作指令则有利地允许语言G代码可由另一种程序设计语言的高级语言元素加以扩充,例如语言结构化文本。
在处理模块的一个实施例的情况中,执行模块是被配置以产生用于控制机器的另一个控制命令。所述执行模块因而是配置以产生控制命令,而无须由所述NC处理器基于NC指令产生所述控制命令。这甚至有利地允许在用于描绘NC指令的程序设计语言中不能表达的控制命令将被使用于控制机器。
在处理模块的一个实施例的情况中,所述处理模块包括排序模块,所述排序模块是配置以接收控制命令和另一个控制命令,并以致动顺序来输出控制命令和另一个控制命令。作为例示,所述处理模块可被配置使得所述执行模块和所述NC处理器可并行执行,因而由NC处理器所产生的控制命令以及另一个控制命令可由处理模块同时产生。
作为例示,执行模块在已经将用于产生控制命令的NC指令传输到NC处理器之后,即可处理中间表示的另一个工作指令,基于此工作指令,所述执行模块产生所述另一个控制命令。NC处理器或执行模块中的执行延迟会导致控制命令和所述另一个控制命令无法以移动控制所需的时间顺序输出。在这种情况中,所述排序模块有利地确定所述控制命令和所述另一个控制命令是根据用于机器的移动控制所需的执行顺序而被传输到要被控制的机器。
在处理模块的一个实施例的情况中,所述执行模块是配置以从包括机器控制的控制系统的内存中读取数据,及/或对所述内存写入数据。这有利地允许所述机器控制能够处理控制程序的输入程序代码,其中所述控制程序包括例如具有形式参数的命名函数或命名变量的高级语言元素。变量或参数的内容在控制程序的运行时间可由执行模块写入内存中、或从内存中读取。若被传输到NC处理器的NC指令是基于不包含这类高级语言元素的程序设计语言,则所述处理模块也可被配置为使得只有执行模块而非NC处理器可访问控制系统的内存。
在处理模块的一个实施例的情况中,所述执行模块是配置以从所述NC处理器接收关于所述NC处理器的状态的一条状态信息。这有利地允许在为处理中间表示的工作指令时可考虑在运行时间NC处理器的个别当前状态。作为例示,这允许控制流程指令的条件为基于所述NC处理器的当前状态。举例而言,状态信息可为致动坐标转换或工具信息。
在处理模块的一个实施例的情况中,中间表示包括对指令对象的一系列对象指针,其中所述指令对象是指包含工作指令的方法。这有利地允许由所述执行模块可对于所述中间表示基于对象且特别有效率的处理。所述指令对象也可包括静态数据作为属性,其中所述数据是由平移模块所使用,并且是从所述方法在工作指令的处理期间被读取。
在处理模块的一个实施例的情况中,工作指令可用作为机器代码。在处理模块的一个实施例的情况中,所述执行模块是配置以将NC指令传送到所述NC处理器作为数据结构,特别是作为二进制数据结构。这有利地允许在所述控制程序的运行时间由所述执行模块对工作指令、或由所述NC处理器对NC指令的特别快速且有效率的处理。这有利地确定用于控制所述机器的控制命令总是可用,甚至是在机器移动的快速执行的情况。
在处理模块的一个实施例的情况中,所述NC指令是表示G代码句。这有利地允许由所述NC指令所表示的用于要被控制的机器的移动指令可以由来自几何元素的一些参数来有效表示。这减少了描绘NC指令所需要的数据空间,并且有利地使得来自中间表示的工作指令的控制命令的快速产生成为可能。
在处理模块的一个实施例的情况中,执行模块是配置作为堆栈机器。在这个情况中,中间表示的工作指令可分别为操纵所述堆栈机器的运行时间堆栈的堆栈命令。配置作为堆栈机器的执行模块允许特别简单且有效的中间表示的执行。
用于控制机器的控制系统具有机器控制,其中所述机器控制包括平移模块和处理模块。作为例示,机器控制的平移模块可被配置以从输入程序代码产生具有由处理模块处理的工作指令的统一的中间表示。处理模块可被配置以采用工作指令作为为了控制所述机器而作为产生用于控制命令的基础。凭借包括带有平移模块与处理模块的机器控制的控制系统,使得具有所述第一与第二程序设计语言的控制序列的所述输入程序代码有利地简单且快速的处理和执行成为可能。
统一的中间表示的产生有利地允许输入程序代码被调整为在控制程序的运行时间以有效且节省资源的方式来连续且本质上依顺序地执行。此外,在由处理模块的执行模块对于中间表示进行处理期间,例如可能产生NC指令,其可由第一程序设计语言完整描述。这有利地允许NC处理器能够被优化以处理第一程序设计语言。整体而言,控制系统的机器控制因而以有利地简单、有效且节省资源的方式允许输入程序代码被处理,为此,第一程序设计语言已被第二程序设计语言的语言元素加强,但是其中由NC处理器产生的控制命令也是仅基于所述第一程序设计语言。
在控制系统的一个实施例的情况中,控制系统包括NC核心和设定点数值通道。NC核心是被配置以接收处理模块的控制命令,以利用控制命令作为用于产生所述机器的设定点数值的基础,并且通过所述设定点数值通道而将设定点数值传送到所述机器。此外,机器控制形成了控制系统的用户程序环境的部分,而且NC核心形成控制系统的实时环境的部分。
与NC指令相似,控制命令可包括描述用于要被控制的机器的移动指令的参数化几何元素。结果是,控制命令包括有利地小的资料空间,这表示它们可以特别快速地被传送到所述NC核心。凭借NC核心将控制命令转换为设定点数值,关于要被执行的移动的信息可有利地以能够由机器的一或多个位置控制器特别简单地处理的形式来传送。此外,所述NC核心可被配置以调整由几何元素所参数化的移动指令;作为例示,这可以包括要在离散点被执行的机器移动的内插,其中所述离散点是由设定点数值打算被产生的时间所描述。
所述控制系统可被配置以于控制计算器上执行用户程序环境的模块、以及实时环境的模块,并以规定的时间间隔来分别将控制计算器的计算时间分配给实时环境的模块。计算时间可分别包括规定的时段,并且分别地被永久地指定给模块,因此可确定实时环境的相关模块不会不具有计算时间。结果是,有利地可确定实时环境的模块的输出数值(例如NC核心的设定点数值)是在固定的时间间隔连续地产生。
控制程序的用户程序环境可包括在执行上非时间关键的所有模块,亦即不需要被指定控制计算器计算时间的固定比例,且在执行期间如果需要的话,也可以再次不具有运行时间窗口。
凭借被配置为使得机器控制形成用户程序环境的部分且NC核心形成实时环境的部分的控制系统,由实时环境所要执行的计算次数可有利地保持为小。机器控制的平移模块所进行的输入程序代码的处理和中间表示的产生(其可能相对地计算密集)可有利地在所述控制程序的实际执行之前被执行。在运行时间,接着可以由机器控制的处理模块以有利地有效的方式将所述中间表示转换为用于NC核心的控制命令。
在控制系统的一个实施例的情况中,所述控制系统包括内存,且所述机器控制是被配置以将数据写入至所述内存、及/或从所述内存中读取数据。这有利地允许机器控制可在从控制程序的输入程序代码产生控制命令期间使用命名变量或具有参数的命名函数,其中变量或参数的数值可被存储在内存中。这有利地允许包括变量或函数的程序设计语言可以被用于撰写输入程序代码。内存存取可通过例如机器控制的执行模块来进行。
在控制系统的一个实施例的情况中,控制系统包括PLC模块,其中所述PLC模块是配置以控制所述机器控制对所述控制程序的输入程序代码的处理。此外,所述PLC模块是配置以与所述内存互相交换数据。
所述PLC模块使得可程序设计逻辑控制器的功能成为可用。作为例示,所述PLC模块可被配置以由所述机器控制提示加载、执行及终止控制程序。此外,所述PLC模块可被配置以控制机器的功能或设备,包括不包含实际运动控制的机器。作为例示,所述PLC模块可被配置以控制及监测包括所述机器的设备的整个产生程序。
凭借于所述PLC模块,与机器控制相似,即能够存取所述控制系统的内存,所述内存可被用于在所述机器控制与所述PLC模块之间以有利地简单方式互相交换数据。结果是,所述PLC模块在例如过程控制期间会考虑状态消息、或是变量或参数的当前数值。PLC模块也可对机器控制传送在控制程序的处理期间打算被考虑的移动参数。举例而言,这些可能是与要加工的工件或是要使用的工具有关的信息。
附图说明
下文将参照图式来更详细说明本发明,其中:
图1示出具有机器控制的控制系统的示意图;
图2示出具有平移模块及具执行模块的处理模块的机器控制的示意图;
图3示出所述机器控制的平移模块的状态转换图;
图4示出所述机器控制的执行模块的示意图。
具体实施方式
图1示出了具有机器控制200的控制系统1,机器控制200为服务器模块100的部分。机器控制200通过控制命令通道52而连接到NC核心20的NC信道模块22。NC信道模块22通过设定点数值通道60而连接到由控制系统1所控制的机器2。
控制系统1可被配置以执行机器2的运动控制。为此目的,控制系统1是配置以产生设定点数值、以及通过设定点数值通道60将它们传送到机器2。设定点数值可包括所述机器2的移动机器部件的位置、速度或加速度。作为例示,设定点数值可被机器2的位置控制器使用作为参考变量,进而被控制系统的初始数值(其决定所述机器部件的动作)可被校正。举例而言,此初始数值可为所述移动机器部件的位置。
作为例示,机器2可以是例如铣床、车床或焊接机器等加工工具,而且所述设定点数值可以规定机器的工具或工件保持器的例如位置、速度、或加速度。机器2可替代地是运输设备,其中设定点数值是规定运输设备的运输托架的移动。
在控制系统1的其他实施例的情况中,处理设定点数值的位置控制器也被配置作为控制系统1的模块。在这种情况中,设定点数值信道60是被配置作为NC核心20与控制系统1的另一个模块之间的数据连接。因此,只有机器2的致动设备的控制器输出变量才可以传送到机器2。作为例示,控制器输出变量可为驱动机器并且形成致动设备的部件的电动机的功率数值。
除了设定点数值以外,补充命令也会通过设定点数值通道60被传送到机器2。举例而言,补充命令可定义机器2所要使用的工具,或是可提示工具更换或控制机器2的补充功能,例如冷却剂流或抽吸设备。
通过设定点数值通道60所传送的设定点数值是由NC信道模块22基于机器控制200所产生且通过控制命令通道52而传送到NC核心20的控制命令所产生。控制命令包括由机器所要执行的机器移动参数化的移动指令。
作为例示,控制命令的移动指令可包括由移动的机器部件所采取的路径所描述的几何元素。在这个情况中,几何元素是由一组几何参数所规定。举例而言,若几何元素是直线,则所述几何参数可为在合适的坐标系统中所述直线的起点和终点。举例而言,若所述几何元素是圆弧段,则所述几何参数可包括圆心、圆的半径、以及圆的起点与终点。移动指令也可包括规定了沿着几何元素的机器移动的执行的移动信息。举例而言,这一条移动信息可包括机器部件的馈送或速度的一条信息。若机器2是加工工具,则移动信息也可包括工具参数,例如要使用的工具类型、或是研磨或钻孔工具的速度。
NC核心20可被配置以连续地、以及在循环时间中以固定的时间间隔,产生及输出机器2的设定点数值。为了产生设定点数值,NC核心20可被配置以内插移动指令的几何元素,使得对于每一个执行循环至少一个设定点数值可用。就内插而言,NC核心20可考虑机器2的特性,例如运动学、加速能力和惯性力矩。在NC核心20使用控制命令通过设定点数值通道60产生用于传送的设定点数值之前,NC核心20可以将通过控制命令通道52所接收的控制命令缓冲存储在FIFO(先进先出)内存中。在NC核心20和机器2之间的设定点数值通道60可通过例如场总线系统的方式来实现。
服务器模块100(其包括用于产生控制命令的机器控制200)具有内存120和服务器控制模块110。机器控制200是通过内存存取信道112连接到内存120。内存存取信道112可被机器控制200使用以存取内存120的共享内存区域122和本地内存区域124,并从这些内存区域122、124中读取数据以及将数据写入这些内存区域122、124。
服务器控制模块110是通过控制信道114而连接到机械控制200。控制信道114可由服务器控制模块110使用以控制所述机器控制200。作为例示,服务器控制模块110可使用控制信道114来促进机器控制200加载、执行或终止控制程序。同样地,所述服务器控制模块110可通过控制信道114请求与机器控制200的状态有关的信息。作为例示,此状态可指示机器控制200是活动的(亦即在执行控制程序)、是不活动的(亦即并未执行控制程序)、或在控制程序执行期间是被阻挡的(例如等待控制系统1的另一模块的外部指令)。
服务器控制模块110可使用服务器数据信道113来同样访问控制系统1的内存120。在这个情况中,对共享内存区域122和对本地内存区域124、126两者的存取都可以进行。
服务器模块100不只是包括机器控制200,也包括另一个机器控制201。所述另一个机器控制201是通过另一个控制命令通道54而连接到NC核心20的另一个NC信道模块24。除非另有明确的说明,否则所述另一个机器控制201、所述另一个控制命令通道54、以及所述另一个NC信道模块24是分别被配置类同于机器控制200、控制命令信道52与NC信道模块22。与NC信道模块22相同,所述另一个NC信道模块24是被配置以从通过所述另一个命令通道54所接收的控制命令产生设定点数值。设定点数值是通过另一个设定点数值通道62而被传送到另一个机器3,以便控制所述另一个机器3的移动。
可替代地,所述另一个NC信道模块24也可连接到机器2,而且除了由NC信道模块22所产生的设定点数值以外,由所述另一个NC信道模块所产生的设定点数值也可被用于另一个机器组件或所述机器2的另一种自由度的移动控制。
与机器控制200相似,所述另一个机器控制201可使用内存存取信道112来存取服务器模块的内存120。在这个情况中,所述另一个机器控制201(与机器控制200相似)可存取所述共享内存区域122。此外,所述另一个机器控制201可类似于所述机器控制200对本地内存区域124的存取而存取另一个本地内存区域126,其中所述另一个本地内存区域126是与机器控制200的本地内存区域124分开地配置。使用所述共享内存区域122,机器控制200和另一个机器控制201可互相交换数据,例如在控制程序执行期间。由服务器控制模块110通过另一个控制通道115而以与机器控制200相同的方式控制所述另一个机器控制201。
控制系统1不只是包括服务器模块100和NC核心20,也包括PLC模块30。PLC模块30使可程序设计逻辑控制器的功能性可用,它可控制包括机器2、3作为组件的设备的运作。PLC模块30可通过数据线连接到机器2、3或设备的其他组件。PLC模块30可读取设备组件的传感器,并且将读取数值作为安排于设备上的致动器用于产生输出数值的基础。在这个情况中,举例而言,所述PLC模块可被用于调节设备的操作变量。
所述PLC模块30是配置以基于包括机器2、3的设备的处理状态由机器控制200、201控制及监测控制程序的执行。为此目的,PLC模块30使用服务器控制信道58与服务器模块100的服务器控制模块110通讯。服务器控制信道58也可被PLC模块30使用,以与服务器控制模块110互相交换数据,使得PLC模块30可使用服务器控制模块110来存取整个内存120。
作为例示,PLC模块30使用服务器控制模块110来提示由机器控制200、201加载、执行及终止控制程序。在机器控制200或另一个机器控制201加载或执行控制程序期间,PLC模块30也可使用服务器控制模块110,以将当前过程参数写入内存120,而且过程参数可被使用或考虑,供个别机器控制200、201执行控制程序用。此外,服务器控制模块110可对PLC模块30传送信息,举例而言,此信息可以是机器控制200、201的运行时间错误讯息或执行状态。
PLC模块30是配置以通过相互交换信道40与NC核心20互相交换数据和信息。所述相互交换通道40可被实现为例如PLC模块30和NC核心20都可以存取的共享内存。利用所述相互交换信道40,PLC模块30和NC核心20可互相交换例如状态信息,或是PLC模块30和NC核心20的执行可被同步。
基于信息交换的目的,NC核心20通过状态消息通道56而连接到服务器控制模块110。举例而言,所述状态消息通道56可由NC核心20使用,以报告所有接收的控制命令都已经被处理。类似地,与控制命令的处理期间所发生的错误有关的讯息可被传送到所述服务器控制模块110。
除了机器控制200和另一个机器控制201之外,所述控制系统1可包括其他的机器控制,其皆如同机器控制200、201而配置,并致动其他的机器或机器轴。
控制系统1包括控制计算器,其被配置以执行控制系统1的模块作为程序组件。具有机器控制200、201的服务器模块100在这个情况中被执行作为控制系统1的用户程序环境10的部分,而NC核心20和PLC模块30则被执行作为控制系统1的实时环境15的部分。实时环境15的模块是通过控制计算器而以固定的时间间隔循环性地分配规定的持续时间的计算时间。在这种情况下,持续时间分别成比例,使得模块能够结束在一个循环内执行的所有计算,并且为连接到控制系统1的机器输出适当的输出数值,包括用于机器2、3的位置控制器的设定点数值。
用户程序环境10包括在控制计算器上执行、而未在实时条件下执行的所有模块,举例而言,这些包括服务器模块100和机器控制200、201。用户程序环境10的模块是基于控制计算器的利用等级而可变地分摊不同持续时间的计算时间。
用户程序环境10的模块和实时环境15的模块之间的数据相互交换是通过数据传送信道50而进行。在这个情况中,数据传送信道特别包括控制命令信道52、另一个控制命令信道54、状态消息信道56、以及服务器控制通道58。举例而言,数据传送信道50可被配置为数据总线,而通过数据传送信道50的数据相互交换可通过相互交换数据封包的方式进行。举例而言,具有实时环境、用户环境和数据传送信道的控制系统的一个实例是TwinCAT控制系统。在TwinCAT控制系统中,用户程序环境10也被称为“使用者空间”。当控制系统1为TwinCAT控制系统,则服务器模块100可被实施作为所述控制计算器的窗口(Windows)操作系统的服务。服务器模块100接着分别于控制系统1的控制计算器的系统起始期间被起始与初始化。
为使得控制命令的数据串流可用于每个NC信道模块22、24,且因而设定点数值的数据串流可用于机器2、3的每一个位置控制器,服务器控制模块110在控制系统1的起始时为所述NC核心20的每一个NC信道模块22、24实例化分别的机器控制200、201。正如同所述NC信道模块22、24,机器控制200、201同时被执行。这允许机器200、201的设定点数值可实质上彼此独立地由控制系统1产生。通过PLC模块30和服务器控制模块110、以及机器控制200、201之间通过所述共享内存区域122的数据相互交换,可进行设定点数值产生的同步化。
随后将说明机器控制200和另一个机器控制201的设计和操作。在这个情况中,特别是参照机器控制200以及与机器控制200互动的模块,例如NC信道模块22。然而,所有的说明都能类似地应用于所述另一个机器控制201以及与所述另一个机器控制201互动的模块,举例而言,所述另一个NC信道模块24。
图2示出机器控制200的示意图。机器控制200包括平移模块210与处理模块230。平移模块210是被配置以处理控制程序的输入程序代码300,并从输入程序代码300产生统一的中间表示320,其具有用于由机器控制200的处理模块230执行的工作指令。处理模块230是配置以处理中间表示320的工作指令,并将所述工作指令作为产生核心特定控制命令338的串流的基础,其通过控制命令通道52而传送到NC核心20的NC信道模块22。NC信道模块22将核心特定控制命令338作为用于产生通过设定点数值通道60传送到机器2的设定点数值的基础。
输入程序代码300的处理以及中间表示320的产生会在加载时间发生,也就是在处理模块230加载输入程序代码300之后、而且在处理中间表示320之前。在这个方面,平移模块210是输入程序代码300的编译程序或平移器。
输入程序代码300是控制程序的来源文本,而且是以汇编语言撰写。汇编语言是一种程序设计语言,其包括第一程序设计语言规则和第二程序设计语言规则的组合。汇编语言所含输入程序代码包括以第一程序设计语言撰写的第一程序代码组成、以及以第二程序设计语言撰写的第二程序代码组成。
第一与第二程序代码组成分别包括输入程序代码的字符序列。字符序列包括字符,例如字母、数字或特殊字符,或是一系列字符。第一程序代码组成的字符序列代表第一程序设计语言的基本符号,而第二程序代码组成的字符序列代表第二程序设计语言的基本符号。这些基本符号本身接着代表语言元素,例如描述符、关键词、特别字符或文字,例如数字或字符串。
在这个情况中,以第一程序设计语言撰写的第一程序代码组成的基本符号是包含在第一程序设计语言的第一基本符号集合中,而以第二程序设计语言撰写的第二程序代码组成的基本符号是包含在第二程序设计语言的第二基本符号集合中。第一基板符号集合包括根据第一程序设计语言为有效的所有基本符号。类似地,第二文字集合包括根据第二程序设计语言为有效的所有基本符号。举例而言,第一程序设计语言的有效基本符号是由第一基本符号规格的正规表达式所定义,而第二程序设计语言的有效基本符号是由第二基本符号规格的正规表达式所定义。举例而言,基本符号规格分别为正规语法。
汇编语言是由组合语法所描述,组合语法包含根据汇编语言用于形成有效的代码片段或字符序列的规则。这些规则也被称为产生规则或生成。由于汇编语言是第一程序设计语言和第二程序设计语言的组合,因此组合语法包括第一程序设计语言的规则和第二程序设计语言的规则。在这种情况中,所述组合语法可个别包括第一语法或第二语法的部分或全部规则。此外,组合语法可包括一或多个嵌入规则。嵌入规则说明了第一程序设计语言的基本符号或非终止符号(亦即例如文字、变量、表达式或指令)以及第二程序设计语言的基本符号或非终止符号可与彼此组合的形态。
特别是,组合语法包括第一语法的第一规则、以及第二语法的第二规则。组合语法可进一步包括第一嵌入规则。所述第一嵌入规则定义了第一程序设计语言对第二程序设计语言的嵌入,也就是描述一种组合字符序列,其中代表第二程序设计语言的符号且被包含在第二程序代码组成中的一部分字符序列由代表第一程序设计语言的符号且被包含在第一程序代码组成中的字符序列所取代。因此,嵌入规则描述了第二程序设计语言的符号的导出,也就是在其中使用了例如第一程序设计语言的符号的指令或表达式。
类似地,组合语法可包括第二嵌入规则,其描述第二程序设计语言对第一程序设计语言的嵌入。第二嵌入规则因此描述一种组合字符序列,其中代表第一程序设计语言的符号且被包含在第一程序代码组成中的部分字符序列会被代表第二程序设计语言的符号且被包含在第二程序代码组成中的字符序列取代。因此,嵌入规则描述了第一程序设计语言的符号的导出,在其中使用了第二程序设计语言的符号。此外,所述组合语法可包括变量嵌入规则,其定义了在第一程序设计语言的字符序列中使用例如第二程序设计语言的变量。
举例而言,第一程序设计语言可为语言G代码,而第二程序设计语言可为语言结构化文本。由G代码和结构化文本组成的汇编语言的组合语法本质上是包括G代码的第一语法的所有规则与生成、以及本质上所有结构化文本的第二语法的所有规则与生成。在本申请案上下文内的语言G代码包括及代表根据ISO 6983的标准兼容G代码以及如同由另外的语言元素予以扩充的控制系统的不同制造商所使用的标准兼容G代码的变化型。类似地,在本申请案上下文内的语言结构化文本包括及代表根据IEC 61131-3的标准兼容结构化文本、以及由其他语言元素加以扩充的标准兼容结构化文本的变化型。
G代码和结构化文本的组合的组合语法的起始符号规定了输入程序代码300是表示非终止符号“instruction”的字符序列。组合语法的规则递归地规定,“instruction”的汇出含有“instructions”与非终止符号“instruction”,或为空白元素。在这个情况中,根据组合语法的第一规则的“instruction”可能是与第二程序设计语言相关联的非终止符号“ST instruction”。非终止符号“ST instruction”描述其为ST指令的一种语言元素,也就是根据语言结构化文本的第二语法规则所形成的指令。
组合语法的第一嵌入规则规定了非终止符号“instruction”也可以被与第一程序设计语言相关联的非终止符号“G code sentence”所取代,其中非终止符号“G codesentense”是根据语言G代码的第一语法规则所形成。在这个方面,第一嵌入规则是将语言G代码嵌入到语言结构化文本中。
特别是,输入程序代码300可包括第一指令与第二指令,其中第一指令与第二指令表示非终止符号“instruction”的各自字符序列。在这个情况中,第一指令由ST指令组成,也就是根据非终止符号“ST instruction”的规则所形成的字符序列;而第二指令是由G代码句所组成,也就是根据非终止符号“G code sentence”的规则所形成的字符序列。
作为例示,根据结构化文本的第二语法规则,ST指令可为变量指定或控制流程指令,例如“while”循环或“if”指令。作为例示,根据第二语法,“while”循环或“if”指令可包括与第二程序设计语言相关联、且表示非终止符号“condition”的字符序列,以及表示非终止符号“instructions”的字符序列。由于非终止符号“instructions”的汇出也可包括与第一程序设计语言相关联的非终止符号“G code senstence”,因此第一嵌入规则允许语言结构化文本的控制流程指令能结合类型G代码句的一或多个指令使用。在这个方面,第一嵌入规则扩充了语言G代码,特别是通过语言结构化文本的控制指令或控制结构。
G代码的第一个语法包括的规则是,非终止符号“G code sentence”的导出是由一系列的非终止符号“G code word”和结语基本符号“G-Newline”组成。基本符号“GNewline”由输入程序代码300的程序代码行的行结尾表示。
表示非终止符号“G code word”的字符序列也可被称为G代码文字。语言元素G代码文字总是包括地址字母与数值。所述数值可为数字,但它也可以是一种能被评估而形成数字的表达式。就带有数字作为数值的G代码文字的描述而言,第一语法包括规则,根据所述规则,非终止符号“G code word”可被汇出以形成包括与第一程序设计语言相关联的基本符号“address letter”和与第一程序设计语言相关联的基本符号“G decimal number”的一对。
基本符号“address letter”是第一程序设计语言G代码的基本符号,且是由带有G代码文字的地址字母的字符序列所表示。这个字母也被称为基本符号的内容。举例而言,若G代码文字是移动指令或加工指令,则这个字母可为例如“G”;或是当G代码文字是辅助指令时,所述字母可为“M”。移动指令可将机器移动参数化,例如通过几何元素的方式,例如直线或圆弧段。作为例示,辅助指令可为用于切换开启或关闭加工工具(例如研磨心轴)的命令。基本符号“G decimal number”以G代码中有效的数字类型表示十进制数,例如“LReal”。
在表达式提供数值的情况中,根据第一语法,G代码文字包括字符序列作为数值,其中所述字符序列是第一程序设计语言中所包含的G代码表达式。因此,第一语法的规则指出,非终止符号“G code word”可以包括(取代基本符号“G decimal number”):包括与第一程序设计语言相关联的基本符号“=”和表示与第一程序设计语言相关联的非终止符号“Gexpression”的字符序列的序列。根据第一语法,“G expression”接着可被汇出,以形成包括一或多个基本符号“G decimal number”以及与第一程序设计语言相关联且为算术运算子(例如加或乘)的一或多个基本符号“arithmetic operator”的序列。G代码表达式的字符序列描述了可被评估以形成十进制数字且描述例如一系列的加法和乘法的表达式。若G代码表达式为G代码标准兼容,则其无法包括括号表达式或函数。若G代码文字包括地址字母以及作为数值的G代码表达式,则其被包含于输入程序代码300的第一程序代码部分中。
组合语法规定了在表达式提供数值的情况中,G代码文字也可包括第二程序设计语言中所包含的ST表达式作为数值。在这个情况中,所述ST表达式是根据结构化文本第二语法规则为有效的表达式,其可被评估以形成数值,且作为例示,其描述加法或乘法。就包含ST表达式的G代码文字的描述而言,组合语法包括第二嵌入规则,根据所述第二嵌入规则,非终止符号“G code word”的汇出也可包括(取代基本符号“decimal number”)与第二程序设计语言相关联的非终止符号“ST expression”。根据结构化文本的第二语法,非终止符号“ST expression”是由表示语言结构化文本的基本符号且被包含于第二程序代码组成中的输入程序代码300的字符序列所表示。
在这种情况下,ST表达式所能够被评估的数字会具有在结构化文本中为有效的所有数字类型,也就是说,例如“Real”、“LReal”、“Int”或“USInt”、以及可以根据语言结构化文本的规则可转换成这样的数字类型的数据类型,亦即例如列表类型或数值范围类型(子范围)。平移模块210被配置为具有转换为在G代码中有效的格式的数字的数字类型,例如“LReal”,如果需要的话,为此目的来应用例如语言结构化文本的相关规则。
根据结构化文本的第二语法,ST表达式可以包括不只数字、命名变量和运算符,还可以包括括号表达式。此外,ST表达式还可以包括字段变量(数组)、复合变量(结构)、或是对具有形式参数的命名函数的调用。平移模块210可以被配置为,可在输入程序代码300的处理期间也处理包括要被存储在内存120中的预先定义变量的类型ST表达式的字符序列。
因此,第二嵌入规则描述了将结构化文本嵌入到G代码中。输入程序代码300可包含,在G代码文字的字符序列中的一个点上,根据第一语法,存在包括表示与第一程序设计语言相关联的基本符号“G decimal number”的字符序列、根据与第二程序设计语言相关联的表示非终止符号“ST expression”的第二语法所形成的表示的字符序列。
由G代码和结构化文本形成的汇编语言的组合语法规定,在形成G代码文字的数值的G代码表达式中,也可以使用ST变量而不是十进制数字。在这种情况下,ST变量是根据第二语言结构化文本的第二语法的规则为有效的一个命名变量,并且表示数字数值。因此,组合语法的变量嵌入规则规定,非终止符号“G expression”的汇出也可以包括在可能存在基本符号“G decimal number”的点处包括非终止符号“ST variable”。可以汇出非终止符号“ST variable”以形成表示根据结构化文本的基本符号规范形成的文字的基本符号“Gdescriptor”,其文字是变量的名称。基本符号“G descriptor”与第一程序设计语言相关联,也就是说由输入程序代码300的第一程序代码组成所包括。
ST变量可以是局部变量、全局变量或函数的函数参数。变量的声明或函数的定义被包含在输入程序代码300的第二程序代码组成中,所述第二程序代码组成被写入语言结构化文本中,即第二程序设计语言中。
在ST表达式和G代码表达式中使用的变量以及在ST表达式中使用的函数可以在输入程序代码300的第二程序代码组成中的任意点被声明或定义。特别地,变量或函数不必在使用它们的ST表达式的连续字符序列中定义。平移模块210被配置为可根据第二程序设计语言结构化文本的第二语义系统在输入程序代码300的处理期间链接变量和函数。
代替指令,输入程序代码300还可以包括声明,这包括数据类型、变量和函数的声明。变量或函数的声明本身可以包括一个指令或多个指令。
为进行输入程序代码300的处理,平移模块210包括解析模块212。解析模块212被配置以读取输入程序代码300,并将其转换为基本符号308的数据串流,亦即要执行输入程序代码300的词汇分析。基本符号308也可以被称为“讯标(token)”,而且解析模块308可以被称为“扫描仪”。基本符号308分别表示输入程序代码300的最小有意义单元,例如数字、关键词、可变描述符、运算符和常数。
解析模块212被配置为将以第一程序设计语言编写的第一程序代码组成的字符序列转换为第一程序设计语言的基本符号,并将以第二程序设计语言编写的第二程序代码组成的字符序列转换为第二程序设计语言的基本符号。
解析模块212逐一字符地读取输入程序代码300,并且对于与基本符号其中之一相对应的每个字符序列产生用于经由基本符号308的数据串流进行转发的各个基本符号的实例。在将输入程序代码300转换成基本符号308的期间,解析模块212分别从有限状态集合精确地采用一个状态。特别地,解析模块212被配置为采用第一状态和第二状态。解析模块212可以被配置为例如有限的确定性机器。
在这种情况下,解析模块212的状态尤其确定解析模块212是否将输入程序代码300的读取字符序列与第一程序设计语言的基本符号或第二程序设计语言的基本符号相关联。特别是,解析模块212在第一状态将输入程序代码300转换为第一程序设计语言的基本符号,并在第二状态将输入程序代码300转换为第二程序设计语言的基本符号。
输入程序代码300可以包括与根据第一基本符号规格的第一程序设计语言的基本符号、以及根据第二基本符号规格的第二程序设计语言的基本符号相对应的模糊字符序列。作为例示,模糊字符序列可以包括:根据第一程序设计语言与引入注释的基本符号相关联、以及根据第二基本符号规格与引入括号表达式的基本符号相关联的字符。举例而言,如果第一程序设计语言是G代码、而且第二程序设计语言是结构化文本,则在这种情况中模糊字符序列包括字符“(”。
作为例示,代表第一程序设计语言的基本符号和第二程序设计语言的基本符号的另一个模糊字符序列可以是文字、例如由一系列数字形成的数字或字符串。如果解析模块212在读入模糊字符序列时是处于第一状态,则其会将模糊字符序列转换成第一程序设计语言的相应基本符号;如果它是处于第二状态,则其将所述模糊字符序列转换为第二程序设计语言的相应基本符号。
第一和第二程序设计语言的基本符号308包括关于它们分别关联的程序设计语言的一条信息。因此,处理包括基本符号308的数据串流的平移模块210的模块可进一步考虑所述信息。
解析模块212被配置为,可在从输入程序代码300读取控制序列时执行状态之间的状态转换,也就是从一种状态改变到另一种状态。控制序列是字符序列,其可以包括一个字符或多个字符。如果控制序列提示从输入程序代码300转换成第一程序设计语言的基本符号308的一个状态转换到另一状态的状态转换,则相关控制序列可以由根据第一基本符号规格不具有相关联的第一程序设计语言基本符号的字符序列组成。类似地,提示从一个状态(其中输入程序代码300被转换为第二程序设计语言的基本符号308)转换到另一状态的状态转换的控制序列可以由根据第二基本符号规格不具有相关联的第二种程序设计语言基本符号的字符序列组成。
作为例示,其中一个控制序列可以分别由具有不在第一程序设计语言中也不在第二程序设计语言中的相关联于基本符号的单一个特殊字符组成。这不排除包含多个字符的字符序列,所述多个字符包括来自具有相关联于基本符号的使用作为控制序列的特殊字符。作为例示,使用作为控制序列的特殊字符可以是包括多个字符(例如字符串的部分)的文字的部分,在这种情况下,当所述文字被读取时,不启动状态转换。
控制序列还可以由在其启动状态转换的程序设计语言中具有相关联的基本符号的字符序列组成。在这种情况下,解析模块212产生对应的基本符号,并且在读入控制序列时执行状态转换。
作为例示,解析模块212可以被配置为在控制序列被读入之后保持其已经改变的状态,直到包含控制序列的行的结束为止。其也可以被配置为可保持所述状态,直到另一个控制序列被读入为止。所述另一个控制序列可以是与先前读入的控制序列相同的控制序列,或者与先前读入的控制序列不同的控制序列。
图3示出了描述解析模块212的可能状态以及在这些状态之间转换的状态转换图400。解析模块212可以采用第一状态404、第二状态406、第三状态408、第四状态410和第五状态412。在第一状态404和第四状态410中,解析模块212将输入程序代码300的字符序列转换成第一程序设计语言的基本符号308;而在第二状态406、第三状态408和第五状态412中,它将它们转换为第二程序设计语言的基本符号308。
在开始读取输入程序代码300时,解析模块212是处于第一状态404,其为初始状402。在第一状态404中,解析模块将输入程序代码300转换为第一程序设计语言的基本符号308。因此,输入程序代码300必须以第一程序代码组成的第一字符序列开头,以第一程序设计语言撰写所述第一字符序列。第一字符序列也可以是空白的。在第一字符序列之后,输入程序代码300可以包括第一控制序列420,后面是第二程序代码组成的第二字符序列,所述第二字符序列以第二程序设计语言组成。
在读取第一控制序列420之后,解析模块212从第一状态404改变到第二状态406。输入程序代码300的第二程序代码组成的第二字符序列(其中所述第二字符序列是跟随在第一控制序列420后)结果被转换成第二程序设计语言的基本符号308。解析模块212保持在第二状态406,直到它读入第二字符序列后的第二控制序列422为止。在读入第二控制序列422之后,解析模块212从第二状态406改变回到第一状态404。
代替第一控制序列420,输入程序代码300还可以包括第一字符序列和第二字符序列之间的第三控制序列424。解析模块212被配置为当其处于第一状态404时,在读取第三控制序列424时转换到第三状态408。解析模块212改变回到第一状态404是在第四控制序列426被读入之后发生,其中所述第四控制序列由包括第三控制序列424的输入程序代码300的行的行末端所形成。
输入程序代码300也可以包括同样在第一控制序列420和第二控制序列422之间的第三控制序列424。如果解析模块212在读入第一控制序列420之后是处于第二状态406,而且如果它是在第二状态406读入第三控制序列424,则解析模块212会改变为第四状态410,也就是将读入的字符序列转换为第一程序设计语言的基本符号308,用于输入程序代码300的当前读入行的其余部分。在第四控制序列426(由包括第三控制序列424的行的行末端所形成)被读入之后,会再次返回到第三状态406。
在第一控制序列420之后的第三控制序列424和第四控制序列426之间,输入程序代码300也可以包括第一控制序列420和第二控制序列422。当解析模块处于第四状态410时,解析模块212是在读入第一控制序列420时执行到第五状态412的状态转换,并将读入的输入程序代码300转换为第二程序设计语言的基本符号308,直到它依次读入第二控制序列422并改变回到第四状态410为止。
如果输入程序代码300具有的行末端是在第一控制序列420和第三控制序列424之后的第一控制序列420和后续的第二控制序列422之间,以及如果解析模块212是在第五状态412中在读取第二控制序列422之前读取所述行末端,则解析模块212会终止输入程序代码300的读入并输出错误讯息。由解析模块212或机器控制200的其他模块输出的错误讯息可被传送到例如服务器控制模块110,并从后者传送到PLC模块30。
解析模块212还可以被配置为在读入不同于第三控制序列424的控制序列之后执行从第二状态406到第三状态410的转换。类似地,可以将其配置为可执行第四状态410到第五状态412的转换,并在读入分别与第一控制序列420和第二控制序列422不同的控制序列之后返回到第四状态410。
解析模块212还可以被配置为不仅可采用所描述的状态404、406、408、410、412,而且还可采用另一个状态。作为例示,解析模块212可以被配置为在第一控制序列420被再次读取之后从第二状态406改变到另一状态,其中它将读入的输入程序代码300的字符序列转换成第一程序设计语言的基本符号308,并且在第二控制序列422被读入之后从其改变回第二状态406。
如果第一程序设计语言是语言G代码,而第二程序设计语言是语言结构化文本,则第一控制序列420可以由特殊字符“{”组成,第二控制序列422可以由特殊字符“}”组成,第三控制序列424可以由特殊字符“!”组成,而且第四控制序列426可以由例如行末端组成。在这种情况下,第一控制序列420和第二控制序列422、或是第三控制序列424本身都不表示语言G代码或语言结构化文本的基本符号。然而,第一、第二或第三控制序列420、422、424可以分别被包含在第二程序设计语言结构化文本的字符串中。在这种情况下,第一、第二或第三控制序列420、422、424的读入不会由平移模块210启动状态转换。
由行末端提供的第四控制序列426不是代表第二程序设计语言结构化文本中的基本符号,而是在输入程序代码300被读入时被视为空白空间(blank space)。在这方面,在第三状态408中的第四控制序列426的读入启动状态转换而返回第一状态404,但解析模块212并不产生基本符号。
另一方面,在第一程序设计语言G代码中,行末端表示基本符号“G-Newline”。基本符号“G-Newline”指示G代码句的结尾,以及是否需要作为后续的G代码句的开头。因此,如果解析模块212在第四状态410(其中解析模块将读入的字符序列转换为第一程序设计语言G代码的基本符号)中读入由行末端所形成的第四控制序列426,则其会产生基本符号“G-Newline”,并且执行状态转换而返回到第二状态406。相反地,如果解析模块212在第一状态404(其中解析模块同样产生第一程序设计语言G代码的基本符号)则读入行末端,那么它只产生基本符号“G-Newline”,但不执行状态转换。
平移模块210包括剖析器模块216,其被配置为处理包括基本符号308的数据串流,并且从基本符号308产生统一的结构树314。在这种情况下,统一的结构树314是根据描述第一程序设计语言与第二程序设计语言的组合的组合语法规则而产生,它包括由解析模块212所产生的所有基本符号308。统一的结构树314也可以被称为剖析树或衍生树。
表示第二程序设计语言的非终止符号的统一结构树314的节点可以连接到表示第一程序设计语言的基本符号或非终止符号的结构树314的子节点。类似地,表示第一程序设计语言的非终止符号的结构树314的另一节点可以连接到表示第二程序设计语言的基本符号或非终端符号的另一个子节点;这特别是对于由第一嵌入规则、第二嵌入规则或变量嵌入规则所描述的统一的结构树314的部分。
通常,统一的结构树314可以包括第一子树和第二子树。在这种情况下,第一子树具有表示第一程序设计语言的符号(即非终止符号或基本符号)的节点。第一子树的节点连接到具有表示第二程序设计语言的符号的节点的第二子树。换句话说,第一子树与第一程序设计语言相关联并且包括与第二程序设计语言相关联的第二子树。类似地,统一的结构树314还可以包括与第二程序设计语言相关联并且包括与第一程序设计语言相关联的子树的子树。
根据用于组合程序设计语言G代码和结构化文本的第一嵌入规则所生成的统一的结构树314的部分包括:表示非终止符号“instruction”的节点。此节点的子树可以包括表示根据第二语法的规则而形成的非终止符号“ST instruction”的节点、以及表示根据第一语法规则而形成的非终止符号“G code sentence”的节点。
根据用于组合程序设计语言G代码和结构化文本的第二嵌入规则所生成的统一的结构树314的部分包括:表示非终止符号“G code sentence”的节点。此节点首先连接到表示基本符号“address letter”的节点,其次连接到表示根据第二语法规则形成的非终止符号“ST expression”的节点。在这种情况下,用于“G code sentence”的节点可以直接或经由一个或多个另外的节点连接到“ST expression”的节点。
根据用于组合程序设计语言G代码和结构化文本的变量嵌入规则所生成的统一的结构树314的部分包括:表示与第一程序设计语言相关联的非终止符号“G code word”的节点。如果变量嵌入规则规定非终止符号“G code word”包括与第一程序设计语言相关联的非终止符号“ST variable”,则所述节点首先连接到表示与第一程序设计语言相关联的基本符号“address letter”的节点,其次是连接到表示与第一程序设计语言相关联的非终止符号“ST variable”的节点。非终止符号“ST variable”连接到表示基本符号“Gdescriptior”的节点,它是ST变量的名称。
如果变量嵌入规则规定与第一程序设计语言相关联的非终止符号“Gexpression”的导出可以包括与第一程序设计语言相关联的非终止符号“ST variable”,则表示非终止符号“G expression”的节点可以首先连接到表示与第一程序设计语言相关联的基本符号“decimal number”、或根据第一语法的规则所形成的另一个非终止符号“Gexpression”,其次连接到表示与第一程序设计语言相关联的非终止符号“ST variable”的节点。非终止符号“ST variable”是连接到表示基本符号“G descriptior”的节点,它是ST变量的名称。
剖析器模块214被配置以使用组合语法执行输入程序代码300的语义分析,其结合统一的结构树314的产生。特别地,然后检查以第一程序设计语言编写的第一程序代码组成与第一语法的相符性,并且检查以第二程序设计语言编写的第二程序代码组成与第二语法的相符性。此外,剖析器模块是被配置以检查输入程序代码300与描述第一程序设计语言与第二程序设计语言的组合的规则的相符性,亦即特别是与第一嵌入规则、与第二嵌入规则以及与变量嵌入规则相关联的规则。平移模块210的剖析器模块214可以例如在控制程序的实际加载时间执行,使得在输入程序代码300的完整语义检查可由处理模块320在中间表示320的实际执行之前结束。
平移模块210包括分析模块216。分析模块216被配置为通过语义分析由剖析器模块214产生的统一的结构树314来对输入程序代码300执行语义检查或语义分析。分析模块216另外还被配置以将统一的结构树314以及在语义分析期间所获得的语义信息316转发到内存分配模块218。在这个方面,分析模块216输出装饰性或归因性的结构树。
分析模块216被配置为使用包括第一程序设计语言的第一语义系统的规定和第二程序设计语言的第二语义系统的规定的组合的语义系统来执行语义分析。语义分析涉及建立例如统一的结构树314所包括的所有数据对象的数据类型、并且通过数据类型来扩充相关节点的分析模块216。举例而言,在数字的情况中,这会涉及数据类型“Int”和“LReal”。在语义分析之后,统一的结构树314因此也包括与所包含的数据对象的数据类型有关的信息。
此外,分析模块216特别地检查由统一的结构树314所表示的输入程序代码300的类型纯度。这涉及它使用第一语义系统的规定来检查基于输入程序代码300的第一程序代码组成的类型纯度的统一结构树314的部分。类似地,它使用第二语义系统的规定来检查基于输入程序代码300的第二程序代码组成的类型纯度的统一结构树的部分。就基于第一嵌入规则、第二嵌入规则或变量嵌入规则的结构树的部分而言,组合的语义系统可以包括描述第一程序设计语言和第二程序设计语言的数据类型的可能组合的其他规定。
除了类型检查之外,分析模块216执行用于使用的变量和命名的函数、以及其参数的名称连结。如果仅第二程序设计语言包括命名变量或函数,则所述名称连结可以例如根据第二程序设计语言的第二语义系统来实现。组合的语义系统尤其规定,输入程序代码300中使用的所有变量和函数都由统一的名称空间所包括。因此,输入程序代码300可以包括:例如在代码区段中,已经在与所述代码区段分开的另一代码区段中声明的命名变数。举例而言,这两个代码区段可以以第二程序设计语言组成,并且以由第一程序设计语言组成并由控制序列标记的代码区段彼此分离。
平移模块210是配置以在控制程序的加载时间执行输入程序代码300的语义分析,亦即,进行输入程序代码300的静态语义分析。
平移模块210的内存分配模块218是被配置以将控制系统1的内存120的内存地址分配给在输入程序代码300中使用的函数的那些变量和参数。内存地址可以是内存120的绝对内存地址,例如当内存地址与全局变量相关联时。内存地址还可以是基于上级数据结构的另一内存地址所定义的相对内存地址。例如,相对内存地址可以用于局部变量,并且可以基于对于包括所述变量的函数的函数调用的内存位置来定义相对内存地址。相对内存地址也可以用于函数的参数,相对内存地址同样是基于对函数的函数调用的内存位置来定义的。
在这种情况中,内存120的内存地址被分配给包括在输入程序代码300中、或在统一结构树314中的所有变量。由平移模块210产生的中间表示320即因此而不具有变量描述符,而是目前只有内存地址。因此,内存地址是在执行控制程序的中间表示320之前被分配,例如可以在用于控制程序的加载时间分配所述内存地址。
在分配内存地址之后,内存分配模块218将具有关于内存地址和语义信息316的信息的统一结构树314发送到中间表示产生模块219。中间表示产生模块219被配置以从统一的结构树和结构树314、语义信息316、和关于内存地址的信息产生中间表示320。在这种情况下,中间表示320的产生可以由机器控制200的处理模块230在中间表示320的执行之前结束。
中间表示320包括由输入程序代码300所描述、作为由处理模块230依序执行的一系列工作指令的控制程序。在这种情况中,工作指令分别包括关于它们操作的数据类型的信息。作为例示,操纵数字的工作指令可以包含关于这是否是“Int”、“LReal”或“Real”类型的数字的信息。因此,就例如加法操作而言,对于所涉及的数字的每个可能的数据类型会有各自的专用类型的工作指令。
就中间表示320的执行而言、以及就核心特定控制命令338的数据串流的生成而言,处理模块230包括执行模块232、NC处理器234、排序模块236、以及NC核心适配器模块238。
执行模块232被配置以将中间表示320的工作指令作为用于产生NC指令330的数据串流的基础,并将其传送到NC处理器234。NC处理器234也被配置为采用NC指令330作为用于产生控制命令334的数据串流的基础。
控制命令334特别是可以包含描述由机器2执行的机器移动的移动指令。机器移动可以是例如机器2的机械加工工具沿其移动的工具路径。如结合图1所述,控制命令334的移动指令是由几何元素描述,而几何元素是由几何参数集合所定义。
由执行模块232产生的NC指令330可完全以用于编写输入程序代码300的两种程序设计语言的其中一种(即第一程序设计语言)来表达。如果第二程序设计语言是具有高级语言元素(例如变量、具有形式参数或控制流程指令的命名函数)的程序设计语言,则执行模块232会在中间表示320的处理的期间完全基于这些高级语言元素来执行工作指令。基于控制流程指令的工作指令的执行会使执行模块232不执行跟随相关工作指令的下一个工作指令,而是在中间表示320内跳到另一个工作指令,并继续来自这另一个工作指令的工作指令的执行。
为了执行从具有变量的代码区段已经创建的工作指令,执行模块232存取与相关变量相关联的内存120的内存地址。对于内存120的存取可以在共享内存区域122和本地内存区域124上实现。在内存存取期间,执行模块232可以将数据写入内存120中、或从内存120中读取数据。
由执行模块232产生的NC指令330是作为数据结构而被传送到NC处理器234,例如NC指令330可以作为二进制代码数据结构而被传送。由中间表示320的工作指令创建的NC指令330是由NC处理器234转换成控制命令334,而不对内存120进行内存存取操作或变量的评估。在这种情况下,NC指令330纯粹地由NC处理器234依连续处理,也就是并没有特别评估控制流程指令或执行程序跳转。
NC处理器332还可以被配置为采用不同的状态来处理NC指令330和产生控制命令334,也就是在由输入程序代码300表示的控制程序的运行时间的期间内。NC处理器332的状态可以表示例如NC处理器234评估NC指令330的移动指令的坐标系统、应用于NC指令330的移动指令的坐标变换,NC指令330所要被执行的移动指令的馈送速度、工具集合的定义、当前使用的工具的类型和代码或当前工具位置。NC处理器234的状态还可以包括要应用于移动指令的零点位移。
执行模块232被配置以在控制程序的运行时间的期间改变NC处理器332的状态。状态的改变可以由传送到NC处理器的单个或一系列NC指令330启动。如果在第一程序设计语言中不能表示状态改变,则由执行模块232凭借于向NC处理器234传送的附加指令也可以启动状态改变,其中附加指令并不符合第一程序设计语言。可以通过基于输入程序代码300所包含的第一程序代码组成中的第一程序设计语言的字符序列的工作指令、以及基于输入程序代码300所包含的第二程序代码组成中的第二程序设计语言的的字符序列的工作指令,来启动状态的改变。
除了执行模块232之外,服务器控制110还可以被配置以改变NC处理器234的状态。使用服务器控制110和服务器控制信道58,因此PLC模块30亦可改变NC处理器234的状态。
执行模块232被配置为从NC处理器234接收状态信息332。状态信息332包括关于NC处理器234的瞬时状态的信息,并且作为例示,还可以包含关于还没有被转换成控制命令334的NC指令330的数量的信息。因此,执行模块232是被配置以处理中间表示320的工作指令,其在相关工作指令运行时间考虑NC处理器234分别采用的状态。
如果第一程序设计语言是语言G代码,则执行模块232可以被配置以将例如NC指令330作为数据结构传送到NC处理器234,这些能够由G代码表示。这会涉及符合根据ISO6983标准的G代码、或者已经被其他语言元素扩充的标准兼容的G代码。在这种情况下,NC处理器234可以被配置为,例如被配置为处理G代码的G代码平移器、或G代码解释器,并且除了所描述的差异之外,其是以传统G代码控制的方式表现。
G代码由一系列分别具有地址字母和数值的G代码文字组成。因此,NC指令330可以分别被编码为数据数组的元素,数据数组的每一个元素都分别包括由G代码文字的地址字母和G代码的数值的数字数值组成的数据对。例如,数据数组可以是以二进制编码的。NC指令330的数据数组可以例如分别是G代码句,亦即包括一个G代码文字或包含多个G代码文字的系列。
作为示例,字符序列“G01X100Y40F42”描述了包括一系列四个字符序列的G代码句,分别表示带有地址字母“G”、“X”、“Y”和“F”的非终止符号以及数值“01”、“100”、“40”和“42”。G代码句描述了具有定义的馈送42到具有坐标X=100、Y=40的位置的线性移动,其可通过具有数据对“G,01”、“X,100”、“Y,40”和“F,42”的NC指令330来描述。
为了表示一系列G码文字的NC指令330其中之一的产生,中间表示320会包括工作指令,根据所述工作指令,执行模块232首先计算所述系列中的所有数值。此外,中间表示320包括结束工作指令,根据所述结束工作指令,执行模块232依序地将对于分别由地址字母和为了相应地址字母计算的数字数值的所有数据对写入表示NC指令330的数据结构,并且将数据结构传送到NC处理器234。在这种情况下,举例而言,对于输入程序代码300所包括的每个G代码句而言,分别可能产生NC指令330中其一,以及将其传送到NC处理器。
NC处理器234解释由NC指令330表示的G代码,并将NC指令330转换成控制命令334。在这种情况下,NC处理器234的状态特别是定义了NC指令330被转换成移动指令或制造指令的方式。举例而言,在NC处理器234的第一处理器状态下,NC指令330例如是被转换为描绘将被线性内插的直线的控制命令334。在NC处理器234的第二处理器状态下,NC指令330是被转换成描绘顺时针内插的圆弧的弧的控制命令334。在NC处理器234的第三处理器状态中,NC指令330被转换成描绘了将被逆时针内插的圆弧的弧的控制命令334。
NC处理器234由包括数据对“G,1”的NC指令330置于第一处理器状态。通过包含数据对“G,2”的NC指令330将NC处理器234置于第二处理器状态,并且通过具有数据对“G,3”的NC指令330将NC处理器234置于第三处理器状态。在接收到分别的NC指令之后,NC处理器234将描绘“X”或“Y”的坐标的所有随后的NC指令解释为与分别几何元素相关联的几何参数的坐标数值。
此外,举例而言,NC处理器234的状态可以包括被应用于NC指令330的坐标变换。可以在不考虑以程序设计语言G代码提供的NC处理器234的状态的情况下评估由NC处理器234输出的控制命令334。这样,对于每个移动指令,控制命令334分别包括例如关于表示移动的几何元素和在规定的坐标系中描绘的几何元素的几何参数的坐标值的两个信息。
在处理模块230的替代改进的情况下,执行模块232还可以被配置以产生NC指令330,使得它们可以以第一程序设计语言以外的程序设计语言来表达。作为示例,NC指令330可以以第二程序设计语言、或以与第一和第二程序设计语言不同的第三程序设计语言来完整表示。第三程序设计语言可以是用于程序设计机器人的程序设计语言,例如像是VAL、Rapid或KRL。在这些情况下,NC处理器234可以以对于相关程序设计语言所组成的指令的处理而进行优化的方式加以配置。
执行模块232还进一步被配置以产生另外的控制命令335的数据串流。除了描述差异之外,另一个控制命令335是以控制命令334的方式配置的。另一个控制命令335可以包括例如不能以第一程序设计语言表达的移动指令。作为示例,这种移动指令可以基于第一程序设计语言不包括的非标准兼容的几何元素。如果第一程序设计语言是语言G代码,那么非标准兼容的几何元素可以例如是三维螺旋线,亦即关于旋转轴线的旋转与沿着旋转轴线的线性移动的迭加。在这种情况下,螺旋线还可以包括多次旋转。在这种情况下,旋转轴线不必垂直于用于控制机器2的坐标系统的主平面。
另一个控制命令335的生成可以基于由以第二程序设计语言组成的输入程序代码300的第二程序代码组成已经产生的工作指令来实现,举例而言,这会涉及例如用于产生被调用的另一个控制命令335所提供的功能。
控制命令334的数据串流和另一个控制命令335的数据串流从NC处理器234和执行模块232被传送到排序模块236。排序模块236被配置以将控制命令334和另一个控制命令335作为按照致动顺序而组织的控制命令336的数据串流传送到NC核心适配器模块238。在这种情况下,致动顺序是由NC信道模块22依顺序地处理的控制命令334和另一个控制命令335、且被转换成用于机器2的设定点数值和补充命令的顺序。
作为示例,致动顺序可以是由执行模块232处理形成控制命令334和另一个控制命令335的基础的中间表示320的工作指令的顺序。由于NC处理器234和执行模块232中的不同的处理时间之故,NC处理器234和执行模块232同时产生控制命令334和另一个控制命令335会导致意图由NC信道模块22稍后执行的控制命令,并且由NC信道模块22意图被先执行的控制命令之前产生并传送到排序模块236。在这种情况下,排序模块236滞留稍后意图将执行的控制命令,直到接收到意图提前执行的控制命令为止,并且首先对NC核心适配器模块238发送意图先执行的控制命令,然后仅发送稍后要被执行作为已组织的控制命令336的控制命令。
NC核心适配器模块238被配置以将已组织的控制命令336转换为核心特定控制命令338。除非描述了不同之处,核心特定控制命令338是以控制命令334或另一个控制命令335的方式配置。核心特定控制命令338由NC核心适配器模块238以数据接口相匹配的数据格式产生,NC核心20通过所述数据接口接收核心特定控制命令338。作为示例,核心特定控制命令338可以被配置为通过数据电报传送,特别是通过TwinCat控制系统的ADS数据电报传送。
NC核心适配器模块238还被配置以将已组织的控制命令336的数据串流的多个控制命令组合于核心特定控制命令338其中一个。类似地,NC核心适配器模块238被配置以从数据串流去除已组织的控制命令336的数据串流的冗余或多余的控制命令,使得它们不被转换至核心特定控制命令338。已组织的控制命令336的数据串流的控制命令也可以被转换至核心特定控制命令338的多个实例。
由执行模块232产生的另一个控制命令335还可以包括NC同步控制命令,通过所述命令,处理模块230和NC核心20或NC信道模块22可彼此同步。NC同步控制命令用于将请求传送到NC核心20以报告截至此时已传送的所有核心特定控制命令338的处理结果。同时,由执行模块232处理的中间表示320被阻挡。在NC核心20已经处理所有可用的核心特定控制命令338之后,NC核心20经由NC核心状态消息信道56向服务器控制模块110发送适当的信息或信号。服务器控制模块110随后提示解除在执行模块232上的封锁。
类似于处理模块230和NC核心20之间的同步,另一个控制命令335也可用于实现处理模块230和PLC模块30之间的同步。在这种情况下,执行模块232通过控制命令信道52、NC核心20和相互交换信道40而自PLC模块30请求讯息或信号,而且由执行模块232阻挡中间表示320的处理。所述讯息可以基于例如中间表示的工作指令而被请求。PLC模块30通过服务器控制信道58向服务器控制模块110发送所请求的信息。服务器控制模块110在接收到信息后提示在执行模块232上解除封锁。在这种情况下,由执行模块232所请求的信息的发送是依赖于例如由PLC模块30所检测到的事件。
或者,在执行模块232上的封锁也可以由PLC模块30经由服务器控制模块110启动,并且在接收到由PLC模块30发送的信息之后由服务器控制模块110重新解除。为了阻挡执行模块232,可以使用例如执行模块232和服务器控制模块110所存取的信号量。在这种情况下,来自PLC模块30和NC核心20的信息或信号会改变信号量的计数器,以便阻止执行或重新解除控制被阻止的执行。
处理模块230的执行模块232可以被配置为例如已知的堆栈机器。在这种情况下,中间表示320的工作指令表示打算依序地处理操纵运行时间堆栈的数据元素的指令。在这种情况下,可以在内存120中,特别是在本地内存区域124中实现运行时间堆栈。运行时间堆栈是“后进先出(LIFO)”内存,其中存储在运行时间堆栈中的数据元素以相反的顺序再次被去除,而且执行模块232可以分别存取最上方的数据元素,也就是仍然在内存中的最近的数据元素。
图4示出了配置作为堆栈机器的执行模块232的示意图,其包括程序内存500和运行时间堆栈510。
程序内存500包括中间表示320的一系列工作指令501,当输入程序代码300被加载时,所述系列由平移模块210产生。执行模块232的程序计数器520分别指向接下来处理的工作指令501。在中间表示320的执行开始时,程序计数器520指向第一工作指令502。在处理了工作指令501其中一个之后,程序计数器520被设定到将被处理的下一个工作指令。通常,这是在系列中下一个来到的工作指令。在程序跳转的情况下,例如由于控制流程指令,接下来处理的工作指令也可能是与下一个来到的工作指令不同的工作指令。在这种情况下,不同的工作指令可以在启动程序跳转的工作指令之前或之后被包含在工作指令501的系列中。
运行时间堆栈510包括一系列数据元素511。工作指令501分别规定了存储在运行时间堆栈510中的数据元素511打算被操纵的方式。在这方面,工作指令501是分别在运行时间堆栈510上操作的堆栈指令。在中间程序代码320的执行开始时,运行时间堆栈510是空的,而且并无数据元素511在运行时间堆栈中。工作指令501的执行可以导致执行模块232存取运行时间堆栈510、以及被存储在运行时间堆栈510中、或是从运行时间堆栈510中被移除的数据元素511的其中一个。
在这种情况下,被存取的始终是最后添加且尚未被删除的最上面的数据元素512。为此,执行模块232的堆栈指针525分别指向最上面的数据元素512。在对运行间堆栈510的读取存取的情况下,最上面的数据元素512会被读取,而堆栈指针525会被设定到其下方的数据元素,也就是存在于运行时间堆栈510中的下一个最近的数据元素。如果意图是为了将另外的数据元素存储在运行时间堆栈510中,则相关的数据元素会被写入运行时间堆栈510,而且堆栈指针525会被设定为新写入的数据元素。
在工作指令501的执行期间,执行模块232连续地执行多个方法步骤。首先,可以实现对运行时间堆栈510的数据存取,并且可以从运行时间堆栈510中读取一个或多个数据元素511。随后,可以执行涉及郑被使用的已移除的数据元素和一个或多个新的数据元素作为结果而产生。此外,与运行时间堆栈510的操纵无关的副作用可以被启动。副作用包括例如NC指令330或另一个控制命令335之一的生成。此后,计算的一个或多个结果可以被存储在运行时间堆栈510中。最后,可以重置程序计数器520,而且如果需要,可以阻止执行模块232执行进一步的工作指令501。在工作指令501的执行期间,也可能将从运行时间堆栈510中移除的数据元素写入内存120、或将包含在内存120中的数据元素存储在运行时间堆栈510中。
处理模块230可以是面向对象的设计和操作。在这种情况下,中间表示320包括对于指令对象的指针的列表的工作指令501。指针存储在程序内存500中作为工作指令。指令对象的分类分别定义用于中间表示320的工作指令的执行的实现方法步骤的方法。在这种情况下,所述方法可以作为执行控制系统1的计算器系统的机器代码使用。指令对象可以进一步具有包括例如要加载到运行时间堆栈510的常数的属性,并且是在产生中间表示320时被设定。这些属性还可以包括要产生的NC指令330的G代码文字的地址字母。这些属性例如可以在当它们被执行时被所述方法读取。
对于处理模块230的面向对象执行而言,NC指令330、控制命令334、另一个控制命令335和已组织的控制命令336也被实现作为数据对象。这些数据对象因指针被传送到分别的数据对象而分别在执行模块232、NC处理器234、排序模块236和NC核心适配器模块238之间传递。NC核心适配器模块238分别破坏表示已组织的控制命令336的数据对象,并且产生用于经由数据传送信道50而传送的核心特定控制命令338。
下文描述了由执行模块234基于输入程序代码300的两个程序代码部分而将输入程序代码300转换成中间表示320的工作指令501、以及执行中间表示320。在这种情况下,第一程序设计语言是G代码,且第二程序设计语言是结构化文本。输入程序代码300具有分别由程序设计语言G代码组成的G字符序列和分别由程序设计语言结构化文本构成的ST字符序列。G字符序列被包括在输入程序代码300的第一程序代码组成中,而ST字符序列由输入程序代码300的第二程序代码组成所包括。用于区分程序代码组成的第一控制序列420是特殊字符“{”,第二控制序列422是特殊字符“}”,第三控制序列424是特殊字符“!”,以及第四控制序列426是行末端。
输入程序代码300的第一程序代码部分为:
“!foo:=555;
G1X=111+foo Y{bar(222)}M333M444”。
第一程序代码部分包括以由特殊字符“!”形成的第三控制序列424开头的第一代码行。第三控制序列424之后是第一个ST字符序列“foo:=555”,后面是第四个控制序列426,即行末端。第一程序代码部分还包括跟随第一代码行的第二代码行,其具有第一G字符序列“G1X=111+foo Y”,其后是第一控制序列424,即特殊字符“{”,之后是第二个ST字符序列“bar(222)”,之后是第二个控制序列422,即特殊字符“}”,其后是第二个G字符序列“M333M444”。
第一个ST字符序列是将数字数值555指定给ST变数“foo”。ST变量“foo”在输入程序代码300的不同点被声明为“Int”类型的变量,也就是被指定的数值为“Int”数据类型。第一G字符序列、第二ST字符序列和第二G字符序列一起表示非终止符号“G code sentence”的汇出,所述导出包括一系列五个非终止符号“G code word”。在第二位的G代码文字“X=100+foo”由地址字母“X”表示,以及由G表达式“100+foo”所提供的数值。字符序列“foo”表示ST变量,并根据变量嵌入规则被嵌入到G表达式“100+foo”中。因此,字符序列“100+foo”表示第一程序设计语言的非终止符号“G expression”的导出,其包括由数字100表示的基本符号“G decimal number”,由加号表示的基本符号“plus operator”和由“foo”表示的非终止符号“ST变量”。
从第一G字符序列、第二ST字符序列和第二G字符序列形成的G代码句中第三位的G代码文字的G代码文字“Y{bar(222)}”是通过地址字母“Y”和由为ST表达式的第二ST字符序列“bar(222)”提供的数值来表示。第二ST字符序列“bar(222)”是对具有名称“bar”并具有由常数数值222提供的参数的命名函数的调用。当被调用时,函数“bar”返回数字“LReal”数据类型的数值。根据第二嵌入规则将第二ST字符序列“bar(222)”嵌入到G代码句中位于第三位的G代码文字中。因此,字符序列“Y{bar(222)}”是表示非终止符号“G code word”的汇出,其包含由“Y”表示的基本符号“address letter”和由“bar(222)”所表示的非终止符号“ST expression”。
在第一程序代码部分的读入期间,解析模块212首先处于第一状态404,亦即,根据第一基本符号规格将读入的字符序列转换成第一程序设计语言G代码的基本符号。当由字符“!”形成的第三控制序列424被读入时,解析模块212改变为第三状态408,并根据第二基本符号规格将第一ST字符序列“foo:=555”转换为第二程序设计语言结构化文本的基本符号。因此,第一ST字符序列被解析成具有内容“foo”的基本符号“ST descriptor”、转换成具有内容“:=“的基本符号“assignment operator”,并且被转换成具有内容555的基本符号“ST integer”。
在由行末端描绘的第四控制序列426被读入之后,解析模块改变回到第一状态404。第一G字符序列因此被转换成第一程序设计语言G代码的基本符号。在这种情况下,首先是具有内容“G”的基本符号“address letter”,然后是具有内容1的基本符号“G decimalnumber”,然后是具有内容“X”的基本符号“address letter”,然后是具有内容“=”的基本符号“G assignment”,然后是具有内容“111”的基本符号“G decimal number”,然后是具有内容“+”的基本符号“G plus operator”,然后是具有内容“foo”的基本符号“Gdescriptor”,最后是具有内容“Y”的基本符号“address letter”被生成。
为了随后读取第一控制序列420,解析模块212从第一状态404改变到第二状态406,并将随后的第二ST字符序列转换成第二程序设计语言结构化文本的基本符号。在这种情况下,具有内容“bar”的基本符号“ST descriptor”、后面是具有内容“(”的基本符号“STopen parentheses”、后面是具有内容222的基本符号“ST integer”、后面是具有内容“)”的基本符号“ST close parentheses”会被产生。
为了随后读入第二控制序列422,解析模块212从第二状态406改变回第一状态404,并将随后的第二G字符序列转换成第一程序设计语言G代码的基本符号。在这种情况下,具有内容为“M”的基本符号“address letter”、后面是具有内容“333”的基本符号“Gdecimal number”、后面是具有内容“M”的基本符号“address letter”、然后具有内容“444”的基本符号“G decimal number”会生成。第一控制序列420、第二控制序列422、第三控制序列424和第四控制序列426分别不转换为基本符号。
基本符号“address letter”、“G descriptor”、“G decimal number”及“G plusoperator”分别是第一程序设计语言G代码的基本符号。基本符号“ST descriptor”、“STinteger”、“assignment operator”、“ST open parenthese”及“ST close parenthese”则分别是第二程序设计语言结构化文本的基本符号。
从第一程序代码部分生成的第一中间表示部分具有第一系列工作指令。第一系列工作指令包括作为第一工作指令的从第一程序代码部分的第一ST字符序列生成的指令,包括具有数字数值“555”作为属性的第一常数,并存储所述第一常数作为进一步的指令,第一系列指令包括从运行时间堆栈510中去除所述第一常数的数字数值,并将其以内存地址“address of foo”存储在内存120中的指令,其中“address of Foo”是由内存分配模块218规定,且是表示所述指令的指令对象的属性。
作为第一工作指令之后的第二工作指令,第一系列包括基于第一程序代码组成的第一G字符序列生成的指令,包括具有数字数值1作为属性的第二常数,并且将第二常数存储在运行时间堆栈510中。作为第二工作指令之后的第三工作指令,第一系列包括包含具有数字数值111作为属性的第三常数的指令,并将第三常数存储在运行时间堆栈510中。
作为第三工作指令之后的第四工作指令,第一系列包括加载被存储在内存120的地址“address of foo”中的数值555,并将其存储在运行时间堆栈510中。作为在第四工作指令之后的第五工作指令,第一系列包括将运行时间堆栈510中的最上层数据元素(即整数555)从数据类型“Int”转换为数据类型“LReal”的指令。作为第五工作指令之后的第六工作指令,第一系列包括在运行时间从堆栈510读取最高数据元素和其下方的下一个最低数据元素、相加两个数据元素并将加法结果写入运行时间堆栈中再次作为最上面的数据元素的指令。
作为第六工作指令之后的第七工作指令,第一系列包括包括具有数值222作为属性的第四常数、并将其存储在运行时间堆栈510中的指令。作为第七工作指令之后的第八工作指令,第一系列包括调用运行时间堆栈510中最高数据元素的内存地址“address ofbar”的函数作为参数、并存储返回值作为在运行时间堆栈510中最上面的数据元素的指令。内存地址“address of bar”是由内存分配模块218在平移期间所规定,而且其为第八指令的属性。作为第八工作指示之后的第九工作指令,第一系列包括包含具有数值333作为属性的第五常数并将其存储在运行时间堆栈510中的指令。作为第九工作指令之后的第十工作指令,第一系列包括包含具有数字数值444作为属性的第六常数并将其存储在运行时间堆栈510中的指令。
第一工作指令、第七工作指令和第八工作指令基于以第二程序设计语言结构化文本组成的输入程序代码300的第二程序代码组成而分别建立。第二至第六工作指令,第九工作指令和第十工作指令则基于由第一程序设计语言G代码组成的第一程序代码组成而分别产生。
作为第十工作指令之后的第十一工作指令,所述系列包括地址字母的系列“G”、“X”、“Y”、“M”和“M”的工作指令作为属性。第十一工作指令加载从运行时间堆栈510最上面的数据元素和下一个最低的四个数据元素,并且分别从地址字母“M”和具有数字数值444的最高数据元素、地址字母“M”和具有数字数值333的下一个最低数据元素、地址字母“Y”和具有函数调用“bar(222)”的回传数值的下一个最低数据元素、地址字母“X”和具有数字数值111的下一个最低数据元素、以及地址字母“G”和具有数字数值1的下一个最低数据元素形成NC指令330的数据对,并且依下列顺序将数据对写入NC指令330的数据结构:“G,1”、“X,111”、“Y,[bar(222)的回传数值]”、“M,333”、“M,444”。最后,第十一工作指令包括将NC指令330的生成数据结构传送到NC处理器234的命令。
输入程序代码300的第二程序代码部分为:
Figure BDA0001497948390000361
第二程序代码部分从由“{”形成的第一控制序列420开始,并且包括随后的第三ST字符序列“FOR index:=0TO 3.1BY 0.1DO”。第三ST字符序列在新代码行中接着以由“!”所形成的第三控制序列426,接着以第三G字符序列“G01X=index Y”。在第三G字符序列之后,第二程序代码部分包括由“{”所形成的第一控制序列420、第四ST字符序列“SIN(index)+offset_y”、由“}”形成的第二控制序列422、第四G字符序列“F42”、以及由行末端所形成的第四控制序列426。随后,第二程序代码部分在新的程序代码行中包括第五ST字符序列“END_FOR”,其在新的代码行中后接以由“}”形成的第二控制序列422。
第二程序代码部分是语言结构化文本中的FOR循环。根据FOR循环的参数,ST变量“index”随着每一次循环从数值0以每次0.1递增到数值3.1。在每次循环的经过中,由第三G字符序列、第四ST字符序列和第四G字符序列形成的指令分别被执行,所述指令是根据第一嵌入规则的G代码句。就执行而言,ST变量“index”的当前数值被分别使用。
在G代码句中第二位的G代码文字“X=index”包括:根据变量嵌入规则的数值中包括表示数字的ST变量“index”。G代码句中第三位的G代码文字“Y{SIN(index)+offset_y}”包括作为根据第二嵌入规则的数值的ST表达式“SIN(index)+offset_y”,其可以被评估以形成数字。
因此,第二程序部分表示非终止符号“instruction”的汇出。导出包括由“FOR”表示的基本符号“ST keyword For”、由“index:=0”表示的非终止符号“ST assignment”的汇出、由“TO”表示的基本符号“ST keyword TO”、非终止符号“ST expression”汇出的“3.1”、由“BY”表示的基本符号“ST keyword By”、非终止符号“ST expression”汇出的“0.1”,由“DO”表示的基本符号“ST keyword DO”、由“G01X=index Y{SIN(index)+offset_y}F42”表示的非终止符号“instruciton”的汇出、以及由“END_FOR”表示的基本符号“ST keywordEnd-For”。
在这种情况下,非终止符号“instruction”的汇出包括根据第一嵌入规则导出非终止符号“G code sentence”。非终止符号“G code sentence”的汇出由非终止符号“Gcode word”的一系列四个导出所组成。非终止符号“G code word”的这些汇出中的第三个包括根据第二嵌入规则、由“SIN(index)+offset_y”表示的非终止符号“ST expression”的汇出。
解析模块212开始读取第一状态404中的第二程序代码部分,并且在读入由字符“{”形成的第一控制序列420时改变到第二状态406。在第二状态中,解析模块212将字符序列“FOR index:=0TO 3BY 0.1DO”转换为第二程序设计语言结构化文本的基本符号。在由字符“!”形成的第三控制序列424被读入之后,解析模块212变为第四状态410,并将字符序列“G01X=index Y”转换为第一程序设计G代码的基本符号。
在由字符“{”所形成的第一控制序列420被读入之后,且直到由字符“}”所形成的第二控制序列422被读入为止,解析模块212变为第五状态412,并且将第四ST字符序列“SIN(index)+offset_y”转换为第二程序设计语言结构化文本的基本符号。随后的字符序列“F42”又由第四状态410中的解析模块212转换为第一程序设计语言G代码的基本符号。当由“F42”之后的行末端形成的第四控制序列426被读入时,解析模块212输出基本符号“G-Newline”,并改变回到第二状态406。在第二状态406中,解析模块212将字符序列“END_FOR”转换为第二程序设计语言结构化文本的基本符号。当读入第二控制序列422时,解析模块212最终变回到第一状态404。
从第二程序代码部分生成的第二中间表示部分具有第二系列工作指令。第二系列工作指令包括在每次FOR循环经过时所处理的工作指令块。工作指令块包括的工作指令为,在每次经过时,存取存储在内存120中的ST变量“index”的当前数值,并将ST变量“index”的递增数值写入内存120。在FOR循环的工作指令块结束时,会存在有被配置为跳转指令的工作指令,并且在所述块开始时启动跳转到第一工作指令。跳转指令将执行模块212的程序计数器520重置到所述块的第一工作指令。
此外,FOR循环的工作指令块包括,通过被评估的第四ST字符序列所描述的ST表达式,计算在具有地址字母“Y”的G代码句的第三位中的G代码文字的数值的数字数值的工作指令。在这种情况下,内存存取是发生在ST变量“index”和ST变量“offset_y”的内存地址上。
为了评估第四ST字符序列,工作指令块包括根据其从与所述变量相关联的内存120的内存地址加载的ST变量“index”的数字数值的工作指令。此外,所述块包括通过函数“SIN”来计算ST变量“index”的数字数值的正弦值的工作指令,并且从内存120的相关内存地址加载变量“offset_y”的数值,并将其加到正弦。
最后,FOR循环的工作指令块包括将地址字母“G”和数值“01”、地址字母“X”和从内存120为了ST变量“index”加载的数字数值、地址字母Y和在第四ST字符序列的评估期间获得的数值、以及地址字母“F”和数值“42”写入表示NC指令330的日期数组的工作指令。针对每次FOR循环的经过,重复进行计算G代码文字的数值以及描述NC指令330的数据数组的工作指令。
具有机器控制200、201的控制系统1允许通过使用控制程序来控制机器2、3,其中所述控制程序的输入程序代码(例如输入程序代码300)包括由第一程序设计语言和第二程序设计语言组成的程序代码组成。因此,控制程序的建立可能涉及彼此混合的第一程序设计语言的语言元素与第二程序设计语言的语言元素。
由机器控制200的平移模块210生成统一的中间表示为了控制程序程序在实际加载时间允许整个输入程序代码300的完整的语法和静态语义分析。因此,可以在控制程序之前,由处理模块230识别第一程序代码组成中的错误以及第二程序代码组成中的错误、或第一对第二程序代码组成的连接中的错误。
从输入程序代码300产生的统一的中间表示230中大部分工作指令是由执行模块232转换成NC指令330,NC指令330又可以由第一程序设计语言表达。因此,用于将NC指令230转换成控制命令334的NC处理器可以是基于第一程序设计语言的平移器。由执行模块232同时产生另一个控制命令335还可允许通过另外使用根据第一程序设计语言的标准下不能由NC指令330描绘的移动指令和补充命令来控制机器2、3。
特别是,输入程序代码300的第一程序代码组成可以由程序设计语言G代码组成,且第二程序代码组成可以由程序设计语言结构化文本组成。因此,G代码可以使用在这种语言不可用的语言元素进行扩充,例如命名变量、具有形式参数的命名函数或来自结构化文本的控制流程指令。共享内存120和用于第一与第二程序代码组成中的变量的共享名称空间允许整个输入程序代码300中的变量的跨语言使用。
G代码与结构化文本的组合不仅允许在G代码中允许的数据类型、还允许在结构化文本中允许使用的所有数据类型都被使用。因此,对于数字而言,不仅可以使用G代码中提供的数据类型“LReal”,还可以使用来自结构化文本的数据类型“Int”、“Real”、或用户定义的受限数据类型。此外,可以使用在结构化文本中允许的字符串、多维数组、结构、类别、接口和指针。
组件符号列表
1 控制系统
2 机器
3 另一个机器
10 用户程序环境
15 实时环境
20 NC核心
22 NC信道模块
24 另一个NC信道模块
30 PLC模块
40 相户交换通道
50 数据传送信道
52 控制命令通道
54 另一个控制命令通道
56 状态消息通道
58 服务器控制通道
60 设定点数值通道
62 另一个设定点数值通道
100 服务器模块
110 服务器控制模块
112 内存存取信道
113 服务器数据信道
114 控制通道
115 另一个控制通道
120 内存
122 共享内存区域
124 本地内存区域
126 另一个本地内存区域
200 机器控制
201 另一个机器控制
210 平移模块
212 解析模块
214 剖析器模块
216 分析模块
218 中间表示产生模块
219 内存分配模块
230 处理模块
232 执行模块
234 NC处理器
236 排序模块
238 NC核心适配器模块
300 输入程序代码
308 基本符号
314 统一的结构树
320 中间表示
330 NC指令
332 状态信息
334 控制命令
335 另一个控制命令
336 已组织的控制命令
338 核心特定控制命令
400 状态转换图
402 起始状态
404 第一状态
406 第二状态
408 第三状态
410 第四状态
412 第五状态
420 第一控制序列
422 第二控制序列
424 第三控制序列
426 第四控制序列
500 程序内存
501 工作指令
502 第一工作指令
510 运行时间堆栈
511 数据元素
512 最上方数据元素
520 程序计数器
525 堆栈指针

Claims (23)

1.一种用于机器控制(200)的平移模块(210),
其中所述平移模块(210)是配置以处理控制程序的输入程序代码(300),并由其产生具有用于由所述机器控制(200)执行的工作指令的统一的中间表示(320),
其中所述输入程序代码(300)包括第一程序代码组成和第二程序代码组成,
其中所述第一程序代码组成是以第一程序设计语言所撰写,所述第二程序代码组成是以第二程序设计语言所撰写,
其中所述中间表示(320)的工作指令包括第一工作指令与第二工作指令,以及
其中所述第一工作指令是根据所述第一程序代码组成所产生,且所述第二工作指令是根据所述第二程序代码组成所产生,所述第一程序代码组成与第二程序代码组成被组合在所述统一的中间表示中,作为依次序执行的工作指令。
2.根据权利要求1所述的平移模块(210),
其中所述平移模块(210)包括解析模块(212),
其中所述解析模块(212)是配置以从所述输入程序代码(300)读取所述第一程序代码组成和所述第二程序代码组成,并且将它们转换为基本符号(308),
其中所述解析模块(212)是配置以采用第一状态(404)与第二状态(406),
其中所述解析模块(212)在所述第一状态(404)中将所述第一程序代码组成转换为所述第一程序设计语言的基本符号,
其中所述解析模块(212)在所述第二状态(406)中将所述第二程序代码组成转换为所述第二程序设计语言的基板符号。
3.根据权利要求2所述的平移模块(210),
其中所述解析模块(212)是配置以于第一控制序列(420)从所述输入程序代码(300)中被读取时执行从所述第一状态(404)到所述第二状态(406)的状态转换,并且于第二控制序列(422)从所述输入程序代码(300)中被读取时执行从所述第二状态(406)到所述第一状态(404)的状态转换。
4.根据前述权利要求2所述的平移模块(210),
其中所述平移模块(210)包括被配置以从所述基本符号(308)产生所述控制程序的统一的结构树(314)的剖析器模块(214),
其中所述剖析器模块(214)是配置以根据组合语法于所述输入程序代码(300)执行句法检查,其中所述组合语法包括所述第一程序设计语言的第一语法规则以及所述第二程序设计语言的第二语法规则。
5.根据前述权利要求1所述的平移模块(210),
其中所述第一程序设计语言是G代码,且/或所述第二程序设计语言是结构化的文本。
6.根据权利要求5所述的平移模块(210),
其中所述输入程序代码(300)包括具有第一指令与第二指令的一系列指令,
其中所述第一程序代码组成包括所述第一指令,而且所述第二程序代码组成包括所述第二指令,
其中所述第一指令是由G代码句所组成,而且所述第二指令是由ST指令所组成。
7.根据权利要求5所述的平移模块(210),
其中所述输入程序代码(300)包括具有地址字母和数值的G代码文字,
其中所述第一程序代码组成包括所述地址字母,且所述第二程序代码组成包括所述数值,以及
其中所述数值包括ST表达式。
8.根据权利要求5所述的平移模块(210),
其中所述输入程序代码(300)包括具有地址字母与数值的G代码文字,
其中所述第一程序代码组成包括所述地址字母和所述数值,以及
其中所述数值包括ST变量。
9.根据前述权利要求1至8中任一项所述的平移模块(210),
其中所述平移模块(210)包括分析模块(216),
其中所述分析模块(216)是配置以根据组合的语义系统于所述输入程序代码(300)执行语义检查,
其中所述组合的语义系统包括所述第一程序设计语言的第一语义系统的规定以及所述第二程序设计语言的第二语义系统的规定。
10.根据前述权利要求1至8中任一项所述的平移模块(210),
其中所述平移模块(210)包括内存分配模块(218),
其中所述内存分配模块(218)是配置以将包括所述机器控制(200)的控制系统(1)的内存(120)的内存地址分配到包含于所述输入程序代码(300)中的变量。
11.一种用于具有机器控制(200)的机器(2)的控制系统(1),
其中所述机器控制(200)包括根据前述权利要求1至10中任一项所述的平移模块(210)和处理模块(230),
其中所述处理模块(230)是配置以处理具有工作指令的中间表示(320),并且将所述工作指令作为产生用于控制连接到所述机器控制(200)的机器(2)的控制命令(334)的基础,
其中所述处理模块(230)包括执行模块(232)和NC处理器(234),
其中所述执行模块(232)是配置以将所述中间表示(320)的所述工作指令作为用于产生NC指令(330)的基础,并且将所述NC指令(330)传送到所述NC处理器(234),
其中所述NC处理器(234)是配置以将所述NC指令(330)作为用于产生所述控制命令(334)的基础。
12.根据权利要求11所述的控制系统(1),
其中所述执行模块(232)是配置以产生用于控制所述机器(2)的另一控制命令(335)。
13.根据权利要求12所述的控制系统(1),
其中所述处理模块(230)包括被配置以接收所述控制命令(334)与所述另一控制命令(335)的排序模块(236),
其中所述排序模块(236)是配置以将所述控制命令(334)与所述另一控制命令(335)输出作为按照致动顺序而组织的控制命令(336)。
14.根据权利要求11至13中任一项所述的控制系统(1),
其中所述执行模块(232)是配置以自包括机器控制(200)的控制系统(1)的内存(120)读取数据,且/或对所述内存(120)写入数据。
15.根据权利要求11至13中任一项所述的控制系统(1),
其中所述执行模块(232)是配置以从所述NC处理器(234)接收关于所述NC处理器(234)的状态的一条状态信息(332)。
16.根据权利要求11至13中任一项所述的控制系统(1),
其中所述中间表示(320)包括对指令对象的一系列对象指针,
其中所述指令对象是指包含所述工作指令的方法。
17.根据权利要求11至13中任一项所述的控制系统(1),
其中所述工作指令可用作为机器代码。
18.根据权利要求11至13中任一项所述的控制系统(1),
其中所述执行模块(232)是配置以将所述NC指令(330)传送至所述NC处理器(234)作为数据结构。
19.根据权利要求11至13中任一项所述的控制系统(1),
其中所述NC指令(330)表示G代码句。
20.根据权利要求11至13中任一项所述的控制系统(1),
其中所述执行模块(232)是被配置为堆栈机器。
21.根据权利要求11至13中任一项所述的控制系统(1),
其中所述控制系统(1)包括NC核心(20)和设定点数值通道(60),
其中所述NC核心(20)是配置以接收所述处理模块(230)的控制命令(338),以将所述控制命令(338)作为用于产生为了所述机器(2)的设定点数值的基础,并且通过所述设定点数值通道(60)将所述设定点数值传送到所述机器(2),
其中所述机器控制(200)形成所述控制系统(1)的用户程序环境(10)的部分,而所述NC核心(20)形成所述控制系统(1)的实时环境(15)的部分。
22.根据权利要求11至13中任一项所述的控制系统(1),
其中所述控制系统(1)包括内存(120),
其中所述机器控制(200)是配置以将数据写入到所述内存(120),及/或从所述内存(120)读取数据。
23.根据权利要求22所述的控制系统(1),
其中所述控制系统(1)包括PLC模块(30),
其中所述PLC模块(30)是配置以通过所述机器控制(200)来控制所述控制程序的所述输入程序代码(300)的处理,
其中所述PLC模块(30)是配置以与所述内存(120)交换数据。
CN201680033251.7A 2015-04-09 2016-04-08 平移模块、处理模块及控制系统 Active CN107710086B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
DE102015105436.1A DE102015105436A1 (de) 2015-04-09 2015-04-09 Übersetzungsmodul, Verarbeitungsmodul und Steuerungssystem
DE102015105436.1 2015-04-09
PCT/EP2016/057747 WO2016162477A1 (de) 2015-04-09 2016-04-08 Übersetzungsmodul, verarbeitungsmodul und steuerungssystem

Publications (2)

Publication Number Publication Date
CN107710086A CN107710086A (zh) 2018-02-16
CN107710086B true CN107710086B (zh) 2020-08-11

Family

ID=55750386

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680033251.7A Active CN107710086B (zh) 2015-04-09 2016-04-08 平移模块、处理模块及控制系统

Country Status (5)

Country Link
US (1) US10732608B2 (zh)
EP (1) EP3281071B1 (zh)
CN (1) CN107710086B (zh)
DE (1) DE102015105436A1 (zh)
WO (1) WO2016162477A1 (zh)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102015105436A1 (de) 2015-04-09 2016-10-13 Beckhoff Automation Gmbh Übersetzungsmodul, Verarbeitungsmodul und Steuerungssystem
JP6806019B2 (ja) * 2017-09-26 2020-12-23 オムロン株式会社 制御装置
EP3480671A1 (de) * 2017-11-02 2019-05-08 Siemens Aktiengesellschaft Verfahren zum betrieb einer numerisch gesteuerten produktionsanlage sowie produktionsanlage dazu
JP2019144828A (ja) * 2018-02-20 2019-08-29 ファナック株式会社 数値制御装置
CN108303948B (zh) * 2018-04-16 2019-11-15 深圳市雷赛控制技术有限公司 一种基于运动控制器的编译型plc的执行方法和装置
JP7024679B2 (ja) * 2018-10-05 2022-02-24 オムロン株式会社 開発支援プログラム、開発支援装置、および開発支援方法
JP6950665B2 (ja) * 2018-11-02 2021-10-13 横河電機株式会社 エンジニアリング装置、エンジニアリング装置の制御方法及びプログラム
CN113454551A (zh) * 2019-02-18 2021-09-28 西门子股份公司 用于工业生态系统之间互操作性的自动化代码生成器
US11334326B2 (en) * 2019-02-27 2022-05-17 Adrian Andres Rodriguez-Velasquez Systems, devices, and methods of developing or modifying software using physical blocks
CN112859757B (zh) * 2019-11-27 2022-04-22 宁波舜宇智能科技有限公司 边缘计算控制方法、装置、边缘计算机和可读存储介质
CN113138771B (zh) * 2020-01-17 2024-06-21 北京达佳互联信息技术有限公司 数据处理方法、装置、设备及存储介质
WO2021225901A1 (en) * 2020-05-04 2021-11-11 Lingua Robotica, Inc. Techniques for converting natural speech to programming code
CN112068840B (zh) * 2020-07-30 2022-04-01 中国科学院金属研究所 面向脉冲激光3d打印的g代码生成方法
CN113625661B (zh) * 2021-07-29 2023-07-04 广东工贸职业技术学院 一种数控内嵌plc中间文件转化指令表的设计方法
US20230325156A1 (en) * 2022-04-08 2023-10-12 Red Hat, Inc. Cross-validating files to facilitate code generation

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS59172008A (ja) * 1983-03-22 1984-09-28 Mitsubishi Electric Corp 数値制御装置
JP2718260B2 (ja) * 1990-11-08 1998-02-25 三菱電機株式会社 数値制御装置
DE4342660A1 (de) * 1993-12-14 1995-06-22 Siemens Ag Einrichtung zum Betreiben eines technischen Gerätes entsprechend vorgegebenen Programmen
US5485620A (en) * 1994-02-25 1996-01-16 Automation System And Products, Inc. Integrated control system for industrial automation applications
US6467082B1 (en) * 1998-12-02 2002-10-15 Agere Systems Guardian Corp. Methods and apparatus for simulating external linkage points and control transfers in source translation systems
US6588008B1 (en) * 2000-04-11 2003-07-01 International Business Machines Corporation Assembler tool for processor-coprocessor computer systems
US6836883B1 (en) * 2000-06-21 2004-12-28 Microsoft Corporation Method and system for compiling multiple languages
FR2826746B1 (fr) * 2001-06-29 2003-11-28 Crouzet Automatismes Procede et dispositif d'elaboration de programmes d'automatismes
GB0303270D0 (en) * 2003-02-13 2003-03-19 Renishaw Plc A machine tool control process and apparatus therefor
US7508985B2 (en) * 2003-12-10 2009-03-24 International Business Machines Corporation Pattern-matching system
US7949826B2 (en) * 2007-07-05 2011-05-24 International Business Machines Corporation Runtime machine supported method level caching
US8327316B2 (en) * 2008-09-30 2012-12-04 Ics Triplex Isagraf Inc. Compilation model
ES2483966T3 (es) * 2009-04-20 2014-08-08 Pilz Gmbh & Co. Kg Método y dispositivo para programar un controlador industrial de una instalación automatizada
CN101957745B (zh) * 2009-07-16 2013-04-17 沈阳高精数控技术有限公司 梯形图语言转换为结构文本语言的方法
DE102010053668A1 (de) * 2010-12-07 2012-06-14 Klaus-Dieter Becker Vorrichtung und Verfahren zur Erstellung eines Programms für computergesteuerte Maschinen
US8799880B2 (en) * 2011-04-08 2014-08-05 Siemens Aktiengesellschaft Parallelization of PLC programs for operation in multi-processor environments
US20150026659A1 (en) * 2013-07-19 2015-01-22 Frank Ding System and method for programming and controlling instruments
US9710243B2 (en) * 2013-11-07 2017-07-18 Eagle Legacy Modernization, LLC Parser that uses a reflection technique to build a program semantic tree
US9424003B1 (en) * 2014-10-24 2016-08-23 Emc Corporation Schema-less system output object parser and code generator
DE102015001557B3 (de) * 2015-02-10 2016-02-04 Komet Group Gmbh Verfahren zum Überwachen einer Werkzeugmaschine
DE102015105436A1 (de) 2015-04-09 2016-10-13 Beckhoff Automation Gmbh Übersetzungsmodul, Verarbeitungsmodul und Steuerungssystem

Also Published As

Publication number Publication date
EP3281071B1 (de) 2019-07-03
DE102015105436A1 (de) 2016-10-13
EP3281071A1 (de) 2018-02-14
CN107710086A (zh) 2018-02-16
US10732608B2 (en) 2020-08-04
WO2016162477A1 (de) 2016-10-13
US20180032055A1 (en) 2018-02-01

Similar Documents

Publication Publication Date Title
CN107710086B (zh) 平移模块、处理模块及控制系统
US8327316B2 (en) Compilation model
US20140123104A1 (en) Method and device for the programming and configuration of a programmable logic controller
CN104281096B (zh) 数控代码编译器的构造方法
US10061809B2 (en) Control device
CN104239115A (zh) 一种plc编程语言的编译方法
Liu et al. An intelligent NC program processor for CNC system of machine tool
CN104267999A (zh) 一种对控制程序进行编译的方法和装置
CN101763072A (zh) 数控加工代码的转换方法和装置
US20190012168A1 (en) Program generating apparatus
JP5262765B2 (ja) Plcのプログラム変換ツール
CN111954854A (zh) 支持装置以及支持程序
CN106933568A (zh) 一种组态软件系统及一种工业控制方法
US9563181B2 (en) Method for operating an automation system
CN114968196A (zh) 基于codesys软件的开发平台架构
CN1936746A (zh) 基于arm的嵌入式数控系统g代码解释器
CN116330263A (zh) 一种基于Codesys的智能工业机器人平台实现方法
Bauer et al. Towards automatic verification of embedded control software
Liu et al. A universal and scalable CNC interpreter for CNC systems
Pacheco et al. Application of the step-NC standard in a computer numerical controlled machining device
AU2016102107A4 (en) Robot control system
JP2008299763A (ja) 分散オブジェクト開発ツール
Kajihara et al. Development and products of the object-oriented engineering tool for the integrated controller based on IEC 61131-3
CN108107839B (zh) 一种自动转换数控程序格式的方法
WO2014110749A1 (en) Robot control system and method thereof

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant