JP5275087B2 - Program generating apparatus and block diagram generating apparatus - Google Patents
Program generating apparatus and block diagram generating apparatus Download PDFInfo
- Publication number
- JP5275087B2 JP5275087B2 JP2009048455A JP2009048455A JP5275087B2 JP 5275087 B2 JP5275087 B2 JP 5275087B2 JP 2009048455 A JP2009048455 A JP 2009048455A JP 2009048455 A JP2009048455 A JP 2009048455A JP 5275087 B2 JP5275087 B2 JP 5275087B2
- Authority
- JP
- Japan
- Prior art keywords
- block diagram
- block
- branch point
- branch
- program
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
Description
本発明はたとえばモデルベース開発ツールに利用可能なプログラム生成装置およびブロック線図生成装置に関する。 The present invention relates to a program generation apparatus and a block diagram generation apparatus that can be used for a model-based development tool, for example.
ソフトウェアの開発においてモデルベース設計/開発と呼ばれる手法が存在する。モデルベース設計/開発とはモデルを用いてソフトウェアの設計を行い、そのモデルに基づいてソフトウェアの開発を行う方法のことである。 There is a technique called model-based design / development in software development. Model-based design / development is a method of designing software using a model and developing software based on the model.
中でも、制御系ソフトウェアのモデルベース設計とはブロック線図を用いて制御系設計およびシミュレーションを行い、ソフトウェアの開発を行う方法をいう。制御ソフトウェアのモデルベース設計/開発を支援するためにブロック線図からソフトウェアのソースコードを生成するツールがいくつか知られている(たとえば非特許文献1、2を参照)。
In particular, model-based design of control system software refers to a method of developing software by performing control system design and simulation using a block diagram. Several tools are known that generate software source code from a block diagram to support model-based design / development of control software (see, for example, Non-Patent
制御系ソフトウェアの開発においてはソースコードの再利用が一般的に行われる。ブロック線図を用いたモデルベース設計/開発においてソースコードの再利用を行う場合,ソースコードとは別にモデル(ブロック線図)も管理しておく必要があった。 In the development of control system software, the reuse of source code is generally performed. When reusing source code in model-based design / development using block diagrams, it was necessary to manage the model (block diagram) separately from the source code.
本件出願人により以前に出願された特願2008-021342号では、ブロック線図からソースコードを生成する際にブロック線図の構造情報をコメントとしてソースコードに付加するプログラム生成装置と、その構造情報を用いてブロック線図を生成(復元)するブロック線図生成装置とが示され、これによりモデルとソースコードの一元管理が実現されている。この方法においては、ブロック線図を分岐点で入力側片と出力側片とに分割し、各分割片(入力側片および出力側片)に対応してプログラム命令をそれぞれ生成し、各プログラム命令のコメント行に各分岐片の構造情報を記述し、これによりプログラムを生成する。構造情報は、分岐片に含まれるブロック要素およびその属性、ならびにブロック要素間のデータ線による接続関係を含む。ブロック線図生成の際は、プログラムのコメント行から、構造情報を読み出し、読み出した構造情報に基づきブロック線図を復元する。 In Japanese Patent Application No. 2008-021342 previously filed by the applicant of the present application, when generating source code from a block diagram, a program generator for adding the structure information of the block diagram to the source code as a comment, and its structure information A block diagram generating device that generates (restores) a block diagram using the above is shown, and thereby unified management of models and source codes is realized. In this method, the block diagram is divided into an input side piece and an output side piece at a branch point, and program instructions are generated for each divided piece (input side piece and output side piece). In the comment line, the structure information of each branch piece is described, thereby generating a program. The structure information includes block elements included in the branch piece and their attributes, and connection relationships between the block elements by data lines. When generating the block diagram, the structure information is read from the comment line of the program, and the block diagram is restored based on the read structure information.
しかし、上記方法では、2つ以上の連続した分岐点によってデータ線が3つ以上に分岐される多重分岐を含むブロック線図からプログラムを生成する場合、不必要にプログラム命令数が多くなる問題がある。すなわち、多重分岐を含むブロック線図の場合、2つの分岐点と、当該2つの分岐点間を接続するデータ線とを含む分岐片が生成されるが、この分岐片に対応するプログラム命令は、単に変数の入替えを行うのみであるため、処理効率の低下につながる。 However, in the above method, there is a problem that the number of program instructions is unnecessarily increased when a program is generated from a block diagram including multiple branches in which data lines are branched into three or more by two or more consecutive branch points. is there. That is, in the case of a block diagram including multiple branches, a branch piece including two branch points and a data line connecting the two branch points is generated. A program instruction corresponding to the branch piece is Since only variable substitution is performed, processing efficiency is reduced.
また、上記方法では、多重分岐のブロック線図の場合、各ブロック要素の位置およびデータ線の折れ曲がる位置等の座標情報、ならびに連続した分岐点における分岐の順序等の情報は復元されない。そのため、構造情報から復元されたブロック線図は元のブロック線図と論理的には同一のモデルであっても、図としての表現(視覚的な表現)は異なるものであった。そのため、制御設計者にとって復元されたモデルを直感的に理解することが困難になる等の問題があった。 Further, in the above method, in the case of a multi-branch block diagram, the coordinate information such as the position of each block element and the position where the data line is bent, and the information such as the order of branches at successive branch points are not restored. Therefore, even if the block diagram restored from the structural information is logically the same model as the original block diagram, the representation (visual representation) as a diagram is different. Therefore, there has been a problem that it becomes difficult for the control designer to intuitively understand the restored model.
本発明は、多重分岐をもつブロック線図の場合であってもプログラム命令数が不必要に多くならないようにプログラムを生成し、また、元のブロック線図の図としての表現(視覚的な表現)を維持して復元できるようにした、プログラム生成装置およびブロック線図生成装置を提供する。 The present invention generates a program so that the number of program instructions is not unnecessarily large even in the case of a block diagram having multiple branches, and also represents the original block diagram as a diagram (visual representation). ) Is maintained and restored, and a program generator and a block diagram generator are provided.
本発明の一態様としてのプログラム生成装置は、
入力ブロック要素と、演算ブロック要素と、出力ブロック要素と、前記入力ブロック要素、前記演算ブロック要素および前記出力ブロック要素間のデータの流れを示すデータ線と、前記データ線のうちの1つである第1のデータ線を3つ以上のデータ線に多重分岐する少なくとも2つの分岐点と、を有するブロック線図を読み出すブロック線図読出手段と、
各前記分岐点にそれぞれ一意の識別子を付与する識別子付与手段と、
各前記分岐点で前記ブロック線図を入力側片と1つ以上の出力片側へ分割し、さらに各前記分岐点にそれぞれ接続されていた複数のデータ線の一端に各前記分岐点のそれぞれの識別子をもつ分岐点ブロック要素を接続することにより複数のブロック線図片を生成するブロック線図分割手段と、
前記複数のブロック線図片の構造情報をそれぞれ生成する構造情報生成手段と、
前記複数のブロック線図片のうち、少なくとも入力ブロック要素と、演算ブロック要素と、出力ブロック要素のいずれかをもつブロック線図片である複数の第1のブロック線図片の処理を実現するプログラム命令を、前記複数の第1のブロック線図片において前記多重分岐をなす各前記分岐点から派生した前記分岐点ブロック要素がすべて同一の変数により表されるように生成するプログラム命令生成手段と、
前記多重分岐をなす前記分岐点のうち最も入力側の分岐点での分割により得られた前記入力側片を含む前記第1のブロック線図片から生成されたプログラム命令が、他の残りの前記第1のブロック線図片から生成されたプログラム命令よりも先に実行されるように各前記プログラム命令の実行順序を決定する実行順序決定手段と、
決定された実行順序に従って各前記プログラム命令を配置し、各前記第1のブロック線図片の構造情報を各前記第1のブロック線図片に対応するプログラム命令のコメント行に記述し、前記複数のブロック線図片のうち前記第1のブロック線図片以外の残りのすべてのブロック線図片である、複数の前記分岐点ブロック要素と前記データ線とのみを含む第2のブロック線図片の構造情報を前記プログラム命令のいずれかのコメント行または他の任意のコメント行に記述することにより、前記決定された実行順序に従って各前記プログラム命令を実行するプログラムを生成するプログラム生成手段と、
を備える。
A program generation apparatus as one aspect of the present invention includes:
One of the input block element, the arithmetic block element, the output block element, the data line indicating the data flow between the input block element, the arithmetic block element and the output block element, and the data line. Block diagram reading means for reading a block diagram having at least two branch points for branching the first data line into three or more data lines;
Identifier giving means for giving a unique identifier to each of the branch points;
The block diagram is divided into an input side piece and one or more output pieces at each branch point, and each identifier of each branch point is connected to one end of a plurality of data lines respectively connected to each branch point. A block diagram dividing means for generating a plurality of block diagram pieces by connecting branch point block elements having
Structure information generating means for generating structure information of each of the plurality of block diagram pieces;
A program for realizing processing of a plurality of first block diagram pieces that are block diagram pieces having at least one of an input block element, an operation block element, and an output block element among the plurality of block diagram pieces Program instruction generating means for generating instructions so that the branch point block elements derived from the branch points forming the multiple branches in the plurality of first block diagram pieces are all represented by the same variable;
A program instruction generated from the first block diagram piece including the input side piece obtained by division at the branch point closest to the input side among the branch points forming the multi-branch, Execution order determining means for determining the execution order of the program instructions to be executed before the program instructions generated from the first block diagram piece;
The program instructions are arranged in accordance with the determined execution order, the structure information of each of the first block diagram pieces is described in a comment line of the program instruction corresponding to each of the first block diagram pieces, A second block diagram piece including only the plurality of branch point block elements and the data lines, which are all remaining block diagram pieces other than the first block diagram piece. Program generating means for generating a program for executing each of the program instructions in accordance with the determined execution order by describing the structural information in any comment line or any other comment line of the program instructions;
Is provided.
本発明の一態様としてのブロック線図生成装置は、
それぞれ入力ブロック要素、演算ブロック要素、出力ブロック要素および分岐点ブロック要素のうちのいずれかでありそれぞれ識別子が設定された複数のブロック要素の接続関係を記述した複数の構造情報をプログラムのコメント行から読み出すデータ読出手段と、
前記複数の構造情報のそれぞれに記述された前記接続関係に従って前記複数のブロック要素をデータ線で接続することにより複数のブロック線図片を生成するブロック線図片生成手段と、
各前記ブロック線図片間で同一の識別子を持つ複数の分岐点ブロック要素を1つの分岐点へ統合するように各前記ブロック線図片を合成してブロック線図を生成するブロック線図片合成手段と、を備え、
各前記構造情報において、前記入力ブロック要素と前記演算ブロック要素と前記出力ブロック要素にはそれぞれ座標情報が設定され、また、前記同一の識別子を持つ複数の分岐点ブロック要素のうちのいずれかには前記複数の分岐点ブロック要素が統合されるべき前記分岐点の座標情報が設定され、
前記ブロック線図片合成手段は、
各前記ブロック線図片における前記入力ブロック要素と前記演算ブロック要素と前記出力ブロック要素とをそれぞれの座標情報に応じた位置に配置し、
前記同一の識別子を持つ複数の分岐点ブロック要素を統合した前記分岐点を、前記複数の分岐点ブロック要素のうちのいずれかに設定されている座標情報に応じた位置に配置する
ことを特徴とする。
A block diagram generation apparatus as one aspect of the present invention includes:
From the comment line of the program, multiple pieces of structural information describing the connection relationships of multiple block elements, each of which is one of an input block element, an operation block element, an output block element, and a branch point block element, each set with an identifier Data reading means for reading;
Block diagram piece generating means for generating a plurality of block diagram pieces by connecting the plurality of block elements with data lines according to the connection relationship described in each of the plurality of structure information;
A block diagram piece composition for generating a block diagram by synthesizing each block diagram piece so as to integrate a plurality of branch point block elements having the same identifier between the block diagram pieces into one branch point Means, and
In each of the structural information, coordinate information is set for each of the input block element, the calculation block element, and the output block element, and any one of the plurality of branch point block elements having the same identifier is provided. The coordinate information of the branch point where the plurality of branch point block elements are to be integrated is set,
The block diagram piece combining means is:
The input block element, the arithmetic block element, and the output block element in each block diagram piece are arranged at positions corresponding to the respective coordinate information,
The branch point obtained by integrating a plurality of branch point block elements having the same identifier is arranged at a position corresponding to coordinate information set in any of the plurality of branch point block elements. To do.
本発明により、多重分岐をもつブロック線図の場合であってもプログラム命令数が不必要に多くならないようにプログラムを生成でき、また、元のブロック線図の図としての表現(視覚的な表現)を維持して復元できる。 According to the present invention, even in the case of a block diagram having multiple branches, a program can be generated so that the number of program instructions does not become unnecessarily large, and the representation (visual representation) of the original block diagram ) Can be restored.
以下、図面を参照しながら本発明の実施例を説明する.
(実施例1)
図1は本発明の実施例1によるブロック線図−プログラム相互変換システムの構成を示す図である。図1において10はプログラム生成装置20の入力となるブロック線図、20はプログラム生成装置、30はプログラム生成装置20によって生成されたプログラム(ソースコード)である。ブロック線図生成装置40はプログラム30を入力としてブロック線図10を生成し、生成したブロック線図10を出力する。プログラム生成装置20およびブロック線図生成装置40は例えばパーソナルコンピュータ(PC:Personal Computer)に実装されたCPU等の演算装置により実行されるプログラムとして実現される。このプログラムはコンピュータに内蔵あるいは外付けされたメモリ、ハードディスク、あるいは、CD−ROM,CD−R等の記憶媒体に適宜格納してコンピュータにより読み出して実行することも可能である。
Embodiments of the present invention will be described below with reference to the drawings.
(Example 1)
FIG. 1 is a diagram showing a configuration of a block diagram-program mutual conversion system according to
以下ではまず図1のブロック線図−プログラム相互変換システムの概要について説明し、その後、本システムの詳細を具体的に説明する。 In the following, the outline of the block diagram-program mutual conversion system in FIG. 1 will be described first, and then the details of the system will be specifically described.
プログラム生成装置20はブロック線図10から実行順情報22を生成する実行順生成処理部21と、実行順情報22からプログラム30を生成するプログラム生成処理部23からなる。
The
実行順生成処理部21は、図示しない記憶部からブロック線図10(後述する図2参照)を読み出す。すなわち、実行順生成処理部21は、ブロック線図を読み出す“ブロック線図読出手段”を備える。ブロック線図は、入力ブロック要素と、演算ブロック要素と、出力ブロック要素と、入力ブロック要素、演算ブロック要素および出力ブロック要素間のデータの流れを示すデータ線と、データ線のうちの1つである第1のデータ線を3つ以上のデータ線に段階分岐する少なくとも2つの分岐点とを有する。
The execution order
入力ブロック要素はブロックの種類ごとに定められた処理を行い処理された信号を出力するブロック、出力ブロック要素は自身へ入力された信号に対してブロックの種類ごとに定められた処理を行うブロック、演算ブロック要素は、自身へ入力された信号に対してブロックの種類ごとに定められた処理を行い処理された信号を出力するブロックである。 An input block element performs a process defined for each block type and outputs a processed signal, and an output block element performs a process defined for each block type for a signal input to itself, The calculation block element is a block that performs a process determined for each block type on a signal input to itself and outputs a processed signal.
ここで、読み出したブロック線図10において、入力ブロック要素、演算ブロック要素、出力ブロック要素および各分岐点にはそれぞれ座標情報が設定されている。データ線が屈曲しているときは屈曲点の座標情報がさらに設定されていてもよい。 Here, in the read block diagram 10, coordinate information is set for each of the input block element, the calculation block element, the output block element, and each branch point. When the data line is bent, coordinate information of the bending point may be further set.
実行順生成処理部21は、ブロック線図10において多重分岐を構成する各分岐点のそれぞれに一意の識別子を付与する。これは本発明の“識別子付与手段”の処理に相当し、実行順生成処理部21は識別子付与手段を含む。
The execution order
実行順生成処理部21は、多重分岐をなす各分岐点でブロック線図を入力側片と出力側片へ分割し、各分岐点にそれぞれ接続されていた複数のデータ線の一端に各分岐点のそれぞれの識別子をもつ分岐点ブロック要素を接続する。これにより、複数のブロック線図片(後述する図7参照)を生成する。したがって、各ブロック線図片は、各分岐点の入力側片および出力側片のうちのいずれかと、少なくとも1つの分岐点ブロック要素を含む。実行生成処理部21は、分割の際、各分岐点のそれぞれから派生した複数の分岐点ブロック要素のうちの少なくともいずれかに各分岐点のそれぞれの座標情報を付与する。すなわち、同じ分岐点から派生した各分岐点ブロック要素のうちのいずれかには当該分岐点の座標情報を設定する。また実行順生成処理部21は、分割の際、分岐点から出力側への分岐が複数あり、かつこれらの分岐が再度結合しないときは各分岐に応じてそれぞれ出力側片を生成し、再度結合するときは各分岐に対応して1つの出力側片を生成する。本段落で述べた処理は、本発明の“ブロック線図分割手段”の処理に相当し、実行順生成処理部21は、ブロック線図分割手段を備える。
The execution sequence
実行順生成処理部21のブロック線図分割手段によって生成されたブロック線図片のうち、少なくとも入力ブロック要素と、演算ブロック要素と、出力ブロック要素のいずれかをもつブロック線図片は、第1のブロック線図片と称される。また、複数のブロック線図片のうち第1のブロック線図片以外の残りのすべてのブロック線図片、すなわち、複数(たとえば2つ)の分岐点ブロック要素と分岐点ブロック要素間を接続するデータ線とのみを含むブロック線図片は、第2のブロック線図片と称される。
Of the block diagram pieces generated by the block diagram dividing means of the execution order
実行順生成処理部21は、ブロック線図分割手段によって生成されたブロック線図片(各第1および第2のブロック線図片)のそれぞれの構造情報を生成する。各構造情報は、それぞれ対応する対応するブロック線図片に含まれる各ブロック要素間の接続関係(各ブロック要素に備えられる入力端子/出力端子間の接続関係)、およびブロック要素の詳細情報を含む。実行順生成処理部21は、第2のブロック線図片の構造情報を、各第1のブロック線図片のうちいずれかに含まれる分岐点ブロック要素に、当該分岐点ブロック要素の属性として付加する(詳細は後述)。実行順生成処理部21は、ブロック線図分割手段によって生成されたブロック線図片(各第1および第2のブロック線図片)の構造情報をそれぞれ生成する“構造情報生成手段”を備える。
The execution order
実行順生成処理部21は、各第1のブロック線図片の処理を実現するプログラム命令(後述のプログラム生成処理部23により生成される)の実行順序を決定する。より詳細には、多重分岐を形成する各分岐点の最初の分岐点の入力側に対応するプログラム命令が、当該最初の分岐点の出力側に対応するプログラム命令よりも先に実行されるように、各プログラム命令の実行順序を決定する。つまり、各分岐点のうち最も入力側の分岐点で分割された入力側片を含む第1のブロック線図片から生成されたプログラム命令が、他の残りの第1のブロック線図片から生成されたプログラム命令よりも先に実行されるように各プログラム命令の実行順序を決定する。このように実行順生成処理部21は、各プログラム命令の実行順序を決定する“実行順序決定手段”を備える。
The execution order
ここでブロック線図10における少なくとも1つのデータ線が途中で屈曲している場合は、実行順生成処理部21は、上記で説明した処理に加えて、以下の処理を追加的に行ってもよい。すなわち、実行順生成処理部21が備えるブロック線図分割手段は、屈曲点の座標情報を、当該屈曲点を含むデータ線の直前または直後のブロック要素のうちの一方にその属性として設定する。そして実行順生成処理部21が備える構造情報生成手段は、当該一方のブロック要素に設定された屈曲点の座標情報を含むように、当該一方のブロック要素を含むブロック線図片(第1または第2のブロック線図片)の構造情報を生成する。
Here, when at least one data line in the block diagram 10 is bent halfway, the execution sequence
実行順生成処理部21が備える構造情報生成手段により生成された各ブロック線図片の構造情報と、実行順生成処理部21が備える実行順序決定手段により決定された各プログラム命令の実行順序とを併せ持った情報は実行順情報22に相当する。この実行順情報22が実行順生成処理部21の出力となる。後述するように本実施例では実行順情報22は木構造を有している。
The structure information of each block diagram piece generated by the structure information generation means provided in the execution order
プログラム生成処理部23は、各第1のブロック線図片の処理を実現するプログラム命令(後述する図11参照)を生成する。この際、各第1のブロック線図片に含まれるすべての分岐点ブロック要素を同一の変数により表すようにする。ただしプログラム生成処理部23は、分岐点ブロック要素とデータ線とのみを含む第2のブロック線図片の処理を実現するプログラム命令は生成しない。このようにして本実施例では不必要にプログラム命令数が多く生成されるのを阻止できる。
The program
プログラム生成処理部23は、各プログラム命令を、実行順情報22に示される実行順序にしたがって配置し、さらに各第1ブロック線図片の構造情報をそれぞれ対応するプログラム命令のコメント行に記述することによりプログラム30(後述する図15参照)を生成する。ここでは、第2のブロック線図片の構造情報は、任意の第1のブロック線図片内の分岐点ブロック要素にその属性として付加することで、間接的にコメント行に記述されたが、第2のブロック線図片の構造情報を、上記分岐点ブロック要素の属性に付加せずに、各プログラム命令のいずれかに対応するコメント行に直接記述するようにしてもよい。あるいは、第2のブロック線図片の構造情報を、各プログラム命令に対応するコメント行と異なる他の任意のコメント行に記述してもよい。
The program
このように、プログラム生成処理部23は、各第1のブロック線図片の処理を実現するプログラム命令を生成する “プログラム命令生成手段”を備える。またプログラム生成処理部23は、各生成されたプログラム命令を上記実行順情報22に示される実行順序に従って配置し、各第1のブロック線図片の構造情報をそれぞれ対応するプログラム命令のコメント行に記述し、第2のブロック線図片の構造情報を各プログラム命令のいずれかのコメント行または他の任意のコメント行に記述することによりプログラムを生成する“プログラム生成手段”を備える。
As described above, the program
ブロック線図生成装置40はプログラム30から実行順情報22を抽出する実行順抽出処理部41と、実行順情報22からブロック線図10を生成するブロック線図生成処理部42からなる。
The block
実行順抽出処理部41は、プログラム30から実行順情報22を抽出する。すなわち、プログラム30における各プログラム命令のコメント行から構造情報を、各プログラム命令の実行順序と関連づけて読み出す。構造情報は、それぞれ複数のブロック要素の接続関係を記述し、複数のブロック要素のそれぞれは入力ブロック要素、演算ブロック要素、出力ブロック要素または分岐点ブロック要素である。実行順抽出処理部41は、プログラム30における各プログラム命令のコメント行から構造情報を読み出す“データ読出手段”を備える。
The execution order
ブロック線図生成処理部42は、実行順情報22に含まれる各構造情報のそれぞれに記述された接続関係に従って複数のブロック要素をデータ線で接続する(各ブロック要素の入力端子/出力端子間をデータ線で接続する)ことにより複数のブロック線図片を生成する。この際、生成されたブロック線図片における分岐点ブロック要素にその属性として、ブロック線図片(第2のブロック線図片)の構造情報が付加されているときは、この構造情報に対応するブロック線図片も生成する。これらの処理は、本発明の“ブロック線図片生成手段”の処理に相当し、ブロック線図生成処理部42は、ブロック線図片生成手段を含む。
The block diagram
さらに、ブロック線図生成処理部42は、各ブロック線図片(第1および第2のブロック線図片)間で同一の識別子を持つ分岐点ブロック要素を1つの分岐点へ統合するように各ブロック線図片を合成し、これによりブロック線図10を生成(復元)する。これは本発明の“ブロック線図片合成手段”の処理に相当し、ブロック線図生成処理部42はブロック線図片合成手段を含む。
Further, the block diagram
ここで、プログラム生成装置20の説明で述べたように、入力ブロック要素と演算ブロック要素と出力ブロック要素にはそれぞれ座標情報が設定され、また、前記同一のブロック識別子を持つ複数の分岐点ブロック要素のうちのいずれかには、これら複数の分岐点ブロック要素が分岐された分岐点の座標情報が設定されている。
Here, as described in the description of the
そこで、ブロック線図生成処理部42が備える上記ブロック線図合成手段は、各ブロック線図片における入力ブロック要素と演算ブロック要素と出力ブロック要素とをそれぞれの座標情報に応じた位置に配置し、また、同一のブロック識別子を持つ複数の分岐点ブロック要素が統合された分岐点をその座標情報に応じた位置に配置する。これにより元のブロック線図(プログラム生成装置20に入力されたブロック線図)の図としての表現(視覚的な表現)を損なわずに、元のブロック線図が復元される。ここでいずれかのブロック要素(入力ブロック要素、演算ブロック要素、出力ブロック要素、分岐点ブロック要素)にデータ線の屈曲点の座標情報が設定されているときは、当該ブロック要素の直前および直後のデータ線のうちあらかじめ定められた一方を、当該屈曲点の座標情報に応じた位置で屈曲(通過)するようにデータ線を配置する(詳細は後述)。これにより元のブロック線図の屈曲も含めて、元のブロック線図を復元できる。すなわち各ブロック要素の位置ならびに各ブロック要素の入力端子および出力端子の位置は定まっており、または上記分岐点の位置も上記のように定まっているため、上記屈曲点の位置を通過するようにデータ線を配置することで元の屈曲が復元できる。
Therefore, the block diagram synthesizing means provided in the block diagram
以下、図1のブロック線図−プログラム相互変換システムについてさらに詳細に説明する。 Hereinafter, the block diagram-program mutual conversion system of FIG. 1 will be described in more detail.
図2にブロック線図10の一例101を示す。1001は入力ブロック要素in1、1002、1003、1004、1005は出力ブロック要素out1、out2、out3、out4、1006、1007、1008、1009、1010は演算ブロック要素a、b、c、d、eであり、1011〜1016は信号線(本発明のデータ線に相当する)、1017〜1019は分岐点であり、1017〜1019によって信号線1012が4つに多重分岐されている。図中のIn、Out、A、B、C、D、Eはブロック要素の種類であり、in1、a、b、c、d、e、out1、out2、out3、out4、はブロック要素を識別する名前であり、ア、ウ、オは分岐点の座標、イ、エ、カは信号線の屈曲点の座標である。ブロック線図101は、入力ブロック要素1001から入力された信号に処理A、処理Bを順に施した信号を出力ブロック要素1002から出力し、入力ブロック要素1001から入力された信号に処理A、処理Cを順に施した信号を出力ブロック要素1003から出力し、入力ブロック要素1001から入力された信号に処理A、処理Dを順に施した信号を出力ブロック要素1004から出力し、入力ブロック要素1001から入力された信号に処理A、処理Eを順に施した信号を出力ブロック要素1005から出力することを表している。図2の例では3つの分岐点によりデータ線が4つに分岐される例が示されるが、本発明はこれに限定されず、少なくとも2つの分岐点により3つ以上にデータ線が分岐されるブロック線図であれば適用可能である。
FIG. 2 shows an example 101 of the block diagram 10. 1001 is an input block element in1, 1002, 1003, 1004, 1005 is an output block element out1, out2, out3, out4, 1006, 1007, 1008, 1009, 1010 are operation block elements a, b, c, d, e , 1011 to 1016 are signal lines (corresponding to the data lines of the present invention), 1017 to 1019 are branch points, and 1017 to 1019 divide the
ブロック線図101をプログラム生成装置20もしくはブロック線図生成装置40内で扱う際のデータ構造の一例102を図3に示す。1101〜1110がブロック要素1001〜1010を表し、1111〜1116が信号線を表す。
FIG. 3 shows an example of a
ブロック要素は種類属性、名前属性、ブロック線図上におけるブロック要素の位置を表す座標属性を有し、さらに、ブロックの種類毎に定められた属性、およびブロック要素の持つ入力端子の数等の属性を持つ。ブロック要素の種類毎に定められた属性としては、定数倍する機能を持つブロック要素の場合における定数、正弦波を発生する機能を持つブロック要素の場合における振幅と振動数といったものがある。定数等のブロックの種類毎に定められた属性については実行順情報を生成する際には利用しないためここでは表示していない。また、ブロック要素の位置を表す座標属性に関してもここでは表記の簡単のため表示していない。更に、ブロック線図101では演算ブロック要素及び出力ブロック要素の入力端子はすべて1個(入力ブロック要素の入力端子は0個)であるのでここでは表示していない。 A block element has a type attribute, a name attribute, a coordinate attribute that represents the position of the block element on the block diagram, and further attributes such as attributes defined for each block type and the number of input terminals of the block element. have. Attributes determined for each type of block element include a constant in the case of a block element having a function of multiplying by a constant, and an amplitude and a frequency in the case of a block element having a function of generating a sine wave. Attributes defined for each block type, such as constants, are not displayed here because they are not used when generating execution order information. Also, the coordinate attribute representing the position of the block element is not shown here for simplicity of description. Further, in the block diagram 101, since there are only one input terminal for the operation block element and the output block element (the number of input terminals of the input block element is 0), they are not shown here.
信号線は、始点と終点のブロック要素の名前および端子番号と、屈曲点の座標と、分岐点の座標とを属性として持つが、上述のようにここでは端子番号は省略する。またデータ線の分岐はたとえば1112,1112aの組のように、始点属性のみを持つ信号線要素と終点属性のみを持つ分岐線要素との組によって表現する。また分岐線の分岐(多重分岐)は、1118,1119の関係のように分岐線要素の子要素に分岐線要素を持たせることによって表現する。 The signal line has as attributes the names and terminal numbers of the block elements at the start and end points, the coordinates of the bending points, and the coordinates of the branch points, but the terminal numbers are omitted here as described above. The branch of the data line is expressed by a set of a signal line element having only the start point attribute and a branch line element having only the end point attribute, such as a set of 1112 and 1112a. A branch of a branch line (multiple branch) is expressed by having a branch line element as a child element of the branch line element as in the relationship of 1118 and 1119.
ブロック線図101はたとえばデータ構造102を表すテキストファイルの形式でプログラム生成装置20に入力される。データ構造102を表すファイルの一例を図4に示す。
The block diagram 101 is input to the
実行順生成処理部21の識別子付与手段は1118、1119の2つの分岐点(分岐線の分岐点)に識別子を付与する。データ構造102で表わした場合、分岐線要素(図中のBranch)のうち、子要素として分岐線要素を持つものに相当する。以下、実行順生成処理部21の識別子付与手段の処理の概要について、図5に示す流れ図を参照して説明する。識別子付与手段への入力がブロック線図101を表すデータ構造102、識別子付与手段の出力が、識別子が付与されたブロック線図のデータ構造102`(図6を参照)である例を元に説明を行う。
The identifier assigning means of the execution order
識別子付与手段ではブロック線図上のすべての信号線要素に対して図5に示す流れ図の処理を行う。データ構造102は1111〜1116の6個の信号線要素を有する。まず、1111に対して図5に示す処理4001を行うが、1111以下には分岐線要素は存在しないため、処理4001で作成される一覧は何も要素を含まず,処理は終了する。信号線要素1112以下には1112a、1118、1118a、1119、1119a、1119bの6つの分岐線要素が存在する。それらに対し、ループ4002内の処理を順次行う。1112a、1118a、1119a、1119bは、分岐線の子要素を持たないため判断4003がNoとなり処理が終了する。1118は、分岐線の子要素を持つため判断4003がYesとなる。分岐線要素に一意の名前を付ける方法として、処理4004では信号線名に番号を付加する方法をとる。ここでは、信号線1112には名前属性がないため、始点ブロック名に_outを付けたものを信号線名として用い、この信号線名に_b0、_b1…と順次番号を付加していくこととする。1118には処理4004によって名前属性a_out_b0が付加され1118`となる。同様に1119には処理4004によって名前属性a_out_b1が付加され1119`となる(図6参照)。
The identifier assigning means performs the processing of the flowchart shown in FIG. 5 for all signal line elements on the block diagram. The
実行順生成処理部21の識別子付与手段の出力102`(図6参照)に、実行順生成処理部21が備えるブロック線図分割手段の処理を行った後のブロック線図片の集合201を図7に示す。分岐点1017から派生した分岐点ブロック要素は2020、2021、2022であり、分岐点1018から派生した分岐点ブロック要素は2027、2023、2024であり、分岐点1019から派生した分岐点ブロック要素は2028、2025、2026である。分岐点の座標ア、ウ、オは、当該分岐点から派生した分岐点ブロック要素のうちその分岐点の入力側のデータ線に接続された分岐点ブロック要素2020、2027、2028に当該分岐点ブロック要素の属性として付加され、屈曲点の座標イ、エ、カは、当該屈曲点を含むデータ線の出力に接続されるブロック要素2027、2028、2010に、当該ブロック要素の属性として付加される。
A set of
次に、実行順生成処理部21のブロック線図分割手段は、ブロック線図片の集合201において、分岐点ブロック要素とデータ線のみから構成される第2のブロック線図片の構造情報を、第1のブロック線図片の分岐点ブロック要素にその属性として付加し、当該第2のブロック線図片を削除する(圧縮処理)。この圧縮処理の後のブロック線図片の集合202を図8に示す。図7のブロック線図片2102、2104は分岐点ブロック要素とデータ線のみで構成されるため削除され、2102の情報は属性2020a、2104の情報は属性2020b、として2020`に付加される。ここで属性2020aおよび2020bを付加する分岐点ブロック要素は2021、2023、2025、2026のいずれかでも可能であるが、多重分岐の入力側である2020’に限定することにより、プログラム命令生成手段およびブロック線図生成処理部において、第2のブロック線図片の情報の付加されている分岐点ブロック要素を探索する処理が軽減可能となる。
Next, the block diagram segmentation means of the execution sequence
実行順生成処理部21のブロック線図分割手段は、図8のブロック線図片の集合202から実行順情報22を生成する。生成された実行順情報のデータ構造の一例203を図9に示す。データ構造の一例203は木構造を有し、根2200に直接つながる各部分木が、図8の各ブロック線図片に対応する。データ構造の一例203は、実行順木とも称される。
The block diagram dividing means of the execution sequence
以上に説明した実行順生成処理部21のブロック線図分割手段の処理は、実際には図10に示す流れ図の処理によって、一括して行われる。これらの処理を、図6のデータ構造102`を入力、図9のデータ構造203を出力として、図10の流れ図を参照して説明する。
The processing of the block diagram dividing means of the execution order
本処理では、まず図6のデータ構造102`の有する各出力ブロック要素を、実行順木203の根に子要素として追加する処理を行い、次にその出力ブロック要素を現在のブロック要素として図10の流れ図に示す処理を行う、ことを繰り返すことにより、実行順情報22(データ構造203)を生成する。以下図10の流れ図の処理について詳細に説明する。
In this process, first, each output block element included in the
図6のデータ構造102’は1102〜1105の4つの出力ブロック要素を有する。そこでまず、out1出力ブロック要素1102をout1出力ブロック要素2202として実行順木203の根2200の直下に追加し、図10の流れ図の開始4101から処理を行う。out1出力ブロック要素1102を終点とする信号線要素1113は分岐線ではないため、判断4102はNoとなり、処理4113によってout1出力ブロック要素2202の子要素として信号線1113の始点であるブロック要素1107を表すブロック要素2207を登録する。信号線1113は座標属性を持たずまた始点である演算ブロック要素1107は入力ブロック要素ではないため、判断4110、4112ともにNoとなり、ループ4116にすすむ。
The data structure 102 'of FIG. 6 has four output block elements 1102-1105. Therefore, first, the out1
次にループ4116の処理を行う。この際、ブロック線図が入力端子が1個以下のブロック要素のみからなる場合、ループ端4116からループ端4119間の処理は、処理4118を1回実行することと等価となる(本実施例では上述のように入力端子の個数は1個以下であるためこれに相当する)。処理4118では信号線1113の始点である演算ブロック要素1107を現在ブロック要素として開始4101から始まる処理を再帰的に呼び出す。
Next, the processing of
ブロック要素1107を終点とする信号線は分岐線1112aであるため、判断4102はYesとなり判断4103に進む。分岐線1112aの親要素は信号線1112であり、親が分岐線でない分岐線の始点は、2個目以降の分岐点(多重分岐点)ではないため、判断4103はNoとなり、処理4105に進む。処理4105で現在ブロック要素2207の下に分岐点ブロック要素2221を登録し、判断4121に進む。この際に登録する分岐点ブロック要素の名前属性の決定法としては、ブロック線図上で該当する信号線112に名前がつけられている場合はその名前にする、なければ規則を設定しその規則に従って名前をつけるなどの方法をとることが可能である。ここではブロック線図上で信号線112はブロック要素a(ブロック要素1106)の出力に相当するためa_outという名前属性を設定することとする(a_outは後の説明において便宜上、信号線112の信号線名として扱われることもある)。分岐線1112aは座標属性を持たないため、判断4121はNoとなり判断4106に進む。
Since the signal line whose end point is the
実行順木の根2200の子要素にa_outという名前属性を持つ分岐点ブロック要素は存在しないため判断4106はNoとなり、処理4108によって、分岐点ブロック要素2221と同じ名前をもつ(あるいは信号線と同じ名前をもつ)分岐点ブロック要素2220`が登録される(なお図中の座標属性(Position:ア)は後の処理で付与される)。更に処理4109によって、多重分岐を構成する分岐点間の接続情報が分岐点ブロック要素2220`の属性として付加される。
Since there is no branch point block element with the name attribute a_out in the child element of the
すなわち、処理4109では、図18に示す流れ図の処理によって多重分岐を表す信号線を表す部分木を探索し、子要素に分岐線要素を持つ分岐線要素と、その親要素である信号線要素もしくは分岐線要素間の接続を、多重分岐の入力側の分岐点要素の属性として付加する。具体的に、信号線1112は1112a、1118`、1118a、1119`、1119a、1119bの6つの分岐線要素を有する。それぞれに対してループ4403の処理を行う。信号線1112の有する6つの分岐線要素のうち子要素も分岐線であるものは1118`、1119`の2つであるので、これらに対してのみ処理4405、4406が行われる。まず、1118`に対して処理4405によって2220`の子要素として1118`の親要素である信号線1112の名前を持つ2220a1が追加され、処理4406によって2220a1の子要素として1118`を表す2220a2が追加される。同様に1119`に対して処理4405によって2220b1、処理4406によって2220b2が追加される。
That is, in the
図10の処理4113によって信号線1112の始点である演算ブロック要素1106が、ブロック要素2206として、実行順木の分岐点ブロック要素2220`の子要素に登録される。信号線1112は座標属性を有するので判断4110はYesとなり、処理4111によってブロック要素2206の実行順木上での親要素である分岐点ブロック要素2220`に座標属性(Position:ア)が付加される。また、演算ブロック要素2206は入力ブロック要素ではないため判断4112はNoとなり、ループ4116の処理に進む。
The
次に処理4118によってブロック要素1106を現在ブロック要素として開始4101から始まる処理が再帰的に呼び出される。ブロック要素1106を終点とする信号線1111は分岐線ではないため判断4102はNoとなり処理4113によって信号線1111の始点である入力ブロック要素1101を表す入力ブロック要素2201が2206の子要素として追加される。信号線1111は座標属性を持たないため判断4112はNoとなり、入力ブロック要素1111は入力ブロック要素であるため判断4112はYesとなり、終了4114によって処理は呼び出し元に戻る。
Next, the
呼び出し元は4118であり、終了4120によって処理が呼び出し元に戻ることを2回繰り返し出力ブロック要素1102に対する処理は終了する。
The caller is 4118, and the process returns to the caller by the
次に、データ構造102が有する2つ目の出力ブロック要素である出力ブロック要素1103をout2出力ブロック要素2203として実行順木203の根2200の直下に追加し、図10の流れ図の開始4101から処理を行う。out2出力ブロック要素1103を終点とする信号線要素1114は分岐線ではないため、判断4102はNoとなる。処理4113に進み、信号線要素1114の始点である演算ブロック要素1108をout2出力ブロック要素2203の子要素2208として登録する。信号線1114は座標属性を持たず、またその始点である演算ブロック要素1108は入力ブロック要素ではない。このため判断4110、4112はNoとなり、ループ4116内の処理4118に進む。
Next, the
次に処理4118では信号線1114の始点である演算ブロック要素1108を現在ブロック要素として開始4101から始まる処理を再帰的に呼び出す。
Next, in the
ブロック要素1108を終点とする信号線は分岐線1118aであるため、判断4102はYesとなり判断4103に進む。分岐線1118aの親要素は分岐線1118`であり、親が分岐線である分岐線の始点は、2個目以降の分岐点(多重分岐点)であるため、判断4103はYesとなり、処理4104 に進む。処理4104で現在のブロック要素2208の下に分岐点ブロック要素2223を登録し、判断4121に進む。この際、登録する分岐点名は、分岐線の始点のため、1118aの親要素である1118`の名前属性a_out_b0となる。分岐線1118aは座標属性を有していないため、判断4121はNoとなり判断4106に進む。判断4106では、分岐線名ではなく分岐線の属する信号線名と同じ名前の分岐点ブロック要素の有無を判定する。分岐線1118aの属する信号線名はa_outであり、すでにこの信号線名a_outをもつ分岐点ブロック要素2220’が登録されているため判断4106はYesとなる。このため、終了4107によって処理は呼び出し元に戻り、出力ブロック要素1103に対する処理は終了する。
Since the signal line whose end point is the
データ構造102が有する残りの出力ブロック要素である出力ブロック要素1104,1105に対しても同様に図10の流れ図に従って処理を行うことでブロック要素2204、2209、2225およびブロック要素2205、2210、2226が登録される。ここで、分岐線要素1119bが座標属性を有しているため、分岐点ブロック要素2226を実行順木に加えた後、判断4121がYesとなり、ブロック要素2226の実行順木上での親要素であるブロック要素2210に座標属性(Position:カが付加される)。
Similarly, the
上述のアルゴリズムによって実行順木(実行順情報)を生成する場合、ブロック線図片
が生成される順序に関しては、図9に示すように、まず2202、2207、2221からなるブロック線図片が生成され、次に2220’、2206、2201からなるブロック線図片が生成される。ただし実際のプログラム30を生成する際には、分岐点の入力側の演算である2220’、2206、2201からなるブロック線図片のプログラム命令を、分岐点の出力側の演算である残りのブロック線図片のプログラム命令よりも先に計算するようにする必要がある。そこで、実行順木の根2200に直接つながる各部分木(ブロック線図片)の実行順序が以下のようになるようにする。すなわち、根2200に直接つながるブロック要素として分岐点ブロック要素をもつ部分木(ブロック線図片)が、当該分岐点ブロック要素の名前に合致する名前(当該分岐点ブロック要素の派生元の分岐点の名前、または当該派生元の分岐点より後の分岐点の名前)をもつ分岐点ブロック要素を葉としてもつ部分木(ブロック線図片)よりも先に実行されるようにする。そして、このような実行順序の制約をデータ構造203に含める。図9のデータ構造203では先に計算するブロック線図片を左側に書くことでブロック線図片(部分木)間の実行順序を示している。
When the execution order tree (execution order information) is generated by the above algorithm, as shown in FIG. 9, a block diagram piece composed of 2202, 2207, and 2221 is first generated as to the order in which the block diagram pieces are generated. Then, a block diagram piece consisting of 2220 ′, 2206, 2201 is generated. However, when the
次に、プログラム生成処理部23の処理について図9のデータ構造203で表される図8の実行順情報202を入力として説明する。本処理で出力されるプログラムの一例301を図11に示す。実行順情報からプログラムを生成する際には、各ブロック線図片の最後のブロック要素(各部分木において実行順木の根に直接接続されるブロック要素)が、1文のプログラム(1つのプログラム命令)により代入される(数式表現の場合左辺に相当する)値となり、各ブロック線図片の最後のブロック要素の直前のブロック要素が1文のプログラム(1つのプログラム命令)において最後に行われる演算となる。また各ブロック線図片において、直前のブロック要素の出力が、次のブロック要素への入力となる。図8においてブロック要素2001、2006、2020`からなるブロック線図片の場合、ブロック要素2001の出力がブロック要素2006の入力となり、ブロック要素2006の出力がブロック要素2020`に代入される。これをプログラミング言語で表すと図11の3001となる。
Next, the processing of the program
プログラム生成処理部23の処理を図12に示す流れ図を参照して詳細に説明する。本処理では各ブロック線図片に相当する各部分木に対して図12の処理を行う。ここでは一例として、ブロック要素2201、2206、2220`からプログラム命令3001を生成する手順について説明する。以下の説明では、図12に加えて、図13に示すスタックの内容を参照する。処理4202によって部分木の内容をすべてスタックに格納する。この状態を図13の2390に示す。その後、処理4204によって被演算子in1と演算子(関数)Aをスタックから取り出しこれらを用いて処理4206によって式を作成する。作成された式を処理4207によって再びスタックに格納する。この状態を図13の2391に示す。処理4207の後再びループ4203を実行し、スタックの内容が被演算子のみになったら(No)、処理4209によってプログラム命令3001を生成して、処理を終了4210する。これによって1つの部分木に対する処理が終了する。
The processing of the program
上記と同様にして、ブロック要素2221、2207、2202からなるブロック線図片からプログラム命令3002が生成される。
In the same manner as described above, a
また、ブロック要素2223、2208、2203からなるブロック線図片からプログラム命令3003が生成される。ただし、ブロック要素2223は、分岐点の出力側に対応するため、処理4202においてブロック要素2223をスタックに格納する際には、ブロック要素2223を示すa_out_b0を格納するのではなく、ブロック要素2223の名前をBP要素(図9参照)として持つブロック要素2220`を示すa_outを格納する(なおブロック要素2221も分岐点の出力側であるがこれはブロック要素2220`と名前が一致するためこのような変換処理は不要である)。これにより、多重分岐をなす各分岐点から派生したすべて分岐点ブロック要素を同一の変数によって表すようにする。同様にして、ブロック要素2225、2209、2204からなるブロック線図片からプログラム命令3004、ブロック要素2226、2210、2205からなるブロック線図片からプログラム命令3005が生成される。
Further, a
上記説明では実行順情報203を構文木の形式で示したが、実行順情報204はたとえば図14に示すようにテキスト形式で表現することも可能である。また、実行順情報203はプログラムの1文に対応する単位で区切られているため、プログラムの1文毎に実行順情報をテキスト形式でコメントとして付加することが可能となる。図11のプログラム301に図14の実行順情報204をコメントとして挿入したものの例302を図15に示す。尚、ここで行頭の#はプログラム301の記述言語におけるコメント文を示す。プログラム302においては、その他のコメント文と区別するための方法として実行順情報を表すコメント文については#を行頭に2文字続けることで表している。プログラム生成処理部23は、このようにプログラム301に実行順情報204をコメントとして挿入することによりプログラム302(図1のソースコード30に対応)を生成し、出力する。プログラムに対応するコメントはプログラミング言語におけるコメント文を用いて記述する方法以外に、プログラム命令の1文毎に識別情報をプログラミング言語におけるコメント文として付加するようにし、一方、対応する構造情報は同一の識別情報を付加した上、プログラム命令とは別のファイルに保存する方法によって管理することも可能である。
In the above description, the
以上プログラム生成装置20について説明した。以下、ブロック線図生成装置40について説明する。
The
ブロック線図生成装置40には実行順情報を挿入されたプログラム(たとえば図15のプログラム302)が入力される。
The block
実行順情報抽出部41においてはプログラム302からコメント部を抽出し、実行順情報204(図14参照)のような実行順情報ファイルを生成する。実行順情報抽出部41の処理は例えばプログラム302を1行ずつ読み込み、その中から行頭に#が2文字続いている行だけを出力ファイルに書き込むなどの方法によって行う。
The execution order
ブロック線図生成処理部42では実行順情報204を入力としてブロック線図10を生成する。ブロック線図生成処理部42では、以下に説明する方法によって、本願発明のブロック線図片生成手段とブロック線図片合成手段との処理を一括して実施する。
The block diagram
ブロック線図生成処理部42の処理の流れを、実行順情報のデータ構造203(図9参照)から図16に示すブロック線図のデータ構造102``へ変換する例をもとに説明する。ブロック線図生成装置40ではまず、図19に示す流れ図の処理により、入力された図9の実行順情報203において分岐点ブロック要素を探索し、分岐を持つ信号線要素(図16の1112参照)と、当該信号線要素の分岐線要素のうち子要素として分岐線要素を持つもの(1118`、1119`参照)とを生成する。次に、入力された実行順情報(データ構造)203の根の子要素すべてに対して順に図17に示す流れ図の処理を行う。これにより、ブロック線図を生成する。以下、本処理について詳細に説明する。
The processing flow of the block diagram
まず、データ構造203(図9参照)に対して、図19に示す流れ図の処理を行う。データ構造203において分岐点の入力側を表す分岐点ブロック要素は2220`のみであるので、2220`に対してループ4503内の処理を1度行う。まず、処理4504により、データ構造102``上に信号線要素1112が生成される。この時点では、1112は名前属性のみを持ち、始点および座標属性は持たない(後ほど図17に示す流れ図の処理によって付加される)。次に、分岐点ブロック要素2220`は子要素としてBP要素を持つため、判断4505はYesとなる。分岐点ブロック要素2220`の直接の子要素であるBP要素は2220a1、2220b1の2個であるため、ループ4506の処理は2度繰り返される。1周目の処理では、処理4507によって現在のブロック要素である1112と同じ名前を持つBP要素である2220a1が発見される。次に、処理4508によって2220a1の子要素である2220a2が1112の子要素1118`としてブロック線図に追加される。ここでは、子要素の名前のみでなく座標属性もブロック線図に追加するため、1118`は座標属性を持つ。2周目の処理では処理4507によって1118`と同じ名前を持つBP要素である2220b1が発見され、処理4508によって1119`がブロック線図に追加される。
First, the processing of the flowchart shown in FIG. 19 is performed on the data structure 203 (see FIG. 9). Since the branch point block element representing the branch point input side in the
次に、次に入力された図9の実行順情報203 の根の子要素すべてに対して順に図17に示す流れ図の処理を行う。データ構造203の根2200は、2220`、2202、2203、2204、2205の5つの子要素を有する。
Next, the processing of the flowchart shown in FIG. 17 is sequentially performed on all the root child elements of the
ここではまず、2220`から処理を行う。2220`は分岐点ブロック要素かつ実行順木の根2200の子要素であるので、分岐点の入力側の分岐点ブロック要素となり判断4302はYesとなる。処理4303によって現在のブロック要素の子要素であるブロック要素2206の名前と種類とを取得する。
Here, first, processing is performed from 2220`. Since 2220` is a branch point block element and a child element of the
処理4304によって現在のブロック要素と一致する名前(a_out)を持つ信号線1112の始点(src)属性として、子要素2206を示すaが付加される。ブロック要素2220`は座標属性(ここでは分岐点の位置を表す座標属性または屈曲点の位置を表す座標属性)を持つため、判断4305はYesとなり、処理4306によって信号線1112の属性として座標属性(<Position>ア)が付加される。次に、処理4317によってブロック要素2206を現在のブロック要素として用いて、4301から始まる処理を再帰的に呼び出す。
In
ブロック要素2206は演算ブロック要素であるため判断4302はNoとなり処理4307によってブロック要素2206がブロック要素1106としてデータ構造102``に追加される。ブロック要素2206は座標属性(ここでは分岐点の位置を表す座標属性または屈曲点の位置を表す座標属性)を持たないため判断4315はNo、演算ブロック要素であるため判断4308もNoとなりループ4310の処理に進む。実行順情報のデータ構造203におけるすべてのブロック要素の子要素はそれぞれ1個以下であるため、本実施例ではループ端4310と4318で挟まれるループはすべて1度ずつのみ実行する。
Since the
ブロック要素2206の子要素は入力ブロック要素2201であるため判断4311はNoとなり処理4314によってブロック要素2201を始点、ブロック要素2206を終点とする信号線1111が生成される。入力ブロック要素2201を現在ブロック要素として用いて4301からはじまる処理が再び呼び出される。
Since the child element of the
判断4302はNoとなるため処理4307によって入力ブロック要素2201が入力ブロック要素1101としてデータ構造102``に追加される。入力ブロック要素2201は座標属性(ここでは分岐点の位置を表す座標属性または屈曲点の位置を表す座標属性)を有していないため判断4315はNoとなり、また入力ブロック要素2201は入力ブロック要素であるため判断4308はYesとなり、処理は呼び出し元に戻る。
Since the
呼び出し元でも終了4319によって処理が終了され、データ構造の根の子要素(分岐点ブロック要素)2220`に対する処理は終了する。
Even the caller ends the processing at the
次に、データ構造の根の子要素2202に対しても図17の流れ図の処理を行う。2202は出力ブロック要素であるため判断4302はNoとなり、処理4307によって出力ブロック要素1102がブロック線図に追加される。判断4315 、判断4308、判断4311のいずれもNoとなるため処理4314によりブロック要素2202を終点、その子要素2207を始点とする信号線1113がブロック線図に追加される。処理4317 によってブロック要素2207を現在のブロック要素として4301からはじまる処理が再び呼び出される。ブロック要素2207は演算ブロック要素であるため判断4302はNoとなり処理4307によってブロック要素1107としてブロック線図に追加される。判断4315、判断4308はNoとなり判断4311に進む。ブロック要素2207の子要素2221は分岐点でありかつ同子要素2221は分岐点の出力側となるため(すなわち子要素2221は実行順木の葉に相当するため分岐点の出力側になる)、判断4311はYesとなる。子要素の名前a_outは信号線1112の名前属性と一致するため、信号線1112の直下にブロック要素2207を終点とする分岐線1112aを追加する。処理4313により処理は呼び出し元に戻り、呼び出し元においても終了4319によって処理が終了される。
Next, the process shown in the flowchart of FIG. 17 is also performed for the
次に、データ構造の根の子要素2203に対しても図17の流れ図の処理を行う。2203は出力ブロック要素であるため判断4302はNoとなり、処理4307によって出力ブロック要素1103がブロック線図に追加される。判断4315、判断4308、判断4311のいずれもNoとなり、処理4314によってブロック要素2203を終点、その子要素2208を始点とする信号線1114がブロック線図に追加される。ブロック要素2208を現在のブロック要素として用いて4301からはじまる処理が再び呼び出される。
Next, the process shown in the flowchart of FIG. 17 is also performed on the
ブロック要素2208は演算ブロック要素であるため判断4302はNoとなり処理4307によってブロック要素1108としてブロック線図に追加される。
Since the
判断4315、判断4308はNoとなり判断4311に進む。ブロック要素2208の子要素2223は分岐点でありかつ分岐点の出力側となるため、判断4311はYesとなる。子要素の名前a_out_b0は信号線1112のもつ分岐線1118`の名前属性と一致するため、信号線1112のもつ分岐線1118`以下にブロック要素2208を終点とする分岐線1118aを追加する。処理4313により処理は呼び出し元に戻り、呼び出し元においても終了4319によって処理が終了される。
The
次にデータ構造の根の子要素2204に対しても図17の流れ図の処理を行う。要素2204に対する処理の流れは要素2203に対する処理の流れと同様になり、出力ブロック要素1104、信号線1115、演算ブロック要素1109、分岐線1119aの順でブロック線図の要素が生成される。
Next, the processing of the flowchart of FIG. 17 is also performed on the
最後にデータ構造の根の子要素2205に対しても図17の流れ図の処理を行うことで同様に、出力ブロック要素1105、信号線1116、演算ブロック要素1110、分岐線1119bの順でブロック線図の要素が生成される。この際、ブロック要素2210が屈曲点の位置を表す座標属性を有するため、処理4307でブロック要素2210をブロック線図に追加した後の判断4315がYesとなり、処理4316が行われる。処理4316ではブロック要素2210を終点とする信号線もしくは分岐線要素に座標属性を付加するが、ブロック要素2210を終点とする分岐線要素1119bはこの時点ではまだ生成されていないため、終点ブロック要素名と座標属性を記憶装置に記憶しておき、分岐線要素1119bの生成後に座標属性を付加する処理を行う。
Finally, the processing of the flowchart of FIG. 17 is also performed on the
以上により図16に示すブロック線図102``が生成される。 Thus, the block diagram 102 ″ shown in FIG. 16 is generated.
以上のように本実施例によれば、ブロック線図を各分岐点で分割して得たブロック線図片(第1および第2のブロック線図片)の構造情報を分岐点の座標および屈曲点の座標も含めてプログラム内の対応するコメント行にコメント文として挿入したことにより、ブロック線図の復元時にプログラム内のコメント文として挿入した構造情報を利用することで、プログラムからブロック線図を図としての表現(多重分岐における分岐の順序、データ線の折れ曲がる位置等)を含めて復元することが可能となる。つまり、ソフトウェアの再利用の際にソースコード中にコメントとして挿入された構造情報からモデルをブロック線図として復元し、モデルベースで制御系の再設計を行うことが可能となる。 As described above, according to the present embodiment, the structure information of the block diagram pieces (first and second block diagram pieces) obtained by dividing the block diagram at each branch point is obtained from the coordinates of the branch points and the bending. By inserting the block diagram from the program by using the structure information inserted as a comment statement in the program when restoring the block diagram by inserting it as a comment statement in the corresponding comment line in the program including the coordinates of the points. It is possible to restore the image including the representation (the order of branches in multiple branches, the position where the data line is bent, etc.). That is, the model can be restored as a block diagram from the structure information inserted as a comment in the source code when the software is reused, and the control system can be redesigned on a model basis.
また、本実施例によれば、ブロック線図を各分岐点で分割して得たブロック線図片(第1および第2のブロック線図片)のうち、各第1のブロック線図片を表すプログラム命令を、分岐点ブロック要素をすべて同一変数で表すように生成するとともに、第2のブロック線図片についてはプログラム命令を生成しないようにしたため、全体のプログラム命令数を少なく抑えつつ、ブロック線図に対応するプログラムを生成することができる。 Moreover, according to the present embodiment, among the block diagram pieces (first and second block diagram pieces) obtained by dividing the block diagram at each branch point, each first block diagram piece is The program instruction to be expressed is generated so that all branch point block elements are represented by the same variable, and the program instruction is not generated for the second block diagram piece. A program corresponding to the diagram can be generated.
(実施例2)
本実施例では、実施例1と同一のブロック線図に対して処理を行うが、実施例1での図10の流れ図の処理を図20の流れ図、図17の流れ図の処理を図21の流れ図に置き換える。
(Example 2)
In the present embodiment, processing is performed on the same block diagram as in the first embodiment, but the processing of the flowchart of FIG. 10 in the first embodiment is the flowchart of FIG. 20, and the processing of the flowchart of FIG. 17 is the flowchart of FIG. Replace with
図10と図20の相違点は、処理4122が4122`、4111が4111`に変わっている点である。これにより、信号線・分岐線が座標属性を有していた場合に、図10では登録したブロック要素の親要素の属性として当該座標属性が付加されていたが、図20では登録したブロック要素の属性として当該座標属性が付加される。これは、信号線または分岐線の屈曲点の座標を屈曲点の後ろ側のブロック要素ではなく前側のブロック要素に付加することに、また分岐点の座標を分岐点の入力側分岐点ブロック要素ではなく分岐点の前のブロック要素に付加することに相当する。この変更により、座標属性を付加する際に親要素を探索する必要がなくなり、処理が軽減される。このことにより、図20に示す処理を、図2のブロック線図101に対して行った際に生成されるブロック線図片の集合は、図22に示す202`になる。座標属性カの付加される位置が屈曲点の後側のブロック要素2010から前側のブロック要素2026に、座標属性アの付加される位置が入力側分岐点ブロック要素2020`から分岐点の前の位置するブロック要素2006に変わっている。図22に示すブロック線図片の集合202`を表すデータ構造203`を図23に示す。
The difference between FIG. 10 and FIG. 20 is that the
図17と図21の相違点は、判断4305および処理4306が削除され判断4320および処理4321が付加された点、処理4316が4316`に変更された点である。
The difference between FIG. 17 and FIG. 21 is that
判断4305および処理4306が判断4320および処理4321に変更されたのは、図17の流れ図が図20に変更されたことに対応するものである。すなわち、変更後の図20においては、上述のように信号線または分岐線の屈曲点の座標を屈曲点の後ろ側のブロック要素ではなく前側のブロック要素に、また分岐点の座標を分岐点の入力側ブロック要素ではなく分岐点の前のブロック要素に付加される。このため、分岐点の入力側分岐点ブロック要素が座標属性を有している可能性がなくなり、代わりに分岐点の出力側分岐点ブロック要素が座標属性を有している可能性があることとなる。そこで、これに対応して判断4305および処理4306が、判断4320および処理4321に変更された。
The
また、処理4316から4316`への変更も同様に、図17から図20への変更により、屈曲点または分岐点の座標が後ろ側のブロック要素ではなく前側のブロック要素に付加されるようになったことによるものである。図17の処理では処理4316が行われる時点では、「そのブロック要素を終点とする信号線」は生成されていないため、「そのブロック要素を終点とする信号線」が生成されるまで座標属性を記憶しておく必要があった。一方図20では4316から4316`への変更により、「そのブロック要素を終点とする信号線」が「そのブロック要素を始点とする信号線」へ変更される。処理4316`の時点で「そのブロック要素を始点とする信号線」であれば座標情報が生成されているため、座標情報を記憶しておく必要がなくなり、記憶装置の容量および記憶処理の演算を削減することが可能となる。
Similarly, the change from the
(実施例3)
本実施例では、実施例1よりも実行順情報の情報量を削減する方法を提供する。
(Example 3)
The present embodiment provides a method for reducing the information amount of execution order information compared to the first embodiment.
図24は、実施例1と同一のブロック線図に対して、実施例1と同一の方法で識別子付与、ブロック線図分割、座標情報付加を行ったものに、本実施例で説明する方法を用いて生成したブロック線図片の集合202``、図25は図24のブロック線図片の集合202``から生成したデータ構造203``を示す。
FIG. 24 shows a block diagram identical to that in the first embodiment, in which identifier assignment, block diagram segmentation, and coordinate information addition are performed in the same manner as in the first embodiment. FIG. 25 shows a
実施例1のブロック線図片202(図8参照)およびデータ構造203(図9参照)では多重分岐を構成する分岐点間の接続情報は、2つの分岐点間の接続関係を表す要素を複数個並列に並べることで表された。たとえば図8では<BP></BP>の組を2つ並べ(2020aと2020b参照)、図9では、2つの部分木を並列に並べた(2220a2と2220b2参照)。 In the block diagram piece 202 (see FIG. 8) and the data structure 203 (see FIG. 9) of the first embodiment, the connection information between the branch points constituting the multi-branch includes a plurality of elements representing the connection relationship between the two branch points. It was expressed by arranging them in parallel. For example, in FIG. 8, two sets of <BP> </ BP> are arranged (see 2020a and 2020b), and in FIG. 9, two subtrees are arranged in parallel (see 2220a2 and 2220b2).
これに対し本実施例では、図24の202``、図25の203``に示すように複数の分岐点間の接続関係を1つの木構造で表す。この方法を用いることにより、実行順情報の情報量を削減することが可能となる。 On the other hand, in this embodiment, as shown by 202`` in FIG. 24 and 203`` in FIG. 25, the connection relationship between a plurality of branch points is represented by one tree structure. By using this method, it is possible to reduce the amount of execution order information.
本実施例では、図18および図19の処理を、図26および図27の処理に変更する。 In the present embodiment, the processing in FIGS. 18 and 19 is changed to the processing in FIGS.
図26に示す流れ図に従い、データ構造102`(図6参照)中の信号線要素1112から、図25の203``に示すように分岐点情報を付加する方法について説明する。分岐点情報を付加する際には、信号線要素を現在の要素として、開始4601から処理を行う。
A method of adding branch point information as indicated by 203 ″ in FIG. 25 from the
まず、処理4602によって信号線要素1112の子要素一覧を作成する。作成される子要素一覧は1112aと1118`を含む。判断4604で、各子要素が分岐線要素でありかつ子要素として分岐線要素を有するか否かを判断する。子要素1112aは子要素として分岐線要素を持たないため、Noとなり、1112aに対するループ4603内の処理として、処理4607へ進み、何も行われない。一方、子要素1118`は分岐線要素かつ子要素として分岐線要素(1118a、1119`)を有するので判断4604はYesとなり、ループ4604内の処理として、処理4605によって実行順木上の分岐点ブロック要素2220`の子要素としてBP要素2220a’を追加する。次に、処理4606によって1118`を現在のブロック要素として処理4602が再帰的に呼び出される。
First, a child element list of the
処理4602によって作成される子要素一覧は1118a、1119`を含む。1118aは子要素を持たないため、判断4604はNoとなり、1118aに対する処理は行われない(処理4607)。一方、子要素1119`は分岐線要素かつ子要素として分岐線要素(1119a、1119b)を有するので判断4604はYesとなり、処理4605によって実行順木上の分岐点ブロック要素2220a’の子要素としてBP要素2220b’が付加される。次に、処理4606によって1119`を現在のブロック要素として処理4602が再帰的に呼び出される。1119’は1119a、1119bの2つの子要素を有するがそれらはいずれも子要素を持たないため、判断4604がNoとなり、終了4609によって処理は終了する。
The child element list created by the
図25のデータ構造203``から、図16に示すブロック線図のデータ構造102``を生成する際に、分岐点を持つ信号線要素と、多重分岐を表す信号線要素の分岐線要素のうち子要素として分岐線を持つものと、を予め生成する方法を図27に示す流れ図を用いて説明する。
When generating the
データ構造203``が有する分岐点の入力側ブロック要素は2220`のみであるため処理4702では2220’のみを含む一覧が作成され、ループ4703の処理は2220`に対してのみ行われる。まず、処理4704により、102``上に信号線要素1112が生成される。この時点では、1112は名前属性のみを持ち、始点および座標属性は持たない(上述したように後に図17に示す流れ図の処理によって付加される)。
Since the input side block element of the branch point included in the
次に、処理4705により2220`の子要素の一覧を作成する。本例では2206と2220a’のみを含む一覧が作成される。ループ4706内に入り、2206はBP要素ではないため判断4707はNoとなり、何も行わない(処理4707)。一方、2220a’はBP要素であるため判断4707はYesとなり、処理4708によってブロック線図上の信号線要素1112の子要素1118`としてブロック線図に追加される。ここでは、子要素の名前のみでなく座標属性もブロック線図に追加するため、1118`は座標属性を持つ。次に、処理4709により、BP要素2220a`を現在のブロック要素として処理4705が再帰的に呼び出される。
Next, a list of child elements of 2220` is created by processing 4705. In this example, a list including only 2206 and 2220a 'is created. The process enters the
2220a`の持つ子要素は2220bのみであるため、ループ4706は2220b`に対してのみ実行される。2220b`はBP要素であるため判断4707はYesとなり、処理4708によってブロック線図上の分岐線要素1118`の子要素1119`としてブロック線図に追加される。ここでは、子要素の名前のみでなく座標属性もブロック線図に追加するため、1119`は座標属性を持つ。次に、処理4709により、BP要素2220b`を現在のブロック要素として処理4705が再帰的に呼び出されるが、2220b`は子要素を持たないため、ここで図27に示す流れ図の処理は終了する。
Since 2220a` has only the
また、木構造のデータを木構造のままコピー可能な処理系も存在する。 There are also processing systems that can copy tree-structured data as it is.
たとえば、データ構造102`、データ構造203``等がXML(Extensible Markup Language)を用いて表わされている場合、木構造上の要素を指定することによってその要素以下の木構造を、その構造をすべて維持したまま複製することが容易に実現できる。
For example, when
Java(登録商標)言語を用いてXMLで表わされたデータ構造を扱う処理を記述する場合であれば、org.w3c.dom.DocumentインタフェースのcloneNodeメソッドを用い、引数としてtrueを指定することで木構造の複製が実現可能である。 If you want to describe processing that handles data structures expressed in XML using the Java (registered trademark) language, use the cloneNode method of the org.w3c.dom.Document interface and specify true as an argument. Duplication of the tree structure is feasible.
この場合、203``上の2220a`を指定して複製を行うだけで図27に示す処理が実現可能となるため、本実施例に示す方法を用いることにより、実施例1および実施例2と比較して、処理量を削減することが可能となる。 In this case, since the process shown in FIG. 27 can be realized simply by specifying 2220a` on 203`` and performing the method shown in this example, the method shown in FIG. In comparison, the processing amount can be reduced.
本実施例によれば、実施例1よりも実行順情報の情報量を少なくすることが可能となる。したがって、ソフトウェアの再利用の際にソースコード中にコメントとして挿入されたより少ない実行順情報からモデルをブロック線図として復元し、モデルベースで制御系の再設計を行うことが可能となる。 According to the present embodiment, it is possible to reduce the amount of execution order information as compared with the first embodiment. Therefore, the model can be restored as a block diagram from less execution order information inserted as a comment in the source code when the software is reused, and the control system can be redesigned on a model basis.
本実施例では実施例1をベースとして説明を行ったが本実施例の方法は、同様に実施例2に適用することも可能である。 Although the present embodiment has been described based on the first embodiment, the method of the present embodiment can also be applied to the second embodiment.
10:ブロック線図
20:プログラム生成装置
21:実行順生成処理部(ブロック線図読出手段、識別子付与手段、ブロック線図分割手段、構造情報生成手段)
22:実行順情報
23:プログラム生成処理部(プログラム命令生成手段、実行順序決定手段、プログラム生成手段)
30:プログラム
41:実行順抽出処理部(データ読出手段)
42:ブロック線図生成処理部(ブロック線図片生成手段、ブロック線図辺合成手段)
10: Block diagram
20: Program generator
21: Execution order generation processing unit (block diagram reading unit, identifier assigning unit, block diagram dividing unit, structure information generating unit)
22: Execution order information
23: Program generation processing unit (program command generation means, execution order determination means, program generation means)
30: Program
41: Execution order extraction processing unit (data reading means)
42: Block diagram generation processing unit (block diagram piece generation means, block diagram edge synthesis means)
Claims (5)
各前記分岐点にそれぞれ一意の識別子を付与する識別子付与手段と、
各前記分岐点で前記ブロック線図を入力側片と1つ以上の出力片側へ分割し、さらに各前記分岐点にそれぞれ接続されていた複数のデータ線の一端に各前記分岐点のそれぞれの識別子をもつ分岐点ブロック要素を接続することにより複数のブロック線図片を生成するブロック線図分割手段と、
前記複数のブロック線図片の構造情報をそれぞれ生成する構造情報生成手段と、
前記複数のブロック線図片のうち、少なくとも入力ブロック要素と、演算ブロック要素と、出力ブロック要素のいずれかをもつブロック線図片である複数の第1のブロック線図片の処理を実現するプログラム命令を、前記複数の第1のブロック線図片において前記多重分岐をなす各前記分岐点から派生した前記分岐点ブロック要素がすべて同一の変数により表されるように生成するプログラム命令生成手段と、
前記多重分岐をなす前記分岐点のうち最も入力側の分岐点での分割により得られた前記入力側片を含む前記第1のブロック線図片から生成されたプログラム命令が、他の残りの前記第1のブロック線図片から生成されたプログラム命令よりも先に実行されるように各前記プログラム命令の実行順序を決定する実行順序決定手段と、
決定された実行順序に従って各前記プログラム命令を配置し、各前記第1のブロック線図片の構造情報を各前記第1のブロック線図片に対応するプログラム命令のコメント行に記述し、前記複数のブロック線図片のうち前記第1のブロック線図片以外の残りのすべてのブロック線図片である、複数の前記分岐点ブロック要素と前記データ線とのみを含む第2のブロック線図片の構造情報を前記プログラム命令のいずれかのコメント行または他の任意のコメント行に記述することにより、前記決定された実行順序に従って各前記プログラム命令を実行するプログラムを生成するプログラム生成手段と、
を備えたプログラム生成装置。 One of the input block element, the arithmetic block element, the output block element, the data line indicating the data flow between the input block element, the arithmetic block element and the output block element, and the data line. Block diagram reading means for reading a block diagram having at least two branch points for branching the first data line into three or more data lines;
Identifier giving means for giving a unique identifier to each of the branch points;
The block diagram is divided into an input side piece and one or more output pieces at each branch point, and each identifier of each branch point is connected to one end of a plurality of data lines respectively connected to each branch point. A block diagram dividing means for generating a plurality of block diagram pieces by connecting branch point block elements having
Structure information generating means for generating structure information of each of the plurality of block diagram pieces;
A program for realizing processing of a plurality of first block diagram pieces that are block diagram pieces having at least one of an input block element, an operation block element, and an output block element among the plurality of block diagram pieces Program instruction generating means for generating instructions so that the branch point block elements derived from the branch points forming the multiple branches in the plurality of first block diagram pieces are all represented by the same variable;
A program instruction generated from the first block diagram piece including the input side piece obtained by division at the branch point closest to the input side among the branch points forming the multi-branch, Execution order determining means for determining the execution order of the program instructions to be executed before the program instructions generated from the first block diagram piece;
The program instructions are arranged in accordance with the determined execution order, the structure information of each of the first block diagram pieces is described in a comment line of the program instruction corresponding to each of the first block diagram pieces, A second block diagram piece including only the plurality of branch point block elements and the data lines, which are all remaining block diagram pieces other than the first block diagram piece. Program generating means for generating a program for executing each of the program instructions in accordance with the determined execution order by describing the structural information in any comment line or any other comment line of the program instructions;
A program generation apparatus comprising:
前記ブロック線図分割手段は、各前記分岐点のそれぞれから派生した複数の分岐点ブロック要素のうちの少なくともいずれかに前記分岐点の座標情報を設定し、
各前記第1および第2のブロック図片の構造情報は、各前記第1および第2のブロック線図片に含まれる、前記入力ブロック要素、前記演算ブロック要素、前記出力ブロック要素および前記分岐点ブロック要素に設定された座標情報を含む
ことを特徴とする請求項1に記載のプログラム生成装置。 In the block diagram, coordinate information is set for each of the input block element, the calculation block element, the output block element, and the plurality of branch points,
The block diagram dividing means sets the coordinate information of the branch point in at least one of a plurality of branch point block elements derived from each of the branch points,
Structure information of each of the first and second block diagram pieces is included in each of the first and second block diagram pieces, the input block element, the operation block element, the output block element, and the branch point. The program generation device according to claim 1, comprising coordinate information set in a block element.
前記ブロック線図は、前記少なくとも1つのデータ線の屈曲点の座標情報を含み、
前記ブロック線図分割手段は、前記屈曲点の座標情報を、前記少なくとも1つのデータ線の直前および直後のブロック要素のうちあらかじめ定められた一方のブロック要素に設定し、
前記構造情報生成手段は、前記一方のブロック要素に設定された屈曲点の座標情報を含むように、前記一方のブロック要素を含む第1または第2のブロック線図片の前記構造情報を生成する
ことを特徴とする請求項2に記載のプログラム生成装置。 At least one data line is bent halfway,
The block diagram includes coordinate information of a bending point of the at least one data line;
The block diagram dividing means sets the coordinate information of the bending point to a predetermined one of the block elements immediately before and after the at least one data line;
The structure information generating unit generates the structure information of the first or second block diagram piece including the one block element so as to include the coordinate information of the bending point set in the one block element. The program generation device according to claim 2.
前記複数の構造情報のそれぞれに記述された前記接続関係に従って前記複数のブロック要素をデータ線で接続することにより複数のブロック線図片を生成するブロック線図片生成手段と、
各前記ブロック線図片間で同一の識別子を持つ複数の分岐点ブロック要素を1つの分岐点へ統合するように各前記ブロック線図片を合成してブロック線図を生成するブロック線図片合成手段と、を備え、
各前記構造情報において、前記入力ブロック要素と前記演算ブロック要素と前記出力ブロック要素にはそれぞれ座標情報が設定され、また、前記同一の識別子を持つ複数の分岐点ブロック要素のうちのいずれかには前記複数の分岐点ブロック要素が統合されるべき前記分岐点の座標情報が設定され、
前記ブロック線図片合成手段は、
各前記ブロック線図片における前記入力ブロック要素と前記演算ブロック要素と前記出力ブロック要素とをそれぞれの座標情報に応じた位置に配置し、
前記同一の識別子を持つ複数の分岐点ブロック要素を統合した前記分岐点を、前記複数の分岐点ブロック要素のうちのいずれかに設定されている座標情報に応じた位置に配置する
ことを特徴とするブロック線図生成装置。 From the comment line of the program, multiple pieces of structural information describing the connection relationships of multiple block elements, each of which is one of an input block element, an operation block element, an output block element, and a branch point block element, each set with an identifier Data reading means for reading;
Block diagram piece generating means for generating a plurality of block diagram pieces by connecting the plurality of block elements with data lines according to the connection relationship described in each of the plurality of structure information;
A block diagram piece composition for generating a block diagram by synthesizing each block diagram piece so as to integrate a plurality of branch point block elements having the same identifier between the block diagram pieces into one branch point Means, and
In each of the structural information, coordinate information is set for each of the input block element, the calculation block element, and the output block element, and any one of the plurality of branch point block elements having the same identifier is provided. The coordinate information of the branch point where the plurality of branch point block elements are to be integrated is set,
The block diagram piece combining means is:
The input block element, the arithmetic block element, and the output block element in each block diagram piece are arranged at positions corresponding to the respective coordinate information,
The branch point obtained by integrating a plurality of branch point block elements having the same identifier is arranged at a position corresponding to coordinate information set in any of the plurality of branch point block elements. A block diagram generation device.
前記複数の構造情報のうちの1つの構造情報は、前記1つの構造情報における前記複数のブロック要素の少なくとも1つに関連づけられて設定された、データ線の屈曲点の座標情報を記述し、
前記ブロック線図片生成手段は、各前記ブロック要素の前記入力端子および出力端子間を接続し、
前記ブロック線図片合成手段は、前記屈曲点の座標情報が関連づけられたブロック要素の直前および直後のデータ線のうちの一方が、前記屈曲点の座標情報に応じた位置で屈曲するように、前記一方のデータ線を配置する
ことを特徴とする請求項4に記載のブロック線図生成装置。 The plurality of structural information respectively describe the positions of the input terminals and output terminals of the block elements,
One structure information of the plurality of structure information describes coordinate information of a bending point of a data line set in association with at least one of the plurality of block elements in the one structure information,
The block diagram piece generating means connects between the input terminal and the output terminal of each block element,
The block diagram piece synthesizing means is configured so that one of the data lines immediately before and after the block element associated with the coordinate information of the bending point is bent at a position corresponding to the coordinate information of the bending point. The block diagram generation device according to claim 4, wherein the one data line is arranged.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009048455A JP5275087B2 (en) | 2009-03-02 | 2009-03-02 | Program generating apparatus and block diagram generating apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009048455A JP5275087B2 (en) | 2009-03-02 | 2009-03-02 | Program generating apparatus and block diagram generating apparatus |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2010204855A JP2010204855A (en) | 2010-09-16 |
JP5275087B2 true JP5275087B2 (en) | 2013-08-28 |
Family
ID=42966288
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009048455A Active JP5275087B2 (en) | 2009-03-02 | 2009-03-02 | Program generating apparatus and block diagram generating apparatus |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5275087B2 (en) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5831385B2 (en) * | 2012-07-25 | 2015-12-09 | 株式会社デンソー | Model comparison device and model comparison tool |
KR101597780B1 (en) * | 2014-05-22 | 2016-02-25 | 황수진 | Method and apparatus for visually implementing software code |
JP6486574B2 (en) * | 2016-11-17 | 2019-03-20 | 三菱電機株式会社 | Program code generating apparatus, program code generating method, and program code generating program |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0635685A (en) * | 1992-07-14 | 1994-02-10 | Nec Corp | Program structure specification managing device |
JPH08179938A (en) * | 1994-12-22 | 1996-07-12 | Gaio Technol Kk | Device and method for generating automatic specification |
JPH09198236A (en) * | 1996-01-19 | 1997-07-31 | Honda Motor Co Ltd | Method for determining instruction order and device therefor |
JPH11212776A (en) * | 1998-01-27 | 1999-08-06 | Nec Commun Syst Ltd | System specification description language/program code coversion system and record medium |
JP2005222221A (en) * | 2004-02-04 | 2005-08-18 | Hitachi Ltd | Integrated controller development tool, integrated controller and integrated controller development process |
-
2009
- 2009-03-02 JP JP2009048455A patent/JP5275087B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
JP2010204855A (en) | 2010-09-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
AU2013290313B2 (en) | Method and system for automated improvement of parallelism in program compilation | |
CN110968325B (en) | Applet conversion method and device | |
US8387014B2 (en) | Synchronization of concurrently modified interdependent semi-derived artifacts | |
CN1195278C (en) | XML-robot | |
CN106648662B (en) | Report generation device and method based on project cost calculation description language BCL | |
JP5005510B2 (en) | Software design support method, design support apparatus, and design support program | |
CN101276278B (en) | Code conversion apparatus | |
CN104020994B (en) | Stream process definition device and stream process based on streaming system define method | |
JP2011060277A (en) | Integration environment generator | |
JP6479184B2 (en) | Computer-executable model reverse engineering method and apparatus | |
JP2009181446A (en) | Program generating device and block diagram generating apparatus | |
JPS6267634A (en) | Generation of object code for making input data coincide with output data structure | |
CN112069456A (en) | Model file generation method and device, electronic equipment and storage medium | |
JP5275087B2 (en) | Program generating apparatus and block diagram generating apparatus | |
JP2008225898A (en) | Conversion device, conversion program, and conversion method | |
JP2005234959A (en) | Device, program and method for preparing template | |
JP5041990B2 (en) | Software component extraction support device | |
JP6175306B2 (en) | Control program dividing apparatus, control program dividing method and recording medium therefor | |
JP3759630B2 (en) | Development support system for spiral object-oriented software | |
JP7059757B2 (en) | API processing method, terminal, API processing program | |
JP2009211143A (en) | Information processor and information processing program | |
WO2011090032A1 (en) | Parallel processing program generation method, parallel processing program generation program, and parallel processing program generation apparatus | |
JP2013148953A (en) | Program template automatic generation program and program template automatic generation device | |
JP7375835B2 (en) | Program generation device, program generation method, and program | |
Chen et al. | Navigation Flow Modeling as a Basis for the Automatic Generation of Android APPs. |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20110916 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20121130 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20130423 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20130515 |
|
R151 | Written notification of patent or utility model registration |
Ref document number: 5275087 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R151 |