JP2013225251A - 情報処理装置及び情報処理方法及びプログラム - Google Patents
情報処理装置及び情報処理方法及びプログラム Download PDFInfo
- Publication number
- JP2013225251A JP2013225251A JP2012097825A JP2012097825A JP2013225251A JP 2013225251 A JP2013225251 A JP 2013225251A JP 2012097825 A JP2012097825 A JP 2012097825A JP 2012097825 A JP2012097825 A JP 2012097825A JP 2013225251 A JP2013225251 A JP 2013225251A
- Authority
- JP
- Japan
- Prior art keywords
- input
- information
- control program
- output
- variable
- 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)
- Programmable Controllers (AREA)
Abstract
【課題】制御プログラムで定義されている制御アルゴリズムと、制御システムに含まれる入出力機器との関係を、理解しやすい形式で可視化できるようにする。
【解決手段】デバイスグループ抽出部123及び連携デバイス抽出部124が、制御プログラムに記述されている各信号入出力用変数が、いずれの入出力機器と信号を入出力するための変数であるかを特定する。このため、グラフ生成部112が、ノードが変数を表し、有向エッジが変数間の依存関係を表し、制御プログラムで定義されている制御アルゴリズムをノードと有向エッジとの接続で表すとともに、各信号入出力用変数のノードを入出力機器と関連付けて表す表示情報を生成することができる。この結果、制御プログラムで定義されている制御アルゴリズムと、制御システムに含まれる入出力機器との関係を、理解しやすい形式で可視化することができる。
【選択図】図1
【解決手段】デバイスグループ抽出部123及び連携デバイス抽出部124が、制御プログラムに記述されている各信号入出力用変数が、いずれの入出力機器と信号を入出力するための変数であるかを特定する。このため、グラフ生成部112が、ノードが変数を表し、有向エッジが変数間の依存関係を表し、制御プログラムで定義されている制御アルゴリズムをノードと有向エッジとの接続で表すとともに、各信号入出力用変数のノードを入出力機器と関連付けて表す表示情報を生成することができる。この結果、制御プログラムで定義されている制御アルゴリズムと、制御システムに含まれる入出力機器との関係を、理解しやすい形式で可視化することができる。
【選択図】図1
Description
本発明は、制御プログラムのデバッグ作業を容易化させる技術に関する。
≪対象とする領域について≫
今日、FA(ファクトリーオートメーション)システムやPA(プロセスオートメーション)システムにはシーケンス制御を行う機器としてプログラミング可能なCPU機器――プログラマブルコントローラ(PLC、シーケンサ機器)が用いられている。
FAシステムの制御プログラマ(システムインテグレータや、FAシステムを構成するコンポーネントの装置メーカなど)は、パソコンで動作するFA専用のエンジニアリング環境ソフトウェア上にてシーケンサ機器用の制御プログラムを作成(クロス開発)するのが一般的である。
エンジニアリング環境ソフトウェアは、プログラマが作成した制御プログラムを、シーケンサ機器内で解釈可能な中間言語プログラムにコンパイルし、シーケンサ機器へダウンロードする。
中間言語プログラムがダウンロードされたシーケンサ機器は、その制御プログラムに従って、様々な入出力ユニットやネットワークを介してセンサやモータを制御して、FA・PAシステムを動作させる。
FA・PAシステム用の制御プログラムが通常の組込みシステムと異なる点は、プログラミングを行うのがシーケンサ機器のメーカではなく一般エンドユーザであることと、制御プログラムの制御対象(変数,デバイス)がユーザのFAシステム内の比較的マクロな要素であること、つまり制御対象にはシステム全体の中で意味のある単位となりうること、が挙げられる。
この意味のあるデバイスの単位は、ラベルやシステムラベルと呼ばれることもある。
今日、FA(ファクトリーオートメーション)システムやPA(プロセスオートメーション)システムにはシーケンス制御を行う機器としてプログラミング可能なCPU機器――プログラマブルコントローラ(PLC、シーケンサ機器)が用いられている。
FAシステムの制御プログラマ(システムインテグレータや、FAシステムを構成するコンポーネントの装置メーカなど)は、パソコンで動作するFA専用のエンジニアリング環境ソフトウェア上にてシーケンサ機器用の制御プログラムを作成(クロス開発)するのが一般的である。
エンジニアリング環境ソフトウェアは、プログラマが作成した制御プログラムを、シーケンサ機器内で解釈可能な中間言語プログラムにコンパイルし、シーケンサ機器へダウンロードする。
中間言語プログラムがダウンロードされたシーケンサ機器は、その制御プログラムに従って、様々な入出力ユニットやネットワークを介してセンサやモータを制御して、FA・PAシステムを動作させる。
FA・PAシステム用の制御プログラムが通常の組込みシステムと異なる点は、プログラミングを行うのがシーケンサ機器のメーカではなく一般エンドユーザであることと、制御プログラムの制御対象(変数,デバイス)がユーザのFAシステム内の比較的マクロな要素であること、つまり制御対象にはシステム全体の中で意味のある単位となりうること、が挙げられる。
この意味のあるデバイスの単位は、ラベルやシステムラベルと呼ばれることもある。
≪制御プログラムの運用について≫
プログラマが作成する制御プログラムは、国際規格IEC61131−3で定義された5言語、インストラクションリスト(IL),ラダー(LD),ストラクチャードテキスト(ST),ファンクションブロックダイアグラム(FBD),シーケンシャルファンクションチャート(SFC)などで記述されることが多い。
またCやC++などの汎用プログラミング言語で記述されることもある。
FA・PAシステムは組み込みシステムであり、通常、制御対象は物理的な機械である。
このため机上で制御プログラムをデバッグするだけでなく、プログラム作成の最終段階、あるいは工場等においてラインを立ち上げる段階において、制御プログラムと制御対象である実機システムとを組み合わせて、動作タイミング等の確認や微調整を行う必要がある。
また、FA・PAシステムはその性質上、数十年にわたって稼動するものも珍しくない。
しかしその長期間にわたって制御プログラムが変更されないわけではない。
例えば工場の製造ラインなどの場合は、製造する製品の仕様などの変化に伴って、制御プログラムに少しずつ修正が加えられることがある。
これらの修正過程では、ラインの運用中にシーケンサ機器へエンジニアリング端末を接続して、その場で変更などを行うことも多い。
この調整や変更は、ラダー(LD)やインストラクションリスト(IL)という、中間言語とほぼ一対一に対応した、機械語レベルの低級言語により行われることがある。
なぜならば、この作業を行うのは制御プログラマ(装置メーカ)ではなく、機械や製造ラインの専門家(エンドユーザ)であることが多く一般的に高級言語に不慣れなことや、微調整や少しの修正のために上流の設計(高級言語)を変更するのは時間がかかることを理由に、この手順が省略されるためである。
このため、計画的なバックアップ作業を行っていない限り、稼働中の実機システムを動作させている制御プログラムと整合性の取れている「マスタプログラム」が事務所などに保管されていないことがある。
そもそも、稼働中の実機システムのシーケンサ機器内に格納されている中間言語プログラムを「マスタプログラム」と考えているユーザも少なくない。
したがって、FA・PAシステムにおいて、特に保守時に対象とする制御プログラムは、ILやLDなどの機械語レベルの言語で記述されたものを前提として考える必要がある。
プログラマが作成する制御プログラムは、国際規格IEC61131−3で定義された5言語、インストラクションリスト(IL),ラダー(LD),ストラクチャードテキスト(ST),ファンクションブロックダイアグラム(FBD),シーケンシャルファンクションチャート(SFC)などで記述されることが多い。
またCやC++などの汎用プログラミング言語で記述されることもある。
FA・PAシステムは組み込みシステムであり、通常、制御対象は物理的な機械である。
このため机上で制御プログラムをデバッグするだけでなく、プログラム作成の最終段階、あるいは工場等においてラインを立ち上げる段階において、制御プログラムと制御対象である実機システムとを組み合わせて、動作タイミング等の確認や微調整を行う必要がある。
また、FA・PAシステムはその性質上、数十年にわたって稼動するものも珍しくない。
しかしその長期間にわたって制御プログラムが変更されないわけではない。
例えば工場の製造ラインなどの場合は、製造する製品の仕様などの変化に伴って、制御プログラムに少しずつ修正が加えられることがある。
これらの修正過程では、ラインの運用中にシーケンサ機器へエンジニアリング端末を接続して、その場で変更などを行うことも多い。
この調整や変更は、ラダー(LD)やインストラクションリスト(IL)という、中間言語とほぼ一対一に対応した、機械語レベルの低級言語により行われることがある。
なぜならば、この作業を行うのは制御プログラマ(装置メーカ)ではなく、機械や製造ラインの専門家(エンドユーザ)であることが多く一般的に高級言語に不慣れなことや、微調整や少しの修正のために上流の設計(高級言語)を変更するのは時間がかかることを理由に、この手順が省略されるためである。
このため、計画的なバックアップ作業を行っていない限り、稼働中の実機システムを動作させている制御プログラムと整合性の取れている「マスタプログラム」が事務所などに保管されていないことがある。
そもそも、稼働中の実機システムのシーケンサ機器内に格納されている中間言語プログラムを「マスタプログラム」と考えているユーザも少なくない。
したがって、FA・PAシステムにおいて、特に保守時に対象とする制御プログラムは、ILやLDなどの機械語レベルの言語で記述されたものを前提として考える必要がある。
≪デバッグ・保守作業の困難性について≫
FA・PAシステムでは「制御プログラム設計段階における構造化支援」と「制御プログラム試験段階におけるデバッグ効率の向上」と「実機システム運用段階における障害発生時の早急な復旧」が大きな課題となっている。
IEC61131−3でも定義されているファンクションブロック(FB)などを用い、制御プログラムの標準化と構造化を支援しているエンジニアリング環境も数多くあるが、FBを有効に使用できているユーザ(特にエンドユーザ)は多くはないのが実情である。
FBなどを用いた構造化プログラミングを阻害しているのは、制御プログラムのどの部分を切り出して構造化し、再利用可能なプログラム部品として定義すべきかを、プログラミング前にあらかじめ設計しにくいことが原因の一つと考えられる。
実機システムの運用中に発生する、工場の製造ラインを停止してしまうような障害については、復旧に費やされる時間がそのままラインの停止時間になり、エンドユーザの損失に直結するために、早急な復旧が必要である。
障害の原因究明に費やされる時間を短縮するため、可読性の高い制御プログラムが必要である。
しかしFA・PAシステムの制御プログラムをLDやILにて作成する場合、何千何万行となる「巻物」プログラムを記述することになる。
LDやILで記述されたプログラムは構造を持っておらず、これらは言語仕様上コメント等が入れにくいことなどもあり、他人が見たときに分かりづらいプログラムとなりがちである。
LDやILで記述されたプログラムを短時間で正しく解釈するためには、LDやIL言語、制御プログラムに熟練している必要がある。
例えば実機システムの保守時に障害が顕在化したデバイスに注目し、制御プログラムに対して、このデバイスがコイル(出力)となっているラング(LD言語の回路ブロック)を検索し、そのラングで条件として使用されている接点(入力条件)のデバイス(通常は複数)を特定し、それがコイルとなっているラングを検索し...と順を追って検索を行うことで、障害が顕在化したデバイスに影響を与えているデバイスおよび処理を網羅してチェックすることが可能となる。
しかしながら、この方法では、コイル→接点と遡るたびに、探索木の分岐が行われるため、ユーザが途中の状態を記憶しておく必要がある。
また接点とコイルが循環していないか(探索木に繰返しが存在しないか)を随時チェックする必要がある。
なお、制御プログラマは通常、コイルに登場するデバイスを基準に処理を記述する。
つまり、2重コイル(プログラム中の複数個所で同一コイル出力が登場すること)は好まれないことが多い。
しかし、ラダー言語の接点−コイルの関係には、接点デバイスの条件によってコイルに書かれたデバイスのON/OFFが同時に定義されており、C言語などの汎用プログラミング言語に慣れているユーザにとっては分かりづらいところがある。
このため、SET命令やRESET命令によって明示的にデバイスのON/OFFを記すプログラマも増えてきている。
つまり、この場合は、コイル→接点デバイス検索における毎回の分岐の幅が増えることになり、ユーザに対して更なる負担を強いることになる。
FA・PAシステムでは「制御プログラム設計段階における構造化支援」と「制御プログラム試験段階におけるデバッグ効率の向上」と「実機システム運用段階における障害発生時の早急な復旧」が大きな課題となっている。
IEC61131−3でも定義されているファンクションブロック(FB)などを用い、制御プログラムの標準化と構造化を支援しているエンジニアリング環境も数多くあるが、FBを有効に使用できているユーザ(特にエンドユーザ)は多くはないのが実情である。
FBなどを用いた構造化プログラミングを阻害しているのは、制御プログラムのどの部分を切り出して構造化し、再利用可能なプログラム部品として定義すべきかを、プログラミング前にあらかじめ設計しにくいことが原因の一つと考えられる。
実機システムの運用中に発生する、工場の製造ラインを停止してしまうような障害については、復旧に費やされる時間がそのままラインの停止時間になり、エンドユーザの損失に直結するために、早急な復旧が必要である。
障害の原因究明に費やされる時間を短縮するため、可読性の高い制御プログラムが必要である。
しかしFA・PAシステムの制御プログラムをLDやILにて作成する場合、何千何万行となる「巻物」プログラムを記述することになる。
LDやILで記述されたプログラムは構造を持っておらず、これらは言語仕様上コメント等が入れにくいことなどもあり、他人が見たときに分かりづらいプログラムとなりがちである。
LDやILで記述されたプログラムを短時間で正しく解釈するためには、LDやIL言語、制御プログラムに熟練している必要がある。
例えば実機システムの保守時に障害が顕在化したデバイスに注目し、制御プログラムに対して、このデバイスがコイル(出力)となっているラング(LD言語の回路ブロック)を検索し、そのラングで条件として使用されている接点(入力条件)のデバイス(通常は複数)を特定し、それがコイルとなっているラングを検索し...と順を追って検索を行うことで、障害が顕在化したデバイスに影響を与えているデバイスおよび処理を網羅してチェックすることが可能となる。
しかしながら、この方法では、コイル→接点と遡るたびに、探索木の分岐が行われるため、ユーザが途中の状態を記憶しておく必要がある。
また接点とコイルが循環していないか(探索木に繰返しが存在しないか)を随時チェックする必要がある。
なお、制御プログラマは通常、コイルに登場するデバイスを基準に処理を記述する。
つまり、2重コイル(プログラム中の複数個所で同一コイル出力が登場すること)は好まれないことが多い。
しかし、ラダー言語の接点−コイルの関係には、接点デバイスの条件によってコイルに書かれたデバイスのON/OFFが同時に定義されており、C言語などの汎用プログラミング言語に慣れているユーザにとっては分かりづらいところがある。
このため、SET命令やRESET命令によって明示的にデバイスのON/OFFを記すプログラマも増えてきている。
つまり、この場合は、コイル→接点デバイス検索における毎回の分岐の幅が増えることになり、ユーザに対して更なる負担を強いることになる。
≪先行技術について≫
特許文献1では、複数プログラム間の信号について、同一性を判断して制御プログラム間の関連を図示する技術について開示している。
特許文献1によれば、デバイス(機器)のそれぞれから取得された入力メモリおよび出力メモリの内容に基づいて、異なる機器間で同一の信号に相当する一対の入力信号と出力信号とをそれぞれの信号に付されたデバイス情報に基づいて抽出し、それら一対の入力信号と出力信号との間に紐付け処理を行ない、各デバイスのそれぞれから取得された入力メモリ、出力メモリ、プログラムメモリの内容、及び紐付け結果に基づいて、所定の表示装置の画面上のロジックシンボル図中に、同一の信号に相当する一対の入力信号と出力信号については、例えば一本の線で結んだ状態で一連に表示するとしている。
特許文献1では、複数プログラム間の信号について、同一性を判断して制御プログラム間の関連を図示する技術について開示している。
特許文献1によれば、デバイス(機器)のそれぞれから取得された入力メモリおよび出力メモリの内容に基づいて、異なる機器間で同一の信号に相当する一対の入力信号と出力信号とをそれぞれの信号に付されたデバイス情報に基づいて抽出し、それら一対の入力信号と出力信号との間に紐付け処理を行ない、各デバイスのそれぞれから取得された入力メモリ、出力メモリ、プログラムメモリの内容、及び紐付け結果に基づいて、所定の表示装置の画面上のロジックシンボル図中に、同一の信号に相当する一対の入力信号と出力信号については、例えば一本の線で結んだ状態で一連に表示するとしている。
規模の大きな制御システムにおいては、1つの制御プログラムが制御システム全体を制御しているとは限らず、複数の制御プログラムが連携して制御システムを構成していることもある。
たとえば入力ボタンAが、あるCPU(Central Processing Unit)内の制御プログラムαの入力デバイスとして定義されており、そのボタンAを押下することで、ボタンAの信号がネットワークを介して別のCPU内の制御プログラムβに伝送され、そこのCPU内の制御プログラムβの出力デバイスとして、ランプBが点灯する場合などである。
このような場合に、ボタンAデバイスとランプBデバイスの関連が図示されることが望ましい。
このような図示により、制御プログラムの構造化やデバッグ・保守作業の対象が一つの制御プログラムのスコープ内に限定されてしまうことを回避できると考えられる。
たとえば入力ボタンAが、あるCPU(Central Processing Unit)内の制御プログラムαの入力デバイスとして定義されており、そのボタンAを押下することで、ボタンAの信号がネットワークを介して別のCPU内の制御プログラムβに伝送され、そこのCPU内の制御プログラムβの出力デバイスとして、ランプBが点灯する場合などである。
このような場合に、ボタンAデバイスとランプBデバイスの関連が図示されることが望ましい。
このような図示により、制御プログラムの構造化やデバッグ・保守作業の対象が一つの制御プログラムのスコープ内に限定されてしまうことを回避できると考えられる。
この点に関連して、特許文献1では、複数プログラム間の信号について、同一性を判断して制御プログラム間の関連を図示する技術について開示している。
すなわち、制御プログラムαの出力メモリ情報に含まれる全デバイス情報と、制御プログラムβの入力メモリ情報に含まれるデバイス情報の対応付けをチェックし、また逆方向の、制御プログラムαの入力メモリ情報に含まれる全デバイス情報と、制御プログラムβの出力メモリ情報に含まれるデバイス情報の対応付けをチェックすることで、制御プログラムαと制御プログラムβ間で対になる信号の紐付けを行っている。
すなわち、制御プログラムαの出力メモリ情報に含まれる全デバイス情報と、制御プログラムβの入力メモリ情報に含まれるデバイス情報の対応付けをチェックし、また逆方向の、制御プログラムαの入力メモリ情報に含まれる全デバイス情報と、制御プログラムβの出力メモリ情報に含まれるデバイス情報の対応付けをチェックすることで、制御プログラムαと制御プログラムβ間で対になる信号の紐付けを行っている。
特許文献1では、入力/出力メモリ情報内にデバイス情報を持つ、制御プログラムの信号同士の紐付けを行うことについて開示されているが、例えば1つの制御プログラムと、ネットワークで接続された入出力機器間の信号について、同一性を判断して紐付けし、それを図示する方法については開示されていない。
また特許文献1の方式では、制御プログラムの入/出力メモリ情報に含まれる全てのデバイス情報についてチェックを行う必要があるが、実際に複数プログラム間でやりとりされる信号はその一部であるため、この紐付け処理には余計な時間がかかるという課題がある。
本発明は、これらの課題を解決することを主な目的としており、制御プログラムで定義されている制御アルゴリズムと、制御システムに含まれる入出力機器との関係を、理解しやすい形式で可視化できるようにすることを主な目的とする。
本発明に係る情報処理装置は、
制御システムに含まれるシーケンサCPU(Central Processing Unit)により実行される制御プログラムであって、前記シーケンサCPUが前記制御システムに含まれる中継装置を介して前記制御システムに含まれる入出力機器と信号を入出力するための1つ以上の信号入出力用変数を含む、複数の変数の記述と、変数間の依存関係の記述とにより制御アルゴリズムが定義されている制御プログラムを入力する制御プログラム入力部と、
前記制御システムに含まれる入出力機器ごとに、入出力機器で用いられる変数の範囲が入出力機器変数範囲として定義されている入出力機器変数範囲情報と、前記制御システムに含まれる中継装置ごとに、中継装置で用いられる変数の範囲が中継装置変数範囲として定義されている中継装置変数範囲情報とを入力する情報入力部と、
各入出力機器変数範囲情報の入出力機器変数範囲と、各中継装置変数範囲情報の中継装置変数範囲と、前記制御プログラムに記述されている各信号入出力用変数とを用いた解析を行い、前記制御プログラムに記述されている各信号入出力用変数が、いずれの入出力機器と信号を入出力するための変数であるかを特定する解析処理部と、
前記制御プログラムの複数の変数の記述と変数間の依存関係の記述とに基づき、ノードが変数を表し、有向エッジが変数間の依存関係を表し、前記制御プログラムで定義されている制御アルゴリズムをノードと有向エッジとの接続で表し、各信号入出力用変数のノードを前記解析処理部により特定された入出力機器と関連付けて表す表示情報を生成する表示情報生成部とを有することを特徴とする。
制御システムに含まれるシーケンサCPU(Central Processing Unit)により実行される制御プログラムであって、前記シーケンサCPUが前記制御システムに含まれる中継装置を介して前記制御システムに含まれる入出力機器と信号を入出力するための1つ以上の信号入出力用変数を含む、複数の変数の記述と、変数間の依存関係の記述とにより制御アルゴリズムが定義されている制御プログラムを入力する制御プログラム入力部と、
前記制御システムに含まれる入出力機器ごとに、入出力機器で用いられる変数の範囲が入出力機器変数範囲として定義されている入出力機器変数範囲情報と、前記制御システムに含まれる中継装置ごとに、中継装置で用いられる変数の範囲が中継装置変数範囲として定義されている中継装置変数範囲情報とを入力する情報入力部と、
各入出力機器変数範囲情報の入出力機器変数範囲と、各中継装置変数範囲情報の中継装置変数範囲と、前記制御プログラムに記述されている各信号入出力用変数とを用いた解析を行い、前記制御プログラムに記述されている各信号入出力用変数が、いずれの入出力機器と信号を入出力するための変数であるかを特定する解析処理部と、
前記制御プログラムの複数の変数の記述と変数間の依存関係の記述とに基づき、ノードが変数を表し、有向エッジが変数間の依存関係を表し、前記制御プログラムで定義されている制御アルゴリズムをノードと有向エッジとの接続で表し、各信号入出力用変数のノードを前記解析処理部により特定された入出力機器と関連付けて表す表示情報を生成する表示情報生成部とを有することを特徴とする。
本発明では、ノードが変数を表し、有向エッジが変数間の依存関係を表し、制御プログラムで定義されている制御アルゴリズムをノードと有向エッジとの接続で表すとともに、各信号入出力用変数のノードを入出力機器と関連付けて表す表示情報を生成する。
このため、制御プログラムで定義されている制御アルゴリズムと、制御システムに含まれる入出力機器との関係を、理解しやすい形式で可視化することができる。
このため、制御プログラムで定義されている制御アルゴリズムと、制御システムに含まれる入出力機器との関係を、理解しやすい形式で可視化することができる。
実施の形態1.
≪概要≫
まず、本実施の形態に係る情報処理装置の動作の概要を説明し、その後、構成例及び動作手順の詳細を説明する。
≪概要≫
まず、本実施の形態に係る情報処理装置の動作の概要を説明し、その後、構成例及び動作手順の詳細を説明する。
本実施の形態では、ネットワークやバスなどで接続された、複数の制御プログラムや入出力信号を持つ機器間の連携動作を容易に確認するため、対象とする制御システム全体の制御ロジックを1つの画面に表示する情報処理装置を説明する。
本実施の形態に係る情報処理装置は、複数の制御プログラムや入出力信号を持つ機器間の同一信号を抽出するために、これら複数の制御プログラムや機器の信号をネットワークやバスを介して通信するためのパラメータ設定情報(デバイス連携情報)を用いる。
さらに、本実施の形態に係る情報処理装置は、表示された制御ロジックの可読性向上のために、制御システムの設定情報(デバイス割付情報)から、デバイスを制御ロジック上意味のある単位でグルーピングして表示、またはユーザの指定する任意の単位でグルーピングして表示、またこれらのグルーピングを単一アイコンで表示する。
これにより、複数の制御プログラムと機器から成る制御システム全体について、段階に応じて複数のデバイスをグルーピングし縮約してアイコン表示することができるため、制御システム全体を表示しながら、制御システム設計時や障害発生時に、ユーザは制御システム全体を画面内で俯瞰して見ながら、必要な部分は制御プログラムや機器のデバイス(信号)レベルまで詳細表示することが可能となる。
本実施の形態に係る情報処理装置は、複数の制御プログラムや入出力信号を持つ機器間の同一信号を抽出するために、これら複数の制御プログラムや機器の信号をネットワークやバスを介して通信するためのパラメータ設定情報(デバイス連携情報)を用いる。
さらに、本実施の形態に係る情報処理装置は、表示された制御ロジックの可読性向上のために、制御システムの設定情報(デバイス割付情報)から、デバイスを制御ロジック上意味のある単位でグルーピングして表示、またはユーザの指定する任意の単位でグルーピングして表示、またこれらのグルーピングを単一アイコンで表示する。
これにより、複数の制御プログラムと機器から成る制御システム全体について、段階に応じて複数のデバイスをグルーピングし縮約してアイコン表示することができるため、制御システム全体を表示しながら、制御システム設計時や障害発生時に、ユーザは制御システム全体を画面内で俯瞰して見ながら、必要な部分は制御プログラムや機器のデバイス(信号)レベルまで詳細表示することが可能となる。
複数の制御プログラムと機器から成る制御システム全体を正常に連携動作させるためには、制御プログラムと機器の他に、これらをネットワークやバスを介して連携動作させるために「デバイス連携情報」と「デバイス割付情報」を必要とする。
これらの情報は、現在すでに制御システムを設計する際に、制御システム全体を管理する統合管理ツールや、シーケンサCPU等の制御プログラムの開発環境であるエンジニアリングツールが管理している情報である。
これらの情報はユーザが直接設定することもできるし、ユーザにより作成される、制御システムの機器・ネットワーク構成を表すシステム構成図と、各CPUに対応する単一あるいは複数の制御プログラムから自動的に作成することもできる。
「デバイス連携情報」とは、複数の制御プログラムや機器間で共通に使用されるデバイスに関する設定パラメータのことである。
これは例えば、システム内で1つの信号を複数の制御プログラムや機器で用いるために設定される「システムデバイス設定情報」や、制御システム内の1つのネットワーク・バスの各局・ユニット機器間で送受信されるデバイスを定義した「リフレッシュ設定情報」や、ネットワーク間のゲートウェイにおいて隣接するネットワークへ転送するデバイスを定義する「ゲートウェイ転送設定情報」などを含んでいる。
また、「デバイス割付情報」とは、複数あるいは単一の制御プログラムや機器で使用されているデバイスの分類や意味づけに関する設定パラメータのことである。
例えば、バス単位で、バスマスタであるシーケンサCPUが管理するユニットのデバイスの割当てを設定する「バス割付設定情報」や、ネットワーク単位で、ネットワークマスタ機器と子局で使用するデバイスの割当てを設定する「ネットワーク割付設定情報」や、特定の機器やユニット機器の入出力信号やメモリ構造を記述した「デバイスプロファイル情報」などを含んでいる。
これらの情報は、現在すでに制御システムを設計する際に、制御システム全体を管理する統合管理ツールや、シーケンサCPU等の制御プログラムの開発環境であるエンジニアリングツールが管理している情報である。
これらの情報はユーザが直接設定することもできるし、ユーザにより作成される、制御システムの機器・ネットワーク構成を表すシステム構成図と、各CPUに対応する単一あるいは複数の制御プログラムから自動的に作成することもできる。
「デバイス連携情報」とは、複数の制御プログラムや機器間で共通に使用されるデバイスに関する設定パラメータのことである。
これは例えば、システム内で1つの信号を複数の制御プログラムや機器で用いるために設定される「システムデバイス設定情報」や、制御システム内の1つのネットワーク・バスの各局・ユニット機器間で送受信されるデバイスを定義した「リフレッシュ設定情報」や、ネットワーク間のゲートウェイにおいて隣接するネットワークへ転送するデバイスを定義する「ゲートウェイ転送設定情報」などを含んでいる。
また、「デバイス割付情報」とは、複数あるいは単一の制御プログラムや機器で使用されているデバイスの分類や意味づけに関する設定パラメータのことである。
例えば、バス単位で、バスマスタであるシーケンサCPUが管理するユニットのデバイスの割当てを設定する「バス割付設定情報」や、ネットワーク単位で、ネットワークマスタ機器と子局で使用するデバイスの割当てを設定する「ネットワーク割付設定情報」や、特定の機器やユニット機器の入出力信号やメモリ構造を記述した「デバイスプロファイル情報」などを含んでいる。
本実施の形態では、複数の制御プログラムや機器間を連携動作させるために使用されているデバイスを特定するために、デバイス連携情報を用いる。
デバイス連携情報には、複数の制御プログラムや機器を結ぶネットワークやバスで送受信されるデバイスが定義されているため、これらのデバイスが複数の制御プログラムや機器を連携動作させるための信号を媒介していると判断できるためである。
また、本実施の形態では、複数あるいは単一の制御プログラムと機器を一括表示した際に、表示されるデバイスのグルーピングを行い、必要に応じてグルーピングしたデバイス群を単一のアイコンで表示するために、デバイス割付情報を用いる。
デバイス割付情報には、制御システムで用いられている全デバイスを意味のある領域で分割する情報が定義されているため、デバイスのグルーピングや縮約対象デバイス群として利用できると考える。
よって、本実施の形態で開示する方法によれば、制御システム全体を構成する、複数の制御プログラムと機器と、それらをつなぐネットワークやバスを連携動作させるために用意されているデバイス連携情報とデバイス割付情報を利用することで、複数の制御プログラムと機器から成る制御システム全体を、各制御プログラムや機器間の連携を担うデバイスをデバイス連携情報を元に関連付けることにより、一つの有閉路有向グラフとして表示し、かつ、機器単位やユニット機器単位で複数のデバイスをグルーピングして展開して表示、あるいは縮約して一つのアイコンとして表示することを可能とする。
デバイス連携情報には、複数の制御プログラムや機器を結ぶネットワークやバスで送受信されるデバイスが定義されているため、これらのデバイスが複数の制御プログラムや機器を連携動作させるための信号を媒介していると判断できるためである。
また、本実施の形態では、複数あるいは単一の制御プログラムと機器を一括表示した際に、表示されるデバイスのグルーピングを行い、必要に応じてグルーピングしたデバイス群を単一のアイコンで表示するために、デバイス割付情報を用いる。
デバイス割付情報には、制御システムで用いられている全デバイスを意味のある領域で分割する情報が定義されているため、デバイスのグルーピングや縮約対象デバイス群として利用できると考える。
よって、本実施の形態で開示する方法によれば、制御システム全体を構成する、複数の制御プログラムと機器と、それらをつなぐネットワークやバスを連携動作させるために用意されているデバイス連携情報とデバイス割付情報を利用することで、複数の制御プログラムと機器から成る制御システム全体を、各制御プログラムや機器間の連携を担うデバイスをデバイス連携情報を元に関連付けることにより、一つの有閉路有向グラフとして表示し、かつ、機器単位やユニット機器単位で複数のデバイスをグルーピングして展開して表示、あるいは縮約して一つのアイコンとして表示することを可能とする。
≪構成の説明≫
以降に、図1を用いて、本実施の形態に係る情報処理装置100の構成例を説明する。
以降に、図1を用いて、本実施の形態に係る情報処理装置100の構成例を説明する。
制御プログラム中間コード記憶部101は、FA・PAシステムの制御プログラムが格納されているメモリである。
制御プログラム中間コード記憶部101で記憶されている制御プログラムのソースコードはどのような言語で記述されていても良い。
なお、制御プログラム中間コード記憶部101で記憶されている制御プログラムの中間コードは、制御プログラム中間コードという。
この制御プログラム中間コードは、FA・PAシステムのエンジニアリング開発環境により、ユーザのプログラミングによって作成されたソースコードをコンパイルした結果である。
通常この制御プログラム中間コードはエンジニアリング環境のコンパイル生成物であり、シーケンサ機器にダウンロードされる対象でもある。
制御プログラム中間コードは、通常シーケンサCPU内に単一あるいは複数定義することができる。
つまり制御システム全体では、複数の制御プログラム中間コードが存在する。
制御プログラム中間コードには、複数の変数(以下、「デバイス」ともいう)が記述されるとともに変数間の依存関係が記述され、複数の変数の記述と変数間の依存関係の記述により制御システムにおける制御アルゴリズムが定義される。
また、制御プログラム中間コードに記述されている変数には、信号入出力用変数が含まれている。
信号入出力用変数は、シーケンサCPUが制御システムに含まれる中継装置を介して制御システムに含まれる入出力機器と信号を入出力するための変数である。
なお、中継装置とは、具体的には、ネットワークマスタ、ネットワークユニット、入力ユニット、出力ユニット等である。
制御プログラム中間コード記憶部101で記憶されている制御プログラムのソースコードはどのような言語で記述されていても良い。
なお、制御プログラム中間コード記憶部101で記憶されている制御プログラムの中間コードは、制御プログラム中間コードという。
この制御プログラム中間コードは、FA・PAシステムのエンジニアリング開発環境により、ユーザのプログラミングによって作成されたソースコードをコンパイルした結果である。
通常この制御プログラム中間コードはエンジニアリング環境のコンパイル生成物であり、シーケンサ機器にダウンロードされる対象でもある。
制御プログラム中間コードは、通常シーケンサCPU内に単一あるいは複数定義することができる。
つまり制御システム全体では、複数の制御プログラム中間コードが存在する。
制御プログラム中間コードには、複数の変数(以下、「デバイス」ともいう)が記述されるとともに変数間の依存関係が記述され、複数の変数の記述と変数間の依存関係の記述により制御システムにおける制御アルゴリズムが定義される。
また、制御プログラム中間コードに記述されている変数には、信号入出力用変数が含まれている。
信号入出力用変数は、シーケンサCPUが制御システムに含まれる中継装置を介して制御システムに含まれる入出力機器と信号を入出力するための変数である。
なお、中継装置とは、具体的には、ネットワークマスタ、ネットワークユニット、入力ユニット、出力ユニット等である。
デバイス割付情報記憶部121は、デバイス割付情報を記憶するメモリである。
デバイス割付情報は、複数あるいは単一の制御プログラム101や機器で使用されているデバイス(変数)の分類や意味づけに関する設定パラメータである。
これは例えば、ネットワークやバス単位で、各マスタ機器とスレーブ機器で使用するデバイスの割当てを設定する「割付設定情報」や、機器やユニット機器の入出力信号やメモリ構造を記述した「デバイスプロファイル情報」などを含んでいる。割付設定情報の場合は、ネットワーク・バスのマスタ機器ごとに存在する。
またデバイスプロファイル情報は、機器ごとに存在する。
デバイス割付情報は、複数あるいは単一の制御プログラム101や機器で使用されているデバイス(変数)の分類や意味づけに関する設定パラメータである。
これは例えば、ネットワークやバス単位で、各マスタ機器とスレーブ機器で使用するデバイスの割当てを設定する「割付設定情報」や、機器やユニット機器の入出力信号やメモリ構造を記述した「デバイスプロファイル情報」などを含んでいる。割付設定情報の場合は、ネットワーク・バスのマスタ機器ごとに存在する。
またデバイスプロファイル情報は、機器ごとに存在する。
デバイス連携情報記憶部122は、デバイス連携情報を記憶するメモリである。
デバイス連携情報は、複数の制御プログラム中間コードや機器間で共通に使用されるデバイス(変数)に関する設定パラメータである。
これは例えば、システム内で1つの信号を複数の制御プログラムや機器で用いるために設定される「システムデバイス設定情報」や、制御システム内の1つのネットワーク・バスの各局・ユニット機器間で送受信されるデバイスを定義した「リフレッシュ設定情報」や、ネットワーク間のゲートウェイにおいて隣接するネットワークへ転送するデバイスを定義する「ゲートウェイ転送設定情報」などを含んでいる。
システムデバイス設定情報は、制御システム内で1つのシステムデバイスあたり1つのみ、当該システムデバイスの実メモリ存在するシーケンサCPU内に格納されている。
しかし、システムデバイス設定が制御システム全体を管理する統合管理ツール、もしくは制御プログラムの開発環境であるエンジニアリングツールで保持されている場合もある。
リフレッシュ設定情報は、少なくともネットワーク・バスのマスタ機器ごとに存在する。
ゲートウェイ転送設定情報は、ゲートウェイ対象となる複数のネットワークマスタユニットを抱えるCPUの設定パラメータとして存在する。
デバイス連携情報は、複数の制御プログラム中間コードや機器間で共通に使用されるデバイス(変数)に関する設定パラメータである。
これは例えば、システム内で1つの信号を複数の制御プログラムや機器で用いるために設定される「システムデバイス設定情報」や、制御システム内の1つのネットワーク・バスの各局・ユニット機器間で送受信されるデバイスを定義した「リフレッシュ設定情報」や、ネットワーク間のゲートウェイにおいて隣接するネットワークへ転送するデバイスを定義する「ゲートウェイ転送設定情報」などを含んでいる。
システムデバイス設定情報は、制御システム内で1つのシステムデバイスあたり1つのみ、当該システムデバイスの実メモリ存在するシーケンサCPU内に格納されている。
しかし、システムデバイス設定が制御システム全体を管理する統合管理ツール、もしくは制御プログラムの開発環境であるエンジニアリングツールで保持されている場合もある。
リフレッシュ設定情報は、少なくともネットワーク・バスのマスタ機器ごとに存在する。
ゲートウェイ転送設定情報は、ゲートウェイ対象となる複数のネットワークマスタユニットを抱えるCPUの設定パラメータとして存在する。
ノード構造体記憶部104は、制御プログラム中間コード記憶部101から、デバイス抽出処理151によって抽出されたデバイスの情報を記憶しておく領域である。
ノード構造体記憶部104で記憶される情報は、ノード構造体という。
ノード構造体では、デバイスに対して、デバイス名あるいは、ユーザによって命名されたラベル名が格納される。
ノード構造体記憶部104で記憶される情報は、ノード構造体という。
ノード構造体では、デバイスに対して、デバイス名あるいは、ユーザによって命名されたラベル名が格納される。
エッジ構造体記憶部105は、制御プログラム中間コード記憶部101から、依存関係抽出処理152によって抽出されたデバイス間の依存関係を記憶しておく領域である。
依存関係抽出処理152では2つのデバイス間の依存関係の種別と、対象となる2つのデバイスの組合せを抽出する。
依存関係の種別はエッジ構造体として格納する。
対象デバイスの組合せは、エッジ構造体もしくは、後述する接続情報として保存する。
依存関係抽出処理152では2つのデバイス間の依存関係の種別と、対象となる2つのデバイスの組合せを抽出する。
依存関係の種別はエッジ構造体として格納する。
対象デバイスの組合せは、エッジ構造体もしくは、後述する接続情報として保存する。
接続情報記憶部106は、デバイスを記憶しているノード構造体と、デバイス間の依存関係を記憶しているエッジ構造体の間の接続関係を保持しておく記憶領域である。
接続情報記憶部106で記憶されている情報を接続情報という。
接続情報記憶部106で記憶されている情報を接続情報という。
デバイスグループ抽出部123は、デバイス割付情報を用いて、接続情報に格納されたノードとエッジに対応するデバイスをグルーピングし、グルーピングしたものをさらにノードとしてノード構造体記憶部104へ格納する。
グルーピングする際には、対象となるノード群を接続するエッジを縮約するようにノード群をまとめて1つのノードを定義する。
この時、接続情報の構造は、複数の表示レイヤを持つようにして、グラフ生成部112により、グルーピングしたノード群をそのまま展開された状態で表示することもできれば、まとめた1つのノードのみを表示することもできるように、構成される。
グルーピングする際には、対象となるノード群を接続するエッジを縮約するようにノード群をまとめて1つのノードを定義する。
この時、接続情報の構造は、複数の表示レイヤを持つようにして、グラフ生成部112により、グルーピングしたノード群をそのまま展開された状態で表示することもできれば、まとめた1つのノードのみを表示することもできるように、構成される。
連携デバイス抽出部124は、デバイス連携情報を用いて、複数の制御プログラム中間コードや機器から抽出した接続情報に格納されたノードとエッジに対応するデバイスの中から、複数の制御プログラムや機器間で連携しているデバイスを抽出し、連携デバイス間には新たなエッジを定義して、エッジ構造体記憶部105へ格納する。
あるいは2つ以上の連携デバイスをグルーピングして、デバイスグループ抽出部123の処理と同様に、新たなノードとしてノード構造体記憶部104へ格納する。
あるいは2つ以上の連携デバイスをグルーピングして、デバイスグループ抽出部123の処理と同様に、新たなノードとしてノード構造体記憶部104へ格納する。
デバイスグループ抽出部123と連携デバイス抽出部124は、ともに、制御プログラム入力部、情報入力部、解析処理部の例に相当する。
グラフ生成部112は、デバイスグループ抽出部123でグルーピングしたノード群を、そのまま表示する場合と、まとめた1つのノードとして表示する場合を制御する部分である。
具体的には、ユーザのマウスやキーボードからの入力を受け取り、ノードを展開表示したり、閉じたりすることができる。
この部分のロジックは一般的なグラフ表示ツールの機能と同様なしくみで実現することができる。
なお、グラフ生成部112は、表示情報生成部の例に相当する。
具体的には、ユーザのマウスやキーボードからの入力を受け取り、ノードを展開表示したり、閉じたりすることができる。
この部分のロジックは一般的なグラフ表示ツールの機能と同様なしくみで実現することができる。
なお、グラフ生成部112は、表示情報生成部の例に相当する。
デバイスグループ指定部125は、ユーザによって指定された複数のデバイスを1つのノードとしてグルーピングして、1つのアイコンとして表示するため、ユーザが複数のデバイスを指定し、そのアイコンを定義する部分である。
グルーピング後の処理は、デバイスグループ抽出部123と同じである。
グルーピング後の処理は、デバイスグループ抽出部123と同じである。
結果出力部109は、制御システム全体を、デバイスグループ抽出部123によってグルーピングされたグラフ、あるいは連携デバイス抽出部124によって連結されたグラフとして画面に表示する部分である。
≪動作の説明≫
本実施の形態に係る情報処理装置100の動作を簡単に説明すると、以下のようになる。
デバイスグループ抽出部123及び連携デバイス抽出部124が、デバイス割付情報、デバイス連携情報、制御プログラム中間コードを解析し、制御プログラムに記述されている各信号入出力用変数が、いずれの入出力機器と信号を入出力するための変数であるかを特定する。
そして、グラフ生成部112が、ノードが変数を表し、有向エッジが変数間の依存関係を表し、制御プログラムで定義されている制御アルゴリズムをノードと有向エッジとの接続で表すとともに、各信号入出力用変数のノードを入出力機器と関連付けて表す表示情報を生成する。
この結果、制御プログラムで定義されている制御アルゴリズムと、制御システムに含まれる入出力機器との関係を、理解しやすい形式で可視化することができる。
本実施の形態に係る情報処理装置100の動作を簡単に説明すると、以下のようになる。
デバイスグループ抽出部123及び連携デバイス抽出部124が、デバイス割付情報、デバイス連携情報、制御プログラム中間コードを解析し、制御プログラムに記述されている各信号入出力用変数が、いずれの入出力機器と信号を入出力するための変数であるかを特定する。
そして、グラフ生成部112が、ノードが変数を表し、有向エッジが変数間の依存関係を表し、制御プログラムで定義されている制御アルゴリズムをノードと有向エッジとの接続で表すとともに、各信号入出力用変数のノードを入出力機器と関連付けて表す表示情報を生成する。
この結果、制御プログラムで定義されている制御アルゴリズムと、制御システムに含まれる入出力機器との関係を、理解しやすい形式で可視化することができる。
≪割付デバイスのグルーピングと表示≫
デバイスグループ抽出部123がデバイス割付情報を用いてデバイスをグルーピングし、グラフ生成部112によって、グルーピングされたノードが展開された状態、あるいはグルーピングされたノード群が1つのノードに縮約された状態のグラフが生成され、結果出力部109によってグラフが表示されるまでの手順について、以下に説明する。
デバイスグループ抽出部123がデバイス割付情報を用いてデバイスをグルーピングし、グラフ生成部112によって、グルーピングされたノードが展開された状態、あるいはグルーピングされたノード群が1つのノードに縮約された状態のグラフが生成され、結果出力部109によってグラフが表示されるまでの手順について、以下に説明する。
デバイスグループ抽出部123とデバイスグループ指定部125により、図22に示されるようなデバイスグループ情報が生成されるまでの手順について、図2をもとに説明する。
まず、処理201にて、シーケンサCPUの数だけ繰返しを行う。
デバイスグループ抽出は制御システム全体を対象としているため、その中の個々の制御プログラム毎にデバイスグループの抽出を行う必要がある。
ここでは、まず制御プログラムが格納されるシーケンサCPU毎に処理を行う。
デバイスグループ抽出部123が用いるデバイス割付情報は「バス割付設定情報」と「ネットワーク割付設定情報」と「デバイスプロファイル情報」などから成る。
割付設定情報の場合は、対象とする制御システム内のネットワークやバスのマスタ機器ごとに存在する。
また、デバイスプロファイル情報は、対象とする制御システム内の機器ごとに存在する。
前者のバスマスタはつまりシーケンサCPUに該当するため、シーケンサCPU1台ごとにバス割付設定情報が存在する。
デバイスグループ抽出は制御システム全体を対象としているため、その中の個々の制御プログラム毎にデバイスグループの抽出を行う必要がある。
ここでは、まず制御プログラムが格納されるシーケンサCPU毎に処理を行う。
デバイスグループ抽出部123が用いるデバイス割付情報は「バス割付設定情報」と「ネットワーク割付設定情報」と「デバイスプロファイル情報」などから成る。
割付設定情報の場合は、対象とする制御システム内のネットワークやバスのマスタ機器ごとに存在する。
また、デバイスプロファイル情報は、対象とする制御システム内の機器ごとに存在する。
前者のバスマスタはつまりシーケンサCPUに該当するため、シーケンサCPU1台ごとにバス割付設定情報が存在する。
次に、処理202にて、デバイスグループ抽出部123が、バス割付設定情報からシーケンサCPUが管理するユニットの数を取得する。
バス割付設定情報には、図5に示されるような情報が含まれている。
シーケンサCPUが管理するユニットの数は、バス割付設定情報のレコード数(行数)に相当する。
バス割付設定情報は、バスマスタであるシーケンサCPU毎に存在し、当該CPUが管理するユニットのI/Oデバイスのグルーピングがなされている。
バス割付設定情報により当該CPUが管理するユニットの数を知ることができる。
バス割付設定情報には、図5に示されるような情報が含まれている。
シーケンサCPUが管理するユニットの数は、バス割付設定情報のレコード数(行数)に相当する。
バス割付設定情報は、バスマスタであるシーケンサCPU毎に存在し、当該CPUが管理するユニットのI/Oデバイスのグルーピングがなされている。
バス割付設定情報により当該CPUが管理するユニットの数を知ることができる。
次に、処理203にて、デバイスグループ抽出部123が、処理201で注目しているシーケンサCPUが管理するユニットの数だけループを行う。
次に、処理204にて、デバイスグループ抽出部123が、バス割付設定情報の各レコードの解析を行う。
つまりバス割付設定情報には、バス上に接続された各ユニットの先頭XY番号とXY点数が含まれている。
これらの情報は、バスマスタであるシーケンサCPUで動作する制御プログラムで使用される入力デバイスXと、出力デバイスYのグルーピング指定をしていることに他ならない。
このため、処理203で注目しているユニット毎のグルーピング処理を行うため、先頭XY番号からXY点数分だけ、入出力デバイスのグルーピングを行い、この内容を注目しているユニットの割当てデバイスとして記録する。
つまりバス割付設定情報には、バス上に接続された各ユニットの先頭XY番号とXY点数が含まれている。
これらの情報は、バスマスタであるシーケンサCPUで動作する制御プログラムで使用される入力デバイスXと、出力デバイスYのグルーピング指定をしていることに他ならない。
このため、処理203で注目しているユニット毎のグルーピング処理を行うため、先頭XY番号からXY点数分だけ、入出力デバイスのグルーピングを行い、この内容を注目しているユニットの割当てデバイスとして記録する。
次に、処理206にて、処理201で注目しているシーケンサCPUが管理する機器の数だけループを行う。
つまり、シーケンサCPUが管理しデバイスプロファイルが存在する機器の数と等しい。
処理203で繰返しを行った、シーケンサCPUが管理するユニット毎にデバイスプロファイルが存在する場合は、処理203の繰り返し数と同じとなる。
つまり、シーケンサCPUが管理しデバイスプロファイルが存在する機器の数と等しい。
処理203で繰返しを行った、シーケンサCPUが管理するユニット毎にデバイスプロファイルが存在する場合は、処理203の繰り返し数と同じとなる。
次に、処理207にて、デバイスグループ抽出部123が、デバイスプロファイル情報からのデバイスグルーピングを行う。
デバイスプロファイル情報は、管理するシーケンサCPUにぶら下がる形で定義されており、その割付設定情報が、上述したバス割付設定情報と同様に定義されている。
図9に示すようなデバイスプロファイル情報には、機器単位でのグルーピング情報が記述されている。
また、ユニットや機器単位よりもさらに詳細なXYデバイスのグルーピング情報が記述されている場合もあり、デバイスプロファイル情報を用いることで、デバイスプロファイルで定義された個々の機器内でのユニークな単位で詳細なグルーピングが可能になる。
なお、デバイスプロファイルで記述される機器の入出力信号の構造自体はデバイスプロファイルの定義から固定的なものではないため、デバイスプロファイルのパーサ(XMLパーサ等)を使用して解析処理が行われる。
この解析結果から、処理204と同じく、デバイスグループ抽出部123は、入出力デバイスのグルーピングを行い、この内容に注目している機器(とその内部構造)の割当てデバイスとして記録する。
デバイスプロファイル情報は、管理するシーケンサCPUにぶら下がる形で定義されており、その割付設定情報が、上述したバス割付設定情報と同様に定義されている。
図9に示すようなデバイスプロファイル情報には、機器単位でのグルーピング情報が記述されている。
また、ユニットや機器単位よりもさらに詳細なXYデバイスのグルーピング情報が記述されている場合もあり、デバイスプロファイル情報を用いることで、デバイスプロファイルで定義された個々の機器内でのユニークな単位で詳細なグルーピングが可能になる。
なお、デバイスプロファイルで記述される機器の入出力信号の構造自体はデバイスプロファイルの定義から固定的なものではないため、デバイスプロファイルのパーサ(XMLパーサ等)を使用して解析処理が行われる。
この解析結果から、処理204と同じく、デバイスグループ抽出部123は、入出力デバイスのグルーピングを行い、この内容に注目している機器(とその内部構造)の割当てデバイスとして記録する。
なお、処理203から処理205と、処理206から処理208の処理順序について、図2に示したものは一例であり、他の順序で実施してもよい。
例えばデバイスプロファイル情報が、ユニット毎に存在せず、複数のユニットを跨いだデバイスプロファイルが定義されている可能性もある。
この場合グルーピングの定義に一部矛盾が生じる可能性がある。
この場合は、デバイスプロファイルから抽出してデバイスグループを優先的に採用してもよいし、バス割付設定情報から抽出したデバイスグループを優先的に採用してもよい。
また後述するように、ユーザが指定したグルーピングとの優先順位の関係にも同じことがいえる。
例えばデバイスプロファイル情報が、ユニット毎に存在せず、複数のユニットを跨いだデバイスプロファイルが定義されている可能性もある。
この場合グルーピングの定義に一部矛盾が生じる可能性がある。
この場合は、デバイスプロファイルから抽出してデバイスグループを優先的に採用してもよいし、バス割付設定情報から抽出したデバイスグループを優先的に採用してもよい。
また後述するように、ユーザが指定したグルーピングとの優先順位の関係にも同じことがいえる。
次に、処理209にて、デバイスグループ抽出部123が、処理202にて解析した「バス割付設定情報」から、ネットワークマスタとなるユニットの特定を行う。
図に示したバス割付設定情報の例の場合は、ネットワークマスタユニットはその型名もしくは種別から判別可能である。
バス割付設定情報にユニットのID情報がある場合は、それを用いて判断してもよい。
図に示したバス割付設定情報の例の場合は、ネットワークマスタユニットはその型名もしくは種別から判別可能である。
バス割付設定情報にユニットのID情報がある場合は、それを用いて判断してもよい。
次に、処理210にて、デバイスグループ抽出部123が、ネットワークマスタ毎に存在する「ネットワーク割付設定情報」を元にデバイスグループの抽出を行うため、当該ネットワークマスタが管理する総局数を取得する。
つまりこれは、図6に例として示されるようなネットワーク割付設定情報のレコード数に等しい。
なお、バス割付設定情報内に複数のネットワークマスタが存在する場合は、処理210の前にネットワークマスタ数分の繰返しを行う必要がある。
つまりこれは、図6に例として示されるようなネットワーク割付設定情報のレコード数に等しい。
なお、バス割付設定情報内に複数のネットワークマスタが存在する場合は、処理210の前にネットワークマスタ数分の繰返しを行う必要がある。
次に、処理211にて、当該ネットワークマスタが管理する総局数だけ繰返しを行う。
次に、処理212にて、デバイスグループ抽出部123が、ネットワーク割付設定情報からのデバイスグルーピングを行う。
ネットワーク割付設定情報は、ビットデバイスとワードデバイスで、割付情報が分かれている場合があるため、それぞれについてネットワークデバイスのグルーピングを行い、この内容を注目している局の割当てデバイスとして記録する。
ネットワーク割付設定情報は、ビットデバイスとワードデバイスで、割付情報が分かれている場合があるため、それぞれについてネットワークデバイスのグルーピングを行い、この内容を注目している局の割当てデバイスとして記録する。
次に、処理213にて、デバイスグループ抽出部123が、デバイスプロファイル情報からのデバイスグルーピングを行う。
デバイスプロファイル情報は、管理するネットワークマスタにぶら下がる形で定義されており、通常はデバイスプロファイルが定義される機器の数は、総局数と等しい。
図9に示すようなデバイスプロファイル情報には、機器単位でのグルーピング情報が記述されている。
また、ユニットや機器単位よりもさらに詳細なXYデバイスのグルーピング情報が記述されている場合もあり、デバイスプロファイル情報を用いることで、デバイスプロファイルで定義された個々の機器内でのユニークな単位で詳細なグルーピングが可能になる。
なおデバイスプロファイルで記述される機器の入出力信号の構造自体はデバイスプロファイルの定義から固定的なものではないため、デバイスプロファイルのパーサ(XMLパーサ等)を使用して解析処理が行われる。
この解析結果から、処理208と同じく、入出力デバイスのグルーピングを行い、この内容に注目している機器(とその内部構造)の割当てデバイスとして記録する。
デバイスプロファイル情報は、管理するネットワークマスタにぶら下がる形で定義されており、通常はデバイスプロファイルが定義される機器の数は、総局数と等しい。
図9に示すようなデバイスプロファイル情報には、機器単位でのグルーピング情報が記述されている。
また、ユニットや機器単位よりもさらに詳細なXYデバイスのグルーピング情報が記述されている場合もあり、デバイスプロファイル情報を用いることで、デバイスプロファイルで定義された個々の機器内でのユニークな単位で詳細なグルーピングが可能になる。
なおデバイスプロファイルで記述される機器の入出力信号の構造自体はデバイスプロファイルの定義から固定的なものではないため、デバイスプロファイルのパーサ(XMLパーサ等)を使用して解析処理が行われる。
この解析結果から、処理208と同じく、入出力デバイスのグルーピングを行い、この内容に注目している機器(とその内部構造)の割当てデバイスとして記録する。
以上によって、シーケンサCPU内の制御プログラムが制御するデバイスのグルーピング処理が完了する。
これらのグルーピングが完了すると、デバイスグループ抽出部123には、処理204にてバス割付設定情報からユニット単位でのデバイスグループ、処理207にてデバイスプロファイルから機器単位もしくは機器内のより詳細単位でのデバイスグループ、処理212にてネットワーク割付設定情報からネットワークの局単位でのデバイスグループ、処理213にてデバイスプロファイルからネットワーク上の機器単位もしくは機器内のより詳細単位でのデバイスグループ、以上のデバイスグループ情報が記録されていることになる。
このデバイスグループ情報の例を図22に示す。
これらのグルーピングが完了すると、デバイスグループ抽出部123には、処理204にてバス割付設定情報からユニット単位でのデバイスグループ、処理207にてデバイスプロファイルから機器単位もしくは機器内のより詳細単位でのデバイスグループ、処理212にてネットワーク割付設定情報からネットワークの局単位でのデバイスグループ、処理213にてデバイスプロファイルからネットワーク上の機器単位もしくは機器内のより詳細単位でのデバイスグループ、以上のデバイスグループ情報が記録されていることになる。
このデバイスグループ情報の例を図22に示す。
さらに、図2の処理とは非同期に、デバイスグループ指定部125によりユーザがGUI(Graphical User Interface)画面を通じて、複数の任意のノード(個々のノードは、単一デバイスである場合と、複数デバイスを縮約して1つのノードとして表現されている可能性がある)を指定した場合、これらのノードで表されたデバイス群がグループとして、上記と同様にデバイスグループ情報として記録される。
以上がデバイスグループ抽出部123およびデバイスグループ指定部125の処理となる。
以上がデバイスグループ抽出部123およびデバイスグループ指定部125の処理となる。
続いて、デバイスグループ情報と接続情報から、グラフ生成部112によってノード群を縮約/展開して、結果出力部109により画面上に表示する。
この際ユーザは、デバイスグループの縮約表示と展開表示について、画面上の当該ノードもしくはデバイスグループを選択してコマンドを指定することで、切り替えが可能となる。
この際ユーザは、デバイスグループの縮約表示と展開表示について、画面上の当該ノードもしくはデバイスグループを選択してコマンドを指定することで、切り替えが可能となる。
≪連携デバイスのグルーピングと表示≫
連携デバイス抽出部124がデバイス連携情報を用いて連携デバイスを抽出し、グラフ生成部112によって、グルーピングされたノードが展開された状態、あるいはグルーピングされたノード群が1つのノードに縮約された状態のグラフが生成され、結果出力部109によってグラフが表示されるまでの手順について、以下に図3と図4を用いて説明する。
連携デバイス抽出部124がデバイス連携情報を用いて連携デバイスを抽出し、グラフ生成部112によって、グルーピングされたノードが展開された状態、あるいはグルーピングされたノード群が1つのノードに縮約された状態のグラフが生成され、結果出力部109によってグラフが表示されるまでの手順について、以下に図3と図4を用いて説明する。
デバイス連携情報は、複数の制御プログラムや機器にて、それぞれさまざまに表記されているデバイスについて、同一利用目的のデバイスとして用いるために設定される情報であり、具体的にはシステムデバイス設定情報とリフレッシュ設定情報などから成る。
最初にシステムデバイス設定情報を利用した複数の制御プログラムや機器間の連携情報構築手順について図3を元にして説明する。
最初にシステムデバイス設定情報を利用した複数の制御プログラムや機器間の連携情報構築手順について図3を元にして説明する。
まず、処理301にて、連携デバイス抽出部124が、対象とする制御システム全体のシステムデバイス設定情報を取得する。
システムデバイス情報は、対象としている制御システムに一つだけ存在する場合の他、システムデバイスの実体が定義されているシーケンサCPUのパラメータとして定義されている場合もある。
また、この時にシステムデバイス設定情報に定義されているシステムデバイスの数を取得する。
システムデバイス情報は、対象としている制御システムに一つだけ存在する場合の他、システムデバイスの実体が定義されているシーケンサCPUのパラメータとして定義されている場合もある。
また、この時にシステムデバイス設定情報に定義されているシステムデバイスの数を取得する。
次に、処理302にて、取得したシステムデバイスの数だけ繰返しを行う。
次に、処理303にて、連携デバイス抽出部124が、システムデバイス情報から、システムデバイス名称とシステムデバイスの実体が定義されているシーケンサCPUでのデバイス情報を取得する。
次に、処理304にて、当該システムデバイスを使用している制御プログラムを抽出する。
さらに、処理305にて、連携デバイス抽出部124が、各制御プログラムで使用しているシステムデバイスに対応するノード情報を取得し、グルーピングする。
グルーピングした結果は、図22に例として示されるようなデバイスグループ情報として保存される。
グルーピングした結果は、図22に例として示されるようなデバイスグループ情報として保存される。
次に、処理306にて、連携デバイス抽出部124が、グルーピングされたノード群について、当該システムデバイスの実体を定義しているシーケンサCPUの対応する制御プログラムを中心として、ハブ接続の形式で、エッジを新規に定義する。
当該システムデバイスに関して、グルーピングされたノードは上記のようにエッジによりハブ型で表示することもできれば、グルーピングされたノード群を1つのノードに縮約し、これを別のシステムデバイスアイコンを用いて表示することもできる。
この仕組みはデバイスグループの表示と同じ方法にて実現できる。
当該システムデバイスに関して、グルーピングされたノードは上記のようにエッジによりハブ型で表示することもできれば、グルーピングされたノード群を1つのノードに縮約し、これを別のシステムデバイスアイコンを用いて表示することもできる。
この仕組みはデバイスグループの表示と同じ方法にて実現できる。
以上のように処理303〜処理306がシステムデバイスの数だけ繰り返されることにより、同一のシステムデバイスを使用している複数の制御プログラムや機器間での連携情報が新規エッジによって構築される。
次に、リフレッシュ設定情報を利用した複数の制御プログラムや機器間の連携情報構築手順について説明する。
リフレッシュ設定情報は、制御システム内のネットワークマスタ毎に存在する。
リフレッシュ設定情報は、ネットワーク内で使用されてネットワークマスタ内のメモリとして定義されているデバイスを、制御プログラムで直接利用できるようにするために、シーケンサCPU内のメモリにマッピングしている情報である。
なお、バスの場合は通常バスマスタであるシーケンサCPUが持つバス割付設定情報が、このリフレッシュ設定情報を兼ねている。
リフレッシュ設定情報は、制御システム内のネットワークマスタ毎に存在する。
リフレッシュ設定情報は、ネットワーク内で使用されてネットワークマスタ内のメモリとして定義されているデバイスを、制御プログラムで直接利用できるようにするために、シーケンサCPU内のメモリにマッピングしている情報である。
なお、バスの場合は通常バスマスタであるシーケンサCPUが持つバス割付設定情報が、このリフレッシュ設定情報を兼ねている。
まず、処理401にて、対象とする制御システム内のシーケンサCPUの数だけ繰返しを行う。
次に、処理402にて、ネットワークマスタの数だけ繰返しを行う。これはつまりリフレッシュ設定の数だけ繰返しを行うことと等しい。
次に、処理403にて、連携デバイス抽出部124が、リフレッシュ設定情報内の解析を行う。
リフレッシュ設定情報は例として図7に示すような構造になっており、基本的にネットワークマスタ側のメモリアドレス(デバイス)と、シーケンサCPU側のデバイスの対応関係が示されている。
またリフレッシュ設定情報は、デバイス種別ごとに分割されている場合がある。
リフレッシュ設定情報は例として図7に示すような構造になっており、基本的にネットワークマスタ側のメモリアドレス(デバイス)と、シーケンサCPU側のデバイスの対応関係が示されている。
またリフレッシュ設定情報は、デバイス種別ごとに分割されている場合がある。
次に、処理404にて、連携デバイス抽出部124が、リフレッシュ設定情報をもとに、ネットワークマスタ側のデバイスとシーケンサCPU側のデバイスで対となるデバイスについてグルーピングを行い、既に処理212にて作成しているデバイスグループ情報を修正する。
図2の処理212では、ネットワーク割付設定情報からグループを抽出しているが、これはネットワークの各局に割り当てられた、ネットワークマスタが保持するデバイス、つまり図10でのデバイスメモリ1021の割り当てに従ってグルーピングを行っている。
しかし、制御プログラムで直接使用するのは通常シーケンサCPU内のデバイス、つまり図10でのデバイスメモリ1016になるため、リフレッシュ設定情報により、シーケンサCPUとネットワークマスタ間でデバイスのリフレッシュが行われることが多い。
したがって、処理212時点でグルーピングした、ネットワークマスタが保持するネットワークデバイスを、処理404にてシーケンサCPU内のデバイスに置き換えることを行う。
ただし、ネットワークマスタのデバイスと、シーケンサCPU内のデバイスを明確に区別する必要がある場合は、処理404によって置き換えるのではなく、新たにデバイスグループ情報を追記することもできる。
これにより、処理212で実施したネットワークデバイスの割付によるグルーピングと、処理404で実施するリフレッシュ設定情報によるグルーピングを独立させて表現することができる。
図2の処理212では、ネットワーク割付設定情報からグループを抽出しているが、これはネットワークの各局に割り当てられた、ネットワークマスタが保持するデバイス、つまり図10でのデバイスメモリ1021の割り当てに従ってグルーピングを行っている。
しかし、制御プログラムで直接使用するのは通常シーケンサCPU内のデバイス、つまり図10でのデバイスメモリ1016になるため、リフレッシュ設定情報により、シーケンサCPUとネットワークマスタ間でデバイスのリフレッシュが行われることが多い。
したがって、処理212時点でグルーピングした、ネットワークマスタが保持するネットワークデバイスを、処理404にてシーケンサCPU内のデバイスに置き換えることを行う。
ただし、ネットワークマスタのデバイスと、シーケンサCPU内のデバイスを明確に区別する必要がある場合は、処理404によって置き換えるのではなく、新たにデバイスグループ情報を追記することもできる。
これにより、処理212で実施したネットワークデバイスの割付によるグルーピングと、処理404で実施するリフレッシュ設定情報によるグルーピングを独立させて表現することができる。
次に、処理405にて、グラフ生成部112が、実際に制御プログラムで使用されているデバイスのうち、処理404で設定したデバイスグループ情報に合致するものについて、接続情報あるいはエッジ構造体に追加を行う。
以上のように、処理403〜処理405がネットワークマスタの数、つまりリフレッシュ設定情報の数だけ繰り返されることにより、制御システム全体の中の複数の制御プログラムと機器と、それらを接続するネットワークのマスタ機器間のデバイスの連携を新規エッジとして構築できる。
≪具体例≫
ここでは、有閉路有向グラフとして表現された複数の制御プログラムと、機器と、それらを接続するために設定された、デバイス割付情報とデバイス連携情報の一例を示し、図1〜図4で開示した方法によりどのように処理されて、最終的にそれがどのように画面へ表示されるのかについて、具体例をもって説明する。
ここでは、有閉路有向グラフとして表現された複数の制御プログラムと、機器と、それらを接続するために設定された、デバイス割付情報とデバイス連携情報の一例を示し、図1〜図4で開示した方法によりどのように処理されて、最終的にそれがどのように画面へ表示されるのかについて、具体例をもって説明する。
図10は、制御システムの構成例である。
この例では、2つのシーケンサシステムと1つの機器がネットワーク1072によって接続されている。
1つ目のシーケンサシステムは、シーケンサCPU1010とネットワークマスタ1020によって構成され、この間はバス1071によって接続されている。
2つ目のシーケンサシステムは、バス1074によってシーケンサCPU1040とネットワークユニット1050が接続され、シーケンサCPU1040のI/O接続1073として入力(X)ユニット1080と出力(Y)ユニット1090を介して機器1030が接続されている。
ネットワーク1072には以上のシーケンサシステムの他に、ネットワークの子局として機器1060が接続されている。
この例では、2つのシーケンサシステムと1つの機器がネットワーク1072によって接続されている。
1つ目のシーケンサシステムは、シーケンサCPU1010とネットワークマスタ1020によって構成され、この間はバス1071によって接続されている。
2つ目のシーケンサシステムは、バス1074によってシーケンサCPU1040とネットワークユニット1050が接続され、シーケンサCPU1040のI/O接続1073として入力(X)ユニット1080と出力(Y)ユニット1090を介して機器1030が接続されている。
ネットワーク1072には以上のシーケンサシステムの他に、ネットワークの子局として機器1060が接続されている。
なお、以下では、シーケンサCPU1010とネットワークマスタ1020から構成されるシーケンサシステムを、「子局1」ともいう。
また、シーケンサCPU1040とネットワークユニット1050と入力(X)ユニット1080と出力(Y)ユニット1090と機器1030から構成されるシーケンサシステムを、「子局2」ともいう。
また、機器1060を「子局3」ともいう。
また、シーケンサCPU1040とネットワークユニット1050と入力(X)ユニット1080と出力(Y)ユニット1090と機器1030から構成されるシーケンサシステムを、「子局2」ともいう。
また、機器1060を「子局3」ともいう。
また、図10の制御システムにおいて、機器1030、機器1060が入出力機器の例に相当する。
また、ネットワークマスタ1020、ネットワークユニット1050、入力(X)ユニット1080、出力(Y)ユニット1090は、シーケンサCPU1010、1040と、機器1030、1060との間で入出力される信号を中継するユニットであり、それぞれ中継装置の例に相当する。
また、ネットワークマスタ1020、ネットワークユニット1050、入力(X)ユニット1080、出力(Y)ユニット1090は、シーケンサCPU1010、1040と、機器1030、1060との間で入出力される信号を中継するユニットであり、それぞれ中継装置の例に相当する。
図10のシーケンサCPU1010内には制御プログラム1011と制御プログラム1012とデバイスメモリ1016があり、パラメータ情報として、バス割付設定情報1013、ネットワーク割付設定情報1014、リフレッシュ設定情報1015が設定されている。
ネットワーク割付設定情報1014とリフレッシュ設定情報1015は、ネットワークマスタ1020のために用意される情報である。
ネットワークマスタ1020には、デバイスメモリ1021がある。
ネットワーク割付設定情報1014とリフレッシュ設定情報1015は、ネットワークマスタ1020のために用意される情報である。
ネットワークマスタ1020には、デバイスメモリ1021がある。
図10のシーケンサCPU1040内には制御プログラム1041とデバイスメモリ1045があり、パラメータ情報として、バス割付設定情報1042、システムデバイス設定情報1043、リフレッシュ設定情報1044が設定されている。
ネットワークユニット1050内にはデバイスメモリ1051がある。
なおネットワークマスタは存在ないため、この例ではシーケンサCPU1040内にネットワーク割付設定情報の記述はしていない。
しかしネットワークによっては、マスタ以外の子局にもこれらのパラメータ情報を格納される場合がある。
ネットワークユニット1050内にはデバイスメモリ1051がある。
なおネットワークマスタは存在ないため、この例ではシーケンサCPU1040内にネットワーク割付設定情報の記述はしていない。
しかしネットワークによっては、マスタ以外の子局にもこれらのパラメータ情報を格納される場合がある。
シーケンサCPU1040にはI/O接続(近接)で接続された機器1030がある。
機器1030にはデバイスメモリ1032と、この機器1030のメモリ構成等について記述されたデバイスプロファイル情報1031が格納されている。
この例ではデバイスプロファイル情報が機器内に格納されている例を示しているが、これら機器内(制御システム内)ではなく、制御システムへ接続するエンジニアリングツールがインストールされたパソコン内やインターネットやクラウド上に情報として保持しておく構成でもよい。
機器1030にはデバイスメモリ1032と、この機器1030のメモリ構成等について記述されたデバイスプロファイル情報1031が格納されている。
この例ではデバイスプロファイル情報が機器内に格納されている例を示しているが、これら機器内(制御システム内)ではなく、制御システムへ接続するエンジニアリングツールがインストールされたパソコン内やインターネットやクラウド上に情報として保持しておく構成でもよい。
図10の機器1060内にはデバイスメモリ1062と、この機器1060のメモリ構成等について記述されたデバイスプロファイル情報1061が格納されている。
この例ではデバイスプロファイル情報が機器内に格納されている例を示しているが、これら機器内(制御システム内)ではなく、制御システムへ接続するエンジニアリングツールがインストールされたパソコン内やインターネットやクラウド上に情報として保持しておく構成でもよい。
この例ではデバイスプロファイル情報が機器内に格納されている例を示しているが、これら機器内(制御システム内)ではなく、制御システムへ接続するエンジニアリングツールがインストールされたパソコン内やインターネットやクラウド上に情報として保持しておく構成でもよい。
図11〜図13は、図10のシーケンサCPU1010内の制御プログラム1011、同シーケンサCPU内の制御プログラム1012、シーケンサCPU1040内の制御プログラム1041、のラダープログラムの例を表している。
各制御プログラムには、図10の制御システムでシーケンサCPU1010、1040が機器1030、1060を制御するための制御アルゴリズムが定義されている。
また、図14〜図16はそれぞれ図11〜図13のラダープログラムを有閉路有向グラフで表現した模式図である。
これらの有閉路有向グラフは、後述する実施の形態2以降の方法により作成される。
有閉路有向グラフの生成方法の詳細は実施の形態2以降で説明するため、図14〜図16の構成方法は、ここでは触れない。
各制御プログラムには、図10の制御システムでシーケンサCPU1010、1040が機器1030、1060を制御するための制御アルゴリズムが定義されている。
また、図14〜図16はそれぞれ図11〜図13のラダープログラムを有閉路有向グラフで表現した模式図である。
これらの有閉路有向グラフは、後述する実施の形態2以降の方法により作成される。
有閉路有向グラフの生成方法の詳細は実施の形態2以降で説明するため、図14〜図16の構成方法は、ここでは触れない。
シーケンサCPU1010内のバス割付設定情報1013は、例えば、図5のバス割付設定情報510に示す内容をもち、シーケンサCPU1040内のバス割付設定情報1042は、例えば、図5のバス割付設定情報520に示す内容をもつ。
バス割付設定情報には、シーケンサCPUとバスにより接続されている中継装置ごとに、中継装置で用いられる変数の範囲が定義されている。
具体的には、バス割付設定情報510(1013)では、シーケンサCPU1010とバス1071により接続されている中継装置であるネットワークマスタ1020で用いられる変数の範囲(「先頭XY」に示されるアドレスから、「点数」で特定されるアドレスまでの範囲)が定義されている。
同様に、バス割付設定情報520(1042)では、シーケンサCPU1040とバス1074により接続されている中継装置であるネットワークユニット1050で用いられる変数の範囲が定義されている。
更に、シーケンサCPU1040とバス1073aにより接続されている中継装置である入力(X)ユニット1080で用いられる変数の範囲が定義されている。
更に、シーケンサCPU1040とバス1073bにより接続されている中継装置である出力(Y)ユニット1090で用いられる変数の範囲が定義されている。
バス割付設定情報は、中継装置変数範囲情報の例に相当する。
バス割付設定情報には、シーケンサCPUとバスにより接続されている中継装置ごとに、中継装置で用いられる変数の範囲が定義されている。
具体的には、バス割付設定情報510(1013)では、シーケンサCPU1010とバス1071により接続されている中継装置であるネットワークマスタ1020で用いられる変数の範囲(「先頭XY」に示されるアドレスから、「点数」で特定されるアドレスまでの範囲)が定義されている。
同様に、バス割付設定情報520(1042)では、シーケンサCPU1040とバス1074により接続されている中継装置であるネットワークユニット1050で用いられる変数の範囲が定義されている。
更に、シーケンサCPU1040とバス1073aにより接続されている中継装置である入力(X)ユニット1080で用いられる変数の範囲が定義されている。
更に、シーケンサCPU1040とバス1073bにより接続されている中継装置である出力(Y)ユニット1090で用いられる変数の範囲が定義されている。
バス割付設定情報は、中継装置変数範囲情報の例に相当する。
シーケンサCPU1010内のネットワーク割付設定情報1014は、例えば、図6のネットワーク割付設定情報610の内容をもつ。
ネットワーク割付設定情報610(1014)では、ネットワークマスタ1020と、ネットワークマスタ1020が管理する局(局1〜3)との間で用いられる変数の範囲が定義されている。
ネットワーク割付設定情報も、中継装置変数範囲情報の例に相当する。
ネットワーク割付設定情報610(1014)では、ネットワークマスタ1020と、ネットワークマスタ1020が管理する局(局1〜3)との間で用いられる変数の範囲が定義されている。
ネットワーク割付設定情報も、中継装置変数範囲情報の例に相当する。
シーケンサCPU1010内のリフレッシュ設定情報1015は、例えば、図7のリフレッシュ設定情報710に示す内容をもち、シーケンサCPU1040内のリフレッシュ設定情報1044は、例えば、図7のリフレッシュ設定情報720に示す内容をもつ。
リフレッシュ設定情報では、ネットワークマスタ1020で用いられる変数の範囲と、シーケンサCPU1010、1040で用いられる変数との対応関係が定義される。
具体的には、リフレッシュ設定情報710(1015)では、ネットワークマスタ1020で用いられる変数の範囲(例えば、64点、0x0000)と、シーケンサCPU1010で用いられる変数(例えば、X、0x0100)との対応関係が定義される。
同様に、リフレッシュ設定情報720(1044)では、ネットワークマスタ1020で用いられる変数の範囲(例えば、64点、0x0000)と、シーケンサCPU1040で用いられる変数(例えば、X、0x0100)との対応関係が定義される。
リフレッシュ設定情報も、中継装置変数範囲情報の例に相当する。
リフレッシュ設定情報では、ネットワークマスタ1020で用いられる変数の範囲と、シーケンサCPU1010、1040で用いられる変数との対応関係が定義される。
具体的には、リフレッシュ設定情報710(1015)では、ネットワークマスタ1020で用いられる変数の範囲(例えば、64点、0x0000)と、シーケンサCPU1010で用いられる変数(例えば、X、0x0100)との対応関係が定義される。
同様に、リフレッシュ設定情報720(1044)では、ネットワークマスタ1020で用いられる変数の範囲(例えば、64点、0x0000)と、シーケンサCPU1040で用いられる変数(例えば、X、0x0100)との対応関係が定義される。
リフレッシュ設定情報も、中継装置変数範囲情報の例に相当する。
シーケンサCPU1040内のシステムデバイス設定情報1043は、例えば、図8のシステムデバイス設定情報810に示す内容をもつ。
システムデバイス設定情報810(1043)では、2つ以上の制御プログラムに記述されている相互に異なる2つ以上の変数が対応付けられている。
つまり、システムデバイス設定情報810(1043)では、制御プログラム1012(図12)に記述されている変数“起動許可信号”と、制御プログラム1041(図13)に記述されている変数「X1000」とが対応付けられている。
システムデバイス設定情報は、変数対応付け情報の例に相当する。
システムデバイス設定情報810(1043)では、2つ以上の制御プログラムに記述されている相互に異なる2つ以上の変数が対応付けられている。
つまり、システムデバイス設定情報810(1043)では、制御プログラム1012(図12)に記述されている変数“起動許可信号”と、制御プログラム1041(図13)に記述されている変数「X1000」とが対応付けられている。
システムデバイス設定情報は、変数対応付け情報の例に相当する。
機器1060内のデバイスプロファイル情報1061は、例えば、図9のデバイスプロファイル情報910に示す内容をもち、機器1030内のデバイスプロファイル情報1031は、例えば、図9のデバイスプロファイル情報920に示す内容をもつ。
デバイスプロファイル情報は、機器で用いられる変数の範囲が定義されている。
デバイスプロファイル情報では、変数範囲は、デバイスの種別(例えば、X)とアドレス(n+0x00)で定義されている。
アドレスに示される「n」はベースアドレスを表しており、「+0x00」は、ベースアドレスに対するオフセットである。
デバイスプロファイル情報は、入出力機器変数範囲情報の例に相当する。
デバイスプロファイル情報は、機器で用いられる変数の範囲が定義されている。
デバイスプロファイル情報では、変数範囲は、デバイスの種別(例えば、X)とアドレス(n+0x00)で定義されている。
アドレスに示される「n」はベースアドレスを表しており、「+0x00」は、ベースアドレスに対するオフセットである。
デバイスプロファイル情報は、入出力機器変数範囲情報の例に相当する。
図11に示したのは、シーケンサCPU1010内で動作する制御プログラム1011のラダー図である。
この制御プログラムでは、ネットワーク1072に接続された機器1060からの2つの入力信号X130(1101)とX138(1103)の状態から、1104によって内部デバイスをONし、この内部デバイスの自己保持(1102)によって、1105により0.5秒間の内部タイマを作動させている。
1106にて内部タイマがONになると、ネットワークデバイス(Y200)をONさせている。
この制御プログラムでは、ネットワーク1072に接続された機器1060からの2つの入力信号X130(1101)とX138(1103)の状態から、1104によって内部デバイスをONし、この内部デバイスの自己保持(1102)によって、1105により0.5秒間の内部タイマを作動させている。
1106にて内部タイマがONになると、ネットワークデバイス(Y200)をONさせている。
図12に示したのは、シーケンサCPU1010内で動作する制御プログラム1012のラダー図である。
この制御プログラムでは、ネットワークデバイスY200がONになり(1201)、機器1060の停止信号(B接CNT)がOFFであれば(1202)、1203にて内部カウンタをカウントアップする。
この内部カウンタは、同じく機器1060の起動までの信号回数で設定された数だけカウントすると、接点がONとなる。
1204にて内部カウンタの接点がONとなると、システムデバイスである“起動許可信号”をONにする(1205)。
この制御プログラムでは、ネットワークデバイスY200がONになり(1201)、機器1060の停止信号(B接CNT)がOFFであれば(1202)、1203にて内部カウンタをカウントアップする。
この内部カウンタは、同じく機器1060の起動までの信号回数で設定された数だけカウントすると、接点がONとなる。
1204にて内部カウンタの接点がONとなると、システムデバイスである“起動許可信号”をONにする(1205)。
なお、図11および図12で示した制御プログラムは同一のシーケンサCPU上で動作するプログラムであるため、本来はネットワークデバイスY200を介さずに情報をやり取りさせることも可能である。
ここでは具体例の説明のためにこのようなプログラムを例に挙げている。
ここでは具体例の説明のためにこのようなプログラムを例に挙げている。
図13に示したのは、シーケンサCPU1040内で動作する制御プログラム1041のラダー図である。
この制御プログラムでは、機器1030の信号で入力ユニット1から入るX20(1301)と、システムデバイス“起動許可信号”の実アドレスであるX1000(1302)を見て、両方がONであり、かつ入力ユニット1から入る信号X2FがOFFである場合(1304)に、1305により内部デバイスがONする。以降は1303により内部デバイスが自己保持する。
また内部デバイスの状態は1306と1307によって、出力ユニット1を介して機器1030の信号へ出力される。
この制御プログラムでは、機器1030の信号で入力ユニット1から入るX20(1301)と、システムデバイス“起動許可信号”の実アドレスであるX1000(1302)を見て、両方がONであり、かつ入力ユニット1から入る信号X2FがOFFである場合(1304)に、1305により内部デバイスがONする。以降は1303により内部デバイスが自己保持する。
また内部デバイスの状態は1306と1307によって、出力ユニット1を介して機器1030の信号へ出力される。
図11〜図13に示される制御プログラムが、図1に示した制御プログラム中間コード記憶部101に格納され、デバイスグループ抽出部123及び連携デバイス抽出部124により読み出され、図2〜図4の処理の対象となる。
なお、図11〜図13に示すデバイスのうち、「X130」のように先頭に「X」のあるデバイスが、シーケンサCPUが機器から信号を入力するために用いられる変数である。
また、「Y200」のように、先頭に「Y」のあるデバイスが、シーケンサCPUが機器へ信号を出力するために用いられる変数である。
これら先頭に「X」及び「Y」があるデバイスが、信号入出力用変数の例に相当する。
なお、図11〜図13に示すデバイスのうち、「X130」のように先頭に「X」のあるデバイスが、シーケンサCPUが機器から信号を入力するために用いられる変数である。
また、「Y200」のように、先頭に「Y」のあるデバイスが、シーケンサCPUが機器へ信号を出力するために用いられる変数である。
これら先頭に「X」及び「Y」があるデバイスが、信号入出力用変数の例に相当する。
図14は、図11に示されたラダープログラムを、有閉路有向グラフとして表現し、表示した例の模式図である。
図15は、図12に示されたラダープログラムを、有閉路有向グラフとして表現し、表示した例の模式図である。
図16は、図13に示されたラダープログラムを、有閉路有向グラフとして表現し、表示した例の模式図である。
図14〜図16の有閉路有向グラフは、グラフ生成部112で生成し、結果出力部109で表示することができる。
図15は、図12に示されたラダープログラムを、有閉路有向グラフとして表現し、表示した例の模式図である。
図16は、図13に示されたラダープログラムを、有閉路有向グラフとして表現し、表示した例の模式図である。
図14〜図16の有閉路有向グラフは、グラフ生成部112で生成し、結果出力部109で表示することができる。
なお、これら図11〜図13を見ただけでは、図10に示した制御システム全体で、どのような制御が行われているのか俯瞰することは困難である。
また、実施の形態2以降で開示する方法により、これら3つの制御プログラムを図14〜図16にあるように有閉路有向グラフ(模式図)として表したとしても、ここから制御システム全体の連携動作を理解することは困難である。
なぜならば、3つの制御プログラムと2つの機器のどの信号がどのように連携して制御システム全体を構成しているのか不明な部分が多いためである。
上記で図11〜図13として説明した文章は、図5〜図9に記したデバイス連携情報例およびデバイス割付情報例を加味して、図11〜図13に使用されているデバイスの意味を加えて説明したものである。
図11〜図13の制御プログラムにコメント類をつけるか、デバイスにコメントやラベルなどの変数名をつけることなしに、これらの制御プログラムを理解することは困難であり、またたとえそれがあったとしても、複数の制御プログラムと機器の連携動作を一度に俯瞰して確認することは難しい。
以下に、本実施の形態で開示する方法によって、図14〜図16にある有閉路有向グラフがどのようにデバイスをグルーピングし、制御プログラムが連携表示されるのかについて具体的に説明する。
なお、図10および図11〜図13、図5〜図9に記した情報はすべて、制御システム全体を対象にする統合管理ツール、または個々のシーケンサCPUを対象にするエンジニアリングツールによって、保持・管理されている内容であり、制御システム全体を正常に動作させるために必要な情報である。
これらはユーザにより設定されるか、ユーザが設定した情報により自動作成される情報である。
これらの情報の準備・作成方式については、さまざまなものが考えられるが、どの方式がとられてもかまわない。
また、実施の形態2以降で開示する方法により、これら3つの制御プログラムを図14〜図16にあるように有閉路有向グラフ(模式図)として表したとしても、ここから制御システム全体の連携動作を理解することは困難である。
なぜならば、3つの制御プログラムと2つの機器のどの信号がどのように連携して制御システム全体を構成しているのか不明な部分が多いためである。
上記で図11〜図13として説明した文章は、図5〜図9に記したデバイス連携情報例およびデバイス割付情報例を加味して、図11〜図13に使用されているデバイスの意味を加えて説明したものである。
図11〜図13の制御プログラムにコメント類をつけるか、デバイスにコメントやラベルなどの変数名をつけることなしに、これらの制御プログラムを理解することは困難であり、またたとえそれがあったとしても、複数の制御プログラムと機器の連携動作を一度に俯瞰して確認することは難しい。
以下に、本実施の形態で開示する方法によって、図14〜図16にある有閉路有向グラフがどのようにデバイスをグルーピングし、制御プログラムが連携表示されるのかについて具体的に説明する。
なお、図10および図11〜図13、図5〜図9に記した情報はすべて、制御システム全体を対象にする統合管理ツール、または個々のシーケンサCPUを対象にするエンジニアリングツールによって、保持・管理されている内容であり、制御システム全体を正常に動作させるために必要な情報である。
これらはユーザにより設定されるか、ユーザが設定した情報により自動作成される情報である。
これらの情報の準備・作成方式については、さまざまなものが考えられるが、どの方式がとられてもかまわない。
≪デバイスのグルーピング≫
まず、デバイス割付情報を元にしたデバイスのグルーピングについて、図10および図14〜図16の例を元に、図2に記したフローに沿ってデバイスグループ情報の構築手順を以下に記す。
まず、デバイス割付情報を元にしたデバイスのグルーピングについて、図10および図14〜図16の例を元に、図2に記したフローに沿ってデバイスグループ情報の構築手順を以下に記す。
図10の構成によれば、シーケンサCPUの数は2であるため、処理201〜処理205の手順を2回繰り返す。
処理202では、図5に示された、各シーケンサCPUのバス割付設定情報510、520から、ユニットの数がそれぞれシーケンサCPU1010の場合は1、シーケンサCPU1040の場合は3であることが分かるため、処理204を、それらの数だけ繰り返す。
処理204では、バス割付設定情報510の最初のユニットのレコード「ネットワークマスタ1」512の情報から、先頭XYが「0x0000」であり、点数が「32点」であることが分かるため、これに従って、デバイスグループ抽出部123により、図22に示されるデバイスグループ情報2200の2201に示されたレコードG1が作成される。
同様に、図5の例えばシーケンサCPU1040の2番目のユニットである「入力(x)ユニット1」の場合は、レコード523を参照し、デバイスグループ抽出部123により、デバイスグループ情報2200の2203に示されたレコードG3が作成されることになる。
このように、処理204により、バス割付設定情報に記されたユニット単位でのグルーピング情報が構築される。
図22の例では、デバイスグループ抽出部123により、2201〜2204(G1〜G4)の4レコードが、処理204によって作成される。
同様に、図5の例えばシーケンサCPU1040の2番目のユニットである「入力(x)ユニット1」の場合は、レコード523を参照し、デバイスグループ抽出部123により、デバイスグループ情報2200の2203に示されたレコードG3が作成されることになる。
このように、処理204により、バス割付設定情報に記されたユニット単位でのグルーピング情報が構築される。
図22の例では、デバイスグループ抽出部123により、2201〜2204(G1〜G4)の4レコードが、処理204によって作成される。
次に、処理206にて、各シーケンサCPUに接続された機器の数、つまりシーケンサCPU1010の場合は0(接続なし)、シーケンサCPU1040の場合は1(機器1030)だけ、処理207を行う。
各シーケンサCPUに接続された機器の数は、制御システム全体を管理する統合管理ツール等によって保持されていてもよいし、機器プロファイル情報とともにユーザが指定してもよい。
各シーケンサCPUに接続された機器の数は、制御システム全体を管理する統合管理ツール等によって保持されていてもよいし、機器プロファイル情報とともにユーザが指定してもよい。
処理207において、デバイスグループ抽出部123は、機器1030についてのデバイスプロファイル情報920からグループ抽出を行う。
グルーピングの結果は、デバイスグループ情報2200の2205に示されたレコードG5として表現される。
なお、ここではデバイスプロファイル情報単位でグルーピングを行うとしているが、多くの機能を持つ機器や、アナログ入出力機器など同一機能を複数チャンネル持つ機器など、デバイスプロファイル内に機能の階層を持つ機器については、デバイスプロファイル内でさらにグルーピングの階層を持たせてもよい。
このようにグルーピングが階層を持つ場合は、グルーピングの番号やIDを対象デバイスとして用いることで表現できる。
ただし、このような多階層のグルーピング構造をどのように表現するのかについては、任意である。
CytoscapeやGephiなどの一般的な大規模グラフ表示ツール等で実現されている方法をとってもよい。
グルーピングの結果は、デバイスグループ情報2200の2205に示されたレコードG5として表現される。
なお、ここではデバイスプロファイル情報単位でグルーピングを行うとしているが、多くの機能を持つ機器や、アナログ入出力機器など同一機能を複数チャンネル持つ機器など、デバイスプロファイル内に機能の階層を持つ機器については、デバイスプロファイル内でさらにグルーピングの階層を持たせてもよい。
このようにグルーピングが階層を持つ場合は、グルーピングの番号やIDを対象デバイスとして用いることで表現できる。
ただし、このような多階層のグルーピング構造をどのように表現するのかについては、任意である。
CytoscapeやGephiなどの一般的な大規模グラフ表示ツール等で実現されている方法をとってもよい。
次に、処理209により、デバイスグループ抽出部123は、バス割付設定情報から、ネットワークマスタの特定を行う。
バス割付設定情報510から、シーケンサCPU1010にはネットワークマスタが1台接続されていることが分かる。
バス割付設定情報510から、シーケンサCPU1010にはネットワークマスタが1台接続されていることが分かる。
次に、処理210にて、デバイスグループ抽出部123は、このネットワークマスタに関連するネットワーク割付設定情報610を確認して、当該ネットワークの総局数を取得する。
この例では、ネットワーク割付設定情報610のレコード数が総局数となるため、3が取得できる。
このため、次の処理211〜処理214が3回繰り返される。
この例では、ネットワーク割付設定情報610のレコード数が総局数となるため、3が取得できる。
このため、次の処理211〜処理214が3回繰り返される。
処理212にて、デバイスグループ抽出部123は、ネットワーク割付設定情報610からグループを抽出する。
この例では、ネットワーク割付設定情報610の各レコード611、612、613単位でグルーピングを行う。
この結果は、デバイスグループ情報2200のそれぞれ2206、2207、2208に示されたレコードG6、G7、G8として作成される。
この例では、グルーピングの単位を局単位としているが、ネットワーク割付設定情報610の例でも示したようにデバイスのタイプによって情報が分かれている場合があるため、より詳細なグルーピングを行ってもよい。
例えば、ビット入力(LX)とビット出力(LY)とワードの3つに分割して、デバイスグループ情報へ設定してもよい。
この例では、ネットワーク割付設定情報610の各レコード611、612、613単位でグルーピングを行う。
この結果は、デバイスグループ情報2200のそれぞれ2206、2207、2208に示されたレコードG6、G7、G8として作成される。
この例では、グルーピングの単位を局単位としているが、ネットワーク割付設定情報610の例でも示したようにデバイスのタイプによって情報が分かれている場合があるため、より詳細なグルーピングを行ってもよい。
例えば、ビット入力(LX)とビット出力(LY)とワードの3つに分割して、デバイスグループ情報へ設定してもよい。
次に、処理213にて、デバイスグループ抽出部123は、ネットワーク1072に接続された機器1060について、デバイスプロファイル情報910からグルーピングを行う。
この結果、機器1060についてのデバイスグループ情報が図22の2209で示されたレコードG9として作成される。
デバイスプロファイル情報内の構造については、処理207と同じく、対象となるデバイスプロファイルの定義に従って、さらに階層的にグルーピングを行っても構わない。
この結果、機器1060についてのデバイスグループ情報が図22の2209で示されたレコードG9として作成される。
デバイスプロファイル情報内の構造については、処理207と同じく、対象となるデバイスプロファイルの定義に従って、さらに階層的にグルーピングを行っても構わない。
≪デバイスの連携≫
次に、デバイス連携情報を元にした、制御システム内の複数の制御プログラムと機器間の連携を一画面で俯瞰表示する方法について、図10および図14〜図16の例を元に、図3および図4に記したフローに沿って以下に記す。
次に、デバイス連携情報を元にした、制御システム内の複数の制御プログラムと機器間の連携を一画面で俯瞰表示する方法について、図10および図14〜図16の例を元に、図3および図4に記したフローに沿って以下に記す。
まず、システムデバイス設定情報に対する処理について図3を用いて説明する。
処理301では、連携デバイス抽出部124は、システムデバイス設定情報からシステムデバイスの数を取得する。
図10の例ではシステムデバイス設定情報1043は、図8のシステムデバイス設定情報810に示したものになっており、その数は1となる。
したがって、処理302以降を、システムデバイス設定情報1043(810)の数1だけ繰り返す。
なお、この例ではシステムデバイス設定情報1043(810)は、定義されるシステムデバイスの実体メモリが存在するシーケンサCPU1040にあるものと想定しているが、システムデバイス設定情報1043(810)は、制御システムの統合管理ツールが管理できる場所であれば、どこに存在しても構わない。
図10の例ではシステムデバイス設定情報1043は、図8のシステムデバイス設定情報810に示したものになっており、その数は1となる。
したがって、処理302以降を、システムデバイス設定情報1043(810)の数1だけ繰り返す。
なお、この例ではシステムデバイス設定情報1043(810)は、定義されるシステムデバイスの実体メモリが存在するシーケンサCPU1040にあるものと想定しているが、システムデバイス設定情報1043(810)は、制御システムの統合管理ツールが管理できる場所であれば、どこに存在しても構わない。
処理303では、連携デバイス抽出部124は、システムデバイス設定情報1043(810)から名称と実デバイスを取得する。
システムデバイス設定情報810のレコード811に示された情報から、システムデバイス名称が“起動許可信号”であることと、定義CPUとアドレスの情報から、実デバイスが「シーケンサCPU1040のアドレスX1000」であることを得る。
また、当該システムデバイスを使用しているシーケンサCPUが、CPU1010であることが分かる。
定義CPUと使用CPUに関してはIDで定義されていてもよいし、あるいは制御プログラム単位で指定されていてもよい。
次に、処理304にて、当該システムデバイスが使用される制御プログラムを特定する。
図8の使用CPUの欄から、当該システムデバイスを使用しているシーケンサCPUが1010、つまり制御プログラム1011と1012であることが判明する。
なお、図8では「CPU1010」と記したが実際には各シーケンサCPUを特定するIDとして情報保持していてもよいし、当該システムデバイスが使用されている制御プログラムを直接指定していてもよい。
システムデバイス設定情報810のレコード811に示された情報から、システムデバイス名称が“起動許可信号”であることと、定義CPUとアドレスの情報から、実デバイスが「シーケンサCPU1040のアドレスX1000」であることを得る。
また、当該システムデバイスを使用しているシーケンサCPUが、CPU1010であることが分かる。
定義CPUと使用CPUに関してはIDで定義されていてもよいし、あるいは制御プログラム単位で指定されていてもよい。
次に、処理304にて、当該システムデバイスが使用される制御プログラムを特定する。
図8の使用CPUの欄から、当該システムデバイスを使用しているシーケンサCPUが1010、つまり制御プログラム1011と1012であることが判明する。
なお、図8では「CPU1010」と記したが実際には各シーケンサCPUを特定するIDとして情報保持していてもよいし、当該システムデバイスが使用されている制御プログラムを直接指定していてもよい。
次に、処理305にて、連携デバイス抽出部124は、システムデバイスのグルーピングを行う。
システムデバイス設定情報811により、定義CPU1040内の制御プログラム1041のデバイス「X1000」と、使用CPU1010内の制御プログラム1012のデバイス“起動許可信号”がグルーピングされ、図23に示されたデバイスグループ情報例のレコード2313(G10)として追加される。
システムデバイス設定情報811により、定義CPU1040内の制御プログラム1041のデバイス「X1000」と、使用CPU1010内の制御プログラム1012のデバイス“起動許可信号”がグルーピングされ、図23に示されたデバイスグループ情報例のレコード2313(G10)として追加される。
次に、処理306にて、連携デバイス抽出部124は、定義デバイスと使用デバイスの間に新しいエッジを定義する。
この例では制御プログラム1041のデバイス「X1000」と、制御プログラム1012のデバイス“起動許可信号”の間にエッジが追加される。
これは複数プログラムや機器間の連携を表現するために追加される。
また、使用デバイスが2箇所以上記述されている場合は、定義デバイスから使用デバイスへ、定義デバイスをハブとしたスター型トポロジにてエッジが追加される。
この例では制御プログラム1041のデバイス「X1000」と、制御プログラム1012のデバイス“起動許可信号”の間にエッジが追加される。
これは複数プログラムや機器間の連携を表現するために追加される。
また、使用デバイスが2箇所以上記述されている場合は、定義デバイスから使用デバイスへ、定義デバイスをハブとしたスター型トポロジにてエッジが追加される。
次に、リフレッシュ設定情報に対する処理について図4を用いて説明する。
処理401では、連携デバイス抽出部124は、シーケンサCPUの数だけ繰返しを行う。
図10の例では2回繰り返す。
図10の例では2回繰り返す。
次に、処理402にて、連携デバイス抽出部124は、図2の処理202,処理203の処理と同様の処理を行って、ネットワークマスタの数を取得する。
ここではシーケンサCPU1010に注目し、ネットワークマスタ1020の数、1を取得する。
つまり1回だけ繰返す。
ここではシーケンサCPU1010に注目し、ネットワークマスタ1020の数、1を取得する。
つまり1回だけ繰返す。
次に、処理403にて、連携デバイス抽出部124は、ネットワークマスタ1020用に用意された、リフレッシュ設定情報710の解析を行う。
具体的にはリフレッシュ設定情報710に設定されたレコード毎にデバイスの分類を行う。
レコード711から、ネットワークマスタ側のビット入力デバイス(LX)の0x0000〜0x003Fの64点分が、シーケンサCPU側のデバイスXの0x0100〜0x013Fまでにリフレッシュされることが分かる。
また、レコード712から、ネットワークマスタ側のビット出力デバイス(LY)の0x0000〜0x003Fの64点分が、シーケンサCPU側のデバイスYの0x0200〜0x23Fまでにリフレッシュされることが分かる。
また、レコード713から、ネットワークマスタ側のワードデバイス(LW)の0x0000〜0x003Fの64点分が、シーケンサCPU側のデバイスDの0x0100〜0x13Fまでにリフレッシュされることが分かる。
具体的にはリフレッシュ設定情報710に設定されたレコード毎にデバイスの分類を行う。
レコード711から、ネットワークマスタ側のビット入力デバイス(LX)の0x0000〜0x003Fの64点分が、シーケンサCPU側のデバイスXの0x0100〜0x013Fまでにリフレッシュされることが分かる。
また、レコード712から、ネットワークマスタ側のビット出力デバイス(LY)の0x0000〜0x003Fの64点分が、シーケンサCPU側のデバイスYの0x0200〜0x23Fまでにリフレッシュされることが分かる。
また、レコード713から、ネットワークマスタ側のワードデバイス(LW)の0x0000〜0x003Fの64点分が、シーケンサCPU側のデバイスDの0x0100〜0x13Fまでにリフレッシュされることが分かる。
次に、先に説明したネットワーク割付設定情報610によって設定されたデバイスグループ情報を修正する。
前述したように、図2の処理212では、ネットワーク割付設定情報610からグループを抽出しているが、これはネットワークの各局に割り当てられた、ネットワークマスタが保持するデバイス、つまり図10でのデバイスメモリ1021の割り当てに従ってグルーピングを行っている。
しかし、制御プログラムで直接使用するのは通常シーケンサCPU内のデバイス、つまり図10でのデバイスメモリ1016になるため、リフレッシュ設定情報により、シーケンサCPUとネットワークマスタ間でデバイスのリフレッシュが行われることが多い。
したがって、処理212時点でグルーピングした、ネットワークマスタが保持するネットワークデバイスを、処理404にてシーケンサCPU内のデバイスに置き換えることを行う。
ただし、ネットワークマスタのデバイスと、シーケンサCPU内のデバイスを明確に区別する必要がある場合は、処理404によって置き換えるのではなく、新たにデバイスグループ情報を追記することもできる。
これにより、処理212で実施したネットワークデバイスの割付によるグルーピングと、処理404で実施するリフレッシュ設定情報によるグルーピングを独立させて表現することができる。
前述したように、図2の処理212では、ネットワーク割付設定情報610からグループを抽出しているが、これはネットワークの各局に割り当てられた、ネットワークマスタが保持するデバイス、つまり図10でのデバイスメモリ1021の割り当てに従ってグルーピングを行っている。
しかし、制御プログラムで直接使用するのは通常シーケンサCPU内のデバイス、つまり図10でのデバイスメモリ1016になるため、リフレッシュ設定情報により、シーケンサCPUとネットワークマスタ間でデバイスのリフレッシュが行われることが多い。
したがって、処理212時点でグルーピングした、ネットワークマスタが保持するネットワークデバイスを、処理404にてシーケンサCPU内のデバイスに置き換えることを行う。
ただし、ネットワークマスタのデバイスと、シーケンサCPU内のデバイスを明確に区別する必要がある場合は、処理404によって置き換えるのではなく、新たにデバイスグループ情報を追記することもできる。
これにより、処理212で実施したネットワークデバイスの割付によるグルーピングと、処理404で実施するリフレッシュ設定情報によるグルーピングを独立させて表現することができる。
具体的に、デバイスグループ情報2200のレコード2206(G6)に記されたデバイスグループについて説明する。
デバイスグループ情報2206(G6)では子局1(つまりネットワークマスタ)のデバイスであるLX0000〜001F、LY0000〜001F、LW0000〜000Fをグルーピングしている。
これに注目して説明する。
リフレッシュ設定情報710のLXデバイスに対するレコード711では、LX0000〜003FをCPUのX0100〜013Fへリフレッシュすることが記されている。
つまり、デバイスグループ情報2206(G6)をネットワークマスタのデバイスからシーケンサCPUのデバイスへ置き換えるため、LX0000〜001Fまでを、シーケンサCPUのデバイスX0100〜011Fへ置き換える。
同様に、リフレッシュ設定情報710のLYデバイスに対するレコード712では、LY0000〜003FをCPUのY0200〜023Fへリフレッシュすることが記されている。
つまり、デバイスグループ情報2206(G6)をネットワークマスタのデバイスからシーケンサCPUのデバイスへ置き換えるため、LY0000〜001Fまでを、シーケンサCPUのデバイスY0200〜021Fへ置き換える。
同様に、リフレッシュ設定情報710のLWデバイスに対するレコード713では、LW0000〜003FをCPUのD0100〜D013Fへリフレッシュすることが記されている。
つまり、デバイスグループ情報2206(G6)をネットワークマスタのデバイスからシーケンサCPUのデバイスへ置き換えるため、LW0000〜001Fまでを、シーケンサCPUのデバイスD0100〜D011Fへ置き換える。
以上がデバイスグループ情報2206(G6)の置換え手順であり、この結果、子局1について、図23のレコード2306(G6−1)のデバイスグループ情報が作成される。
このことは子局2、3についても行われ、同様に2307、2308のレコード(G7−1、G8−1)が作成される。
また、さらに、図10におけるネットワークユニット1050とシーケンサCPU1040の間に設定されたリフレッシュ設定情報720についても同様の処理が行われ、これにより図23のレコード2309〜2311のデバイスグループ情報(G6−2、G7−2、G8−2)が作成される。
デバイスグループ情報2206(G6)では子局1(つまりネットワークマスタ)のデバイスであるLX0000〜001F、LY0000〜001F、LW0000〜000Fをグルーピングしている。
これに注目して説明する。
リフレッシュ設定情報710のLXデバイスに対するレコード711では、LX0000〜003FをCPUのX0100〜013Fへリフレッシュすることが記されている。
つまり、デバイスグループ情報2206(G6)をネットワークマスタのデバイスからシーケンサCPUのデバイスへ置き換えるため、LX0000〜001Fまでを、シーケンサCPUのデバイスX0100〜011Fへ置き換える。
同様に、リフレッシュ設定情報710のLYデバイスに対するレコード712では、LY0000〜003FをCPUのY0200〜023Fへリフレッシュすることが記されている。
つまり、デバイスグループ情報2206(G6)をネットワークマスタのデバイスからシーケンサCPUのデバイスへ置き換えるため、LY0000〜001Fまでを、シーケンサCPUのデバイスY0200〜021Fへ置き換える。
同様に、リフレッシュ設定情報710のLWデバイスに対するレコード713では、LW0000〜003FをCPUのD0100〜D013Fへリフレッシュすることが記されている。
つまり、デバイスグループ情報2206(G6)をネットワークマスタのデバイスからシーケンサCPUのデバイスへ置き換えるため、LW0000〜001Fまでを、シーケンサCPUのデバイスD0100〜D011Fへ置き換える。
以上がデバイスグループ情報2206(G6)の置換え手順であり、この結果、子局1について、図23のレコード2306(G6−1)のデバイスグループ情報が作成される。
このことは子局2、3についても行われ、同様に2307、2308のレコード(G7−1、G8−1)が作成される。
また、さらに、図10におけるネットワークユニット1050とシーケンサCPU1040の間に設定されたリフレッシュ設定情報720についても同様の処理が行われ、これにより図23のレコード2309〜2311のデバイスグループ情報(G6−2、G7−2、G8−2)が作成される。
次に、処理405にて、グルーピングされたデバイス群について、デバイス番号が同じものについては、そのデバイス間でエッジが追加される。
以上のようにデバイス連携情報、つまりシステムデバイス情報とリフレッシュ設定情報を元にしてグルーピングおよびエッジの追加が行われることで、図14〜図16にデバイス割付情報を適用して図17に示した構造ができ、更に、図17から図18に示した構造ができあがる。
図17では、デバイスX130、X138、X139、D130が囲み線1710によりグルーピングされ、また、これらデバイスが機器1060のデバイス名である「スイッチ1」(図9)と関連付けられている。
また、デバイスX20とY32が囲み線1720によりグルーピングされ、また、これらデバイスが機器1030のデバイス名である「モータ1」(図9)と関連付けられている。
また、デバイスX20とY32が囲み線1720によりグルーピングされ、また、これらデバイスが機器1030のデバイス名である「モータ1」(図9)と関連付けられている。
囲み線1710によるデバイスX130、S138、X139、D130のグルーピングは、図4の処理405による。
図4の処理405は、図24に示す手順で実現される。
図24は,プログラムで使用されている各デバイスが,デバイスグループの対象デバイスに含まれるかどうかの判定を行っている。
図24の処理2401では、対象となっている制御プログラム内のすべてのデバイスを対象としてループする。次の処理2402では図23に示されるようなデバイスグループ情報の各グループについてループする。
処理2403ではデバイスグループ情報の対象デバイス欄にベースアドレスとして未決定(変数が使用されている)かどうか確認する。ベースアドレスが未計算の場合は、処理2404にて、計算を行う。ベースアドレス計算にはデバイス割付設定情報とリフレッシュ設定情報(図5〜8)を用いる。
次に処理2405にて、制御プログラム内のデバイスについて、各グループに該当するか否かのチェックを行う。グループに該当する場合は、そのグループのデバイスグループ情報として注目している制御プログラム内のデバイスが追加される。これらがデバイスグループ情報および制御プログラム内の全デバイスについて繰り返される(処理24037、2408)。
以下に、図24の処理フローを囲み線1710の例をとって説明する。
囲み線1710によるグルーピングでは、図25に示すように図23のレコードG8−3とレコードG9が用いられる。
連携デバイス抽出部124は、図23のレコードのうち対象機器がCPU1010となっているレコード(G1、G6−1、G7−1、G8−1)の対象デバイスの欄に記述されている変数範囲の各変数をベースアドレスとし、総当たりで、図23のG9のレコードに記述されている「X+0000、X+0008−0009、D+0000」とのオフセット加算を行う。
そして、図23のレコードG8−1に記述されている「X0130」と「D0130」をベースアドレスとしたオフセット加算の加算結果の中に、X130、X138、X139、D130が含まれるため、図23のレコードG9のグループ名「スイッチ1」から、連携デバイス抽出部124は、X130、X138、X139、D130はシーケンサCPU1010が「スイッチ1」と信号を入出力するための変数であると判断することができる。
この結果、図17に示すように、バイスX130、X138、X139、D130が囲み線1710によりグルーピングされ、また、これらデバイスが「スイッチ1」と関連付けられる。
図4の処理405は、図24に示す手順で実現される。
図24は,プログラムで使用されている各デバイスが,デバイスグループの対象デバイスに含まれるかどうかの判定を行っている。
図24の処理2401では、対象となっている制御プログラム内のすべてのデバイスを対象としてループする。次の処理2402では図23に示されるようなデバイスグループ情報の各グループについてループする。
処理2403ではデバイスグループ情報の対象デバイス欄にベースアドレスとして未決定(変数が使用されている)かどうか確認する。ベースアドレスが未計算の場合は、処理2404にて、計算を行う。ベースアドレス計算にはデバイス割付設定情報とリフレッシュ設定情報(図5〜8)を用いる。
次に処理2405にて、制御プログラム内のデバイスについて、各グループに該当するか否かのチェックを行う。グループに該当する場合は、そのグループのデバイスグループ情報として注目している制御プログラム内のデバイスが追加される。これらがデバイスグループ情報および制御プログラム内の全デバイスについて繰り返される(処理24037、2408)。
以下に、図24の処理フローを囲み線1710の例をとって説明する。
囲み線1710によるグルーピングでは、図25に示すように図23のレコードG8−3とレコードG9が用いられる。
連携デバイス抽出部124は、図23のレコードのうち対象機器がCPU1010となっているレコード(G1、G6−1、G7−1、G8−1)の対象デバイスの欄に記述されている変数範囲の各変数をベースアドレスとし、総当たりで、図23のG9のレコードに記述されている「X+0000、X+0008−0009、D+0000」とのオフセット加算を行う。
そして、図23のレコードG8−1に記述されている「X0130」と「D0130」をベースアドレスとしたオフセット加算の加算結果の中に、X130、X138、X139、D130が含まれるため、図23のレコードG9のグループ名「スイッチ1」から、連携デバイス抽出部124は、X130、X138、X139、D130はシーケンサCPU1010が「スイッチ1」と信号を入出力するための変数であると判断することができる。
この結果、図17に示すように、バイスX130、X138、X139、D130が囲み線1710によりグルーピングされ、また、これらデバイスが「スイッチ1」と関連付けられる。
また、囲み線1720によるデバイスX20とY32のグルーピングも、図4の処理405による。
囲み線1720によるグルーピングでは、図25に示すように図23のレコードG3、レコードG4とレコードG5が用いられる。
連携デバイス抽出部124は、図23のレコードのうち対象機器がCPU1040となっているレコード(G2、G3、G4、G6−2、G7−2、G8−2)の対象デバイスの欄に記述されている変数範囲の各変数をベースアドレスとし、総当たりで、図23のG5のレコードに記述されている「X+0000−0001、Y+0002−0003」とのオフセット加算を行う。
そして、図23のレコードG3に記述されている「X0020」とレコードG4に記述されている「Y0030」をベースアドレスとしたオフセット加算の加算結果の中に、X20とY32が含まれるため、図23のレコードG5のグループ名「モータ1」から、連携デバイス抽出部124は、X20とY32はシーケンサCPU1040が「モータ1」と信号を入出力するための変数であると判断することができる。
この結果、図17に示すように、X20とY32が囲み線1720によりグルーピングされ、また、これらデバイスが「モータ1」と関連付けられる。
囲み線1720によるグルーピングでは、図25に示すように図23のレコードG3、レコードG4とレコードG5が用いられる。
連携デバイス抽出部124は、図23のレコードのうち対象機器がCPU1040となっているレコード(G2、G3、G4、G6−2、G7−2、G8−2)の対象デバイスの欄に記述されている変数範囲の各変数をベースアドレスとし、総当たりで、図23のG5のレコードに記述されている「X+0000−0001、Y+0002−0003」とのオフセット加算を行う。
そして、図23のレコードG3に記述されている「X0020」とレコードG4に記述されている「Y0030」をベースアドレスとしたオフセット加算の加算結果の中に、X20とY32が含まれるため、図23のレコードG5のグループ名「モータ1」から、連携デバイス抽出部124は、X20とY32はシーケンサCPU1040が「モータ1」と信号を入出力するための変数であると判断することができる。
この結果、図17に示すように、X20とY32が囲み線1720によりグルーピングされ、また、これらデバイスが「モータ1」と関連付けられる。
図18において、囲み線1810と1820は、図17の囲み線1710と1720と同じである。
囲み線1830は、制御プログラム1011(図11、図14)と制御プログラム1012(図12、図15)で共通に記述されている「Y200」をグルーピングしたものであり、ネットワーク割付情報610とリフレッシュ設定情報710に基づく。
また、囲み線1840は、制御プログラム1012(図12、図15)の“起動許可信号”と制御プログラム1041(図13、図16)の「X1000」をグルーピングしたものであり、システムデバイス設定情報810に基づく。
囲み線1840により、制御プログラム1012と制御プログラム1041が連携関係にあることが表される。
囲み線1830は、制御プログラム1011(図11、図14)と制御プログラム1012(図12、図15)で共通に記述されている「Y200」をグルーピングしたものであり、ネットワーク割付情報610とリフレッシュ設定情報710に基づく。
また、囲み線1840は、制御プログラム1012(図12、図15)の“起動許可信号”と制御プログラム1041(図13、図16)の「X1000」をグルーピングしたものであり、システムデバイス設定情報810に基づく。
囲み線1840により、制御プログラム1012と制御プログラム1041が連携関係にあることが表される。
また、囲み線1830によるグルーピングは、図25に示すように図23のレコードG6−1が用いられる。
レコードG6−1の解釈は、「対象機器であるシーケンサCPU1010について、X0100〜011Fと、Y0200〜021Fと、D0100〜010Fをグルーピングする」となる。
図17の1831のY200は、制御プログラム1011で使用されているY200(図11の1107)である。
また、図18の1832のY200は、制御プログラム1012で使用されているY200(図12の1201)である。
これら2つの制御プログラム1011、1012は、両方ともCPU1010内で動作している。
このため、G6−1のグルーピング情報にてグルーピングが行われる。
レコードG6−1の解釈は、「対象機器であるシーケンサCPU1010について、X0100〜011Fと、Y0200〜021Fと、D0100〜010Fをグルーピングする」となる。
図17の1831のY200は、制御プログラム1011で使用されているY200(図11の1107)である。
また、図18の1832のY200は、制御プログラム1012で使用されているY200(図12の1201)である。
これら2つの制御プログラム1011、1012は、両方ともCPU1010内で動作している。
このため、G6−1のグルーピング情報にてグルーピングが行われる。
このように、図14〜図16にて別々に示された3つの制御プログラムと2つの機器が、図18にて1つに接続され、連携動作の様子を表現することができている。
なお、図17、図18は、図14〜図16までに示された個々の制御プログラムのグラフ表現と、図23に示されるデバイスグループ情報をまとめたもので、情報処理装置100内で図17、図18に相当する情報を保持すればよく、結果出力部109により表示されなくてもよい。
結果出力部109は、例えば、後述する図19〜図21の内容を表示する。
また、これとは異なり、図17又は図18の内容を結果出力部109で表示してもよい。
図17又は図18の内容を結果出力部109で表示する場合は、グラフ生成部112が図17又は図18の内容を表す表示情報を生成する。
なお、図17、図18は、図14〜図16までに示された個々の制御プログラムのグラフ表現と、図23に示されるデバイスグループ情報をまとめたもので、情報処理装置100内で図17、図18に相当する情報を保持すればよく、結果出力部109により表示されなくてもよい。
結果出力部109は、例えば、後述する図19〜図21の内容を表示する。
また、これとは異なり、図17又は図18の内容を結果出力部109で表示してもよい。
図17又は図18の内容を結果出力部109で表示する場合は、グラフ生成部112が図17又は図18の内容を表す表示情報を生成する。
≪グルーピングされたデバイスの表示≫
最後に、グラフ生成部112が、図18に例として示した制御プログラムのグラフ表現をどのように加工し、結果出力部109が、実際にどのような形式で画面上に表示するかについて記す。
最後に、グラフ生成部112が、図18に例として示した制御プログラムのグラフ表現をどのように加工し、結果出力部109が、実際にどのような形式で画面上に表示するかについて記す。
図18のうち、デバイス連携情報によりグルーピングされた箇所、つまり囲み線1830と1840でグルーピングしたデバイス群を1つのノードとして表現すると、図19に示したようになる。
つまり、囲み線1830により相互に関連付けられた2つのノード(1831と1832)を1つのノード(1930)に集約し、また、2つのノード(1831と1832)有向エッジを、集約された1つのノード(1930)の有向エッジとする。
同様に、囲み線1840により相互に関連付けられた2つのノード(1841と1842)を1つのノード(1940)に集約し、また、2つのノード(1841と1842)有向エッジを、集約された1つのノード(1940)の有向エッジとする。
つまり、囲み線1830により相互に関連付けられた2つのノード(1831と1832)を1つのノード(1930)に集約し、また、2つのノード(1831と1832)有向エッジを、集約された1つのノード(1930)の有向エッジとする。
同様に、囲み線1840により相互に関連付けられた2つのノード(1841と1842)を1つのノード(1940)に集約し、また、2つのノード(1841と1842)有向エッジを、集約された1つのノード(1940)の有向エッジとする。
さらに、図19のうち、デバイス割付情報によりグルーピングされた箇所、つまり囲み線1910と1920でグルーピングしたデバイス群を1つのノードとして表現すると、図20に示したようになる。
このようにグルーピングしたデバイスを1つのノードとして表現することによって、表示すべきノードの数が削減され、有閉路有向グラフ表現された制御プログラムの可読性が高まる。
さらに、縮約されたノード、2010、2020、2030、2040はユーザ操作によって、いつでも独立に展開することが容易に可能である。
このようにグルーピングしたデバイスを1つのノードとして表現することによって、表示すべきノードの数が削減され、有閉路有向グラフ表現された制御プログラムの可読性が高まる。
さらに、縮約されたノード、2010、2020、2030、2040はユーザ操作によって、いつでも独立に展開することが容易に可能である。
さらに、デバイスグループ情報はユーザ操作によって追加することができるため、例えば図20において、制御プログラムの処理に対応する、内部デバイス2051と内部タイマ2052を「制御プログラムA」というノードにグルーピングし、同様に内部カウンタ2053を「制御プログラムB」、内部デバイス2055を「制御プログラムC」にグルーピングすることで、例えば図21に示すような表示をさせることが可能である。
「制御プログラムA」は、図10の制御プログラム1011に相当し、「制御プログラムB」は、制御プログラム1012に相当し、「制御プログラムC」は、制御プログラム1041に相当する。
「制御プログラムA」は、図10の制御プログラム1011に相当し、「制御プログラムB」は、制御プログラム1012に相当し、「制御プログラムC」は、制御プログラム1041に相当する。
さらに、この図21のノードについて、図23に示すデバイスグループ情報の最右列に示したようなアイコン情報(Motor01.jpg、Switch01.jpg)から、特定の図などを表示させることで、ユーザにとってより分かりやすい制御システムの全体像として表示することができる。
≪実施の形態における効果≫
本実施の形態が開示する方法によれば、ネットワークやバスなどで接続された、複数の制御プログラムや入出力信号を持つ機器間の連携動作を容易に確認するため、対象とする制御システム全体の制御ロジックを1つの画面に表示する。
この際に、複数の制御プログラムや入出力信号を持つ機器間の同一信号を抽出するために、これら複数の制御プログラムや機器の信号をネットワークやバスを介して通信するためのパラメータ設定情報(デバイス連携情報)を用いる。
さらに表示された制御ロジックの可読性向上のために、制御システムの設定情報(デバイス割付情報)から、デバイスを制御ロジック上意味のある単位でグルーピングして表示、またはユーザの指定する任意の単位でグルーピングして表示、またこれらのグルーピングを単一アイコンで表示する。
この方法により、複数の制御プログラムと機器から成る制御システム全体について、段階に応じて複数のデバイスをグルーピングし縮約してアイコン表示することができるため、制御システム全体を表示しながら、制御システム設計時や障害発生時に、ユーザは制御システム全体を画面内で俯瞰して見ながら、必要な部分は制御プログラムや機器のデバイス(信号)レベルまで詳細表示することが可能となる。
本実施の形態が開示する方法によれば、ネットワークやバスなどで接続された、複数の制御プログラムや入出力信号を持つ機器間の連携動作を容易に確認するため、対象とする制御システム全体の制御ロジックを1つの画面に表示する。
この際に、複数の制御プログラムや入出力信号を持つ機器間の同一信号を抽出するために、これら複数の制御プログラムや機器の信号をネットワークやバスを介して通信するためのパラメータ設定情報(デバイス連携情報)を用いる。
さらに表示された制御ロジックの可読性向上のために、制御システムの設定情報(デバイス割付情報)から、デバイスを制御ロジック上意味のある単位でグルーピングして表示、またはユーザの指定する任意の単位でグルーピングして表示、またこれらのグルーピングを単一アイコンで表示する。
この方法により、複数の制御プログラムと機器から成る制御システム全体について、段階に応じて複数のデバイスをグルーピングし縮約してアイコン表示することができるため、制御システム全体を表示しながら、制御システム設計時や障害発生時に、ユーザは制御システム全体を画面内で俯瞰して見ながら、必要な部分は制御プログラムや機器のデバイス(信号)レベルまで詳細表示することが可能となる。
このため、制御プログラムの構造化やデバッグ・保守作業の対象が一つの制御プログラムのスコープ内に限定されてしまうことがなく、また複数の制御プログラムと機器から構成される制御システム全体を俯瞰して表示する場合においても、注目したい機器や制御プログラム部分のみを詳細に表示し、他の構成要素は縮約して簡単なアイコン等で表示することができるため、多数のデバイスが用いられる制御システムにおいても、可読性を損なわずに、制御システムのロジック確認が可能となる。
以上、本実施の形態では、
制御プログラムで制御される変数(デバイス)を抽出してノードとし、デバイス間の相互作用を依存関係として抽出してエッジとすることで、制御プログラムを有閉路有向グラフとしてGUIにて表示する技術において、複数の制御プログラムや入出力機器で共通に使用されるデバイスを1つのノードとして表示、あるいはこれらのデバイスをエッジで接続して関連を表示することで、制御システム全体を1つの有閉路有向グラフとしてGUIにて表示するシステムを説明した。
制御プログラムで制御される変数(デバイス)を抽出してノードとし、デバイス間の相互作用を依存関係として抽出してエッジとすることで、制御プログラムを有閉路有向グラフとしてGUIにて表示する技術において、複数の制御プログラムや入出力機器で共通に使用されるデバイスを1つのノードとして表示、あるいはこれらのデバイスをエッジで接続して関連を表示することで、制御システム全体を1つの有閉路有向グラフとしてGUIにて表示するシステムを説明した。
また、複数の制御プログラムや入出力機器で共通に使用されるデバイスを特定するために、複数の制御プログラムや入出力機器を接続するネットワークやバスのパラメータとして設定されている「デバイス連携情報」を利用する、共通デバイス特定方法を説明した。
また、制御プログラムで制御される変数(デバイス)を抽出してノードとし、デバイス間の相互作用を依存関係として抽出してエッジとすることで、単一あるいは複数の制御プログラムを有閉路有向グラフとしてGUIにて表示する技術において、デバイスを任意の単位(デバイス種別単位、デバイス番号ごとの利用単位、デバイスの制御プログラムでの役割単位、ユーザの指定した単位)ごとに、画面上の近い座標位置に配置し、分類ごとにグルーピングして表示するシステムを説明した。
また、デバイスのグルーピングの単位を決定するために、制御プログラムのパラメータとして設定されている「デバイス割付情報」を利用することを特徴とする、デバイスのグルーピング方法を説明した。
また、グルーピングされたデバイスを縮約して1つの抽象ノードとして定義して、抽象的なアイコンによって表示する表示方法を説明した。
また、自動的あるいはユーザによる明示的な指定により、グルーピング表示とアイコン表示を切り替えて表示する表示方法を説明した。
また、以下の構成を説明した。
1)デバイス割付情報からデバイスグループ情報を抽出し、制御プログラムで用いられているデバイスについてまとめてノードとして登録する「デバイスグループ抽出部」、
2)デバイス連携情報からデバイスグループ情報を抽出し、制御プログラムで用いられているデバイスについてまとめてノードとして登録する「連携デバイス抽出部」、
3)複数のデバイスを選択し、デバイスグループとして登録する「デバイスグループ指定部」、
4)デバイスグループ情報と、ノード構造体、接続情報、エッジ構造体から、デバイスグループを縮約して1つのノードとして表示する形式と、デバイスグループを展開して複数のノードとして表示する形式を切り替える「グラフ生成部」、
5)接続情報に格納された有閉路有向グラフの情報を画面に出力する「結果出力部」。
1)デバイス割付情報からデバイスグループ情報を抽出し、制御プログラムで用いられているデバイスについてまとめてノードとして登録する「デバイスグループ抽出部」、
2)デバイス連携情報からデバイスグループ情報を抽出し、制御プログラムで用いられているデバイスについてまとめてノードとして登録する「連携デバイス抽出部」、
3)複数のデバイスを選択し、デバイスグループとして登録する「デバイスグループ指定部」、
4)デバイスグループ情報と、ノード構造体、接続情報、エッジ構造体から、デバイスグループを縮約して1つのノードとして表示する形式と、デバイスグループを展開して複数のノードとして表示する形式を切り替える「グラフ生成部」、
5)接続情報に格納された有閉路有向グラフの情報を画面に出力する「結果出力部」。
実施の形態2.
実施の形態2〜4では、図14〜図20で示したグラフ表示を生成する方法を説明する。
実施の形態2〜4では、図14〜図20で示したグラフ表示を生成する方法を説明する。
≪概要≫
まず、本実施の形態に係る情報処理装置の動作の概要を説明し、その後、構成例及び動作手順の詳細を説明する。
まず、本実施の形態に係る情報処理装置の動作の概要を説明し、その後、構成例及び動作手順の詳細を説明する。
本実施の形態に係る情報処理装置は、制御プログラムで制御される変数(デバイス)を抽出してノードとし、デバイス間の相互作用を依存関係として抽出してエッジとすることで、制御プログラムを有閉路有向グラフとしてみて、その構造を保持することで、制御プログラム設計時あるいは保守時に、ユーザ作業の効率化、作業の時間短縮を支援する。
また、本実施の形態に係る情報処理装置は、例えば、制御プログラム設計時に制御プログラム内で使用されているデバイス間の関係を、GUIにて可視的に表示することや、制御プログラム保守時にGUIにて可視的に表示された依存関係グラフ上にて、デバイス値をモニタする、などの機能を持つ。
また、本実施の形態に係る情報処理装置は、例えば、制御プログラム設計時に制御プログラム内で使用されているデバイス間の関係を、GUIにて可視的に表示することや、制御プログラム保守時にGUIにて可視的に表示された依存関係グラフ上にて、デバイス値をモニタする、などの機能を持つ。
ここでは、本実施の形態に係る情報処理装置が対象とする言語の1つとして、ラダー(LD)言語を説明するとともに、LD言語で記述された制御プログラムから有閉路有向グラフを生成する例を説明する。
ラダー(LD)言語は電気回路をモデル化した言語である。
LD言語では、左右の母線間をラング(回路ブロック)の単位で通常一つの意味のある処理が記述される。
回路ブロックにはその処理に必要な変数(デバイス)が接点やコイルの形で登場する。
したがって、LD言語はデバイス間の処理を列挙した「処理志向型言語」と考えることができる。
なお、インストラクションリスト(IL)言語についても、構成する命令は基本的にLD言語の要素と一対一に対応可能である。
しかしながら、制御プログラムの目的は、物理的な機械の駆動や電子デバイスへの電圧付加など、実際の物理的なデバイスへの指示が基本である。
例えば、ある生産ラインにおいて以下の仕様にて制御を行う必要があるとする。
1)センサAがONで、押しボタンB1押下時に、ベルトコンベアCのモータが正転する。
2)センサAがONで、押しボタンB2押下時に、ベルトコンベアCのモータが逆転する。
この制御プログラムを考えた場合、上記の1)の文と2)の文をそれぞれ記述するのがラダー言語(処理指向型言語)である。
LD言語において1)及び2)の文(処理)が、それぞれラングで表現され、それぞれのラングには、以下のように、A、B1、C(正転)およびA、B2、C(逆転)の3つのデバイス間の関係が記述されることになる。
・センサA:ベルトコンベアCの正転・逆転に影響を与える
・押しボタンB1:ベルトコンベアCの正転に影響を与える
・押しボタンB2:ベルトコンベアCの逆転に影響を与える
・ベルトコンベアC(正転):センサA、押しボタンB1に影響を受ける
・ベルトコンベアC(逆転):センサA、押しボタンB2に影響を受ける
LD言語では、左右の母線間をラング(回路ブロック)の単位で通常一つの意味のある処理が記述される。
回路ブロックにはその処理に必要な変数(デバイス)が接点やコイルの形で登場する。
したがって、LD言語はデバイス間の処理を列挙した「処理志向型言語」と考えることができる。
なお、インストラクションリスト(IL)言語についても、構成する命令は基本的にLD言語の要素と一対一に対応可能である。
しかしながら、制御プログラムの目的は、物理的な機械の駆動や電子デバイスへの電圧付加など、実際の物理的なデバイスへの指示が基本である。
例えば、ある生産ラインにおいて以下の仕様にて制御を行う必要があるとする。
1)センサAがONで、押しボタンB1押下時に、ベルトコンベアCのモータが正転する。
2)センサAがONで、押しボタンB2押下時に、ベルトコンベアCのモータが逆転する。
この制御プログラムを考えた場合、上記の1)の文と2)の文をそれぞれ記述するのがラダー言語(処理指向型言語)である。
LD言語において1)及び2)の文(処理)が、それぞれラングで表現され、それぞれのラングには、以下のように、A、B1、C(正転)およびA、B2、C(逆転)の3つのデバイス間の関係が記述されることになる。
・センサA:ベルトコンベアCの正転・逆転に影響を与える
・押しボタンB1:ベルトコンベアCの正転に影響を与える
・押しボタンB2:ベルトコンベアCの逆転に影響を与える
・ベルトコンベアC(正転):センサA、押しボタンB1に影響を受ける
・ベルトコンベアC(逆転):センサA、押しボタンB2に影響を受ける
上記のように、制御対象であるデバイス間の関係を表現するのが本実施の形態に係る表示形式の考え方であり、本実施の形態では、それを有閉路有向グラフ構造として保持する方法をとる。
前述のとおり、FA・PAシステムの制御プログラムはその目的が、具体的な「デバイス」を制御することである。
LD言語やIL言語で記述される制御プログラムのほとんどは「接点→コイル」の組合せで記述され、その単位処理自体は単純なものである。
またFA・PAシステムの制御プログラムは、デバイスに対する操作として間接アドレシング(ポインタ)などを使用することは少ない特徴もある。
基本的に、物理的に実在する機器に対応するものとして各デバイスが定義されるため、デバイスをポインタやインデクスとして使用する例は多くない。
前述のとおり、FA・PAシステムの制御プログラムはその目的が、具体的な「デバイス」を制御することである。
LD言語やIL言語で記述される制御プログラムのほとんどは「接点→コイル」の組合せで記述され、その単位処理自体は単純なものである。
またFA・PAシステムの制御プログラムは、デバイスに対する操作として間接アドレシング(ポインタ)などを使用することは少ない特徴もある。
基本的に、物理的に実在する機器に対応するものとして各デバイスが定義されるため、デバイスをポインタやインデクスとして使用する例は多くない。
本実施の形態の手法と類似した、一般的なプログラムの解析技術として「フローグラフ」がある。
これは、プログラムスライシング技術等で使用されるプログラム内の処理(制御)間の依存関係を有向グラフにて表したものである。
プログラムスライシング技術は、例えば、文献「プログラムスライシング技術と応用」(ISBN4−320−02743−4、下村隆夫、共立出版、1995)に説明されている。
フローグラフは一般的なプログラム全てに適用可能であり、本実施の形態に係る情報処理装置が対象とするFA・PAシステムの制御プログラムに対しても定義可能である。
しかし、フローグラフはプログラムの構造を抽象的に表現したものであって、個々のグラフ要素(ノード、エッジ)が具体的な何かに対応するものではない。
またフローグラフのノードは、それ自体が何らかの処理を内包しており、その処理自体の依存関係がエッジとして表現される。
しかしFA・PAシステムの制御プログラムは、通常プログラムの制御の構造が浅い。
つまりIF文やループ文などの構造を持つことがほとんど無い。
これはサイクリック演算によって繰返し実行されることにも起因している。
本実施の形態では、処理間の依存関係を表現する理由が少なく、むしろ変数(デバイス)と処理を明確に分離した方が可視化の際にユーザに理解されやすいと考える。
このように、フローグラフのようなノードとエッジの定義による可視化は、少なくともFA・PAシステムの制御プログラムを対象とする場合には適していない。
そもそも一般的なプログラムの場合は、使用される変数自体が抽象的なものであり、ポインタや配列などを頻繁に使用するため、その変数の実体(メモリ領域)が固定していないことが多い。
このため、本実施の形態で開示するようなグラフ構造を構築するのは困難である。
しかし、対象をFA・PAシステムの制御プログラムに限定した場合は、より詳細なデバイス単位でのグラフ構築が可能になる。
つまり、デバイスをノードとして表現することでそのイメージが固定され、表示される有閉路有向グラフは、実機システムを構成する要素群のイメージに近いものとなる。
本実施の形態は、FA・PAシステムの制御プログラムのこの特徴を拠りどころとしている。
グラフ表示による可視化は、ユーザに対して制御プログラムの直感的な理解の手助けになると考える。
これは、プログラムスライシング技術等で使用されるプログラム内の処理(制御)間の依存関係を有向グラフにて表したものである。
プログラムスライシング技術は、例えば、文献「プログラムスライシング技術と応用」(ISBN4−320−02743−4、下村隆夫、共立出版、1995)に説明されている。
フローグラフは一般的なプログラム全てに適用可能であり、本実施の形態に係る情報処理装置が対象とするFA・PAシステムの制御プログラムに対しても定義可能である。
しかし、フローグラフはプログラムの構造を抽象的に表現したものであって、個々のグラフ要素(ノード、エッジ)が具体的な何かに対応するものではない。
またフローグラフのノードは、それ自体が何らかの処理を内包しており、その処理自体の依存関係がエッジとして表現される。
しかしFA・PAシステムの制御プログラムは、通常プログラムの制御の構造が浅い。
つまりIF文やループ文などの構造を持つことがほとんど無い。
これはサイクリック演算によって繰返し実行されることにも起因している。
本実施の形態では、処理間の依存関係を表現する理由が少なく、むしろ変数(デバイス)と処理を明確に分離した方が可視化の際にユーザに理解されやすいと考える。
このように、フローグラフのようなノードとエッジの定義による可視化は、少なくともFA・PAシステムの制御プログラムを対象とする場合には適していない。
そもそも一般的なプログラムの場合は、使用される変数自体が抽象的なものであり、ポインタや配列などを頻繁に使用するため、その変数の実体(メモリ領域)が固定していないことが多い。
このため、本実施の形態で開示するようなグラフ構造を構築するのは困難である。
しかし、対象をFA・PAシステムの制御プログラムに限定した場合は、より詳細なデバイス単位でのグラフ構築が可能になる。
つまり、デバイスをノードとして表現することでそのイメージが固定され、表示される有閉路有向グラフは、実機システムを構成する要素群のイメージに近いものとなる。
本実施の形態は、FA・PAシステムの制御プログラムのこの特徴を拠りどころとしている。
グラフ表示による可視化は、ユーザに対して制御プログラムの直感的な理解の手助けになると考える。
本実施の形態は、制御プログラム内のデバイス間の関係を一度すべて解析し、有向グラフという形式で、直感的に分かりやすい形で可視化することを特徴としている。
例えばLDやIL言語で使われる接点とコイルの関係「A⇒B」(条件Aならば結果B)は、接点とコイルをノードとしたときに、有向エッジによって表す方法が最も簡単であり、これ以上簡略また有効な可視化方法はない。
本実施の形態で開示する有閉路有向グラフは、FA・PAシステムの制御プログラムの設計フェーズおよび保守フェーズにて有用である。
前者については、対象となる制御プログラムの解析を行うことより、プログラムの構造化・再利用化の支援となる。また後者については、グラフ上でモニタを行うことで、視覚的にデバッグ作業を実施することが可能となるほか、制御プログラム全体に対して問題箇所(バグ)を最小の手順で見つけ出すことを容易にするため、障害発生時の早急な原因究明の支援となる。
例えばLDやIL言語で使われる接点とコイルの関係「A⇒B」(条件Aならば結果B)は、接点とコイルをノードとしたときに、有向エッジによって表す方法が最も簡単であり、これ以上簡略また有効な可視化方法はない。
本実施の形態で開示する有閉路有向グラフは、FA・PAシステムの制御プログラムの設計フェーズおよび保守フェーズにて有用である。
前者については、対象となる制御プログラムの解析を行うことより、プログラムの構造化・再利用化の支援となる。また後者については、グラフ上でモニタを行うことで、視覚的にデバッグ作業を実施することが可能となるほか、制御プログラム全体に対して問題箇所(バグ)を最小の手順で見つけ出すことを容易にするため、障害発生時の早急な原因究明の支援となる。
≪構成の説明≫
以降に、図26を用いて、本実施の形態に係る情報処理装置100の構成例を説明する。
なお、図26は、グラフ表示の生成手順を説明するために必要な構成を示したものであり、図1に示したデバイス割付情報記憶部121、デバイス連携情報記憶部122、デバイスグループ抽出部123、連携デバイス抽出部124、デバイスグループ指定部125は図示していない。
図1と図26で同じ符号の要素は、同じ要素である。
図1に示す構成と、図26に示す構成を合成すると、図27に示す構成となる。
実施の形態1の動作を実現するためには、厳密には、図27に示す構成が必要となる。
実施の形態1では、説明の簡明化のため、図26にのみ示されている要素の説明を省略していた。
なお、図27では、図が複雑になるのを回避するために、デバイスグループ抽出部123と接続情報記憶部106との間の矢印線、連携デバイス抽出部124と接続情報記憶部106及びノード構造体記憶部104との間の矢印線の図示を省略している。
以降に、図26を用いて、本実施の形態に係る情報処理装置100の構成例を説明する。
なお、図26は、グラフ表示の生成手順を説明するために必要な構成を示したものであり、図1に示したデバイス割付情報記憶部121、デバイス連携情報記憶部122、デバイスグループ抽出部123、連携デバイス抽出部124、デバイスグループ指定部125は図示していない。
図1と図26で同じ符号の要素は、同じ要素である。
図1に示す構成と、図26に示す構成を合成すると、図27に示す構成となる。
実施の形態1の動作を実現するためには、厳密には、図27に示す構成が必要となる。
実施の形態1では、説明の簡明化のため、図26にのみ示されている要素の説明を省略していた。
なお、図27では、図が複雑になるのを回避するために、デバイスグループ抽出部123と接続情報記憶部106との間の矢印線、連携デバイス抽出部124と接続情報記憶部106及びノード構造体記憶部104との間の矢印線の図示を省略している。
図26において、制御プログラム中間コード記憶部101は、FA・PAシステムの制御プログラムが格納されているメモリである。
制御プログラム中間コード記憶部101で記憶されている制御プログラムのソースコードはどのような言語で記述されていても良い。
なお、制御プログラム中間コード記憶部101で記憶されている制御プログラムの中間コードは、制御プログラム中間コード5010と表記する。
この制御プログラム中間コード5010は、FA・PAシステムのエンジニアリング開発環境により、ユーザのプログラミングによって作成されたソースコードをコンパイルした結果である。
後述するように、この制御プログラムは作成中である場合と全て完成されている場合がある。
通常この制御プログラム中間コード5010はエンジニアリング環境のコンパイル生成物であり、シーケンサ機器にダウンロードされる対象でもある。
前述したように、制御プログラム中間コード5010には、複数のデバイスが記述されるとともにデバイス間の依存関係が記述され、複数のデバイスの記述とデバイス間の依存関係の記述により複数のデバイスに対する制御アルゴリズムが定義される。
制御プログラム中間コード記憶部101で記憶されている制御プログラムのソースコードはどのような言語で記述されていても良い。
なお、制御プログラム中間コード記憶部101で記憶されている制御プログラムの中間コードは、制御プログラム中間コード5010と表記する。
この制御プログラム中間コード5010は、FA・PAシステムのエンジニアリング開発環境により、ユーザのプログラミングによって作成されたソースコードをコンパイルした結果である。
後述するように、この制御プログラムは作成中である場合と全て完成されている場合がある。
通常この制御プログラム中間コード5010はエンジニアリング環境のコンパイル生成物であり、シーケンサ機器にダウンロードされる対象でもある。
前述したように、制御プログラム中間コード5010には、複数のデバイスが記述されるとともにデバイス間の依存関係が記述され、複数のデバイスの記述とデバイス間の依存関係の記述により複数のデバイスに対する制御アルゴリズムが定義される。
デバイス抽出部102は、制御プログラムの中で使用されているデバイスの記述を抽出する。
抽出されるデバイスは、制御プログラムがLD言語の場合は接点デバイスやコイルデバイスであり、IL言語である場合はオペランドとして指定するソースデバイスやデスティネーションデバイスである。
デバイス抽出部102で抽出されたデバイスは、ノード情報としてノード構造体記憶部104に格納される。
デバイスの抽出は、例えば制御プログラムの設計段階においては、ユーザが制御プログラムを作成し、意味のある単位(LD言語では例えばラング)を作成するたびに抽出処理をおこなってもよいし、例えば実機システムの保守段階においては、障害が発生した段階で、稼働中の制御プログラム全体に対して一括して行ってもよい。
抽出されるデバイスは、制御プログラムがLD言語の場合は接点デバイスやコイルデバイスであり、IL言語である場合はオペランドとして指定するソースデバイスやデスティネーションデバイスである。
デバイス抽出部102で抽出されたデバイスは、ノード情報としてノード構造体記憶部104に格納される。
デバイスの抽出は、例えば制御プログラムの設計段階においては、ユーザが制御プログラムを作成し、意味のある単位(LD言語では例えばラング)を作成するたびに抽出処理をおこなってもよいし、例えば実機システムの保守段階においては、障害が発生した段階で、稼働中の制御プログラム全体に対して一括して行ってもよい。
依存関係抽出部103は、制御プログラムの中のデバイス間の依存関係の記述を抽出する。
抽出される依存関係は、制御プログラムがLD言語の場合は、例えば接点で指定されたデバイスAとコイルで指定されたデバイスBの間の依存関係や、比較条件Cと演算対象Dの間の依存関係である。
依存関係抽出部103で抽出された依存関係は、エッジ情報としてエッジ構造体記憶部105に格納される。
依存関係の抽出は、例えば制御プログラムの設計段階においては、ユーザが制御プログラムを作成し、意味のある単位(LD言語では例えばラング)を作成するたびに抽出処理をおこなってもよいし、例えば実機システムの保守段階においては、障害が発生した段階で、稼働中の制御プログラム全体に対して一括して行ってもよい。
抽出される依存関係は、制御プログラムがLD言語の場合は、例えば接点で指定されたデバイスAとコイルで指定されたデバイスBの間の依存関係や、比較条件Cと演算対象Dの間の依存関係である。
依存関係抽出部103で抽出された依存関係は、エッジ情報としてエッジ構造体記憶部105に格納される。
依存関係の抽出は、例えば制御プログラムの設計段階においては、ユーザが制御プログラムを作成し、意味のある単位(LD言語では例えばラング)を作成するたびに抽出処理をおこなってもよいし、例えば実機システムの保守段階においては、障害が発生した段階で、稼働中の制御プログラム全体に対して一括して行ってもよい。
ノード構造体記憶部104は、デバイス抽出部102によって抽出されたデバイスの情報を記憶しておく領域である。
ノード構造体記憶部104で記憶される情報は、ノード構造体5040と表記する。
ノード構造体5040では、デバイスに対して、デバイス名あるいは、ユーザによって命名されたラベル名が格納される。
また、ノード構造体5040にはモニタを行うためのデバイスの現在値の格納エリアも設けてある。
ノード構造体記憶部104で記憶される情報は、ノード構造体5040と表記する。
ノード構造体5040では、デバイスに対して、デバイス名あるいは、ユーザによって命名されたラベル名が格納される。
また、ノード構造体5040にはモニタを行うためのデバイスの現在値の格納エリアも設けてある。
エッジ構造体記憶部105は、依存関係抽出部103によって抽出されたデバイス間の依存関係を記憶しておく領域である。
デバイス間の依存関係はいくつか種別がある。
LD言語を例に取ると例えば、A接点−コイルの関係(D1⇒D2)、B接点−コイルの関係(D1⇒D2)、演算式の関係(D2=D1+1)、条件式の関係(IF D1>0THEN D2=1)などである。
これらの例では全てデバイスD2はデバイスD1に依存している。
依存関係抽出部103では、これらの依存関係の種別と、対象となる2つ以上のデバイスの組合せを抽出する。
依存関係の種別はエッジ構造体5050として格納する。
対象デバイスの組合せは、エッジ構造体5050もしくは、後述する接続情報5060として保存する。
デバイス間の依存関係はいくつか種別がある。
LD言語を例に取ると例えば、A接点−コイルの関係(D1⇒D2)、B接点−コイルの関係(D1⇒D2)、演算式の関係(D2=D1+1)、条件式の関係(IF D1>0THEN D2=1)などである。
これらの例では全てデバイスD2はデバイスD1に依存している。
依存関係抽出部103では、これらの依存関係の種別と、対象となる2つ以上のデバイスの組合せを抽出する。
依存関係の種別はエッジ構造体5050として格納する。
対象デバイスの組合せは、エッジ構造体5050もしくは、後述する接続情報5060として保存する。
接続情報記憶部106は、デバイスを記憶しているノード構造体5040と、デバイス間の依存関係を記憶しているエッジ構造体5050の間の接続関係を保持しておく記憶領域である。
接続情報記憶部106で記憶されている情報を接続情報5060と表記する。
接続情報5060は、ノード構造体5040とエッジ構造体5050、つまり、デバイス抽出部102で抽出されたデバイスと依存関係抽出部103で抽出された依存関係を対応付ける情報である。
接続情報記憶部106で記憶されている情報を接続情報5060と表記する。
接続情報5060は、ノード構造体5040とエッジ構造体5050、つまり、デバイス抽出部102で抽出されたデバイスと依存関係抽出部103で抽出された依存関係を対応付ける情報である。
グラフ生成部112は、デバイス抽出部102により抽出されたデバイスの記述と依存関係抽出部103により抽出されたデバイス間の依存関係の記述とに基づき、有閉路有向グラフを生成する。
より具体的には、グラフ生成部112は、ノード構造体5040とエッジ構造体5050と接続情報5060を用い、接続情報5060に示されている対応付けに従って、ノード構造体5040のデバイスとエッジ構造体5050の依存関係を組み合わせて、有閉路有向グラフを生成する。
有閉路有向グラフは、ノードがデバイスを表し、有向エッジがデバイス間の依存関係を表し、制御プログラムで定義されている制御アルゴリズムをノードと有向エッジとの接続で表すグラフである。
有閉路有向グラフの例は、後述する。
より具体的には、グラフ生成部112は、ノード構造体5040とエッジ構造体5050と接続情報5060を用い、接続情報5060に示されている対応付けに従って、ノード構造体5040のデバイスとエッジ構造体5050の依存関係を組み合わせて、有閉路有向グラフを生成する。
有閉路有向グラフは、ノードがデバイスを表し、有向エッジがデバイス間の依存関係を表し、制御プログラムで定義されている制御アルゴリズムをノードと有向エッジとの接続で表すグラフである。
有閉路有向グラフの例は、後述する。
条件入力部107は、グラフ生成部112で生成された有閉路有向グラフに対して、グラフ内の要素を検索するための条件やフィルタリングするための条件をユーザがGUIを通して入力する手段である。
例えばGUIによって表示されたグラフに対して、その任意のノードを指定することでノードが特定される。
またはグラフに対して、任意の領域を選択することで、そのデバイス群が選択される。
例えばGUIによって表示されたグラフに対して、その任意のノードを指定することでノードが特定される。
またはグラフに対して、任意の領域を選択することで、そのデバイス群が選択される。
グラフ解析部108は、用途に応じて有閉路有向グラフをグラフ解析するエンジン部分である。
例えば、条件入力部107で選択されたデバイス群「が」影響を与え得る範囲(当該デバイス群から有向エッジを介して到達可能なノード全て)を抽出することや、逆に条件入力部107で指定されたデバイス「に」影響を与え得る範囲(当該デバイスから有向エッジを逆向きに介して到達可能なノード)を段階的に抽出するなどを行う。
また、グラフ全体のクラスタ性について計測を行い、制御プログラムのデバイス間の結合度合いを算出する、などを行う。
グラフ解析部108は、一般的なグラフ解析ロジックを用いることもできる。
例えば、条件入力部107で選択されたデバイス群「が」影響を与え得る範囲(当該デバイス群から有向エッジを介して到達可能なノード全て)を抽出することや、逆に条件入力部107で指定されたデバイス「に」影響を与え得る範囲(当該デバイスから有向エッジを逆向きに介して到達可能なノード)を段階的に抽出するなどを行う。
また、グラフ全体のクラスタ性について計測を行い、制御プログラムのデバイス間の結合度合いを算出する、などを行う。
グラフ解析部108は、一般的なグラフ解析ロジックを用いることもできる。
結果出力部109は、グラフ全体や、グラフ解析部108によってフィルタリングされた部分グラフをGUIを通してユーザに表示する手段である。
FA・PAシステムの制御プログラムで用いられるデバイスの数や処理の数は膨大なものになりうるため、本実施の形態で開示している有閉路有向グラフも大規模なものになる可能性がある。
このため、この結果出力部109にはグラフの拡大縮小表示機能や、選択デバイス/依存関係のみを表示する機能、あるいは選択されたデバイス群を縮約して、単一な仮想デバイスとして表示する機能などを持つことができる。
結果出力部109の一部機能は、一般的な複雑グラフ表示技術やツールを用いることもできる。
FA・PAシステムの制御プログラムで用いられるデバイスの数や処理の数は膨大なものになりうるため、本実施の形態で開示している有閉路有向グラフも大規模なものになる可能性がある。
このため、この結果出力部109にはグラフの拡大縮小表示機能や、選択デバイス/依存関係のみを表示する機能、あるいは選択されたデバイス群を縮約して、単一な仮想デバイスとして表示する機能などを持つことができる。
結果出力部109の一部機能は、一般的な複雑グラフ表示技術やツールを用いることもできる。
リンク管理部110は、制御プログラムのコードと、それを変換した有閉路有向グラフの要素(ノード:デバイス、エッジ:ラング(LDの場合))を対応付ける手段である。
リンク管理部110は、GUIを通してユーザに表示されるグラフと、元の制御プログラムコードを対応付けるために用いられる。
例えばグラフのノードを選択すると、それに対応するデバイスが、元の制御プログラムコードの中から検索され、当該デバイスが使用されている全てのラング(LDの場合)が一覧表示される。またエッジを選択すると、それに対応するラング(LDの場合)が表示される。
リンク管理部110は、これらの機能を実現するために使用される。
リンク管理部110は、GUIを通してユーザに表示されるグラフと、元の制御プログラムコードを対応付けるために用いられる。
例えばグラフのノードを選択すると、それに対応するデバイスが、元の制御プログラムコードの中から検索され、当該デバイスが使用されている全てのラング(LDの場合)が一覧表示される。またエッジを選択すると、それに対応するラング(LDの場合)が表示される。
リンク管理部110は、これらの機能を実現するために使用される。
オンラインモニタ部111は、実際のシーケンサ機器と通信を行って、デバイスの現在値を取得する手段である。
ここで取得されたデバイス値は、グラフ表示を用いて現在値モニタを行う際に結果出力部109を介してGUI表示される。
一般的なFA・PAシステムのエンジニアリング開発環境は、既存のプログラミング言語エディタ上にてデバイスのオンラインモニタ機能を実現しているものが多い。
したがって、オンラインモニタ部111は、このオンラインモニタ機能で使用しているデバイス値取得機能部分を流用してもよい。
ここで取得されたデバイス値は、グラフ表示を用いて現在値モニタを行う際に結果出力部109を介してGUI表示される。
一般的なFA・PAシステムのエンジニアリング開発環境は、既存のプログラミング言語エディタ上にてデバイスのオンラインモニタ機能を実現しているものが多い。
したがって、オンラインモニタ部111は、このオンラインモニタ機能で使用しているデバイス値取得機能部分を流用してもよい。
≪動作の説明≫
≪1.グラフの表示≫
制御プログラム内で使用されているデバイス間の関係をGUIにて可視的に表示する手順について図28をもとに以下に述べる。
≪1.グラフの表示≫
制御プログラム内で使用されているデバイス間の関係をGUIにて可視的に表示する手順について図28をもとに以下に述べる。
まず、処理3202にて、ユーザが制御プログラムを入力する。
続いて、処理3203にて、コンパイルを実行する。
しかし、コンパイル可能な単位の入力が完了していない場合は、再び処理3202に戻って、制御プログラムの入力を待つ。
コンパイル可能な単位での入力が完了したら、コンパイル操作によって制御プログラム中間コード5010を作成する。
ここまでの処理は一般的なFA・PAシステムのエンジニアリング環境が持つ機能を流用することもできる。
続いて、処理3203にて、コンパイルを実行する。
しかし、コンパイル可能な単位の入力が完了していない場合は、再び処理3202に戻って、制御プログラムの入力を待つ。
コンパイル可能な単位での入力が完了したら、コンパイル操作によって制御プログラム中間コード5010を作成する。
ここまでの処理は一般的なFA・PAシステムのエンジニアリング環境が持つ機能を流用することもできる。
続いて、処理3204にて、デバイス抽出部102が制御プログラム中間コード5010からデバイスの抽出を行う。
これにより対象とする制御プログラムの全体あるいは部分で使用されるデバイスの一覧が取得できる。
これらのデバイス情報はノード構造体5040としてノード構造体記憶部104に格納される。
この際、デバイスに関する種々の情報(例えばデバイス種別やラベル名など)も格納する。
同様に、処理3205にて、依存関係抽出部103が制御プログラム中間コード5010から依存関係の抽出を行う。
これにより対象とする制御プログラムの全体あるいは部分で処理されているデバイス間の依存関係が抽出される。
これらの情報はエッジ構造体5050としてエッジ構造体記憶部105に格納される。
エッジ構造体5050には後述するように、グラフ解析に利用するための、正論理/負論理の情報なども格納する。
ここでもエッジに関する種々の情報(例えばエッジのタイプなど)も格納する。
同様に、処理3206にて、依存関係抽出部103が制御プログラム中間コード5010とエッジ構造体5050から、接続情報5060を構築する。
次に、処理3207にて、ノード構造体5040とエッジ構造体5050の間の接続関係を表す接続情報5060およびそれにリンクしたノード構造体5040とエッジ構造体5050から、グラフ生成部112が有閉路有向グラフを生成し、結果出力部109が表示する。
これらの処理を処理3201と処理3208間で繰り返す。
このループは制御プログラムの作成が完了するまで繰り返される。
これにより対象とする制御プログラムの全体あるいは部分で使用されるデバイスの一覧が取得できる。
これらのデバイス情報はノード構造体5040としてノード構造体記憶部104に格納される。
この際、デバイスに関する種々の情報(例えばデバイス種別やラベル名など)も格納する。
同様に、処理3205にて、依存関係抽出部103が制御プログラム中間コード5010から依存関係の抽出を行う。
これにより対象とする制御プログラムの全体あるいは部分で処理されているデバイス間の依存関係が抽出される。
これらの情報はエッジ構造体5050としてエッジ構造体記憶部105に格納される。
エッジ構造体5050には後述するように、グラフ解析に利用するための、正論理/負論理の情報なども格納する。
ここでもエッジに関する種々の情報(例えばエッジのタイプなど)も格納する。
同様に、処理3206にて、依存関係抽出部103が制御プログラム中間コード5010とエッジ構造体5050から、接続情報5060を構築する。
次に、処理3207にて、ノード構造体5040とエッジ構造体5050の間の接続関係を表す接続情報5060およびそれにリンクしたノード構造体5040とエッジ構造体5050から、グラフ生成部112が有閉路有向グラフを生成し、結果出力部109が表示する。
これらの処理を処理3201と処理3208間で繰り返す。
このループは制御プログラムの作成が完了するまで繰り返される。
上記の流れ以外にも、制御プログラムのコンパイルが完了したことをトリガとして、デバイスの抽出処理3204を開始する方法を取ることもできる。
また制御プログラムを保存したタイミング、シーケンサ機器へダウンロードしたタイミングをトリガとする方法もとることができる。
また、処理3203のコンパイル時に、前回のコンパイル結果との照合を行い、修正のあった箇所についてのみ処理3204以降の処理を行うことで、差分描画処理を行うこともできる。
また制御プログラムを保存したタイミング、シーケンサ機器へダウンロードしたタイミングをトリガとする方法もとることができる。
また、処理3203のコンパイル時に、前回のコンパイル結果との照合を行い、修正のあった箇所についてのみ処理3204以降の処理を行うことで、差分描画処理を行うこともできる。
≪2.対応制御部分プログラム表示≫
GUIにて可視化されたグラフの要素(ノード/エッジ)を選択することで、対応する元の制御プログラムの要素の検索結果を表示する手順について、図29をもとに以下に述べる。
GUIにて可視化されたグラフの要素(ノード/エッジ)を選択することで、対応する元の制御プログラムの要素の検索結果を表示する手順について、図29をもとに以下に述べる。
まず、処理3301にて、グラフを構築する(接続情報5060構築)段階で、デバイス抽出部102及び依存関係抽出部103が、元の制御プログラムの各要素とグラフの要素(ノード/エッジ)とのリンクを作成する。
グラフのノードと元の制御プログラムのデバイス間のリンク情報はノード構造体5040に、構造体の要素として格納される。
また、グラフのエッジと元の制御プログラムの処理(LD言語であればラング)間のリンク情報はエッジ構造体5050に、構造体の要素として格納される。
これにより、表示されるグラフの各要素が元の制御プログラムの要素と関連づいた状態となる。
処理3302により、ユーザがGUIに表示されたグラフの要素を選択する。
すると処理3303において、グラフ解析部108により、そのグラフ要素がノードであるかエッジであるかが判別される。
ノードである場合は処理3304にて、リンク管理部110により、ノード構造体5040とそこからリンクを辿った先の制御プログラム中間コード5010から、該当ノードが表すデバイスを使用した全ての処理(LD言語であればラング)が検索される。
エッジである場合は処理3305にて、リンク管理部110により、エッジ構造体5050とそこからリンクを辿った先の制御プログラム中間コード5010から、該当エッジが表す処理(LD言語であればラング)が抽出される。
最後に、処理3306にて、結果出力部109により、処理3304もしくは処理3305で抽出した制御プログラム中間コード5010が表示される。
この表示は、例えば、グラフと制御プログラム中間コード5010とを並べて表示することが考えられる。
グラフのノードと元の制御プログラムのデバイス間のリンク情報はノード構造体5040に、構造体の要素として格納される。
また、グラフのエッジと元の制御プログラムの処理(LD言語であればラング)間のリンク情報はエッジ構造体5050に、構造体の要素として格納される。
これにより、表示されるグラフの各要素が元の制御プログラムの要素と関連づいた状態となる。
処理3302により、ユーザがGUIに表示されたグラフの要素を選択する。
すると処理3303において、グラフ解析部108により、そのグラフ要素がノードであるかエッジであるかが判別される。
ノードである場合は処理3304にて、リンク管理部110により、ノード構造体5040とそこからリンクを辿った先の制御プログラム中間コード5010から、該当ノードが表すデバイスを使用した全ての処理(LD言語であればラング)が検索される。
エッジである場合は処理3305にて、リンク管理部110により、エッジ構造体5050とそこからリンクを辿った先の制御プログラム中間コード5010から、該当エッジが表す処理(LD言語であればラング)が抽出される。
最後に、処理3306にて、結果出力部109により、処理3304もしくは処理3305で抽出した制御プログラム中間コード5010が表示される。
この表示は、例えば、グラフと制御プログラム中間コード5010とを並べて表示することが考えられる。
処理3304および処理3305によりグラフ上の対応要素が特定され、制御プログラム中間コード5010内の対応要素が特定された後は、一般的なエンジニアリング環境で実現されている検索結果表示機能を用いて、対応する制御プログラム検索結果表示処理3306を行うこともできる。
≪3.特定デバイス仕様出力≫
GUIにて可視化されたグラフの特定ノードを選択することで、当該ノードの仕様を日本語(自然言語の一例)にて表示する手順について、図30をもとに以下に述べる。
GUIにて可視化されたグラフの特定ノードを選択することで、当該ノードの仕様を日本語(自然言語の一例)にて表示する手順について、図30をもとに以下に述べる。
まず、処理3401にて、ユーザによってGUIに表示されたグラフから、対象となるノードが選択される。
次に、処理3402にて、グラフ解析部108によるグラフ解析により、指定されたノードに至る全てのパスを構成するノード、エッジを含む部分グラフを抽出する。
つまり、グラフ解析部108は、指定されたノードに影響を与える可能性のあるノードとエッジを全て抽出する。
この処理は対象ノードから全ての有向エッジを逆向きに辿り、見つかったノードとエッジを部分グラフに追加していき、新しいノードが見つからなくなるまで続けることで実行可能である。
これは一般的なグラフ解析ロジックを用いてもよい。
処理3403にて、グラフ解析部108は、作成した部分グラフ内で入出力デバイスを表現しているノードのみを抽出する。
これは特定デバイスの仕様を出力する際に、実機システムとのインタフェースとしてユーザに分かりやすいデバイスを表示する意味がある。
しかし、入出力デバイスに限定する必要はなく、内部デバイスに対しても実行してもよい。
また、この処理を行うため、ノード構造体5040にはあらかじめ対応するデバイスの種別情報を格納しておく必要がある。
入出力デバイスそれぞれについて処理を行うため、処理3404から処理3407でループ処理を行う。
この内部では、処理3405にて、グラフ解析部108は、対象となる入出力デバイスから出ている有向エッジについて日本語へ変換する。
例えば、特定デバイスが「モータC(正転)」であり、対象となった入力デバイスのラベル名が「センサA」であり、そこから出る有向エッジのタイプが「A接点−コイル」だとすると、「モータC(正転)はセンサAに依存する」という説明文が作成される。
また、もう一つの入力デバイスのラベルが「非常停止ボタンB」であり、エッジのタイプが「B接点−コイル」だとすると、「モータC(正転)は非常停止ボタンBに依存する」という説明文が作成される。
処理3406にてこれらの説明文が、結果出力部109により、一文ずつユーザに提示される。
処理3405にて、入出力デバイスに隣接するエッジのみを考慮に入れているが、これは出力される仕様の文章を単純化するためである。
より厳密に、入出力デバイスから特定デバイスに至るパスを有向エッジに沿った形で連ね、全て日本語化することも可能である。
また、逆に、3405の処理は割愛し、入出力デバイスのみを持って、簡単な仕様として表示する方法もある。
この場合は入出力デバイスに隣接するエッジの情報は使用されず、一様に「[入出力デバイス]に依存する」という記述になる。
次に、処理3402にて、グラフ解析部108によるグラフ解析により、指定されたノードに至る全てのパスを構成するノード、エッジを含む部分グラフを抽出する。
つまり、グラフ解析部108は、指定されたノードに影響を与える可能性のあるノードとエッジを全て抽出する。
この処理は対象ノードから全ての有向エッジを逆向きに辿り、見つかったノードとエッジを部分グラフに追加していき、新しいノードが見つからなくなるまで続けることで実行可能である。
これは一般的なグラフ解析ロジックを用いてもよい。
処理3403にて、グラフ解析部108は、作成した部分グラフ内で入出力デバイスを表現しているノードのみを抽出する。
これは特定デバイスの仕様を出力する際に、実機システムとのインタフェースとしてユーザに分かりやすいデバイスを表示する意味がある。
しかし、入出力デバイスに限定する必要はなく、内部デバイスに対しても実行してもよい。
また、この処理を行うため、ノード構造体5040にはあらかじめ対応するデバイスの種別情報を格納しておく必要がある。
入出力デバイスそれぞれについて処理を行うため、処理3404から処理3407でループ処理を行う。
この内部では、処理3405にて、グラフ解析部108は、対象となる入出力デバイスから出ている有向エッジについて日本語へ変換する。
例えば、特定デバイスが「モータC(正転)」であり、対象となった入力デバイスのラベル名が「センサA」であり、そこから出る有向エッジのタイプが「A接点−コイル」だとすると、「モータC(正転)はセンサAに依存する」という説明文が作成される。
また、もう一つの入力デバイスのラベルが「非常停止ボタンB」であり、エッジのタイプが「B接点−コイル」だとすると、「モータC(正転)は非常停止ボタンBに依存する」という説明文が作成される。
処理3406にてこれらの説明文が、結果出力部109により、一文ずつユーザに提示される。
処理3405にて、入出力デバイスに隣接するエッジのみを考慮に入れているが、これは出力される仕様の文章を単純化するためである。
より厳密に、入出力デバイスから特定デバイスに至るパスを有向エッジに沿った形で連ね、全て日本語化することも可能である。
また、逆に、3405の処理は割愛し、入出力デバイスのみを持って、簡単な仕様として表示する方法もある。
この場合は入出力デバイスに隣接するエッジの情報は使用されず、一様に「[入出力デバイス]に依存する」という記述になる。
≪4.影響範囲図示≫
GUIにて可視化されたグラフの特定領域を選択することで、それらの範囲に変更を行った場合の、制御プログラムに与える影響範囲を図示する手順について、図31をもとに以下に述べる。
GUIにて可視化されたグラフの特定領域を選択することで、それらの範囲に変更を行った場合の、制御プログラムに与える影響範囲を図示する手順について、図31をもとに以下に述べる。
まず、処理3501にて、ユーザによってGUIに表示されたグラフから、対象となる領域(部分グラフ)が選択される。
次に、処理3502にて、グラフ解析部108が、グラフ解析により、指定された領域に至る全てのパスを構成するノード、エッジを含む部分グラフを抽出する。
この処理は対象領域内にある全てのノードについて、そのノードに隣接する有向エッジを逆向きに辿って、見つかったノードとエッジを部分グラフに追加していき、新しいノードが見つからなくなるまで続けることで実行可能である。
この処理により、グラフ解析部108は、ユーザによって指定された対象領域内の要素(指定要素)に変更があった場合に当該変更の影響を受ける影響範囲を抽出することができる。
なお、この影響範囲の抽出処理は、一般的なグラフ解析ロジックを用いてもよい。
処理3503にて、結果出力部109が、既に表示されている全体グラフの中で、作成した部分グラフについて強調表示等を行って、影響範囲が分かるようにする。
次に、処理3502にて、グラフ解析部108が、グラフ解析により、指定された領域に至る全てのパスを構成するノード、エッジを含む部分グラフを抽出する。
この処理は対象領域内にある全てのノードについて、そのノードに隣接する有向エッジを逆向きに辿って、見つかったノードとエッジを部分グラフに追加していき、新しいノードが見つからなくなるまで続けることで実行可能である。
この処理により、グラフ解析部108は、ユーザによって指定された対象領域内の要素(指定要素)に変更があった場合に当該変更の影響を受ける影響範囲を抽出することができる。
なお、この影響範囲の抽出処理は、一般的なグラフ解析ロジックを用いてもよい。
処理3503にて、結果出力部109が、既に表示されている全体グラフの中で、作成した部分グラフについて強調表示等を行って、影響範囲が分かるようにする。
なお、ここでは、結果をグラフ上に図示する例のみを載せているが、制御プログラム中間コード内の処理(LD言語ではラング)を表示する方法も取ることができる。
≪5.未使用箇所検出≫
GUIにて可視化されたグラフ上で、制御プログラム内のどの出力デバイスにも影響を与えないデバイス群(未使用デバイス群)を図示する手順について、図32をもとに以下に述べる。
GUIにて可視化されたグラフ上で、制御プログラム内のどの出力デバイスにも影響を与えないデバイス群(未使用デバイス群)を図示する手順について、図32をもとに以下に述べる。
まず処理3601から処理3603にて、全ての出力デバイスについて繰り返す。
処理3602にて、グラフ解析部108が、グラフ解析により、出力デバイスへ至る全てのパスを構成するノード、エッジを含む部分グラフを抽出する。
この処理は出力デバイスを表すノードについて、そのノードに隣接する有向エッジを逆向きに辿って、見つかったノードとエッジを部分グラフに追加していき、新しいノードが見つからなくなるまで続けることで実行可能である。
これは一般的なグラフ解析ロジックを用いてもよい。
また、この部分は前述した影響範囲図示と同じアルゴリズムを流用することもできる。
また出力デバイス以外にも外部システムとのインタフェースとなるデバイスが存在する可能性がある。
これらについて、ユーザが任意にデバイス群を指定する、あるいはデバイス種別を選択することができても良い。
処理3604にて、グラフ解析部108は、既に表示されている全体グラフの中から、処理3603にて抽出した部分グラフに含まれない、全てのノード(未使用デバイス)とエッジを抜き出す。
また未使用デバイスのみを一覧表示するため、ここで抜き出す要素をノードのみに限っても良い。
そして、処理3605にて、結果出力部109が、これらの部分グラフ群を強調表示する。
処理3602にて、グラフ解析部108が、グラフ解析により、出力デバイスへ至る全てのパスを構成するノード、エッジを含む部分グラフを抽出する。
この処理は出力デバイスを表すノードについて、そのノードに隣接する有向エッジを逆向きに辿って、見つかったノードとエッジを部分グラフに追加していき、新しいノードが見つからなくなるまで続けることで実行可能である。
これは一般的なグラフ解析ロジックを用いてもよい。
また、この部分は前述した影響範囲図示と同じアルゴリズムを流用することもできる。
また出力デバイス以外にも外部システムとのインタフェースとなるデバイスが存在する可能性がある。
これらについて、ユーザが任意にデバイス群を指定する、あるいはデバイス種別を選択することができても良い。
処理3604にて、グラフ解析部108は、既に表示されている全体グラフの中から、処理3603にて抽出した部分グラフに含まれない、全てのノード(未使用デバイス)とエッジを抜き出す。
また未使用デバイスのみを一覧表示するため、ここで抜き出す要素をノードのみに限っても良い。
そして、処理3605にて、結果出力部109が、これらの部分グラフ群を強調表示する。
なお、ここでは、結果をグラフ上に図示する例のみを載せているが、制御プログラム中間コード内の処理(LD言語ではラング)を表示する方法も取ることができる。
≪6.循環定義検出≫
GUIにて可視化されたグラフ上で、制御プログラム内でソフトウェアによるチャタリング(特定のデバイスがサイクリック時間(の定数倍)ごとにONとOFFを繰り返す現象)を起こす危険性のあるデバイスの組合せを検出する手順について、図33をもとに以下に述べる。
この現象は通常、本実施の形態で開示している有向グラフ表現において、循環(エッジの向きを考慮した閉路)があり、その循環のパス上で奇数回の負論理回路が存在するときに発生する可能性がある。
ただし、タイマデバイスやカウンタデバイスなど、条件が満たされてからコイルがONとなるまでに遅延があるものは対象外とする。
GUIにて可視化されたグラフ上で、制御プログラム内でソフトウェアによるチャタリング(特定のデバイスがサイクリック時間(の定数倍)ごとにONとOFFを繰り返す現象)を起こす危険性のあるデバイスの組合せを検出する手順について、図33をもとに以下に述べる。
この現象は通常、本実施の形態で開示している有向グラフ表現において、循環(エッジの向きを考慮した閉路)があり、その循環のパス上で奇数回の負論理回路が存在するときに発生する可能性がある。
ただし、タイマデバイスやカウンタデバイスなど、条件が満たされてからコイルがONとなるまでに遅延があるものは対象外とする。
まず、処理3701にて、グラフ解析部108は、任意のビットデバイスを開始地点として対象ノードとする。
上記したように、対象ノードにはタイマやカウンタなど、状態を持つことで条件ONからコイルONまでに時間的遅延が発生するものは対象としない。
次にグラフ内のノードを探索するため、処理3702および処理3703から処理3708にて、グラフ解析部108はグラフ内の探索を行う。
ここでの目的は、タイマやカウンタを含まず、負論理が奇数回登場する循環定義を検出するため、処理3704にて負論理に相当するエッジ(処理)の数をカウントする。
この時に必要となるそのエッジが負論理であるかどうかの情報は、先に述べた「依存関係の抽出」処理3205にて、エッジ構造体5050内に格納しておく。
次に、グラフ解析部108は、探索中に経由するノードについて、処理3705にて、カウンタやタイマにたどり着いたかどうかチェックを行う。
カウンタやタイマを経由する場合は、循環定義として抽出しない(サイクリック時間とは異なったユーザ定義値を基準にしてデバイスのON/OFFが切り替わるため、正常な動作と考えられるため)。
しかし、実装する機能としては、ユーザへ循環定義抽出結果にカウンタやタイマを含むことを知らせた上で、条件分岐処理3705を除くこともできる。
次に処理3706にて、グラフ解析部108は、循環を形成するかどうかチェックを行う。
現時点までの探索経路内に訪れたノードに至った場合は循環(閉路)が存在することになるため、処理3707にてその循環パスを記録する。
最後に、グラフ解析部108は、処理3709にて、記録した循環パスの負論理の数が奇数のものについて、循環定義によってソフトウェアによるチャタリングが発生する危険性がある循環定義として抽出する。
そして、処理3710において、結果出力部109が、該当するパスを図示する。
上記したように、対象ノードにはタイマやカウンタなど、状態を持つことで条件ONからコイルONまでに時間的遅延が発生するものは対象としない。
次にグラフ内のノードを探索するため、処理3702および処理3703から処理3708にて、グラフ解析部108はグラフ内の探索を行う。
ここでの目的は、タイマやカウンタを含まず、負論理が奇数回登場する循環定義を検出するため、処理3704にて負論理に相当するエッジ(処理)の数をカウントする。
この時に必要となるそのエッジが負論理であるかどうかの情報は、先に述べた「依存関係の抽出」処理3205にて、エッジ構造体5050内に格納しておく。
次に、グラフ解析部108は、探索中に経由するノードについて、処理3705にて、カウンタやタイマにたどり着いたかどうかチェックを行う。
カウンタやタイマを経由する場合は、循環定義として抽出しない(サイクリック時間とは異なったユーザ定義値を基準にしてデバイスのON/OFFが切り替わるため、正常な動作と考えられるため)。
しかし、実装する機能としては、ユーザへ循環定義抽出結果にカウンタやタイマを含むことを知らせた上で、条件分岐処理3705を除くこともできる。
次に処理3706にて、グラフ解析部108は、循環を形成するかどうかチェックを行う。
現時点までの探索経路内に訪れたノードに至った場合は循環(閉路)が存在することになるため、処理3707にてその循環パスを記録する。
最後に、グラフ解析部108は、処理3709にて、記録した循環パスの負論理の数が奇数のものについて、循環定義によってソフトウェアによるチャタリングが発生する危険性がある循環定義として抽出する。
そして、処理3710において、結果出力部109が、該当するパスを図示する。
図33は対象とする制御プログラムおよびそれを表現しているグラフが連結していることを前提としている。
制御プログラムがいくつかの独立した部分グラフから構成される場合は、それぞれ独立した部分グラフ内で、処理3701によって一つの開始ノードを選択する必要がある。
なお、処理3702から処理3708までに記述したグラフ内の探索手順は一例であり、その他のグラフ解析アルゴリズムを用いてもよい。
制御プログラムがいくつかの独立した部分グラフから構成される場合は、それぞれ独立した部分グラフ内で、処理3701によって一つの開始ノードを選択する必要がある。
なお、処理3702から処理3708までに記述したグラフ内の探索手順は一例であり、その他のグラフ解析アルゴリズムを用いてもよい。
≪7.デバイス値モニタ≫
GUIにて可視化されたグラフ上で、ユーザが現在値モニタを行いたいデバイス群を指定し、シーケンサ機器、あるいは制御プログラムシミュレータと接続時に、それらのデバイスの現在値をモニタする手順について、図34をもとに以下に述べる。
GUIにて可視化されたグラフ上で、ユーザが現在値モニタを行いたいデバイス群を指定し、シーケンサ機器、あるいは制御プログラムシミュレータと接続時に、それらのデバイスの現在値をモニタする手順について、図34をもとに以下に述べる。
まず、処理3801にて、GUIにて可視化されたグラフ上で、ユーザがモニタを行いたい任意のデバイス群を選択する。
ただし、制御プログラム内の全てのデバイス、あるいは画面表示された全てのデバイスを対象とする場合は、ユーザからの指定は不要である。
次に、選択されたデバイスについて、処理3802から処理3805までを繰り返す。
処理3803では、オンラインモニタ部111が、対象デバイスそれぞれについて、シーケンサ機器または制御プログラムシミュレータから、対応するデバイスの現在値を取得してノード構造体5040へ格納する。
続いて処理3804にて、結果出力部109が、グラフのノード上にテキストとして、あるいはノードの形状変更、あるいはノードの色変更等によって、ノードが表現するデバイスの現在値を表示する。
ただし、制御プログラム内の全てのデバイス、あるいは画面表示された全てのデバイスを対象とする場合は、ユーザからの指定は不要である。
次に、選択されたデバイスについて、処理3802から処理3805までを繰り返す。
処理3803では、オンラインモニタ部111が、対象デバイスそれぞれについて、シーケンサ機器または制御プログラムシミュレータから、対応するデバイスの現在値を取得してノード構造体5040へ格納する。
続いて処理3804にて、結果出力部109が、グラフのノード上にテキストとして、あるいはノードの形状変更、あるいはノードの色変更等によって、ノードが表現するデバイスの現在値を表示する。
なお、モニタを定期的に行う場合は、例えば1秒毎に処理3802から処理3805までの処理を繰り返すことで実現が可能である。
また、シーケンサ機器や制御プログラムシミュレータから、デバイスの現在値だけでなく、制御プログラム内のどの処理が実行されたのかが取得可能であれば、オンラインモニタ部111が、エッジ構造体5050に処理実行中フラグを設定/解除することによりグラフ上に表示することもできる。
また、シーケンサ機器や制御プログラムシミュレータから、デバイスの現在値だけでなく、制御プログラム内のどの処理が実行されたのかが取得可能であれば、オンラインモニタ部111が、エッジ構造体5050に処理実行中フラグを設定/解除することによりグラフ上に表示することもできる。
≪8.障害要因の図示≫
実機システムあるいは制御プログラムシミュレータ上にて、障害が発生した場合、その要因となる制御プログラム上のバグを特定するため、GUIにて可視化されたグラフ上で、ユーザにより障害が顕在化しているデバイス、また完全に正常に動作しているデバイスを特定することで、障害の要因となるデバイスあるいは処理を図示する手順について、図35をもとに以下に述べる。
実機システムあるいは制御プログラムシミュレータ上にて、障害が発生した場合、その要因となる制御プログラム上のバグを特定するため、GUIにて可視化されたグラフ上で、ユーザにより障害が顕在化しているデバイス、また完全に正常に動作しているデバイスを特定することで、障害の要因となるデバイスあるいは処理を図示する手順について、図35をもとに以下に述べる。
まず、処理3901にて、グラフ解析部108が、初期処理として要因領域を空に設定する。
要因領域は、障害の要因の候補としてグラフ上に示す要素を格納する領域である。
以降処理3902から処理3909までは、ユーザが障害要因を特定するまで繰返し実行する。
処理3903にて、ユーザは障害が発生した時に、その現象が直接現れたデバイス、あるいは確実に異常な振舞いをしているデバイスを指定し、それが「異常」デバイスであることを入力する。
グラフ解析部108は、処理3904にて、全体グラフから、ユーザが指定したデバイスのノード(異常発生デバイスノード)に至るパス全てをマージした部分グラフを抽出する。
つまり、グラフ解析部108は、異常発生デバイスノードと接続している有向エッジを有閉路有向グラフから抽出するとともに、抽出した有向エッジと接続しているノード(デバイス)を抽出する。
この処理は前述した3502の処理と同じである。
次に、処理3905にて、グラフ解析部108は、抽出したデバイスの正常/異常をチェックする。
デバイスごとの正常/異常は、ユーザが指定する。
ユーザから「正常」と指定されたデバイスについては、処理3906にて、現時点の要因領域から、抽出した部分グラフを削除する(「正常」と指定されたデバイスのノードと当該ノードに接続しているエッジを要因領域に含めない)。
これは障害要因が含まれる可能性がある要因領域のうち、全ての条件において完全に正常であると判断されたデバイスに影響を与える領域については、要因領域から除くことができるためである。
反対に、ユーザから「異常」と指定されたデバイスについては、処理3907にて、現時点の要因領域に抽出した部分グラフを追加する(「異常」と指定されたデバイスのノードと当該ノードに接続しているエッジを要因領域に含める)。
これは障害要因が含まれる可能性がある要因領域が拡大するためである。
ここでは障害要因が1つであるとは限らないため、3907の処理において抽出した部分グラフとその時点の要因領域のANDを取ることはしていない。
次に、処理3908にて、結果出力部109が、その時点での要因領域をグラフ上に強調表示する。
これにより障害の要因と考えられるデバイスおよび処理を絞り込むことが可能となる。
要因領域は、障害の要因の候補としてグラフ上に示す要素を格納する領域である。
以降処理3902から処理3909までは、ユーザが障害要因を特定するまで繰返し実行する。
処理3903にて、ユーザは障害が発生した時に、その現象が直接現れたデバイス、あるいは確実に異常な振舞いをしているデバイスを指定し、それが「異常」デバイスであることを入力する。
グラフ解析部108は、処理3904にて、全体グラフから、ユーザが指定したデバイスのノード(異常発生デバイスノード)に至るパス全てをマージした部分グラフを抽出する。
つまり、グラフ解析部108は、異常発生デバイスノードと接続している有向エッジを有閉路有向グラフから抽出するとともに、抽出した有向エッジと接続しているノード(デバイス)を抽出する。
この処理は前述した3502の処理と同じである。
次に、処理3905にて、グラフ解析部108は、抽出したデバイスの正常/異常をチェックする。
デバイスごとの正常/異常は、ユーザが指定する。
ユーザから「正常」と指定されたデバイスについては、処理3906にて、現時点の要因領域から、抽出した部分グラフを削除する(「正常」と指定されたデバイスのノードと当該ノードに接続しているエッジを要因領域に含めない)。
これは障害要因が含まれる可能性がある要因領域のうち、全ての条件において完全に正常であると判断されたデバイスに影響を与える領域については、要因領域から除くことができるためである。
反対に、ユーザから「異常」と指定されたデバイスについては、処理3907にて、現時点の要因領域に抽出した部分グラフを追加する(「異常」と指定されたデバイスのノードと当該ノードに接続しているエッジを要因領域に含める)。
これは障害要因が含まれる可能性がある要因領域が拡大するためである。
ここでは障害要因が1つであるとは限らないため、3907の処理において抽出した部分グラフとその時点の要因領域のANDを取ることはしていない。
次に、処理3908にて、結果出力部109が、その時点での要因領域をグラフ上に強調表示する。
これにより障害の要因と考えられるデバイスおよび処理を絞り込むことが可能となる。
また、処理3907にて部分グラフとその時点の要因領域のAND領域に相当する部分について、色変更や形状変更などにより要因領域全体と区別して表示することも可能である。
これにより、より要因が存在する可能性が高い領域を絞り込むことが可能である。
これにより、より要因が存在する可能性が高い領域を絞り込むことが可能である。
実施の形態3.
≪グラフ表示の例≫
ここでは、LD言語で記述されたFAシステム用の制御プログラムがどのように有閉路有向グラフへ変換され、それが表示されるのかについて、具体例をもって説明する。
≪グラフ表示の例≫
ここでは、LD言語で記述されたFAシステム用の制御プログラムがどのように有閉路有向グラフへ変換され、それが表示されるのかについて、具体例をもって説明する。
図36は、FAシステム用の制御プログラムの例であり、LD言語により記述されている。
この制御プログラムは次のような仕様で動作する。
なお、図44は、図36の制御プログラムをIL言語で記述したものである。
a)入力(開始ボタン)を押下すると出力(ランプ)が点灯する。
b)出力(ランプ)は3秒間点灯する。
c)3回実行すると、入力(開始ボタン)には反応しなくなる。
d)入力(リセットボタン)を押下するとデバイス値をリセットして最初の状態へ戻る。
e)入力(開始ボタン)は押し続ける必要はなく、内部デバイスは自己保持する。
この制御プログラムは次のような仕様で動作する。
なお、図44は、図36の制御プログラムをIL言語で記述したものである。
a)入力(開始ボタン)を押下すると出力(ランプ)が点灯する。
b)出力(ランプ)は3秒間点灯する。
c)3回実行すると、入力(開始ボタン)には反応しなくなる。
d)入力(リセットボタン)を押下するとデバイス値をリセットして最初の状態へ戻る。
e)入力(開始ボタン)は押し続ける必要はなく、内部デバイスは自己保持する。
以下にLDプログラムを示した図36について説明する。
1000は上記した1)から5)の仕様を満たす制御プログラムの例である。
1000は上記した1)から5)の仕様を満たす制御プログラムの例である。
まず、最初のラング(回路ブロック)にて内部デバイスのコイル5004の定義を行っている。
内部デバイス5004は、出力(ランプ)を直接定義するための中間的なデバイスである。
上記仕様のa)にあるように、内部デバイス5004は、入力(開始ボタン)の押下によってONするため、入力(開始ボタン)のA接点5001が条件となる。
次に、仕様c)にあるように、ボタン押下を3回行って3回実行が完了したとき、またd)にあるように入力(リセットボタン)押下されたときは、内部デバイスのコイル5004がOFFとなることを実現するため、カウンタ5002のB接点5002と、入力(リセットボタン)のB接点5003をそれぞれAND条件とする。
e)にあるように、内部デバイスは自己保持するため、入力(開始ボタン)とOR条件で内部デバイスのA接点5005を付け、ただしこの自己保持はb)の仕様から3秒間のみ継続するため、タイマのB接点5006をAND条件として付ける。
次に、タイマのコイル5008と出力(ランプ)コイル5009の定義を行っている。
これらのコイルは何れも内部デバイスから直接定義されるため、内部デバイスのA接点5007のみを条件とする。
タイマのコイル5008は、内部デバイス5007がONになった状態で3秒間経過するとONする。つまり3秒経過した時点でタイマのB接点5006がOFFとなる。
次にカウンタのコイル5012の定義を行う。
仕様c)より、カウンタは入力(開始ボタン)を3回押下し、処理が完了したときにカウントアップする必要がある。このため、タイマのタイムアップタイミング(つまりタイマのA接点5011)をカウンタの条件としている。カウンタ5012は、タイマのA接点5011が3回OFFからONになったタイミングでONする。
最後のラングでは入力(リセットボタン)5013を実現している。
仕様d)を実現するため、入力(リセットボタン)のA接点5013がONしたタイミングで、カウントアップしているカウンタを0にリセットするため、RESET命令5014を使用している。
内部デバイス5004は、出力(ランプ)を直接定義するための中間的なデバイスである。
上記仕様のa)にあるように、内部デバイス5004は、入力(開始ボタン)の押下によってONするため、入力(開始ボタン)のA接点5001が条件となる。
次に、仕様c)にあるように、ボタン押下を3回行って3回実行が完了したとき、またd)にあるように入力(リセットボタン)押下されたときは、内部デバイスのコイル5004がOFFとなることを実現するため、カウンタ5002のB接点5002と、入力(リセットボタン)のB接点5003をそれぞれAND条件とする。
e)にあるように、内部デバイスは自己保持するため、入力(開始ボタン)とOR条件で内部デバイスのA接点5005を付け、ただしこの自己保持はb)の仕様から3秒間のみ継続するため、タイマのB接点5006をAND条件として付ける。
次に、タイマのコイル5008と出力(ランプ)コイル5009の定義を行っている。
これらのコイルは何れも内部デバイスから直接定義されるため、内部デバイスのA接点5007のみを条件とする。
タイマのコイル5008は、内部デバイス5007がONになった状態で3秒間経過するとONする。つまり3秒経過した時点でタイマのB接点5006がOFFとなる。
次にカウンタのコイル5012の定義を行う。
仕様c)より、カウンタは入力(開始ボタン)を3回押下し、処理が完了したときにカウントアップする必要がある。このため、タイマのタイムアップタイミング(つまりタイマのA接点5011)をカウンタの条件としている。カウンタ5012は、タイマのA接点5011が3回OFFからONになったタイミングでONする。
最後のラングでは入力(リセットボタン)5013を実現している。
仕様d)を実現するため、入力(リセットボタン)のA接点5013がONしたタイミングで、カウントアップしているカウンタを0にリセットするため、RESET命令5014を使用している。
以上のような制御プログラム5000がシステム内の制御プログラム中間コード5010として格納されている場合の、グラフ表示が行われる流れについて、グラフ表示のフロー3200の中の処理3204から具体的に説明する。
まず、デバイス抽出部102が、デバイスの抽出処理3204を行う。
これは制御プログラムをスキャンして、使用しているデバイスを抽出することで実現する。
制御プログラム5000の例では、ノード構造体5040として、デバイス一覧5200(図38)が抽出される。
ノード構造体例5200のデバイス(ラベル)名欄には制御プログラムで通常そのデバイスを特定する名称が登録されるが、ここにはデバイスIDやラベルIDや変数名など、デバイスを一意に特定できるものであればなにを登録しても良い。
また、デバイス種別欄には対象とするシーケンサ機器や制御プログラムで使用できるデバイス種別が格納される。
これは制御プログラムをスキャンして、使用しているデバイスを抽出することで実現する。
制御プログラム5000の例では、ノード構造体5040として、デバイス一覧5200(図38)が抽出される。
ノード構造体例5200のデバイス(ラベル)名欄には制御プログラムで通常そのデバイスを特定する名称が登録されるが、ここにはデバイスIDやラベルIDや変数名など、デバイスを一意に特定できるものであればなにを登録しても良い。
また、デバイス種別欄には対象とするシーケンサ機器や制御プログラムで使用できるデバイス種別が格納される。
次に、依存関係抽出部103が、依存関係の抽出処理3205を行う。
これは制御プログラムをスキャンして、各ラングの「条件⇒コイル」の関係を抽出することで実現する。
制御プログラム5000の例では、エッジ構造体5050として、依存関係一覧5300(図39)が抽出される。
エッジ構造体例5300のエッジタイプには、そのエッジが表している制御プログラムの処理のタイプが登録される。
例えば制御プログラム5000の最後のラングに注目する。
このラングでは入力(リセットボタン)のA接点5013と、カウンタのRESET5014との間に依存関係が存在している。
この部分をIL言語で表現すると以下のようになる。
なお制御プログラム5000をIL言語で表現した例を図44に載せる。
前述のとおり、一般的にLD言語のプログラム要素とIL言語のプログラム要素は一対一に対応させることができる。
LOAD 入力(リセットボタン) ――― 5013
RESET カウンタ ―――――――――― 5014
エッジ構造体5300の例では、このIL言語の命令を組み合わせてエッジタイプとしている。
上記の例はエッジ構造体5300の番号9に表されている「LOAD−RESET」がエッジタイプとなる。
このエッジタイプにより、2デバイス間の依存関係の概略を表現することが可能となる。
次に論理の欄は、エッジによって接続される2デバイス間の論理(正論理/負論理)を登録する。
ここでいう論理とは、有向エッジによって表現される処理が、デバイスのON/OFFを逆転させるかどうかを表している。このためデバイス種別がビットでない場合(ワードである場合)は無効となる。
これは制御プログラムをスキャンして、各ラングの「条件⇒コイル」の関係を抽出することで実現する。
制御プログラム5000の例では、エッジ構造体5050として、依存関係一覧5300(図39)が抽出される。
エッジ構造体例5300のエッジタイプには、そのエッジが表している制御プログラムの処理のタイプが登録される。
例えば制御プログラム5000の最後のラングに注目する。
このラングでは入力(リセットボタン)のA接点5013と、カウンタのRESET5014との間に依存関係が存在している。
この部分をIL言語で表現すると以下のようになる。
なお制御プログラム5000をIL言語で表現した例を図44に載せる。
前述のとおり、一般的にLD言語のプログラム要素とIL言語のプログラム要素は一対一に対応させることができる。
LOAD 入力(リセットボタン) ――― 5013
RESET カウンタ ―――――――――― 5014
エッジ構造体5300の例では、このIL言語の命令を組み合わせてエッジタイプとしている。
上記の例はエッジ構造体5300の番号9に表されている「LOAD−RESET」がエッジタイプとなる。
このエッジタイプにより、2デバイス間の依存関係の概略を表現することが可能となる。
次に論理の欄は、エッジによって接続される2デバイス間の論理(正論理/負論理)を登録する。
ここでいう論理とは、有向エッジによって表現される処理が、デバイスのON/OFFを逆転させるかどうかを表している。このためデバイス種別がビットでない場合(ワードである場合)は無効となる。
次に、依存関係抽出部103が、接続情報の構築処理3206を行う。
これは処理3204と処理3205で作成したノード構造体5200とエッジ構造体5300の間をリンク付けする処理である。
制御プログラム5000の例では、接続情報5400(図40)が構築される。
接続情報5400のエッジ欄は接続関係を表現しているエッジ構造体5300内のエッジの番号を示している。
同様に元ノード欄と先ノード欄は、ノード構造体5200内のノードの番号を示している。
接続情報で表現されているエッジは必ず有向グラフであるため、元ノード欄と先ノード欄に分けて設定される。
なお、通常エッジ構造体5300の番号欄と接続情報5400のエッジ欄は一対一に対応するため、エッジ構造体5300と接続情報5400は同一の表として実現してもよい。
これは処理3204と処理3205で作成したノード構造体5200とエッジ構造体5300の間をリンク付けする処理である。
制御プログラム5000の例では、接続情報5400(図40)が構築される。
接続情報5400のエッジ欄は接続関係を表現しているエッジ構造体5300内のエッジの番号を示している。
同様に元ノード欄と先ノード欄は、ノード構造体5200内のノードの番号を示している。
接続情報で表現されているエッジは必ず有向グラフであるため、元ノード欄と先ノード欄に分けて設定される。
なお、通常エッジ構造体5300の番号欄と接続情報5400のエッジ欄は一対一に対応するため、エッジ構造体5300と接続情報5400は同一の表として実現してもよい。
最後に、グラフ生成部112が有閉路有向グラフの生成・描画処理3207を行う。
上述した処理3205までの処理によってグラフ描画のための情報であるノード構造体5200、エッジ構造体5300、接続情報5400は全て作成されている。
このため、グラフ生成部112は、接続情報5400に示されている対応付けに従って、ノード構造体5200のデバイスとエッジ構造体5300の依存関係を組み合わせて、有閉路有向グラフの生成・描画を行う。
上述した処理3205までの処理によってグラフ描画のための情報であるノード構造体5200、エッジ構造体5300、接続情報5400は全て作成されている。
このため、グラフ生成部112は、接続情報5400に示されている対応付けに従って、ノード構造体5200のデバイスとエッジ構造体5300の依存関係を組み合わせて、有閉路有向グラフの生成・描画を行う。
図37は、制御プログラム5000を、本実施の形態に係るグラフ表示方法によって表示した例を模式的に表したものである。
入力デバイスと出力デバイスは矩形、内部のデバイスは円で示している。
また、正論理の処理は実線、負論理の処理は破線で示している。
また、図37のノード内の(1)〜(6)は、ノード構造体5200(図38)に示されている番号を表し、エッジ近傍の(1)〜(9)は、エッジ構造体5300(図39)に示されている番号を表している。
入力デバイスと出力デバイスは矩形、内部のデバイスは円で示している。
また、正論理の処理は実線、負論理の処理は破線で示している。
また、図37のノード内の(1)〜(6)は、ノード構造体5200(図38)に示されている番号を表し、エッジ近傍の(1)〜(9)は、エッジ構造体5300(図39)に示されている番号を表している。
ここでは、グラフを構成する要素であるノードとエッジを描画する手順について説明する。
例えばノード(デバイス)の種別毎に画面上で分類をして表示を行いたければ、ノード構造体5200内のデバイス種別の同じものを集めて画面上へノードを表示する。
ノード構造体5200のデバイス種別から、入力のデバイスを取得すると、「ビット入力」であるものは入力(開始ボタン)5101と入力(リセットボタン)5102となる。
同様にノード構造体5200のデバイス種別から、内部のデバイスを取得すると、「タイマ」「カウンタ」「ビット内部」であるものは、内部デバイス5103とタイマ5104とカウンタ5105となる。
次に、ノード構造体5200のデバイス種別から、出力のデバイスを取得すると、「ビット出力」であるものは、出力(ランプ)5106となる。
次に、接続情報5400の表の元ノード欄と先ノード欄をチェックして、エッジ番号およびエッジ構造体5300のエッジタイプや論理を取得する。
これにより、グラフとして表示されるノード間がどのようなエッジで接続されているのかを知り、そのエッジタイプや論理によってエッジの線種などを変更する。
前述のように図37の例では、エッジ構造体5300の論理欄から、その処理(エッジ)が正論理の場合は実線、負論理の場合は破線で示している。
接続情報5400の一行目を見ると、元ノード番号が1、先ノード番号が2でエッジ番号が1であるため、入力(開始ボタン)5101と内部デバイス5103の間にエッジが存在し、そのエッジはエッジタイプが「LOAD−OUT」であり、正論理であることが分かる。
したがって、画面にはグラフとして入力(開始ボタン)5101と内部デバイス5103の間に、有向エッジとして実線のエッジ5110を描画する。
さらに、例えば接続情報5400の2行目にあるように、自分自身のノードへのエッジの場合は、ループの形でエッジ5113を表示する。
このように、エッジ構造体5300および接続情報5400内の、エッジ番号1は実線エッジ5110、番号2は実線ループエッジ5113、番号3は破線エッジ5116、番号4は破線エッジ5118、番号5は破線エッジ5111、番号6は実線エッジ5115、番号7は実線エッジ5114、番号8は実線エッジ5117、番号9は破線エッジ5112、にそれぞれ対応する。
このようにして、制御プログラム5000は、図37に示すようなグラフ表示が可能となる。
例えばノード(デバイス)の種別毎に画面上で分類をして表示を行いたければ、ノード構造体5200内のデバイス種別の同じものを集めて画面上へノードを表示する。
ノード構造体5200のデバイス種別から、入力のデバイスを取得すると、「ビット入力」であるものは入力(開始ボタン)5101と入力(リセットボタン)5102となる。
同様にノード構造体5200のデバイス種別から、内部のデバイスを取得すると、「タイマ」「カウンタ」「ビット内部」であるものは、内部デバイス5103とタイマ5104とカウンタ5105となる。
次に、ノード構造体5200のデバイス種別から、出力のデバイスを取得すると、「ビット出力」であるものは、出力(ランプ)5106となる。
次に、接続情報5400の表の元ノード欄と先ノード欄をチェックして、エッジ番号およびエッジ構造体5300のエッジタイプや論理を取得する。
これにより、グラフとして表示されるノード間がどのようなエッジで接続されているのかを知り、そのエッジタイプや論理によってエッジの線種などを変更する。
前述のように図37の例では、エッジ構造体5300の論理欄から、その処理(エッジ)が正論理の場合は実線、負論理の場合は破線で示している。
接続情報5400の一行目を見ると、元ノード番号が1、先ノード番号が2でエッジ番号が1であるため、入力(開始ボタン)5101と内部デバイス5103の間にエッジが存在し、そのエッジはエッジタイプが「LOAD−OUT」であり、正論理であることが分かる。
したがって、画面にはグラフとして入力(開始ボタン)5101と内部デバイス5103の間に、有向エッジとして実線のエッジ5110を描画する。
さらに、例えば接続情報5400の2行目にあるように、自分自身のノードへのエッジの場合は、ループの形でエッジ5113を表示する。
このように、エッジ構造体5300および接続情報5400内の、エッジ番号1は実線エッジ5110、番号2は実線ループエッジ5113、番号3は破線エッジ5116、番号4は破線エッジ5118、番号5は破線エッジ5111、番号6は実線エッジ5115、番号7は実線エッジ5114、番号8は実線エッジ5117、番号9は破線エッジ5112、にそれぞれ対応する。
このようにして、制御プログラム5000は、図37に示すようなグラフ表示が可能となる。
制御プログラム5000から自動的に図37のグラフ表示を行うため、図37のグラフのノードの配置アルゴリズムについては、さまざまな方法をとることができる。
上述したように、ノードの同一な種別を同一領域にまとめて配置する方法や、ノードとして表されたデバイスの番号順や名称順に並べる方法、さらにノードの次数(ノードから出入りするエッジの数)の多い順などが考えられる。
また、エッジによって接続された2つのノードをより近くに表示させる方法などもある。
これらのノードおよびエッジの配置方法については一般的な複雑グラフ表示アルゴリズムを用いることもできる。
また、グラフは2次元平面上だけでなく、3次元空間上に表示させることもできる。
さらに一度表示されたノードおよびエッジはその位置をユーザが自由に変更させることができる。
この場合、一般的なグラフ描画ツールに搭載される機能と同じように、ノードやエッジをマウスによるドラッグ&ドロップなどの方法で、ユーザの好みの配置へ変更することができる。
上述したように、ノードの同一な種別を同一領域にまとめて配置する方法や、ノードとして表されたデバイスの番号順や名称順に並べる方法、さらにノードの次数(ノードから出入りするエッジの数)の多い順などが考えられる。
また、エッジによって接続された2つのノードをより近くに表示させる方法などもある。
これらのノードおよびエッジの配置方法については一般的な複雑グラフ表示アルゴリズムを用いることもできる。
また、グラフは2次元平面上だけでなく、3次元空間上に表示させることもできる。
さらに一度表示されたノードおよびエッジはその位置をユーザが自由に変更させることができる。
この場合、一般的なグラフ描画ツールに搭載される機能と同じように、ノードやエッジをマウスによるドラッグ&ドロップなどの方法で、ユーザの好みの配置へ変更することができる。
実施の形態4.
≪影響範囲図示の例≫
図41は、ある制御プログラムをグラフ表示した例である。
この制御プログラムは入力ビットデバイスが5501、5502の2つ、内部ビットデバイスが5503、5504、5505の3つ、出力ビットデバイスが5506、5507、5508の3つから成っている。
実線のエッジは、エッジが表す処理が正論理であることを示し、破線のエッジはエッジが表す処理が負論理であることを示している。
≪影響範囲図示の例≫
図41は、ある制御プログラムをグラフ表示した例である。
この制御プログラムは入力ビットデバイスが5501、5502の2つ、内部ビットデバイスが5503、5504、5505の3つ、出力ビットデバイスが5506、5507、5508の3つから成っている。
実線のエッジは、エッジが表す処理が正論理であることを示し、破線のエッジはエッジが表す処理が負論理であることを示している。
このグラフを使用して、影響範囲図示の例について以下に説明する。
影響範囲図示のフローを示した図31を参照すると、まずユーザによって対象領域の選択処理3501が行われる。
ここでの例では、ユーザによって出力1のノード5506が選択されたとする。
次の3502の処理にて、グラフ解析部108が、対象領域に至る全てのノードを列挙する。
図41の例の場合、まず対象領域であるノード5506に至る隣り合った有向エッジは、エッジ5515のみであるため、まずパスとしてこれを加える。
次に、エッジ5515の元ノード5503に注目する。
このノードへ至る隣り合った有向エッジは、エッジ5514とエッジ5510であるため、パスとしてこれを加える。
このときエッジ5514はノード5503へ戻るループであるため、こちらのパスはここで探索を終える。
もう片方のエッジ5510の元ノード5501に注目する。
このノード5501については、このノードへ至る隣り合った有向エッジが存在しないため、ここで探索を終える。
この結果、3503の処理において強調表示される部分は、図42に示す領域となる。
つまり出力1のノード5606を対象とした場合、このノードに影響を与える範囲としては、図42内の黒塗り及び太線で示した部分、つまり処理5615と、内部1デバイス5603と、処理5614と、処理5610と、入力デバイス5601となる。
ここでの例では、ユーザによって出力1のノード5506が選択されたとする。
次の3502の処理にて、グラフ解析部108が、対象領域に至る全てのノードを列挙する。
図41の例の場合、まず対象領域であるノード5506に至る隣り合った有向エッジは、エッジ5515のみであるため、まずパスとしてこれを加える。
次に、エッジ5515の元ノード5503に注目する。
このノードへ至る隣り合った有向エッジは、エッジ5514とエッジ5510であるため、パスとしてこれを加える。
このときエッジ5514はノード5503へ戻るループであるため、こちらのパスはここで探索を終える。
もう片方のエッジ5510の元ノード5501に注目する。
このノード5501については、このノードへ至る隣り合った有向エッジが存在しないため、ここで探索を終える。
この結果、3503の処理において強調表示される部分は、図42に示す領域となる。
つまり出力1のノード5606を対象とした場合、このノードに影響を与える範囲としては、図42内の黒塗り及び太線で示した部分、つまり処理5615と、内部1デバイス5603と、処理5614と、処理5610と、入力デバイス5601となる。
このように、影響範囲図示のフローの3502の処理は、グラフについて、有向エッジを逆向きに辿る探索を行うことで全てのパスを抽出することができる。
この際の探索方法は、一般的なグラフ探索アルゴリズムを用いることができる。
探索方法は深さ優先探索でも幅優先探索でもかまわない。
ただし、グラフが有閉路グラフであるため、既に訪れたノードを記憶しておくこと、また有向グラフであるため、エッジの向きを逆向きに探索するという制約がある。
この際の探索方法は、一般的なグラフ探索アルゴリズムを用いることができる。
探索方法は深さ優先探索でも幅優先探索でもかまわない。
ただし、グラフが有閉路グラフであるため、既に訪れたノードを記憶しておくこと、また有向グラフであるため、エッジの向きを逆向きに探索するという制約がある。
≪循環定義検出の例≫
同様に図41のグラフを使用して、循環定義検出の例について以下に説明する。
同様に図41のグラフを使用して、循環定義検出の例について以下に説明する。
循環定義検出のフローを示した図33を参照すると、まず処理3701にて、任意のビットデバイスを対象ノードとする。
ここでは例として、入力1のノード5501を選択する。
次に、処理3702にて、グラフ解析部108が、対象ノードから出ているエッジを選択する。
図41の例では、エッジ5510とエッジ5511が対象となる。
ここから処理3703にてグラフ内探索を開始する。
ループ内では処理3704によりエッジの論理をチェックする。
エッジ5510とエッジ5511は両方とも正論理であるため、カウントアップは行わない。
そして、処理3705により、グラフ解析部108は、次に至るノードがカウンタやタイマであるかどうかを判断する。
エッジ5510によって至るノードである内部1ノード5503と、エッジ5511によって至るノードである内部2ノード5504は、両方ともカウンタやタイマではないため、そのまま処理3706の処理に移る。
次の処理3706において、この時点で「既に経由したノード」として記憶されているのは、最初に選択した入力1ノードのみであるため、ここで至った内部1ノード5503と内部2ノード5504と異なり、条件706には合致しない。
このため、処理3704へ戻る。
次に、内部1ノード5503に注目し、このノードから出ているエッジ5514とエッジ5515について判断する。
エッジ5514は正論理であるため、処理3705にてカウントアップは行わないが、エッジ5514はループエッジであるため、条件706に合致する。
そして、処理3707にて、循環定義としてそのパスと負論理のカウント値の組「内部1ノード5503、エッジ5514、カウント0」が保存される。
内部1ノード5503から出ているエッジ5515の方は、そのまま出力1ノード5506へ至り、ノード5506から出ているエッジは存在しないため、ここでこの枝の探索は終了する。
次に、内部2ノード5504を対象として、同様にグラフ探索を続ける。
すると「内部2ノード5504、エッジ5517、内部3ノード5505、エッジ5518、出力3ノード5508、エッジ5519、カウント1」と、閉路が存在することが分かる。
なおかつこの閉路を構成する3つのエッジのうち、エッジ5519のみが負論理の処理を表している。
この結果、処理3709において、この閉路は循環定義パスのうち負論理が奇数のものに該当する。
なお、先に抽出した「内部1ノード5503、エッジ5514、カウント0」はカウントが偶数であるため、対象からは外れる。
したがって、処理3710にて、図43に示すように循環定義「内部2ノード5704、エッジ5717、内部3ノード5705、エッジ5718、出力3ノード5708、エッジ5719、カウント1」が抽出できる。
よって、この図41または図43で表される制御プログラムにおいて、3つのデバイス、内部1、内部2および出力3は、ソフトウェアによるチャタリングを起こす危険性があるということが分かる。
ここでは例として、入力1のノード5501を選択する。
次に、処理3702にて、グラフ解析部108が、対象ノードから出ているエッジを選択する。
図41の例では、エッジ5510とエッジ5511が対象となる。
ここから処理3703にてグラフ内探索を開始する。
ループ内では処理3704によりエッジの論理をチェックする。
エッジ5510とエッジ5511は両方とも正論理であるため、カウントアップは行わない。
そして、処理3705により、グラフ解析部108は、次に至るノードがカウンタやタイマであるかどうかを判断する。
エッジ5510によって至るノードである内部1ノード5503と、エッジ5511によって至るノードである内部2ノード5504は、両方ともカウンタやタイマではないため、そのまま処理3706の処理に移る。
次の処理3706において、この時点で「既に経由したノード」として記憶されているのは、最初に選択した入力1ノードのみであるため、ここで至った内部1ノード5503と内部2ノード5504と異なり、条件706には合致しない。
このため、処理3704へ戻る。
次に、内部1ノード5503に注目し、このノードから出ているエッジ5514とエッジ5515について判断する。
エッジ5514は正論理であるため、処理3705にてカウントアップは行わないが、エッジ5514はループエッジであるため、条件706に合致する。
そして、処理3707にて、循環定義としてそのパスと負論理のカウント値の組「内部1ノード5503、エッジ5514、カウント0」が保存される。
内部1ノード5503から出ているエッジ5515の方は、そのまま出力1ノード5506へ至り、ノード5506から出ているエッジは存在しないため、ここでこの枝の探索は終了する。
次に、内部2ノード5504を対象として、同様にグラフ探索を続ける。
すると「内部2ノード5504、エッジ5517、内部3ノード5505、エッジ5518、出力3ノード5508、エッジ5519、カウント1」と、閉路が存在することが分かる。
なおかつこの閉路を構成する3つのエッジのうち、エッジ5519のみが負論理の処理を表している。
この結果、処理3709において、この閉路は循環定義パスのうち負論理が奇数のものに該当する。
なお、先に抽出した「内部1ノード5503、エッジ5514、カウント0」はカウントが偶数であるため、対象からは外れる。
したがって、処理3710にて、図43に示すように循環定義「内部2ノード5704、エッジ5717、内部3ノード5705、エッジ5718、出力3ノード5708、エッジ5719、カウント1」が抽出できる。
よって、この図41または図43で表される制御プログラムにおいて、3つのデバイス、内部1、内部2および出力3は、ソフトウェアによるチャタリングを起こす危険性があるということが分かる。
≪実施の形態における効果≫
実施の形態2〜4で開示する方法によれば、制御プログラムで制御される変数(デバイス)を抽出してノードとし、デバイス間の相互作用を依存関係として抽出してエッジとすることで、制御プログラムを有閉路有向グラフとして制御プログラム内で使用されているデバイス間の関係を、GUIにて可視的に表示することが可能となる。
グラフ表示内の特定のノード、つまりデバイスに注目した場合には、制御プログラムによって、そのデバイスによって引き起こされる全ての操作が、そのノードから出ているエッジとして表現されており、またそのデバイスへ影響を与える全ての操作が、そのノードへ入っているエッジとして表現されることになる。
このため、制御プログラムのグラフ表示を確認させることで、LD言語やIL言語の熟練者でない作業者に対しても、デバイスを中心とした制御プログラムの理解支援が可能となる。
また、制御プログラムを有閉路有向グラフとして表示し、可視化された表示の一部分を指定することで、指定するデバイス群に対して変更を行った場合の影響範囲について図示することが可能となる。
この結果、例えば制御プログラムが動作するFA・PAシステムにおける障害発生時に、LD言語やIL言語のみを用いて障害の原因究明を行うよりも短時間で、その要因発見を支援することができる。
また、制御プログラムを有閉路有向グラフとしてデータ構造に保持することにより、ソフトウェアによるチャタリングなどのプログラム上の潜在バグについて確認することが可能となるため、制御プログラムの設計時に、シミュレータや実際のFA・PAシステムと接続して判明するような潜在バグや不安定な動作の危険性を、プログラムの静的チェックで知ることが可能となる。
この結果、制御プログラムの設計フェーズにおける手戻り工数の削減を助けることが可能となる。
実施の形態2〜4で開示する方法によれば、制御プログラムで制御される変数(デバイス)を抽出してノードとし、デバイス間の相互作用を依存関係として抽出してエッジとすることで、制御プログラムを有閉路有向グラフとして制御プログラム内で使用されているデバイス間の関係を、GUIにて可視的に表示することが可能となる。
グラフ表示内の特定のノード、つまりデバイスに注目した場合には、制御プログラムによって、そのデバイスによって引き起こされる全ての操作が、そのノードから出ているエッジとして表現されており、またそのデバイスへ影響を与える全ての操作が、そのノードへ入っているエッジとして表現されることになる。
このため、制御プログラムのグラフ表示を確認させることで、LD言語やIL言語の熟練者でない作業者に対しても、デバイスを中心とした制御プログラムの理解支援が可能となる。
また、制御プログラムを有閉路有向グラフとして表示し、可視化された表示の一部分を指定することで、指定するデバイス群に対して変更を行った場合の影響範囲について図示することが可能となる。
この結果、例えば制御プログラムが動作するFA・PAシステムにおける障害発生時に、LD言語やIL言語のみを用いて障害の原因究明を行うよりも短時間で、その要因発見を支援することができる。
また、制御プログラムを有閉路有向グラフとしてデータ構造に保持することにより、ソフトウェアによるチャタリングなどのプログラム上の潜在バグについて確認することが可能となるため、制御プログラムの設計時に、シミュレータや実際のFA・PAシステムと接続して判明するような潜在バグや不安定な動作の危険性を、プログラムの静的チェックで知ることが可能となる。
この結果、制御プログラムの設計フェーズにおける手戻り工数の削減を助けることが可能となる。
≪ハードウェア構成例≫
最後に、実施の形態1〜4に示した情報処理装置100のハードウェア構成例について説明する。
図45は、実施の形態1〜4に示す情報処理装置100のハードウェア資源の一例を示す図である。
なお、図45の構成は、あくまでも情報処理装置100のハードウェア構成の一例を示すものであり、情報処理装置100のハードウェア構成は図45に記載の構成に限らず、他の構成であってもよい。
最後に、実施の形態1〜4に示した情報処理装置100のハードウェア構成例について説明する。
図45は、実施の形態1〜4に示す情報処理装置100のハードウェア資源の一例を示す図である。
なお、図45の構成は、あくまでも情報処理装置100のハードウェア構成の一例を示すものであり、情報処理装置100のハードウェア構成は図45に記載の構成に限らず、他の構成であってもよい。
図45において、情報処理装置100は、プログラムを実行するCPU4911(Central Processing Unit、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう)を備えている。
CPU4911は、バス4912を介して、例えば、ROM(Read Only Memory)4913、RAM(Random Access Memory)4914、通信ボード4915、表示装置4901、キーボード4902、マウス4903、磁気ディスク装置4920と接続され、これらのハードウェアデバイスを制御する。
更に、CPU4911は、FDD4904(Flexible Disk Drive)、コンパクトディスク装置4905(CDD)、プリンタ装置4906、スキャナ装置4907と接続していてもよい。また、磁気ディスク装置4920の代わりに、SSD(Solid State Drive)、光ディスク装置、メモリカード(登録商標)読み書き装置などの記憶装置でもよい。
RAM4914は、揮発性メモリの一例である。ROM4913、FDD4904、CDD4905、磁気ディスク装置4920の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置の一例である。
実施の形態1〜4で説明した「〜記憶部」は、RAM4914、磁気ディスク装置4920等により実現される。
通信ボード4915、キーボード4902、マウス4903、スキャナ装置4907などは、入力装置の一例である。
また、通信ボード4915、表示装置4901、プリンタ装置4906などは、出力装置の一例である。
CPU4911は、バス4912を介して、例えば、ROM(Read Only Memory)4913、RAM(Random Access Memory)4914、通信ボード4915、表示装置4901、キーボード4902、マウス4903、磁気ディスク装置4920と接続され、これらのハードウェアデバイスを制御する。
更に、CPU4911は、FDD4904(Flexible Disk Drive)、コンパクトディスク装置4905(CDD)、プリンタ装置4906、スキャナ装置4907と接続していてもよい。また、磁気ディスク装置4920の代わりに、SSD(Solid State Drive)、光ディスク装置、メモリカード(登録商標)読み書き装置などの記憶装置でもよい。
RAM4914は、揮発性メモリの一例である。ROM4913、FDD4904、CDD4905、磁気ディスク装置4920の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置の一例である。
実施の形態1〜4で説明した「〜記憶部」は、RAM4914、磁気ディスク装置4920等により実現される。
通信ボード4915、キーボード4902、マウス4903、スキャナ装置4907などは、入力装置の一例である。
また、通信ボード4915、表示装置4901、プリンタ装置4906などは、出力装置の一例である。
通信ボード4915は、ネットワークに接続されている。
例えば、通信ボード4915は、LAN(ローカルエリアネットワーク)、インターネット、WAN(ワイドエリアネットワーク)、SAN(ストレージエリアネットワーク)などに接続される。
例えば、通信ボード4915は、LAN(ローカルエリアネットワーク)、インターネット、WAN(ワイドエリアネットワーク)、SAN(ストレージエリアネットワーク)などに接続される。
磁気ディスク装置4920には、オペレーティングシステム4921(OS)、ウィンドウシステム4922、プログラム群4923、ファイル群4924が記憶されている。
プログラム群4923のプログラムは、CPU4911がオペレーティングシステム4921、ウィンドウシステム4922を利用しながら実行する。
プログラム群4923のプログラムは、CPU4911がオペレーティングシステム4921、ウィンドウシステム4922を利用しながら実行する。
また、RAM4914には、CPU4911に実行させるオペレーティングシステム4921のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。
また、RAM4914には、CPU4911による処理に必要な各種データが格納される。
また、RAM4914には、CPU4911による処理に必要な各種データが格納される。
また、ROM4913には、BIOS(Basic Input Output System)プログラムが格納され、磁気ディスク装置4920にはブートプログラムが格納されている。
情報処理装置100の起動時には、ROM4913のBIOSプログラム及び磁気ディスク装置4920のブートプログラムが実行され、BIOSプログラム及びブートプログラムによりオペレーティングシステム4921が起動される。
情報処理装置100の起動時には、ROM4913のBIOSプログラム及び磁気ディスク装置4920のブートプログラムが実行され、BIOSプログラム及びブートプログラムによりオペレーティングシステム4921が起動される。
上記プログラム群4923には、実施の形態1〜4の説明において「〜部」(「〜記憶部」以外、以下同様)として説明している機能を実行するプログラムが記憶されている。プログラムは、CPU4911により読み出され実行される。
ファイル群4924には、実施の形態1〜4の説明において、「〜の抽出」、「〜の生成」、「〜の構築」、「〜の選択」、「〜の変換」、「〜の設定」、「〜の登録」、「〜の取得」、「〜の入力」、「〜の出力」等として説明している処理の結果を示す情報やデータや信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」の各項目として記憶されている。
「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。
ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してCPU4911によりメインメモリやキャッシュメモリに読み出される。
そして、読み出された情報やデータや信号値や変数値やパラメータは、抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示などのCPUの動作に用いられる。
抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示のCPUの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリ、レジスタ、キャッシュメモリ、バッファメモリ等に一時的に記憶される。
また、実施の形態1〜4で説明しているフローチャートの矢印の部分は主としてデータや信号の入出力を示す。
データや信号値は、RAM4914のメモリ、FDD4904のフレキシブルディスク、CDD4905のコンパクトディスク、磁気ディスク装置4920の磁気ディスク、その他光ディスク、ミニディスク、DVD等の記録媒体に記録される。
また、データや信号は、バス4912や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。
ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してCPU4911によりメインメモリやキャッシュメモリに読み出される。
そして、読み出された情報やデータや信号値や変数値やパラメータは、抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示などのCPUの動作に用いられる。
抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示のCPUの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリ、レジスタ、キャッシュメモリ、バッファメモリ等に一時的に記憶される。
また、実施の形態1〜4で説明しているフローチャートの矢印の部分は主としてデータや信号の入出力を示す。
データや信号値は、RAM4914のメモリ、FDD4904のフレキシブルディスク、CDD4905のコンパクトディスク、磁気ディスク装置4920の磁気ディスク、その他光ディスク、ミニディスク、DVD等の記録媒体に記録される。
また、データや信号は、バス4912や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
また、実施の形態1〜4の説明において「〜部」として説明しているものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。
すなわち、実施の形態1〜4で説明したフローチャートに示すステップ、手順、処理により、本発明に係る「情報処理方法」を実現することができる。
また、「〜部」として説明しているものは、ROM4913に記憶されたファームウェアで実現されていても構わない。
或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。
ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ(登録商標)ディスク、DVD等の記録媒体に記憶される。
プログラムはCPU4911により読み出され、CPU4911により実行される。
すなわち、プログラムは、実施の形態1〜4の「〜部」としてコンピュータを機能させるものである。あるいは、実施の形態1〜4の「〜部」の手順や方法をコンピュータに実行させるものである。
すなわち、実施の形態1〜4で説明したフローチャートに示すステップ、手順、処理により、本発明に係る「情報処理方法」を実現することができる。
また、「〜部」として説明しているものは、ROM4913に記憶されたファームウェアで実現されていても構わない。
或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。
ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ(登録商標)ディスク、DVD等の記録媒体に記憶される。
プログラムはCPU4911により読み出され、CPU4911により実行される。
すなわち、プログラムは、実施の形態1〜4の「〜部」としてコンピュータを機能させるものである。あるいは、実施の形態1〜4の「〜部」の手順や方法をコンピュータに実行させるものである。
このように、実施の形態1〜4に示す情報処理装置100は、処理装置たるCPU、記憶装置たるメモリ、磁気ディスク等、入力装置たるキーボード、マウス、通信ボード等、出力装置たる表示装置、通信ボード等を備えるコンピュータである。
そして、上記したように「〜部」として示された機能をこれら処理装置、記憶装置、入力装置、出力装置を用いて実現するものである。
そして、上記したように「〜部」として示された機能をこれら処理装置、記憶装置、入力装置、出力装置を用いて実現するものである。
100 情報処理装置、101 制御プログラム中間コード記憶部、102 デバイス抽出部、103 依存関係抽出部、104 ノード構造体記憶部、105 エッジ構造体記憶部、106 接続情報記憶部、107 条件入力部、108 グラフ解析部、109 結果出力部、110 リンク管理部、111 オンラインモニタ部、112 グラフ生成部、121 デバイス割付情報記憶部、122 デバイス連携情報記憶部、123 デバイスグループ抽出部、124 連携デバイス抽出部、125 デバイスグループ指定部。
Claims (14)
- 制御システムに含まれるシーケンサCPU(Central Processing Unit)により実行される制御プログラムであって、前記シーケンサCPUが前記制御システムに含まれる中継装置を介して前記制御システムに含まれる入出力機器と信号を入出力するための1つ以上の信号入出力用変数を含む、複数の変数の記述と、変数間の依存関係の記述とにより制御アルゴリズムが定義されている制御プログラムを入力する制御プログラム入力部と、
前記制御システムに含まれる入出力機器ごとに、入出力機器で用いられる変数の範囲が入出力機器変数範囲として定義されている入出力機器変数範囲情報と、前記制御システムに含まれる中継装置ごとに、中継装置で用いられる変数の範囲が中継装置変数範囲として定義されている中継装置変数範囲情報とを入力する情報入力部と、
各入出力機器変数範囲情報の入出力機器変数範囲と、各中継装置変数範囲情報の中継装置変数範囲と、前記制御プログラムに記述されている各信号入出力用変数とを用いた解析を行い、前記制御プログラムに記述されている各信号入出力用変数が、いずれの入出力機器と信号を入出力するための変数であるかを特定する解析処理部と、
前記制御プログラムの複数の変数の記述と変数間の依存関係の記述とに基づき、ノードが変数を表し、有向エッジが変数間の依存関係を表し、前記制御プログラムで定義されている制御アルゴリズムをノードと有向エッジとの接続で表し、各信号入出力用変数のノードを前記解析処理部により特定された入出力機器と関連付けて表す表示情報を生成する表示情報生成部とを有することを特徴とする情報処理装置。 - 前記制御プログラム入力部は、
各々が定義している制御アルゴリズムが相互に異なっており、各々における複数の変数の記述と変数間の依存関係の記述が相互に異なっており、各々における信号入出力用変数が相互に異なっている複数の制御プログラムを入力し、
前記解析処理部は、
制御プログラムごとに、各入出力機器変数範囲情報の入出力機器変数範囲と、各中継装置変数範囲情報の中継装置変数範囲と、制御プログラムに記述されている各信号入出力用変数とを用いた解析を行い、制御プログラムごとに、各信号入出力用変数が、いずれの入出力機器と信号を入出力するための変数であるかを特定し、
前記表示情報生成部は、
各制御プログラムで定義されている制御アルゴリズムをノードと有向エッジとの接続で表し、各制御プログラムに記述されている各信号入出力用変数のノードを前記解析処理部により特定された入出力機器と関連付けて表す表示情報を生成することを特徴とする請求項1に記載の情報処理装置。 - 前記解析処理部は、
制御プログラムごとに、各入出力機器変数範囲情報の入出力機器変数範囲と、各中継装置変数範囲情報の中継装置変数範囲と、制御プログラムに記述されている各変数とを用いた解析を行い、いずれか2つ以上の制御プログラムに重複して記述されている同一の変数を抽出し、
前記表示情報生成部は、
前記解析処理部により抽出された変数のノードを対応する制御プログラムごとに表すとともに、当該変数の2つ以上のノードを相互に関連付けて表し、2つ以上の制御プログラムに当該変数が重複して記述されていることを表す表示情報を生成することを特徴とする請求項2に記載の情報処理装置。 - 前記情報入力部は、
2つ以上の制御プログラムに記述されている相互に異なる2つ以上の変数が対応付けられている変数対応付け情報を入力し、
前記解析処理部は、
それぞれに前記変数対応付け情報のいずれかの変数が記述されている2つ以上の制御プログラムを特定し、
前記表示情報生成部は、
前記変数対応付け情報で対応付けられている2つ以上の変数のノードを相互に関連付けて表し、前記解析処理部により特定された2つ以上の制御プログラムが連携関係にあることを表す表示情報を生成することを特徴とする請求項2又は3に記載の情報処理装置。 - 前記表示情報生成部は、
相互に関連付けられる2つ以上のノードを1つのノードとして集約し、
集約前の各ノードの有向エッジを、集約された1つのノードの有向エッジとする表示情報を生成することを特徴とする請求項3又は4に記載の情報処理装置。 - 前記制御プログラム入力部は、
2つ以上のシーケンサCPUにより実行される複数の制御プログラムを入力することを特徴とする請求項2〜5のいずれかに記載の情報処理装置。 - 前記制御プログラム入力部は、
信号入出力用変数に番号が含まれている制御プログラムを入力し、
前記情報入力部は、
番号により中継装置変数範囲が定義されている中継装置変数範囲情報を、中継装置ごとに入力し、
入出力機器変数範囲が、中継装置変数範囲の番号をベースとするオフセットで定義されている入出力機器変数範囲情報を、入出力機器ごとに入力し、
前記解析処理部は、
各入出力機器変数範囲情報の入出力機器変数範囲に対して、各中継装置変数範囲情報の中継装置変数範囲とのオフセット加算を行い、
オフセット加算後の各入出力機器変数範囲の番号の範囲と、前記制御プログラムに記述されている各信号入出力用変数の番号とを照合し、
入出力機器変数範囲の番号の範囲に信号入出力用変数の番号が含まれる場合に、当該信号入力用変数が、当該入出力機器変数範囲に対応する入出力機器と信号を入出力するために用いられる変数であると判断することを特徴とする請求項1〜6のいずれかに記載の情報処理装置。 - 前記情報入力部は、
前記中継装置変数範囲情報として、
前記シーケンサCPUとバスにより接続されている中継装置ごとに、中継装置で用いられる変数の範囲が定義されているバス割付設定情報を入力することを特徴とする請求項1〜7のいずれかに記載の情報処理装置。 - 前記情報入力部は、
前記制御システムに中継装置としてネットワークマスタが含まれている場合に、
前記中継装置変数範囲情報として、
前記ネットワークマスタと、前記ネットワークマスタが管理する局との間で用いられる変数の範囲が定義されているネットワーク割付設定情報を入力することを特徴とする請求項1〜8のいずれかに記載の情報処理装置。 - 前記情報入力部は、
前記制御システムに中継装置としてネットワークマスタが含まれている場合に、
前記中継装置変数範囲情報として、
前記ネットワークマスタで用いられる変数の範囲と、前記シーケンサCPUで用いられる変数との対応関係が定義されるリフレッシュ設定情報を入力することを特徴とする請求項1〜9のいずれかに記載の情報処理装置。 - 前記表示情報生成部は、
共通の入出力機器と関連付けられている1つ以上の信号入出力用変数のノードを、当該入出力機器を表すノードに集約し、
前記1つ以上の信号入出力用変数のノードの有向エッジのうち重複している有向エッジを除去し、
重複を除去した後の有向エッジを、前記入出力機器を表すノードの有向エッジとする表示情報を生成することを特徴とする請求項1〜10のいずれかに記載の情報処理装置。 - 前記表示情報生成部は、
信号入出力用変数以外の変数のノードを、前記制御プログラムを表すノードに集約し、
信号入出力用変数以外の各変数のノードと、各信号入出力用変数のノードとの間の有向エッジに則して、前記制御プログラムを表すノードと前記入出力機器を表すノードとの間に新たな有向エッジを設け、
前記制御プログラムと各入出力機器との関係を表す表示情報を生成することを特徴とする請求項11に記載の情報処理装置。 - コンピュータが、
制御システムに含まれるシーケンサCPU(Central Processing Unit)により実行される制御プログラムであって、前記シーケンサCPUが前記制御システムに含まれる中継装置を介して前記制御システムに含まれる入出力機器と信号を入出力するための1つ以上の信号入出力用変数を含む、複数の変数の記述と、変数間の依存関係の記述とにより制御アルゴリズムが定義されている制御プログラムを入力する制御プログラム入力ステップと、
前記コンピュータが、
前記制御システムに含まれる入出力機器ごとに、入出力機器で用いられる変数の範囲が入出力機器変数範囲として定義されている入出力機器変数範囲情報と、前記制御システムに含まれる中継装置ごとに、中継装置で用いられる変数の範囲が中継装置変数範囲として定義されている中継装置変数範囲情報とを入力する情報入力ステップと、
前記コンピュータが、
各入出力機器変数範囲情報の入出力機器変数範囲と、各中継装置変数範囲情報の中継装置変数範囲と、前記制御プログラムに記述されている各信号入出力用変数とを用いた解析を行い、前記制御プログラムに記述されている各信号入出力用変数が、いずれの入出力機器と信号を入出力するための変数であるかを特定する解析処理ステップと、
前記コンピュータが、
前記制御プログラムの複数の変数の記述と変数間の依存関係の記述とに基づき、ノードが変数を表し、有向エッジが変数間の依存関係を表し、前記制御プログラムで定義されている制御アルゴリズムをノードと有向エッジとの接続で表し、各信号入出力用変数のノードを前記解析処理ステップにより特定された入出力機器と関連付けて表す表示情報を生成する表示情報生成ステップとを有することを特徴とする情報処理方法。 - 制御システムに含まれるシーケンサCPU(Central Processing Unit)により実行される制御プログラムであって、前記シーケンサCPUが前記制御システムに含まれる中継装置を介して前記制御システムに含まれる入出力機器と信号を入出力するための1つ以上の信号入出力用変数を含む、複数の変数の記述と、変数間の依存関係の記述とにより制御アルゴリズムが定義されている制御プログラムを入力する制御プログラム入力ステップと、
前記制御システムに含まれる入出力機器ごとに、入出力機器で用いられる変数の範囲が入出力機器変数範囲として定義されている入出力機器変数範囲情報と、前記制御システムに含まれる中継装置ごとに、中継装置で用いられる変数の範囲が中継装置変数範囲として定義されている中継装置変数範囲情報とを入力する情報入力ステップと、
各入出力機器変数範囲情報の入出力機器変数範囲と、各中継装置変数範囲情報の中継装置変数範囲と、前記制御プログラムに記述されている各信号入出力用変数とを用いた解析を行い、前記制御プログラムに記述されている各信号入出力用変数が、いずれの入出力機器と信号を入出力するための変数であるかを特定する解析処理ステップと、
前記制御プログラムの複数の変数の記述と変数間の依存関係の記述とに基づき、ノードが変数を表し、有向エッジが変数間の依存関係を表し、前記制御プログラムで定義されている制御アルゴリズムをノードと有向エッジとの接続で表し、各信号入出力用変数のノードを前記解析処理ステップにより特定された入出力機器と関連付けて表す表示情報を生成する表示情報生成ステップとをコンピュータに実行させることを特徴とするプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012097825A JP2013225251A (ja) | 2012-04-23 | 2012-04-23 | 情報処理装置及び情報処理方法及びプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012097825A JP2013225251A (ja) | 2012-04-23 | 2012-04-23 | 情報処理装置及び情報処理方法及びプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2013225251A true JP2013225251A (ja) | 2013-10-31 |
Family
ID=49595263
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012097825A Pending JP2013225251A (ja) | 2012-04-23 | 2012-04-23 | 情報処理装置及び情報処理方法及びプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2013225251A (ja) |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016067612A1 (ja) * | 2014-10-30 | 2016-05-06 | 日本電気株式会社 | 情報処理システム及び分類方法 |
WO2016110983A1 (ja) * | 2015-01-08 | 2016-07-14 | 三菱電機株式会社 | システム設計支援ツール |
WO2016194099A1 (ja) * | 2015-06-01 | 2016-12-08 | 三菱電機株式会社 | デバッグ装置、デバッグ方法及びデバッグプログラム |
JP2017168119A (ja) * | 2014-09-02 | 2017-09-21 | アビニシオ テクノロジー エルエルシー | ユーザインタラクションを通じたグラフに基づくプログラム内の構成要素のサブセットの視覚的な規定 |
JP2018206362A (ja) * | 2017-06-02 | 2018-12-27 | オムロン株式会社 | 工程解析装置、工程解析方法、及び工程解析プログラム |
JP2019144956A (ja) * | 2018-02-22 | 2019-08-29 | オムロン株式会社 | I/o管理装置 |
WO2020100186A1 (ja) * | 2018-11-12 | 2020-05-22 | 日本電気株式会社 | 情報処理装置、制御方法、及びプログラム |
WO2020184121A1 (ja) | 2019-03-13 | 2020-09-17 | オムロン株式会社 | グラフ表示装置、グラフ表示方法、及びグラフ表示プログラム |
JP2020149300A (ja) * | 2019-03-13 | 2020-09-17 | オムロン株式会社 | グラフ表示装置、グラフ表示方法、及びグラフ表示プログラム |
WO2020184130A1 (ja) | 2019-03-13 | 2020-09-17 | オムロン株式会社 | グラフ表示装置、グラフ表示方法、及びグラフ表示プログラム |
WO2020184129A1 (ja) | 2019-03-13 | 2020-09-17 | オムロン株式会社 | 解析装置、解析方法、及び解析プログラム |
WO2020261487A1 (ja) * | 2019-06-27 | 2020-12-30 | オムロン株式会社 | 解析装置、解析方法及び解析プログラム |
JP2022045417A (ja) * | 2020-09-09 | 2022-03-22 | 株式会社東芝 | 情報処理装置、情報処理方法及び情報処理プログラム |
US11301445B2 (en) | 2014-09-02 | 2022-04-12 | Ab Initio Technology Llc | Compiling graph-based program specifications |
WO2022157941A1 (ja) * | 2021-01-22 | 2022-07-28 | 日本電気株式会社 | プログラム解析支援装置、プログラム解析支援方法、及びコンピュータ読み取り可能な記録媒体 |
JP7391269B1 (ja) | 2022-12-14 | 2023-12-04 | 三菱電機株式会社 | Fa制御プログラム生成支援プログラム、fa制御プログラム生成支援装置、fa制御プログラム生成支援方法 |
US12014156B2 (en) | 2020-09-04 | 2024-06-18 | Mitsubishi Electric Corporation | Program creation support program to provide log data on device values and dependency relationships between devices |
-
2012
- 2012-04-23 JP JP2012097825A patent/JP2013225251A/ja active Pending
Cited By (46)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2017168119A (ja) * | 2014-09-02 | 2017-09-21 | アビニシオ テクノロジー エルエルシー | ユーザインタラクションを通じたグラフに基づくプログラム内の構成要素のサブセットの視覚的な規定 |
US11301445B2 (en) | 2014-09-02 | 2022-04-12 | Ab Initio Technology Llc | Compiling graph-based program specifications |
US11250029B2 (en) | 2014-10-30 | 2022-02-15 | Nec Corporation | Information processing system and classification method |
WO2016067612A1 (ja) * | 2014-10-30 | 2016-05-06 | 日本電気株式会社 | 情報処理システム及び分類方法 |
JP6076564B2 (ja) * | 2015-01-08 | 2017-02-08 | 三菱電機株式会社 | システム設計支援ツール |
CN107003649A (zh) * | 2015-01-08 | 2017-08-01 | 三菱电机株式会社 | 系统设计辅助工具 |
KR101918430B1 (ko) | 2015-01-08 | 2018-11-13 | 미쓰비시덴키 가부시키가이샤 | 시스템 설계 지원 툴 |
CN107003649B (zh) * | 2015-01-08 | 2019-05-03 | 三菱电机株式会社 | 系统设计辅助工具 |
WO2016110983A1 (ja) * | 2015-01-08 | 2016-07-14 | 三菱電機株式会社 | システム設計支援ツール |
JPWO2016194099A1 (ja) * | 2015-06-01 | 2017-06-22 | 三菱電機株式会社 | デバッグ装置、デバッグ方法及びデバッグプログラム |
KR20180004825A (ko) * | 2015-06-01 | 2018-01-12 | 미쓰비시덴키 가부시키가이샤 | 디버그 장치, 디버그 방법 및 디버그 프로그램 |
KR101864565B1 (ko) | 2015-06-01 | 2018-06-04 | 미쓰비시덴키 가부시키가이샤 | 디버그 장치, 디버그 방법 및 디버그 프로그램 |
WO2016194099A1 (ja) * | 2015-06-01 | 2016-12-08 | 三菱電機株式会社 | デバッグ装置、デバッグ方法及びデバッグプログラム |
JP2018206362A (ja) * | 2017-06-02 | 2018-12-27 | オムロン株式会社 | 工程解析装置、工程解析方法、及び工程解析プログラム |
EP3531218B1 (en) * | 2018-02-22 | 2024-04-03 | Omron Corporation | I/o module unit |
CN110188020A (zh) * | 2018-02-22 | 2019-08-30 | 欧姆龙株式会社 | I/o管理装置 |
JP7027947B2 (ja) | 2018-02-22 | 2022-03-02 | オムロン株式会社 | I/o管理装置 |
JP2019144956A (ja) * | 2018-02-22 | 2019-08-29 | オムロン株式会社 | I/o管理装置 |
WO2020100186A1 (ja) * | 2018-11-12 | 2020-05-22 | 日本電気株式会社 | 情報処理装置、制御方法、及びプログラム |
JP7211427B2 (ja) | 2018-11-12 | 2023-01-24 | 日本電気株式会社 | 情報処理装置、制御方法、及びプログラム |
JPWO2020100186A1 (ja) * | 2018-11-12 | 2021-09-24 | 日本電気株式会社 | 情報処理装置、制御方法、及びプログラム |
CN112534369A (zh) * | 2019-03-13 | 2021-03-19 | 欧姆龙株式会社 | 图表显示装置、图表显示方法以及图表显示程序 |
JP2020149300A (ja) * | 2019-03-13 | 2020-09-17 | オムロン株式会社 | グラフ表示装置、グラフ表示方法、及びグラフ表示プログラム |
CN112534368A (zh) * | 2019-03-13 | 2021-03-19 | 欧姆龙株式会社 | 图表显示装置、图表显示方法以及图表显示程序 |
CN112543898A (zh) * | 2019-03-13 | 2021-03-23 | 欧姆龙株式会社 | 图表显示装置、图表显示方法以及图表显示程序 |
WO2020184129A1 (ja) | 2019-03-13 | 2020-09-17 | オムロン株式会社 | 解析装置、解析方法、及び解析プログラム |
JP2020149299A (ja) * | 2019-03-13 | 2020-09-17 | オムロン株式会社 | グラフ表示装置、グラフ表示方法、及びグラフ表示プログラム |
WO2020184130A1 (ja) | 2019-03-13 | 2020-09-17 | オムロン株式会社 | グラフ表示装置、グラフ表示方法、及びグラフ表示プログラム |
CN112543898B (zh) * | 2019-03-13 | 2024-04-12 | 欧姆龙株式会社 | 图表显示装置、图表显示方法以及记录介质 |
WO2020184085A1 (ja) | 2019-03-13 | 2020-09-17 | オムロン株式会社 | グラフ表示装置、グラフ表示方法、及びグラフ表示プログラム |
CN112534369B (zh) * | 2019-03-13 | 2024-04-12 | 欧姆龙株式会社 | 图表显示装置、图表显示方法以及记录介质 |
EP3940485A4 (en) * | 2019-03-13 | 2022-11-23 | OMRON Corporation | GRAPH DISPLAY DEVICE, GRAPH DISPLAY METHOD AND GRAPH DISPLAY PROGRAM |
EP3940483A4 (en) * | 2019-03-13 | 2022-11-23 | OMRON Corporation | GRAPH DISPLAY DEVICE, GRAPH DISPLAY METHOD, AND GRAPH DISPLAY PROGRAM |
JP7183877B2 (ja) | 2019-03-13 | 2022-12-06 | オムロン株式会社 | グラフ表示装置、グラフ表示方法、及びグラフ表示プログラム |
WO2020184121A1 (ja) | 2019-03-13 | 2020-09-17 | オムロン株式会社 | グラフ表示装置、グラフ表示方法、及びグラフ表示プログラム |
US11640154B2 (en) | 2019-03-13 | 2023-05-02 | Omron Corporation | Graph display device, graph display method, and recording medium for associating and ascertaining dependency relations among device variables |
US11656592B2 (en) | 2019-03-13 | 2023-05-23 | Omron Corporation | Analysis device, analysis method, and recording medium |
US11762363B2 (en) | 2019-03-13 | 2023-09-19 | Omron Corporation | Graph display device, graph display method, and recording medium |
US11803170B2 (en) | 2019-03-13 | 2023-10-31 | Omron Corporation | Graph display device, graph display method, and recording medium |
WO2020261487A1 (ja) * | 2019-06-27 | 2020-12-30 | オムロン株式会社 | 解析装置、解析方法及び解析プログラム |
US12014156B2 (en) | 2020-09-04 | 2024-06-18 | Mitsubishi Electric Corporation | Program creation support program to provide log data on device values and dependency relationships between devices |
JP2022045417A (ja) * | 2020-09-09 | 2022-03-22 | 株式会社東芝 | 情報処理装置、情報処理方法及び情報処理プログラム |
JP7413214B2 (ja) | 2020-09-09 | 2024-01-15 | 株式会社東芝 | 情報処理装置、情報処理方法及び情報処理プログラム |
WO2022157941A1 (ja) * | 2021-01-22 | 2022-07-28 | 日本電気株式会社 | プログラム解析支援装置、プログラム解析支援方法、及びコンピュータ読み取り可能な記録媒体 |
JP7391269B1 (ja) | 2022-12-14 | 2023-12-04 | 三菱電機株式会社 | Fa制御プログラム生成支援プログラム、fa制御プログラム生成支援装置、fa制御プログラム生成支援方法 |
WO2024127568A1 (ja) * | 2022-12-14 | 2024-06-20 | 三菱電機株式会社 | Fa制御プログラム生成支援プログラム、fa制御プログラム生成支援装置、fa制御プログラム生成支援方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2013225251A (ja) | 情報処理装置及び情報処理方法及びプログラム | |
JP5762154B2 (ja) | 情報処理装置及び情報処理方法及びプログラム | |
EP3314340B1 (en) | Control contextualization and reasoning about control | |
US9747190B2 (en) | Analysis system, analysis method, and computer program product | |
KR101697031B1 (ko) | 시스템 구축 지원 툴 및 시스템 | |
US11175643B2 (en) | Rich contextualization of automation data | |
US8788239B2 (en) | Methods, apparatus and articles of manufacture to test batch configurations | |
US7761765B2 (en) | Automated root cause identification of logic controller failure | |
JP2018206362A (ja) | 工程解析装置、工程解析方法、及び工程解析プログラム | |
US20190171669A1 (en) | A method for generating a graph model for monitoring machinery health | |
Julius et al. | Transformation of GRAFCET to PLC code including hierarchical structures | |
JP6461092B2 (ja) | ツールコンパイラ | |
JP2009266047A (ja) | 機器管理装置及び機器管理方法及びプログラム | |
US20120023054A1 (en) | Device and Method for Creating a Process Model | |
IL239575A (en) | Automatic control of production facilities | |
CN111108481A (zh) | 故障分析方法及相关设备 | |
Lukman et al. | Model-driven engineering of process control software–beyond device-centric abstractions | |
JP5785130B2 (ja) | プログラム生成装置 | |
Rabiser et al. | Variability management for a runtime monitoring infrastructure | |
US20220291903A1 (en) | Information processing device, recording medium, and support system | |
Tufail et al. | A model-driven alarms framework (MAF) with mobile clients support for wide-ranging industrial control systems | |
White | Mastering PLC Programming: The software engineering survival guide to automation programming | |
US11972257B2 (en) | Industrial automation system topology with point to point business rule integration | |
KR20120010435A (ko) | 자동화 제조 시스템을 위한 plc 제어 로직 실행 방법 | |
CN111338619B (zh) | 一种图形化算法编程交互系统、编程方法和可读存储介质 |