JP2019144873A - ブロック線図解析装置 - Google Patents
ブロック線図解析装置 Download PDFInfo
- Publication number
- JP2019144873A JP2019144873A JP2018028804A JP2018028804A JP2019144873A JP 2019144873 A JP2019144873 A JP 2019144873A JP 2018028804 A JP2018028804 A JP 2018028804A JP 2018028804 A JP2018028804 A JP 2018028804A JP 2019144873 A JP2019144873 A JP 2019144873A
- Authority
- JP
- Japan
- Prior art keywords
- block diagram
- signal
- expression
- formula
- mathematical expression
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
【課題】表現方法の異なる等価なブロック線図を検出可能として、開発工数低減及び保守性向上を可能とするブロック線図解析装置を提供する。【解決手段】コンピュータシステムはコンピュータ10において、記憶部30に記憶されたブロック線図ファイル40から解析対象の複数のブロック線図を抽出する抽出部21と、抽出部により抽出された複数のブロック線図の各々から、各ブロック線図を表す数式を生成する数式生成部23と、数式生成部により生成された複数の数式を比較することにより、複数の数式のうち等価な数式を判別する数式判別を行う数式判別部24と、数式判別部による数式判別の結果に基づいて、複数のブロック線図を、数式として等価なブロック線図群に分類する分類部25と、を備える。【選択図】図2
Description
この明細書における開示は、ブロック線図を解析するブロック線図解析装置に関する。
従来より、制御システムなどのシステム開発において、MATLAB(登録商標)/Simulink(登録商標)などのモデリングツールを用いて、システムのモデルとしてブロック線図を作成してテスト等することが行われている。
特許文献1には、MATLAB/Simulinkモデルにおけるクローンを検出する技術が記載されている。特許文献1で言うクローンとは、コピーアンドペースト等により生じるもので、ブロック線図が見かけ上あるいは実質的に同じ構造をしているものである。
特許文献1では、ブロック線図内の要素と要素間の接続関係とに基づいて、見かけ上あるいは実質的に同じ構造のクローンを検出している。
ところで、ブロック線図によるシステムの表現方法は多様である。その結果、挙動が等価なシステム即ち数式として等価なシステムであっても、要素及び要素間の接続関係等で表されるブロック線図の表現が異なる場合がある。
例えば、2つのブロック線図それぞれを構成する要素数や接続関係等が異なる場合であっても、2つのブロック線図の挙動が等価な場合即ち数式として等価な場合がある。
このような表現方法の異なるブロック線図について、数式として等価であるか否かを判定して、複数のブロック線図を分類できれば、開発工数低減及び保守性向上の観点から様々な利点がある。
例えば、同じ挙動となる複数のブロック線図のうち、複雑な表現となっている一のブロック線図を、より簡易な表現となっている他のブロック線図の表現に改めることができる。これは、ブロック線図のリファクタリングを容易とし、開発工数低減を可能とする。
また、表現方法の異なる等価な複数のブロック線図を、特定の表現方法に統一できれば、表現方法の統一によりシステムの保守性向上を図れる。
また、複数のブロック線図で表されたシステムの一部を変更した場合、変更したブロック線図と等価なブロック線図がシステム内に既に存在している場合があり得る。この場合、これらのブロック線図の挙動が等価即ち数式として等価であると判定できれば、変更したブロック線図を既存のブロック線図で置き換えることができる。既存のブロック線図で置き換えると、変更したブロック線図のために単体テストを行う必要性を低減できるので、開発工数低減につながる。
なお特許文献1の技術は、ブロック線図内の要素と要素間の接続関係とに基づいてクローンを検出するので、要素及び要素間の接続関係等で表されるブロック線図の表現が同じクローンは検出できるが、表現方法の異なる等価なブロック線図を検出できない。特許文献1には、開発工数低減及び保守性向上のために、表現方法の異なる等価なブロック線図を検出するという思想は示唆もされていない。
以上を鑑みて、この明細書における開示の目的の一つは、表現方法の異なる等価なブロック線図を検出可能として、開発工数低減及び保守性向上を可能とするブロック線図解析装置を提供することにある。
上記目的を達成するためのブロック線図解析装置の一例は、
ブロック線図ファイル(40)から解析対象の複数のブロック線図(41、42、43、44)を抽出する抽出部(21)と、
抽出部により抽出された複数のブロック線図の各々から、各ブロック線図を表す数式を生成する数式生成部(23)と、
数式生成部により生成された複数の数式を比較することにより、等価な数式を判別する数式判別を行う数式判別部(24)と、
数式判別部による数式判別の結果に基づいて、複数のブロック線図を、数式として等価なブロック線図群に分類する分類部(25)と、
を備えるブロック線図解析装置である。
ブロック線図ファイル(40)から解析対象の複数のブロック線図(41、42、43、44)を抽出する抽出部(21)と、
抽出部により抽出された複数のブロック線図の各々から、各ブロック線図を表す数式を生成する数式生成部(23)と、
数式生成部により生成された複数の数式を比較することにより、等価な数式を判別する数式判別を行う数式判別部(24)と、
数式判別部による数式判別の結果に基づいて、複数のブロック線図を、数式として等価なブロック線図群に分類する分類部(25)と、
を備えるブロック線図解析装置である。
このブロック線図解析装置では、複数のブロック線図の各々から、各ブロック線図を表す数式が生成される。生成した複数の数式を比較することにより、複数の数式のうち等価な数式が判別される。この判別結果に基づいて複数のブロック線図が、数式として等価なブロック線図群に分類される。
このように上記ブロック線図解析装置によれば、要素及び要素間の接続関係等で表される表現方法が多様であり等価であっても表現方法が異なり得るブロック線図を、数式として等価なブロック線図群に分類できるので、開発工数低減や保守性向上が可能となる。
なお、上記括弧内の参照番号は、理解を容易にすべく、後述する実施形態における具体的な構成との対応関係の一例を示すものにすぎず、なんら技術的範囲を制限することを意図したものではない。
以下、ブロック線図解析装置の一実施形態であるコンピュータシステム1を説明する。
図1に示すように、コンピュータシステム1は、そのハードウェア構成として、コンピュータ10と、入力装置50と、表示装置60と、を備える。
コンピュータ10は、CPUなどのプロセッサ11と、HDDなどの記憶装置12と、入力装置50及び表示装置60などの周辺機器との接続のためのI/O13と、を備えるPC(personal computer)である。
コンピュータ10の記憶装置12には、例えばPC上で動作するMATLAB(登録商標)/Simulink(登録商標)などのシステムモデリングツール15が導入されている。システムモデリングツール15は、制御システムなどのシステムをブロック線図の形でモデル化して、システムのテスト等を行う機能を備えるソフトウェアである。
詳しくはユーザは、システムモデリングツール15が導入されたコンピュータ10を用いて、要素、要素間を結ぶ信号線などを配置したブロック線図をシステムのモデルとして作成できる。ユーザは、このブロック線図の挙動などをシステムモデリングツール15で解析等することで、システムのテスト等を行うことができる。
ユーザは、システムモデリングツール15で作成したブロック線図の要素、要素間を結ぶ信号線などのデータを、ブロック線図ファイル40に格納して記憶装置12に保存することができる。即ち、ブロック線図ファイル40は、要素、要素間を結ぶ信号線、信号を伝搬する信号などで表されるブロック線図のデータを格納したファイルである。なお、ブロック線図ファイル40は、ブロック線図がMATLAB/Simulinkで作成されたものの場合、モデルファイルとも呼ばれることがある。
ここで、ブロック線図を簡単に説明する。ブロック線図は、上記のように、制御システムなどのシステムを、要素、要素間を結ぶ信号線、信号を伝搬する信号などでモデル化したものである。ブロック線図の要素には、例えば、システムへの入力を表すブロック、システムからの出力を表すブロック、定数を生成するブロック、入力を乗算するブロック、入力の加算又は減算を行うブロック、入力を遅延して出力するブロックなどがある。
また、ブロック線図の信号には、例えば、入力信号、定数信号、遅延信号、出力信号などがある。入力信号は、システムへの入力を表すブロックから出力される信号である。定数信号は、定数を生成するブロックから出力される信号である。遅延信号は、入力を遅延して出力するブロックから出力される信号である。出力信号は、システムからの出力を表すブロックから出力される信号である。ブロック線図ファイル40には、ブロック線図の信号について入力信号であるか、遅延信号であるか、定数信号であるか、出力信号であるかの信号属性を示す信号属性データが格納される。
また、ブロック線図では、各信号を区別可能とするために、信号に対してその信号を表す表記が指定される。例えばブロック線図において、出力信号の表記がout1と指定されることがある(図3参照)。信号の表記を示すデータは、ブロック線図ファイル40に格納される。即ち、ブロック線図ファイル40には、ブロック線図での各信号の表記である図側記号を示す図側表記データが格納される。
また、ブロック線図では、信号に次元が指定される。次元は、その信号がスカラーであるか行列であるかを示し、本明細書では信号型とも称する。ブロック線図の各信号についてスカラーであるか行列であるかの信号型を示す信号型データは、ブロック線図ファイル40に格納される。
図1に示すように、コンピュータ10の記憶装置12には、PC上で動作する例えばMaximaなどの数式処理システム16が導入されている。数式処理システム16は、CASとも呼ばれる。
数式処理システム16は、数式を、代数規則に基づいて記号的に処理できるソフトウェアである。数式処理システム16の機能には、数式同士の加算及び減算、数式同士の乗算及び除算、数式の簡約化などがある。数式の簡約化などの数式処理は、代数規則に従う範囲でスカラーと行列とが区別されて行われる。例えば、数式処理は、スカラーの積は交換法則が成り立つが行列の積は交換法則が成り立たないことに従って行われる。
数式処理システム16を用いて、コンピュータ10は、一の数式と他の数式が等価であるか否かを、例えば次のようにして判定できる。コンピュータ10は、数式処理システム16を利用して、一の数式から他の数式を減算した減算式を導出して、この減算式に対して数式の簡約化を実行する。コンピュータ10は、簡約化された減算式がゼロであれば、一の数式と他の数式が等価であると判定し、一方で簡約化された減算式がゼロでなければ等価ではないと判定する。この一連の処理を数式処理システム16と協働してコンピュータ10に実行させるためのプログラムは、後述のブロック線図分類プログラム17の一部として提供される。
コンピュータ10の記憶装置12には、C、C++などで作成されるブロック線図分類プログラム17が記憶される。ブロック線図分類プログラム17は、ブロック線図ファイル40から複数のブロック線図を抽出して、これらのブロック線図から数式として等価なブロック線図を判別して分類する後述のブロック線図分類ルーチン等の各種処理を、数式処理システム16などと協働して実行するためのプログラムである。
入力装置50は、例えばキーボード及びマウスなどを備え、ブロック線図分類プログラム17の起動などの各種指示をコンピュータ10に入力するために用いられる。
表示装置60は、例えば液晶ディスプレイなどを備え、解析対象であるブロック線図及びその解析結果などを表示するために用いられる。
次に図2を参照して、コンピュータ10がブロック線図解析装置として作動するときのコンピュータ10の機能を説明する。図2に示すように、コンピュータ10は、機能ブロックとして、解析部20と、記憶部30と、を備える。
記憶部30は、記憶装置12により構成されるもので、ブロック線図ファイル40を記憶する。このブロック線図ファイル40に格納されているブロック線図が、後述のブロック線図分類ルーチンの解析対象となる。
解析部20は、プロセッサ11によりブロック線図分類プログラム17が実行されて後述のブロック線図分類ルーチンが実行されている際のコンピュータ10の機能を表し、複数のブロック線図を解析して、数式として等価なブロック線図群に分類する機能を備える。
解析部20は、例えば図3に示すように、ブロック線図ファイル40から第1ないし第4ブロック線図41〜44を抽出して解析して、数式として等価な第1ブロック線図41及び第2ブロック線図42を、ブロック線図群Aに分類する。解析部20は、分類結果を示す分類テーブル70を表示装置60に表示させる。
解析部20の機能は、図2に示すように、抽出部21と、管理部22と、数式生成部23と、数式判別部24と、分類部25と、簡易判定部26と、に大別できる。
抽出部21は、記憶部30に記憶されているブロック線図ファイル40を読み込み、ブロック線図ファイル40から、ブロック線図分類ルーチンの解析対象となる複数のブロック線図を抽出する機能を備える。抽出部21は、解析対象として、ブロック線図ファイル40に格納されている全てのブロック線図を抽出してもよいし、入力装置50を介してユーザにより指定されたブロック線図を抽出してもよい。
管理部22は、数式等価なブロック線図の判別結果を記録するための分類テーブル70と、解析対象の複数のブロック線図を管理するための組合せ配列80と、を準備する機能を備える。分類テーブル70及び組合せ配列80の詳細は後述する。
数式生成部23は、抽出部21により抽出された複数のブロック線図の各々から、各ブロック線図を表す数式を生成する数式生成機能を備える。数式生成部23は、数式を生成する際に、ブロック線図の信号型を認識して、スカラーと行列を区別して数式を生成する。数式生成部23の数式生成機能は、ブロック線図分類プログラム17の一部としてのC、C++などで作成したプログラムで実現されてもよい。或いは、数式生成部23の数式生成機能は、ブロック線図分類プログラム17がMapleとMapleSimの組合せを利用する態様で実現してもよい。
数式判別部24は、数式生成部23により生成された複数の数式を比較することにより、複数の数式のうち等価な数式を判別する数式判別を行う機能を備える。この数式判別は、上記した数式処理システム16の機能を利用して行われる。
分類部25は、数式判別部24による数式判別の結果に基づいて、複数のブロック線図を、数式として等価なブロック線図群に分類する機能を備える。この分類を行う際に分類部25は、管理部22により準備された分類テーブル70を用いる。
簡易判定部26は、解析対象の各ブロック線図に含まれる所定の信号属性の信号数を特定して、特定した所定の信号属性の信号数が異なるブロック線図を数式として非等価なブロック線図と見做す簡易判定を行う機能を備える。簡易判定部26は、簡易判定を、数式生成部23による数式生成の実行前であり且つ数式判別部24による数式判別の実行前に実行するように構成される。簡易判定の詳細は、後述する。
次に、解析部20により実行されるブロック線図分類メインルーチンを、図4を参照して説明する。ブロック線図分類メインルーチンは、例えばユーザによりメインルーチン開始指示が入力装置50を用いて入力されると、開始される。
S10で解析部20は、記憶部30に記憶されているブロック線図ファイル40からブロック線図41〜44を抽出する。詳しくは、ブロック線図ファイル40から、各ブロック線図を表す要素、要素間の信号接続線、信号の信号型、信号の信号属性などのデータを抽出する。
S10で解析部20はさらに、抽出したブロック線図41〜44を後述の処理S20〜S120で区別可能とするために、各ブロック線図41〜44にIDを割り当てる。例えば、各ブロック線図41、42、43、44のIDとして、A、B、C、Dを割り当てる。
S20で解析部20は、ブロック線図が数式として等価であるかの判別結果を記録するための分類テーブル70と、ブロック線図が数式として等価であるかを判別する後述の処理を効率的に行うための組合せ配列80と、を準備する。
分類テーブル70は、各ブロック線図41、42、43、44と、そのブロック線図が属するグループと、の間の関係を、例えばブロック線図のIDを用いて示すためのテーブルである。S20で準備される分類テーブル70では、図5の例に示すように、全てブロック線図について属するグループ「なし」とされる。
組合せ配列80は、後述のS50、S80でブロック線図が数式として等価であるかを判定する際の単位として用いられるブロック線図ペアを規定する配列である。組合せ配列80は、例えば図6に示すように、各ブロック線図ペアを示す[比較基準のブロック線図ID、比較対象のブロック線図ID]を並べてなる2次元配列である。
詳しくはS20で準備される組合せ配列80は、S10で抽出したn個のブロック線図41〜44から重複なく生成したnC2組のブロック線図ペアを並べたものである。図6の例では、S10で抽出したブロック線図41〜44が4個なので、4C2組=6組のブロック線図ペアを並べてなる組合せ配列80が準備される。
図4の説明に戻る。S30で解析部20は、組合せ配列80が空であるか否かを判定する。組合せ配列80が空とは、組合せ配列80にブロック線図ペアが無い状態であり、S30で準備した組合せ配列80の全てのブロック線図ペアについて数式として等価であるかの判定が終了したと見做せる状態である。
詳しくは、後述の処理において、組合せ配列80からブロック線図ペアが順次選択されて、選択されたブロック線図ペア単位でブロック線図が数式として等価であるかが判定されると共に、選択されたブロック線図ペアが組合せ配列80から削除される。よって、組合せ配列80が空である状態とは、S30で準備した組合せ配列80の全てのブロック線図ペアについて等価判定が完了したと見做せる状態となる。
S30で組合せ配列80が空であると判定されると、処理はS120に進む。S120で解析部20は、ブロック線図の分類結果を示す分類テーブル70(図3参照)を表示装置60に出力する共に記憶部30に保存して、ブロック線図分類メインルーチンを終了する。S30で否定判定がなされると処理はS40に進む。
S40で解析部20は、組合せ配列80から一つのブロック線図ペアを選択すると共に、選択したブロック線図ペアを組合せ配列80から削除する。S40で選択されるブロック線図ペアは、組合せ配列80のブロック線図ペアのうち何れでもよいが、本実施形態では先頭のブロック線図ペアが選択されるとする。S40で選択されたブロック線図ペアを、以下、対象ブロック線図ペアと呼ぶ。
S50で解析部20は、対象ブロック線図ペアが数式として非等価であると見做せるかの簡易判定を行う。簡易判定は、対象ブロック線図ペアが数式として等価であるかを判定する後述の詳細判定S80と、その詳細判定S80のための数式生成S70と、がコンピュータ処理負荷の大きいことを鑑みて設けられている。
詳しくは、数式生成S70及び詳細判定S80と比べて処理負荷が比較的小さいS50の簡易判定は、数式生成S70及び詳細判定S80を実施するまでもなく、数式として非等価と見做せるブロック線図ペアを篩にかけるために設けられている。換言すると、簡易判定は、数式生成S70及び詳細判定S80の実行回数を低減させることで、ブロック線図分類メインルーチン全体の処理負荷を低減するために設けられている。S60の簡易判定は、図7に示す簡易判定サブルーチンに従って行われる。
S110で解析部20は、S10でブロック線図ファイル40から抽出した信号型データ及び信号属性データに基づいて、対象ブロック線図ペアの各ブロック線図に含まれる所定の信号属性の信号数を信号型毎に特定する。S110で総数が特定される信号型毎の所定の信号属性の信号は、スカラー型の入力信号、行列型の入力信号、スカラー型の定数信号、行列型の定数信号、スカラー型の遅延信号、及び、行列型の遅延信号である。
例えば図8に示すように、第3ブロック線図43については、スカラー型の入力信号数が2、スカラー型の定数信号数が2、スカラー型の遅延信号数が0、行例型の信号数が0と特定される。また第4ブロック線図44については、スカラー型の入力信号数が2、スカラー型の定数信号数が1、スカラー型の遅延信号数が0、行例型の信号数が0と特定される。
図7の説明に戻る。S120で解析部20は、S110で特定した信号数に基づいて、比較基準のブロック線図と比較対象のブロック線図が数式として非等価と見做せるかを判定して、判定結果をメモリ等に記憶し、ブロック線図分類メインルーチンに戻る。
具体的には解析部20は、S110で特定した各信号型の所定の信号属性の信号数うち少なくとも何れかがブロック線図間で不一致であるか否かを判定する。即ち解析部20は、スカラー型の入力信号、行列型の入力信号、スカラー型の定数信号、行列型の定数信号、スカラー型の遅延信号、及び、行列型の遅延信号のうち少なくとも何れかがブロック線図間で不一致であるか否かを判定する。不一致の場合、解析部20は、比較基準のブロック線図と比較対象のブロック線図は数式として非等価と見做せると判定する。一方で、何れもが一致の場合、解析部20は、比較基準のブロック線図と比較対象のブロック線図が数式として非等価と見做せないと判定する。
図8の例では、第3ブロック線図43と第4ブロック線図44とでスカラー型の定数信号数が不一致であるので、解析部20は、第3ブロック線図43と第4ブロック線図44とは数式として非等価と見做すと判定する。
以上の簡易判定サブルーチンでは、S110で信号型毎に入力信号数、定数信号数、及び遅延信号数が特定されて、S120で各信号型の入力信号数、定数信号数、及び遅延信号数のうち少なくとも何れかがブロック線図間で不一致であるかが判定された。しかし、S110とS120とで信号型、即ち、スカラー型の信号であるか行列型の信号であるかを区別せずに、入力信号数、定数信号数、及び遅延信号数を特定して比較してもよい。また、S110とS120で、入力信号数、定数信号数、及び遅延信号数とを全て特定して比較するのでなく、入力信号数、定数信号数、及び遅延信号数のうち少なくとも一つの信号属性の信号数を、所定の信号属性の信号数として特定して比較する構成であってもよい。
このようなS110とS120で数が特定されて比較される信号の種別数を少なくした構成は、スカラー型及び行列型の各々について入力信号数、定数信号数、及び遅延信号数を特定して比較する構成と比べて、簡易判定サブルーチンの処理負荷を軽減できる。一方で、信号の種別数を少なくする構成では、数式生成S70及び詳細判定S80を実施するまでもなく数式として非等価であるブロック線図ペアを篩にかけるという簡易判定サブルーチンの機能が低減し得る。したがって、これらの点を考慮して、S110とS120で数を特定して比較する信号種別及び種別数を予め定めると好適である。
図4の説明に戻る。S60で解析部20は、S50の簡易判定において対象ブロック線図ペアが数式として非等価と見做せると判定されたか否かを判定する。S60で肯定判定がなされると処理はS30に戻り、S60で否定判定がなされると、処理はS70に進む。
S70で解析部20は、比較基準のブロック線図を表す数式と、比較対象のブロック線図を表す数式とを、S10でブロック線図ファイル40から抽出した信号型データと信号属性データと図側表記データに基づいて生成する。なお、S70では、ブロック線図ファイル40に示される各ブロック線図における信号名などの図側表記をそのまま数式における代数などの数式側表記に用いて数式が生成される。
例えば、図10に示すように、解析部20は、第1ブロック線図41での図側記号である入力信号x、入力信号y、定数信号A、出力信号out1を変更することなく用いて、第1ブロック線図41を表す数式out1=(x+y)*Aを生成する。同様に、第2ブロック線図42を表す数式を生成する際には、第2ブロック線図42での図側記号である入力信号y、入力信号z、定数信号A、出力信号out1を変更することなく用いて、第2ブロック線図42を表す数式out1=y*A+z*Aを生成する。
図4の説明に戻ると、S80で解析部20は、S70で生成された比較基準のブロック線図を表す数式と、比較対象のブロック線図を表す数式と、が等価であるか否かを判定する詳細判定を行う。S80の詳細判定は、図9に示す詳細判定サブルーチンに従って行われる。
図9に示すようにS210で解析部20は、S70で生成した比較基準の数式と比較対象の数式との差がゼロであるか否かを、数式処理システム16を用いて判定する。比較基準の数式と比較対象の数式との差がゼロであるかの判定は、これら数式が代数的に等価であるかを判定するために行っている。
例えば図10の例では、比較基準の数式と比較対象数式との差(x+y)*A−(y*A+z*A)=0であるか否かが判定され、差はx*A−z*Aでありゼロではないので非等価であると判定される。なお、数式処理システム16を用いて2つの数式が代数的に等価であるかを判定する方法は、上記例に限定されず、様々な方法が考えられる。例えば、一の数式を他の数式で除算した式を生成して、その式を簡約化すると1となるか否かに基づいて判定する方法もある。
図9に説明に戻り、S210で数式の差がゼロであると判定されると、S250に進み、解析部20は、対象ブロック線図ペアは数式として等価であると判定して、ブロック線図分類メインルーチンに戻る。S210で数式の差がゼロでないと判定されると、処理はS220に進む。
S220で解析部20は、S70で生成した比較基準の数式と比較対象の数式とにおいて同じ信号型及び同じ信号属性の信号を表わすが異なる表記となっている数式側記号を、ブロック線図ファイル40の信号型データ及び信号属性データ等を用いて特定する。そして解析部20は、特定した数式側記号について比較対象の数式での表記を比較基準の数式での表記に置き換える。
例えば図10の例では、比較基準の数式と比較対象の数式とにおいて同じ信号型及び同じ信号属性の信号を表すが異なる表記となっている数式側記号として、スカラー型の入力信号の表記x、yと、スカラー型の入力信号の表記y、zと、が特定される。そして、第2ブロック線図42から生成された数式におけるスカラー型の入力信号の表記y、zが、第1ブロック線図41から生成された数式におけるスカラー型の入力信号の表記x、yに置換される。その結果、置換後の比較対象の数式は、out1=x*A+y*Aとなる。
S230で解析部20は、S70で生成した比較基準の数式と、S220で置換した置換後の比較対象の数式との差がゼロであるか否かを判定する。この判定は、S210と同じく、これら数式が代数的に等価であるかを判定するために行っている。図10の例では、差はゼロと判定される。
S230で肯定判定されると、S250に進み、解析部20は、対象ブロック線図ペアは数式として等価であると判定して、ブロック線図分類メインルーチンに戻る。一方で、S230で否定判定されると、S240に進み、解析部20は、対象ブロック線図ペアは数式として非等価であると判定して、ブロック線図分類メインルーチンに戻る。
なお、S220において、同じ信号型及び同じ信号属性の信号を表すが異なる表記となっている数式側記号の数や、数式そのものの形によっては、比較対象の数式側記号について置き換え後の表記を一意に決定できない場合もある。この場合、S220で解析部20は、表記置き換え後の比較対象の数式を、あらゆる表記置き換えの組合せについて複数生成してもよい。S230で解析部20は、生成した表記置き換え後の比較対象の数式の各々について、S70で生成した比較基準の数式との差がゼロであるか判定してもよい。何れかの表記置き換え後の比較対象の数式について比較基準の数式との差がゼロである場合、S250に進み、何れの表記置き換え後の比較対象の数式についても比較基準の数式との差がゼロでない場合、S240に進む構成としてもよい。
以上のように詳細判定サブルーチンでは、比較基準の数式と比較対象の数式のゼロであるかの判定を、S210の表記置換前判定と、S220の及びS230の表記置換後判定と、の2段階で行っている。2段階で行う理由は次の通りである。
上記のように、ブロック線図の表現方法は多様であり、ブロック線図内の信号に、様々な信号属性及び信号型が指定される。また、上記のようにS220及びS230の処理はS210と比べて複雑である。そこで、信号型及び信号属性を区別しつつ各信号の表記を置き換えるまでもなく数式として等価であると判定できる数式をS210の置換前判定で篩にかけている。これにより、S210を行わずにS220及びS230を行う場合と比べて、ブロック線図分類メインルーチンの処理負荷を低減している。
図4のブロック線図分類メインルーチンの説明に戻る。
S90で解析部20は、S80の詳細判定において対象ブロック線図ペアが数式として等価であると判定されたか否かを判定する。S90で肯定判定、即ち等価であると判定されていた場合、処理はS100に進む。一方で、S90で否定判定、即ち非等価であると判定されていた場合、処理はS30に戻る。
S100で解析部20は、S80での詳細判定の結果に基づいて、分類テーブル70を更新する。具体的には、比較基準のブロック線図の属するグループ及び比較対象のブロック線図の属するグループとして、比較基準のブロック線図のIDを登録する。
S110で解析部20は、対象ブロック線図ペアの比較対象のブロック線図IDと同じブロック線図IDが比較基準となっている全てのブロック線図ペアを、組合せ配列80から削除する。言い換えると、解析部20は、[対象ブロック線図ペアでの比較対象ブロック線図のID、*]に該当するブロック線図ペアを全て組合せ配列80から削除する。例えば、S80で等価と判定された対象ブロック線図における比較対象のブロック線図IDがBであれば、比較基準のブロック線図IDがBとなっている全てのブロック線図ペアを組合せ配列80から削除する。S110の技術的意義は、後述する。
S110を完了すると処理はS30に戻り、組合せ配列80が空と判定されるまでS40〜S110の処理を繰り返す。S30で組合せ配列80が空と判定されると、処理はS120に進み、解析部20は、ブロック線図の分類結果を示す分類テーブル70(図3参照)を表示装置60に出力する共に記憶部30に保存して、ブロック線図分類メインルーチンを終了する。
ここで、S110での組合せ配列80の更新の技術的意義を、具体例を参照しつつ説明する。
S20で準備される組合せ配列80は、ブロック線図の個数をnとすると、n個のブロック線図から重複なく生成されたnC2組のブロック線図ペアを並べた2次元配列である。図6の例では、ブロック線図の個数が4であるので、4C2=6組のブロック線図ペアを並べた組合せ配列80がS20で準備される。
ブロック線図分類メインルーチンにおけるS40の初回実行時に、組合せ配列80の先頭のブロック線図ペアが対象ブロック線図として選択されると共に、この選択されたブロック線図ペアが組合せ配列80から削除される。この状態を例示したのが図11である。図11では、S20で準備された図6の組合せ配列80と比べて、比較基準のブロック線図IDがAであり且つ比較対象のブロック線図IDがBであるブロック線図ペアが削除されている。
この状態で、この対象ブロック線図ペアがS80で数式として等価であると判定されてS110に進むと、組合せ配列80から[B、*]に該当するブロック線図ペアが全て削除される。この状態を例示したのが図12である。
図11と図12との比較で分かるように、S110で組合せ配列80から削除されるブロック線図ペアは、S80での判定結果から同じ組み合わせと見做せる2つのブロック線図ペアの一方である。より具体的には、ID「A」のブロック線図とID「C」のブロック線図からなるブロック線図ペアは、ID「B」のブロック線図とID「C」のブロック線図からなるブロック線図ペアと、同じブロック線図の組み合わせと見做せることに基づいて、後者のブロック線図ペアが配列80から削除される。S110で組合せ配列80から削除されたブロック線図ペアは、続くS40で対象ブロック線図として選択されることはないので、このブロック線図ペアについて数式生成及び数式判別が行われることはない。
これは見方を変えると、S80で等価と判定された2つのブロック線図を同じブロック線図と見做したときに同じブロック線図の組み合わせとなる2つのブロック線図ブロックペアの一方を重複ブロック線図ペアと見做して、この重複ブロック線図ペアについて数式生成及び数式判別を省略していると言える。このように重複ブロック線図ペアについて数式判別等を省略すれば、同じ組み合わせと見做せる2つのブロック線図ペアの各々に対してS40〜S110の処理を重複して行うことを防止できるので、ブロック線図分類メインルーチン全体の処理負荷を低減できる。これが、S110の技術的意義である。
以上のブロック線図分類メインルーチンにおいて、S10が抽出部21に機能に相当する。S20が管理部22の機能に相当する。S50及びS60が簡易判定部26に機能に相当する。S70が数式生成部23の機能に相当する。S80及びS90が数式判別部24の機能に相当する。S100とS120が分類部25の機能に相当する。また、ブロック線図分類メインルーチンを実行する解析部20がブロック線図解析装置に相当する。
以上の説明で例示したブロック線図41、42、43、44には行列型の信号は含まれていなかった。しかしブロック線図に行列型の信号が含まれている場合でも、ブロック線図分類メインルーチンにより、ブロック線図を数式として等価ブロック線図に分類できる。なぜなら、上記したように、数式生成部23及び数式判別部24がスカラーと行列を区別して数式を生成及び処理可能だからである。
以上の実施形態では、数式生成部23は、抽出部21により抽出された複数のブロック線図の各々から、各ブロック線図を表す数式を生成する。数式判別部24は、数式生成部23により生成された複数の数式を比較することにより、複数の数式のうち等価な数式を判別する数式判別を行う。分類部25は、数式判別部24による数式判別の結果に基づいて、複数のブロック線図を、数式として等価なブロック線図群に分類する。
従って、要素及び要素間の接続関係等で表される表現方法が多様であり等価であっても表現方法が異なり得るブロック線図を、数式として等価なブロック線図群に分類できるので、開発工数低減や保守性向上が可能となる。
例えば、図13に示すように、比較例としての特許文献1の技術では、要素及び要素間の接続関係等で表される表現方法が異なる第1ブロック線図41及び第2ブロック線図42を、数式として等価なブロック線図群に分類できない。一方で、本実施形態では、第1ブロック線図41及び第2ブロック線図42を、数式として等価なブロック線図群に分類できる。
以上の説明で例示したブロック線図41、42、43、44には、図14に示すような遅延信号を生成するむだ時間要素を含む閉ループ90が含まれていなかった。しかし、むだ時間要素を含む閉ループ90がブロック線図に含まれている場合であっても、例えば、次のようにしてS70でブロック線図を表す数式を生成して、S80で詳細判定を行うことができる。
S70で解析部20は、むだ時間要素を含む閉ループ90がブロック線図に含まれているか否かを、ブロック線図ファイル40に格納されているブロック線図内の要素、要素間を結ぶ信号線、信号線を伝搬する信号を示すデータに基づいて検出して特定する。
解析部20は、特定した閉ループ90を、入力に対して遅延信号d(t)を乗算するサブシステムに置き換えて、この置き換え後のブロック線図を表す数式、即ち置き換え後のブロック線図の出力out1を表す数式を生成する。この数式を、遅延ループ隠蔽式と本明細書では呼ぶ。図14の例では、遅延ループ隠蔽式は、Out1=(x+y)*A*d(t)となる。
さらに解析部20は、特定した閉ループ90からなるサブシステムから、このサブシステムの出力である遅延信号を表す数式を生成する。この数式を、本明細書では遅延ループ表現式と呼ぶ。図14の例では、遅延ループ表現式は、d(t)=d(t−L)+d(t−2L)*Bとなる。Lは、むだ時間要素により遅延される遅延時間を表す。
解析部20は、遅延ループ表現式と遅延ループ隠蔽式とで形成される連立式を、むだ時間要素を含む閉ループ90を含むブロック線図を表す数式とする。
S80における詳細判定では、解析部20は、遅延ループ表現式と遅延ループ隠蔽式との両方が対象ブロック線図ペア間で等価である場合に、対象ブロック線図ペアは数式として等価であると判定する。一方で、遅延ループ表現式と遅延ループ隠蔽式との少なくとも一方が対象ブロック線図ペア間で非等価である場合、対象ブロック線図ペアは数式として非等価であると判定する。
むだ時間要素を含む閉ループ90がブロック線図に含まれている場合、以上のようにして解析部20は、S70でブロック線図を表す数式を生成して、S80で詳細判定を行うことができる。
以上、一実施形態について説明したが、この明細書に開示される技術的思想は、この実施形態になんら制限されることなく、種々な実施形態として具現化できる。
例えば、実施形態では、ブロック線図は、システムモデリングツール15の一例であるMATLAB/Simulinkを用いて生成されたものであった。しかし、ブロック線図は、他のシステムモデリングツール15で生成されたものでもよい。例えば、Scilab/Scicosnで生成されたブロック線図であってもよい。
また実施形態では、数式処理システム16として、Maximaを例示したが、他の数式処理システム16を利用してもよい。例えば、MATLABのToolBoxにあるSymbolic Math Toolboxを利用してもよい。
また実施形態では、コンピュータ10の機能が、プロセッサ11がブロック線図分類プログラム17を実行することで具現化される例を示した。しかし、このコンピュータ10の機能の少なくとも一部は、IC等などの専用回路によって具現化されてもよい。また、コンピュータ10の機能は、ネットワーク上のサーバや分散システム等として具現化されてもよい。
1:コンピュータシステム、10:コンピュータ、20:解析部(解析装置)、21:抽出部、22:管理部、23:数式生成部、24:数式判別部、25:分類部、26:簡易判定部、30:記憶部、40:ブロック線図ファイル、41:第1ブロック線図(ブロック線図)、42:第2ブロック線図(ブロック線図)、43:第3ブロック線図(ブロック線図)、44:第4ブロック線図(ブロック線図)、50:入力装置、60:表示装置、80:組合せ配列、90:閉ループ
Claims (7)
- ブロック線図ファイル(40)から解析対象の複数のブロック線図(41、42、43、44)を抽出する抽出部(21)と、
前記抽出部により抽出された複数の前記ブロック線図の各々から、各ブロック線図を表す数式を生成する数式生成を行う数式生成部(23)と、
前記数式生成部により生成された複数の前記数式を比較することにより、複数の前記数式のうち等価な数式を判別する数式判別を行う数式判別部(24)と、
前記数式判別部による前記数式判別の結果に基づいて、複数の前記ブロック線図を、数式として等価なブロック線図群に分類する分類部(25)と、
を備えるブロック線図解析装置。 - 前記解析対象の各ブロック線図に含まれる所定の信号属性の信号数を特定して、特定した前記所定の信号属性の信号数が異なるブロック線図を数式として非等価であるブロック線図と見做す簡易判定を、前記数式生成部による前記数式生成の実行前であり且つ前記数式判別部による前記数式判別の実行前に行う簡易判定部(26)をさらに備える請求項1に記載のブロック線図解析装置。
- 前記ブロック線図ファイルは、各ブロック線図の各信号についてスカラーであるか行列であるかの信号型を示す信号型データと、各信号について入力信号であるか定数信号であるか遅延信号であるかの信号属性を示す信号属性データと、が格納されているものであり、
前記抽出部は、前記ブロック線図ファイルから前記ブロック線図を抽出する際に、前記信号型データと前記信号属性データとを前記ブロック線図ファイルから抽出するものであり、
前記簡易判定部は、前記信号型データと前記信号属性データとに基づいて、各ブロック線図に含まれる信号型毎の前記入力信号の総数、信号型毎の前記定数信号の総数、信号型毎の前記遅延信号の総数を、各ブロック線図に含まれる前記所定の信号属性の信号数として特定して、特定した前記信号型毎の前記入力信号の総数、前信号型毎の前記遅延信号の総数、及び前記信号型毎の前記定数信号の総数のうち少なくとも何れかが一の前記ブロック線図と他の前記ブロック線図との間で一致しない場合、一の前記ブロック線図と他の前記ブロック線図とは数式として非等価であると見做す、請求項2に記載のブロック線図解析装置。 - 前記ブロック線図ファイルは、各ブロック線図での各信号の表記である図側記号を示す図側表記データと、各ブロック線図の各信号についてスカラーであるか行列であるかの信号型を示す信号型データと、各信号について入力信号であるか遅延信号であるか定数信号であるかの信号属性を示す信号属性データと、が格納されているものであり、
前記抽出部は、前記ブロック線図ファイルから前記ブロック線図を抽出する際に、前記図側表記データと前記信号型データと前記信号属性データとを前記ブロック線図ファイルから抽出し、
前記数式生成部は、各ブロック線図を表す前記数式を生成する際に、前記図側記号を、数式における代数の表記である数式側記号として用いて前記数式を生成するものであり、
前記数式判別部は、一の前記ブロック線図を表す一の前記数式と他の前記ブロック線図を表す他の前記数式とが等価であるか否かを判定する前記数式判別を、置換前判定(S210)と、置換後判定(S220、S230)と、の2段階で行うものであり、
前記置換前判定は、前記数式生成部により生成された一の前記数式と他の前記数式とが等価であるかを判定し、
前記置換後判定は、前記置換前判定により一の前記数式が他の前記数式と非等価であると判定された場合に実行されるものであって、前記信号型データと前記信号属性データとに基づいて、一の前記数式と他の前記数式とにおいて同じ信号型及び同じ信号属性の信号を表すが異なる表記となっている前記数式側記号を特定して、特定した前記数式側記号について一の前記数式での表記を他の前記数式での表記に置き換えて、前記表記を置き換えた後の一の前記数式が他の前記数式と等価であるか否かを判定する、請求項1ないし3何れか一項に記載のブロック線図解析装置。 - 前記数式生成部は、むだ時間要素を含む閉ループ(90)が前記ブロック線図に含まれている場合、前記閉ループを、入力に対して遅延信号d(t)を乗算して出力するサブシステムに置き換えて、置き換え後の前記ブロック線図から、当該置き換え後のブロック線図を表す数式である遅延ループ隠蔽式を生成する共に、前記サブシステムを表す数式である遅延ループ表現式を生成して、前記遅延ループ隠蔽式と前記遅延ループ表現式との連立式を、置き換え前の前記ブロック線図を表す数式とするものであり、
前記数式判別において前記数式判別部は、前記遅延ループ表現式及び前記遅延ループ隠蔽式の両方が一の前記ブロック線図と他の前記ブロック線図との間で等価である場合、一の前記ブロック線図と他の前記ブロック線図とは数式として等価であると判定し、前記遅延ループ表現式及び前記遅延ループ隠蔽式の少なくとも一方が非等価である場合、一の前記ブロック線図と他の前記ブロック線図とは数式として非等価であると判定する、請求項1ないし4何れか一項に記載のブロック線図解析装置。 - 前記抽出部により抽出された複数の前記ブロック線図の数をnとすると、n個の前記ブロック線図から、2つのブロック線図の組み合わせであるブロック線図ペアを重複なくnC2組生成して、前記nC2組のブロック線図ペアを備える組合せ配列(80)を準備する管理部(22)をさらに備え、
前記数式判別部は、前記組合せ配列から順次選択されたブロック線図ペア単位で前記数式判別を、前記ブロック線図ペアから未選択のブロック線図ペアが無くなるまで行うものであって、
前記ブロック線図ペア単位での前記数式判別において一のブロック線図と他のブロック線図が数式として等価であると判定した場合、前記組合せ配列における未選択のブロック線図ペアのうち、当該一のブロック線図を当該他のブロック線図と同じと見做したときに同じブロック線図の組み合わせとなる2つのブロック線図ブロックペアの一方を重複ブロック線図ペアと見做して、当該重複ブロック線図ペアについて前記数式判別を省略する、請求項1ないし5何れか一項に記載のブロック線図解析装置。 - コンピュータを、請求項1ないし6何れか一項に記載のブロック線図解析装置として機能させるためのブロック線図分類プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018028804A JP2019144873A (ja) | 2018-02-21 | 2018-02-21 | ブロック線図解析装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018028804A JP2019144873A (ja) | 2018-02-21 | 2018-02-21 | ブロック線図解析装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2019144873A true JP2019144873A (ja) | 2019-08-29 |
Family
ID=67772416
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018028804A Pending JP2019144873A (ja) | 2018-02-21 | 2018-02-21 | ブロック線図解析装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2019144873A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021025107A1 (ja) | 2019-08-06 | 2021-02-11 | セントラル硝子株式会社 | ジフルオロリン酸リチウムの製造方法、ジフルオロリン酸エステルの製造方法、ジフルオロリン酸リチウム、非水電解液の製造方法、及び非水二次電池の製造方法 |
-
2018
- 2018-02-21 JP JP2018028804A patent/JP2019144873A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021025107A1 (ja) | 2019-08-06 | 2021-02-11 | セントラル硝子株式会社 | ジフルオロリン酸リチウムの製造方法、ジフルオロリン酸エステルの製造方法、ジフルオロリン酸リチウム、非水電解液の製造方法、及び非水二次電池の製造方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11734315B2 (en) | Method and system for implementing efficient classification and exploration of data | |
AU2018272840B2 (en) | Automated dependency analyzer for heterogeneously programmed data processing system | |
Sambasivan et al. | Principled workflow-centric tracing of distributed systems | |
WO2019129060A1 (zh) | 自动生成机器学习样本的特征的方法及系统 | |
CN108595341B (zh) | 测试用例自动生成方法及系统 | |
US8997065B2 (en) | Automatic modularization of source code | |
CN110741354B (zh) | 呈现代码实体调用之间的差异 | |
EP3198478A1 (en) | Method and system for implementing efficient classification and exploration of data | |
CN108491228A (zh) | 一种二进制漏洞代码克隆检测方法及系统 | |
Bánáti et al. | Four level provenance support to achieve portable reproducibility of scientific workflows | |
CN116560984A (zh) | 一种基于调用依赖图的测试用例聚类分组方法 | |
CN112732242B (zh) | 宽表加工脚本的生成方法及装置 | |
Cheng et al. | Optimal alignments between large event logs and process models over distributed systems: An approach based on Petri nets | |
JP2019144873A (ja) | ブロック線図解析装置 | |
Vázquez-Barreiros et al. | Enhancing discovered processes with duplicate tasks | |
JP6870454B2 (ja) | 分析装置、分析プログラム及び分析方法 | |
CN115185830A (zh) | 基于测试单元的用例生成方法、装置、设备及存储介质 | |
CN114461390A (zh) | 结合多维度分析和关键路径法的评估方法及相关装置 | |
CN109901983B (zh) | 自动化测试方法及装置、存储介质、电子设备 | |
JP2008217443A (ja) | ビジネスプロセスシミュレータ及びビジネスプロセスシミュレーションプログラム | |
US9818078B1 (en) | Converting a non-workflow program to a workflow program using workflow inferencing | |
CN118132448B (zh) | 测试用例处理方法、装置、计算机设备和存储介质 | |
Aziz | Distributed Model Checking Using Hadoop | |
WO2024156113A1 (en) | Runtime error attribution for database queries specified using a declarative database query language | |
CN117370160A (zh) | 代码审核方法、装置、计算机设备、存储介质和程序产品 |