(57)【要約】      （修正有）【課題】表現方法の異なる等価なブロック線図を検出可能として、開発工数低減及び保守性向上を可能とするブロック線図解析装置を提供する。【解決手段】コンピュータシステムはコンピュータ１０において、記憶部３０に記憶されたブロック線図ファイル４０から解析対象の複数のブロック線図を抽出する抽出部２１と、抽出部により抽出された複数のブロック線図の各々から、各ブロック線図を表す数式を生成する数式生成部２３と、数式生成部により生成された複数の数式を比較することにより、複数の数式のうち等価な数式を判別する数式判別を行う数式判別部２４と、数式判別部による数式判別の結果に基づいて、複数のブロック線図を、数式として等価なブロック線図群に分類する分類部２５と、を備える。【選択図】図２
2019144873.tif 000002
【特許請求の範囲】
【請求項１】
ブロック線図ファイル（４０）から解析対象の複数のブロック線図（４１、４２、４３、４４）を抽出する抽出部（２１）と、
前記抽出部により抽出された複数の前記ブロック線図の各々から、各ブロック線図を表す数式を生成する数式生成を行う数式生成部（２３）と、
前記数式生成部により生成された複数の前記数式を比較することにより、複数の前記数式のうち等価な数式を判別する数式判別を行う数式判別部（２４）と、
前記数式判別部による前記数式判別の結果に基づいて、複数の前記ブロック線図を、数式として等価なブロック線図群に分類する分類部（２５）と、
を備えるブロック線図解析装置。
【請求項２】
前記解析対象の各ブロック線図に含まれる所定の信号属性の信号数を特定して、特定した前記所定の信号属性の信号数が異なるブロック線図を数式として非等価であるブロック線図と見做す簡易判定を、前記数式生成部による前記数式生成の実行前であり且つ前記数式判別部による前記数式判別の実行前に行う簡易判定部（２６）をさらに備える請求項１に記載のブロック線図解析装置。
【請求項３】
前記ブロック線図ファイルは、各ブロック線図の各信号についてスカラーであるか行列であるかの信号型を示す信号型データと、各信号について入力信号であるか定数信号であるか遅延信号であるかの信号属性を示す信号属性データと、が格納されているものであり、
前記抽出部は、前記ブロック線図ファイルから前記ブロック線図を抽出する際に、前記信号型データと前記信号属性データとを前記ブロック線図ファイルから抽出するものであり、
前記簡易判定部は、前記信号型データと前記信号属性データとに基づいて、各ブロック線図に含まれる信号型毎の前記入力信号の総数、信号型毎の前記定数信号の総数、信号型毎の前記遅延信号の総数を、各ブロック線図に含まれる前記所定の信号属性の信号数として特定して、特定した前記信号型毎の前記入力信号の総数、前信号型毎の前記遅延信号の総数、及び前記信号型毎の前記定数信号の総数のうち少なくとも何れかが一の前記ブロック線図と他の前記ブロック線図との間で一致しない場合、一の前記ブロック線図と他の前記ブロック線図とは数式として非等価であると見做す、請求項２に記載のブロック線図解析装置。
【請求項４】
前記ブロック線図ファイルは、各ブロック線図での各信号の表記である図側記号を示す図側表記データと、各ブロック線図の各信号についてスカラーであるか行列であるかの信号型を示す信号型データと、各信号について入力信号であるか遅延信号であるか定数信号であるかの信号属性を示す信号属性データと、が格納されているものであり、
前記抽出部は、前記ブロック線図ファイルから前記ブロック線図を抽出する際に、前記図側表記データと前記信号型データと前記信号属性データとを前記ブロック線図ファイルから抽出し、
前記数式生成部は、各ブロック線図を表す前記数式を生成する際に、前記図側記号を、数式における代数の表記である数式側記号として用いて前記数式を生成するものであり、
前記数式判別部は、一の前記ブロック線図を表す一の前記数式と他の前記ブロック線図を表す他の前記数式とが等価であるか否かを判定する前記数式判別を、置換前判定（Ｓ２１０）と、置換後判定（Ｓ２２０、Ｓ２３０）と、の２段階で行うものであり、
前記置換前判定は、前記数式生成部により生成された一の前記数式と他の前記数式とが等価であるかを判定し、
前記置換後判定は、前記置換前判定により一の前記数式が他の前記数式と非等価であると判定された場合に実行されるものであって、前記信号型データと前記信号属性データとに基づいて、一の前記数式と他の前記数式とにおいて同じ信号型及び同じ信号属性の信号を表すが異なる表記となっている前記数式側記号を特定して、特定した前記数式側記号について一の前記数式での表記を他の前記数式での表記に置き換えて、前記表記を置き換えた後の一の前記数式が他の前記数式と等価であるか否かを判定する、請求項１ないし３何れか一項に記載のブロック線図解析装置。
【請求項５】
前記数式生成部は、むだ時間要素を含む閉ループ（９０）が前記ブロック線図に含まれている場合、前記閉ループを、入力に対して遅延信号ｄ（ｔ）を乗算して出力するサブシステムに置き換えて、置き換え後の前記ブロック線図から、当該置き換え後のブロック線図を表す数式である遅延ループ隠蔽式を生成する共に、前記サブシステムを表す数式である遅延ループ表現式を生成して、前記遅延ループ隠蔽式と前記遅延ループ表現式との連立式を、置き換え前の前記ブロック線図を表す数式とするものであり、
前記数式判別において前記数式判別部は、前記遅延ループ表現式及び前記遅延ループ隠蔽式の両方が一の前記ブロック線図と他の前記ブロック線図との間で等価である場合、一の前記ブロック線図と他の前記ブロック線図とは数式として等価であると判定し、前記遅延ループ表現式及び前記遅延ループ隠蔽式の少なくとも一方が非等価である場合、一の前記ブロック線図と他の前記ブロック線図とは数式として非等価であると判定する、請求項１ないし４何れか一項に記載のブロック線図解析装置。
【請求項６】
前記抽出部により抽出された複数の前記ブロック線図の数をｎとすると、ｎ個の前記ブロック線図から、２つのブロック線図の組み合わせであるブロック線図ペアを重複なくｎＣ２組生成して、前記ｎＣ２組のブロック線図ペアを備える組合せ配列（８０）を準備する管理部（２２）をさらに備え、
前記数式判別部は、前記組合せ配列から順次選択されたブロック線図ペア単位で前記数式判別を、前記ブロック線図ペアから未選択のブロック線図ペアが無くなるまで行うものであって、
前記ブロック線図ペア単位での前記数式判別において一のブロック線図と他のブロック線図が数式として等価であると判定した場合、前記組合せ配列における未選択のブロック線図ペアのうち、当該一のブロック線図を当該他のブロック線図と同じと見做したときに同じブロック線図の組み合わせとなる２つのブロック線図ブロックペアの一方を重複ブロック線図ペアと見做して、当該重複ブロック線図ペアについて前記数式判別を省略する、請求項１ないし５何れか一項に記載のブロック線図解析装置。
【請求項７】
コンピュータを、請求項１ないし６何れか一項に記載のブロック線図解析装置として機能させるためのブロック線図分類プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この明細書における開示は、ブロック線図を解析するブロック線図解析装置に関する。
【背景技術】
【０００２】
従来より、制御システムなどのシステム開発において、ＭＡＴＬＡＢ（登録商標）／Ｓｉｍｕｌｉｎｋ（登録商標）などのモデリングツールを用いて、システムのモデルとしてブロック線図を作成してテスト等することが行われている。
【０００３】
特許文献１には、ＭＡＴＬＡＢ／Ｓｉｍｕｌｉｎｋモデルにおけるクローンを検出する技術が記載されている。特許文献１で言うクローンとは、コピーアンドペースト等により生じるもので、ブロック線図が見かけ上あるいは実質的に同じ構造をしているものである。
【０００４】
特許文献１では、ブロック線図内の要素と要素間の接続関係とに基づいて、見かけ上あるいは実質的に同じ構造のクローンを検出している。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１２−３８０２２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところで、ブロック線図によるシステムの表現方法は多様である。その結果、挙動が等価なシステム即ち数式として等価なシステムであっても、要素及び要素間の接続関係等で表されるブロック線図の表現が異なる場合がある。
【０００７】
例えば、２つのブロック線図それぞれを構成する要素数や接続関係等が異なる場合であっても、２つのブロック線図の挙動が等価な場合即ち数式として等価な場合がある。
【０００８】
このような表現方法の異なるブロック線図について、数式として等価であるか否かを判定して、複数のブロック線図を分類できれば、開発工数低減及び保守性向上の観点から様々な利点がある。
【０００９】
例えば、同じ挙動となる複数のブロック線図のうち、複雑な表現となっている一のブロック線図を、より簡易な表現となっている他のブロック線図の表現に改めることができる。これは、ブロック線図のリファクタリングを容易とし、開発工数低減を可能とする。
【００１０】
また、表現方法の異なる等価な複数のブロック線図を、特定の表現方法に統一できれば、表現方法の統一によりシステムの保守性向上を図れる。
【００１１】
また、複数のブロック線図で表されたシステムの一部を変更した場合、変更したブロック線図と等価なブロック線図がシステム内に既に存在している場合があり得る。この場合、これらのブロック線図の挙動が等価即ち数式として等価であると判定できれば、変更したブロック線図を既存のブロック線図で置き換えることができる。既存のブロック線図で置き換えると、変更したブロック線図のために単体テストを行う必要性を低減できるので、開発工数低減につながる。
【００１２】
なお特許文献１の技術は、ブロック線図内の要素と要素間の接続関係とに基づいてクローンを検出するので、要素及び要素間の接続関係等で表されるブロック線図の表現が同じクローンは検出できるが、表現方法の異なる等価なブロック線図を検出できない。特許文献１には、開発工数低減及び保守性向上のために、表現方法の異なる等価なブロック線図を検出するという思想は示唆もされていない。
【００１３】
以上を鑑みて、この明細書における開示の目的の一つは、表現方法の異なる等価なブロック線図を検出可能として、開発工数低減及び保守性向上を可能とするブロック線図解析装置を提供することにある。
【課題を解決するための手段】
【００１４】
上記目的を達成するためのブロック線図解析装置の一例は、
ブロック線図ファイル（４０）から解析対象の複数のブロック線図（４１、４２、４３、４４）を抽出する抽出部（２１）と、
抽出部により抽出された複数のブロック線図の各々から、各ブロック線図を表す数式を生成する数式生成部（２３）と、
数式生成部により生成された複数の数式を比較することにより、等価な数式を判別する数式判別を行う数式判別部（２４）と、
数式判別部による数式判別の結果に基づいて、複数のブロック線図を、数式として等価なブロック線図群に分類する分類部（２５）と、
を備えるブロック線図解析装置である。
【００１５】
このブロック線図解析装置では、複数のブロック線図の各々から、各ブロック線図を表す数式が生成される。生成した複数の数式を比較することにより、複数の数式のうち等価な数式が判別される。この判別結果に基づいて複数のブロック線図が、数式として等価なブロック線図群に分類される。
【００１６】
このように上記ブロック線図解析装置によれば、要素及び要素間の接続関係等で表される表現方法が多様であり等価であっても表現方法が異なり得るブロック線図を、数式として等価なブロック線図群に分類できるので、開発工数低減や保守性向上が可能となる。
【００１７】
なお、上記括弧内の参照番号は、理解を容易にすべく、後述する実施形態における具体的な構成との対応関係の一例を示すものにすぎず、なんら技術的範囲を制限することを意図したものではない。
【図面の簡単な説明】
【００１８】
【図１】一実施形態のコンピュータシステム１のハードウェア構成を示す図である。
【図２】一実施形態のコンピュータ１０の機能ブロックを示す図である。
【図３】ブロック線図分類メインルーチンの概略説明のための説明図である。
【図４】ブロック線図分類メインルーチンを示すフローチャートである。
【図５】ブロック線図分類メインルーチンのＳ２０で準備される分類テーブル７０を例示する説明図である。
【図６】ブロック線図分類メインルーチンのＳ２０で準備される組合せ配列８０を例示する説明図である。
【図７】ブロック線図分類メインルーチンのＳ５０で実行される簡易判定サブルーチンを示すフローチャートである。
【図８】簡易判定サブルーチンでの処理の具体例を示す説明図である。
【図９】ブロック線図分類メインルーチンのＳ８０で実行される詳細判定サブルーチンを示すフローチャートである。
【図１０】詳細判定サブルーチンでの処理の具体例を示す説明図である。
【図１１】ブロック線図分類メインルーチンにおけるＳ４０の初回実行後の組合せ配列８０を例示する説明図である。
【図１２】ブロック線図分類メインルーチンにおけるＳ１１０の初回実行後の組合せ配列８０を例示する説明図である。
【図１３】実施形態形と比較例とを対比して説明するための説明図である。
【図１４】遅延信号を生成するむだ時間要素を含む閉ループがブロック線図に含まれている場合に、Ｓ７０で生成される数式を説明するための説明図である。
【発明を実施するための形態】
【００１９】
以下、ブロック線図解析装置の一実施形態であるコンピュータシステム１を説明する。
【００２０】
図１に示すように、コンピュータシステム１は、そのハードウェア構成として、コンピュータ１０と、入力装置５０と、表示装置６０と、を備える。
【００２１】
コンピュータ１０は、ＣＰＵなどのプロセッサ１１と、ＨＤＤなどの記憶装置１２と、入力装置５０及び表示装置６０などの周辺機器との接続のためのＩ／Ｏ１３と、を備えるＰＣ（personal computer）である。
【００２２】
コンピュータ１０の記憶装置１２には、例えばＰＣ上で動作するＭＡＴＬＡＢ（登録商標）／Ｓｉｍｕｌｉｎｋ（登録商標）などのシステムモデリングツール１５が導入されている。システムモデリングツール１５は、制御システムなどのシステムをブロック線図の形でモデル化して、システムのテスト等を行う機能を備えるソフトウェアである。
【００２３】
詳しくはユーザは、システムモデリングツール１５が導入されたコンピュータ１０を用いて、要素、要素間を結ぶ信号線などを配置したブロック線図をシステムのモデルとして作成できる。ユーザは、このブロック線図の挙動などをシステムモデリングツール１５で解析等することで、システムのテスト等を行うことができる。
【００２４】
ユーザは、システムモデリングツール１５で作成したブロック線図の要素、要素間を結ぶ信号線などのデータを、ブロック線図ファイル４０に格納して記憶装置１２に保存することができる。即ち、ブロック線図ファイル４０は、要素、要素間を結ぶ信号線、信号を伝搬する信号などで表されるブロック線図のデータを格納したファイルである。なお、ブロック線図ファイル４０は、ブロック線図がＭＡＴＬＡＢ／Ｓｉｍｕｌｉｎｋで作成されたものの場合、モデルファイルとも呼ばれることがある。
【００２５】
ここで、ブロック線図を簡単に説明する。ブロック線図は、上記のように、制御システムなどのシステムを、要素、要素間を結ぶ信号線、信号を伝搬する信号などでモデル化したものである。ブロック線図の要素には、例えば、システムへの入力を表すブロック、システムからの出力を表すブロック、定数を生成するブロック、入力を乗算するブロック、入力の加算又は減算を行うブロック、入力を遅延して出力するブロックなどがある。
【００２６】
また、ブロック線図の信号には、例えば、入力信号、定数信号、遅延信号、出力信号などがある。入力信号は、システムへの入力を表すブロックから出力される信号である。定数信号は、定数を生成するブロックから出力される信号である。遅延信号は、入力を遅延して出力するブロックから出力される信号である。出力信号は、システムからの出力を表すブロックから出力される信号である。ブロック線図ファイル４０には、ブロック線図の信号について入力信号であるか、遅延信号であるか、定数信号であるか、出力信号であるかの信号属性を示す信号属性データが格納される。
【００２７】
また、ブロック線図では、各信号を区別可能とするために、信号に対してその信号を表す表記が指定される。例えばブロック線図において、出力信号の表記がｏｕｔ１と指定されることがある（図３参照）。信号の表記を示すデータは、ブロック線図ファイル４０に格納される。即ち、ブロック線図ファイル４０には、ブロック線図での各信号の表記である図側記号を示す図側表記データが格納される。
【００２８】
また、ブロック線図では、信号に次元が指定される。次元は、その信号がスカラーであるか行列であるかを示し、本明細書では信号型とも称する。ブロック線図の各信号についてスカラーであるか行列であるかの信号型を示す信号型データは、ブロック線図ファイル４０に格納される。
【００２９】
図１に示すように、コンピュータ１０の記憶装置１２には、ＰＣ上で動作する例えばＭａｘｉｍａなどの数式処理システム１６が導入されている。数式処理システム１６は、ＣＡＳとも呼ばれる。
【００３０】
数式処理システム１６は、数式を、代数規則に基づいて記号的に処理できるソフトウェアである。数式処理システム１６の機能には、数式同士の加算及び減算、数式同士の乗算及び除算、数式の簡約化などがある。数式の簡約化などの数式処理は、代数規則に従う範囲でスカラーと行列とが区別されて行われる。例えば、数式処理は、スカラーの積は交換法則が成り立つが行列の積は交換法則が成り立たないことに従って行われる。
【００３１】
数式処理システム１６を用いて、コンピュータ１０は、一の数式と他の数式が等価であるか否かを、例えば次のようにして判定できる。コンピュータ１０は、数式処理システム１６を利用して、一の数式から他の数式を減算した減算式を導出して、この減算式に対して数式の簡約化を実行する。コンピュータ１０は、簡約化された減算式がゼロであれば、一の数式と他の数式が等価であると判定し、一方で簡約化された減算式がゼロでなければ等価ではないと判定する。この一連の処理を数式処理システム１６と協働してコンピュータ１０に実行させるためのプログラムは、後述のブロック線図分類プログラム１７の一部として提供される。
【００３２】
コンピュータ１０の記憶装置１２には、Ｃ、Ｃ＋＋などで作成されるブロック線図分類プログラム１７が記憶される。ブロック線図分類プログラム１７は、ブロック線図ファイル４０から複数のブロック線図を抽出して、これらのブロック線図から数式として等価なブロック線図を判別して分類する後述のブロック線図分類ルーチン等の各種処理を、数式処理システム１６などと協働して実行するためのプログラムである。
【００３３】
入力装置５０は、例えばキーボード及びマウスなどを備え、ブロック線図分類プログラム１７の起動などの各種指示をコンピュータ１０に入力するために用いられる。
【００３４】
表示装置６０は、例えば液晶ディスプレイなどを備え、解析対象であるブロック線図及びその解析結果などを表示するために用いられる。
【００３５】
次に図２を参照して、コンピュータ１０がブロック線図解析装置として作動するときのコンピュータ１０の機能を説明する。図２に示すように、コンピュータ１０は、機能ブロックとして、解析部２０と、記憶部３０と、を備える。
【００３６】
記憶部３０は、記憶装置１２により構成されるもので、ブロック線図ファイル４０を記憶する。このブロック線図ファイル４０に格納されているブロック線図が、後述のブロック線図分類ルーチンの解析対象となる。
【００３７】
解析部２０は、プロセッサ１１によりブロック線図分類プログラム１７が実行されて後述のブロック線図分類ルーチンが実行されている際のコンピュータ１０の機能を表し、複数のブロック線図を解析して、数式として等価なブロック線図群に分類する機能を備える。
【００３８】
解析部２０は、例えば図３に示すように、ブロック線図ファイル４０から第１ないし第４ブロック線図４１〜４４を抽出して解析して、数式として等価な第１ブロック線図４１及び第２ブロック線図４２を、ブロック線図群Ａに分類する。解析部２０は、分類結果を示す分類テーブル７０を表示装置６０に表示させる。
【００３９】
解析部２０の機能は、図２に示すように、抽出部２１と、管理部２２と、数式生成部２３と、数式判別部２４と、分類部２５と、簡易判定部２６と、に大別できる。
【００４０】
抽出部２１は、記憶部３０に記憶されているブロック線図ファイル４０を読み込み、ブロック線図ファイル４０から、ブロック線図分類ルーチンの解析対象となる複数のブロック線図を抽出する機能を備える。抽出部２１は、解析対象として、ブロック線図ファイル４０に格納されている全てのブロック線図を抽出してもよいし、入力装置５０を介してユーザにより指定されたブロック線図を抽出してもよい。
【００４１】
管理部２２は、数式等価なブロック線図の判別結果を記録するための分類テーブル７０と、解析対象の複数のブロック線図を管理するための組合せ配列８０と、を準備する機能を備える。分類テーブル７０及び組合せ配列８０の詳細は後述する。
【００４２】
数式生成部２３は、抽出部２１により抽出された複数のブロック線図の各々から、各ブロック線図を表す数式を生成する数式生成機能を備える。数式生成部２３は、数式を生成する際に、ブロック線図の信号型を認識して、スカラーと行列を区別して数式を生成する。数式生成部２３の数式生成機能は、ブロック線図分類プログラム１７の一部としてのＣ、Ｃ＋＋などで作成したプログラムで実現されてもよい。或いは、数式生成部２３の数式生成機能は、ブロック線図分類プログラム１７がＭａｐｌｅとＭａｐｌｅＳｉｍの組合せを利用する態様で実現してもよい。
【００４３】
数式判別部２４は、数式生成部２３により生成された複数の数式を比較することにより、複数の数式のうち等価な数式を判別する数式判別を行う機能を備える。この数式判別は、上記した数式処理システム１６の機能を利用して行われる。
【００４４】
分類部２５は、数式判別部２４による数式判別の結果に基づいて、複数のブロック線図を、数式として等価なブロック線図群に分類する機能を備える。この分類を行う際に分類部２５は、管理部２２により準備された分類テーブル７０を用いる。
【００４５】
簡易判定部２６は、解析対象の各ブロック線図に含まれる所定の信号属性の信号数を特定して、特定した所定の信号属性の信号数が異なるブロック線図を数式として非等価なブロック線図と見做す簡易判定を行う機能を備える。簡易判定部２６は、簡易判定を、数式生成部２３による数式生成の実行前であり且つ数式判別部２４による数式判別の実行前に実行するように構成される。簡易判定の詳細は、後述する。
【００４６】
次に、解析部２０により実行されるブロック線図分類メインルーチンを、図４を参照して説明する。ブロック線図分類メインルーチンは、例えばユーザによりメインルーチン開始指示が入力装置５０を用いて入力されると、開始される。
【００４７】
Ｓ１０で解析部２０は、記憶部３０に記憶されているブロック線図ファイル４０からブロック線図４１〜４４を抽出する。詳しくは、ブロック線図ファイル４０から、各ブロック線図を表す要素、要素間の信号接続線、信号の信号型、信号の信号属性などのデータを抽出する。
【００４８】
Ｓ１０で解析部２０はさらに、抽出したブロック線図４１〜４４を後述の処理Ｓ２０〜Ｓ１２０で区別可能とするために、各ブロック線図４１〜４４にＩＤを割り当てる。例えば、各ブロック線図４１、４２、４３、４４のＩＤとして、Ａ、Ｂ、Ｃ、Ｄを割り当てる。
【００４９】
Ｓ２０で解析部２０は、ブロック線図が数式として等価であるかの判別結果を記録するための分類テーブル７０と、ブロック線図が数式として等価であるかを判別する後述の処理を効率的に行うための組合せ配列８０と、を準備する。
【００５０】
分類テーブル７０は、各ブロック線図４１、４２、４３、４４と、そのブロック線図が属するグループと、の間の関係を、例えばブロック線図のＩＤを用いて示すためのテーブルである。Ｓ２０で準備される分類テーブル７０では、図５の例に示すように、全てブロック線図について属するグループ「なし」とされる。
【００５１】
組合せ配列８０は、後述のＳ５０、Ｓ８０でブロック線図が数式として等価であるかを判定する際の単位として用いられるブロック線図ペアを規定する配列である。組合せ配列８０は、例えば図６に示すように、各ブロック線図ペアを示す［比較基準のブロック線図ＩＤ、比較対象のブロック線図ＩＤ］を並べてなる２次元配列である。
【００５２】
詳しくはＳ２０で準備される組合せ配列８０は、Ｓ１０で抽出したｎ個のブロック線図４１〜４４から重複なく生成したｎＣ２組のブロック線図ペアを並べたものである。図６の例では、Ｓ１０で抽出したブロック線図４１〜４４が４個なので、４Ｃ２組＝６組のブロック線図ペアを並べてなる組合せ配列８０が準備される。
【００５３】
図４の説明に戻る。Ｓ３０で解析部２０は、組合せ配列８０が空であるか否かを判定する。組合せ配列８０が空とは、組合せ配列８０にブロック線図ペアが無い状態であり、Ｓ３０で準備した組合せ配列８０の全てのブロック線図ペアについて数式として等価であるかの判定が終了したと見做せる状態である。
【００５４】
詳しくは、後述の処理において、組合せ配列８０からブロック線図ペアが順次選択されて、選択されたブロック線図ペア単位でブロック線図が数式として等価であるかが判定されると共に、選択されたブロック線図ペアが組合せ配列８０から削除される。よって、組合せ配列８０が空である状態とは、Ｓ３０で準備した組合せ配列８０の全てのブロック線図ペアについて等価判定が完了したと見做せる状態となる。
【００５５】
Ｓ３０で組合せ配列８０が空であると判定されると、処理はＳ１２０に進む。Ｓ１２０で解析部２０は、ブロック線図の分類結果を示す分類テーブル７０（図３参照）を表示装置６０に出力する共に記憶部３０に保存して、ブロック線図分類メインルーチンを終了する。Ｓ３０で否定判定がなされると処理はＳ４０に進む。
【００５６】
Ｓ４０で解析部２０は、組合せ配列８０から一つのブロック線図ペアを選択すると共に、選択したブロック線図ペアを組合せ配列８０から削除する。Ｓ４０で選択されるブロック線図ペアは、組合せ配列８０のブロック線図ペアのうち何れでもよいが、本実施形態では先頭のブロック線図ペアが選択されるとする。Ｓ４０で選択されたブロック線図ペアを、以下、対象ブロック線図ペアと呼ぶ。
【００５７】
Ｓ５０で解析部２０は、対象ブロック線図ペアが数式として非等価であると見做せるかの簡易判定を行う。簡易判定は、対象ブロック線図ペアが数式として等価であるかを判定する後述の詳細判定Ｓ８０と、その詳細判定Ｓ８０のための数式生成Ｓ７０と、がコンピュータ処理負荷の大きいことを鑑みて設けられている。
【００５８】
詳しくは、数式生成Ｓ７０及び詳細判定Ｓ８０と比べて処理負荷が比較的小さいＳ５０の簡易判定は、数式生成Ｓ７０及び詳細判定Ｓ８０を実施するまでもなく、数式として非等価と見做せるブロック線図ペアを篩にかけるために設けられている。換言すると、簡易判定は、数式生成Ｓ７０及び詳細判定Ｓ８０の実行回数を低減させることで、ブロック線図分類メインルーチン全体の処理負荷を低減するために設けられている。Ｓ６０の簡易判定は、図７に示す簡易判定サブルーチンに従って行われる。
【００５９】
Ｓ１１０で解析部２０は、Ｓ１０でブロック線図ファイル４０から抽出した信号型データ及び信号属性データに基づいて、対象ブロック線図ペアの各ブロック線図に含まれる所定の信号属性の信号数を信号型毎に特定する。Ｓ１１０で総数が特定される信号型毎の所定の信号属性の信号は、スカラー型の入力信号、行列型の入力信号、スカラー型の定数信号、行列型の定数信号、スカラー型の遅延信号、及び、行列型の遅延信号である。
【００６０】
例えば図８に示すように、第３ブロック線図４３については、スカラー型の入力信号数が２、スカラー型の定数信号数が２、スカラー型の遅延信号数が０、行例型の信号数が０と特定される。また第４ブロック線図４４については、スカラー型の入力信号数が２、スカラー型の定数信号数が１、スカラー型の遅延信号数が０、行例型の信号数が０と特定される。
【００６１】
図７の説明に戻る。Ｓ１２０で解析部２０は、Ｓ１１０で特定した信号数に基づいて、比較基準のブロック線図と比較対象のブロック線図が数式として非等価と見做せるかを判定して、判定結果をメモリ等に記憶し、ブロック線図分類メインルーチンに戻る。
【００６２】
具体的には解析部２０は、Ｓ１１０で特定した各信号型の所定の信号属性の信号数うち少なくとも何れかがブロック線図間で不一致であるか否かを判定する。即ち解析部２０は、スカラー型の入力信号、行列型の入力信号、スカラー型の定数信号、行列型の定数信号、スカラー型の遅延信号、及び、行列型の遅延信号のうち少なくとも何れかがブロック線図間で不一致であるか否かを判定する。不一致の場合、解析部２０は、比較基準のブロック線図と比較対象のブロック線図は数式として非等価と見做せると判定する。一方で、何れもが一致の場合、解析部２０は、比較基準のブロック線図と比較対象のブロック線図が数式として非等価と見做せないと判定する。
【００６３】
図８の例では、第３ブロック線図４３と第４ブロック線図４４とでスカラー型の定数信号数が不一致であるので、解析部２０は、第３ブロック線図４３と第４ブロック線図４４とは数式として非等価と見做すと判定する。
【００６４】
以上の簡易判定サブルーチンでは、Ｓ１１０で信号型毎に入力信号数、定数信号数、及び遅延信号数が特定されて、Ｓ１２０で各信号型の入力信号数、定数信号数、及び遅延信号数のうち少なくとも何れかがブロック線図間で不一致であるかが判定された。しかし、Ｓ１１０とＳ１２０とで信号型、即ち、スカラー型の信号であるか行列型の信号であるかを区別せずに、入力信号数、定数信号数、及び遅延信号数を特定して比較してもよい。また、Ｓ１１０とＳ１２０で、入力信号数、定数信号数、及び遅延信号数とを全て特定して比較するのでなく、入力信号数、定数信号数、及び遅延信号数のうち少なくとも一つの信号属性の信号数を、所定の信号属性の信号数として特定して比較する構成であってもよい。
【００６５】
このようなＳ１１０とＳ１２０で数が特定されて比較される信号の種別数を少なくした構成は、スカラー型及び行列型の各々について入力信号数、定数信号数、及び遅延信号数を特定して比較する構成と比べて、簡易判定サブルーチンの処理負荷を軽減できる。一方で、信号の種別数を少なくする構成では、数式生成Ｓ７０及び詳細判定Ｓ８０を実施するまでもなく数式として非等価であるブロック線図ペアを篩にかけるという簡易判定サブルーチンの機能が低減し得る。したがって、これらの点を考慮して、Ｓ１１０とＳ１２０で数を特定して比較する信号種別及び種別数を予め定めると好適である。
【００６６】
図４の説明に戻る。Ｓ６０で解析部２０は、Ｓ５０の簡易判定において対象ブロック線図ペアが数式として非等価と見做せると判定されたか否かを判定する。Ｓ６０で肯定判定がなされると処理はＳ３０に戻り、Ｓ６０で否定判定がなされると、処理はＳ７０に進む。
【００６７】
Ｓ７０で解析部２０は、比較基準のブロック線図を表す数式と、比較対象のブロック線図を表す数式とを、Ｓ１０でブロック線図ファイル４０から抽出した信号型データと信号属性データと図側表記データに基づいて生成する。なお、Ｓ７０では、ブロック線図ファイル４０に示される各ブロック線図における信号名などの図側表記をそのまま数式における代数などの数式側表記に用いて数式が生成される。
【００６８】
例えば、図１０に示すように、解析部２０は、第１ブロック線図４１での図側記号である入力信号ｘ、入力信号ｙ、定数信号Ａ、出力信号ｏｕｔ１を変更することなく用いて、第１ブロック線図４１を表す数式ｏｕｔ１＝（ｘ＋ｙ）＊Ａを生成する。同様に、第２ブロック線図４２を表す数式を生成する際には、第２ブロック線図４２での図側記号である入力信号ｙ、入力信号ｚ、定数信号Ａ、出力信号ｏｕｔ１を変更することなく用いて、第２ブロック線図４２を表す数式ｏｕｔ１＝ｙ＊Ａ＋ｚ＊Ａを生成する。
【００６９】
図４の説明に戻ると、Ｓ８０で解析部２０は、Ｓ７０で生成された比較基準のブロック線図を表す数式と、比較対象のブロック線図を表す数式と、が等価であるか否かを判定する詳細判定を行う。Ｓ８０の詳細判定は、図９に示す詳細判定サブルーチンに従って行われる。
【００７０】
図９に示すようにＳ２１０で解析部２０は、Ｓ７０で生成した比較基準の数式と比較対象の数式との差がゼロであるか否かを、数式処理システム１６を用いて判定する。比較基準の数式と比較対象の数式との差がゼロであるかの判定は、これら数式が代数的に等価であるかを判定するために行っている。
【００７１】
例えば図１０の例では、比較基準の数式と比較対象数式との差（ｘ＋ｙ）＊Ａ−（ｙ＊Ａ＋ｚ＊Ａ）＝０であるか否かが判定され、差はｘ＊Ａ−ｚ＊Ａでありゼロではないので非等価であると判定される。なお、数式処理システム１６を用いて２つの数式が代数的に等価であるかを判定する方法は、上記例に限定されず、様々な方法が考えられる。例えば、一の数式を他の数式で除算した式を生成して、その式を簡約化すると１となるか否かに基づいて判定する方法もある。
【００７２】
図９に説明に戻り、Ｓ２１０で数式の差がゼロであると判定されると、Ｓ２５０に進み、解析部２０は、対象ブロック線図ペアは数式として等価であると判定して、ブロック線図分類メインルーチンに戻る。Ｓ２１０で数式の差がゼロでないと判定されると、処理はＳ２２０に進む。
【００７３】
Ｓ２２０で解析部２０は、Ｓ７０で生成した比較基準の数式と比較対象の数式とにおいて同じ信号型及び同じ信号属性の信号を表わすが異なる表記となっている数式側記号を、ブロック線図ファイル４０の信号型データ及び信号属性データ等を用いて特定する。そして解析部２０は、特定した数式側記号について比較対象の数式での表記を比較基準の数式での表記に置き換える。
【００７４】
例えば図１０の例では、比較基準の数式と比較対象の数式とにおいて同じ信号型及び同じ信号属性の信号を表すが異なる表記となっている数式側記号として、スカラー型の入力信号の表記ｘ、ｙと、スカラー型の入力信号の表記ｙ、ｚと、が特定される。そして、第２ブロック線図４２から生成された数式におけるスカラー型の入力信号の表記ｙ、ｚが、第１ブロック線図４１から生成された数式におけるスカラー型の入力信号の表記ｘ、ｙに置換される。その結果、置換後の比較対象の数式は、ｏｕｔ１＝ｘ＊Ａ＋ｙ＊Ａとなる。
【００７５】
Ｓ２３０で解析部２０は、Ｓ７０で生成した比較基準の数式と、Ｓ２２０で置換した置換後の比較対象の数式との差がゼロであるか否かを判定する。この判定は、Ｓ２１０と同じく、これら数式が代数的に等価であるかを判定するために行っている。図１０の例では、差はゼロと判定される。
【００７６】
Ｓ２３０で肯定判定されると、Ｓ２５０に進み、解析部２０は、対象ブロック線図ペアは数式として等価であると判定して、ブロック線図分類メインルーチンに戻る。一方で、Ｓ２３０で否定判定されると、Ｓ２４０に進み、解析部２０は、対象ブロック線図ペアは数式として非等価であると判定して、ブロック線図分類メインルーチンに戻る。
【００７７】
なお、Ｓ２２０において、同じ信号型及び同じ信号属性の信号を表すが異なる表記となっている数式側記号の数や、数式そのものの形によっては、比較対象の数式側記号について置き換え後の表記を一意に決定できない場合もある。この場合、Ｓ２２０で解析部２０は、表記置き換え後の比較対象の数式を、あらゆる表記置き換えの組合せについて複数生成してもよい。Ｓ２３０で解析部２０は、生成した表記置き換え後の比較対象の数式の各々について、Ｓ７０で生成した比較基準の数式との差がゼロであるか判定してもよい。何れかの表記置き換え後の比較対象の数式について比較基準の数式との差がゼロである場合、Ｓ２５０に進み、何れの表記置き換え後の比較対象の数式についても比較基準の数式との差がゼロでない場合、Ｓ２４０に進む構成としてもよい。
【００７８】
以上のように詳細判定サブルーチンでは、比較基準の数式と比較対象の数式のゼロであるかの判定を、Ｓ２１０の表記置換前判定と、Ｓ２２０の及びＳ２３０の表記置換後判定と、の２段階で行っている。２段階で行う理由は次の通りである。
【００７９】
上記のように、ブロック線図の表現方法は多様であり、ブロック線図内の信号に、様々な信号属性及び信号型が指定される。また、上記のようにＳ２２０及びＳ２３０の処理はＳ２１０と比べて複雑である。そこで、信号型及び信号属性を区別しつつ各信号の表記を置き換えるまでもなく数式として等価であると判定できる数式をＳ２１０の置換前判定で篩にかけている。これにより、Ｓ２１０を行わずにＳ２２０及びＳ２３０を行う場合と比べて、ブロック線図分類メインルーチンの処理負荷を低減している。
【００８０】
図４のブロック線図分類メインルーチンの説明に戻る。
【００８１】
Ｓ９０で解析部２０は、Ｓ８０の詳細判定において対象ブロック線図ペアが数式として等価であると判定されたか否かを判定する。Ｓ９０で肯定判定、即ち等価であると判定されていた場合、処理はＳ１００に進む。一方で、Ｓ９０で否定判定、即ち非等価であると判定されていた場合、処理はＳ３０に戻る。
【００８２】
Ｓ１００で解析部２０は、Ｓ８０での詳細判定の結果に基づいて、分類テーブル７０を更新する。具体的には、比較基準のブロック線図の属するグループ及び比較対象のブロック線図の属するグループとして、比較基準のブロック線図のＩＤを登録する。
【００８３】
Ｓ１１０で解析部２０は、対象ブロック線図ペアの比較対象のブロック線図ＩＤと同じブロック線図ＩＤが比較基準となっている全てのブロック線図ペアを、組合せ配列８０から削除する。言い換えると、解析部２０は、［対象ブロック線図ペアでの比較対象ブロック線図のＩＤ、＊］に該当するブロック線図ペアを全て組合せ配列８０から削除する。例えば、Ｓ８０で等価と判定された対象ブロック線図における比較対象のブロック線図ＩＤがＢであれば、比較基準のブロック線図ＩＤがＢとなっている全てのブロック線図ペアを組合せ配列８０から削除する。Ｓ１１０の技術的意義は、後述する。
【００８４】
Ｓ１１０を完了すると処理はＳ３０に戻り、組合せ配列８０が空と判定されるまでＳ４０〜Ｓ１１０の処理を繰り返す。Ｓ３０で組合せ配列８０が空と判定されると、処理はＳ１２０に進み、解析部２０は、ブロック線図の分類結果を示す分類テーブル７０（図３参照）を表示装置６０に出力する共に記憶部３０に保存して、ブロック線図分類メインルーチンを終了する。
【００８５】
ここで、Ｓ１１０での組合せ配列８０の更新の技術的意義を、具体例を参照しつつ説明する。
【００８６】
Ｓ２０で準備される組合せ配列８０は、ブロック線図の個数をｎとすると、ｎ個のブロック線図から重複なく生成されたｎＣ２組のブロック線図ペアを並べた２次元配列である。図６の例では、ブロック線図の個数が４であるので、４Ｃ２＝６組のブロック線図ペアを並べた組合せ配列８０がＳ２０で準備される。
【００８７】
ブロック線図分類メインルーチンにおけるＳ４０の初回実行時に、組合せ配列８０の先頭のブロック線図ペアが対象ブロック線図として選択されると共に、この選択されたブロック線図ペアが組合せ配列８０から削除される。この状態を例示したのが図１１である。図１１では、Ｓ２０で準備された図６の組合せ配列８０と比べて、比較基準のブロック線図ＩＤがＡであり且つ比較対象のブロック線図ＩＤがＢであるブロック線図ペアが削除されている。
【００８８】
この状態で、この対象ブロック線図ペアがＳ８０で数式として等価であると判定されてＳ１１０に進むと、組合せ配列８０から［Ｂ、＊］に該当するブロック線図ペアが全て削除される。この状態を例示したのが図１２である。
【００８９】
図１１と図１２との比較で分かるように、Ｓ１１０で組合せ配列８０から削除されるブロック線図ペアは、Ｓ８０での判定結果から同じ組み合わせと見做せる２つのブロック線図ペアの一方である。より具体的には、ＩＤ「Ａ」のブロック線図とＩＤ「Ｃ」のブロック線図からなるブロック線図ペアは、ＩＤ「Ｂ」のブロック線図とＩＤ「Ｃ」のブロック線図からなるブロック線図ペアと、同じブロック線図の組み合わせと見做せることに基づいて、後者のブロック線図ペアが配列８０から削除される。Ｓ１１０で組合せ配列８０から削除されたブロック線図ペアは、続くＳ４０で対象ブロック線図として選択されることはないので、このブロック線図ペアについて数式生成及び数式判別が行われることはない。
【００９０】
これは見方を変えると、Ｓ８０で等価と判定された２つのブロック線図を同じブロック線図と見做したときに同じブロック線図の組み合わせとなる２つのブロック線図ブロックペアの一方を重複ブロック線図ペアと見做して、この重複ブロック線図ペアについて数式生成及び数式判別を省略していると言える。このように重複ブロック線図ペアについて数式判別等を省略すれば、同じ組み合わせと見做せる２つのブロック線図ペアの各々に対してＳ４０〜Ｓ１１０の処理を重複して行うことを防止できるので、ブロック線図分類メインルーチン全体の処理負荷を低減できる。これが、Ｓ１１０の技術的意義である。
【００９１】
以上のブロック線図分類メインルーチンにおいて、Ｓ１０が抽出部２１に機能に相当する。Ｓ２０が管理部２２の機能に相当する。Ｓ５０及びＳ６０が簡易判定部２６に機能に相当する。Ｓ７０が数式生成部２３の機能に相当する。Ｓ８０及びＳ９０が数式判別部２４の機能に相当する。Ｓ１００とＳ１２０が分類部２５の機能に相当する。また、ブロック線図分類メインルーチンを実行する解析部２０がブロック線図解析装置に相当する。
【００９２】
以上の説明で例示したブロック線図４１、４２、４３、４４には行列型の信号は含まれていなかった。しかしブロック線図に行列型の信号が含まれている場合でも、ブロック線図分類メインルーチンにより、ブロック線図を数式として等価ブロック線図に分類できる。なぜなら、上記したように、数式生成部２３及び数式判別部２４がスカラーと行列を区別して数式を生成及び処理可能だからである。
【００９３】
以上の実施形態では、数式生成部２３は、抽出部２１により抽出された複数のブロック線図の各々から、各ブロック線図を表す数式を生成する。数式判別部２４は、数式生成部２３により生成された複数の数式を比較することにより、複数の数式のうち等価な数式を判別する数式判別を行う。分類部２５は、数式判別部２４による数式判別の結果に基づいて、複数のブロック線図を、数式として等価なブロック線図群に分類する。
【００９４】
従って、要素及び要素間の接続関係等で表される表現方法が多様であり等価であっても表現方法が異なり得るブロック線図を、数式として等価なブロック線図群に分類できるので、開発工数低減や保守性向上が可能となる。
【００９５】
例えば、図１３に示すように、比較例としての特許文献１の技術では、要素及び要素間の接続関係等で表される表現方法が異なる第１ブロック線図４１及び第２ブロック線図４２を、数式として等価なブロック線図群に分類できない。一方で、本実施形態では、第１ブロック線図４１及び第２ブロック線図４２を、数式として等価なブロック線図群に分類できる。
【００９６】
以上の説明で例示したブロック線図４１、４２、４３、４４には、図１４に示すような遅延信号を生成するむだ時間要素を含む閉ループ９０が含まれていなかった。しかし、むだ時間要素を含む閉ループ９０がブロック線図に含まれている場合であっても、例えば、次のようにしてＳ７０でブロック線図を表す数式を生成して、Ｓ８０で詳細判定を行うことができる。
【００９７】
Ｓ７０で解析部２０は、むだ時間要素を含む閉ループ９０がブロック線図に含まれているか否かを、ブロック線図ファイル４０に格納されているブロック線図内の要素、要素間を結ぶ信号線、信号線を伝搬する信号を示すデータに基づいて検出して特定する。
【００９８】
解析部２０は、特定した閉ループ９０を、入力に対して遅延信号ｄ（ｔ）を乗算するサブシステムに置き換えて、この置き換え後のブロック線図を表す数式、即ち置き換え後のブロック線図の出力ｏｕｔ１を表す数式を生成する。この数式を、遅延ループ隠蔽式と本明細書では呼ぶ。図１４の例では、遅延ループ隠蔽式は、Ｏｕｔ１＝（ｘ＋ｙ）＊Ａ＊ｄ（ｔ）となる。
【００９９】
さらに解析部２０は、特定した閉ループ９０からなるサブシステムから、このサブシステムの出力である遅延信号を表す数式を生成する。この数式を、本明細書では遅延ループ表現式と呼ぶ。図１４の例では、遅延ループ表現式は、ｄ（ｔ）＝ｄ（ｔ−Ｌ）＋ｄ（ｔ−２Ｌ）＊Ｂとなる。Ｌは、むだ時間要素により遅延される遅延時間を表す。
【０１００】
解析部２０は、遅延ループ表現式と遅延ループ隠蔽式とで形成される連立式を、むだ時間要素を含む閉ループ９０を含むブロック線図を表す数式とする。
【０１０１】
Ｓ８０における詳細判定では、解析部２０は、遅延ループ表現式と遅延ループ隠蔽式との両方が対象ブロック線図ペア間で等価である場合に、対象ブロック線図ペアは数式として等価であると判定する。一方で、遅延ループ表現式と遅延ループ隠蔽式との少なくとも一方が対象ブロック線図ペア間で非等価である場合、対象ブロック線図ペアは数式として非等価であると判定する。
【０１０２】
むだ時間要素を含む閉ループ９０がブロック線図に含まれている場合、以上のようにして解析部２０は、Ｓ７０でブロック線図を表す数式を生成して、Ｓ８０で詳細判定を行うことができる。
【０１０３】
以上、一実施形態について説明したが、この明細書に開示される技術的思想は、この実施形態になんら制限されることなく、種々な実施形態として具現化できる。
【０１０４】
例えば、実施形態では、ブロック線図は、システムモデリングツール１５の一例であるＭＡＴＬＡＢ／Ｓｉｍｕｌｉｎｋを用いて生成されたものであった。しかし、ブロック線図は、他のシステムモデリングツール１５で生成されたものでもよい。例えば、Ｓｃｉｌａｂ／Ｓｃｉｃｏｓｎで生成されたブロック線図であってもよい。
【０１０５】
また実施形態では、数式処理システム１６として、Ｍａｘｉｍａを例示したが、他の数式処理システム１６を利用してもよい。例えば、ＭＡＴＬＡＢのＴｏｏｌＢｏｘにあるＳｙｍｂｏｌｉｃ  Ｍａｔｈ  Ｔｏｏｌｂｏｘを利用してもよい。
【０１０６】
また実施形態では、コンピュータ１０の機能が、プロセッサ１１がブロック線図分類プログラム１７を実行することで具現化される例を示した。しかし、このコンピュータ１０の機能の少なくとも一部は、ＩＣ等などの専用回路によって具現化されてもよい。また、コンピュータ１０の機能は、ネットワーク上のサーバや分散システム等として具現化されてもよい。
【符号の説明】
【０１０７】
１：コンピュータシステム、１０：コンピュータ、２０：解析部（解析装置）、２１：抽出部、２２：管理部、２３：数式生成部、２４：数式判別部、２５：分類部、２６：簡易判定部、３０：記憶部、４０：ブロック線図ファイル、４１：第１ブロック線図（ブロック線図）、４２：第２ブロック線図（ブロック線図）、４３：第３ブロック線図（ブロック線図）、４４：第４ブロック線図（ブロック線図）、５０：入力装置、６０：表示装置、８０：組合せ配列、９０：閉ループ
【図１】
2019144873.tif 000003
【図２】
2019144873.tif 000004
【図３】
2019144873.tif 000005
【図４】
2019144873.tif 000006
【図５】
2019144873.tif 000007
【図６】
2019144873.tif 000008
【図７】
2019144873.tif 000009
【図８】
2019144873.tif 000010
【図９】
2019144873.tif 000011
【図１０】
2019144873.tif 000012
【図１１】
2019144873.tif 000013
【図１２】
2019144873.tif 000014
【図１３】
2019144873.tif 000015
【図１４】
2019144873.tif 000016