CN1811630A - 将过程控制系统中梯形逻辑转换为布尔逻辑的方法和系统 - Google Patents

将过程控制系统中梯形逻辑转换为布尔逻辑的方法和系统 Download PDF

Info

Publication number
CN1811630A
CN1811630A CN200610000534.XA CN200610000534A CN1811630A CN 1811630 A CN1811630 A CN 1811630A CN 200610000534 A CN200610000534 A CN 200610000534A CN 1811630 A CN1811630 A CN 1811630A
Authority
CN
China
Prior art keywords
boolean
routine
trapezoidal
logic
logic element
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.)
Pending
Application number
CN200610000534.XA
Other languages
English (en)
Inventor
弗雷德里克·F·克莱因
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.)
Emerson Process Management Power and Water Solutions Inc
Original Assignee
Emerson Process Management Power and Water Solutions Inc
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 Emerson Process Management Power and Water Solutions Inc filed Critical Emerson Process Management Power and Water Solutions Inc
Publication of CN1811630A publication Critical patent/CN1811630A/zh
Pending legal-status Critical Current

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/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/05Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
    • G05B19/056Programming the PLC
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • 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/10Plc systems
    • G05B2219/13Plc programming
    • G05B2219/13018Conversion ladder diagram to decision system, machine code, language

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Automation & Control Theory (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Programmable Controllers (AREA)

Abstract

在此公开了一种将梯形逻辑例程转换为布尔逻辑的方法。在定义该梯形逻辑例程的多个梯形梯级中每个梯形梯级的相应逻辑表达式中采集梯形逻辑元素的布尔表示形式。接着从所述逻辑表达式中解析出布尔逻辑元素。然后以解析所述布尔逻辑元素的次序将布尔逻辑元素存储在存储器中,从而按照该梯形逻辑例程的执行次序来表示该梯形逻辑例程。

Description

将过程控制系统中梯形逻辑转换为布尔逻辑的方法和系统
技术领域
本发明通常涉及过程控制例程,更确切地说,涉及使用梯形逻辑的控制例程。
背景技术
梯形逻辑常常用于表示过程控制系统中执行的控制例程。梯形逻辑源自于表示基于继电器的逻辑,其中各个继电器均被表示为线圈以及控制线圈是否通电的一个或多个触点。为此,各个继电器的触点和线圈均被布置于连接在两个电力轨线之间的梯级上,由此呈现为梯形。除继电器和继电器网络之外,梯形逻辑已经广泛地用作可编程逻辑控制器(PLC)的标准编程范例,其已经用于执行各种过程控制操作的控制逻辑。由PLC执行的逻辑和例程常常被表示为其他编程范例,例如布尔逻辑。然而,梯形逻辑仍然不失为一种较佳的编程范例,尤其是当该逻辑能够简单地表示为一系列的继电器线圈和触点时。
为了解决过程控制例程日益增长的复杂度,利用PLC的过程控制系统已经升级为包含更先进的数字控制器,这些数字控制器执行通过更高级的编程结构或语言来表达的控制逻辑,例如面向对象的编程语言。这些先进的控制器通常地集成于分布广泛的依靠于分布式过程控制技术的网络中,分布式过程控制技术具有一个或多个操作员工作站来提供用户接口,以进行配置、维护和其他控制功能。在这些情况下,这些用户接口提供对控制器进行远程重新编程的能力。为此,工作站和其他用户接口执行配置软件和其他例程,这些软件和例程使得控制人员能够查看和修改整个过程控制系统中正在执行的控制逻辑。由于这些创新,可以对集成了大量控制器的过程控制系统进行维护,而无须维护人员如通常使用PLC的情况,使用用于编程和其他工作的手持式或其他便携式设备来一个个地检查每一个控制器。
尽管过程控制中已经有这些进步和创新,许多系统仍然使用梯形逻辑来表示由网络中的控制器或其他设备来执行的控制逻辑。不幸的是,目前负责维护系统的人员更愿意使用更高级的编程语言和布尔逻辑来工作,而不是梯形逻辑。因此,旨在改进或重新配置梯形逻辑系统的维护和其他工作可能会效率低下地需要一个或多个逻辑的手工转译。更确切地说,第一转译过程可能需要将控制例程由梯形逻辑转换为布尔逻辑,以使那些更熟悉布尔逻辑的人员能够诊断控制例程中的问题,或设计控制例程中的改进。由于该转译常常是手工执行的,因此该过程经常是耗时且容易出错的,在这种情况下可能还必需进一步的转译。
颁发给巴克斯特(Baxter)的美国专利No.5,623,401描述了一种控制系统的操作方法,其涉及如下这种技术,即为了改善控制系统的响应时间,将有限和过分简单化特性的梯形逻辑转换为布尔门的流型程序。最终结果是一种转译例程的序列,该转译例程确保只有特定变量的变化才在操作期间进行处理。因此,生成这些转译例程是为了优化执行,而不是为了支持在先进的过程控制系统的情境中以上所描述的各种类型的逻辑设计、配置、维护或其他工作。因此,不能以如下这样的方式存储或表示这些结果,即能够支持进一步设计、配置、维护或关于逻辑例程的其他工作的方式。
发明内容
于此公开的是一种自动逻辑转换技术,其可以作为系统、方法或计算机程序来实施,用于以梯形逻辑表达的例程的自动转译或转换。所公开的技术通过如下这样的方式将梯形逻辑转换为一组布尔逻辑元素,即能够进行进一步的设计、配置、维护或关于例程和基础(underlying)逻辑的其他工作的方式。
根据本发明的一个方面,一种方法可以用于根据执行次序处理通过梯形逻辑元素表示的例程,所述梯形逻辑元素被布置于多个梯形梯级中。该方法包括:在多个梯形梯级中每个梯形梯级的相应逻辑表达式中采集梯形逻辑元素的布尔表示形式,从所述逻辑表达式中解析布尔逻辑元素,并且根据执行次序将关于布尔逻辑元素的信息存储在存储器中,以便以布尔逻辑来表示该例程。
在某些实施例中,如果相应的逻辑表达式之一的布尔表示形式的进一步采集将导致相异的布尔逻辑函数的组合,则执行所述解析步骤。
所述采集步骤可以包括以下步骤:评估每个梯形逻辑元素以确定由评估所引起的操作,以及更新相应逻辑表达式以反映该操作。所述存储步骤可以包括以下步骤:将布尔逻辑元素的定义作为从逻辑表达式中分离出的对象,写入到存储器中。所述对象可以写入到存储器中与其他对象相关的位置,所述其他对象与保持该例程执行次序的其他布尔逻辑元素相关联。所述梯形逻辑元素可以布置于每个梯形梯级内的柱状位置,其中所述执行次序以柱状方式来进行。
在一个实施例中,该方法还包括以下步骤:在评估被指定为第一梯形梯级中的另一梯形逻辑元素之前,进行多个梯形梯级中的不同梯形梯级,以进行随后的梯形逻辑元素的评估。
在梯形逻辑具有特殊函数的情况下,该方法包括以下步骤:(i)识别具有遍布于多个梯形梯级的多重梯形梯级的单元的非布尔函数,和(ii)从连接到该非布尔函数的输入的多个梯形梯级的梯形梯级的相应逻辑表达式中解析又一布尔逻辑元素。该方法还包括以下步骤:根据所述执行次序,将代表非布尔函数的对象存储在存储器中。
在一个实施例中,所述采集步骤包括以下步骤:组合通过一个或多个“或”函数(OR函数)链接的多个梯形梯级的相邻梯形梯级的两个或更多的相应逻辑表达式,以便为两个或更多相应逻辑表达式中的每一个创建复合逻辑表达式。所述组合步骤可以包括执行递归程序的步骤。
根据该转换技术的另一方面,一种系统包括处理器,连接到该处理器的计算机可读存储器,和存储于计算机可读存储器中并且配置为可由该处理器执行的逻辑转换例程。所述逻辑转换例程包括梯形逻辑元素处理例程,其在多个梯形梯级的每个梯形梯级的相应逻辑表达式中采集所述梯形逻辑元素的布尔表示形式。接下来,当进一步采集将在该相应逻辑表达式中列出相异的布尔函数时,所述梯形逻辑元素处理例程从相应的逻辑表达式中解析布尔逻辑元素。
在一个实施例中,所述逻辑转换例程还包括OR函数处理例程,当遇到OR函数时,该OR函数处理例程(i)组合由OR函数相连的多个梯形梯级的相邻梯形梯级的多个相应逻辑表达式,以反映多个相应逻辑表达式的组合,并且(ii)修改多个相应逻辑表达式中的每一个以反映该组合。OR函数处理例程可以执行循环程序。
梯形逻辑元素处理例程可以包括线圈处理例程,当在多个梯形梯级的当前梯形梯级中遇到线圈时,该线圈处理例程将当前梯形梯级的逻辑表达式解析为又一布尔逻辑元素。
根据该转换技术的又一方面,在计算机可读介质上存储一种计算机程序产品,该计算机程序产品用于梯形逻辑例程的转换。该计算机程序产品包括第一、第二和第三指令组。第一指令组在多个梯形梯级中的每个梯形梯级的相应逻辑表达式中采集梯形逻辑元素的布尔表示形式。然后第二指令组确定是否要从所述逻辑表达式中解析布尔逻辑元素。接下来第三指令组根据解析布尔逻辑元素的次序,将所述布尔逻辑元素存储在存储器中。
在一个实施例中,当由第一指令组进行的所述逻辑表达式之一中的布尔表示形式的进一步采集将导致相异的布尔逻辑函数的组合时,则可以执行所述第二指令组。
所述第一指令组可以评估每一个梯形逻辑元素以确定由评估所引起的操作,并更新相应的逻辑表达式以反映该操作。
所述第三指令组可以将每个布尔逻辑元素的定义作为从其中解析布尔逻辑元素的逻辑表达式中分离出的对象,写入到存储器中。在一个实施例中,所述对象被存储的次序可保持该梯形逻辑例程的执行次序。
附图说明
为了对本发明进行更充分的理解,应当参照以下的详细说明和附图,其中:
图1是示范性过程控制系统的示意图,该过程控制系统与能够执行根据一个实施例的逻辑转换例程的一个或多个系统或设备一起,执行适用于所公开技术的转换的梯形逻辑例程;
图2是具有梯形逻辑元素的示范性梯形逻辑例程的示意图,包括特殊函数元素;
图3是描绘了根据所公开转换技术的一个实施例,用于处理图2的示范性梯形逻辑例程的梯形逻辑转换例程的流程图;
图4是更详细地描绘图3的转换例程的线圈压缩部分的流程图;
图5是更详细地描绘图3的转换例程的采集和处理部分的流程图;
图6是描绘了根据一个实施例的、图3和图5的转换例程的线圈和触点评估,以及处理部分的流程图;
图7是描绘了根据一个实施例的、图3和图5的转换例程的特殊函数评估和处理部分的流程图;和
图8A~8C是描绘了根据一个实施例的、图3和图5的转换例程的OR函数评估和处理部分的流程图。
尽管所公开的转换技术容许有各种形式的实施例,在附图中(并且将在下文中进行描述和说明)图解说明了本发明的特定实施例,需要理解的是,本公开意欲是说明性的,而非想要将本发明限于于此描述和说明的特定实施例。
具体实施方式
所公开的实施例一般涉及梯形逻辑到布尔逻辑的转换和转译,因此,可以用于具有执行以梯形逻辑表示的例程的设备的过程控制系统。更具体而言,举例来说,如果操作员或其他人员不熟悉梯形逻辑的话,那么为了保持或改进这些过程控制系统操作的配置、设计、维护、编程或其他工作,都可以从该转换和转译中获益。然而,即使所公开的实施例特别适用于转换过程控制例程,所公开实施例的实行并不限于任何特定类型的系统或情境内的应用程序,或者任何特定工作站或其他硬件装置上的执行程序。相反,于此公开的自动转换技术可以适用于大量不同计算平台中的任何一种,而与其中执行基础梯形逻辑的环境或应用程序无关。因此,于此对特定类型的其中集成了所公开实施例的例程(例如,过程控制例程)、情境、应用程序或系统的任何直接或隐含的引用,都仅仅是为了对所公开技术进行图解说明的便利。
所公开实施例的实行同样也不限于任何一种特定的梯形逻辑范例或惯例。实际上,所公开的转换技术可以兼容非常广泛的种类的梯形逻辑规则。例如,所公开的转译或转换技术可以应用于包括非标准梯形逻辑元素(即,除了触点和线圈之外)的例程,例如计时器、双稳态多谐振荡器触发器,以及其他特殊函数。这些函数通常被作为由所公开技术的一个实施例所处理的特殊函数的一个类别来处理。如在此将要进行的进一步解释说明的那样,基础梯形逻辑同样也可以具有垂直、水平或其他的执行次序,以便能够在转换例程的转译或其他输出中保持在该执行次序之下的逻辑。
更一般而言,且根据一个实施例,所公开的转换技术部分地基于单独的逻辑表达式中梯形逻辑元素的布尔表示形式的采集,其中单独的逻辑表达式针对于布置梯形逻辑元素的梯形的每一梯级。当自动转换技术顺序地处理或评估梯形中的每一个梯形逻辑元素时,每一个相应的逻辑表达式均要进行更新或修改。然而,由转换例程生成的逻辑表达式并不构成所公开的系统、方法或计算机程序的输出。实际上,该逻辑表达式是在转换处理期间所利用的中间结果(即,工作或临时参数),即使在某些实施例中,逻辑表达式中的布尔表示形式可以列出具有完整或内聚的一组元素、算符、操作或函数的形式布尔逻辑。相反作为替代,随着梯形进度的处理,从表达式中列出的逻辑中解析截然不同的布尔逻辑元素。在特定处理期间解析某一元素,以避免在逻辑表达式中采集相异的布尔函数,但是可以在几种不同的环境下解析各个元素。接下来,按照生成这些布尔逻辑元素的次序,并以如下这样的方式存储这些布尔逻辑元素:(i)支持随后的维护和关于正在转换的例程的其他工作,和(ii)保持基础梯形逻辑的执行次序。
图1图示了一般由10表示的一个示范性过程控制系统,以阐明一种可以执行基础梯形逻辑或所生成的布尔逻辑的环境。换句话说,所公开的转换例程因此可以从/向系统10的一个或多个部分接收输入数据/提供输出数据。在这种情况下,该转换例程可以由工作站,个人计算机,或与系统10无关联的、与系统10不相连接的(例如离线的)、和/或远离系统10的其他设备来执行。实际上,所公开的转换技术可以使用任意的硬件或软件平台来执行。然而,在可选实施例中,系统10的一个或多个部分可能能够支持转换例程的执行。以下的说明可以指示转换例程以这种方式(即,以系统10的部分执行该转换例程的方式)的执行,但仅仅是为了图解说明的简便。
过程控制系统10包括用户接口12和14,举例来说,其可以是在通信网络上,通过系统级数据总线20连接到大量其他设备的工作站或计算机,所述其他设备可以是,例如数据存储设备或历史库16,以及任意数目的控制器18。系统级数据总线20可以是以太网数据总线或适用于数据传输的任何其他的数据总线。举例来说,控制器18可以是DCS(分布式控制系统)控制器,并且可以使用专有的通信协议,或者以任何其他合适的方式,通过系统级数据总线20与用户接口12和14进行通信,以执行基础梯形逻辑或所生成的布尔逻辑。基础梯形逻辑或所生成的布尔逻辑可以在控制器18中,作为控制算法或例程来执行,以用于控制以任何常规方式或任何其他所需方式连接到控制器18上的现场设备。
如图1所示,每一个控制器18均通过一个或多个链接设备24,25与任意数目的现场设备22,23进行通信,举例来说,所述链接设备可以是Hart协议的输入/输出(I/O)卡。现场设备22,23相互之间进行通信,并与链接设备24,25进行通信,以执行一个或多个过程控制回路,或者与控制器18一起协作,亦或是独立于控制器18。这样,控制器18可以充任MAC(多应用程序控制器)或DPU(分布式处理单元),但是在任一种情况,控制器18都可以支持控制逻辑的执行,以进行现场设备22,23的数据获取和控制策略(例如,PID控制)。举例来说,现场设备22,23可以是兼容Hart的设备。当然也可以使用其他设备/有线拓扑,包括点对点连接,以及树或“支脉(spur)”型连接。
用户接口12,14中的任意一个,或者两者都可以是工程站,例如可以从艾默生过程管理公司(Emerson Process Management),电力和水力系统公司(Power&Water System)(匹兹堡,宾夕法尼亚州)获得的奥法兴(Ovation)工作站,或者是在UNIX平台上运行的任何其他类似的工作站。替换地,或另外地,用户接口12,14之一,或两者都可以是运行大量其他操作系统中的任意一个——例如微软Windows的个人计算机。可以依靠用户接口12或14中的任意一个,或两者来执行所公开的逻辑转换技术,或支持所公开逻辑转换技术的执行。然而,如以上所阐述的,转换例程的执行并不需要任何一个用户接口12,14(或任何其他的过程控制系统工作站或设备),并且可以替换地,可以依靠与系统10相关联的网络之外的标准个人计算机。因此,在一个实施例中,用户接口12,14中的一个可以不像图1所示的那样接合到总线20,以便表示所公开的逻辑转换技术可以离线地实行。更一般而言,执行该例程的个人计算机,工作站或其他计算机可以,但不必需以任何方式连接到,或者以通信联络方式接合到图1所示的网络上。在以与系统10分离或不相连接的方式来执行转换的情况下,转换例程的所生成的布尔逻辑,即输出数据可以以任何方式上载或传送到用户接口12,14,或者系统10的其他部分,以用于过程设计、配置、校准和其他工作。
在某些情况下,所公开的转换技术可以作为软件用具或工具包的一部分,在过程控制系统内执行或实施。不管它与其他工具或软件的集成度,转换例程都可以配置为在大量不同硬件或软件平台中的任意一个上执行,而不限于任何专有的操作系统、硬件、编程语言或软件配置。尽管所公开的逻辑转换技术可以以软件形式来实现,作为由一个或多个通用处理器来执行的计算机程序,但是所公开的技术也可以使用专用硬件、固件、软件或它们的任意组合来实现。在任一种情况下,所公开的逻辑转换技术都可以作为一套更广泛的用具或功能的一部分来实现,其可用于更一般地控制过程和过程控制系统10。举例来说,这些用具和功能可以包括配置和编辑功能,这些功能允许操作员来创建所公开技术要转换的梯形逻辑例程。
继续参照图1的示范性实施例,每个用户接口12和14均具有显示器和/或其他输出设备26,其能够通过菜单、窗口和其他标准的信息显示技术,便于整个系统10的控制策略的管理和维护。为此,配置和其他软件(在某些实施例中,例如所公开的转换例程)可以驻存在每个用户接口12,14的存储器27中,以由相应的处理器28来执行。每个用户接口12和14也包括一个或多个输入设备29,例如键盘或选择设备,以便于配置、控制以及其他信息和数据的输入。
处理器28可以是任意类型的处理器,但是最好是通用的可编程处理器,例如通常用于个人计算机、UNIX工作站等中的那些处理器。存储器27可以是任何所需类型的存储器。
控制器18也包括处理器,其执行或监视一个或多个过程控制例程(存储在存储器中),所述例程可以包括控制回路,并且存储在控制器中或以别的方式与之相关联,并且与设备22,23,用户接口12和14,以及数据历史库16进行通信,以根据诸如所要转换的基础梯形逻辑例程来控制过程。需要注意的是,该基础例程可以具有,如果需要的话,可以由不同的控制器或其他设备来实施或执行的部分。同样,该基础例程可以采取任意形式,包括软件、固件、硬件,等等。为了该公开的目的,可以是控制程序的模块或任何部分——例如子例程、子例程的某些部分(例如代码行)等的控制例程,可以使用任何设计工具来设计,例如图形设计工具,或任何其他类型的软件/硬件/固件编程或设计工具。
在由控制器18执行基础例程的一个实施例中,用户接口12,14可以在这些方面提供在线的和离线的图形监控和其他控制功能。因此如图2所示,基础例程可以通过一个或多个显示器26,以图形梯形逻辑来表达。在可选实施例中,基础例程可以存储在过程控制系统10的不同位置,因此也可以驻存在用户接口12,14的一个或两个存储器27,或者数据历史库16中,而不管该例程是否可以以控制级来执行。更一般而言,所公开的转换技术的实行,并不依赖于该控制例程在哪里驻存,或者在哪里执行。因此,在某些实施例中,控制例程可以以分布式方式来实施或存储,和/或可用于以远程方式来执行、实施或转换。
图2描绘了以梯形逻辑表示的、且具有简化特性的例程,其仅用于图示根据一个或多个实施例的所公开的转换技术。图2所示的例程可以在任意情境下实施,但是如果在关于图1的以上所注解的过程控制情境下实施的话,很可能更加复杂,且具有更多的逻辑元素。然而,所公开的转换技术的应用程序可以很好地适用于任意大小或复杂程度的控制例程,这是因为该技术涉及以系统的、顺序的方式,根据梯形逻辑的执行次序来处理该梯形逻辑。因此,所公开的转换技术的系统化的方法涉及通过梯形逻辑,如图2的例程所示的逻辑,以由执行次序确定的次序或排序来进行处理,并且随着它沿着该排序前进时(即在运行中),生成布尔逻辑输出。以生成布尔逻辑输出的次序来存储该布尔逻辑输出,还使得该输出能够反映和保持基础梯形逻辑的执行次序。
通常,梯形逻辑和图2所示的控制例程的逻辑元素一样,对本领域技术人员而言是众所周知的,因而将仅进行简要的介绍。根据标准的梯形逻辑惯例,通过电力轨线30和32之间的大量逻辑元素,来阐释该例程。作为初始要素,用在这里的某一逻辑元素,指的是逻辑例程的任意部分或方面(梯形或布尔),以便逻辑元素可以用图形或文本来表示,并且可以表示为特征或细节的变化等级。举例来说,逻辑元素可以是算符(例如,与(AND)、或(OR)、常开触点,等等),操作对象(例如,A1、B2、真(TRUE)、假(FALSE),等等),包含一个或多个算符或操作对象的逻辑函数(例如,“A1或B2”,真,等),或设置为等于该函数的标识符、符号或变量(例如C)(例如,如C=A1或B2中那样)。逻辑元素也可以构成、包括、包含或涉及特殊函数和其中的特殊方面(例如,计时器、其持续时间等),到这些特殊函数被集成到梯形或布尔逻辑例程这样的程度。用在这里的逻辑表达式,指的是以图形、文本的形式或者任何其他方式的形式,来阐释函数、操作或逻辑例程其他部分的一个或多个逻辑元素的任意表达式,而不管表示它的细节的方式或等级(例如,是否通过参考标记、标识符或变量,基础逻辑函数或操作等来表示)。在一个实施例中,如以下将要更详细阐释的,逻辑表达式可以是具有用文本阐释的逻辑元素的字符串。然而,更一般而言,逻辑元素的组合描述或定义逻辑例程。该描述或定义可以形成提供给逻辑转换例程的输入数据,并且它也可以在梯形的执行期间来使用。
图2的示范性例程由大量梯级34A-34D定义,如图所示,这些梯级通常从一个电力轨线30向另一个电力轨线32延伸,但是一个或多个梯级34B可以连接到另一梯级34A。每个梯级34A-34D均可以支持沿着该路径的一个或多个逻辑元素,并且在经由梯级(或线)的直接连接保持由此承载的信号的逻辑状态或逻辑值的意义上,可以将梯级认为是一逻辑元素本身。举例来说,梯级34A-34C直接连接到电力轨线30上,使得轨线30的逻辑状态或逻辑值,即“真”(或者等同地为“ON”或“1”)一直保持,直到沿着去往另一轨线32的路径分别遇到常开触点36A-36C为止。触点也可以是常闭的,如沿梯级34B的触点36D的情况。更一般而言,触点和其他逻辑元素有助于在操作(即逻辑例程的执行)期间定义各个梯级的状态。而各个梯级的状态进而又确定与另一逻辑元素,例如线圈相关联的值或状态。举例来说,梯级34A和34D同样也分别包括线圈38A和38D。对于线圈38A的情况,该逻辑例程可以将线圈38A的值或状态用作另一逻辑变量,以用在该例程的其他地方,例如用于触点36C的操作对象。相比之下,线圈38D的值可以反映或确定输出控制信号,举例来说,该输出控制信号可以确定是否给阀致动器通电。回过头来看图2的逻辑例程是如何使致动器受控制的,将假定的阀致动器通电(或启动)由定时器40设置的一段时间,只有在电力轨线30通过触点36C连接到定时器40之后,定时器40才发送值“真”或“1”给线圈38D。而只有当梯级34A和34B上的逻辑元素允许线圈38A被通电(例如,具有值“真”或“1”)时,才关闭触点36C以启动定时器40。
根据所公开的转换技术的一个实施例,将要转换的控制例程的梯形逻辑组织或解析为通常由42表示的大量单元(cell或unit)。例如,在图2的例程中,梯级34A具有五个单元42,其中最左边的单元包含触点36A。更一般而言,如图2的例程中的大量单元所示,每个单元42均可以包含任意逻辑元素(例如,线、触点或线圈)或根本不包含任何东西。在某些实施例中,每个单元42均可以根据一个或多个属性或参数来定义。举例来说,“形态”属性可以用于设置触点、线圈、线(即,通道)或特殊函数的存在,或者这些元素的不存在。“行”属性可以标识所述单元的行编号,而“列”属性可以标识列编号。如果单元42包含触点的话,那么“NC”属性可以设置该触点是常闭的(值为“真”)还是常开的(值为“假”)。触点单元也可以使用“IN”属性来标识所评估的变量,以确定该触点的状态。为了易于说明的目的,该变量或标识符号在这里指的是“标记名称(point name)”,并且倘若将几个截然不同的值装进,或排列为单独一个标记的话,那么该变量或标识符号常常包括比特数形式的标识符。这样,该标记名称可以标识系统10的存储器中的特定位置,且能够在该位置找到与该标记名称相关联的值。更一般而言,当用在这里时,术语“标记名称”可以指的是,在正进行转换的逻辑例程的执行期间或者在所公开逻辑转换例程的执行期间,所评估或创建的变量的名称、标识符或其他识别信息。如果单元42包含线圈,则“输出”变量可以标识该变量的标记名称(以及在某些情况的比特数),其中所述变量的值或状态可以由布置所述线圈的梯级来设置。“或”属性可以用于标识单元42何时包含到另一梯级的连接,使得值“真”意味着“或”函数的存在。其他属性可以用来便于特殊函数的定义,以下将结合一个实施例,在此对这种情况的一种示范性方法进行描述。
如对本领域技术人员而言众所周知的,梯形逻辑可以以文本、图形或其他方式来存储,但是在任何情况下,每个单元的属性数据均与存储方式相关联,以便完全地定义该逻辑。
将例程解析为单元42的解析过程,将所述例程组织成大量通常由44表示的列和通常由46表示的行。除了用列和行编号来定义每个单元42的位置之外,这些组织构造通常也由本领域技术人员用来建立用于该逻辑的有序序列。换句话说,将梯形解析为单元42的解析过程,是建立或定义该例程的执行次序的直接方式。如果不知道执行次序,该例程的执行将可能会不连贯,尤其是当诸如线圈38A的逻辑元素用于确定该例程内的其他逻辑元素——例如触点36C的状态时。在这些情况下,在执行过程中以不同的次序来进行该梯形,可能会改变基础例程执行的方式,并且在到布尔逻辑的转换过程中,会导致错误的转译。
倘若梯形已经被组织成单元,那么本领域技术人员所公知的解析例程能够用于将该梯形例程组织成不同的列、行和/或单元,并且该梯形的执行次序或其他惯例是已知的,或者可以简单地推测出来。然而,基础逻辑的解析并不必需产生由列和行定义的一组直线单元。举例来说,基础例程可以具有根据执行次序来定义的各单元或其他部分的序列。实际上,只要知道了、建立了或以另外的方式定义了执行次序(或者等同地,操作次序),那么该转换例程就能够顺序地处理该梯形的各个部分,以适当地生成准确的转译。
因此,尽管将例程解析为单元具有各种优点,但是所公开技术的实行并不限于具有规定单元的梯形逻辑系统。相反,所公开的技术可以应用于具有有序或规定的逻辑元素序列的任意梯形逻辑。这样,所公开的技术以逻辑元素的适当序列沿着该梯形前进,由此在过程中保持该逻辑的执行次序。
如以上关于图2的例程所进行的解释说明那样,执行次序或逻辑元素应当以该次序来扫描或评估的次序,对于例程的执行可能是非常关键的。不幸的是,不同的系统使用不同的梯形扫描惯例,致使自动转译变得更加复杂。然而,所公开的转换技术,并不限于任何一种扫描惯例。
一种扫描惯例建立水平执行次序,以便在移动到下一行之前——通常是直接在当前行下面的一行,评估一行中的所有逻辑元素,一般是从左向右来移动。当然,这样的水平扫描可以从梯形的任意单元开始,并且接下来或者从右向左,或者从底行向梯形顶部来继续进行。可替换地,该梯形可以具有这样的扫描惯例,其建立垂直的或列执行次序,其中在移动到相邻列之前,评估一列中的所有逻辑元素。典型地,可以从左向右,从顶到底来继续进行评估,但是也可以选择其他的起始点和评估方向。为了易于说明的目的,所公开转换技术的以下说明将假定为垂直执行次序,从最顶部,最左侧的单元开始。
另外一个梯形逻辑转换指向轨线30和32之间某些场合处的两个或更多梯形梯级的连接。这种连接用两个或更多的操作对象来创建“或”函数。在所公开转换技术的一个实施例中,将梯形解析为单元的解析过程,也可以识别将哪一个单元鉴定为具有该连接,或具有“或”函数。仅仅是为了易于说明的目的,在一个示范性实施例中,仅对于进行该连接的两个单元的底部,给上述的“或”属性分配一个“真”值。因此在图2所示的示范性实施例中,包含触点36D的单元42具有设置为等于“真”的“或”属性,而直接在其上方的单元42将具有设置为等于“假”的“或”属性,即使该梯形用图形示出在那里进行连接。然而,需要注意的是,该规则仅仅是关于两个或多个梯级连接的转换的情况,而所公开技术的实行并不限于各属性的设置方式。尽管该转换可能有助于尽可能高效率地进行所继续进行的逻辑的后继处理或执行(例如,通过知道何时开始某些步骤以处理“或”函数),在可选实施例中,举例来说,可以将触点36D和“或”函数布置在沿梯级36B的相邻(即,分离的)单元中,或者可以将“或”函数与包含触点36D的单元上方的单元42相关联。
在该过程控制情境下,这些惯例或规则可以由用于设计和/或执行该梯形逻辑的过程控制应用程序或系统(例如,配置软件)来建立。对于每个给定的过程控制系统或应用程序而言,该控制例程的基础梯形逻辑的转换,接下来可以以根据其梯形逻辑惯例的序列来继续进行。一般而言,该序列或者由所公开的逻辑转换例程评估基础梯形逻辑的次序,与该执行次序,即在执行期间评估基础逻辑的次序是相同的。因此,该逻辑转换例程以根据该执行次序的系统方式转译该基础逻辑,在运行中(on the fly)生成布尔逻辑输出,并且以保持该执行次序的方式存储该输出。“在运行中”生成指的是转换例程的输出方式是,当以系统的、逐个元素的方式来处理该控制例程时逐个门地,或逐个元素地生成,而不是在评估或处理了所有的基础逻辑之后才生成。尽管并非所遇到的每一个梯形逻辑元素都会引起分别生成输出中的相应布尔逻辑元素,但所公开的转换技术对遇到后继的梯形逻辑元素作出响应,并且作为其结果,生成其输出的各个元素或部分。然而,生成布尔逻辑元素或门的次序同样也可以用在布尔逻辑输出的执行期间要对它们进行评估的次序来表示。因此,这种进行转换的顺序方法产生一组有序的布尔逻辑元素,它们保持基础梯形逻辑的原始执行次序。
图3显示了由根据所公开转换技术一个实施例的转换例程所采取的步骤的略图。这些步骤,以及结合其他附图所描述的更详细的步骤,可以作为由一个或多个处理器执行的软件或其他例程的一部分来实施,这些处理器可以与过程控制系统10分离和远离,或者集成在过程控制系统10当中。最初,例程中的控制可以转到初步的线圈压缩框或步骤50,其中分析该梯形的每个梯级,以便一般地确定,第一,是否存在线圈,第二,是否可以移动该线圈以简化该梯级。尽管可能能够简化,但是所公开转换技术的实行并不限于实施线圈压缩的情况。实际上,线圈压缩的需要取决于建立梯形逻辑执行次序的规则和惯例是否指令线圈压缩。也就是说,如果梯形逻辑的执行要求线圈压缩,那么根据框50的线圈压缩就可以是恰当的。举例来说,这种情形可能出现在仅允许在很远的右侧列出现线圈,以及当执行次序是垂直的时候。在这些情况下,执行次序惯例可以设置为,在该梯级的第一断开位置(或单元)评估这些线圈。在其他情况下,不需要实施线圈压缩框50。
如以上所简要提及的那样,所公开的转换技术利用大量或一组逻辑表达式,每个表达式都专用于该梯形的每一行或每一梯级,以维持关于每个梯形梯级的、迄今为止所遇到的逻辑元素的数量。因此每个逻辑表达式都用作所遇到的逻辑的采集机制,如以下将要进行的更为详细描述的那样。在执行线圈压缩之后,控制可以转到框52以初始化这些逻辑表达式中的任意一个。举例来说,如果未创建这些表达式,或者先前未创建正确数目的表达式,那么框52可以生成关于初始化它们的逻辑表达式。在一个实施例中,框52包括数组EXP的生成,数组EXP具有恰当数目的元素,EXP0,EXP1,……,EXPI,其中脚注i指示与该逻辑表达式相关联的行或梯形梯级。
无论每个逻辑表达式被存储为数组元素,还是以大量其他方式中的任意一种来进行排列,框52通常都能够将这些逻辑表达式存储为包含由转译产生的信息或数据的字符串或文本串,例如,布尔算符、操作对象,以及门或其他函数。通常使用梯形逻辑元素的布尔表示形式来阐述这些信息。然而,在逻辑表达式并不是所公开转换技术的最终结果,而是中间步骤的范围内,这些逻辑表达式不需要严格地或者独自以形式布尔逻辑项(例如,C=A1AND B2)来呈现信息。因此,相对于形式上叙述布尔逻辑的方式,布尔表示形式可以用代表该方式特征的形式,而不必需以与之完全相同的形式,来列出布尔逻辑元素。然而,在一个实施例中,存储在EXP1中的信息采用叙述布尔函数的文本形式,该布尔函数是由特定梯级内的梯形逻辑元素建立的。作为例子,在分析第一行第一列中的常开触点之后,该字符串看起来好像是EXP0=A,其中A是触点变量。接下来该行(或其他行)的其他梯形逻辑的采集将会引起EXP串的修改,如以下将要在这里进行的解释说明的那样。一般而言,这些采集和修改包括更新相应的逻辑表达式,以便反映当前逻辑表达式与在该行或该梯形梯级中所顺序遇到的下一个梯形逻辑元素的表示形式的组合。
在该起始点,在框52中将每个EXP串初始化为值“真”,以便表示连接到梯级30的潜在可能性。然后,值“真”将与第一列的单元中出现的梯形逻辑进行组合,以确定应当如何修改EXPi串。
在生成和/或初始化EXP串之后,控制转到框54,使转换例程进行到要评估的第一列,在示范性实施例中,是该梯形最左边的一列中的单元42。接下来在框56中进行对该列中各单元进行多阶段评估和处理。多阶段是针对于可能在每个单元中出现的不同类型的梯形逻辑元素的。所述单元的这种多阶段评估和处理通常根据执行次序,从该列内逐个单元地顺序进行,即该梯形的最顶部梯级开始向下。然而在某些实施例中,在第二阶段评估和处理开始之前,列内的所有单元可以按照一个阶段进行评估和处理。可替换地,在进行到下一个单元之前,每个单元的所有评估和处理都可以进行。
通常,框56中执行的评估确定由单元中的梯形逻辑元素所影响的操作,从而该处理包括修改梯级或行的逻辑表达式,其中将单元布置为反映该操作。例如,如果将一个触点布置于正在评估的单元中,那么框56中执行的修改就会更新逻辑表达式,以反映该触点与在该逻辑表达式中已经采集的逻辑的组合结果。
当修改或更新逻辑表达式时,为了更新逻辑表达式,框56可以从EXPi中的信息解析布尔逻辑元素,以避免某些组合。更具体地,当组合会产生复合逻辑表达式中的混合或相异的逻辑函数(例如,与、或、非)时,从所述逻辑表达式中解析布尔逻辑元素。例如,以下的逻辑表达式是复合的,因为它具有多于一个的算符,并且包括两个不同的函数或算符:(A1 OR B2)AND B3。如同以下要进行的进一步解释说明,可能存在解析布尔逻辑元素的其他情形。在任何情况下,接下来将新的布尔逻辑元素存储在存储器中,在一个实施例中,包括将该元素存储在定义布尔逻辑元素的数据的一维向量内的下一个可用位置。另外,创建新的标识符以表示该布尔逻辑表示的输出。
继续前述例子,如果修改之前的逻辑表达式是EXPi=A1 OR B2,那么所存储的信息可以代表该布尔函数的特征,C=A1 OR B2。一旦解析这个新的布尔逻辑元素,框56就将它与正在评估的单元所引入的逻辑进行组合。更具体地,用一个新的布尔逻辑元素的标识符或符号,也就是“C”来代替逻辑表达式“A1 OR B2”。因为最后一个单元可能出现触点B3,所修改的EXPi串变为EXPi=C AND B3。以下将结合某些梯形逻辑元素,对该修改过程进行更为详细的描述,但是一般而言,它是一个迭代程序,(i)避免建立布尔逻辑的复杂串,举例来说,其具有包含混合或相异函数或算符的复合或嵌套排列中的一个或多个括弧中的表达式,同时(ii)根据执行次序,生成截然不同的布尔逻辑元素的有序序列。为此,截然不同的逻辑元素被存储为与生成它们的逻辑表达式无关的对象。
在图2的转换梯形逻辑的示范性情况下,框56执行的第一种情形可以包括遇到触点36A。因此EXP串的修改包括组合当前串(“真”)与常开触点。转换例程进行该特定组合,以便更新EXP串,EXP0,以叙述触点36A的标记名称。在这种情况下,没有解析出任何布尔逻辑元素,这是因为该逻辑表达式仍旧还只具有简单的操作对象,并因此仍然是简单的(或非复杂的)。
图3所示的剩余框通常针对于穿越该梯形的所有剩余项而导航该转换技术。因此,详细情况取决于要转换的惯例,但是在本实施例中,判定框58判断该转换例程是否出现在该梯形的最后一列,或最右边的列,而在这种情况下该例程结束。如果还没有碰见最后一列,则控制转到判定框60,使该转换例程继续进行到下一列的下一个顶行中的单元。
现在参照图4,更详细地示出了框50的线圈压缩例程。如上所述,可以先于梯形逻辑的执行(并因此限于任何的转译步骤)而实施线圈压缩。线圈压缩通常包括将梯形中的线圈平移到左边,如果可能的话。该例程从框62开始,最开始将当前行和列设置为第一(例如,顶端)行和最后(例如,最右边的)一列。判定框64判断与当前行和列相关联的单元是否具有线圈。如果没有线圈出现的话,那么控制转到判定框66,判断是否已经评估了最后一行或最后一个梯级,在这种情况下程序将会结束。然而,由于评估了第一行,因此控制转到框68,将当前行增加1,从而例程继续进行到下一行的最后一列。
倘若在当前行中出现了线圈,则框70判断该线圈是否可压缩。一般而言,框70不仅评估当前行中的,而且评估相邻行中的相邻元素,以执行该评估。举例来说,如果出现了连接相邻梯级的“或”函数(OR函数),则相邻梯级中的梯形逻辑可以是相关的。在该示范性实施例中,可压缩性是通过评估是否满足两个条件来确定的,即(i)是否出现了“通道”或“线”,而在当前行的前一列(即,向左的下一列)中的单元中没有OR函数,和(ii)当前行是否是梯形中的最后一行,或者下一行和前一列中的单元是否不具有OR函数。如果这两个条件都满足的话,那么当前线圈是可压缩的。
如果线圈是不可压缩的,控制返回到框66。如果线圈是可压缩的,控制转到框72,将当前单元中的线圈移动或平移到前一列。接下来框74将当前列减1,从而该例程能够继续进行,以便评估该线圈是否能够被进一步压缩。如果框76确定当前列现在是梯形中最左边的一列,则进一步的压缩是不可能的,控制返回到框66以查看是否出现了任何另外的行。如果当前单元不是第一列,则控制返回到框64,以判断在当前行内是否能够进行进一步的压缩。由于该线圈已经被平移到当前列,因此框64将把控制转到框70,以进行另一可压缩能力的评估。
在线圈压缩例程已经前进并穿越整个梯形之后,则该梯形准备好由转换例程的剩余项来进行处理。更一般而言,为了给转换作准备,该梯形可以进行任何方式的修改。修改可能由于梯形逻辑规则或执行惯例才成为必要的,例如执行次序,或者根据需要,为了任何其他的原因。
现在参照图5,逻辑转换例程包括大量处理阶段,这些阶段分别专注于评估,并接下来转换或处理一种或多种类型的梯形逻辑元素。每一阶段均可以通过分离的例程,例程部分或子例程来实施,和/或可以包括每个阶段所共有的调用程序或执行例程。通常,为正在转换的梯形的每一个单元或部分,执行处理的每个阶段。这样,该例程能够处理这种情况,即单元被定义为具有多于一个逻辑元素(例如,一个触点和一个OR函数)。在图5的示范性实施例中,逻辑转换例程建立三阶段的方法步骤,即每个单元被评估和处理三次,一次是梯级、触点和线圈,接下来是特定的函数块,再下来是OR函数。在可选实施例中,该方法可以以不同的组来处理各种梯形逻辑元素,这些不同的组导致产生了任意数目的不同阶段,包括将所有处理集成到单一阶段的例程中的情况。某些实施例也可能跳过一个或多个阶段,例如当该梯形逻辑元素横跨多于一个的单元时。
评估和处理的每一个阶段均可以通过一个或多个例程或子例程来实施,这些例程或子例程评估并处理所遇到的梯形逻辑元素。每个阶段的处理部分包括,在每个梯形梯级的相应逻辑表达式中采集该梯形逻辑元素的布尔表示形式。在一个实施例中,该采集进而又包括顺序地修改每个逻辑表达式,以表示该梯形每一梯级的评估的当前状态。这样,该逻辑转换例程以执行次序进行并穿越该梯形,顺序地更新正在处理的单元的行的相应逻辑表达式,以反映所遇到的逻辑元素。如上所述,框54(图3)设置当前列,从而评估和处理从最左端的一列开始。接下来,框77可以将当前行设置为第一行,以便在每一列内从顶到底来继续进行。
第一处理阶段包括框78,其评估当前单元的各梯级(即,“通道”或线)、触点和线圈。即使这些元素出现的逻辑保证不同的转换处理,但是在它们被完全置于一行或一个梯级之内的限度之内,这些梯形逻辑元素中的每个均为单一梯级元素,从而放置它们的单元并不出现与任何行或梯级的连接。当遇到触点时,框78通过修改当前梯级的逻辑表达式来采集该触点,以便通过该触点与该逻辑表达式的组合来反映该触点。在该实施例中,因为逻辑表达式以布尔形式表示该逻辑的文本串,因此该组合可以引起将文本添加到该串上,或者得到串内的一个或多个文本替代,其中如以下将要进行的详细描述,布尔门或元素可以替代它们所表示的逻辑函数。然而,一般而言,当EXPi串包含复杂对象时,例如“A1 AND A2”,该逻辑表达式的值可以被替代或解析。这些复杂对象与仅具有一个逻辑元素项的非复杂逻辑表达式,如当EXPi=真或EXPi=A1时大有不同。在一个实施例中,该串的解析包括,根据在表达式中列出的逻辑组来建立布尔门或元素。作为例子,该门可以用识别符号C来表示,而C可以设置为等于逻辑函数“A1 AND B2”。在这种情况下,接下来将作为评估结果来创建的新的识别符号,即布尔元素C插回到该表达式中,替换它现在所表示的表达式的那一部分,并由此能够实现新触点的采集,以及将新触点合并到逻辑表达式中。
从逻辑表达式中解析布尔元素可以包含或包括转换例程的任何动作,该转换例程从该逻辑表达式列出的信息来形成、确定或生成布尔元素。接下来,分配新布尔元素的识别符号,并将其用于列出修改后的逻辑表达式。换句话说,从解析出该布尔元素的位置,将布尔元素的表达形式,新的识别符号重新插入到逻辑表达式中。因此逻辑表达式得到更新和简化,而诸如“A1 ANDB2”的复杂元素已经用所解析的布尔元素的新识别符号,即定义为与先前复杂元素(即A1 AND B2)相等的非复杂元素(例如C)来代替。
在框78处理当前单元之后,框80判断是否到达了该列中的最后一行。如果没有,框82将当前行增加1,并将控制返回到框78,以进行当前列内下一个元素的采集和处理。一旦已经处理了一列内的所有单元,框80就将控制转到框84,将当前行重新设置为第一行,以准备进行下一个处理阶段。
处理的第二阶段在框86中实施,并且针对于为特殊函数块而评估当前元素。框86的采集和处理例程同样也可以引起布置当前元素的梯级的逻辑表达式的修改,而该修改进而又导致一个或多个布尔逻辑元素或门从当前单元的EXPi串解析出来。然而,于此采取的关于特殊函数的这些步骤,可以利用其他处理阶段所用的程序或例程。例如,多处理阶段可以调用相同的程序,以便从当前的EXPi串解析出布尔逻辑元素。以下将结合示范性的梯形逻辑转换,介绍关于特殊函数的处理的更多细节。
在对当前单元评估和处理特殊函数之后,一对框88和90执行与框80和82相同的回路,以便处理当前列内的每个元素。实际上,框88和90可以包含与框80和82相同的例程或子例程,并且仅仅是为了易于说明才分别进行显示。一旦完成了当前列的处理,框92就以类似于框84的方式,将当前行重新设置为第一行,以准备进行下一个处理阶段。
接下来,框94执行评估并顺序处理与当前元素相关联的OR函数的逻辑。处理OR函数的方式可能取决于梯形逻辑规则或支配OR函数的惯例。例如,当前单元可以用OR函数暗示,而无须使OR函数在形式上据称包含于该单元内。换句话说,在其中各单元具有各种属性的上述示范性梯形逻辑系统中,单元可以由OR函数来暗示,而无须将其OR函数属性设置为等于“真”。此外,这种情形仅仅是转换的一种情况。在这种情况下,OR函数可以布置于由该OR函数所结合的两个单元的下方。然而,不管梯形逻辑如何处理OR函数,根据所公开技术对OR函数的处理可导致与该OR函数相关联的,或由该OR函数连接的每个梯形梯级或每一行的逻辑表达式的修改。以下将结合图8的示范性实施例,阐释关于OR函数的处理的更多细节。
在框94已经为OR函数处理当前单元之后,框96和98形成一个回路,以支持当前列内每个单元的这种处理,并且为此,可以调用与框80和82相同的程序。然而,一旦到达该列内的最后一个单元,控制就转到框58(同样参见图3)以检查当前列是否是最后一列。如果不是,控制转到框60,以继续进行下一列中梯形逻辑元素的采集和处理。
现在参照图6,更为详细地示出了框78(图5)的评估和处理例程的一个实施例。如上所述,该例程贯注于单一梯级元素的处理,例如线圈、线和触点,并且可以为梯形逻辑例程的每个单元或连续单元来执行。该例程可以从框100开始,确定当前单元是否是空的,在这种情况下,在框101中将当前梯级的逻辑表达式,或EXPi设置为“假”。在这一点上,控制可以返回以执行该例程的剩余项,或者由于该单元为空而结束。
单一梯级元素例程可以在框102继续,判断当前单元是否出现通道或线,在这种情况下控制转到框103,保持当前的逻辑表达式,或EXPi值。在这一点上,单一梯级例程可以由于该单元不具有任何其他元素而结束。替换地,并且如图6所示,控制转到框104,判断当前单元是否出现触点,在这种情况下,进一步的框106确定该触点的类型。取决于该触点是常闭的还是常开的,单元属性NC(即,常闭)将分别为“真”或“假”。如果该触点是常开的,控制转到框107,判断EXPi串是否呈现为简单的(即,非复杂的)逻辑表达式。如果EXPi串是简单的,则由框108实施该触点的采集,其包含修改或更新该逻辑表达式,以便反映该触点引入的逻辑。逻辑表达式更新的方式取决于逻辑表达式在组合之前的内容,以及以下在表I中覆盖的各种可能性。
如果EXPi串是复杂的,则框109确定出现何种类型的算符或函数。如果该串包含一个或多个AND算符,则控制转到框108,在此该触点的采集将另一AND函数和触点变量的标识符添加为新的操作对象。如果该串包含一个或多个OR算符,则框110解析代表通过一个或多个OR算符表示的逻辑的新布尔元素,与该触点结合,将该新布尔元素的符号或其他标识符代入到该串中。该过程的一个例子将结合表I在以下示出。以这种方式,转换例程可避免不同布尔算符的混杂或混合,即在逻辑表达式中可出现多于一种类型的算符或函数的逻辑表达式的创建。然而,更一般而言,触点的采集和处理包括通过添加和/或替换文本来更新EXPi串,以便反映触点操作的影响。
以下在表I中阐释了用于更新逻辑表达式的在框107-119中执行的程序的一个例子。在表I中逻辑变量和布尔元素是用示范性标记名称来识别的。为了在所包含的不同标记名称中进行区分,标记名称X指的是由新近遇到的逻辑元素——触点引入的变量。当将新的布尔元素或门解析为组合结果时,则通过新的独特名称来标识新元素,在本例中是Y。同样,对逻辑表达式“A1 AND B2”的引用应当理解为是指具有一个或多个AND算符的任意串。类似地,对逻辑表达式“A2 OR B1”的引用应当理解为是指具有一个或多个OR算符的任意串。表I的“组合类型”列是由所遇到的梯形逻辑的特性来建立的,更确切地说,表示了用于触点X的组合的情境,即触点X是通过AND还是通过OR函数来组合的。基于OR函数而进行组合的方式将在下面进行进一步的描述。“解析”列表示新的布尔元素是否被解析为组合结果,导致新的独特的元素Y的代入。
表I
 先前的EXPi  组合类型  解析  得到的EXPi
  FALSE   AND   否   FALSE
  FALSE   OR   否   X
  TRUE   AND   否   X
  TRUE   OR   否   TRUE
  A1   AND   否   A1 AND X
  A1   OR   否   A1 OR X
  A1 AND B2   AND   否   A1 AND B2 AND X
  A1 AND B2   OR   是   Y OR X
  A1 OR B2   AND   是   Y AND X
  A1 OR B2   OR   否   A1 OR B2 OR X
表I示出了在包含简单EXPi串——即表中的前六个表目的情况下,不解析新的布尔元素或门。只有当以混合AND和OR算符的方式来组合复杂EXPi串时,才解析新布尔元素。另外,复杂EXPi串仍然可以是具有多个AND算符,或多个OR算符的串。
继续参照图6,如果框106确定所遇到的触点是常闭的(即,当前单元的NC属性被设置为“真”),则控制转到框114,在处理关于框107-110的上述逻辑表达式的组合程序之前,解析新的布尔元素,即“非”门(NOT门)。更具体地,框114创建“非”门的独特标记名称,根据所解析的布尔逻辑元素来定义它。举例来说,图2的触点36D可以与标记名称D1相关联,从而根据独特的标记名称,即MIG-DX-0000,以及布尔函数,即NOT(D1)来定义框114所解析的元素。当然,逻辑转换例程可以以不同的方式,或者根据实施该逻辑的过程控制配置软件,来表示或存储该布尔逻辑。例如,该逻辑可以按照以下方式来生成和/或存储:MAKE NOTIN,IN1=D1,OUT=MIG-DX-0000。示范性配置软件将该指令理解为叙述这样的事实,应当将“非”门定义为具有这样的输入值,该输入值被设置为等于存储器中与变量D1相关联的信息,并且具有与独特名称MIG-DX-0000相关联的输出。
框114解析新布尔元素,以避免逻辑表达式中相异的或混合的布尔函数的组合,在这种情况下,是“非(NOT)”和函数“与(AND)”和“或(OR)”之一的组合。
每当通过框110或114的执行来解析新布尔元素时,将按照信息或数据的创建次序,将表示或定义新布尔元素的信息或数据存储在存储器中。在一个实施例中,在转换例程所采取的下一步骤中记录该信息。可替换地,在更迟的时间但要以这样的方式来记录该信息,保存该布尔元素被解析的次序(相对于所解析的其他布尔元素)。举例来说,所解析布尔元素的记录可以发生在下一个布尔元素就要被创建的时候。无论如何,以解析布尔元素的次序来存储这些布尔元素,是保持梯形逻辑的执行次序的一种方法,这是基于所公开的逻辑转换技术顺序地处理梯形逻辑的方式。为此,在元素以一维序列或次序来存储的意义上,存储布尔元素的存储器可以是一维的,或者是一个向量。然而,应当注意的是,有关该布尔元素(例如,MAKE NOTIN,IN1=D1,OUT=MIG-DX-0000)的信息可以存储为多个部分(例如,类型TYPE,输入IN,输出OUT,等等),而不是存储为单一的集成指令。同样还需要注意的是,存储布尔元素的存储器可以是,但并不必需是过程控制系统10内的任意一个或多个存储器,例如存储器27中的一个,并且可以构成或者也可以不构成相同的存储器,在存储器中存储与该转换相关联的任何其他例程或信息。
一旦在向量或其他存储器中存储了每个新的布尔元素,单一梯级元素处理例程就可能结束(如图6所示),或者像没有遇到触点一样继续进行。当当前单元不包含触点时,控制转到判定框118,判断是否出现线圈。与线圈元素相关联的评估和处理通常包括,解析布置当前单元的梯级的逻辑表达式。该逻辑表达式可以是复杂的,并因此包括OR串或AND串,或者也可以是简单的(非复杂的),并因此出现一个单项布尔元素。在任一种情况下,线圈的出现都将致使布尔元素进行如图6所示的解析。同样还应当注意的是,在布尔元素的解析和存储过程中实施的处理,可以但并不必需包含相同的例程、例程部分、子例程或程序,与所遇到的梯形逻辑元素(即,触点、线圈等)无关。更一般而言,该处理阶段不需要构成截然不同且分离的例程,而是可以包含任意数目的共享程序、例程,等等。
继续参照图6所示的线圈元素处理,如果EXP串是简单的,那么判定框120将控制转到框122,将EXPi串中所标识的布尔元素的“或”门(OR门)解析为单独的输入。然而,在可选实施例中,能够接受逻辑参数作为输入,并能生成具有与该输入参数相同的值的输出逻辑参数的任何函数,均可以用来代替“或”门(OR门)。一些例子包括单输入“与”门(AND门),ASSIGN函数(其获得单一输入,并生成该单一输入的值作为不同变量下的输出),以及其他缓冲类型元素。如果EXPi串是复杂的,那么控制转到判定框124,判断在EXPi串是否出现了AND算符。如果该串是AND函数,则在框126中解析新的“与”门(AND门)。可以将EXPi串中所鉴别的变量或标记名称作为AND门的输入。另外,在框128中解析新的OR门,其中再一次将所述标记名称作为该门的输入。在这些情况中的任意一种情况下,在解析布尔元素之后,控制转到框130,将与该元素相关联的信息存储在向量或其他存储器中。
关于图6的示范性实施例而阐释的评估和处理步骤,可生成存储在存储器中的布尔逻辑门或元素的采集,作为根据该梯形逻辑执行次序的序列中各自的对象。这些对象是标准梯形逻辑元素和函数,例如线圈和触点的转译结果。然而,所公开的转换技术,同样也支持可以布置于该梯形中的非标准梯形逻辑元素或特殊函数的转换。在图7中示出了为了特殊函数的评估和处理所采取的步骤。与诸如线圈或触点之类的元素相比,特殊函数可以(但不是必需)驻存在梯形中多于一个的单元中。取决于该梯形逻辑的惯例和规则,特殊函数可以驻存或包括跨越不同梯级和/或不同列的大量单元。因此,当所公开的转换技术应用于具有由单元定义的连续次序的梯形逻辑时,则特殊函数的转译可以横跨多于一个的梯级或列。在这些情况下,该例程可以在相同的通过期间或者分别地处理与特殊函数相关联的(或横跨的)所有单元。在该示范性系统的特殊函数驻存在同一列的限度内,图7的示范性实施例有效地做到了这两者。一旦遇到了特殊函数的第一个单元,该例程就分别地处理该特殊函数的每个单元,基于逐个单元的方式进行并穿越该梯形,直到到达特殊函数内的最后一个单元为止。但是并不必需是这种情况,并且所公开转换技术的实行并不限于在此示出或描述的特殊函数的类型或形式。
在图2所示的例子中,特殊函数40横跨两个单元。每个单元通常都定义一个或多个参数,或者与一个或多个参数相关联。这些参数可以建立用于该特殊函数的输入或输出变量、存储变量的临时值,或者建立该特殊函数执行期间所用的定值。如同所示,该特殊函数的第一个单元具有输入参数IN1,和常数100,而该特殊函数的第二个单元具有输出参数OUT2。
该特殊函数的各个部分根据单元属性SHAPE来进行配置,该特殊函数的开头或开端具有SHAPE=TOP,并且该特殊函数的最后一个单元或末端具有SHAPE=BOT。因此,该特殊函数40的上部单元具有TOP形态,而下部单元具有BOT形态。特殊函数的开端和末端之间的单元可以具有另一种SHAPE值,例如MID。这样,当移动到下一个垂直相邻的单元时,尽管好像该单元是任何其他的单元一样进行了处理(例如,通过执行图6的历程),转换例程能够“记住”它仍然处于特殊函数的处理当中。
以下将结合图7的示范性实施例,更为详细地阐述特殊函数的评估和处理。图7所示的步骤假定已经检测到了特殊函数,根据需要,无论是通过检测到SHAPE属性等于TOP的单元,还是通过某些其他的机制。如果没有检测到特殊函数,那么逻辑转换例程将跳过图7所示的步骤,并继续进行到下一个评估和处理阶段。
与特殊函数相关联的单元可以具有只能与该特殊函数一起使用的大量属性。属性INUB和ONUB是“真(TURE)”还是“假(FALSE)”,分别取决于该单元具有输入,还是具有输出。NUMBER属性可以用于标识该特殊函数中的单元数量(例如,第一单元具有设置为等于1的NUMBER),该单元数量可以用于通过单元数量来鉴别特殊函数的参数。在图2的例子中,特殊函数40的第一号单元的输入与参数IN1相关联,而第二号单元的输出与参数OUT2相关联。ARG属性可以鉴别单元的参数类型,在此CONST,HREG,POINT_NAME,以及NONE分别可以表示恒定整数、保持寄存器、标记名称以及无参数。属性HREG可以识别保持寄存器的名称。类似地,属性POINT_NAME可以识别标记名称,而属性CONST可以包含值100。
一般而言,前述属性的值能够定义特殊函数的每个单元的一个或多个参数。在特殊函数的评估期间,所公开的转换技术根据该特殊函数的性质,通过顺序地处理每个单元的参数,来处理该特殊函数。这些参数的评估和处理提供从梯形逻辑配置结构到布尔逻辑结构的映射,或转译的基础。
图7示出了例程的特殊函数处理阶段所采取的步骤。一旦于正在评估的当前列中遇到了特殊函数,判定框140就通过分析INUB参数来判断当前单元是否具有输入。如果INUB是TRUE,则框142解析该逻辑表达式,倘若该EXP串是复杂的话。该解析步骤可以使用与上述关于线圈和触点的程序相同或类似的程序。在任一种情况下,布尔元素都可以基于EXPi串中列出的逻辑来建立,并且连同其他布尔元素一起存储在向量或其他存储器中。接下来,框142将输入参数设置为等于所得到的布尔元素。
最后,控制转到判定框144,通过分析ONUB参数来判断当前单元是否具有输出。如果ONUB是TURE,则为该输出创建独特的标记名称的框146,将该名称应用于所述单元的输出(将输出定义为等于该名称),并将该关联性存储在EXPi串中,代替该串中的任意先前文本。如果该单元不具有输出单元,则框148在EXPi串中存储FALSE。
接下来,控制转到框150,处理每个单元中任何其他(即,非输入、非输出)的特殊函数参数。其他参数可以定义特殊函数的某些方面。例如,如果特殊函数是计时器,则可以在该特殊函数的一个单元中定义的参数是常数,它设置计时器计数了多长时间。框150记录该时间常数,并保存它以便帮忙以布尔逻辑结构来定义该特殊函数。如以上所进行的解释说明,可以结合单元编号来保存该值。
接下来,控制转到判定框152,通过分析SHAPE属性来判断是否已经到达特殊函数中的最后一个单元。如果当前单元不具有BOT的SHAPE,则控制返回到框154,继续进行到特殊函数内的下一个垂直相邻的单元,并且控制返回到框140,以进行该特殊函数的处理的另一次迭代。如果当前单元具有BOT的SHAPE,则控制转到框156,将特殊函数转译为在布尔逻辑结构中使用的相应函数,其中例程被转换为所述的布尔逻辑结构。在某些情况下,该函数可以具有与梯形逻辑函数相同的名称、参数以及其他特性。在其他情况下,该函数可以具有不同特性,但是在两种情况下,框156都可以利用查阅表或其他映射信息来鉴别相应的特殊函数,并将特殊函数参数从梯形逻辑结构转换为恰当的目标结构。
在转译了特殊函数之后,框158将该特殊函数和任意参数定义存储在向量和其他存储器中,所述存储器列出了由所公开转换技术生成的每一个逻辑元素。接下来在继续进行到下一个阶段之前,可以进行对与新近所转译的特殊函数同一列内的单元的进一步处理,在例程的这个阶段,通常对各个单元进行评估以判断是否实施如图7所示的步骤。
在扫描了当前列中用于特殊函数的每个单元之后,控制转到最终的处理阶段,该阶段执行OR函数处理例程,在图8中示出了它的一个示范性实施例。OR函数处理例程通常组合由OR函数连接的各个单元的EXPi串,并接下来将所得到的组合应用于每个所连接单元的EXPi串。因此,与单元相关联的OR函数通常组合两个和更多相邻梯级的EXPi串的值。在一个实施例中,OR函数的出现出现在两个相连接单元中的下部单元处,从而该OR函数组合当前梯级和它上面的梯级的EXPi串。取决于基础控制例程的梯形逻辑惯例,可选的实施例可以这样设置,OR函数出现在上部的单元中,从而该函数组合当前梯级和它下面的梯级的串。
两个和更多的OR函数可以用于组合,在这种情况下可以组合三个和更多梯级的EXPi串。归因于这种可能性,OR评估和处理例程可以是递归程序,它处理一个和多个OR函数以进行每个必要的组合。在OR函数出现在两个相连接单元中的下部单元的上述实施例中,当正在评估的当前单元不具有OR函数时,可以启动递归程序的执行。尽管在该单元中不具有OR函数,由于它以下的单元可能具有OR函数,因此OR函数可能是相关的,由此连接两个相邻的梯级,并且蕴涵当前的单元。
OR函数处理例程通常使用临时参数来采集由该OR函数连接的每个梯形梯级的逻辑表达式。该采集可以包含所述逻辑元素的组合,并且这种组合是根据于此表I所公开的内容来进行的。举例来说,当两个逻辑表达式被组合为OR函数的结果时,组合类型是“OR”,并且可以咨询表I的第四列(例如,通过存储器中的查阅表来咨询),以便确定它们应当被组合的方式。
现在参照图8A所示的示范性实施例,OR函数处理例程可以从判定框160开始,判断当前单元是否是空的。空的单元没有布置于其中的输入、输出、线、触点或其他梯形逻辑元素,或者在它下面的单元中的OR函数(这是因为在某些梯形惯例中,OR函数创建连接两个单元的垂直线,该垂直线创建当前单元的输出)。如果该单元是空的,则OR处理例程可以结束,并且该转换例程向上移动到下一个单元,例如以结合图3和图5所示的实施例所进行描述的方式。
如果当前单元不是空的,则判定框162判断在该单元中是否出现了OR函数。如果出现了OR函数,则该例程也可以结束,这是因为通过以下将要描述的递归程序,已经对与该OR函数相关联的单元和梯级进行了处理。
如果当前单元不是空的,并且不包含OR函数,则框164初始化一个临时串参数TEMP,以准备执行递归程序。更具体地,该初始化将TEMP参数设置为等于在布置当前单元的梯级的EXPi串中列出的值。接下来在框166使用TEMP——即当前梯级的EXPi串,作为输入参数来调用递归程序。该递归程序的调用返回所生成的组合EXPi串,作为由OR函数建立的组合结果。因此,所返回的结果成为(即,被存储为)当前梯级的EXPi串。
图8B描绘了该递归程序。作为具有TEMP串的程序调用的结果,控制转到框168,判断当前单元是否是列中最后一个单元。倘若如此,由于未能出现OR函数,递归程序的执行基本上被绕过。同样,判定框170判断在当前单元下面的单元中是否存在OR函数。如果没有出现OR函数的话,那么该递归函数再一次基本上被绕过。
当OR函数出现在当前单元下面的单元中时,则在框172中执行由该OR函数连接的两个梯级,以及两个串EXPi和EXPi+1的组合。更确切地说,该组合包括TEMP参数和EXPi+1串。以下将结合图8C来阐释关于该组合的更多细节。
接下来,由于该程序为下一行调用它自身的缘故,框174设立图8B所示的程序的递归特性。换句话说,由于可能出现另外的OR函数,因此逻辑表达式的其他组合可能是必需的,以便连接多于两个的梯级。为了查看更多组合是否是必需的,以TEMP作为输入参数,来调用图8B的程序。结果,在由该递归程序的第一次执行所得到的TEMP中出现的组合,成为可以在框172中组合的串,该串带有EXPi+2串,如果梯级i+2实际上具有如框170确定的OR函数的话。
该递归继续进行,直到到达最后一行为止(参见框168),或者直到在当前单元下面的单元中遇到OR函数为止(参见框170)。在任一种情况下,控制都可以转到框176,从TEMP参数中解析布尔元素。
随着将TEMP参数写回到该程序调用的当前EXPi中(参见框178),该递归程序的执行的每一层均结束。通过这种方式,最终将TEMP参数值分配给这些串中的每一个。
现在将结合图8C,对框172实施以执行OR组合的处理步骤进行更为详细的描述。最初,判定框180判断TEMP参数是否被设置为FALSE,而在这种情况下,该OR函数所影响的组合可以简单地设置为等于EXPi+1串。为此,框182将TEMP参数设置为等于EXPi+1串。否则,控制转到判定框184,判断TEMP参数当前是否被设置为TRUE,在这种情况下由OR函数影响的组合维持该TEMP参数的值,并且例程终止。
否则,控制转到判定框186以判断是否需要解析EXPi+1串(即是否需要从该串解析出布尔元素)。如果EXPi+1串具有AND算符,则控制转到框188,解析该串,将新近创建的布尔元素存储在向量或其他存储器中,并将TEMP参数设置为新近创建的,来自所解析逻辑的输出。如果EXPi+1串不具有AND算符,则判定框190判断EXPi+1串当前是否被设置为FALSE,在这种情况下通过该串不修改TEMP参数,并且例程终止。可替换地,如果判定框192判断EXPi+1串当前被设置为TRUE,则控制转到框194,将TEMP参数设置为TRUE,作为OR组合的结果。
如果EXPi+1串不被设置为TRUE,则控制转到判定框196以判断TEMP参数是否具有AND算符,并因此需要被解析以准备OR组合。倘若如此,框198解析该TEMP参数,由此创建新的布尔元素,即代表向量或存储器中所存储内容的数据。在解析过TEMP参数之后,框200通过将TEMP设置为等于具有由OR算符分开的TEMP和EXPi+1的逻辑表达式,执行OR组合。
为了提供所公开的转换例程所采取的处理步骤的例子,现在将结合所公开转换技术的一个实施例,描述图2的示范性梯形逻辑的处理。首先处理该梯形逻辑以判断是否可以平移线圈。因此,框64发现线圈38A,而框70确定该线圈是可适当地、部分压缩的,这是因为在当前单元左边和下面的单元中没有出现OR函数。接下来框72将该线圈平移到左边的一个单元,而框74将当前列设置为从轨线32开始的第二列。框64再次发现线圈38A,但是这次框70发现了连接梯级34A和34B的OR函数(参见包含触点36D的单元)。线圈压缩例程如图4所示继续进行,并且仅引起另外一个平移,关于线圈38D所采取的动作。
在线圈压缩处理之后,转换例程开始以根据执行次序的顺序方式,逐个单元地处理该梯形,并因此从具有触点36A的单元和列开始。为了继续这个例子,以下的标记名称与图3所示的触点和线圈相关联:
表II
触点  标记名称
触点36A   A1
触点36B   B1
触点36C   C
线圈38A   C
触点36D   D
线圈38D   E
这些EXP串能够用从行0开始的行编号来识别,并且被初始化为TRUE值。转换例程从图6所示的例程开始采集和处理的三个阶段,而框104发现常开触点36A。随着将NC设置为等于FALSE,框108根据表I的组合规则,组合具有标记名称A1的EXP0,从而将EXP0设置为等于A1。当继续进行第一列中的剩余部分时,该转换例程接下来进行到下面的一个单元,在这里遇到了触点36B。该例程以类似于关于第一单元所采取的步骤的方式处理该单元,从而将EXP1设置为等于B1。当移动到第三梯级时,框102发现单元中的线,从而EXP2保留TRUE值。到最后,最后两个梯级是空的,从而通过框101的操作,将串EXP3和EXP4修改为FALSE值。
如图5所示,根据框86,第一列的处理接下来转到用于特殊函数的第二阶段。然后,图7的特殊函数阶段未能遇到特殊函数,而处理转到用于OR函数的第三阶段。由于在第一列中未出现OR函数,在对递归程序进行一次调用之后,OR处理例程完成每一个单元的处理,在这里框170并未在当前单元下面发现OR函数。
由于到达图3的框58和60,该例程继续进行到第二列,而处理的第一阶段再次从该列的顶部单元开始。在开头两个单元中遇到了线,保持前两个逻辑表达式的值不变(即,EXP0=A1和EXP1=B1)。在第三梯级遇到触点36C,从而通过框107和108的操作,将EXP2串设置为等于C。在该列的处理的第一阶段期间,没有对逻辑表达式作出进一步的修改。该列的第二和第三处理阶段的实施同样也未引起任何修改。
转换例程继续进行第三列,在遇到第二行中的常闭触点36D之前,处理的第一阶段保留第一梯级的逻辑表达式的值。到此时为止,已经进行了逻辑表达式的修改,但是并没有从这些逻辑表达式解析出布尔逻辑元素。所解析和记录的第一个布尔逻辑元素——“非”门(NOT门),由于触点36D的常闭特点才成为必要。特别地,框114解析或生成“非”门(NOT门),将它的定义作为布尔逻辑输出中的第一个对象,存储在向量或存储器的第一个位置中。”非”门(NOT门)可以通过信息的存储来定义,例如串“MAKENOTIN,IN1=D,OUT=MIG-DX-0001”。在解析出”非”门(NOT门)之后,框107和108的操作使得EXP2串进行修改,以反映触点36D的采集。特别地,EXP2串成为串“B1AND MIG-DX-0001”。在第三列中没有其他的触点或线圈,例程继续进行到第二处理阶段。
在第二阶段,例程接下来遇到特殊函数40,在这里框140(图7)确定第一个单元具有设置为TRUE的TOP和INUB属性,从而框142将EXP2串的值C应用于IN1函数参数。框150的特殊函数处理例程在第一单元中同样也遇到了常数100,由此将该参数CELL1设置为等于100。该常数代表计时器在启动之后仍然开着的时间期限。该例程最终通过框154进行到下一个特殊函数单元。作为输出单元,框146创建一个输出名称,例如MIG-DX-0002,并将该名称应用于EXP3串,从而该串现在被设置为等于MIG-DX-0002。同样也将该名称用于特殊函数参数OUT2。接下来,框150处理任何一个特殊函数参数。在不存在该特殊函数的其他参数的范围内,框152接下来确定已经处理了该特殊函数中的最后一个单元。然后,框156集中该特殊函数的输入,输出和其他参数信息,以便以布尔逻辑所用的结构将其转译为相应的特殊函数。一旦转译完成,则框158将这种结构的特殊函数的定义写入到向量或其他存储器的下一个可用位置。例如,具有100次计数的“开”持续时间的示范性计时器,能够在以下向量中定义:MAKETIMER_ON,CELL1=100,IN1=C,OUT2=MIG-DX-0002。在这种示范性情况下,在定义第一个布尔元素,即由于触点36D而产生的”非”门(NOT门)之后,记录前述信息。
接下来,例程进行到第三处理阶段,于此遇到了示范性梯形的第一个OR函数。第三列的第一个单元具有一条线,但是这条线具有到下面单元的OR函数的连接,这一点已被递归程序的框170(图8B)所揭示。接下来,根据图8C所示的处理步骤,特别是框200所采取的步骤,来组合TEMP参数值和EXP1串,所述TEMP参数值在框166中被设置为等于EXP0值。结果,两个串EXP0和EXP1具有相同的值。更具体地讲,递归程序被调用,从而将TEMP参数设置为等于A1,即EXP0串的值。框172(图8B)接下来组合TEMP的值与EXP1串的值。该组合根据结合图8C所描述的步骤而进行。由于EXP1串具有AND算符(即“B1AND MIG-DX-0001”),因此通过框188的操作来解析新的布尔元素。因而,现在将第三个布尔元素记录在下一个可用的向量位置,举例来说如下:MAKE AND8,IN1=B1,IN2=MIG-DX-0001,OUT=MIG-DX-0003。使用该新的独特的布尔元素,框200执行由OR算符引起的组合,从而接下来将TEMP参数设置为等于串“A1OR MIG-DX-0003”。框174使用TEMP的值,引发又一次对于第二行调用该递归程序。在该递归程序的第二次迭代中,框170在下一个单元(即当前列的第三行中的单元)中没有发现OR函数。结果,框176接下来从该TEMP参数中解析新的布尔元素,使得下一个可用的向量位置将包含以下内容:MAKE OR8,IN1=A1,IN2=MIG-DX-0003,OUT1=MIG-DX-0004。接下来将TEMP参数设置为等于MIG-DX-0004。框178将TEMP值存储在EXP1串中,以结束该递归程序的这次迭代,在这之后,控制返回到第一次迭代的点,在该点所述程序的第二次迭代被调用。特别地,控制转到框176,致使TEMP参数被解析(再次)。但是不产生另外的布尔逻辑,因为该TEMP参数是简单的(即非复杂的)。通过框178提供第三处理阶段期间所采取的最后操作,其包括修改EXP0串以反映该TEMP参数。结果,将EXP0串的值设置为等于MIG-DX-0004。
第四列包含作为线圈压缩结果的线圈38A和38D。因此,该转换例程接下来遇到线圈38A,且框128从EXP0串解析出OR函数,从而将以下内容存储为下一个所得到的布尔元素:MAKE OR8,IN1=MIG-DX-0004,OUT=C。此后,线圈38D被处理为MAKE OR8,IN1=MIG-DX-0002,OUT=E,并且该例程解析出它的最终布尔元素。
以下示出了该例程惯例的结果,在此执行的次序从第一(或顶部)MAKE命令开始,并且继续进行完所述命令的剩余部分,以生成所得到的布尔逻辑例程的各个部分。
MAKE NOTIN,IN1=D,OUT=MIG-DX-0001
MAKE TIMER_ON,CELL1=100,IN1=C,OUT2=MIG-DX-0002
MAKE AND8,IN1=B1,IN2=MIG-DX-0001,OUT=MIG-DX-0003
MAKE OR8,IN1=A1,IN2=MIG-DX-0002,OUT=MIG-DX-0004
MAKE OR8,IN1=MIG-DX-0004,OUT=C
MAKE OR8,IN1=MIG-DX-0002,OUT=E
所公开系统和方法的实施例可以以硬件或软件,或者两者的结合来实施。某些实施例可以作为在可编程系统上执行的计算机程序来实施,所述可编程系统包括至少一个处理器,一个数据存储系统(包括易失性和非易失性存储器和/或存储元件),至少一个输入设备,和至少一个输出设备。程序代码可以用于输入数据,以执行在此描述的功能并生成输出信息。该输出信息可以以公知的方式,应用于一个或多个输出设备。为了该应用的目的,处理系统包括具有处理器的任意系统,例如数字信号处理器(DSP、微控制器、特定用途集成电路(ASIC)或微处理器。
程序可以以高级程序语言或面向对象的编程语言来实施,以便与处理系统进行通信。程序也可以以汇编或机器语言来实施,如果需要的话。实际上,所公开系统和方法的实行并不限于任何特定的编程语言。无论如何,该语言是经过编译的或经过翻译的语言。
可以将程序作为一组或多组指令,无论是否是经过编译的,存储到通用或专门目的可编程处理系统可读的存储介质或设备上(例如软盘驱动器,只读存储器(ROM),CD-ROM设备,闪速存储设备,数字通用光盘(DVD),或其他存储设备),以便当该处理系统读取该存储介质或设备来执行于此描述的程序时,配置和操作该处理系统。所公开系统和方法的实施例也可以认为是作为机器可读存储介质来实施,为了由处理系统使用而配置,在此这样配置的存储介质使得处理系统以特定和预定的方式来运行,以执行于此描述的功能。
当以软件形式来实施时,于此描述的例程可以存储在任意的计算机可读存储器中,例如在磁盘、激光盘、光盘或其他存储介质上,在计算机或处理器的RAM或ROM中,等等。同样,该软件可以经由任何已知或所需的传送方法,传送给用户或过程控制系统,例如,在计算机可读磁盘上或者在其他可移动的计算机存储机制上,或者在通信信道上调制,例如电话线路,因特网等等(这些都被视作与经由可移动的存储介质来提供这种软件是相同的或可互换的)。
应当从中理解的是,上述说明仅仅是为了清楚的理解而给出,而非必要限制,因为本发明范围之内的修改,对于本领域技术人员而言是显而易见的。

Claims (36)

1.一种根据执行次序处理通过梯形逻辑元素表示的例程的方法,所述梯形逻辑元素布置于多个梯形梯级中,该方法包括以下步骤:
在多个梯形梯级中每个梯形梯级的相应逻辑表达式中采集梯形逻辑元素的布尔表示形式;
从所述逻辑表达式中解析布尔逻辑元素;和
根据所述执行次序将关于布尔逻辑元素的信息存储在存储器中,以便以布尔逻辑来表示该例程。
2.根据权利要求1的方法,其中如果相应的逻辑表达式之一中的布尔表示形式的进一步采集将导致相异的布尔逻辑函数的组合,则执行所述解析步骤。
3.根据权利要求1的方法,其中所述采集步骤包括以下步骤:评估每个梯形逻辑元素以确定由评估所引起的操作,以及更新所述相应逻辑表达式以反映该操作。
4.根据权利要求1的方法,其中所述存储步骤包括以下步骤:将布尔逻辑元素的定义作为从所述逻辑表达式中分离出的对象,写入到存储器中。
5.根据权利要求4的方法,其中所述对象被写入到存储器中与其他对象相关的位置,所述其他对象与保持该例程执行次序的其他布尔逻辑元素相关联。
6.根据权利要求5的方法,其中所述梯形逻辑元素被布置于每个梯形梯级内的柱状位置,并且其中所述执行次序以柱状方式来进行。
7.根据权利要求1的方法,还包括以下步骤:在评估被指定为第一梯形梯级中的另一梯形逻辑元素之前,进行到多个梯形梯级中的不同梯形梯级,以进行随后的梯形逻辑元素的评估。
8.根据权利要求1的方法,还包括以下步骤:在生成步骤之前,通过平移相应梯形梯级内线圈逻辑元素的位置,直到遇到另一梯形逻辑元素,来压缩具有该线圈逻辑元素的多个梯形梯级中的每个梯形梯级。
9.根据权利要求1的方法,还包括以下步骤:(i)识别具有遍布于多个梯形梯级的多重梯形梯级的单元的非布尔函数,和(ii)从连接到该非布尔函数的输入的多个梯形梯级的梯形梯级的相应逻辑表达式中解析出又一布尔逻辑元素。
10.根据权利要求9的方法,还包括以下步骤:根据所述执行次序,将代表所述非布尔函数的对象存储在存储器中。
11.根据权利要求1的方法,其中所述采集步骤包括以下步骤:组合通过一个或多个“或”函数链接的多个梯形梯级的相邻梯形梯级的两个或更多相应逻辑表达式,以便为所述两个或更多相应逻辑表达式中的每一个创建复合逻辑表达式。
12.根据权利要求11的方法,其中所述组合步骤包括执行递归程序的步骤。
13.根据权利要求1的方法,其中所述采集步骤包括以下步骤:将多个梯形梯级中每个梯形梯级的相应逻辑表达式初始化为值“真”。
14.根据权利要求1的方法,其中所述解析步骤是基于多个梯形梯级中线圈的各种情况来执行的。
15.根据权利要求1的方法,其中所述解析步骤包括以下步骤:基于多个梯形梯级中常闭触点的各种情况来解析反相器。
16.一种用于转换通过梯形逻辑元素表示的逻辑例程的系统,所述梯形逻辑元素布置于多个梯形梯级中,该系统包括:
处理器;
连接到该处理器的计算机可读存储器;和
存储于该计算机可读存储器中并且配置为可由该处理器执行的逻辑转换例程,所述逻辑转换例程包括:
梯形逻辑元素处理例程,其在多个梯形梯级中每个梯形梯级的相应逻辑表达式中采集所述梯形逻辑元素的布尔表示形式;并且当进一步采集在所述相应逻辑表达式中列出相异的布尔函数时,所述梯形逻辑元素处理例程从该相应逻辑表达式中解析布尔逻辑元素。
17.根据权利要求16的系统,所述逻辑转换例程还包括OR函数处理例程,当遇到OR函数时,该OR函数处理例程(i)组合由OR函数相连接的多个梯形梯级的相邻梯形梯级的相应逻辑表达式,以反映多个相应逻辑表达式的组合,并且(ii)修改所述多个相应逻辑表达式中的每一个,以反映该组合。
18.根据权利要求17的系统,其中所述OR函数处理例程执行循环程序。
19.根据权利要求18的系统,其中当所处理的梯形逻辑元素不包含OR函数时,执行所述递归程序。
20.根据权利要求16的系统,其中所述梯形逻辑元素处理例程包括线圈处理例程,当在多个梯形梯级的当前梯形梯级中遇到线圈时,该线圈处理例程将当前梯形梯级的逻辑表达式解析为又一布尔逻辑元素。
21.根据权利要求16的系统,其中所述逻辑转换例程还包括非布尔函数处理例程,其确定非布尔函数内的位置信息,所述非布尔函数具有遍布于多重梯形梯级上的单元。
22.根据权利要求21的系统,其中所述非布尔函数处理例程从多个梯形梯级中被确定为连接到非布尔函数的输入的每个梯形梯级的相应逻辑表达式中,解析出又一布尔逻辑元素。
23.根据权利要求16的系统,其中所述梯形逻辑元素处理例程将定义布尔逻辑元素的信息作为对象,存储在保持该逻辑例程的执行次序的向量中。
24.根据权利要求23的系统,其中在梯形逻辑元素处理例程进行到处理下一个梯形逻辑元素之前,存储定义被指定为第一布尔逻辑元素的信息。
25.根据权利要求16的系统,其中执行次序以柱状方式来进行,以便连续处理的梯形逻辑元素被布置于多个梯形梯级的不同梯形梯级中。
26.根据权利要求16的系统,其中所述逻辑转换例程还包括压缩例程,该压缩例程通过平移多个梯形梯级的一梯形梯级内的线圈逻辑元素的位置,直到遇到另一梯形逻辑元素,来压缩多个梯形梯级的每个梯形梯级。
27.一种存储在计算机可读介质上的计算机程序产品,用于转换通过布置于多个梯形梯级中的梯形逻辑元素表示的梯形逻辑例程,该计算机程序产品包括:
第一指令组,用于在多个梯形梯级中的每个梯形梯级的相应逻辑表达式中采集梯形逻辑元素的布尔表示形式;和
第二指令组,用于确定是否要从所述逻辑表达式中解析布尔逻辑元素;
第三指令组,用于根据解析布尔逻辑元素的次序,将所述布尔逻辑元素存储在存储器中。
28.根据权利要求27的计算机程序产品,其中当由第一指令组进行的所述逻辑表达式之一的布尔表示形式的进一步采集将导致相异的布尔逻辑函数的组合时,执行所述第二指令组。
29.根据权利要求27的计算机程序产品,其中所述第一指令组评估每个梯形逻辑元素以确定由评估所引起的操作,并更新所述相应逻辑表达式以反映该操作。
30.根据权利要求27的计算机程序产品,其中所述第三指令组将每个布尔逻辑元素的定义作为从其中解析出布尔逻辑元素的逻辑表达式中分离出的对象,写入到存储器中。
31.根据权利要求30的计算机程序产品,其中所述对象被存储的次序保持该梯形逻辑例程的执行次序。
32.根据权利要求31的计算机程序产品,其中所述梯形逻辑元素被布置于每个梯形梯级内的柱状位置,并且其中所述执行次序以柱状方式来进行。
33.根据权利要求27的计算机程序产品,还包括第四指令组,用于识别具有遍布于多个梯形梯级的多重梯形梯级的单元的非布尔函数,并从连接到该非布尔函数的输入的多个梯形梯级的梯形梯级的相应逻辑表达式中解析出又一布尔逻辑元素。
34.根据权利要求33的计算机程序产品,还包括第五指令组,用于将代表所述非布尔函数的对象存储到存储器中。
35.根据权利要求27的计算机程序产品,其中所述第一指令组,组合通过一个或多个“或”函数链接的多个梯形梯级的相邻梯形梯级的两个或更多相应逻辑表达式,以便为所述两个或更多相应逻辑表达式中的每一个创建复合逻辑表达式。
36.根据权利要求35的计算机程序产品,其中所述第一指令组包括递归程序。
CN200610000534.XA 2005-01-10 2006-01-09 将过程控制系统中梯形逻辑转换为布尔逻辑的方法和系统 Pending CN1811630A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/032,273 US20060155393A1 (en) 2005-01-10 2005-01-10 Method and system for converting ladder logic to boolean logic in a process control system
US11/032,273 2005-01-10

Publications (1)

Publication Number Publication Date
CN1811630A true CN1811630A (zh) 2006-08-02

Family

ID=35911590

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200610000534.XA Pending CN1811630A (zh) 2005-01-10 2006-01-09 将过程控制系统中梯形逻辑转换为布尔逻辑的方法和系统

Country Status (5)

Country Link
US (1) US20060155393A1 (zh)
CN (1) CN1811630A (zh)
CA (1) CA2532232A1 (zh)
DE (1) DE102006001101A1 (zh)
GB (1) GB2422033A (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105074722A (zh) * 2013-02-05 2015-11-18 哈克普鲁夫科技公司 特定于域的硬连线符号机器
CN108602193A (zh) * 2016-03-30 2018-09-28 松下知识产权经营株式会社 数据积蓄装置、机器人系统以及数据积蓄方法
US10303881B2 (en) 2013-02-05 2019-05-28 Hackproof Technologies Inc. Soft-wired radio (SWR) web machine
US10956572B2 (en) 2016-08-22 2021-03-23 Hackproof Technologies Inc. Domain-specific hardwired web browser machine
US11093616B2 (en) 2015-10-13 2021-08-17 Hackproof Technologies Inc. Soft-wired radio (SWR) web machine

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008101916A1 (de) * 2007-02-19 2008-08-28 Schneider Electric Automation Gmbh Verfahren zur umwandlung von kontaktplänen
US10762256B2 (en) * 2017-03-28 2020-09-01 Rockwell Automation Technologies, Inc. Hand-drawn ladder logic conversion method and system
JP7038554B2 (ja) * 2018-01-17 2022-03-18 三菱重工エンジニアリング株式会社 検証処理装置、ロジック生成装置及び検証処理方法
JP6795568B2 (ja) * 2018-11-07 2020-12-02 ファナック株式会社 トレース装置及びプログラマブルコントローラ

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5504902A (en) * 1993-12-01 1996-04-02 Patriot Sensors And Controls Corporation Multi-language generation of control program for an industrial controller
US5623401A (en) * 1995-08-16 1997-04-22 Allen-Bradley Company, Inc. Industrial controller with optimized execution of relay ladder logic programs
US5731712A (en) * 1995-11-09 1998-03-24 Welch; John T. Programmable gate array for relay ladder logic
US6192506B1 (en) * 1998-03-31 2001-02-20 Westinghouse Process Control, Inc. Controller for solving logic
US7024665B2 (en) * 2002-07-24 2006-04-04 Smar Research Corporation Control systems and methods for translating code from one format into another format

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105074722A (zh) * 2013-02-05 2015-11-18 哈克普鲁夫科技公司 特定于域的硬连线符号机器
CN105074722B (zh) * 2013-02-05 2018-01-26 哈克普鲁夫科技公司 特定于域的符号计算设备
US10242365B2 (en) 2013-02-05 2019-03-26 Hackproof Technologies Inc. Domain-specific hardwired eCommerce learning machine
US10303881B2 (en) 2013-02-05 2019-05-28 Hackproof Technologies Inc. Soft-wired radio (SWR) web machine
US11093616B2 (en) 2015-10-13 2021-08-17 Hackproof Technologies Inc. Soft-wired radio (SWR) web machine
CN108602193A (zh) * 2016-03-30 2018-09-28 松下知识产权经营株式会社 数据积蓄装置、机器人系统以及数据积蓄方法
CN108602193B (zh) * 2016-03-30 2021-03-26 松下知识产权经营株式会社 数据积蓄装置、机器人系统以及数据积蓄方法
US10956572B2 (en) 2016-08-22 2021-03-23 Hackproof Technologies Inc. Domain-specific hardwired web browser machine

Also Published As

Publication number Publication date
DE102006001101A1 (de) 2006-07-20
GB0600352D0 (en) 2006-02-15
US20060155393A1 (en) 2006-07-13
GB2422033A (en) 2006-07-12
CA2532232A1 (en) 2006-07-10

Similar Documents

Publication Publication Date Title
CN1811630A (zh) 将过程控制系统中梯形逻辑转换为布尔逻辑的方法和系统
CN1249577C (zh) 用于遗留软件与屏幕朗读器程序之间的互操作的方法和装置
CN106844190B (zh) 测试脚本自动生成方法及装置
CN1731747A (zh) 自动化测试框架系统及方法
CN1290901A (zh) 用于提供随机输入源生成的文本的替换方式的方法和系统
KR100967761B1 (ko) 프로그래머블 컨트롤러의 주변 장치, 치환 방법 및프로그램
CN112181416A (zh) 一种从视觉稿直接生成ui代码的方法及装置
CN1961288A (zh) 用于存取过程控制数据的方法和设备
US8365004B2 (en) Configuring of intelligent electronic device
CN1752934A (zh) 编译器、编译方法以及编译程序
CN113886362A (zh) 基于工作流引擎及低代码平台的数据存储系统及存储方法
CN112585547A (zh) 分析装置、分析方法以及分析程序
CN1900910A (zh) 二进制翻译中经由跳转表的多目标分支语句的识别方法
CN1759357A (zh) 数控系统
CN1026629C (zh) 由单一屏面定义文件生成多版屏面
CN107678749A (zh) 基于结构化语言编程的转码方法及装置
CN1703671A (zh) 用于编程智能模块的向导
CN1744092A (zh) 一种自动调度逻辑仿真与代码覆盖率分析的方法与系统
CN1818898A (zh) 电子文档数据处理编辑器及电子文档数据编辑控制的方法
KR102293274B1 (ko) 테스트 환경 구축 방법 및 장치
JP2009265918A (ja) 制御プログラム作成装置
CN1908893A (zh) 程序逻辑结构图示方法及程序路径统计方法
CN1588256A (zh) 将梯形图程序转换为指令列表程序的方法及系统
CN1601970A (zh) 基于人机交互语言的通用命令行输入装置及其方法
CN106610898B (zh) 一种基于JPF的Java代码SSA单路径的生成方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Open date: 20060802