程序分析支援装置.pdf

上传人:54 文档编号:1002372 上传时间:2018-03-24 格式:PDF 页数:112 大小:4.57MB
返回 下载 相关 举报
摘要
申请专利号:

CN200980156859.9

申请日:

2009.08.11

公开号:

CN102317877A

公开日:

2012.01.11

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G05B 19/05申请日:20090811|||公开

IPC分类号:

G05B19/05; G06F9/44

主分类号:

G05B19/05

申请人:

三菱电机株式会社

发明人:

仲井勘; 古田裕久; 石原鉴; 佐藤公昭; 坪井隆; 金子晃

地址:

日本东京

优先权:

2009.02.18 JP 2009-034895

专利代理机构:

中国国际贸易促进委员会专利商标事务所 11038

代理人:

许海兰

PDF下载: PDF下载
内容摘要

提供一种能够自由组合程序分析条件的能够实现所期望的程序分析的程序分析支援装置。并且,分析条件设定部(10)以具有固有的式编号的条件式(分析指令、分析对象、分析条件)的形式,输入程序分析条件。POU一览抽取处理执行部(14)执行用于读入程序的分析指令,生成构成程序的分析对象的POU的集合,变量使用一览抽取处理执行部(12)执行用于抽取变量的对照索引的分析指令,抽取针对分析对象的POU集合的变量的对照索引。两个部(14、12)进一步抽取针对其它POU集合的变量的对照索引。而且AND处理部(17)进行两个变量的对照索引的逻辑积的处理,将其结果输出到分析结果显示部(20)。

权利要求书

1: 一种程序分析支援装置, 其特征在于, 具备 : 分析条件设定部 (10), 关于由 n 个程序模块构成的程序, 输入并保持由用户指定的所 述程序的程序分析条件, 其中, n 为 2 以上的整数 ; 分析条件执行部 (11), 根据所述程序分析条件, 执行所述程序的分析处理 ; 以及 分析结果显示部 (20), 制作并输出用于对由所述分析条件执行部处理得到的分析结果 进行显示的显示数据, 其中, 所述分析条件执行部具备 : POU 一览抽取处理执行部 (14), 输出第一信号, 其中, 该第一信号提供所述 n 个程序模 块内的 m 个程序模块的集合, 2≤m≤n; 以及 变量使用一览抽取处理执行部 (12), 将所述 POU 一览抽取处理执行部所输出的所述 m 个程序模块的集合作为分析对象范围, 抽取第二信号, 其中, 该第二信号提供所述 m 个程序 模块的各自中记载的各变量的对照索引。
2: 根据权利要求 1 所述的程序分析支援装置, 其特征在于, 所述 POU 一览抽取处理执行部输出第三信号, 其中, 该第三信号提供在所述第二信号 所提供的所述各变量的对照索引内存在的 k 个程序模块的集合, 2 ≤ k < m。
3: 根据权利要求 2 所述的程序分析支援装置, 其特征在于, 所述 m 个与所述 n 个相等。
4: 一种程序分析支援装置, 其特征在于, 具备 : 分析条件设定部 (10), 关于由程序模块构成的程序, 输入并保持由用户指定的所述程 序的程序分析条件 ; 分析条件执行部 (11), 根据所述程序分析条件, 执行所述程序的分析处理 ; 以及 分析结果显示部 (20), 制作并输出用于对由所述分析条件执行部处理得到的分析结果 进行显示的显示数据, 其中, 所述分析条件执行部具备变量依赖关系抽取处理执行部 (13), 该变量依赖关系抽取处 理执行部输出如下信号, 其中, 该信号提供所述程序模块中记载的各变量的依赖关系有向 图。
5: 根据权利要求 4 所述的程序分析支援装置, 其特征在于, 所述分析条件执行部还具备 POU 一览抽取处理执行部 (14), 该 POU 一览抽取处理执行 部输出用于提供所述程序模块的集合的信号, 所述变量依赖关系抽取处理执行部将所述程序模块的集合作为分析对象范围, 输出用 于提供所述各变量的依赖关系有向图的所述信号。
6: 根据权利要求 5 所述的程序分析支援装置, 其特征在于, 所述 POU 一览抽取处理执行部抽取用于提供所述各变量的依赖关系有向图中存在的 程序模块的集合的信号。
7: 根据权利要求 6 所述的程序分析支援装置, 其特征在于, 所述 POU 一览抽取处理执行部所输出的所述程序模块的集合是构成所述程序的所有 程序模块的集合。
8: 根据权利要求 4 所述的程序分析支援装置, 其特征在于, 所述分析条件执行部还具备变量使用一览抽取处理执行部 (12), 该变量使用一览抽取 2 处理执行部抽取用于提供所述各变量的依赖关系有向图中存在的各变量的对照索引的信 号。
9: 一种程序分析支援装置, 其特征在于, 具备 : 分析条件设定部 (10), 关于由多个程序模块构成的程序, 输入并保持由用户指定的所 述程序的程序分析条件 ; 分析条件执行部 (11), 根据所述程序分析条件, 执行所述程序的分析处理 ; 以及 分析结果显示部 (20), 制作并输出用于对由所述分析条件执行部处理得到的分析结果 进行显示的显示数据, 其中, 所述分析条件执行部具备 POU 依赖关系抽取处理执行部 (15), 该 POU 依赖关系抽取处 理执行部抽取用于将所述多个程序模块的调用的关系作为依赖关系有向图而提供的信号。
10: 根据权利要求 9 所述的程序分析支援装置, 其特征在于, 所述分析条件执行部还具备 POU 一览抽取处理执行部 (14), 该 POU 一览抽取处理执行 部输出用于提供所述多个程序模块的集合的信号, 所述 POU 依赖关系抽取处理执行部将所述多个程序模块的集合作为分析对象范围, 抽 取用于提供与所述多个程序模块的调用有关的所述依赖关系有向图的信号。
11: 根据权利要求 10 所述的程序分析支援装置, 其特征在于, 所述 POU 一览抽取处理执行部输出用于提供所述 POU 依赖关系抽取处理执行部所输出 的与所述多个程序模块的调用有关的所述依赖关系有向图中存在的程序模块的集合的信 号。
12: 根据权利要求 9 所述的程序分析支援装置, 其特征在于, 所述分析条件执行部还具备变量使用一览抽取处理执行部 (12), 该变量使用一览抽取 处理执行部抽取用于提供所述 POU 依赖关系抽取处理执行部所输出的与所述多个程序模 块的调用有关的所述依赖关系有向图中存在的程序模块中所存在的各变量的对照索引的 信号。
13: 根据权利要求 9 所述的程序分析支援装置, 其特征在于, 所述分析条件执行部还具备变量依赖关系抽取处理执行部 (13), 该变量依赖关系抽取 处理执行部将与所述多个程序模块的调用有关的所述依赖关系有向图中存在的程序模块 的集合作为分析对象范围, 输出用于提供记载在该程序模块中的各变量的依赖关系有向图 的信号。
14: 根据权利要求 1、 4、 9 中的任一项所述的程序分析支援装置, 其特征在于, 在使所述分析条件执行部还具备新的程序分析功能处理执行部时, 所述新的程序分析 功能处理执行部被定义为是否将所述新的程序分析功能处理执行部的输出结果以及所述 分析条件执行部已经具备的程序分析功能处理执行部分的输出结果作为分析对象范围来 执行分析处理。
15: 根据权利要求 1、 4、 9 中的任一项所述的程序分析支援装置, 其特征在于, 在使所述分析条件执行部还具备新的程序分析功能处理执行部时, 所述分析条件执行 部已经具备的程序分析功能处理执行部分被定义为是否将所述新的程序分析功能处理执 行部的输出结果作为分析对象来执行分析处理。
16: 根据权利要求 1、 4、 9 中的任一项所述的程序分析支援装置, 其特征在于, 3 所述分析条件执行部还具备分析结果逻辑运算处理执行部 (16), 该分析结果逻辑运算 处理执行部处理通过所述分析条件执行部所具备的程序分析功能进行处理得到的分析结 果彼此的逻辑运算。
17: 根据权利要求 16 所述的程序分析支援装置, 其特征在于, 所述分析结果逻辑运算处理执行部在被指定为逻辑运算的对象的、 通过所述分析条件 执行部所具备的程序分析功能进行处理得到的分析结果的一方的种类与另一方的种类不 同的情况下, 将所述分析结果的一方作为分析对象而通过所述分析条件执行部所具备的程 序分析功能进一步进行分析处理, 由此使所述分析结果的一方的种类与所述分析结果的另 一方的所述种类相同, 之后进行所述逻辑运算的处理。
18: 根据权利要求 16 所述的程序分析支援装置, 其特征在于, 在使所述分析条件执行部还具备新的程序分析功能处理执行部时, 所述新的程序分析 功能处理执行部的输出结果被定义为所述分析结果逻辑运算处理执行部要处理的所述逻 辑运算的对象。
19: 根据权利要求 1、 4、 9 中的任一项所述的程序分析支援装置, 其特征在于, 所述分析条件设定部以具有固有的式编号的条件式的形式, 输入所述程序分析条件。
20: 根据权利要求 1、 4、 9 中的任一项所述的程序分析支援装置, 其特征在于, 所述分析条件设定部将所输入的所述程序分析条件变换为具有固有的式编号的条件 式的形式而执行输入处理。
21: 根据权利要求 19 或 20 所述的程序分析支援装置, 其特征在于, 所述分析结果显示部针对所述条件式的每个分析结果, 利用与该分析结果的种类对应 的种类用显示部来显示该分析结果。

说明书


程序分析支援装置

    技术领域 本发明涉及一种程序分析支援装置。具体地说, 本发明涉及关于在可编程控制器 ( 以下称为 “PC” )、 运动控制器 ( 以下称为 “MC” )、 数值控制装置控制器 ( 以下称为 “NC” )、 检查装置控制器或显示器 ( 以下称为 “GOT” ) 等各种产业用的控制器、 或者微型计算机中 执行的测量控制程序, 用于提高为了开发新的测量控制程序而对过去的测量控制程序进行 分析的作业、 或者开发或调试测量控制程序时对该程序进行编辑 / 变更的作业的效率的装 置。
     背景技术
     以往, 为了进行生产设备的测量控制, 使用以可编程控制器 ( 以下称为 “PC” )为 代表的产业用的控制器。作为在产业用的控制器中执行的测量控制程序, 列举以梯形程序 (ladder program) 为代表例的依照 IEC61131-3 标准的语言或控制器专用语言。另外, 作 为使用微型计算机来代替产业用的控制器的情况下的测量控制程序, 列举 C 语言或汇编程 序。下面, 以 PC 为例子进行记载。
     PC 执行作为测量控制程序的梯形程序, 从而掌握测量控制对象的状态, 或者向测 量控制对象指示动作。在梯形程序的制作中使用规定的测量控制程序制作支援装置 ( 梯形 图制作支援装置 )。测量控制程序制作支援装置一般作为在个人计算机上动作的软件工具 而被提供, 具有对作为在 PC 测量或控制测量控制对象时使用的程序的梯形图的编辑进行 支援的功能。除此之外, 测量控制程序制作支援装置还具有如下功能 : 将个人计算机与 PC 进行连接, 向 PC 传输已编辑的梯形图, 或者对测量控制对象的状态或者由于梯形图的执行 而变化的变量 ( 以下称为 “器件 (device)” ) 的值的状态进行监视。此外, 测量控制程序制 作支援装置所提供的程序编辑功能和监视功能还搭载在显示器 ( 以下称为 “GOT” ) 上, 从始 终与 PC 处于连接状态的 GOT 上也能够进行测量控制程序的编辑或者器件的值的状态的监 视。
     在生产设备的规模非常小的情况下, 测量控制程序具有一个梯形程序就足够了, 但是一般用于对生产设备进行测量控制的程序由多个程序模块 ( 以下称为 “POU” 。POU : Program Oraganization Unit( 程序组织单元 )) 构成。 如果测量控制程序的程序语言为梯 形图, 则 POU 相当于子程序或者 FB(Function Block : 功能块 ), 如果是 ST(StructuredText : 结构化文本 ) 或 C 语言, 则 POU 相当于子程序或者函数。
     在这种情况下, 存在在不同的 POU 间共同被测量和控制的大量的器件。因而, 在与 程序的变更和修正相伴的影响范围的分析或者故障动作的原因的分析等中, 需要知道某一 器件在哪个 POU 的哪个位置被使用 ( 在哪个位置被读入 / 在哪个位置被写出 )。并且, 为了 提高该作业的效率, 需要迅速地确定程序中 (POU 中 ) 的器件的使用场所。因此, 作为进行 该确定的程序分析支援装置, 已知对照索引 (cross-reference) 制作装置。对照索引制作 装置是如下装置 : 读入多个 POU 作为分析对象, 制作某一器件在哪个 POU 的哪个位置被使用 的一览表, 或者制作在某一 POU 中使用的所有器件的一览表。此外, 还存在这种对照索引的制作作为测量控制程序制作支援装置的一个功能而被实现的情况。
     在此, 在非专利文献 1 的使用说明书中, 公开了两种现有技术。下面, 记载这些现 有技术。
     首先, 在第一现有技术中, 对照索引功能作为测量控制程序制作支援装置的一个 功能而被实现, 当从测量控制程序制作支援装置的菜单中选择对照索引功能时, 在画面上 显示作为对照索引画面的对话框, 其中, 所述对照索引功能是制作某一器件在哪个 POU 的 哪个位置被使用的一览表的功能。首先, 操作员在上述对话框的器件栏中输入器件。接着, 操作员在上述对话框的检索范围栏中指定检索范围。 此时, 作为检索范围, 操作员既可以指 定所有的 POU 作为检索范围, 或者也可以仅指定特定的 POU 作为检索范围。之后, 当操作员 点击显示在上述对话框中的执行按钮时, 使用该器件的 POU 及其位置被一览显示在上述对 话框上。 在上述对话框上的程序名的栏中显示 POU 的名称, 在时序步骤的栏中显示在该 POU 中使用该器件的步骤编号。 而且, 在上述对话框上的命令的栏中, 显示使用该器件的步骤的 命令的种类。例如在梯形图中描述了程序 (POU) 的情况下, 在命令的栏中显示接点或者线 圈等。
     接着, 在第二现有技术中, 在画面上制作出某一 POU 中使用的器件的一览表 ( 器件 使用列表 )。该一览表制作功能在第二现有技术中作为测量控制程序制作支援装置的一个 功能而被实现, 当操作员从测量控制程序制作支援装置的菜单中选择打印功能时, 用于表 示器件使用列表的对话框被显示在画面上。首先, 操作员选择程序。即, 操作员在该对话框 所显示的程序选择栏中输入应选择的 POU 的名称。接着, 操作员指定显示在该对话框中的 打印条件。 此时, 在仅将程序中使用的器件作为一览表而打印的情况下, 操作员在该栏中输 入核对的指示。如果没有输入核对的指示, 则所有的器件被打印为一览表。之后, 当操作员 点击显示在该对话框中的打印按钮时, 在该 POU 中使用的器件的一览表被打印。在程序名 的栏中打印出所选择的 POU 的名称, 在其下方依次打印出在该 POU 中使用的器件。在有无 使用的栏中打印出使用该器件的命令的种类。如果在梯形图中描述了程序, 则打印出接点 或线圈等。此外, 该器件在该 POU 中既被用作接点也被用作线圈的情况下, 打印出接点和线 圈这两者。
     专利文献
     专利文献 1 : 日本特开 2006-294011 号公报
     专利文献 2 : 日本特开 2006-294013 号公报
     非专利文献
     非专利文献 1 : GX Developer Version 8 オペレ一テイングマニユアル ( 操作系 统手册 ) 三菱电机株式会社 2008 年 12 月
     非专利文献 2 : “プログラムスライシング技術と応用 ( 程序切片技术和应用 )” 下村隆夫著共立出版 ISBN4-320-02743-4 发明内容
     如上所述, 非专利文献 1 所记载的第一或第二现有技术只能仅根据预先搭载在程 序制作支援装置或程序分析支援装置中的已说明的功能, 来制作表示某一器件在哪个 POU 的哪个位置被使用的对照索引或者器件使用列表。因此, 作为问题的一例, 上述第一和第二现有技术关于在某一特定的 POU 中被使 用且在其它特定的 POU 中也被使用的器件, 无法制作这些 POU 中的参照位置的一览。其结 果, 存在如下问题 : 在操作员自身逐一地实施了通过目视来确认在某一特定的 POU 中被使 用的器件的一览表 ( 器件使用列表 ) 和在其它特定的 POU 中也被使用的器件的一览表 ( 器 件使用列表 ) 的作业之后, 操作员只能制作通过其人工作业所抽取出的器件的对照索引, 在程序的变更或者故障动作的分析等中, 对成为编辑对象的场所进行确定时花费时间。
     另外, 作为其它问题的一例, 上述第一和第二现有技术无法制作某一器件在特定 的 POU 以及从该 POU 作为子程序而被调用的 POU 中的对照索引。因此, 操作员只能逐一地 实施如下作业, 其结果, 产生在程序的变更或者故障动作的分析等中对成为编辑对象的场 所进行确定时花费时间这样的问题, 其中所述作业为 : 首先抽取从上述特定的 POU 作为子 程序而被调用的 POU 的一览, 并针对所抽取出的各 POU 分别制作其器件的对照索引之后, 将 其结果进行合并。
     因此, 用于解决前者的问题的在先技术公开在专利文献 1 和 2 以及非专利文献 2 的各文献中。
     然而, 专利文献 1 和 2 所提出的在先技术只不过是将制作在某一特定的 POU 中被 使用且在其它特定的 POU 中也被使用的器件的一览的功能 ( 将该功能假设称为 “程序间重 复使用状况列表” ) 预先搭载在程序制作支援装置或者程序分析支援装置中。既有利用已 有的对照索引功能的处理来实现程序间重复使用状况列表功能的处理的情况, 或者也有与 已有的对照索引功能的处理独立地实现程序间重复使用状况列表功能的处理的情况。总 之, 上述在先技术只能执行这样搭载的功能的条件指定范围内的程序间重复使用状况列表 的制作。 因此, 上述在先技术具有如下问题 : 无法同时实现自由组合条件的对照索引的制 作以及自由组合条件的程序分析结果的抽取。
     在此, 作为能够通过自由组合检索条件来制作所期望的一览表的现有技术的例 子, 有作为在先专利文献检索用的程序之一的 PATOLIS( 注册商标 )。 在利用该 PATOLIS( 注 册商标 ) 的专利文献的检索中, 操作员通过专利分类来缩小检索范围, 或者根据摘要、 权利 要求书等区域中是否包含特定的关键字来缩小检索范围。 这种情况下的成为检索对象的对 象总体是在先专利文献的全体。另外, 其命中结果的一览是在先专利文献的一览。因而, 在 操作员针对命中结果想要进一步用其它条件缩小检索范围的情况下, 操作员首先利用其它 条件对在先专利文献的全体进行检索, 通过使计算机执行作为该命中结果的在先专利文献 的一览与之前的命中结果的 AND 处理, 由此能够进一步缩小在先专利文献的范围。
     与此相对, 测量控制程序的分析结果根据分析条件而不同。 例如在某一特定的 POU 中被使用的器件的一览中, 其结果是器件的一览, 但是在从特定的 POU 作为子程序而被调 用的 POU 的一览中, 其结果是 POU 的一览。因而, 对于这些不同结果的一览, 无法立即实现 基于结果彼此的 AND 处理的缩小。
     另外, 在专利文献 1、 2 以及非专利文献 1 的各自中提出的现有技术中的程序分析 中, 成为其分析对象的对象总体是程序, 但是测量控制程序的分析结果根据分析条件而不 同, 因此在实施其它分析条件的情况下, 成为其分析对象的对象总体不仅需要是程序, 而且 还需要是分析结果。 即, 根据上述现有技术的组合, 无法容易地实现能够自由组合程序分析
     条件的程序分析支援装置。
     本发明是鉴于上述技术状况而完成的, 其主要目的在于实现能够自由组合分析条 件的程序分析支援装置。
     本发明的主题所涉及的程序分析支援装置的特征在于, 具备 : 分析条件设定部, 关 于由 n(n 为 2 以上的整数 ) 个程序模块构成的程序, 输入并保持由用户指定的所述程序的 程序分析条件 ; 分析条件执行部, 根据所述程序分析条件, 执行所述程序的分析处理 ; 以及 分析结果显示部, 制作并输出用于对由所述分析条件执行部处理得到的分析结果进行显示 的显示数据, 其中, 所述分析条件执行部具备 : POU 一览抽取处理执行部, 输出第一信号, 其 中, 该第一信号提供所述 n 个程序模块内的 m(2 ≤ m ≤ n) 个程序模块的集合 ; 以及变量使 用一览抽取处理执行部, 将所述 POU 一览抽取处理执行部所输出的所述 m 个程序模块的集 合作为分析对象范围, 抽取第二信号, 其中, 该第二信号提供所述 m 个程序模块的各自中记 载的各变量的对照索引。
     根据本发明的主题, 能够进行将程序分析条件自由组合的程序分析, 能够根据该 分析结果迅速地确定成为编辑对象的场所, 因此用户能够提高用于对在程序的变更或其故 障动作的分析等中成为编辑对象的场所进行确定的作业的效率, 缩短作业所需的时间。
     下面, 根据附图详细说明本发明的各种具体示例及其效果、 优点。 通过以下的详细 说明和附图, 本发明的目的、 特征、 方面以及优点将变得清楚。附图说明
     图 1 是表示本发明所涉及的程序分析支援装置的硬件结构的框图。
     图 2 是表示实施方式 1 所涉及的程序分析支援装置的软件结构的功能框图。
     图 3 是表示 MAIN 梯形电路的图。
     图 4 是表示 MAIN 梯形 IL 的图。
     图 5 是表示 SUB 梯形电路的图。
     图 6 是表示 SUB 梯形 IL 的图。
     图 7 是表示程序分析支援画面的图。
     图 8 是表示程序分析支援画面的图。
     图 9 是表示 POU_READ 处理流程的流程图。
     图 10 是表示 VAR_REF 处理流程的流程图。
     图 11 是表示 VAR_REF 结果画面的图。
     图 12 是表示 VAR_REF 结果画面的图。
     图 13 是表示 VAR_REF 结果画面的图。
     图 14 是表示 AND 处理流程的流程图。
     图 15 是表示 AND 处理流程的流程图。
     图 16 是表示 AND 结果 VAR_REF 画面的图。
     图 17 是表示 OR 处理流程的流程图。
     图 18 是表示 OR 处理流程的流程图。
     图 19 是表示 OR 结果 VAR_REF 画面的图。
     图 20 是表示 NOT 处理流程的流程图。图 21 是表示 NOT 处理流程的流程图。 图 22 是表示 NOT 结果 VAR_REF 画面的图。 图 23 是表示实施方式 2 所涉及的程序分析支援装置的软件结构的功能框图。 图 24 是表示梯形结构的图。 图 25 是用于说明 Instruction/Operator/Operand 的图。 图 26 是表示器件依赖关系的一例的图。 图 27 是表示器件依赖关系的一例的图。 图 28 是表示器件依赖关系的一例的图。 图 29 是表示程序分析支援画面的图。 图 30 是表示 VAR_FWD 处理流程的流程图。 图 31 是表示 VAR_FWD 结果有向图的图。 图 32 是表示 VAR_FWD 结果有向图的图。 图 33 是表示 VAR_BWD 处理流程的流程图。 图 34 是表示 VAR_BWD 结果有向图的图。 图 35 是表示 OR 处理流程的流程图。 图 36 是表示 OR 结果 VAR 有向图的图。 图 37 是表示 AND 处理流程的流程图。 图 38 是表示 AND 结果 VAR 有向图的图。 图 39 是表示 VAR_REF 处理流程的流程图。 图 40 是表示 VAR_REF 结果画面的图。 图 41 是表示 VAR_REF 结果画面的图。 图 42 是表示实施方式 7 所涉及的程序分析支援装置的软件结构的功能框图。 图 43 是表示构成程序的所有 POU 的图。 图 44 是表示程序分析支援画面的图。 图 45 是表示 POU_FWD 处理流程的流程图。 图 46 是表示 POU_FWD 结果有向图的图。 图 47 是表示 POU_FWD 结果有向图的图。 图 48 是表示 POU_BWD 处理流程的流程图。 图 49 是表示 POU_BWD 结果有向图的图。 图 50 是表示 OR 处理流程的流程图。 图 51 是表示 OR 结果 POU 有向图的图。 图 52 是表示 AND 处理流程的流程图。 图 53 是表示 AND 结果 POU 有向图的图。 图 54 是表示程序分析支援画面的图。 图 55 是表示 POU_READ 处理流程的流程图。 图 56 是表示 VAR_REF 处理流程的流程图。 图 57 是表示 VAR_FWD 处理流程的流程图。 图 58 是表示 POU_READ 处理流程的流程图。 图 59 是表示 POU_READ 处理流程的流程图。图 60 是表示 AND 处理流程的流程图。
     图 61 是表示 AND 结果 VAR_REF 画面的图。
     图 62 是表示梯形程序静态切片画面的图。
     图 63 是表示实施方式 13 所涉及的程序分析支援装置的软件结构的功能框图。
     图 64 是表示梯形程序静态切片处理流程的流程图。
     图 65 是表示在定义新指令时需要定义的处理流程的图。
     图 66 是表示与 VAR_REF 指令定义对应的处理流程的图。
     图 67 是表示与 VAR_FWD 指令定义对应的处理流程的图。
     图 68 是表示与 POU_READ 指令定义对应的处理流程的图。
     图 69 是表示与 POU_FWD 指令定义对应的处理流程的图。
     图 70 是表示与 AND 指令定义对应的处理流程的图。
     图 71 是表示分析指令与其分析结果数据的关系的图。
     附图标记说明
     1: 程序分析支援装置 ; 2: 微处理器 ; 3: 数据保存存储器 ; 4: 显示部 ; 5: 输入部 ; 6: 保存部 ; 10 : 分析条件设定部 ; 11 : 分析条件执行部 ; 12 : 变量使用一览抽取处理执行部 ; 13 : 变量依赖关系抽取处理执行部 ; 14 : POU 一览抽取处理执行部 ; 15 : POU 依赖关系抽取处 理执行部 ; 16 : 分析结果逻辑运算处理执行部 ; 17 : AND 处理执行部 ; 18 : OR 处理执行部 ; 19 : NOT 处理执行部 ; 20 : 分析结果显示部 ; 21 : 变量使用一览显示部 ; 22 : 变量依赖关系显示 部; 23 : POU 一览显示部 ; 24 : POU 依赖关系显示部 ; 294 : 梯形静态切片条件设定部。 具体实施方式 ( 实施方式 1)。
     图 1 是表示后述的各实施方式中共用的本发明所涉及的程序分析支援装置的硬 件结构的框图。在图 1 中, 程序分析支援装置 1 具备 : (1) 微处理器 2, 执行程序分析支援装 置 1 的各功能 ; (2) 用于临时保存数据的数据保存存储器 3, 例如由 DRAM 构成 ; (3) 显示部 4, 由液晶显示器等显示器装置构成 ; (4) 输入部 5, 由鼠标和 / 或键盘等输入装置构成 ; 以 及 (5) 由硬盘等存储装置构成的保存部 6, 将分析对象的测量控制程序以及用于实现程序 分析支援装置的各功能的程序分析支援用程序等程序或分析结果等数据分别作为文件而 进行存储和保持。并且, 各部分 2 ~ 6 通过系统总线 SB 而相互连接。
     在本分析支援装置 1 中进行针对测量控制程序的程序分析 ( 对照索引的制作 ) 的 情况下, 用户通过操作输入部 5, 输入程序分析条件, 并且从保持在保存部 6 中的多个测量 控制程序中指定应指定的测量控制程序。伴随该输入操作, 程序分析条件和测量控制程序 的指定内容被保持到微处理器 2 内的寄存器 ( 未图示 ) 中。 在此基础上, 微处理器 2 访问保 存部 6, 从保存部 6 读出由用户指定的测量控制程序, 并按照由用户输入的程序分析条件, 执行该测量控制程序的分析处理。并且, 微处理器 2 将该分析处理结果临时保存到数据保 存存储器 3 中, 并且将该结果显示在显示部 4 的画面上, 或者作为一个文件而存储到保存部 6 内。
     此外, 用于执行程序分析支援装置 1 的各功能或各处理的分析支援用程序本身作 为能够在个人计算机上动作的软件工具而被提供。在该情况下, 程序分析支援装置 1 由上
     述个人计算机构成。或者, 还存在上述分析支援用程序被搭载在 GOT 上的情况, 在这种情况 下, 上述 GOT 构成程序分析支援装置 1。
     图 2 是表示由程序分析支援装置 1 中的微处理器 2 执行的分析处理中的各功能部 的功能框图 ( 相当于软件框图 )。如图 2 所示, 程序分析支援装置 1 或微处理器 2 主要具备 分析条件设定部 10、 分析条件执行部 11 以及分析结果显示部 20。
     在它们之中, 分析条件执行部 11 具有用于进行程序分析处理的各功能部。即, 在 本实施方式中, 进行变量 ( 器件 ) 的对照索引的抽取, 因此分析条件执行部 11 具备 : POU 一 览抽取处理执行部 14, 用于读入成为对照索引抽取的对象的程序 ; 变量使用一览抽取处理 执行部 12, 是执行对照索引抽取处理的部分。
     另外, 分析结果显示部 20 具备变量使用一览显示部 21, 该变量使用一览显示部 21 制作具有用于将对照索引结果显示在图 1 的显示部 4 的画面上的形式的显示数据。
     而且, 分析条件执行部 11 具备分析结果逻辑运算处理执行部 16。并且, 分析结果 逻辑运算处理执行部 16 作为利用程序分析处理的各功能来进行分析结果彼此的逻辑运算 的部分, 而具备 AND 处理执行部 17、 OR 处理执行部 18 以及 NOT 处理执行部 19。
     用户通过图 1 的输入部 5 而对分析条件设定部 10 输入程序分析条件。响应于该 输入, 分析条件执行部 11 执行与用户所输入的程序分析条件相应的分析处理。例如, 分析 条件执行部 11 进行从图 1 的保存部 6 读出用户所指定的测量控制程序 ( 相当于分析对象 程序文件 8) 或者与分析对象程序相关联的器件注释文件 9, 或者制作对照索引, 或者处理 分析结果彼此的逻辑运算 (AND/OR/NOT)。 之后, 分析结果显示部 20 进行用于在图 1 的显示 部 4 的画面上进行与分析结果相应的显示的数据制作等动作, 或者将分析结果的数据作为 分析结果文件 25 而输出到外部。例如, 分析结果显示部 20 接收由分析条件执行部 11 制作 的对照索引结果, 制作用于将所接收到的该对照索引结果显示在显示部 4 的画面上的显示 数据, 并将该显示数据输出到显示部 4, 从而对用户显示所接收到的对照索引结果, 或者将 所接收到的对照索引结果作为对照索引结果文件而输出到外部。
     下面, 记载将作为 PC 的测量控制程序的梯形程序设为程序分析的对象的一例。在 此, 图 3 是构成 PC 的测量控制程序的 POU 之一, 其名称是 MAIN 梯形电路。图 3 是梯形电路 图表现, 在将其表现为文本形式 ( 例如 IL 形式。IL : Instruction List( 指示表 )) 时, 图 3 被表现为如图 4 那样。而且, 图 5 是构成 PC 的测量控制程序的另一 POU, 其名称是 SUB 梯 形电路。图 5 被表现为梯形电路图, 在将其以文本形式表现时, 图 5 被表现为如图 6 所示那 样。
     图 7 及图 8 是表示为了让用户使用图 1 的输入部 5 将程序分析条件输入到本装置 1 的微处理器 2 而显示在显示部 4 上的画面的一例的图。这种程序分析支援画面通过图 2 的分析条件设定部 10 的功能动作而显示在显示部 4 的画面上, 该部件 10 原样地保持由用 户通过上述程序分析支援画面所输入的程序分析条件。
     在图 7 所示的程序分析支援画面的情况下, 各行由式编号单元、 分析指令单元、 分 析对象单元、 分析条件单元以及结果件数单元构成。用户观察图 7 的画面, 将与分析指令相 应的分析对象以及分析条件分别输入到对应的单元中。即, 用户在分析对象单元中主要指 定成为分析指令进行分析处理的对象的对象总体。并且, 用户在分析条件单元中主要指定 分析指令进行分析处理的条件。此外, 如图 8 所示的一例那样, 也可以代替由如图 7 那样的与输入数据种类对应的 各单元构成用于用户输入程序分析条件的画面结构, 而设定为由用户输入程序分析条件的 整个式的结构。
     用户在完成在图 7 或图 8 的画面所示出的分析条件单元中输入分析条件的处理之 后, 进行在画面的式编号的栏之前附加· 记号的输入处理, 来指定想要执行的式编号, 之后, 进行将显示在画面的左上侧的执行按钮进行按下 ( 点击 ) 的动作。当进行该点击处理 ( 输 入处理 ) 时, 图 2 的分析条件设定部 10 对分析条件执行部 11 进行指示以使从成为执行对 象的编号小的式编号起依次进行分析条件式的处理, 分析条件执行部 11 响应于该指示, 按 各式编号的顺序执行分析处理。在图 7 的画面结构例中, 从式编号 S001 至式编号 S010 分 别被输入程序分析条件 ( 分析指令、 分析对象以及分析条件 ), 各个式编号通过·记号的显 示而被指定为执行对象, 因此当用户按下 ( 点击 ) 执行按钮时, 之后, 从式编号 S001 依次到 式编号 S010 为止, 图 2 的分析条件执行部 11 根据所输入的程序分析条件来执行分析处理。
     分析处理的结果从分析条件执行部 11 返回到分析条件设定部 10。 其结果, 分析条 件设定部 10 将分析处理的结果件数显示在图 1 的显示部 4 所显示的程序分析支援画面上 的结果件数单元中。并且, 当用户点击显示在结果件数单元右侧的按钮 BT 时, 与此相应地, 分析结果显示部 20 将分析处理的结果显示在图 1 的显示部 1 的画面上。 < 分析指令的处理内容 (A) ~ (E)>
     接着, 记载构成程序分析条件之一的分析指令的处理内容。
     (A) 首先, 图 7 所示的分析指令 POU_READ 是用于指定或用于读入成为分析对象的 程序 (POU) 的指令, 用户在分析对象单元内指定在之后的处理中根据式编号所指定的应作 为分析对象的程序名 (POU 名 )。在图 7 中示出了通过以式编号 S001 所表示的指令的执行 来指定读入程序名为 MAIN 的 POU 的例子, 作为其分析结果, 输出以程序 MAIN 为元素的 POU 的集合 (collection)。 “集合” 是表示数据元素的集合的软件技术用语。 “POU 的集合” 是指 以程序 (POU) 为元素的集合。此外, 在分析对象单元中没有指定应作为分析对象的 POU 名 时, 以构成程序的所有 POU 为元素的集合作为分析结果而被输出。在此, 在图 9 的流程图中 示出图 2 的 POU 一览抽取处理执行部 14 执行分析指令 POU_READ 时的处理的流程。如图 9 所示, 涉及分析指令 POU_READ 的处理的技术, 与以往的在制作对照索引时指定程序作为检 索范围的技术相同。
     (B) 接着, 图 7 所示的分析指令 VAR_REF 是抽取变量 ( 器件 ) 的对照索引的指令, 由图 2 的变量使用一览抽取处理执行部 12 执行。因此, 用户在分析对象单元中指定用于对 成为分析指令 VAR_REF 的分析对象的程序进行指定的式编号, 并且在分析条件单元中指定 成为对照索引抽取的条件的变量 ( 器件 )。图 7 的式编号 S002 表示指定抽取程序 MAIN 中 的所有的器件 M 所相关的对照索引的例子, 其中, 该程序 MAIN 是通过以式编号 S001 所提供 的分析指令 POU_READ 的执行而从保存部 6 读入到微处理器 2 内的 POU, 图 2 的变量使用一 览抽取处理执行部 12 输出以在程序 MAIN 中使用变量 ( 器件 )M 的位置为元素的集合而作 为其分析结果。
     在此, 在图 10 的流程图中示出由图 2 的变量使用一览抽取处理执行部 12 执行的 分析指令 VAR_REF 的处理的流程。 在涉及分析指令 VAR_REF 的处理的技术中, 分析指令 VAR_ REF 的被指定到分析对象单元中的 POU 集合的元素为 1 的情况下的处理 ( 步骤 S40 : S41 ~
     S43) 是成为分析指令 VAR_REF 的基础的处理, 与以往的对照索引制作的技术相同。也就是 说, 由式编号 S002 所提供的分析指令 VAR_REF 的执行是能够利用以往的对照索引制作的技 术来进行处理的。
     另外, 变量使用一览抽取处理执行部 12 将式编号 S002 的分析处理的结果集合作 为 VAR_REF 结果显示画面而显示在图 1 的显示部 4 的画面上。 图 11 中示出根据该结果集合 而显示的 VAR_REF 结果显示画面的例子。如图 11 所示, 在 MAIN 梯形程序中, 使用变量 ( 器 件 )M 的位置存在 6 处 ( 器件 M1、 M3 ~ M6), 显示它们的对照索引结果。器件 M3 除了在步 骤编号 5 中作为 SET( 设置 ) 命令的操作数而被使用以外, 在步骤编号 6 中还作为接点的操 作数而被使用, 分别是对照索引结果的元素。此外, 对分析指令 VAR_REF 的处理结果进行显 示的技术也与以往的对照索引制作的技术相同。
     另外, 在图 12 中一并示出在相关联的器件注释文件中记载有变量 ( 器件 )M 的注 释的情况下的 VAR_REF 结果显示画面例。
     同样地, 图 7 的式编号 S003 表示指定读入作为 POU 的程序 SUB 的例子, 接着执行 的式编号 S004 表示指定抽取通过式编号 S003 的分析指令的执行而读入的程序 SUB 中的所 有变量 ( 器件 )M 所相关的对照索引的例子。在此, 图 13 中示出式编号 S004 的 VAR_REF 结 果显示画面例。
     (C) 接着, 图 7 所示的分析指令 AND 是用于抽取作为处理结果所抽取的数据集合的 逻辑积 (logical product) 的指令, 由图 2 的 AND 处理执行部 17 执行。因此, 用户在分析 对象 ( 第一自变量 ) 单元和分析条件 ( 第二自变量 ) 单元中分别指定成为逻辑积的对象的 两个式编号。图 7 的式编号 S005 表示指定抽取在式编号 S002 中所抽取的对照索引结果与 在式编号 S004 中所抽取的对照索引结果的逻辑积的例子。即, 式编号 S005 表示指定抽取 在程序 MAIN 中被使用且在程序 SUB 中也被使用的所有变量 ( 器件 )M 所相关的对照索引的 例子。
     在图 14 和图 15 的流程图中示出 AND 处理执行部 17 所执行的分析指令 AND 的处 理的流程。图 14 所示的 POU 集合彼此的 AND 处理是单纯的逻辑积的处理, 但是如果将对照 索引 ( 指定器件的使用位置 ) 的集合彼此的 AND 处理也单纯地设为逻辑积, 则在任何情况 下结果都为空。这是因为, 在程序 MAIN 中使用变量 ( 器件 )M4 的位置与在程序 SUB 中使用 变量 ( 器件 )M4 的位置互不相同而只是变量 ( 器件 ) 相同, 因此两个使用位置不视为相同。
     本发明在本实施方式中的特征点在于该对照索引 ( 指定器件的使用位置 ) 的集合 彼此的 AND 处理 ( 参照图 15)。即, 其特征点在于将变量 ( 器件 ) 相同的情形作为逻辑积 的运算基准。例如, 在程序 MAIN 中使用变量 ( 器件 )M4 的位置 ( 参照图 11) 与在程序 SUB 中使用变量 ( 器件 ) 的位置 ( 参照图 13) 中变量 ( 器件 ) 都相同, 由此作为逻辑积的结果 而被保留。并且, 进一步的特征点在于将各个元素作为结果而保留。例如, 在程序 MAIN 中 使用变量 ( 器件 )M4 的位置与在程序 SUB 中使用变量 ( 器件 ) 的位置中变量 ( 器件 ) 都相 同, 因此这两者作为结果集合的元素而被保留。通过这样由 AND 处理执行部 17 进行处理, 图 7 的式编号 S005 的结果成为如图 16 所示。
     (D) 接着, 图 7 所示的分析指令 OR 是用于抽取作为处理结果所抽取的不同数据的 集合之间的逻辑和 (logical sum) 的指令, 由图 2 的 OR 处理执行部 18 执行。因此, 用户在 分析对象 ( 第一自变量 ) 单元以及分析条件 ( 第二自变量 ) 单元中分别指定成为逻辑和对象的两个式编号。图 7 的式编号 S006 表示指定抽取由式编号 S002 所抽取出的对照索引结 果与由式编号 S004 所抽取出的另一对照索引结果的逻辑和的例子。 即, 式编号 S006 表示指 定抽取与在程序 MAIN 或程序 SUB 中使用的所有的变量 ( 器件 )M 有关的对照索引的例子。
     关于 OR 指令的处理, POU 的集合彼此的 OR 处理是单纯的逻辑和处理, 对照索引 ( 指定器件的使用位置 ) 的集合彼此的 OR 处理也是单纯的逻辑和处理。图 2 的 OR 处理执 行部 18 所执行的分析指令 OR 的处理流程成为如图 17 和图 18 所示。通过这样进行处理, 图 7 的式编号 S006 的处理结果成为如图 19 所示。
     (E) 接着, 图 7 所示的分析指令 NOT 是用于抽取从作为处理结果所抽取出的某一数 据集合的元素中排除另一数据集合的元素而得到的数据集合的指令, 由图 2 的 NOT 处理执 行部 19 执行。因此, 用户在分析对象单元中指定成为对象总体的式编号, 在分析条件单元 中指定成为从该对象总体排除的元素的集合的式编号。图 7 的式编号 S007 表示指定抽取 从在式编号 S002 中抽取出的对照索引结果中排除了在式编号 S004 中抽取出的对照索引结 果之后的对照索引的例子。即, 式编号 S007 表示指定在程序 MAIN 中使用的所有变量 ( 器 件 )M 之中抽取与在程序 SUB 中不使用的变量 ( 器件 )M 有关的对照索引的例子。
     图 20 和图 21 分别示出 NOT 处理执行部 19 所执行的分析指令 NOT 的处理流程。 POU 的集合彼此的 NOT 处理 ( 参照图 20) 是单纯的排除处理, 但是如果将对照索引 ( 指定器 件的使用位置 ) 的集合彼此的 NOT 处理也单纯地设为排除处理, 则在任何情况下都成为什 么都没有排除的结果。这是因为, 在程序 MAIN 中使用变量 ( 器件 )M4 的位置与在程序 SUB 中使用变量 ( 器件 )M4 的位置互不相同而仅仅是变量 ( 器件 ) 相同, 因此这些位置不能视 为相同。
     本发明的本实施方式的特征点在于该对照索引 ( 指定器件的使用位置 ) 的集合彼 此的 NOT 处理 ( 参照图 21)。即, 本实施方式的特征点在于将变量 ( 器件 ) 相同的情形作为 排除处理的运算基准。例如, 在程序 MAIN 中使用变量 ( 器件 )M4 的位置与在程序 SUB 中使 用变量 ( 器件 )M4 的位置由于变量 ( 器件 ) 相同, 因此作为排除处理的对象而从集合被排 除。通过这样由 NOT 处理执行部 19 进行 NOT 处理, 图 7 的式编号 S007 的结果成为如图 22 所示。
     在图 7 的式编号 S008 中, 第一自变量和第二自变量都是 POU 集合, 其 OR 处理的结 果是以程序 MAIN 和程序 SUB 为元素的 POU 集合。
     图 7 的式编号 S009 的分析指令 VAR_REF 是第一自变量的 POU 集合的元素数不是 1 个而是 2 个时的一例, 下面根据图 10 记载处理流程。
     在这种情况下是通过在分析指令 VAR_REF 的处理中进一步递归地利用分析指令 VAR_REF 的处理来解决的。在图 7 的式编号 S009 的情况下, 图 2 的变量使用一览抽取处理 执行部 12 首先对有 2 个元素的 POU 集合的第一个元素即程序 MAIN 被指定到分析对象单元 中的分析指令 VAR_REF 进行处理 ( 此外, 分析指令 VAR_REF 的被指定到分析对象单元中的 POU 集合的元素为 1 的情况下的处理是作为分析指令 VAR_REF 的基础的处理, 该处理如在上 述 (B) 中已说明那样 ), 进行其结果集合与式编号 S009 的本结果集合 ( 在该时刻, 该集合是 没有元素的空集合 ) 的 OR 处理 (OR 处理如在上述 (D) 中已说明那样 ), 将其结果更新为式 编号 S009 的本结果集合 ( 在该时刻, 该集合的内容是与程序 MAIN 被指定到分析对象单元 中的分析指令 VAR_REF 的处理结果集合相同的内容 )。接着, 变量使用一览抽取处理执行部 12 对作为第二个元素的程序 SUB 被指定到分 析对象单元中的分析指令 VAR_REF 进行处理, 进行其结果集合与式编号 S009 的本结果集合 ( 在该时刻, 本结果集合的内容是与程序 MAIN 被指定到分析对象单元中的分析指令 VAR_ REF 的处理结果集合相同的内容 ) 的 OR 处理, 将其结果更新为式编号 S009 的本结果集合。
     并且, 变量使用一览抽取处理执行部 12 在对于分析对象单元中指定了的 POU 集合 的所有元素完成递归的分析指令 VAR_REF 的处理以及其结果集合与式编号 S009 的本结果 集合的 OR 处理时, 以变量 ( 器件 ) 为关键字, 对式编号 S009 的本结果集合进行分类, 将分 类后的本结果集合作为最终的式编号 S009 的结果集合而输出。
     通过这样进行处理, 由此式编号 S009 的结果与式编号 S006 的结果相同, 成为如图 19 所示。
     分析指令 VAR_REF 对于作为分析对象的 POU 集合是线性算子。即, 由图 10 提供处 理流程使得分析指令 VAR_REF 成为线性的指令定义。因而, 能够进行这种递归处理。
     将分析对象表述为 VAR_REF 函数的自变量, 并用 + 来表述 OR 运算, 从而记载分析 指令 VAR_REF 的线性时, 用式 1 所提供的式子来表示式编号 S009。
     [ 式 1] VAR_REF(S008) = VAR_REF(MAIN+SUB) = VAR_REF(MAIN)+VAR_REF(SUB)
     另外, 分析指令 VAR_REF 对于作为分析条件的变量 ( 器件 ) 也被定义为线性算子。 式编号 S010 用式 2 所提供的式子来表示, 通过递归地利用分析指令 VAR_REF, 能够进行式编 号 S010 的处理。
     [ 式 2]
     VAR_REF(M[0-9], M[20-29]) = VAR_REF(M0+… +M9+M20+… +M29)
     = VAR_REF(M0)+… +VAR_REF(M9)+VAB_REF(M20)
     +… +VAR_REF(M29)
     但是, 从处理时间的观点来看, 也可以不进行递归处理, 而在图 10 的处理流程的 步骤 S42 中, 变量使用一览抽取处理执行部 12 同时处理 M[0-9] 和 M[20-29]。结果都相同。
     < 实施方式 1 的效果 >
     如上所述, 能够实现对照索引 ( 指定器件的使用位置 ) 的集合彼此的逻辑运算 (AND 处理 /OR 处理 /NOT 处理 ), 由此能够抽取所期望的对照索引。
     另外, 能够实现 POU 的集合彼此的逻辑运算 (AND 处理 /OR 处理 /NOT 处理 ) 的结 果集合被指定为分析对象时的对照索引的制作, 由此能够抽取所期望的对照索引。
     另外, 分析指令 VAR_REF 对于作为分析对象的 POU 集合, 被定义为线性的算子。而 且, 分析指令 VAR_REF 对于作为分析条件的变量 ( 器件 ), 也被定义为线性的算子。 因而, 不 管以何种顺序进行对照索引运算与逻辑运算的组合, 都能够提供能够保证相同结果的程序 分析支援功能。
     ( 实施方式 2)
     在本实施方式中, 作为抽取程序中的变量 ( 器件 ) 的依赖关系的有向图的技术的 具体例, 下面记载抽取梯形程序中的器件的依赖关系的有向图的技术。
     如图 23 所示, 与图 2 的情况相比, 分析条件执行部 11 还具备变量依赖关系抽取处 理部 13, 另外, 分析结果显示部 20 还具备变量依赖关系显示部 22, 其中, 所述变量依赖关系
     抽取处理部 13 是用于对变量 ( 器件 ) 依赖关系有向图抽取进行处理的功能部, 所述变量依 赖关系显示部 22 制作并输出用于将变量 ( 器件 ) 依赖关系有向图结果显示在图 1 的显示 部 4 上的图像数据。
     此外, 在非专利文献 2 中公开了关于一般程序中的变量的依赖关系 ( 的有向图 ) 的基本说明。
     首先, 使用图 24 ~图 27 来记载梯形程序中的变量的依赖关系的有向图。
     基本的梯形程序由接点、 线圈以及母线构成。 特别是, 下面将与左母线和右母线分 别连接且配置有接点和 / 或线圈的横线 ( 梯形电路 ) 称为 Rung( 横档 )。 因而, Rung 是梯形 程序的构成元素。另外, 下面将接点和线圈等构成 Rung 的元素称为 Instruction( 指示 )。 图 24 的梯形结构示出了作为梯形程序的构成元素的 Rung 以及作为该 Rung 的构成元素的 Instruction 的具体例。
     Instruction 由 Operator( 命令 ) 和 Operand( 操作数 ) 构成。 Operand 是 Operator 的自变量, 既有需要一个 Operand 的 Operator, 或者也有需要两个或两个以上的 Operand 的 Operator。图 25 示出 Operator 和 Operand 的具体例。
     在梯形程序中, 如果接点的值 ( 状态 ) 发生变化, 则位于相同的 Rung 的线圈的值 ( 状态 ) 也发生变化。即, 作为线圈的器件的值具有依赖于成为接点的器件的值的关系。在 将该关系一般化来进行记载时, 具有写出器件的 Operator 的 Instruction 位于相同的 Rung 的上游、 即位于左侧, 处于依赖于具有读入器件的 Operator 的 Instruction 的关系。 在具有需要两个或两个以上的 Operand 的 Operator 的 Instruction 中, 也具有器 件的依赖关系。例如, MOV 命令指定读入器件作为第一操作数, 指定写出器件作为第二操作 数, 因此具有第二操作数的值依赖于第一操作数的关系。
     另外, 在设置于某一 Rung 的写出器件作为另一 Rung 的读出器件而被设置的情况 下, 经由该器件将器件的依赖关系联系起来。
     图 26 ~图 28 分别示出梯形程序中的 Instruction 的依赖关系以及器件的依赖关 系的具体例。
     接着, 记载抽取梯形程序中的器件的依赖关系的有向图的技术。在此, 图 29 是用 于用户输入程序分析条件的显示部 4 的画面例, 相当于图 7 的画面例的继续。
     图 29 的分析命令 VAR_FWD 是用于抽取所指定的变量 ( 器件 ) 给予影响的变量 ( 器 件 ) 并得到表示其变量依赖关系的有向图 ( 向前依赖关系的有向图 ) 的指令。用户针对分 析指令 VAR_FWD, 在分析对象单元中指定用于对成为分析对象的程序进行指定的式编号, 并 且在分析条件单元中指定成为向前依赖关系有向图的起点的变量 ( 器件 )。 式编号 S011 表 示由变量使用一览抽取处理执行部 12 指定抽取作为式编号 S008 的处理结果而输出的 POU 集合中所包含的元素即程序 MAIN 和程序 SUB 中的来自变量 ( 器件 )X222 的向前依赖关系 的有向图的例子, 变量依赖关系抽取处理执行部 13 将有向图的描绘所需的数据作为式编 号 S011 的分析结果而输出到变量依赖关系显示部 22。
     在已说明的非专利文献 3 中没有公开如下处理技术 : 变量依赖关系抽取处理执行 部 13 从由用户指定的梯形程序中, 抽取来自由用户指定的变量 ( 器件 ) 的向前依赖关系的 有向图。因此, 在图 30 的流程图中, 示出变量依赖关系抽取处理执行部 13 所执行的分析指 令 VAR_FWD 的处理流程。
     下面, 记载通过变量依赖关系抽取处理执行部 13 按照图 30 的流程来处理用图 29 的式编号 S011 指定的处理而得到图 31 的结果的情形。
     在图 30 中的步骤 S86 中, 变量依赖关系抽取处理执行部 13 生成以式编号 S011 的 第二自变量即变量 ( 器件 )X222 为元素的器件集合 [1]。
     在步骤 S87 中, 该部 13 生成器件集合 [2] 以及有向线段集合 [2]。
     在步骤 S90 中, 该部 13 在程序 MAIN 中抽取作为器件集合 [1] 的元素的变量 ( 器 件 )X222 给予影响的其它变量 ( 器件 )M3。
     在步骤 S91 中, 该部 13 将从变量 ( 器件 )X222 向变量 ( 器件 )M3 的有向线段追 加到有向线段集合 [2] 中。作为此时的有向线段的数据结构, 只要保持依赖源器件和依赖 目的地器件就足够了。但是, 鉴于后述的实施方式, 还能够在有向线段的数据结构中将 POU 名、 步骤编号和命令一起保持。
     在下一个步骤 S92 中, 该部 13 判断所抽取出的变量 ( 器件 )M3 是否存在于器件集 合 [1] 或 [2] 中。在本例中, 变量 ( 器件 )M3 不存在于器件集合 [1] 和 [2] 中, 因此在步骤 S93 中将所抽取出的变量 ( 器件 )M3 追加到器件集合 [2] 中。
     在下一个步骤 S94 中, 该部 13 要对作为下一个 POU 集合元素的程序 SUB 执行同等 的处理, 但是在本例中, 在程序 SUB 中不存在变量 ( 器件 )X222。
     因此, 该部 13 在步骤 S95 中要对下一个元素器件执行处理, 但是在本例中, 在器 件集合 [1] 中不存在变量 ( 器件 )X222 以外的元素。因此, 在步骤 S96 中, 该部 13 判断为 “否” , 转移到下一个步骤 S97。
     接着, 在步骤 S97 中, 该部 13 使器件集合的变量 d 递增。其结果, 该部 13 在设定 为 d = 2 之后, 在步骤 S87 中生成器件集合 [3] 和有向线段集合 [3]。
     在下一个步骤 S90 中, 该部 13 在程序 MAIN 中抽取作为器件集合 [2] 的元素的变 量 ( 器件 )M3 给予影响的其它变量 ( 器件 )M4。
     之后, 在步骤 S91 中, 该部 13 将从变量 ( 器件 )M3 向变量 ( 器件 )M4 的有向线段 追加到有向线段集合 [3] 中。
     在步骤 S92 中, 该部 13 判断所抽取出的变量 ( 器件 )M4 是否存在于器件集合 [1] ~ [3] 中, 但是在本例中, 由于变量 ( 器件 )M4 不存在于器件集合 [1] ~ [3] 中, 因此在 步骤 S93 中将变量 ( 器件 )M4 追加到器件集合 [3] 内。
     在步骤 S94 中, 该部 13 要开始执行针对作为下一个元素 POU 的程序 SUB 的处理, 但是由于在程序 SUB 中不存在变量 ( 器件 )M3, 因此该部 13 在步骤 S95 中要对下一个元素 器件执行处理, 但是由于在器件集合 [2] 内不存在变量 ( 器件 )M3 以外的元素, 因此无法执 行该处理。在步骤 S96 中, 该部 13 判断为 “是” , 转移到下一个步骤 S97。
     在步骤 S97 中, 该部 13 使器件集合的变量 d 进一步递增。其结果, 该部 13 在设定 为 d = 3 之后, 在步骤 S87 中生成器件集合 [4] 和有向线段集合 [4]。
     在程序 MAIN 中, 不存在作为器件集合 [3] 的元素的变量 ( 器件 )M4 给予影响的其 它变量 ( 器件 )。
     因此, 该部 13 在作为下一个 POU 集合的元素的程序 SUB 中抽取作为器件集合 [3] 的元素的变量 ( 器件 )M4 给予影响的其它变量 ( 器件 )M7 和 M8( 步骤 S90)。
     之后, 在步骤 S91 中, 该部 13 将从变量 ( 器件 )M4 向变量 ( 器件 )M7 的有向线段以及从变量 ( 器件 )M4 向变量 ( 器件 )M8 的有向线段追加到有向线段集合 [4] 中。
     在步骤 S92 中, 该部 13 判断所抽取出的变量 ( 器件 )M7 和 M8 是否存在于器件集合 [1] ~ [4] 中, 但是在本例中, 由于在器件集合 [1] ~ [4] 中不存在变量 ( 器件 )M7 和 M8, 因此在步骤 S93 中, 该部 13 将变量 ( 器件 )M7 和 M8 追加到器件集合 [4] 内。
     在步骤 S94 中, 不存在下一个元素 POU。
     因此, 该部 13 在步骤 S95 中要对下一个元素器件执行处理, 但是由于在器件集合 [3] 内不存在变量 ( 器件 )M4 以外的元素, 因此无法执行该处理。在步骤 S96 中, 该部 13 判 断为 “是” , 转移到下一个步骤 S97。
     在步骤 S97 中, 该部 13 使器件集合的变量 d 进一步递增。其结果, 该部 13 在设定 为 d = 4 之后, 在步骤 S87 中生成器件集合 [5] 和有向线段集合 [5]。
     在程序 MAIN 中, 不存在作为器件集合 [4] 的第一个元素的变量 ( 器件 )M7 给予影 响的其它变量 ( 器件 )。
     因此, 该部 13 在作为下一个 POU 集合的元素的程序 SUB 中, 抽取作为器件集合 [4] 的元素的变量 ( 器件 )M7 给予影响的其它变量 ( 器件 )YOC 10( 步骤 S90)。
     之后, 在步骤 S91 中, 该部 13 将从变量 ( 器件 )M7 向变量 ( 器件 )YOC10 的有向线 段追加到有向线段集合 [5] 中。
     在下一个步骤 S92 中, 该部 13 判断所抽取出的变量 ( 器件 )YOC 10 是否存在于器 件集合 [1] ~ [5] 中, 但是在本例中, 由于在器件集合 [1] ~ [5] 中不存在变量 ( 器件 )YOC 10, 因此在步骤 S93 中该部 13 将变量 ( 器件 )YOC 10 追加到器件集合 [5] 内。
     在步骤 S94 中, 不存在下一个元素 POU。
     因此, 该部 13 在步骤 S95 中要对下一个元素器件执行处理, 但是由于下一个变量 ( 器件 )M8 给予影响的其它变量 ( 器件 ) 不存在于程序 MAIN 和程序 SUB 中, 因此在步骤 S96 中, 该部 13 判断为 “是” , 转移到下一个步骤 S97。
     在步骤 S97 中, 该部 13 使器件集合的变量 d 进一步递增。其结果, 该部 13 在设定 为 d = 5 之后, 在步骤 S87 中生成器件集合 [6] 和有向线段集合 [6]。
     在程序 MAIN 中, 不存在作为器件集合 [5] 的元素的变量 ( 器件 )YOC 10 给予影 响的其它变量 ( 器件 )。而且, 在作为下一个 POU 集合的元素的程序 SUB 中, 也不存在变量 ( 器件 )YOC 10 给予影响的其它变量 ( 器件 )。
     因此, 该部 13 在步骤 S96 中判断在器件集合 [6] 中是否存在元素, 但是由于在器 件集合 [6] 中不存在元素, 因此该部 13 转移到步骤 S98。
     在步骤 S98 中, 该部 13 将存在元素的器件集合 [1] ~ [5] 和有向线段集合 [2] ~ [5] 作为向前依赖关系的有向图分析结果而输出到变量依赖关系显示部 22。
     之后, 变量依赖关系显示部 22 将表示基于器件集合 [1] ~ [5] 和有向线段集合 [2] ~ [5] 而提供的向前依赖关系的有向图分析结果的描绘数据输出到图 1 的显示部 4, 其 结果, 显示部 4 在其画面上描绘基于器件集合 [1] ~ [5] 和有向线段集合 [2] ~ [5] 而提 供的向前依赖关系的有向图分析结果。其描绘结果如图 31 所示。
     另外, 在图 31 中一并示出在相关联的器件注释文件中记载有变量 ( 器件 ) 的注释 的情况下的画面例。
     此外, 关于有向图的描绘, 只要使用现有技术即可, 由于基于表示有向图的结构的器件集合 [1] ~ [5] 以及有向线段集合 [2] ~ [5] 而具体地描绘有向图的过程的记载偏离 本发明的主旨, 因此在此省略。
     另外, 关于用图 29 的式编号 S012 指定的处理, 只要由变量依赖关系抽取处理执行 部 13 同样地按照图 30 所示的流程进行处理即可, 其结果能够得到图 32 所示的结果。
     < 实施方式 2 的效果 >
     能够抽取将梯形程序作为分析对象的器件的向前依赖关系的有向图, 另外, 能够 抽取将梯形程序中的 POU 的集合以及 POU 的集合彼此的逻辑运算 (AND 处理 /OR 处理 /NOT 处理 ) 的结果作为分析对象的器件的向前依赖关系的有向图, 由此能够节省涉及程序分析 的作业。
     ( 实施方式 3)
     本实施方式记载抽取梯形程序中的变量 ( 器件 ) 的向后依赖关系的有向图的技 术。
     这种情况下使用的分析指令 VAR_BWD 是用于抽取对由用户指定的变量 ( 器件 ) 带 来影响的变量 ( 器件 )、 并得到表示其依赖关系的有向图 ( 向后依赖关系的有向图 ) 的指 令。关于程序分析条件的输入, 针对分析指令 VAR_BWD, 用户使用图 1 的输入部 5 在分析对 象单元中指定用于指定成为分析对象的程序的式编号, 并且在分析条件单元中指定成为向 后依赖关系有向图的起点的变量 ( 器件 )。图 29 中的式编号 S015 表示对作为式编号 S008 的逻辑处理结果而输出的 POU 集合中所包含的元素 ( 元素 POU) 即程序 MAIN 以及程序 SUB 中的来自变量 ( 器件 )YC10 的向后依赖关系的有向图的抽取处理进行指定的例子, 图 23 的 变量依赖关系抽取处理执行部 13 将向后依赖关系的有向图的描绘所需的数据作为其分析 结果而输出到变量依赖关系显示部 22。
     在此, 图 33 是表示变量依赖关系抽取处理执行部 13 所执行的分析指令 VAR_BWD 的处理流程的流程图。该处理流程与在实施方式 2 中已经说明的图 30 中的分析指令 VAR_ FWD 的处理流程几乎相同, 但是在以下的三个点中不同。
     即, 在图 33 的步骤 S109 中, 与图 30 的步骤 S90 不同地, 变量依赖关系抽取处理执 行部 13 抽取对所指定的变量 ( 器件 ) 带来影响的其它变量 ( 器件 )。
     而且, 在图 33 的步骤 S110 中, 与图 30 的步骤 S91 不同地, 变量依赖关系抽取处理 执行部 13 对表示来自通过步骤 S109 抽取出的变量 ( 器件 ) 的依赖关系的有向线段进行追 加处理。
     而且, 在图 33 的步骤 S117 中, 变量依赖关系抽取处理执行部 13 除了进行图 30 的步骤 S98 的处理之外, 还进行使器件集合以及有向线段集合的深度的编号进行倒转 (invert) 的处理, 之后将倒转处理后的处理作为器件依赖关系有向图分析结果而输出。
     例如, 当得到器件集合 [1] ~ [n] 时, 变量依赖关系抽取处理执行部 13 将器件集 合 [1] 作为器件集合 [n] 来输出, 将器件集合 [2] 作为器件集合 [n-1] 来输出, ..., 一般将 器件集合 [k] 作为器件集合 [n-k+1] 来输出, ..., 将器件集合 [n] 作为器件集合 [1] 来输 出。
     另外, 当得到有向线段集合 [2] ~ [n] 时, 变量依赖关系抽取处理执行部 13 将有 向线段集合 [2] 作为有向线段集合 [n] 来输出, 将有向线段集合 [3] 作为有向线段集合 [n-1] 来输出, ..., 一般将有向线段集合 [k] 作为有向线段集合 [n-k+2] 来输出, ..., 将有向线段集合 [n] 作为有向线段集合 [2] 来输出。
     其中, 有向线段的原则是属于以其依赖源器件的深度为基准的有向线段集合的深 度, 在使有向线段集合的编号进行倒转时, 变量依赖关系抽取处理执行部 13 使所有的有向 线段的元素向其应所属的深度进行移动。
     当根据这样得到的器件集合和有向线段集合来描绘有向图时, 描绘结果如图 34 所示。
     要特别注意的点是, 在使有向线段集合的编号进行倒转时, 使所有的有向线段的 元素向其应所属的深度进行移动。
     在图 34 的情况下, 在使有向线段集合的编号进行倒转之前, 在有向线段集合 [d = 3] 中存在 “X223 → M6” 、 “D2 → M6” 、 “D3 → M6” 、 “M4 → M7” 以及 “M5 → M7” 这五个元素有向 线段, 在有向线段集合 [d = 4] 中存在 “M3 → M4” “X223 → M5” 、 “D2 → M5” 、 以及 “D3 → M5” 这四个元素有向线段。
     在此基础上, 首先, 变量依赖关系抽取处理执行部 13 在进行仅使有向线段集合 的深度编号倒转的处理时, 在有向线段集合 [d = 4] 中存在 “X223 → M6” 、 “D2 → M6” 、 “D3 → M6” 、 “M4 → M7” 以及 “M5 → M7” 这五个元素有向线段, 另一方面, 在有向线段集合 [d = 3] 中存在 “M3 → M4” 、 “X223 → M5” 、 “D2 → M5” 以及 “D3 → M5” 这四个元素有向线段。
     因此, 变量依赖关系抽取处理执行部 13 进行如下处理 : 移动各有向线段使其属于 以其依赖源器件的深度为基准的有向线段集合的深度。其结果, 有向线段集合 [d = 3] 的 元素有向线段内的三个元素有向线段 “X223 → M5” 、 “D2 → M5” 以及 “D3 → M5” 在深度编号 倒转后的依赖源器件的深度为 d = 3, 因此应所属的深度为 d = 4, 向有向线段集合 [d = 4] 移动。
     由 此, 作 为 结 果, 在 有 向 线 段 集 合” d = 4] 中 存 在 “X223 → M6” 、 “D2 → M6” 、 “D3 → M6” 、 “M4 → M7” 、 “M5 → M7” 、 “X223 → M5” 、 “D2 → M5” 以及 “D3 → M5” 这 8 个元素有 向线段, 在有向线段集合 [d = 3] 中存在由 [M3 → M4] 构成的一个元素有向线段。
     < 实施方式 3 的效果 >
     能够抽取将梯形程序作为分析对象的变量 ( 器件 ) 的向后依赖关系的有向图, 另 外, 能够抽取将梯形程序中的 POU 的集合以及 POU 的集合彼此的逻辑运算 (AND 处理 /OR 处 理 /NOT 处理 ) 的结果作为分析对象的变量 ( 器件 ) 的向后依赖关系的有向图, 因此能够节 省涉及程序分析的作业。
     ( 实施方式 4)
     在本实施方式中, 记载能够进行梯形程序中的器件的依赖关系的有向图彼此的逻 辑运算 ( 逻辑和 OR 处理 ) 的技术。
     分析指令 OR 是用于抽取作为处理结果而抽取的不同的数据的集合之间的逻辑和 的指令。因此, 用户使用输入部 5 在分析对象 ( 第一自变量 ) 单元和分析条件 ( 第二自变 量 ) 单元中分别指定成为逻辑和的对象的两个式编号。图 29 的式编号 S013 表示指定抽取 通过式编号 S011 的处理而抽取出的器件依赖关系有向图抽取结果与通过式编号 S012 的处 理而抽取出的另一器件依赖关系有向图抽取结果的逻辑和的例子。
     因而, 在本发明中提出了将用于实施对照索引彼此的逻辑和的分析指令、 与用于 实施器件依赖关系有向图彼此的逻辑和的分析指令都通过相同的分析指令 OR 来进行指定的例子。
     在此, 图 35 是表示图 23 的 OR 处理执行部 18 所执行的分析指令 OR 的处理流程的流程图。 首先, 该部 18 在图 35 的步骤 S120 和 S121 中确认成为逻辑和的对象的数据种类 是否为器件依赖关系有向图。如果数据种类不是器件依赖关系有向图, 则该部 18 执行已说 明的图 18 的处理流程。
     另一方面, 在分析指令 OR 为器件依赖关系有向图彼此的逻辑和的运算的情况下, 该部 18 作为用于将第一自变量与第二自变量的集合进行结合的预准备而进行使两个自变 量相互的深度水平一致的处理 ( 步骤 S122), 将第一自变量的所有元素作为上述结合的基 础 ( 步骤 S125)。
     接着, 该部 18 一边确认与第一自变量的元素重复的第二自变量的元素, 一边进行 集合的结合。在集合的结合时, 该部 18 首先处理器件集合的结合 ( 逻辑和 )( 步骤 S128), 之后处理有向线段集合的结合 ( 逻辑和 )( 步骤 S132)。
     当 OR 处理执行部 18 按照图 35 所示的各流程来处理图 29 的式编号 S013 时, 作为 图 31 和图 32 的逻辑和的处理结果, 得到图 36 所示的结果。下面详细说明这一点。
     在图 35 的步骤 S123 中, 该部 18 抽取变量 ( 器件 )M7 以及 M8 重复的深度即第一 自变量的 d = 4 与第二自变量的 d = 3 的组合, 来作为重复的元素数最多的深度。
     在下一个步骤 S124 中, 该部 18 原样地维持第一自变量的深度, 之后重新设定集合 的深度使得第二自变量的 d = 3 与第一自变量的 d = 4 一致。作为将两个自变量之中的哪 一个的深度维持原样的判断基准, 在步骤 S123 中抽取出的组合之中, 将值大的一方的自变 量的深度维持原样。 但是, 在抽取出的组合的深度的值都相同的情况下, 对于任一自变量都 不需要重新设定深度。在式编号 S013 的处理的情况下, 在以后的步骤中处理对第二自变 量的集合的深度的值相加了 +1 后的深度的值的集合 ( 器件集合 [2] ~ [4]、 有向线段集合 [3] ~ [5])。
     在下一个步骤 S126 中, 该部 18 生成与重新设定深度后的第一自变量和第二自变 量中的深度大的一方的值相当大小的深度的集合。 在式编号 S013 的处理的情况下, 该部 18 将器件 OR 结果集合 [1] ~ [5] 以及有向线段 OR 结果集合 [2] ~ [5] 分别生成为空。
     之后, 在步骤 S127 中, 该部 18 将第一自变量的集合元素全部复制到 OR 结果集合。 在复制时, 留意该部 18 在步骤 S124 中将第一自变量的深度维持原样的情形, 在将复制源 ( 第一自变量 ) 的深度和复制目的地 (OR 结果集合 ) 的深度维持原样之后, 执行复制处理。 如果在步骤 S124 中重新设定了第一自变量的深度, 则考虑该重新设定来设定复制源 ( 第一 自变量 ) 的深度和复制目的地 (OR 结果集合 ) 的深度。
     下一个步骤 S128 的细节如以下所记载那样。
     在步骤 S129 中, 该部 18 首先判断为在器件 OR 结果集合的所有的深度中不存在 作为第二自变量的器件集合 [ 重新设定后的深度= 2 的器件集合 ] 的元素的变量 ( 器件 ) X223 的结果 (“是” ), 在下一个步骤 S130 中, 将变量 ( 器件 )X223 复制到器件 OR 结果集合 [2]。然后, 该部 18 转移到步骤 S131。
     接着, 由于在器件 OR 结果集合的所有的深度中不存在作为第二自变量的器件集 合 [ 重新设定后的深度= 3 的器件集合 ] 的元素的变量 ( 器件 )M5( 在步骤 S129 中 “是” 的
     判断 ), 因此该部 18 将变量 ( 器件 )M5 复制到器件 OR 结果集合 [3]( 步骤 S130)。
     接着, 由于在器件 OR 结果集合的所有的深度中不存在作为第二自变量的器件集 合 [ 重新设定后的深度= 3 的器件集合 ] 的元素的变量 ( 器件 )M6( 在步骤 S129 中 “是” 的 判断 ), 因此该部 18 将变量 ( 器件 )M6 复制到器件 OR 结果集合 [3]( 步骤 S130)。
     接着, 由于在器件 OR 结果集合 [4] 的深度中存在作为第二自变量的器件集合 [ 重 新设定后的深度= 4 的器件集合 ] 的元素的变量 ( 器件 )M7( 在步骤 S129 中 “否” 的判断 ), 因此该部 18 不进行变量 ( 器件 )M7 的复制处理。
     接着, 由于在器件 OR 结果集合 [4] 的深度中存在作为第二自变量的器件集合 [ 重 新设定后的深度= 4 的器件集合 ] 的元素的变量 ( 器件 )M8( 在步骤 S129 中 “否” 的判断 ), 因此该部 18 不进行变量 ( 器件 )M8 的复制处理。
     接着, 由于在器件 OR 结果集合的所有的深度中不存在作为第二自变量的器件集 合 [ 重新设定后的深度= 4 的器件集合 ] 的元素的变量 ( 器件 )D5( 在步骤 S129 中 “是” 的 判断 ), 因此该部 18 将变量 ( 器件 )D5 复制到器件 OR 结果集合 [4]( 步骤 S130)。
     接着, 由于在器件 OR 结果集合 [5] 的深度中存在作为第二自变量的器件集合 [ 重 新设定后的深度= 4 的器件集合 ] 的元素的变量 ( 器件 )YC10( 在步骤 S129 中 “否” 的判 断 ), 因此该部 18 不进行变量 ( 器件 )YC 10 的复制处理。 下一个步骤 S132 的细节如以下所记载那样。
     在步骤 S133 中, 该部 18 首先判断为在有向线段 OR 结果集合的所有的深度中不存 在作为第二自变量的有向线段集合 [ 重新设定后的深度= 3 的有向线段集合 ] 的元素的有 向线段 “X223 → M5” (“是” ), 在下一个步骤 S134 中, 该部 18 复制到有向线段 OR 结果集合 [3]。在复制时, 留意该部 18 根据要复制的有向线段的依赖源器件存在的器件 OR 结果集合 的深度而向有向线段 OR 结果集合的深度 ( 即, 器件 OR 结果集合的深度 +1) 进行复制的情 形。在这种情况下, 由于在器件 OR 结果集合 [2] 中存在要复制的有向线段 “X223 → M5” 的 依赖源器件 X223, 因此该部 18 将有向线段 “X223 → M5” 复制到有向线段 OR 结果集合 [3]。 然后, 该部 18 转移到下一个步骤 S135。
     其结果, 接下来, 由于在有向线段 OR 结果集合的所有的深度中不存在作为第二 自变量的有向线段集合 [ 重新设定后的深度= 4 的有向线段集合 ] 的元素的有向线段 “M5 → M7” ( 在步骤 S133 中 “是” 的情况 ), 因此该部 18 将有向线段 “M5 → M7” 复制到有向 线段 OR 结果集合 [4]( 步骤 S134)。
     接着, 由于在有向线段 OR 结果集合的所有的深度中不存在作为第二自变量的有 向线段集合 [ 重新设定后的深度= 4 的有向线段集合 ] 的元素的有向线段 “M5 → M8” (在 步骤 S133 中 “是” 的情况 ), 因此该部 18 将有向线段 “M5 → M8” 复制到有向线段 OR 结果集 合 [4]( 步骤 S134)。
     接着, 由于在有向线段 OR 结果集合的所有的深度中不存在作为第二自变量的有 向线段集合 [ 重新设定后的深度= 4 的有向线段集合 ] 的元素的有向线段 “M6 → D5” (在 步骤 S133 中 “是” 的情况 ), 因此该部 18 将有向线段 “M6 → D5” 复制到有向线段 OR 结果集 合 [4]( 步骤 S134)。
     接着, 由于在有向线段 OR 结果集合的所有的深度中不存在作为第二自变量的 有向线段集合 [ 重新设定后的深度= 4 的有向线段集合 ] 的元素的有向线段 “M6 → YC
     10” ( 在步骤 S133 中 “是” 的情况 ), 因此该部 18 将有向线段 “M6 → YC 10” 复制到有向线 段 OR 结果集合 [4]( 步骤 S134)。在此, 虽然在器件 OR 结果集合 [5] 中存在要复制的有向 线段 “M6 → YC 10” 的依赖目的地器件 YC 10, 但是由于依赖源器件 M6 存在于器件 OR 结果 集合 [3] 中, 因此该部 18 将有向线段 “M6 → YC 10” 复制到有向线段 OR 结果集合 [4]。
     接着, 由于作为第二自变量的有向线段集合 [ 重新设定后的深度= 5 的有向线段 集合 ] 的元素的有向线段 “M7 → YC 10” 作为有向线段 OR 结果集合 [5] 的元素而存在, 因 此该部 18 不复制有向线段 “M7 → YC10” 。
     根据通过以上的处理得到的器件集合 [1] ~ [5] 和有向线段集合 [2] ~ [5] 来描 绘的有向图如图 36 所示。
     有向线段表示从某一器件向另一器件的依赖关系, 变量 ( 器件 ) 与有向线段相互 密切关联, 图 23 的 OR 处理执行部 18 在通过如上所述那样进行处理、 即首先处理了器件集 合的结合 ( 逻辑和 ) 之后根据其结果来处理有向线段集合的结合 ( 逻辑和 ), 能够没有矛盾 地对有向图彼此进行逻辑和 (OR) 运算。
     此外, 以上的有向图彼此的逻辑和 (OR) 运算是与其有向图的某一方或两方是向 前依赖关系还是向后依赖关系无关的处理。
     图 29 的式编号 S013 表示以与用于图 2 的 OR 处理执行部 18 实施对照索引彼此的 逻辑和的处理的指令 ( 图 7 的式编号 S006 的指定 ) 相同的分析指令 OR 来指定用于图 23 的 OR 处理执行部 18 实施器件依赖关系有向图彼此的逻辑和的处理的指令的例子。 取而代之, 在假设用不同的指令对它们进行定义 ( 例如将前者定义为 VAR_FWD_BWD_OR, 将后者定义为 VAR_REF_OR) 并区分使用的实施方式中使用的技术也与本实施方式中已说明的技术相同。
     另外, 如果使用本实施方式, 则分析指令 VAR_FWD 针对作为分析条件 ( 器件依赖关 系有向图的起点 ) 的变量 ( 器件 ) 成为线性的算子。换言之, 如图 35 所示那样设定器件依 赖关系有向图的逻辑和的处理流程以使分析指令 VAR_FWD 成为线性的指令定义。
     在此, 如果将分析条件表述为 VAR_FWD 函数的自变量并用 + 来标明分析指令 OR, 由此记载分析指令 VAR_FWD 的线性, 则由图 29 的式编号 S014 指定的分析指令成为由下式 3 提供的式子。
     [ 式 3]
     VAR_FWD(X222, X223) = VAR_FWD(X222+X223) = VAR_FWD(X222)+VAR_FWD(X223)
     因而, 在如式编号 S014 所示那样由用户列举指定了作为分析指令 VAR_FWD 的分析 条件 ( 器件依赖关系有向图的起点 ) 的变量 ( 器件 ) 的情况下, 能够进行如下那样的递归 处理 : 将对以各个变量 ( 器件 ) 为分析条件的分析指令 VAR_FWD 的结果进行逻辑和 (OR) 处 理后的结果设为式编号 S014 的结果。这一点关于分析指令 VAR_BWD 也是同样的。
     这意味着用户不用如式编号 S011、 S012、 S013 那样逐一地输入三个条件式, 通过 一个式编号 S014 的输入及其执行, 也能够得到与式编号 S13 的处理结果相同的处理结果。
     另外, 关于用户在分析条件单元中列举指定多个变量 ( 器件 ) 的方法, 在由图 7 的 式编号 S010 表示的分析指令 VAR_REF 和由图 29 的式编号 S014 表示的分析指令 VAR_FWD 中也是相同的, 还取得不同的分析指令间的分析条件指定方法的匹配性, 一点也不矛盾。 这 一点关于分析指令 VAR_BWD 也是同样的。
     < 实施方式 4 的效果 >1) 通过能够进行梯形程序中的变量 ( 器件 ) 的依赖关系的有向图彼此的逻辑运算 ( 逻辑和 OR 处理 ), 由此能够抽取所期望的器件依赖关系有向图, 能够节省涉及程序分析的 作业。
     2) 用户能够用相同的分析指令 OR 来指定用于实施对照索引彼此的逻辑和的指令 和用于实施器件依赖关系有向图彼此的逻辑和的指令。还考虑假设用不同的指令对它们 ( 例如将前者定义为分析指令 VAR_REF_OR, 将后者定义为分析指令 VAR_FWD_BWD_OR) 进行 定义来区分使用的实施方式, 但是需要根据成为分析指令 OR 的对象的数据种类而区分使 用指令。不管数据种类如何, 将实施逻辑和的分析指令定义为 OR 的情况下使用更方便。在 区分使用分析指令的情况下, 用户需要在帮助或使用说明书等中查找与各个数据种类相对 应的逻辑和指令, 但是如果能够用分析指令 OR 来实施所有的分析指令, 则完全没有这样的 用户参照帮助等的必要性, 能够节省涉及程序分析的作业。
     ( 实施方式 5)
     在本实施方式中, 记载能够进行梯形程序中的器件的依赖关系的有向图彼此的逻 辑积运算 ( 逻辑积 AND 处理 ) 的技术。
     分析指令 AND 是用于抽取作为处理结果而抽取出的不同的数据的集合之间的逻 辑积的指令, 用户在分析对象 ( 第一自变量 ) 单元和分析条件 ( 第二自变量 ) 单元中分别 指定成为逻辑积的对象的两个式编号。图 29 的式编号 S016 表示指定抽取用式编号 S014 抽取出的器件依赖关系有向图抽取结果与用式编号 S015 抽取出的另一器件依赖关系有向 图抽取结果的逻辑积的例子。
     也就是说, 在本发明中, 示出了将用于实施已经说明的对照索引彼此的逻辑积的 分析指令、 与用于实施器件依赖关系有向图彼此的逻辑积的分析指令根据相同或共用的分 析指令 AND 来指定的例子。
     在此, 图 37 是表示图 23 的 AND 处理执行部 17 所执行的分析指令 AND 的处理流程 的流程图。下面, 根据图 37 所示的处理流程, 记载本实施方式所涉及的器件依赖关系有向 图的 AND 处理。
     首先, 在步骤 S137 和 S138 中, AND 处理执行部 17 确认成为逻辑积的对象的数据 种类是否为器件依赖关系有向图。在该确认处理中, 在确认了数据种类不是器件依赖关系 有向图的情况下, 该部 17 只进行已经说明的图 15 的处理流程。
     另一方面, 在该式编号所指定的分析指令指定执行器件依赖关系有向图彼此的逻 辑积的情况下, 作为仅抽取第一自变量和第二自变量的集合的共同元素的预准备, 进行使 两个自变量的集合相互的深度水平一致的处理 ( 步骤 S139), 而且针对变量 ( 器件 ) 以及有 向线段的各个, 生成空的 AND 结果集合, 并以该 AND 结果集合为用于仅抽取共同元素的基础 ( 步骤 S142)。
     接着, 该部 17 进行一边确认与第二自变量重复的第一自变量的元素一边仅抽取 共同元素的处理。在抽取该共同元素时, 该部 17 首先仅抽取器件集合的共同元素 ( 逻辑 积 )( 步骤 S143), 在此之后仅抽取有向线段集合的共同元素 ( 逻辑积 )( 步骤 S147)。
     当 AND 处理执行部 17 根据图 37 所示的以下的处理流程而对图 29 的式编号 S016 进行 AND 处理时, 作为图 36 的结果和图 34 的结果的逻辑积, 得到图 38 所示的结果。详细 说明这一点。在步骤 S140 中, 该部 17 在作为第一自变量的式编号 S014 的器件集合与作为第二 自变量的式编号 S015 的器件集合中, 抽取重复的元素的数量最多的深度。其结果, 该部 17 抽取变量 ( 器件 )M4 与变量 ( 器件 )M5 重复的深度即第一自变量的 d = 3 以及第二自变量 的 d = 3 的组合, 来作为重复最多的深度。
     在下一个步骤 S141 中, 作为将第一自变量的深度和第二自变量的深度中的哪一 个维持原样的判断基准的应用, 该部 17 将通过步骤 S140 抽取出的组合的值中的较大的值 的一方的深度维持原样, 重新设定另一方的深度。 由此, 在以后的步骤中使用重新设定的深 度。在图 29 的式编号 S016 的处理的情况下, 通过步骤 S140 抽取出的组合的深度的值都相 同 (d = 3), 关于任一自变量都不需要重新设定其深度。
     在下一个步骤 S141 中, 该部 17 生成与重新设定深度后的第一自变量的深度和第 二自变量的深度之中其值大的一方的该值相当大小的深度的 AND 结果集合。在图 29 的式 编号 S016 的处理的情况下, 关于第一自变量和第二自变量的任一个集合, 其深度都相同 (d = 5), 将器件 AND 结果集合 [1] ~ [5] 和有向线段 AND 结果集合 [2] ~ [5] 都作为空内容 的 AND 结果集合而生成。
     在下一个步骤 S144 中, 该部 17 首先判断为在第二自变量的器件集合 [1] 中存在 作为第一自变量的器件集合 [1] 的元素的变量 ( 器件 )X222, 因此在其下一个步骤 S145 中, 该部 17 将变量 ( 器件 )X222 复制到器件 AND 结果集合 [1] 中。
     接着, 由于在第二自变量的器件集合 [2] 中存在作为第一自变量的器件集合 [2] 的元素的变量 ( 器件 )M3, 因此在步骤 S145 中, 该部 17 将变量 ( 器件 )M3 复制到器件 AND 结果集合 [2] 中。
     接着, 由于在第二自变量的器件集合 [3] 中存在作为第一自变量的器件集合 [2] 的元素的变量 ( 器件 )X223, 因此在步骤 S145 中, 该部 17 将变量 ( 器件 )X223 复制到器件 AND 结果集合 [2] 中。
     接着, 由于在第二自变量的器件集合 [3] 中存在作为第一自变量的器件集合 [3] 的元素的变量 ( 器件 )M4, 因此在步骤 S145 中, 该部 17 将变量 ( 器件 )M4 复制到器件 AND 结果集合 [3] 中。
     接着, 由于在第二自变量的器件集合 [3] 中存在作为第一自变量的器件集合 [3] 的元素的变量 ( 器件 )M5, 因此在步骤 S145 中, 该部 17 将变量 ( 器件 )M5 复制到器件 AND 结果集合 [3] 中。
     接着, 由于在第二自变量的器件集合 [4] 中存在作为第一自变量的器件集合 [3] 的元素的变量 ( 器件 )M6, 因此在步骤 S145 中, 该部 17 将变量 ( 器件 )M6 复制到器件 AND 结果集合 [3] 中。
     接着, 由于在第二自变量的器件集合 [4] 中存在作为第一自变量的器件集合 [4] 的元素的变量 ( 器件 )M7, 因此在步骤 S145 中, 该部 17 将变量 ( 器件 )M7 复制到器件 AND 结果集合 [4] 中。
     接着, 由于在第二自变量的器件集合的所有深度中不存在作为第一自变量的器件 集合 [4] 的元素的变量 ( 器件 )M8, 因此该部 17 不进行复制处理。
     接着, 由于在第二自变量的器件集合的所有深度中不存在作为第一自变量的器件 集合 [4] 的元素的变量 ( 器件 )D5, 因此该部 17 不进行复制处理。接着, 由于在第二自变量的器件集合 [5] 中存在作为第一自变量的器件集合 [5] 的元素的变量 ( 器件 )YC 10, 因此在步骤 S145 中, 该部 17 将变量 ( 器件 )YC 10 复制到器 件 AND 结果集合 [5] 中。
     在下一个步骤 S148 中, 首先, 由于在第二自变量的有向线段集合 [2] 中存在作为 第一自变量的有向线段集合 [2] 的元素的有向线段 “X222 → M3” , 因此在步骤 S149 中, 该部 17 将有向线段 “X222 → M3” 复制到有向线段 AND 结果集合 [2] 中。在复制时, 该部 17 根据 要复制的有向线段的依赖源器件存在的器件 AND 结果集合的深度, 向有向线段 AND 结果集 合的深度即 ( 器件 AND 结果集合的深度 +1) 的深度进行复制。在这种情况下, 由于在器件 AND 结果集合 [1] 中存在要复制的有向线段 “X222 → M3” 的依赖源器件 X222, 因此该部 17 将有向线段 “X222 → M3” 复制到有向线段 AND 结果集合 [2] 中。
     接着, 由于在第二自变量的有向线段集合 [3] 中存在作为第一自变量的有向线段 集合 [3] 的元素的有向线段 “M3 → M4” , 因此在步骤 S149 中, 该部 17 将有向线段 “M3 → M4” 复制到有向线段 AND 结果集合 [3] 中。
     接着, 由于在第二自变量的有向线段集合 [4] 中存在作为第一自变量的有向线 段集合 [3] 的元素的有向线段 “X223 → M5” , 因此在步骤 S149 中, 该部 17 将有向线段 “X223 → M5” 复制到有向线段 AND 结果集合 [3] 中。
     接着, 由于在第二自变量的有向线段集合 [4] 中存在作为第一自变量的有向线 段集合 [3] 的元素的有向线段 “X223 → M6” , 因此在步骤 S149 中, 该部 17 将有向线段 “X223 → M6” 复制到有向线段 AND 结果集合 [3] 中。
     接着, 由于在第二自变量的有向线段集合 [4] 中存在作为第一自变量的有向线段 集合 [4] 的元素的有向线段 “M4 → M7” , 因此在步骤 S149 中, 该部 17 将有向线段 “M4 → M7” 复制到有向线段 AND 结果集合 [4] 中。
     接着, 由于在第二自变量的有向线段集合的所有深度中不存在作为第一自变量的 有向线段集合 [4] 的元素的有向线段 “M4 → M8” , 因此该部 17 不进行复制处理。
     接着, 由于在第二自变量的有向线段集合 [4] 中存在作为第一自变量的有向线段 集合 [4] 的元素的有向线段 “M5 → M7” , 因此在步骤 S149 中, 该部 17 将有向线段 “M5 → M7” 复制到有向线段 AND 结果集合 [4] 中。
     接着, 由于在第二自变量的有向线段集合的所有深度中不存在作为第一自变量的 有向线段集合 [4] 的元素的有向线段 “M5 → M8” , 因此该部 17 不进行复制处理。
     接着, 由于在第二自变量的有向线段集合的所有深度中不存在作为第一自变量的 有向线段集合 [4] 的元素的有向线段 “M6 → D5” , 因此该部 17 不进行复制处理。
     接着, 由于在第二自变量的有向线段集合 [5] 中存在作为第一自变量的有向线 段集合 [4] 的元素的有向线段 “M6 → YC 10” , 因此在步骤 S149 中, 该部 17 将有向线段 “M6 → YC 10” 复制到有向线段 AND 结果集合 [4] 中。
     接着, 由于在第二自变量的有向线段集合 [5] 中存在作为第一自变量的有向线 段集合 [5] 的元素的有向线段 “M7 → YC 10” , 因此在步骤 S149 中, 该部 17 将有向线段 “M7 → YC 10” 复制到有向线段 AND 结果集合 [5] 中。
     当根据通过以上的处理所得到的器件集合 [1] ~ [5] 以及有向线段集合 [2] ~ [5] 来描绘有向图时, 成为图 38 所示的结果。有向线段表示从某一器件向另一器件的依赖关系, 器件与有向线段相互密切关 联, 但是通过这样由 AND 处理执行部 17 首先处理器件集合的共同元素的抽取 ( 逻辑和 ) 之 后, 根据其结果来处理有向线段集合的共同元素的抽取 ( 逻辑积 ), 从而能够没有矛盾地对 有向图彼此进行逻辑积 AND 运算。
     此外, 有向图彼此的逻辑积 AND 运算与其有向图的某一方或双方是向前依赖关系 还是向后依赖关系无关。
     图 29 的式编号 S016 表示以与用于图 2 的 AND 处理执行部 17 实施对照索引彼此 的逻辑和的处理的指令相同的分析指令 AND 来指定用于图 23 的 AND 处理执行部 17 实施器 件依赖关系有向图彼此的逻辑和的处理的指令的例子。取而代之, 在假设用不同的指令对 它们进行定义 ( 例如将前者定义为 VAR_FWD_BWD_AND, 将后者定义为 VAR_REF_AND) 并区分 使用的实施方式中, 在此使用的技术也与本实施方式中已说明的技术相同。
     另外, 在使用本实施方式的处理方法来处理图 29 的式编号 S017 的情况下, 其结果 如图 38 的下部所示。由于用第一自变量所指定的有向图的深度被反映到结果中, 因此当比 较式编号 S016 的结果与式编号 S017 的结果时, 可知虽然元素器件以及元素有向线段所属 的集合的深度不同, 但是器件依赖关系有向图的结构都相同。 此外, 不仅是器件依赖关系有向图的结构, 对于本实施方式的输出结果, 还可以追 加实施用于使元素器件以及元素有向线段所属的集合的深度也相同的处理, 但是这偏离本 发明的主旨, 因此省略其记载。
     < 实施方式 5 的效果 >
     1) 通过能够进行梯形程序中的器件的依赖关系的有向图彼此的逻辑运算 ( 逻辑 积 AND 处理 ), 从而能够抽取所期望的器件依赖关系有向图, 能够节省涉及程序分析的作 业。
     2) 能够用相同的分析指令 AND 来指定用于实施对照索引彼此的逻辑和的指令和 用于实施器件依赖关系有向图彼此的逻辑积的指令。还考虑假设用不同的指令对它们 ( 例 如将前者定义为 VAR_REF_AND, 将后者定义为 VAR_FWD_BWD_AND) 进行定义来区分使用的实 施方式, 但是需要根据成为分析指令 AND 的对象的数据种类而区分使用指令。不管数据种 类如何, 将实施逻辑积的指令定义为分析指令 AND 的情况下使用更方便。在区分使用指令 的情况下, 用户需要在帮助或使用说明书等中查找与各个数据种类相对应的逻辑积指令, 但是如果能够用分析指令 AND 来实施所有的指令, 则不存在其必要性, 能够节省涉及程序 分析的作业。
     ( 实施方式 6)
     在本实施方式中, 记载能够抽取与从梯形程序中抽取出的器件依赖关系的有向图 中存在的器件有关的对照索引的技术。
     如已经说明那样, 分析指令 VAR_REF 是用于抽取变量 ( 器件 ) 的对照索引的指令, 在图 29 的式编号 S018 中示出了如下例子 : 在分析对象单元中指定用于对成为分析对象的 器件依赖关系有向图进行指定的式编号, 在分析条件单元中指定成为对照索引抽取的条件 的变量 ( 器件 )。在式编号 S018 中, 在分析条件单元中没有指定变量 ( 器件 ), 这示出了指 定所有器件的例子。
     在此, 图 39 是表示图 23 的变量使用一览抽取处理执行部 12 所执行的分析指令
     VAR_REF 的处理流程的流程图。
     首先, 变量使用一览抽取处理执行部 12 在步骤 S152 中确认成为分析对象的数据 种类是否是器件依赖关系有向图。如果数据种类是器件依赖关系有向图, 则该部 12 进行已 经说明的图 10 的处理流程。
     另一方面, 在分析对象单元中指定的式编号指定抽取来自器件依赖关系有向图的 对照索引的情况下, 该部 12 作为预准备而生成空的本结果集合 ( 步骤 S153)。
     接着, 变量使用一览抽取处理执行部 12 进行如下处理 : 从器件依赖关系有向图的 有向线段集合的各元素中, 抽取对照索引信息 ( 步骤 S154)。此外, 为了进行该处理, 在图 23 的变量依赖关系抽取处理执行部 13 执行根据分析指令 VAR_FWD 或 VAR_BWD 来抽取器件 依赖关系有向图的处理时, 需要保持图 31 所示的数据作为有向线段的数据结构。
     变量使用一览抽取处理执行部 12 根据图 39 所示的处理流程对图 29 的式编号 S018 进行处理, 由此从图 31 所示的式编号 S011 的器件依赖关系有向图的数据, 得到图 40 的结果。下面记载这一点的处理。
     在式编号 S018 中分析条件为空栏, 由于将所有器件作为抽取对象, 所以在步骤 S155 中变量使用一览抽取处理执行部 12 当然判断为 “是” , 在下一个步骤 S156 中也判断为 在本结果集合 ( 在该时刻为空 ) 中不存在有向线段集合 [2] 的元素有向线段的依赖源器件 X222, 因此, 在步骤 S157 中, 将依赖源器件 X222 与 “POU 名= MAIN, 步骤编号= 4, 命令= LD” 的信息一起追加到本结果集合中。
     在下一个步骤 S158 中当然被判断为 “是” , 在步骤 S159 中, 由于在本结果集合中不 存在有向线段集合 [2] 的元素有向线段的依赖目的地器件 M3, 因此在步骤 S160 中, 该部 12 将依赖目的地器件 M3 与 “POU 名= MAIN, 步骤编号= 5, 命令= SET” 的信息一起追加到本 结果集合中。
     在步骤 S156 中, 由于在本结果集合中不存在下一个有向线段集合 [3] 的元素有向 线段的依赖源器件 M3( 虽然已经存在相同的变量 ( 器件 )M3, 但不存在 POU 名、 步骤编号以 及命令都相同的变量 ( 器件 )M3), 因此在步骤 S157 中, 该部 12 将依赖源器件 M3 与 “POU 名 = MAIN, 步骤编号= 6, 命令= LD” 的信息一起追加到本结果集合中。
     在步骤 S159 中, 由于在本结果集合中不存在有向线段集合 [3] 的元素有向线段的 依赖目的地器件 M4, 因此在步骤 S160 中, 该部 12 将依赖目的地器件 M4 与 “POU 名= MAIN, 步骤编号= 7, 命令= RST” 的信息一起追加到本结果集合中。
     在步骤 S156 中, 由于在本结果集合中不存在下一个有向线段集合 [4] 的第一个元 素有向线段的依赖源器件 M4( 已经存在虽然相同的变量 ( 器件 )M4, 但是不存在 POU 名、 步 骤编号以及命令都相同的变量 ( 器件 )M4), 因此在步骤 S157 中, 该部 12 将依赖源器件 M4 与 “POU = SUB, 步骤编号= 0, 命令= LDI” 的信息一起追加到本结果集合中。
     在步骤 S159 中, 由于在本结果集合中不存在有向线段集合 [4] 的第一个元素有向 线段的依赖目的地器件 M7, 因此在步骤 S160 中, 该部 12 将依赖目的地器件 M7 与 “POU = SUB, 步骤编号= 2, 命令= OUT” 的信息一起追加到本结果集合中。
     在步骤 S156 中, 由于在本结果集合中存在有向线段集合 [4] 的第二个元素有向线 段的依赖源器件 M4( 存在 POU 名、 步骤编号以及命令都相同的变量 ( 器件 )M4), 因此该部 12 不进行向本结果集合进行追加的追加处理。在步骤 S159 中, 由于在本结果集合中不存在有向线段集合 [4] 的第二个元素有向 线段的依赖目的地器件 M8, 因此在步骤 S160 中, 该部 12 将依赖目的地器件 M8 与 “POU 名= SUB, 步骤编号= 3, 命令= OUT” 的信息一起追加到本结果集合中。
     在步骤 S156 中, 接下来由于在本结果集合中不存在有向线段集合 [5] 的元素有向 线段的依赖源器件 M7( 确实存在相同的变量 ( 器件 )M7, 但是不存在 POU 名、 步骤编号以及 命令都相同的变量 ( 器件 )M7), 因此在步骤 S157 中, 该部 12 将依赖源器件 M7 与 “POU 名= SUB, 步骤编号= 8, 命令= AND” 的信息一起追加到本结果集合。
     在步骤 S159 中, 由于在本结果集合中不存在有向线段集合 [5] 的元素有向线段的 依赖目的地器件 YC 10, 因此在步骤 S160 中, 该部 12 将依赖目的地器件 YC 10 与 “POU 名= SUB, 步骤编号= 9, 命令= OUT” 的信息一起追加到本结果集合中。
     最后, 在步骤 S162 中, 该部 12 以变量 ( 器件 ) 为关键字对本结果集合进行分类, 将通过分类得到的结果作为分析结果而输出。图 23 的变量使用一览显示部 21 接收提供该 分析结果的信号, 输出用于在图 1 的显示部 4 的画面上显示分析结果的显示信号。
     另外, 该部 12 也同样地处理图 29 的下一个式编号 S019( 其中, 在图 39 的步骤 S155 和步骤 S158 中, 仅抽取变量 ( 器件 )M 作为对象 ), 其结果, 得到图 41 所示的结果。
     < 实施方式 6 的效果 >
     1) 能够关于所指定的变量 ( 器件 ), 抽取有依赖关系的变量 ( 器件 ) 的对照索引, 能够抽取所期望的对照索引。
     2) 与此相同的是, 即使用户对不同的对照索引的指令式逐一地手动输入在抽取器 件依赖关系的有向图时所指定的梯形程序以及从该梯形程序中抽取出的器件依赖关系的 有向图中存在的器件, 并如分析指令 VAR_REF(S008、 X222、 M3、 M4、 M7、 M8、 YC 10) 那样进行 指定, 也能够得到相同的结果, 但是根据本实施方式, 能够节省其输入的劳力和时间。
     ( 实施方式 7)
     本实施方式涉及抽取梯形程序中的子程序调用 ( 从某一 POU 调用另一 POU) 的依 赖关系 ( 下面称为 “POU 调用依赖关系” ) 的有向图的技术。
     在此, 图 42 是表示图 1 的程序分析支援装置的微处理器 2 中的本实施方式所涉及 的功能部分的软件结构图。当比较图 42 和图 23 时, 在图 42 的功能部结构中, 分析条件执 行部 11 还具备用于执行 POU 调用依赖关系的有向图的抽取处理的 POU 依赖关系抽取处理 执行部 15, 分析结果显示部 20 还具备 POU 一览显示部 23 和用于显示 POU 调用依赖关系有 向图结果的 POU 依赖关系显示部 24。
     首先, 下面使用图 43 来记载梯形程序中的 POU 调用依赖关系。
     POU 调用使用 CALL 命令, 在 CALL 命令的自变量中指定进行调用的目的地的 POU 的 程序的开头中描述的程序指针。例如, 在程序 MAIN 中具有调用程序指针 P10 的描述, 在程 序的开头描述了程序指针 P10 的 POU 名为 P10 的 POU 被调用。这样, 图 43 示出了对除了程 序 MAIN 和程序 SUB1、 SUB2 以外的其它程序附加了与程序指针相同的 POU 名的例子, 并且示 出了如下例子 : 程序 MAIN 设定扫描执行, 程序 SUB1 和 SUB2 设定扫描执行或周期执行或初 始执行, 附加有与程序指针相同的 POU 名的其它程序设定了待机执行。此外, 在图 43 中, 在 各 POU 的程序描述中仅抽出与调用相关联的部分来进行图示, 省略与调用没有关联的部分 的梯形图。接着, 记载抽取梯形程序中的 POU 调用依赖关系的有向图的技术。
     在此, 图 44 是表示为了由用户使用图 1 的输入部 5 来输入程序分析条件而显示在 显示部 4 的画面上的例子的图, 是已经说明的图 7 以及图 29 的后续的图。
     分析指令 POU_FWD 是用于抽取所指定的 POU 所调用的 POU( 进而, 将该 POU 所调用 的 POU... 递归地抽取 ) 并得到表示其依赖关系的有向图 (POU 调用向前依赖关系的有向 图 ) 的指令。 用户针对分析指令 POU_FWD, 在分析对象单元中指定用于对成为分析对象的程 序范围进行指定的式编号, 在分析条件单元中指定成为 POU 调用向前依赖关系有向图的起 点的 POU。
     在图 44 的式编号 S020 中, 在分析指令 POU_READ 的分析对象单元中没有指定程序 (POU), 这表示对构成程序的所有 POU 的读入进行指定的例子。在此, 读入图 43 所示的所有 程序, 其结果, 在图 44 中示出了读入数量 21 显示在结果件数的单元中的例子。
     图 44 的式编号 S021 表示指定抽取作为式编号 S020 的执行结果而由各部 14、 23 输出的集合中所包含的元素 POU、 即构成程序的 POU 全体中的来自程序 MAIN 的 POU 调用向 前依赖关系的有向图的例子, 图 42 的 POU 依赖关系抽取处理执行部 15 将 POU 调用向前依 赖关系的有向图的数据作为该式编号 S021 的分析结果而输出到 POU 依赖关系显示部 24, 该 部 24 将该有向图的描绘所需的显示数据输出到图 1 的显示部 4。
     接着, 关于从所指定的梯形程序中抽取来自所指定的 POU 的 POU 调用向前依赖关 系的有向图的技术, 在图 45 中示出图 42 的 POU 依赖关系抽取处理执行部 15 所执行的分析 指令 POU_FWD 的处理流程。图 45 中的处理流程以及图 46 中的数据结构与抽取器件依赖关 系有向图的分析指令 VAR_FWD 的情况类似。
     当 POU 依赖关系抽取处理执行部 15 按照图 45 所示的处理流程来处理图 44 的式 编号 S021 时, 得到图 46 所示的结果。下面详细说明这一点。
     在步骤 S170 中, 由于在第一自变量的 POU 集合中存在与在作为 POU 集合 [1] 的元 素 POU 的程序 MAIN 中所调用的程序指针 P10 相同名称的 POU, 因此 POU 依赖关系抽取处理 执行部 15 从该 POU 集合中抽取 MAIN 所调用的其它 POU 即 P10。
     在步骤 S172 中, 该部 15 将从程序 MAIN 朝向作为其它 POU 的 P10 的有向线段, 追 加到有向线段集合 [2] 中。作为此时的有向线段的数据结构, 只要保持依赖源 POU 和依赖 目的地 POU 就足够了。但是, 鉴于后述的其它实施方式的情况, 还能够在有向线段的数据结 构中将步骤编号一起保持。
     在步骤 S173 中, 由于在 POU 集合 [1] ~ [2] 中不存在 P10, 因此该部 15 判断为 “否” , 在步骤 S174 中, 该部 15 将 P10 追加到 POU 集合 [2] 中。
     在本例中, 从程序 MAIN 调用而被抽取的 POU 只是程序 P10, 因此不执行步骤 S175。
     在步骤 S176 中, 该部 15 要对 POU 集合 [1] 的下一个元素 POU 器件进行处理, 但是 在本例中, 由于在 POU 集合 [1] 中不存在 MAIN 以外的元素, 因此该部 15 转移到步骤 S177, 在判断为 “是” 的结果, 在下一个步骤 S178 中, 该部 15 使变量 d 递增 1。
     在递增处理后的步骤 S170 中, 由于在作为 POU 集合 [2] 的元素 POU 的程序 P10 中 调用的程序 P11 以及 P12 存在于第一自变量的 POU 集合内, 因此该部 15 从第一自变量的 POU 集合中抽取程序 P11 和 P12。
     在步骤 S172 中, 该部 15 将从程序 P10 朝向 P11 的有向线段, 追加到有向线段集合[2] 中。 在步骤 S173 中, 由于在 POU 集合 [1] ~ [3] 中不存在程序 P11, 因此在步骤 S174 中, 该部 15 将 P11 追加到 POU 集合 [3] 中。
     该部 15 对作为所抽取出的下一个 POU 的 P12 进行处理 ( 步骤 S176)。
     在步骤 S172 中, 该部 15 将从 P10 朝向 P12 的有向线段追加到有向线段集合 [2] 中。
     在步骤 S173 中, 由于在 POU 集合 [1] ~ [3] 中不存在程序 P12, 因此在步骤 S174 中, 该部 15 将 P12 追加到 POU 集合 [3] 中。
     该部 15 在步骤 S176 中要对 POU 集合 [2] 的下一个元素 POU 进行处理, 但是由于在 POU 集合 [2] 中不存在 P10 以外的元素 POU, 因此该部 15 转移到步骤 S177, 在判断为 “是” 的结果, 在下一个步骤 S178 中, 该部 15 使变量 d 递增 1。
     在接着递增处理的步骤 S170 中, 由于在作为 POU 集合 [3] 的元素 POU 的 P11 的程 序中调用的程序 P35 和 P36 存在于第一自变量的 POU 集合内, 因此该部 15 从第一自变量的 POU 集合中抽取 P35 和 P36。
     在步骤 S172 中, 该部 15 将从 P11 朝向 P35 的有向线段, 追加到有向线段集合 [4] 中。
     在步骤 S173 中, 由于在 POU 集合 [1] ~ [4] 中不存在 P35, 因此在步骤 S174 中, 该 部 15 将 P35 追加到 POU 集合 [4] 中。
     该部 15 对作为所抽取出的下一个 POU 的 P36 进行处理 ( 步骤 S175)。
     在步骤 S172 中, 该部 15 将从 P11 朝向 P36 的有向线段, 追加到有向线段集合 [4] 中。
     在步骤 S173 中, 由于在 POU 集合 [1] ~ [4] 中不存在 P36, 因此在步骤 S174 中, 该 部 15 将 P36 追加到 POU 集合 [4] 中。
     在步骤 S176 中, 该部 15 对 POU 集合 [3] 的下一个元素 POU 器件即 P12 进行处理。
     首先, 在步骤 S170 中, 由于在 P12 的程序中调用的 P37 和 P38 存在于第一自变量 的 POU 集合中, 因此该部 15 抽取 P37 和 P38。
     在步骤 S172 中, 该部 15 将从 P12 朝向 P37 的有向线段, 追加到有向线段集合 [4] 中。
     在步骤 S173 中, 由于在 POU 集合 [1] ~ [4] 中不存在 P37, 因此在步骤 S174 中, 该 部 15 将 P37 追加到 POU 集合 [4] 中。
     该部 15 对作为所抽取出的下一个 POU 的 P38 进行处理 ( 步骤 S175)。
     在步骤 S172 中, 该部 15 将从 P12 朝向 P38 的有向线段, 追加到有向线段集合 [4] 中。
     在步骤 S173 中, 由于在 POU 集合 [1] ~ [4] 中不存在 P38, 因此在步骤 S174 中, 该 部 15 将 P38 追加到 POU 集合 [4] 中。
     经过下一个步骤 S175 ~ S178, 在步骤 S170 中, 由于在作为 POU 集合 [4] 的元素 POU 的 P35 的程序中调用的 P39 存在于第一自变量的 POU 集合中, 因此该部 15 抽取 P39。
     在步骤 S172 中, 该部 15 将从 P35 朝向 P39 的有向线段, 追加到有向线段集合 [5] 中。
     在步骤 S173 中, 由于在 POU 集合 [1] ~ [5] 中不存在 P39, 因此在步骤 S174 中, 该 部 15 将 P39 追加到 POU 集合 [5] 中。
     在步骤 S175 中, 所抽取出的 POU 只是 P39。该部 15 转移到步骤 S176。
     在步骤 S170 中, 该部 15 要对作为 POU 集合 [4] 的下一个元素 POU 的 P36 进行处 理, 但是在 P36 的程序中不调用其它 POU。
     在步骤 S170 中, 该部 15 要对作为 POU 集合 [4] 的下一个元素 POU 的 P37 进行处 理, 但是在 P37 的程序中不调用其它 POU。
     在步骤 S170 中, 该部 15 要对作为 POU 集合 [4] 的下一个元素 POU 的 P38 进行处 理, 但是在 P38 的程序中不调用其它 POU。
     经过步骤 S177 和步骤 S178, 该部 15 在步骤 S170 中要对作为 POU 集合 [5] 的元素 POU 的 P39 进行处理, 但是在 P39 的程序中不调用其它 POU, 因此该部 15 在步骤 S177 中判 断为 “否” , 转移到步骤 S179, 输出 POU 调用依赖关系有向图分析结果。
     同样地, 当 POU 依赖关系抽取处理执行部 15 处理图 44 的式编号 S022 时, 作为以 程序 SUB1 为起点的 POU 调用向前依赖关系有向图, 得到图 47 所示的结果。
     < 实施方式 7 的效果 > 能够抽取以梯形程序为分析对象的 POU 调用的向前依赖关系的有向图, 由此能够 节省涉及程序分析的作业。
     ( 实施方式 8)
     分析指令 POU_BWD 是用于抽取调用用户所指定的 POU( 进而, 将调用该 POU 的 POU... 递归地抽取 ) 并得到表示其依赖关系的有向图 (POU 调用向后依赖关系的有向图 ) 的指令。 针对分析指令 POU_BWD, 用户在分析对象单元中指定用于对成为分析对象的程序范 围进行指定的式编号, 在分析条件单元中指定成为 POU 调用向后依赖关系有向图的起点的 POU。
     图 44 的式编号 S025 表示指定抽取作为式编号 S020 的结果而输出的 POU 集合中 所包含的元素 POU、 即构成程序的 POU 全体中的来自 P39 的 POU 调用向后依赖关系的有向图 的例子, 作为其分析结果, 输出有向图的描绘所需的数据。
     在此, 图 48 是表示分析指令 POU_BWD 的处理流程的流程图。图 48 中的处理流程 以及数据结构与抽取器件依赖关系有向图的分析指令 VAR_BWD 的情况类似。
     当图 42 的 POU 依赖关系抽取处理执行部 15 按照图 48 所示的流程来处理图 44 的 式编号 S025 时, 得到图 49 所示的结果。下面详细说明这一点。
     在步骤 S189 中, POU 依赖关系抽取处理执行部 15 通过第一自变量的 POU 集合的各 程序来确认是否调用了作为 POU 集合 [1] 的元素 POU 的 P39, 其结果, 从第一自变量的 POU 集合中抽取元素 POU 的 P11、 P23 以及 P28。
     在步骤 S191 中, 该部 15 将从 P11 朝向 P39 的有向线段, 追加到有向线段集合 [2] 中。 作为此时的有向线段的数据结构, 只要保持依赖源 POU 和依赖目的地 POU 就足够了。 但 是, 鉴于后述的实施方式, 还能够在有向线段的数据结构中将步骤编号一起保持。
     在步骤 S192 中, 由于在 POU 集合 [1] ~ [2] 中不存在 P11, 因此在步骤 S193 中, 该 部 15 将 P11 追加到 POU 集合 [2] 中。
     在下一个步骤 S194 中, 该部 15 对作为所抽取出的下一个 POU 的 P23 进行处理。
     在步骤 S191 中, 该部 15 将从 P23 朝向 P39 的有向线段, 追加到有向线段集合 [2]中。 在步骤 S192 中, 由于在 POU 集合 [1] ~ [2] 中不存在 P23, 因此在步骤 S193 中, 该 部 15 将 P23 追加到 POU 集合 [2] 中。
     在下一个步骤 S194 中, 该部 15 对作为所抽取出的下一个 POU 的 P28 进行处理。
     在步骤 S191 中, 该部 15 将从 P28 朝向 P39 的有向线段, 追加到有向线段集合 [2] 中。
     在步骤 S192 中, 由于在 POU 集合 [1] ~ [2] 中不存在 P28, 因此在步骤 S193 中, 该 部 15 将 P28 追加到 POU 集合 [2] 中。
     在步骤 S195 中, 该部 15 要对 POU 集合 [1] 的下一个元素 POU 进行处理, 但是由于 在 POU 集合 [1] 中不存在 P39 以外的元素 POU, 因此会经过步骤 S196 和 S197。
     在步骤 S189 中, POU 依赖关系抽取处理执行部 15 通过第一自变量的 POU 集合的各 程序来确认是否调用了作为 POU 集合 [2] 的元素 POU 的 P11, 其结果, 从第一自变量的 POU 集合中抽取元素 POU 的 P10。
     在步骤 S191 中, 该部 15 将从 P10 朝向 P11 的有向线段, 追加到有向线段集合 [3] 中。
     在步骤 S192 中, 由于在 POU 集合 [1] ~ [3] 中不存在 P10, 因此在步骤 S193 中, 该 部 15 将 P10 追加到 POU 集合 [3] 中。
     在下一个步骤 S194 中, 所抽取出的 POU 只是 P10, 该部 15 为了处理作为 POU 集合 [2] 的下一个元素 POU 的 P23, 转移到步骤 S189。
     在步骤 S189 中, POU 依赖关系抽取处理执行部 15 通过第一自变量的 POU 集合的各 程序, 来确认是否调用了作为 POU 集合 [2] 的元素 POU 的 P23, 其结果, 从第一自变量的 POU 集合中抽取元素 POU 的 P20。
     在步骤 S191 中, 该部 15 将从 P20 朝向 P23 的有向线段, 追加到有向线段集合 [3] 中。
     在步骤 S192 中, 由于在 POU 集合 [1] ~ [3] 中不存在 P20, 因此在步骤 S193 中, 该 部 15 将 P20 追加到 POU 集合 [3] 中。
     在下一个步骤 S194 中, 所抽取出的 POU 只是 P20, 该部 15 为了处理 POU 集合 [2] 的剩下的元素 POU 即 P28, 转移到步骤 S189。
     在步骤 S189 中, POU 依赖关系抽取处理执行部 15 通过第一自变量的 POU 集合的各 程序, 来确认是否调用了作为 POU 集合 [2] 的元素 POU 的 P28, 其结果, 从第一自变量的 POU 集合中抽取元素 POU 的 P25。
     在步骤 S191 中, 该部 15 将从 P25 朝向 P28 的有向线段, 追加到有向线段集合 [3] 中。
     在步骤 S192 中, 由于在 POU 集合 [1] ~ [3] 中不存在 P25, 因此在步骤 S193 中, 该 部 15 将 P25 追加到 POU 集合 [3] 中。
     在下一个步骤 S194 中, 所抽取出的 POU 只是 P25, 该部 15 完成了针对 POU 集合 [2] 内的所有元素 POU 的处理, 因此在步骤 S195 中判断为 “是” 之后, 经过步骤 S197 和 S187 而 转移到步骤 S189。
     在步骤 S189 中, POU 依赖关系抽取处理执行部 15 通过第一自变量的 POU 集合的各 程序, 来确认是否调用了作为 POU 集合 [3] 的元素 POU 的 P10, 其结果, 从第一自变量的 POU 集合中抽取元素 POU 的 MAIN。
     在步骤 S191 中, 该部 15 将从 MAIN 朝向 P10 的有向线段, 追加到有向线段集合 [4] 中。
     在步骤 S192 中, 由于在 POU 集合 [1] ~ [4] 中不存在 MAIN, 因此在步骤 S193 中, 该部 15 将 MAIN 追加到 POU 集合 [4] 中。
     在下一个步骤 S194 中, 所抽取出的 POU 只是 MAIN, 该部 15 为了处理作为 POU 集合 [3] 的下一个元素 POU 的 P20( 步骤 S195), 转移到步骤 S189。
     在步骤 S189 中, POU 依赖关系抽取处理执行部 15 通过第一自变量的 POU 集合的各 程序, 来确认是否调用了作为 POU 集合 [3] 的元素 POU 的 P20, 其结果, 从第一自变量的 POU 集合中抽取元素 POU 的 SUB1。
     在步骤 S191 中, 该部 15 将从 SUB1 朝向 P20 的有向线段, 追加到有向线段集合 [4] 中。
     在步骤 S192 中, 由于在 POU 集合 [1] ~ [4] 中不存在 SUB1, 因此在步骤 S193 中, 该部 15 将 SUB1 追加到 POU 集合 [4] 中。
     在下一个步骤 S194 中, 所抽取出的 POU 只是 SUB1, 该部 15 为了处理作为 POU 集合 [3] 的最后的元素 POU 的 P25( 步骤 S195), 转移到步骤 S189。
     在步骤 S189 中, POU 依赖关系抽取处理执行部 15 通过第一自变量的 POU 集合的各 程序, 来确认是否调用了作为 POU 集合 [3] 的元素 POU 的 P25, 其结果, 从第一自变量的 POU 集合中抽取元素 POU 的 SUB2。
     在步骤 S191 中, 该部 15 将从 SUB2 朝向 P25 的有向线段, 追加到有向线段集合 [4] 中。
     在步骤 S192 中, 由于在 POU 集合 [1] ~ [4] 中不存在 SUB2, 因此在步骤 S193 中, 该部 15 将 SUB2 追加到 POU 集合 [4] 中。
     在下一个步骤 S194 中, 所抽取出的 POU 只是 SUB2, 该部 15 完成了针对 POU 集合 [3] 内的所有元素 POU 的处理, 因此在步骤 S195 中判断为 “是” 之后, 经过步骤 S197 和 S187 而再次转移到步骤 S189。
     在步骤 S189 中, POU 依赖关系抽取处理执行部 15 通过第一自变量的 POU 集合的 各程序, 来确认是否调用了作为 POU 集合 [4] 的元素 POU 的 MAIN、 SUB1 或者 SUB2, 但是由 于其它的任何程序都没调用 MAIN、 SUB1 或者 SUB2, 因此转移到步骤 S196, 在步骤 S196 中判 断为 “否” 的结果, 转移到步骤 S198。
     在步骤 S198 中, 该部 15 进行使存在元素 POU 的 POU 集合以及有向线段集合的深 度倒转的处理。此时, 要特别注意的点是, 在使有向线段集合的编号倒转时, 使所有的有向 线段的元素向其应所属的深度移动 ( 但是, 在本例中没有符合的 )。
     < 实施方式 8 的效果 >
     能够抽取以梯形程序为分析对象的 POU 调用的向后依赖关系的有向图, 由此能够 节省涉及程序分析的作业。
     ( 实施方式 9)本实施方式涉及能够进行梯形程序中的 POU 调用依赖关系的有向图彼此的逻辑 运算 ( 逻辑和 OR 处理或逻辑积 AND 处理 ) 的技术。
     图 44 的式编号 S023 表示指定抽取用式编号 S021 抽取出的 POU 调用依赖关系有 向图抽取结果与用式编号 S022 抽取出的另一 POU 调用依赖关系有向图抽取结果的逻辑和 的例子。
     也就是说, 在本发明中, 全部用相同的分析指令 OR, 共同地指定 1) 用于实施对照 索引彼此的逻辑和的分析指令、 2) 用于实施器件依赖关系有向图彼此的逻辑和的分析指 令、 以及 3) 用于实施 POU 调用依赖关系有向图彼此的逻辑和的分析指令。
     在此, 图 50 是表示图 42 的 OR 处理执行部 18 所执行的分析指令 OR 的处理流程的 流程图, 图 50 的处理内容与执行图 35 所示的器件依赖关系有向图彼此的逻辑和的处理相 同。
     当 OR 处理执行部 18 按照图 50 所示的处理流程对图 44 的式编号 S023 进行处理 时, 作为图 46 的结果与图 47 的结果的逻辑和的结果, 得到图 51 所示的结果。
     式编号 S023 表示用相同的分析指令 OR 来指定用于实施对照索引彼此的逻辑和的 分析指令、 用于实施器件依赖关系有向图彼此的逻辑和的指令、 以及用于实施 POU 调用依 赖关系有向图彼此的逻辑和的指令的例子, 在假设分别用不同的指令 ( 例如将前者定义为 VAR_REF_OR 以及 VAR_FWD_BWD_OR, 将后者定义为 POU_FWD_BWD_OR) 进行定义而区分使用的 实施方式中, 所使用的技术也是相同的。
     另外, 如果使用本实施方式, 则对于作为分析对象 (POU 调用依赖关系有向图的起 点 ) 的 POU, 分析指令 POU_FWD 成为线性的算子。换言之, 将 POU 调用依赖关系有向图的逻 辑和 OR 的处理流程设定为如图 50 所示, 以使分析指令 POU_FWD 被定义为线性的分析指令。
     在此, 通过将分析对象表述为 POU_FWD 函数的自变量, 并用 + 来表述 OR 运算, 从而 记载分析指令 POU_FWD 的线性时, 通过下式 4 所示的式子来表现式编号 S024。
     [ 式 4]
     POU_FWD(MAIN, SUB1) = POU_FWD(MAIN+SUB) = POU_FWD(MAIN)+POU_FWD(SUB1)
     因而, 在如图 44 的式编号 S024 所示那样列举指定了作为分析指令 POU_FWD 的分 析对象 (POU 调用依赖关系有向图的起点 ) 的 POU 的情况下, 能够进行如下递归处理 : 将对 以各个 POU 为分析对象的分析指令 POU_FWD 的结果进行 OR 处理而得到的结果, 设为式编号 S024 的结果。关于分析指令 POU_BWD, 也同样能够进行递归处理。
     由此, 即使用户不用如式编号 S021、 S022、 S023 那样逐一输入三个条件式, 也能够 通过一个式编号 S024 而得到与式编号 S023 相同的结果。
     另外, 关于分析对象器件的列举指定的方法, 在由式编号 S010 表示的分析指令 VAR_REF、 由式编号 S014 表示的分析指令 VAR_FWD、 以及由式编号 S024 表示的分析指令 POU_FWD 中也是相同的, 还能够取得不同的分析指令间的分析条件指定方法的匹配性, 一点 也不矛盾。这一点关于分析指令 POU_BWD 也是同样的。
     同样地, 图 52 示出图 42 的 AND 处理执行部 17 所执行的分析指令 AND 的处理流程。 处理内容与进行图 37 所示的器件依赖关系有向图彼此的逻辑积时的处理相同。
     当 AND 处理执行部 17 按照图 59 所示的处理流程对图 44 的式编号 S026 进行处理 时, 作为图 49 的结果与图 51 的结果的逻辑积的结果, 得到图 53 的结果。关于下一个式编号 S027 的处理, 也得到相同的结果。
     < 实施方式 9 的效果 >
     能够进行梯形程序中的 POU 调用的依赖关系的有向图彼此的逻辑运算 ( 逻辑和 OR 处理 ), 由此能够抽取所期望的 POU 调用依赖关系有向图, 能够节省涉及程序分析的作业。
     另外, 能够用相同的分析指令 OR, 来指定用于实施对照索引彼此的逻辑和的指令、 用于实施器件依赖关系有向图彼此的逻辑和的指令、 以及用于实施 POU 调用依赖关系有向 图彼此的逻辑和的指令。还考虑假设分别定义不同的指令 ( 例如将前者定义为 VAR_REF_ OR 以及 VAR_FWD_BWD_OR, 将后者定义为 POU_FWD_BWD_OR) 来区分使用的实施方式, 但是需 要根据成为分析指令 OR 的对象的器件种类来区分使用指令。不管数据种类如何, 将实施逻 辑和的分析指令定义为分析指令 OR 的情况下使用更方便。在区分使用分析指令的情况下, 用户需要在帮助或者使用说明书等中查找与各个数据种类对应的逻辑和指令, 但是如果能 够用分析指令 OR 来实施所有的指令, 则用户不需要查找, 能够节省涉及程序分析的作业。
     当然, 关于逻辑积 AND 处理, 也具有相同的效果。
     ( 实施方式 10)
     本实施方式涉及能够以 POU 调用依赖关系有向图中存在的 POU 为对象而抽取器件 对照索引或器件依赖关系有向图的技术。
     图 54 的式编号 S028 表示指定抽取用图 44 的式编号 S021 抽取出的 POU 调用依赖 关系有向图中存在的 POU 的集合的例子。
     也就是说, 本发明示出如下例子 : 用相同的分析指令 POU_READ, 来指定 1) 用于对 任意的 POU 的读入进行指定而输出该 POU 的集合的指令、 (2) 对构成程序的所有 POU 地读 入进行指定而输出该 POU 的集合的指令、 以及 3) 用于抽取 POU 调用依赖关系有向图中存在 的 POU 的集合的指令。
     接着, 记载通过分析指令 POU_READ 来抽取 POU 调用依赖关系有向图中存在的 POU 的集合的技术。
     在此, 图 54 示出了用于用户使用图 1 的输入部 5 向微处理器 2 输入程序分析条件 的显示部 4 的画面的例子, 相当于已说明的图 7、 图 29 以及图 44 的后续。
     另外, 图 55 是表示图 42 的 POU 一览抽取处理执行部 14 所执行的分析指令 POU_ READ 的处理流程的流程图。
     图 55 的处理内容与从器件依赖关系有向图中抽取器件对照索引时的分析指令 VAR_REF 的处理 ( 参照图 39) 类似。 但是, 在两者之间具有如下差异 : 在器件的情况下, 使用 附加了有向线段的信息的器件元素, 但是在 POU 的情况下, 不将有向线段的信息附加到 POU 元素。
     当图 42 的 POU 一览抽取处理执行部 14 按照图 55 所示的处理流程来处理式编号 S028 时, 从图 46 的 POU 调用依赖关系有向图, 得到将 MAIN、 P10、 P11、 P12、 P35、 P36、 P37、 P38 以及 P39 作为 POU 元素的 POU 集合。
     图 54 的式编号 S029 表示对用式编号 S028 抽取出的 POU 元素指定抽取器件对照 索引的例子。与式编号 S029 的处理有关的技术如已经在实施方式 1 中所记载那样。
     由此, 不仅能够抽取以 POU 调用依赖关系有向图中存在的 POU 为对象的器件对照 索引, 而且还能够节省用户对分析指令 VAR_REF 的第一自变量逐一地输入作为从 POU 调用依赖关系有向图抽取出的 POU 元素的 MAIN、 P10、 P11、 P12、 P35、 P36、 P37、 P38 以及 P39 的 劳力和时间。
     图 54 的下一个式编号 S030 表示对用式编号 S028 抽取出的 POU 元素指定抽取器 件依赖关系有向图的例子。与式编号 S030 的处理有关的技术如在实施方式 2 和 3 中已经 所记载那样。
     由此, 不仅能够抽取以 POU 调用依赖关系有向图中存在的 POU 元素为对象的器件 依赖关系有向图, 而且还能够节省用户对分析指令 VAR_FWD 的第一自变量逐一地输入作为 从 POU 调用依赖关系有向图抽取出的 POU 元素的 MAIN、 P10、 P11、 P12、 P35、 P36、 P37、 P38 以 及 P39 的劳力和时间。这一点关于分析指令 VAR_BWD 也同样成立。
     图 54 的式编号 S031 的分析指令 VAR_REF 表示对用式编号 S021 抽取出的 POU 调 用依赖关系有向图指定抽取器件对照索引的例子。即, 式编号 S031 的分析指令 VAR_REF 是 用于抽取 POU 调用依赖关系有向图中存在的 POU 中的器件对照索引的指令。
     图 56 示出图 42 的变量使用一览抽取处理执行部 12 所执行的分析指令 VAR_REF 的处理流程。图 56 的处理内容是通过本发明中已经说明的图 10 所示的技术与图 55 所示 的技术的组合来实现的。
     由此, 对于式编号 S021, 即使用户不用如式编号 S028 和 S029 那样逐一输入两个条 件式, 也能够通过输入式编号 S031 这一个条件式而得到相同的结果。
     图 54 的式编号 S032 的分析指令 VAR_FWD 表示对于用式编号 S021 抽取出的 POU 调 用依赖关系有向图指定抽取器件依赖关系有向图的例子。 即, 式编号 S032 的分析指令 VAR_ FWD 是用于抽取 POU 调用依赖关系有向图中存在的 POU 中的器件依赖关系有向图的指令。
     图 57 示出图 42 的变量依赖关系抽取处理执行部 13 所执行的分析指令 VAR_FWD 的处理流程。图 57 的处理内容是通过本发明中已经说明的图 30 所示的技术与图 55 所示 的技术的组合来实现的。
     由此, 对于式编号 S021, 即使用户不用如式编号 S028 和 S030 那样逐一输入两个条 件式, 也能够通过输入式编号 S032 这一个条件式而得到相同的结果。
     关于分析指令 VAR_BWD, 这些点也成立。
     < 实施方式 10 的效果 >
     能够针对梯形程序中的 POU 调用依赖关系有向图, 抽取器件对照索引或者器件依 赖关系有向图。另外, 能够节省用户逐一输入从 POU 调用依赖关系有向图中抽取出的 POU 元素的劳力和时间。 而且, 用户不用逐一输入两个条件式, 通过输入一个条件式也能够得到 所期望的器件对照索引或器件依赖关系有向图。
     伴随这些优点, 能够节省涉及程序分析的作业。
     ( 实施方式 11)
     本实施方式涉及能够抽取器件对照索引或器件依赖关系有向图中存在的 POU 的 技术。 即, 如图 71 所示, 例如用户将通过执行分析指令 POU_READ 及其后续的分析指令 VAR_ REF 而得到的器件对照索引指定为第二自变量, 对第一自变量指定分析指令 POU_READ 来执 行该式编号, 由此能够再次得到 POU 的集合。与通过最初执行分析指令 POU_READ 而得到的 POU 集合的 POU 元素相比, 能够更加限制构成该再次得到的 POU 集合的 POU 元素的数量。同 样地, 用户将器件依赖关系有向图指定为第二自变量, 并对第一自变量指定分析指令 POU_READ 来执行该式编号, 由此能够再次得到 POU 的集合, 在这种情况下, 也能够更加限制构成 再次得到的 POU 集合的 POU 元素的数量。
     之后, 如下那样进一步开展新技术。
     A) 在从器件对照索引中抽取 POU 时, 用户对第一自变量指定成为分析对象的 POU, 对第二自变量指定成为分析条件的变量 ( 器件 ), 但是不限于在第一自变量中指定的所有 POU 中包含由第二自变量指定的变量 ( 器件 )。因此, 当用户在第一自变量中指定构成程序 的所有 POU、 并得到由第二自变量指定的变量 ( 器件 ) 的对照索引时, 在想要抽取使用这些 变量 ( 器件 ) 的 POU 的一览的情况下, 使用在本实施方式中以下记载的技术。
     B) 在从器件依赖关系有向图中抽取 POU 时, 用于对第一自变量指定成为分析对象 的 POU, 对第二自变量指定成为依赖分析的起点的变量 ( 器件 ), 但是不限于由第一自变量 指定的所有 POU 与抽取结果的器件依赖关系有向图有关。因此, 当用户在第一自变量中指 定构成程序的所有 POU、 并得到以由第二自变量指定的变量 ( 器件 ) 为起点的器件依赖关系 有向图时, 在想要抽取与该器件依赖关系有向图有关的 POU 的一览的情况下, 应用在本实 施方式中以下记载的技术。
     图 54 的式编号 S034 表示指定抽取在图 44 的式编号 S020 中读出的 POU 的集合、 即 构成程序的所有 POU 中的变量 ( 器件 )M[0-9] 以及 M[20-29] 的器件对照索引的例子。另 外, 图 54 的式编号 S035 表示抽取式编号 S034 的结果中存在的 POU 的一览的例子。 也就是说, 本发明示出如下例子 : 用相同的分析指令 POU_READ, 来指定 1) 用于对 任意的 POU 的读入进行指定来输出该 POU 的集合的指令、 2) 对构成程序的所有 POU 的读入 进行指定来输出该 POU 的集合的指令、 3) 用于抽取 POU 调用依赖关系有向图中存在的 POU 的集合的指令、 以及 4) 用于抽取器件对照索引中存在的 POU 的集合的指令。
     图 58 示出图 42 的 POU 一览抽取处理执行部 14 所执行的分析指令 POU_READ 的处 理流程。首先, 该部 14 确认成为对象的数据种类是否是器件对照索引。如果不是器件对照 索引, 则该部 14 进行图 55 的处理流程。另一方面, 如果成为对象的数据种类是器件对照索 引, 则该部 14 进行抽取该器件对照索引中存在的 POU 的集合并输出的处理。
     为了便于说明, 记载图 54 的式编号 S033 的情况, 当参照表示第一自变量的式编 号 S006 的器件对照索引结果的图 19 的画面中存在的各对照索引的程序名时, 该器件对照 索引中存在的 POU 只是 MAIN 和 SUB。因此, 当该部 14 根据图 58 的处理流程来处理式编号 S033 时, 得到以 MAIN 和 SUB 为元素的 POU 的集合。
     图 55 的式编号 S036 表示指定抽取用式编号 S020 读出的 POU 的集合、 即构成程序 的所有 POU 中的以变量 ( 器件 )M4095 为起点的器件依赖关系有向图的例子, 下一个式编号 S037 表示指定抽取与式编号 S036 的抽取结果中存在的器件有关的对照索引的例子, 下一 个式编号 S038 表示抽取式编号 S037 的抽取结果中存在的 POU 的一览的例子。这些各式编 号的处理如已经所记载那样。
     图 54 的式编号 S039 表示抽取与式编号 S036 的抽取结果有关的 POU 的一览的例 子。也就是说, 本发明示出如下例子 : 用相同的分析指令 POU_READ, 来指定 1) 用于对任意 的 POU 的读入进行指定来输出该 POU 的集合的指令、 2) 用于对构成程序的所有 POU 的读入 进行指定来输出该 POU 的集合的指令、 3) 用于抽取 POU 调用依赖关系有向图中存在的 POU 的集合的指令、 4) 用于抽取器件对照索引中存在的 POU 的集合的指令、 以及 5) 用于抽取与
     器件依赖关系有向图有关的 POU 的集合的指令。
     图 59 示出图 42 的 POU 一览抽取处理执行部 14 所执行的分析指令 POU_READ 的处 理流程。首先, 该部 14 确认成为对象的数据种类是否是器件依赖关系有向图。如果数据种 类不是器件依赖关系有向图, 则该部 14 进行图 58 的处理流程。另一方面, 如果成为对象的 数据种类是器件依赖关系有向图, 则该部 14 进行如下处理 : 针对该器件依赖关系有向图, 应用图 56 所示的分析指令 VAR_REF 来抽取器件对照索引, 并针对所抽取出的器件对照索 引, 应用图 58 所示的分析指令 POU_READ 的处理流程, 抽取 POU 的集合并输出。
     由此, 对于式编号 S036, 用户不用如式编号 S037 以及 S038 那样逐一输入两个条件 式, 通过输入式编号 S039 的一个条件式也能够得到相同的结果。
     < 实施方式 11 的效果 >
     能够抽取所抽取出的器件对照索引或者器件依赖关系有向图中存在的 POU。
     另外, 在抽取器件依赖关系有向图中存在的 POU 时, 用户不用逐一输入两个条件 式, 通过输入一个条件式也能够得到结果。
     通过这些优点, 能够节省涉及程序分析的作业。
     ( 实施方式 12)
     本实施方式涉及能够指定不同数据的逻辑运算的技术。例如, 在指定了器件对照 索引与器件依赖关系有向图的逻辑积 AND 的情况下, 图 1 的微处理器 2 只要通过其内部处 理而自动地解释并处理所指定的式编号, 以使首先将器件依赖关系有向图变换为器件对照 索引之后接着执行逻辑积运算的处理即可。
     在图 54 的式编号 S041 的逻辑积 AND 中, 第一自变量 S005 的输出是器件对照索引, 第二自变量 S011 的输出是器件依赖关系有向图。这样, 在不同的数据彼此的逻辑运算被指 定的情况下, 程序分析支援装置的规范 (specification) 被决定为微处理器 2 首先从第二 自变量的输出内容中抽取与第一自变量相同的数据形式的内容之后实施所指定的分析指 令的逻辑运算。
     由此, 用户首先对式编号 S011 输入用于抽取分析指令 VAR_REF 的式编号 S018, 之 后, 即使不像图 54 的式编号 S040 那样输入式编号 S005 与式编号 S018 的逻辑积 AND 的条 件式, 也能够通过输入式编号 S041 的一个条件式而得到相同的结果。
     图 54 的式编号 S042 的第一自变量和第二自变量被指定为与式编号 S041 的情况 相反的关系。在这种情况下, 分析指令 AND 也是器件对照索引与器件依赖关系有向图的逻 辑积 AND, 因此只要通过内部处理自动地解释并进行处理, 使得首先将器件依赖关系有向图 变换为器件对照索引之后执行逻辑积运算即可。即, 在式编号 S041 和式编号 S042 中结果 相同。
     在此, 图 60 是表示图 42 的 AND 处理执行部 17 所执行的分析指令 AND 的处理流程 的流程图。只要 AND 处理执行部 17 根据图 60 的处理流程来处理式编号 S041, 就能够如图 61 所示那样得到表示变量 ( 器件 )M4 在程序 MAIN 和 SUB 中分别被使用的分析结果的对照 索引。
     < 实施方式 12 的效果 >
     能够指定不同的数据彼此的逻辑运算。 由此, 用户在指定逻辑运算的条件式之前, 不用逐一地输入用于变换为相同的数据形式的条件式, 通过输入一个条件式就足够了, 因此能够节省涉及程序分析的作业。
     ( 实施方式 13)
     到此为止, 作为用于用户使用输入部来输入程序分析条件的显示部的画面的一例 示出了图 7, 记载了能够制作将程序分析条件自由组合而成的对照索引的技术。 在这种情况 下, 由于对程序分析条件的组合没有特别限制, 因此用户能够自由组合程序分析条件, 但是 相反地, 当用户要得到所期望的程序分析结果时, 用户需要自己考虑程序分析条件的组合。
     以往的程序分析支援装置只能制作已准备的条件指定功能范围内的对照索引, 但 是相反地, 在制作已准备的对照索引时, 用户不需要自己考虑程序分析条件的组合。
     然而, 在与以往的程序分析支援装置同样的方针下, 如果用户想要得到所期望的 程序分析结果, 则需要准备多种多样的对照索引制作功能。即, 在与以往同样的方针下, 如 果要通过在背景技术的栏中已经说明的结构来实现, 则程序分析支援装置的开发者需要付 出很大的劳力。具体地说, 存在分析条件执行部的内部结构变复杂的问题。
     因此, 在本实施方式中, 记载如下技术 : 在与以往的程序分析支援装置同样的方针 下, 当准备多种多样的对照索引制作功能等程序分析功能时, 通过利用到此为止记载的本 发明的结构, 能够大幅减轻程序分析支援装置的开发者的劳力。
     作为具体例, 记载如下情况 : 在与以往的程序分析支援装置同样的方针下, 梯形程 序静态切片功能作为专用程序分析功能而准备或作为程序而搭载在本实施方式所涉及的 程序分析支援装置中。
     在此, 图 62 是表示用于梯形程序静态切片的显示部的画面的一例 ( 对话框 ) 的 图。
     该梯形程序静态切片功能是如下功能 : 专用或专门提供由用户指定的分析对象范 围 POU 中的器件依赖关系有向图的抽取以及存在于该有向图中的变量 ( 器件 ) 的一览 ( 对 照索引 ) 的抽取。
     用户在图 62 的切片范围中输入成为用户想要抽取的器件依赖关系有向图的分析 对象范围的 POU 名称。是如下规范 : 在用户想要指定一个以上的 POU 作为分析对象范围的 情况下, 在切片范围中以逗号 (, ) 为分隔来列举各 POU, 在用户想要指定读入构成程序的所 有 POU 的情况下, 用户在切片范围中什么都不输入。
     在图 62 的画面中, 是如下规范 : 当用户对向前切片起点器件和向后切片起点器件 这两者分别指定不同的变量 ( 器件 ) 时, 抽取出对向前器件依赖关系有向图和向后器件依 赖关系有向图的逻辑积 AND 进行处理而得到的器件依赖关系有向图。
     用户在画面的向前切片起点器件的栏中输入成为想要抽取的器件依赖关系有向 图的起点的变量 ( 器件 )。是如下规范 : 如果想要抽取对一个以上的向前器件依赖关系有 向图的逻辑和 OR 进行处理而得到的器件依赖关系有向图, 则用户以逗号 (, ) 为分隔来列举 变量 ( 器件 )。
     用户在画面的向后切片起点器件的栏中输入成为想要抽取的器件依赖关系有向 图的起点的变量 ( 器件 )。是如下规范 : 如果想要抽取对一个以上的向后器件依赖关系有 向图的逻辑和 OR 进行处理而得到的器件依赖关系有向图, 则用户以逗号 (, ) 为分隔来列举 变量 ( 器件 )。
     即, 是如下规范 : 当用户对向前切片起点器件和向后切片起点器件这两者分别指定多个不同的变量 ( 器件 ) 时, 抽取出对通过一个以上的向前器件依赖关系有向图的 OR 处 理而得到的器件依赖关系有向图和通过一个以上的向后器件依赖关系有向图的 OR 处理而 得到的器件依赖关系有向图进行 AND 处理由此得到的器件依赖关系有向图。
     另外, 当用户在图 62 的画面的向前切片起点器件的栏中不指定变量 ( 器件 ) 而仅 在向后切片起点器件的栏中指定变量 ( 器件 ) 时, 作为结果抽取出向后器件依赖关系有向 图。相反地, 是如下规范 : 当用户在向后切片起点器件的栏中不指定变量 ( 器件 ) 而仅在向 前切片起点器件的栏中指定变量 ( 器件 ) 时, 作为结果抽取出向前器件依赖关系有向图。
     在此, 图 63 是表示用于实现图 1 的微处理器 2 中的梯形程序静态切片的功能部的 结构的功能框图 ( 软件模块结构图 )。
     涉及梯形程序静态切片的处理是通过如下结构实现的 : 根据用户的画面输入以及 画面上的执行按钮开始的操作, 分析条件执行部 11 对由梯形静态切片条件设定部 294 内部 生成的指令进行处理, 分析结果显示部 20 将该处理结果显示在图 1 的显示部 4 的画面上。
     图 64 示出梯形静态切片条件设定部 294 所执行的处理流程。下面记载该部 294 按照图 64 的处理流程对图 62 所示的输入内容进行处理的内容。
     在步骤 S295 中, 当用户点击图 62 的梯形程序静态切片画面上的执行按钮时, 梯形 静态切片条件设定部 294 开始以下的处理。
     在步骤 S297 中, 该部 294 确认在图 62 的对话框中的切片范围中是否输入了 POU 名称。在图 62 的本例中, 该部 294 判断为 “是” 。
     在步骤 S298 中, 该部 294 确认在图 62 的对话框中的切片范围中输入的 POU 名称 是否为多个。在图 62 的本例中, 该部 294 判断为 “是” 。
     在步骤 S301 中, 该部 294 关于本例, 内部生成以下指令并执行。
     1)S901 = POU_READ(MAIN)
     2)S902 = POU_READ(SUB4)
     3)S903 = OR(S901, S902)
     在本例的步骤 S301 的应用中, 该部 294 还内部生成下一个指令并执行。
     4)S904 = POU_READ(SUB9)
     5)S905 = OR(S903, S904)
     通过如上那样由该部 294 在内部逐一地进行各种指令的生成及执行, 在步骤 S301 中该部 294 应对输入了多个 POU 名称的情况下的 POU 集合的生成。
     该部 294 将在步骤 S296 的处理中内部生成的最后的分析指令的式编号用作在以 后的步骤 S302 和步骤 S307 中处理的器件依赖关系有向图的抽取处理的第一自变量。在本 例中, 该部 294 将第五个生成的指令即式编号 S905 指定为分析指令 VAR_FWD 和分析指令 VAR_BWD 的第一自变量。
     在步骤 S303 中, 关于本例, 该部 294 确认在图 62 的向前切片起点器件中输入了变 量 ( 器件 )。
     在步骤 S304 中, 关于本例, 该部 294 确认在图 62 的向前切片起点器件中输入的变 量 ( 器件 ) 为多个。
     在步骤 S306 中, 关于本例, 该部 294 内部生成以下指令来执行。
     6)S906 = VAR_FWD(S905, X67)7)S907 = VAR_FWD(S905, X89)
     8)S908 = OR(S906, S907)
     该部 294 将在步骤 S302 中内部生成的最后的指令的式编号用作在步骤 S312 中 处理的器件依赖关系有向图彼此的 ADN 处理的第一自变量。在本例中, 该部 294 将式编号 S908 指定为 AND 处理的第一自变量。
     在步骤 S308 中, 关于本例, 该部 294 确认在图 62 的向后切片起点器件中输入了变 量 ( 器件 )。
     在下一个步骤 S309 中, 关于本例, 该部 294 确认在图 62 的向后切片起点器件中输 入的器件不是多个 ( 判断为 “否” ), 转移到步骤 S310。
     在步骤 S310 中, 关于本例, 该部 294 内部生成以下指令来执行。
     9)S909 = VAR_BWD(S905, Y234)
     该部 294 将在步骤 S307 中内部生成的最后的指令的式编号用作在步骤 S312 中 处理的器件依赖关系有向图彼此的 ADN 处理的第二自变量。在本例中, 该部 294 将式编号 S909 指定为 AND 处理的第二自变量。
     在步骤 S312 中, 该部 294 内部生成如下分析指令 AND 来执行, 其中, 该分析指令 AND 以在步骤 S302 中内部生成的最后的指令的式编号为第一自变量, 以在步骤 S307 中内部 生成的最后的指令的式编号为第二自变量。
     10)S910 = AND(S908, S909)
     但是, 在步骤 S302 中内部生成的指令不存在的情况下, 该部 294 将在步骤 S307 中 内部生成的最后的指令的处理结果直接设为步骤 S312 的处理结果。
     另外, 在步骤 S307 中内部生成的指令不存在的情况下, 该部 294 将在步骤 S302 中 内部生成的最后的指令的处理结果直接设为步骤 S312 的处理结果。
     如果在步骤 S302 和步骤 S307 中的任一个中都不存在内部生成的指令, 则该部 294 将步骤 S312 的处理结果设为空。
     梯形静态切片条件设定部 294 向分析结果显示部 20 发送通过以上的处理得到的 器件依赖关系有向图的结果, 该部 20 向图 1 的显示部 4 输出用于描绘上述器件依赖关系有 向图的结果的显示信号, 其结果, 在显示部 4 的画面上显示上述器件依赖关系有向图的结 果。
     而且, 当用户通过输入部 5 来点击图 62 的对话框的对照索引按钮时, 梯形静态切 片条件设定部 294 抽取存在于已经得到的器件依赖关系有向图中的变量 ( 器件 ) 的对照索 引, 分析结果显示部 20 显示该结果。表示其处理流程的流程图的图示被省略, 如下那样记 载其处理过程。
     当用户按下 ( 点击 ) 梯形程序静态切片画面上的对照索引按钮时, 该部 294 开始 处理。
     该部 294 内部生成将该部 294 所执行的最后的指令的式编号 S910 作为第一自变 量的分析指令 VAR_REF 并执行。此时, 该部 294 在第二自变量中什么都不指定, 而抽取存在 于器件依赖关系有向图中的所有变量 ( 器件 ) 的对照索引。
     11)S911 = VAR_REF(S910)
     但是, 如果还未得到 ( 未处理 ) 器件依赖关系有向图, 则该部 294 将处理结果设为空。 梯形静态切片条件设定部 294 通过图 63 的变量使用一览显示部 21 显示所得到的 变量 ( 器件 ) 的对照索引。
     < 实施方式 13 的效果 >
     用户不需要自己考虑程序分析条件的组合, 而能够得到所期望的程序分析结果。 因而, 能够大幅减轻用于准备多种多样的对照索引制作功能等程序分析功能的劳力。
     由此, 程序分析支援装置的开发者能够减轻 ( 缩短 ) 用于提高如下作业的效率来 缩短作业所需的时间的、 程序分析支援装置的开发的工时 ( 费用和期间 ), 其中, 所述作业 是用于用户确定在程序的变更或故障动作的分析等中成为编辑对象的场所的作业。 容易对 程序分析支援装置准备多种多样的对照索引制作功能等程序分析功能。
     由此, 通过对程序分析支援装置准备多种多样的对照索引制作功能等程序分析功 能, 用户能够提高用于确定在程序的变更或故障动作的分析等中成为编辑对象的场所的作 业的效率从而缩短作业所需的时间。
     ( 实施方式 14)
     到此为止, 记载了以规定的程序 POU 的集合为对象的器件对照索引的抽取、 器件 依赖关系有向图的抽取、 以及 POU 调用依赖关系有向图的抽取的各程序分析功能。并且, 还 记载了对这些分析结果进行逻辑运算 (AND/OR/NOT) 的功能。而且, 还记载了对这些程序分 析功能的结果进一步进行程序分析处理的功能。
     在对这种本发明的程序分析支援装置追加新的分析功能 ( 分析指令 ) 的情况下, 需要通过如下方式等来继承本发明的程序分析支援装置的特征点而以免破坏这些特征点 : 如果该新的分析功能 ( 分析指令 ) 所抽取的数据形式是在本发明的程序分析支援装置中还 没有的新的数据形式, 则需要对该分析结果, 定义 AND/OR/NOT 的逻辑运算。
     本实施方式涉及用于对这种本发明的程序分析支援装置追加新的分析功能 ( 分 析指令 ) 的技术。
     到此为止, 记载了以规定的程序 POU 的集合为对象的器件对照索引的抽取、 器件 依赖关系有向图的抽取及 POU 调用依赖关系有向图的抽取的各程序分析功能、 以及对这些 分析结果进行 AND/OR/NOT 的逻辑运算或其它程序分析的功能。如果归纳这些功能, 则如图 66 ~图 71 的各图所示那样。
     a) 首先, 记载关于器件对照索引抽取指令 VAR_REF 进行了图示的图 66 的内容。
     对分析指令 VAR_REF 的第二自变量指定的是变量 ( 器件 )。对另一个第一自变量 能够指定本发明的程序分析支援装置要处理的程序分析功能的分析结果。
     其中, 对第一自变量指定用于输出 POU 的集合的式编号的情况是分析指令 VAR_ REF 的最基本的处理方式 ( 图 66 中用◎表示 )。
     另外, 对第一自变量指定用于输出器件依赖关系有向图的式编号的情况也是分析 指令 VAR_REF 的基本的处理方式 ( 图 66 中用○表示 )。
     另一方面, 还考虑对第一自变量直接指定 POU 的名称的情况。这种情况下的处理 流程在说明书中没有记载为实施方式, 但是关于这种情况下的处理方式, 如图 66 所示, 只 要微处理器 2 内部处理分析指令 POU_READ 之后, 通过分析指令 VAR_REF 的最基本的处理方 式进行处理即可。也就是说, 微处理器 2 能够通过其它基本的处理方式的组合来实现这种
     情况下的处理 ( 图 66 中用△表示 )。
     另外, 关于对第一自变量指定用于输出 POU 调用依赖关系有向图的式编号的情 况, 同样地, 微处理器 2 也能够通过其它基本的处理方式的组合来实现 ( 图 66 中同样地用 △表示 )。
     此外, 没有定义对第一自变量指定用于输出器件对照索引的式编号的情况 ( 图 66 中用 × 表示 )。这是因为, 未发现定义它的意义或必要性。
     b) 接着, 记载关于器件依赖关系有向图抽取指令 VAR_FWD 进行了图示的图 67 的 内容。此外, 在图 67 中, 关于器件依赖关系有向图仅示出了向前分析指令 VAR_FWD 的情况 ( 这一点只不过是为了便于说明, 关于向后分析指令 VAR_BWD, 同样的内容也适合 )。 对分析 指令 VAR_FWD 的第二自变量指定的是变量 ( 器件 )。用户能够对该指令的第一自变量指定 本发明的程序分析支援装置要处理的程序分析功能的分析结果。
     其中, 对第一自变量指定用于输出 POU 的集合的式编号的情况是分析指令 VAR_ FWD 的最基本的处理方式 ( 图 67 中用◎表示 )。
     另一方面, 还考虑对第一自变量直接指定 POU 的名称的情况。这种情况下的处理 流程在说明书中没有记载为实施方式, 但是关于这种情况下的处理方式, 如图 67 所示, 只 要微处理器 2 内部处理分析指令 POU_READ 之后, 通过分析指令 VAR_FWD 的最基本的处理方 式进行处理即可。也就是说, 微处理器 2 能够通过其它基本的处理方式的组合来实现这种 情况下的处理 ( 图 67 中用△表示 )
     另外, 关于对第一自变量指定用于输出 POU 调用依赖关系有向图的式编号的情 况, 同样地, 微处理器 2 也能够通过其它基本的处理方式的组合来实现 ( 图 67 中同样地用 △表示 )。
     此外, 未定义对第一自变量指定用于输出器件依赖关系有向图的式编号的情况 ( 图 67 中用 × 表示 )。这是因为, 未发现定义它的意义或必要性。
     同样地, 也未定义对第一自变量指定用于输出器件对照索引的式编号的情况 ( 图 67 中用 × 表示 )。这也是因为, 未发现定义它的意义或必要性。
     c) 接着, 记载关于抽取 POU 的集合的分析指令 POU_READ 进行了图示的图 68 的内 容。在这种情况下, 对分析指令 POU_READ 的第二自变量什么都不指定。另一方面, 用户能 够对第一自变量指定本发明的程序分析支援装置要处理的程序分析功能的分析结果。
     其中, 对第一自变量直接指定 POU 的名称的情况是分析指令 POU_READ 的最基本的 处理方式 ( 图 68 中用◎表示 )。
     另外, 对第一自变量指定用于输出器件对照索引的式编号的情况也是分析指令 POU_READ 的基本的处理方式 ( 图 68 中用○表示 )。
     而且, 对第一自变量指定用于输出 POU 调用依赖关系有向图的式编号的情况也是 分析指令 POU_READ 的基本的处理方式 ( 图 68 中用○表示 )。
     另一方面, 关于对第一自变量指定用于输出器件依赖关系有向图的式编号的情 况, 如图 68 所示, 只要微处理器 2 内部处理分析指令 VAR_REF 之后通过分析指令 POU_READ 的基本处理方式进行处理即可。也就是说, 微处理器 2 能够通过其它基本处理方式的组合 来实现这种情况下的处理 ( 图 68 中用△表示 )。
     此外, 未定义对第一自变量指定用于输出 POU 的集合的式编号的情况 ( 图 68 中显示有 × 标记 )。这是因为, 没有发现定义它的意义或必要性。
     d) 接着, 记载关于抽取 POU 调用依赖关系有向图的分析指令 POU_FWD 进行了图示 的图 69 的内容。 此外, 在图 69 中, 关于 POU 调用依赖关系有向图, 仅示出了向前的分析指令 POU_FWD 的情况, 但是关于向后的分析指令 POU_BWD, 同样的内容也成立。对分析指令 POU_ FWD 的第二自变量指定的是 POU 名称。用户能够对第一自变量指定本发明的程序分析支援 装置要处理的程序分析功能的分析结果。
     其中, 对第一自变量指定用于输出 POU 的集合的式编号的情况是分析指令 POU_ FWD 的最基本的处理方式 ( 图 69 中用◎表示 )。
     另一方面, 还考虑对第一自变量直接指定 POU 的名称的情况。这种情况下的处理 流程在说明书中没有记载为实施方式, 但是关于这种情况下的处理方式, 如图 69 所示, 只 要微处理器 2 内部处理分析指令 POU_READ 之后通过分析指令 POU_FWD 的基本的处理方式 进行处理即可。也就是说, 微处理器 2 能够通过其它基本的处理方式的组合来实现这种情 况下的处理 ( 图 69 中用△标记表示 )
     此外, 未定义对第一自变量指定用于输出 POU 调用依赖关系有向图的式编号的情 况 ( 图 69 中显示有 × 标记 )。这是因为, 未发现定义它的意义或必要性。
     同样地, 也未定义对第一自变量指定用于输出器件对照索引的式编号的情况 ( 图 69 中显示有 × 标记 )。这也是因为, 没有发现定义它的意义或必要性。
     同样地, 也未定义对第一自变量指定用于输出器件依赖关系有向图的式编号的情 况 ( 图 69 中显示有 × 标记 )。这也是因为, 没有发现定义它的意义或必要性。
     e) 最后, 下面记载关于对这些分析结果进行逻辑运算 AND 的功能进行了图示的图 70 的内容。此外, 在图 70 中, 关于逻辑运算的处理, 仅示出了分析指令 AND 的处理, 但是关 于作为其它逻辑运算的分析指令 OR 和 NOT, 相同的内容也成立。
     其中, 在第一自变量和第二自变量的数据形式都相同的情况是分析指令 AND 的基 本处理方式 ( 在图 70 中用◎标记表示 )。 本发明所涉及的程序分析支援装置的各程序分析 功能部所输出的数据形式是器件对照索引、 器件依赖关系有向图、 POU 的集合以及 POU 调用 依赖关系有向图这四个中的某一个, 关于各个情况下的处理流程, 在已经说明的对应的实 施方式中已公开。
     另一方面, 关于第一自变量的数据形式与第二自变量的数据形式不同的情况, 还 考虑对它不进行定义的对策。然而, 例如在对第一自变量指定用于输出器件对照索引的式 编号并对第二自变量指定用于输出器件依赖关系有向图的式编号的情况下指定分析指令 AND, 这还能够解释成有如下意图 : 想要将第一自变量的器件对照索引、 与和第二自变量的 器件依赖关系有向图有关的器件对照索引之间的 AND 处理作为其结果而进行抽取。这如在 实施方式 12 中已经说明那样。关于这种情况, 即使第一自变量的数据形式与第二自变量的 数据形式不同, 也可以定义最相近的解释的处理。这种情况下的处理方式如图 70 所示, 图 1 的微处理器 2 只要内部处理分析指令 VAR_REF 之后通过执行分析指令 AND 的基本处理方 式来进行处理即可。也就是说, 微处理器 2 能够通过其它基本处理方式的组合来实现这种 情况下的处理 ( 在图 70 中用△标记表示 )。
     关于第一自变量的数据形式与第二自变量的数据形式不同的其它情况, 也同样地 考虑不定义它的对策, 但是也可以在定义了最相近的解释的处理之后, 图 1 的微处理器 2 通过其它基本处理方式的组合来实现 ( 在图 70 中用△标记表示 )。
     此外, 在第一自变量的数据形式与第二自变量的数据形式不同的其它情况中, 在 没有发现定义它的意义或必要性的情况下, 在本发明中不进行其定义 ( 在图 70 中用 × 标 记表示 )。
     图 70 中的这些处理在第一自变量和第二自变量被相反地指定的情况下也都作为 相同的解释而对称地被定义, 但是在需要非对称地定义的情况下, 也可以设为在第一自变 量和第二自变量被相反地指定的情况下进行不同的定义。
     如上所述, 本发明的重点在于, 将图 1 的微处理器 2 内的程序分析功能部的基本处 理 ( 图 70 中用◎标记或○标记表示的处理 ) 与能够通过上述基本处理的组合来实现的处 理 ( 图 70 中用△标记表示的处理 ) 明确地区分来进行定义。图 70 的△标记的处理是通过 ◎标记或○标记的处理的组合来实现的, 但是决不循环。将该关系归纳为图时, 成为图 71 所示的关系。
     另外, 在将负责新的分析功能 ( 分析指令 ) 的部分追加到图 1 的微处理器 2 中的 情况下, 在软件上定义图 65 所示的 (1) ~ (7) 的部分。首先, (1) 定义分析指令名, (2) 定 义第二自变量的指定的方式。接着, 在定义 (3) ~ (7) 时, 注意如下点 : 成为基本处理方式 的 ( 相当于◎标记或○标记 ) 是哪一个、 能够通过其它基本处理的组合来实现的 ( 相当于 △标记 ) 是哪一个、 没有发现要定义的意义或必要性的 ( 相当于 × 标记 ) 是哪一个。
     而且, 如果该新的分析功能所抽取的数据形式为在本发明所涉及的程序分析支援 装置中还没有的新的数据形式, 则需要定义对该分析结果进行 AND/OR/NOT 的逻辑运算或 其它程序分析的功能。
     因此, 首先在软件上定义图 65 所示的 (8) 的部分。
     接着, 针对本发明所涉及的程序分析支援装置的各程序分析功能的定义, 在软件 上追加针对新的数据形式的定义。即, 定义图 66 ~图 69 的 (9) ~ (12) 的部分。
     并且, 在软件上定义图 70 的 (13) 的部分 ( 新的数据形式彼此的逻辑运算 )。
     最后, 在软件上定义图 70 的 (14) 和 (15) 的部分 ( 新的数据形式与其它数据形式 的逻辑运算 )。
     < 实施方式 14 的效果 >
     1) 在对本发明的程序分析支援装置追加进行新的分析功能 ( 分析指令 ) 的功能 部的情况下, 在软件上定义该新的分析功能的处理以使继承本发明的程序分析支援装置的 特征点而以免破坏这些特征点, 由此能够进行将程序分析条件自由组合的程序分析, 用户 能够根据该分析结果, 迅速地确定成为编辑对象的场所, 能够提高用于对在程序的变更或 其故障动作的分析等中成为编辑对象的场所进行确定的作业的效率, 并缩短作业所需的时 间。
     2) 另外, 如果执行该新的分析功能的功能部分所抽取的数据形式为在本发明的程 序分析支援装置中还没有的新的数据形式, 则以使继承本发明的程序分析支援装置的特征 点而避免破坏这些特征点的方式定义该新的分析功能以及本发明的程序分析支援装置的 各分析功能的处理, 使得能够对该分析结果进行 AND/OR/NOT 的逻辑运算, 因此能够进行将 程序分析条件自由组合的程序分析, 用户能够根据该分析结果, 迅速地确定成为编辑对象 的场所, 能够提高用于对在程序的变更或其故障动作的分析等中成为编辑对象的场所进行确定的作业的效率, 并缩短作业所需的时间。
     ( 附记 )
     如上所述, 本发明实现能够自由组合程序分析条件的程序分析支援装置, 如果将 本发明的特征点与已经说明的 PATOLIS( 注册商标 ) 那样的专利文献的检索进行比较, 则其 不同点如下。
     即, 专利文献的检索是 “对专利文献的称作全体集合的母集合使用检索式” 以及 “对其结果进行逻辑运算” 的反复处理, 成为检索对象的对象总体始终是专利文献的全体集 合。另一方面, 本发明在程序分析中也实现 “对称作分析对象程序全体的母集合使用检索 式” 以及 “对其结果进行逻辑运算” 的反复处理。
     而且, 在本发明中, 成为检索对象的对象总体始终是分析对象程序全体, 除此之外 还实现 “对某一结果使用其它检索式” 的处理。
     在专利文献的检索中, “对专利文献的称作全体集合的母集合使用检索式” 的结 果也是专利文献的集合, 但是在程序分析中, “对称作分析对象程序全体的母集合使用检索 式” 的结果是各种数据种类的集合。
     因而, 存在仅通过如专利文献的检索那样 “对对象总体使用检索式” 以及 “对其结 果进行逻辑运算” 的反复处理无法得到的程序分析。
     本发明能够进行 “对对象总体使用检索式 ( 分析条件式 )” “对其结果进行其它的 、 检索式” 以及 “对这些结果进行逻辑运算” 的反复处理, 从而实现所期望的程序分析。
     以上详细公开并说明了本发明的实施方式, 但以上的说明只是例示了本发明可应 用的方面, 本发明并不限定于此。 即, 在不脱离本发明的范围的范围内能够考虑针对已说明 的方面的各种修正、 变形例。
     产业上的可利用性
     例如, 本发明所涉及的程序分析支援装置适用于如下 : 关于在可编程控制器、 运动 控制器、 数值控制装置控制器、 检查装置控制器或者显示器等各种产业用的控制器、 或者微 型计算机中执行的测量控制程序, 提高为了开发新的测量控制程序而对过去的测量控制程 序进行分析的作业、 或者在开发或调试测量控制程序时编辑 / 变更该程序的作业的效率。

程序分析支援装置.pdf_第1页
第1页 / 共112页
程序分析支援装置.pdf_第2页
第2页 / 共112页
程序分析支援装置.pdf_第3页
第3页 / 共112页
点击查看更多>>
资源描述

《程序分析支援装置.pdf》由会员分享,可在线阅读,更多相关《程序分析支援装置.pdf(112页珍藏版)》请在专利查询网上搜索。

1、10申请公布号CN102317877A43申请公布日20120111CN102317877ACN102317877A21申请号200980156859922申请日20090811200903489520090218JPG05B19/05200601G06F9/4420060171申请人三菱电机株式会社地址日本东京72发明人仲井勘古田裕久石原鉴佐藤公昭坪井隆金子晃74专利代理机构中国国际贸易促进委员会专利商标事务所11038代理人许海兰54发明名称程序分析支援装置57摘要提供一种能够自由组合程序分析条件的能够实现所期望的程序分析的程序分析支援装置。并且,分析条件设定部10以具有固有的式编号的条件。

2、式分析指令、分析对象、分析条件的形式,输入程序分析条件。POU一览抽取处理执行部14执行用于读入程序的分析指令,生成构成程序的分析对象的POU的集合,变量使用一览抽取处理执行部12执行用于抽取变量的对照索引的分析指令,抽取针对分析对象的POU集合的变量的对照索引。两个部14、12进一步抽取针对其它POU集合的变量的对照索引。而且AND处理部17进行两个变量的对照索引的逻辑积的处理,将其结果输出到分析结果显示部20。30优先权数据85PCT申请进入国家阶段日2011081786PCT申请的申请数据PCT/JP2009/0641632009081187PCT申请的公布数据WO2010/095289。

3、JA2010082651INTCL19中华人民共和国国家知识产权局12发明专利申请权利要求书3页说明书43页附图65页CN102317884A1/3页21一种程序分析支援装置,其特征在于,具备分析条件设定部10,关于由N个程序模块构成的程序,输入并保持由用户指定的所述程序的程序分析条件,其中,N为2以上的整数;分析条件执行部11,根据所述程序分析条件,执行所述程序的分析处理;以及分析结果显示部20,制作并输出用于对由所述分析条件执行部处理得到的分析结果进行显示的显示数据,其中,所述分析条件执行部具备POU一览抽取处理执行部14,输出第一信号,其中,该第一信号提供所述N个程序模块内的M个程序模块。

4、的集合,2MN;以及变量使用一览抽取处理执行部12,将所述POU一览抽取处理执行部所输出的所述M个程序模块的集合作为分析对象范围,抽取第二信号,其中,该第二信号提供所述M个程序模块的各自中记载的各变量的对照索引。2根据权利要求1所述的程序分析支援装置,其特征在于,所述POU一览抽取处理执行部输出第三信号,其中,该第三信号提供在所述第二信号所提供的所述各变量的对照索引内存在的K个程序模块的集合,2KM。3根据权利要求2所述的程序分析支援装置,其特征在于,所述M个与所述N个相等。4一种程序分析支援装置,其特征在于,具备分析条件设定部10,关于由程序模块构成的程序,输入并保持由用户指定的所述程序的程。

5、序分析条件;分析条件执行部11,根据所述程序分析条件,执行所述程序的分析处理;以及分析结果显示部20,制作并输出用于对由所述分析条件执行部处理得到的分析结果进行显示的显示数据,其中,所述分析条件执行部具备变量依赖关系抽取处理执行部13,该变量依赖关系抽取处理执行部输出如下信号,其中,该信号提供所述程序模块中记载的各变量的依赖关系有向图。5根据权利要求4所述的程序分析支援装置,其特征在于,所述分析条件执行部还具备POU一览抽取处理执行部14,该POU一览抽取处理执行部输出用于提供所述程序模块的集合的信号,所述变量依赖关系抽取处理执行部将所述程序模块的集合作为分析对象范围,输出用于提供所述各变量的。

6、依赖关系有向图的所述信号。6根据权利要求5所述的程序分析支援装置,其特征在于,所述POU一览抽取处理执行部抽取用于提供所述各变量的依赖关系有向图中存在的程序模块的集合的信号。7根据权利要求6所述的程序分析支援装置,其特征在于,所述POU一览抽取处理执行部所输出的所述程序模块的集合是构成所述程序的所有程序模块的集合。8根据权利要求4所述的程序分析支援装置,其特征在于,所述分析条件执行部还具备变量使用一览抽取处理执行部12,该变量使用一览抽取权利要求书CN102317877ACN102317884A2/3页3处理执行部抽取用于提供所述各变量的依赖关系有向图中存在的各变量的对照索引的信号。9一种程序。

7、分析支援装置,其特征在于,具备分析条件设定部10,关于由多个程序模块构成的程序,输入并保持由用户指定的所述程序的程序分析条件;分析条件执行部11,根据所述程序分析条件,执行所述程序的分析处理;以及分析结果显示部20,制作并输出用于对由所述分析条件执行部处理得到的分析结果进行显示的显示数据,其中,所述分析条件执行部具备POU依赖关系抽取处理执行部15,该POU依赖关系抽取处理执行部抽取用于将所述多个程序模块的调用的关系作为依赖关系有向图而提供的信号。10根据权利要求9所述的程序分析支援装置,其特征在于,所述分析条件执行部还具备POU一览抽取处理执行部14,该POU一览抽取处理执行部输出用于提供所。

8、述多个程序模块的集合的信号,所述POU依赖关系抽取处理执行部将所述多个程序模块的集合作为分析对象范围,抽取用于提供与所述多个程序模块的调用有关的所述依赖关系有向图的信号。11根据权利要求10所述的程序分析支援装置,其特征在于,所述POU一览抽取处理执行部输出用于提供所述POU依赖关系抽取处理执行部所输出的与所述多个程序模块的调用有关的所述依赖关系有向图中存在的程序模块的集合的信号。12根据权利要求9所述的程序分析支援装置,其特征在于,所述分析条件执行部还具备变量使用一览抽取处理执行部12,该变量使用一览抽取处理执行部抽取用于提供所述POU依赖关系抽取处理执行部所输出的与所述多个程序模块的调用有。

9、关的所述依赖关系有向图中存在的程序模块中所存在的各变量的对照索引的信号。13根据权利要求9所述的程序分析支援装置,其特征在于,所述分析条件执行部还具备变量依赖关系抽取处理执行部13,该变量依赖关系抽取处理执行部将与所述多个程序模块的调用有关的所述依赖关系有向图中存在的程序模块的集合作为分析对象范围,输出用于提供记载在该程序模块中的各变量的依赖关系有向图的信号。14根据权利要求1、4、9中的任一项所述的程序分析支援装置,其特征在于,在使所述分析条件执行部还具备新的程序分析功能处理执行部时,所述新的程序分析功能处理执行部被定义为是否将所述新的程序分析功能处理执行部的输出结果以及所述分析条件执行部已。

10、经具备的程序分析功能处理执行部分的输出结果作为分析对象范围来执行分析处理。15根据权利要求1、4、9中的任一项所述的程序分析支援装置,其特征在于,在使所述分析条件执行部还具备新的程序分析功能处理执行部时,所述分析条件执行部已经具备的程序分析功能处理执行部分被定义为是否将所述新的程序分析功能处理执行部的输出结果作为分析对象来执行分析处理。16根据权利要求1、4、9中的任一项所述的程序分析支援装置,其特征在于,权利要求书CN102317877ACN102317884A3/3页4所述分析条件执行部还具备分析结果逻辑运算处理执行部16,该分析结果逻辑运算处理执行部处理通过所述分析条件执行部所具备的程序。

11、分析功能进行处理得到的分析结果彼此的逻辑运算。17根据权利要求16所述的程序分析支援装置,其特征在于,所述分析结果逻辑运算处理执行部在被指定为逻辑运算的对象的、通过所述分析条件执行部所具备的程序分析功能进行处理得到的分析结果的一方的种类与另一方的种类不同的情况下,将所述分析结果的一方作为分析对象而通过所述分析条件执行部所具备的程序分析功能进一步进行分析处理,由此使所述分析结果的一方的种类与所述分析结果的另一方的所述种类相同,之后进行所述逻辑运算的处理。18根据权利要求16所述的程序分析支援装置,其特征在于,在使所述分析条件执行部还具备新的程序分析功能处理执行部时,所述新的程序分析功能处理执行部。

12、的输出结果被定义为所述分析结果逻辑运算处理执行部要处理的所述逻辑运算的对象。19根据权利要求1、4、9中的任一项所述的程序分析支援装置,其特征在于,所述分析条件设定部以具有固有的式编号的条件式的形式,输入所述程序分析条件。20根据权利要求1、4、9中的任一项所述的程序分析支援装置,其特征在于,所述分析条件设定部将所输入的所述程序分析条件变换为具有固有的式编号的条件式的形式而执行输入处理。21根据权利要求19或20所述的程序分析支援装置,其特征在于,所述分析结果显示部针对所述条件式的每个分析结果,利用与该分析结果的种类对应的种类用显示部来显示该分析结果。权利要求书CN102317877ACN10。

13、2317884A1/43页5程序分析支援装置技术领域0001本发明涉及一种程序分析支援装置。具体地说,本发明涉及关于在可编程控制器以下称为“PC”、运动控制器以下称为“MC”、数值控制装置控制器以下称为“NC”、检查装置控制器或显示器以下称为“GOT”等各种产业用的控制器、或者微型计算机中执行的测量控制程序,用于提高为了开发新的测量控制程序而对过去的测量控制程序进行分析的作业、或者开发或调试测量控制程序时对该程序进行编辑/变更的作业的效率的装置。背景技术0002以往,为了进行生产设备的测量控制,使用以可编程控制器以下称为“PC”为代表的产业用的控制器。作为在产业用的控制器中执行的测量控制程序,。

14、列举以梯形程序LADDERPROGRAM为代表例的依照IEC611313标准的语言或控制器专用语言。另外,作为使用微型计算机来代替产业用的控制器的情况下的测量控制程序,列举C语言或汇编程序。下面,以PC为例子进行记载。0003PC执行作为测量控制程序的梯形程序,从而掌握测量控制对象的状态,或者向测量控制对象指示动作。在梯形程序的制作中使用规定的测量控制程序制作支援装置梯形图制作支援装置。测量控制程序制作支援装置一般作为在个人计算机上动作的软件工具而被提供,具有对作为在PC测量或控制测量控制对象时使用的程序的梯形图的编辑进行支援的功能。除此之外,测量控制程序制作支援装置还具有如下功能将个人计算机。

15、与PC进行连接,向PC传输已编辑的梯形图,或者对测量控制对象的状态或者由于梯形图的执行而变化的变量以下称为“器件DEVICE”的值的状态进行监视。此外,测量控制程序制作支援装置所提供的程序编辑功能和监视功能还搭载在显示器以下称为“GOT”上,从始终与PC处于连接状态的GOT上也能够进行测量控制程序的编辑或者器件的值的状态的监视。0004在生产设备的规模非常小的情况下,测量控制程序具有一个梯形程序就足够了,但是一般用于对生产设备进行测量控制的程序由多个程序模块以下称为“POU”。POUPROGRAMORAGANIZATIONUNIT程序组织单元构成。如果测量控制程序的程序语言为梯形图,则POU相。

16、当于子程序或者FBFUNCTIONBLOCK功能块,如果是STSTRUCTUREDTEXT结构化文本或C语言,则POU相当于子程序或者函数。0005在这种情况下,存在在不同的POU间共同被测量和控制的大量的器件。因而,在与程序的变更和修正相伴的影响范围的分析或者故障动作的原因的分析等中,需要知道某一器件在哪个POU的哪个位置被使用在哪个位置被读入/在哪个位置被写出。并且,为了提高该作业的效率,需要迅速地确定程序中POU中的器件的使用场所。因此,作为进行该确定的程序分析支援装置,已知对照索引CROSSREFERENCE制作装置。对照索引制作装置是如下装置读入多个POU作为分析对象,制作某一器件在。

17、哪个POU的哪个位置被使用的一览表,或者制作在某一POU中使用的所有器件的一览表。此外,还存在这种对照索引的说明书CN102317877ACN102317884A2/43页6制作作为测量控制程序制作支援装置的一个功能而被实现的情况。0006在此,在非专利文献1的使用说明书中,公开了两种现有技术。下面,记载这些现有技术。0007首先,在第一现有技术中,对照索引功能作为测量控制程序制作支援装置的一个功能而被实现,当从测量控制程序制作支援装置的菜单中选择对照索引功能时,在画面上显示作为对照索引画面的对话框,其中,所述对照索引功能是制作某一器件在哪个POU的哪个位置被使用的一览表的功能。首先,操作员在。

18、上述对话框的器件栏中输入器件。接着,操作员在上述对话框的检索范围栏中指定检索范围。此时,作为检索范围,操作员既可以指定所有的POU作为检索范围,或者也可以仅指定特定的POU作为检索范围。之后,当操作员点击显示在上述对话框中的执行按钮时,使用该器件的POU及其位置被一览显示在上述对话框上。在上述对话框上的程序名的栏中显示POU的名称,在时序步骤的栏中显示在该POU中使用该器件的步骤编号。而且,在上述对话框上的命令的栏中,显示使用该器件的步骤的命令的种类。例如在梯形图中描述了程序POU的情况下,在命令的栏中显示接点或者线圈等。0008接着,在第二现有技术中,在画面上制作出某一POU中使用的器件的一。

19、览表器件使用列表。该一览表制作功能在第二现有技术中作为测量控制程序制作支援装置的一个功能而被实现,当操作员从测量控制程序制作支援装置的菜单中选择打印功能时,用于表示器件使用列表的对话框被显示在画面上。首先,操作员选择程序。即,操作员在该对话框所显示的程序选择栏中输入应选择的POU的名称。接着,操作员指定显示在该对话框中的打印条件。此时,在仅将程序中使用的器件作为一览表而打印的情况下,操作员在该栏中输入核对的指示。如果没有输入核对的指示,则所有的器件被打印为一览表。之后,当操作员点击显示在该对话框中的打印按钮时,在该POU中使用的器件的一览表被打印。在程序名的栏中打印出所选择的POU的名称,在其。

20、下方依次打印出在该POU中使用的器件。在有无使用的栏中打印出使用该器件的命令的种类。如果在梯形图中描述了程序,则打印出接点或线圈等。此外,该器件在该POU中既被用作接点也被用作线圈的情况下,打印出接点和线圈这两者。0009专利文献0010专利文献1日本特开2006294011号公报0011专利文献2日本特开2006294013号公报0012非专利文献0013非专利文献1GXDEVELOPERVERSION8一操作系统手册三菱电机株式会社2008年12月0014非专利文献2“技術応用程序切片技术和应用”下村隆夫著共立出版ISBN4320027434发明内容0015如上所述,非专利文献1所记载的第。

21、一或第二现有技术只能仅根据预先搭载在程序制作支援装置或程序分析支援装置中的已说明的功能,来制作表示某一器件在哪个POU的哪个位置被使用的对照索引或者器件使用列表。说明书CN102317877ACN102317884A3/43页70016因此,作为问题的一例,上述第一和第二现有技术关于在某一特定的POU中被使用且在其它特定的POU中也被使用的器件,无法制作这些POU中的参照位置的一览。其结果,存在如下问题在操作员自身逐一地实施了通过目视来确认在某一特定的POU中被使用的器件的一览表器件使用列表和在其它特定的POU中也被使用的器件的一览表器件使用列表的作业之后,操作员只能制作通过其人工作业所抽取出。

22、的器件的对照索引,在程序的变更或者故障动作的分析等中,对成为编辑对象的场所进行确定时花费时间。0017另外,作为其它问题的一例,上述第一和第二现有技术无法制作某一器件在特定的POU以及从该POU作为子程序而被调用的POU中的对照索引。因此,操作员只能逐一地实施如下作业,其结果,产生在程序的变更或者故障动作的分析等中对成为编辑对象的场所进行确定时花费时间这样的问题,其中所述作业为首先抽取从上述特定的POU作为子程序而被调用的POU的一览,并针对所抽取出的各POU分别制作其器件的对照索引之后,将其结果进行合并。0018因此,用于解决前者的问题的在先技术公开在专利文献1和2以及非专利文献2的各文献中。

23、。0019然而,专利文献1和2所提出的在先技术只不过是将制作在某一特定的POU中被使用且在其它特定的POU中也被使用的器件的一览的功能将该功能假设称为“程序间重复使用状况列表”预先搭载在程序制作支援装置或者程序分析支援装置中。既有利用已有的对照索引功能的处理来实现程序间重复使用状况列表功能的处理的情况,或者也有与已有的对照索引功能的处理独立地实现程序间重复使用状况列表功能的处理的情况。总之,上述在先技术只能执行这样搭载的功能的条件指定范围内的程序间重复使用状况列表的制作。0020因此,上述在先技术具有如下问题无法同时实现自由组合条件的对照索引的制作以及自由组合条件的程序分析结果的抽取。0021。

24、在此,作为能够通过自由组合检索条件来制作所期望的一览表的现有技术的例子,有作为在先专利文献检索用的程序之一的PATOLIS注册商标。在利用该PATOLIS注册商标的专利文献的检索中,操作员通过专利分类来缩小检索范围,或者根据摘要、权利要求书等区域中是否包含特定的关键字来缩小检索范围。这种情况下的成为检索对象的对象总体是在先专利文献的全体。另外,其命中结果的一览是在先专利文献的一览。因而,在操作员针对命中结果想要进一步用其它条件缩小检索范围的情况下,操作员首先利用其它条件对在先专利文献的全体进行检索,通过使计算机执行作为该命中结果的在先专利文献的一览与之前的命中结果的AND处理,由此能够进一步缩。

25、小在先专利文献的范围。0022与此相对,测量控制程序的分析结果根据分析条件而不同。例如在某一特定的POU中被使用的器件的一览中,其结果是器件的一览,但是在从特定的POU作为子程序而被调用的POU的一览中,其结果是POU的一览。因而,对于这些不同结果的一览,无法立即实现基于结果彼此的AND处理的缩小。0023另外,在专利文献1、2以及非专利文献1的各自中提出的现有技术中的程序分析中,成为其分析对象的对象总体是程序,但是测量控制程序的分析结果根据分析条件而不同,因此在实施其它分析条件的情况下,成为其分析对象的对象总体不仅需要是程序,而且还需要是分析结果。即,根据上述现有技术的组合,无法容易地实现能。

26、够自由组合程序分析说明书CN102317877ACN102317884A4/43页8条件的程序分析支援装置。0024本发明是鉴于上述技术状况而完成的,其主要目的在于实现能够自由组合分析条件的程序分析支援装置。0025本发明的主题所涉及的程序分析支援装置的特征在于,具备分析条件设定部,关于由NN为2以上的整数个程序模块构成的程序,输入并保持由用户指定的所述程序的程序分析条件;分析条件执行部,根据所述程序分析条件,执行所述程序的分析处理;以及分析结果显示部,制作并输出用于对由所述分析条件执行部处理得到的分析结果进行显示的显示数据,其中,所述分析条件执行部具备POU一览抽取处理执行部,输出第一信号,。

27、其中,该第一信号提供所述N个程序模块内的M2MN个程序模块的集合;以及变量使用一览抽取处理执行部,将所述POU一览抽取处理执行部所输出的所述M个程序模块的集合作为分析对象范围,抽取第二信号,其中,该第二信号提供所述M个程序模块的各自中记载的各变量的对照索引。0026根据本发明的主题,能够进行将程序分析条件自由组合的程序分析,能够根据该分析结果迅速地确定成为编辑对象的场所,因此用户能够提高用于对在程序的变更或其故障动作的分析等中成为编辑对象的场所进行确定的作业的效率,缩短作业所需的时间。0027下面,根据附图详细说明本发明的各种具体示例及其效果、优点。通过以下的详细说明和附图,本发明的目的、特征。

28、、方面以及优点将变得清楚。附图说明0028图1是表示本发明所涉及的程序分析支援装置的硬件结构的框图。0029图2是表示实施方式1所涉及的程序分析支援装置的软件结构的功能框图。0030图3是表示MAIN梯形电路的图。0031图4是表示MAIN梯形IL的图。0032图5是表示SUB梯形电路的图。0033图6是表示SUB梯形IL的图。0034图7是表示程序分析支援画面的图。0035图8是表示程序分析支援画面的图。0036图9是表示POU_READ处理流程的流程图。0037图10是表示VAR_REF处理流程的流程图。0038图11是表示VAR_REF结果画面的图。0039图12是表示VAR_REF结果。

29、画面的图。0040图13是表示VAR_REF结果画面的图。0041图14是表示AND处理流程的流程图。0042图15是表示AND处理流程的流程图。0043图16是表示AND结果VAR_REF画面的图。0044图17是表示OR处理流程的流程图。0045图18是表示OR处理流程的流程图。0046图19是表示OR结果VAR_REF画面的图。0047图20是表示NOT处理流程的流程图。说明书CN102317877ACN102317884A5/43页90048图21是表示NOT处理流程的流程图。0049图22是表示NOT结果VAR_REF画面的图。0050图23是表示实施方式2所涉及的程序分析支援装置的。

30、软件结构的功能框图。0051图24是表示梯形结构的图。0052图25是用于说明INSTRUCTION/OPERATOR/OPERAND的图。0053图26是表示器件依赖关系的一例的图。0054图27是表示器件依赖关系的一例的图。0055图28是表示器件依赖关系的一例的图。0056图29是表示程序分析支援画面的图。0057图30是表示VAR_FWD处理流程的流程图。0058图31是表示VAR_FWD结果有向图的图。0059图32是表示VAR_FWD结果有向图的图。0060图33是表示VAR_BWD处理流程的流程图。0061图34是表示VAR_BWD结果有向图的图。0062图35是表示OR处理流程。

31、的流程图。0063图36是表示OR结果VAR有向图的图。0064图37是表示AND处理流程的流程图。0065图38是表示AND结果VAR有向图的图。0066图39是表示VAR_REF处理流程的流程图。0067图40是表示VAR_REF结果画面的图。0068图41是表示VAR_REF结果画面的图。0069图42是表示实施方式7所涉及的程序分析支援装置的软件结构的功能框图。0070图43是表示构成程序的所有POU的图。0071图44是表示程序分析支援画面的图。0072图45是表示POU_FWD处理流程的流程图。0073图46是表示POU_FWD结果有向图的图。0074图47是表示POU_FWD结果。

32、有向图的图。0075图48是表示POU_BWD处理流程的流程图。0076图49是表示POU_BWD结果有向图的图。0077图50是表示OR处理流程的流程图。0078图51是表示OR结果POU有向图的图。0079图52是表示AND处理流程的流程图。0080图53是表示AND结果POU有向图的图。0081图54是表示程序分析支援画面的图。0082图55是表示POU_READ处理流程的流程图。0083图56是表示VAR_REF处理流程的流程图。0084图57是表示VAR_FWD处理流程的流程图。0085图58是表示POU_READ处理流程的流程图。0086图59是表示POU_READ处理流程的流程图。

33、。说明书CN102317877ACN102317884A6/43页100087图60是表示AND处理流程的流程图。0088图61是表示AND结果VAR_REF画面的图。0089图62是表示梯形程序静态切片画面的图。0090图63是表示实施方式13所涉及的程序分析支援装置的软件结构的功能框图。0091图64是表示梯形程序静态切片处理流程的流程图。0092图65是表示在定义新指令时需要定义的处理流程的图。0093图66是表示与VAR_REF指令定义对应的处理流程的图。0094图67是表示与VAR_FWD指令定义对应的处理流程的图。0095图68是表示与POU_READ指令定义对应的处理流程的图。0。

34、096图69是表示与POU_FWD指令定义对应的处理流程的图。0097图70是表示与AND指令定义对应的处理流程的图。0098图71是表示分析指令与其分析结果数据的关系的图。0099附图标记说明01001程序分析支援装置;2微处理器;3数据保存存储器;4显示部;5输入部;6保存部;10分析条件设定部;11分析条件执行部;12变量使用一览抽取处理执行部;13变量依赖关系抽取处理执行部;14POU一览抽取处理执行部;15POU依赖关系抽取处理执行部;16分析结果逻辑运算处理执行部;17AND处理执行部;18OR处理执行部;19NOT处理执行部;20分析结果显示部;21变量使用一览显示部;22变量依。

35、赖关系显示部;23POU一览显示部;24POU依赖关系显示部;294梯形静态切片条件设定部。具体实施方式0101实施方式1。0102图1是表示后述的各实施方式中共用的本发明所涉及的程序分析支援装置的硬件结构的框图。在图1中,程序分析支援装置1具备1微处理器2,执行程序分析支援装置1的各功能;2用于临时保存数据的数据保存存储器3,例如由DRAM构成;3显示部4,由液晶显示器等显示器装置构成;4输入部5,由鼠标和/或键盘等输入装置构成;以及5由硬盘等存储装置构成的保存部6,将分析对象的测量控制程序以及用于实现程序分析支援装置的各功能的程序分析支援用程序等程序或分析结果等数据分别作为文件而进行存储和。

36、保持。并且,各部分26通过系统总线SB而相互连接。0103在本分析支援装置1中进行针对测量控制程序的程序分析对照索引的制作的情况下,用户通过操作输入部5,输入程序分析条件,并且从保持在保存部6中的多个测量控制程序中指定应指定的测量控制程序。伴随该输入操作,程序分析条件和测量控制程序的指定内容被保持到微处理器2内的寄存器未图示中。在此基础上,微处理器2访问保存部6,从保存部6读出由用户指定的测量控制程序,并按照由用户输入的程序分析条件,执行该测量控制程序的分析处理。并且,微处理器2将该分析处理结果临时保存到数据保存存储器3中,并且将该结果显示在显示部4的画面上,或者作为一个文件而存储到保存部6内。

37、。0104此外,用于执行程序分析支援装置1的各功能或各处理的分析支援用程序本身作为能够在个人计算机上动作的软件工具而被提供。在该情况下,程序分析支援装置1由上说明书CN102317877ACN102317884A7/43页11述个人计算机构成。或者,还存在上述分析支援用程序被搭载在GOT上的情况,在这种情况下,上述GOT构成程序分析支援装置1。0105图2是表示由程序分析支援装置1中的微处理器2执行的分析处理中的各功能部的功能框图相当于软件框图。如图2所示,程序分析支援装置1或微处理器2主要具备分析条件设定部10、分析条件执行部11以及分析结果显示部20。0106在它们之中,分析条件执行部11。

38、具有用于进行程序分析处理的各功能部。即,在本实施方式中,进行变量器件的对照索引的抽取,因此分析条件执行部11具备POU一览抽取处理执行部14,用于读入成为对照索引抽取的对象的程序;变量使用一览抽取处理执行部12,是执行对照索引抽取处理的部分。0107另外,分析结果显示部20具备变量使用一览显示部21,该变量使用一览显示部21制作具有用于将对照索引结果显示在图1的显示部4的画面上的形式的显示数据。0108而且,分析条件执行部11具备分析结果逻辑运算处理执行部16。并且,分析结果逻辑运算处理执行部16作为利用程序分析处理的各功能来进行分析结果彼此的逻辑运算的部分,而具备AND处理执行部17、OR处。

39、理执行部18以及NOT处理执行部19。0109用户通过图1的输入部5而对分析条件设定部10输入程序分析条件。响应于该输入,分析条件执行部11执行与用户所输入的程序分析条件相应的分析处理。例如,分析条件执行部11进行从图1的保存部6读出用户所指定的测量控制程序相当于分析对象程序文件8或者与分析对象程序相关联的器件注释文件9,或者制作对照索引,或者处理分析结果彼此的逻辑运算AND/OR/NOT。之后,分析结果显示部20进行用于在图1的显示部4的画面上进行与分析结果相应的显示的数据制作等动作,或者将分析结果的数据作为分析结果文件25而输出到外部。例如,分析结果显示部20接收由分析条件执行部11制作的。

40、对照索引结果,制作用于将所接收到的该对照索引结果显示在显示部4的画面上的显示数据,并将该显示数据输出到显示部4,从而对用户显示所接收到的对照索引结果,或者将所接收到的对照索引结果作为对照索引结果文件而输出到外部。0110下面,记载将作为PC的测量控制程序的梯形程序设为程序分析的对象的一例。在此,图3是构成PC的测量控制程序的POU之一,其名称是MAIN梯形电路。图3是梯形电路图表现,在将其表现为文本形式例如IL形式。ILINSTRUCTIONLIST指示表时,图3被表现为如图4那样。而且,图5是构成PC的测量控制程序的另一POU,其名称是SUB梯形电路。图5被表现为梯形电路图,在将其以文本形式。

41、表现时,图5被表现为如图6所示那样。0111图7及图8是表示为了让用户使用图1的输入部5将程序分析条件输入到本装置1的微处理器2而显示在显示部4上的画面的一例的图。这种程序分析支援画面通过图2的分析条件设定部10的功能动作而显示在显示部4的画面上,该部件10原样地保持由用户通过上述程序分析支援画面所输入的程序分析条件。0112在图7所示的程序分析支援画面的情况下,各行由式编号单元、分析指令单元、分析对象单元、分析条件单元以及结果件数单元构成。用户观察图7的画面,将与分析指令相应的分析对象以及分析条件分别输入到对应的单元中。即,用户在分析对象单元中主要指定成为分析指令进行分析处理的对象的对象总体。

42、。并且,用户在分析条件单元中主要指定分析指令进行分析处理的条件。说明书CN102317877ACN102317884A8/43页120113此外,如图8所示的一例那样,也可以代替由如图7那样的与输入数据种类对应的各单元构成用于用户输入程序分析条件的画面结构,而设定为由用户输入程序分析条件的整个式的结构。0114用户在完成在图7或图8的画面所示出的分析条件单元中输入分析条件的处理之后,进行在画面的式编号的栏之前附加记号的输入处理,来指定想要执行的式编号,之后,进行将显示在画面的左上侧的执行按钮进行按下点击的动作。当进行该点击处理输入处理时,图2的分析条件设定部10对分析条件执行部11进行指示以使。

43、从成为执行对象的编号小的式编号起依次进行分析条件式的处理,分析条件执行部11响应于该指示,按各式编号的顺序执行分析处理。在图7的画面结构例中,从式编号S001至式编号S010分别被输入程序分析条件分析指令、分析对象以及分析条件,各个式编号通过记号的显示而被指定为执行对象,因此当用户按下点击执行按钮时,之后,从式编号S001依次到式编号S010为止,图2的分析条件执行部11根据所输入的程序分析条件来执行分析处理。0115分析处理的结果从分析条件执行部11返回到分析条件设定部10。其结果,分析条件设定部10将分析处理的结果件数显示在图1的显示部4所显示的程序分析支援画面上的结果件数单元中。并且,当。

44、用户点击显示在结果件数单元右侧的按钮BT时,与此相应地,分析结果显示部20将分析处理的结果显示在图1的显示部1的画面上。01160117接着,记载构成程序分析条件之一的分析指令的处理内容。0118A首先,图7所示的分析指令POU_READ是用于指定或用于读入成为分析对象的程序POU的指令,用户在分析对象单元内指定在之后的处理中根据式编号所指定的应作为分析对象的程序名POU名。在图7中示出了通过以式编号S001所表示的指令的执行来指定读入程序名为MAIN的POU的例子,作为其分析结果,输出以程序MAIN为元素的POU的集合COLLECTION。“集合”是表示数据元素的集合的软件技术用语。“POU。

45、的集合”是指以程序POU为元素的集合。此外,在分析对象单元中没有指定应作为分析对象的POU名时,以构成程序的所有POU为元素的集合作为分析结果而被输出。在此,在图9的流程图中示出图2的POU一览抽取处理执行部14执行分析指令POU_READ时的处理的流程。如图9所示,涉及分析指令POU_READ的处理的技术,与以往的在制作对照索引时指定程序作为检索范围的技术相同。0119B接着,图7所示的分析指令VAR_REF是抽取变量器件的对照索引的指令,由图2的变量使用一览抽取处理执行部12执行。因此,用户在分析对象单元中指定用于对成为分析指令VAR_REF的分析对象的程序进行指定的式编号,并且在分析条件。

46、单元中指定成为对照索引抽取的条件的变量器件。图7的式编号S002表示指定抽取程序MAIN中的所有的器件M所相关的对照索引的例子,其中,该程序MAIN是通过以式编号S001所提供的分析指令POU_READ的执行而从保存部6读入到微处理器2内的POU,图2的变量使用一览抽取处理执行部12输出以在程序MAIN中使用变量器件M的位置为元素的集合而作为其分析结果。0120在此,在图10的流程图中示出由图2的变量使用一览抽取处理执行部12执行的分析指令VAR_REF的处理的流程。在涉及分析指令VAR_REF的处理的技术中,分析指令VAR_REF的被指定到分析对象单元中的POU集合的元素为1的情况下的处理步。

47、骤S40S41说明书CN102317877ACN102317884A9/43页13S43是成为分析指令VAR_REF的基础的处理,与以往的对照索引制作的技术相同。也就是说,由式编号S002所提供的分析指令VAR_REF的执行是能够利用以往的对照索引制作的技术来进行处理的。0121另外,变量使用一览抽取处理执行部12将式编号S002的分析处理的结果集合作为VAR_REF结果显示画面而显示在图1的显示部4的画面上。图11中示出根据该结果集合而显示的VAR_REF结果显示画面的例子。如图11所示,在MAIN梯形程序中,使用变量器件M的位置存在6处器件M1、M3M6,显示它们的对照索引结果。器件M3除。

48、了在步骤编号5中作为SET设置命令的操作数而被使用以外,在步骤编号6中还作为接点的操作数而被使用,分别是对照索引结果的元素。此外,对分析指令VAR_REF的处理结果进行显示的技术也与以往的对照索引制作的技术相同。0122另外,在图12中一并示出在相关联的器件注释文件中记载有变量器件M的注释的情况下的VAR_REF结果显示画面例。0123同样地,图7的式编号S003表示指定读入作为POU的程序SUB的例子,接着执行的式编号S004表示指定抽取通过式编号S003的分析指令的执行而读入的程序SUB中的所有变量器件M所相关的对照索引的例子。在此,图13中示出式编号S004的VAR_REF结果显示画面例。

49、。0124C接着,图7所示的分析指令AND是用于抽取作为处理结果所抽取的数据集合的逻辑积LOGICALPRODUCT的指令,由图2的AND处理执行部17执行。因此,用户在分析对象第一自变量单元和分析条件第二自变量单元中分别指定成为逻辑积的对象的两个式编号。图7的式编号S005表示指定抽取在式编号S002中所抽取的对照索引结果与在式编号S004中所抽取的对照索引结果的逻辑积的例子。即,式编号S005表示指定抽取在程序MAIN中被使用且在程序SUB中也被使用的所有变量器件M所相关的对照索引的例子。0125在图14和图15的流程图中示出AND处理执行部17所执行的分析指令AND的处理的流程。图14所示的POU集合彼此的AND处理是单纯的逻辑积的处理,但是如果将对照索引指定器件的使用位置的集合彼此的AND处理也单纯地设为逻辑积,则在任何情况下结果都为空。这是因为,在程序MAIN中使用变量器件M4的位置与在程序SUB中使用变量器件M4的位置互不相同而只是变量器件相同,因此两个使用位置不视为相同。0126本发明在本实施方式中的特征点在于该对照索引指定器件的使用位置的集合彼此的AND处理参照图15。即,其特征点在于将变量器件相同的情形作为逻辑积的运算基准。例如,在程序MAIN中使用变量器件M4的位置参照图11与在程序SUB中使用变。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 控制;调节


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1