(58)【調査した分野】(Int.Cl.,DB名)
前記I/O演算部は、前記制御部から前記再現試験の実行速度が指定された場合に、前記実行速度に応じて前記出力時間を短縮または延長して前記I/Oログファイルから読み出した前記出力データを前記制御部へ出力することを特徴とする請求項2に記載の制御エミュレータ。
試験対象としてインストール済みの制御ソフトウェアを実行し、制御信号を出力することで制御機器を模擬する制御エミュレータにネットワークを介して接続され、前記制御エミュレータとの間で信号入出力を模擬するI/Oエミュレータであって、
前記制御信号に対して制御対象機器が出力する出力信号を模擬する出力データについて、出力条件、出力値、出力時間及び前記制御エミュレータのメモリ領域における出力先アドレスを前記制御信号の種別に応じて定義した設定ファイルを記憶する設定ファイル記憶部と、
前記制御エミュレータから前記制御信号を入力し、前記制御信号と前記設定ファイルに基づいて演算処理を行い、その演算結果を前記出力データとして前記出力先アドレスへ出力するI/O演算部と、
少なくとも前記制御信号の種別、前記制御信号の入力時間、前記出力データの前記出力値、出力時間及び前記出力先アドレスを含むI/Oログファイルを記憶するI/Oログファイル記憶部と、
を備え、
前記I/O演算部は、共有メモリ部への前記出力データの書込みに連動して前記I/Oログファイルにログデータを記録することを特徴とするI/Oエミュレータ。
前記I/O演算部は、前記制御エミュレータから前記再現試験の実行速度が指定された場合に、前記実行速度に応じて前記出力時間を短縮または延長して前記I/Oログファイルから読み出した前記出力データを前記制御エミュレータへ出力することを特徴とする請求項6に記載のI/Oエミュレータ。
【背景技術】
【0002】
一般に、工場の製造設備を制御する制御機器は、監視用の操作画面を表示する表示装置と、動作確認済みの制御ソフトウェアがインストールされ、制御処理を実行するコントローラと、コントローラにおける制御処理の結果を制御対象機器へ伝えるとともに、設備の現状を示す信号をコントローラへ出力する入出力機器から構成されている。
【0003】
また、近年におけるコンピュータの性能向上と、ソフトウェア作成のためのエンジニアリングツールの発達に伴い、エンジニアリングツールによって作成した制御ソフトウェアを実際の機器にインストールすることなく、コンピュータ上の仮想環境で動作させるだけでソフトウェアの問題点を把握可能とするエミュレータが開発され、使用されるようになってきた。
【0004】
図10は、従来の制御ソフトウェア試験システムの全体構成例を示すブロック図である。ここでは、操作装置における表示を模擬する操作画面エミュレータ11と、コントローラにおける制御(計算)部分を模擬する制御エミュレータ12にそれぞれ対応するコンピュータを準備し、これらをネットワークNWで接続することでシステムが構築されている。制御エミュレータ12は、制御ソフトウェアを記憶する制御ソフトウェア記憶部121a、演算処理を実行する制御部121b、制御ソフトウェアの実行時に制御部121bのデータ参照先および書込先となる共有メモリ部121cを備えている。
【0005】
しかしながら、上記のような制御エミュレータは、実際のコントローラ内での制御ソフトウェアの動作については模擬できるが、コントローラと入出力機器との間の信号入出力については、入出力機能に係る簡易的なシミュレーションを行うためのソフトウェア(以下、「I/Oソフトウェア」という。)を別途作成して制御ソフトウェアの中に組み込む、あるいは、現地にて実際の入出力機器を利用して確認する必要があった。
【発明を実施するための形態】
【0014】
以下、本発明の実施形態について図面を参照して詳細に説明する。
【0015】
<第1の実施形態>
図1は、本発明の第1の実施形態における制御ソフトウェア試験システム1の全体構成例を示すブロック図である。ここでは、制御ソフトウェア試験システム1は、操作画面エミュレータ11と制御エミュレータ12がネットワークを介して接続されている。制御エミュレータ12の機能は、工場の製造設備を構成する制御機器のコントローラの動作を模擬する制御エミュレート部121と入出力機器の動作を模擬するI/Oエミュレート部122の二つに分類されている。
【0016】
制御エミュレート部121は、制御ソフトウェア記憶部121a、制御部121b、共有メモリ部121cを含んでいる。制御ソフトウェア記憶部121aは、試験対象の制御ソフトウェアを記憶する。制御ソフトウェア記憶部121aへの制御ソフトウェアのインストールについては、公知の手法を用いればよい。制御部121bは、制御ソフトウェア記憶部121aから制御ソフトウェアを読み込んで制御処理を実行し、信号の出力指示である制御信号を出力する。共有メモリ部121cは、制御部121bのデータ参照先及びデータ書込先として使用され、I/Oエミュレート部122との間で共有される。
【0017】
I/Oエミュレート部122は、設定ファイル記憶部122a、I/O演算部122b、及び設定ファイル編集部122cを含んでいる。
設定ファイル記憶部122aは、制御信号に対して制御対象機器(図示省略する)が出力する出力信号を模擬する出力データについて、出力条件、出力値、出力時間及び共有メモリ部における出力先アドレスを制御信号の種別に対応して定義した設定ファイルを記憶する。
【0018】
制御信号の種別に対応して設定ファイルに定義される内容としては、例えば(A)デジタル出力の折り返し、(B)データセット、(C)カウンタセット、(D)PID演算結果のセット、などが挙げられる。入出力機器における全種類の入出力を模擬することは実際には困難であることに鑑み、本実施形態では幾つかの仕様に絞って設定ファイルに定義する。これによって、ソフトウェアの知識がない者でも、入出力機器における信号の入出力動作を模擬可能としている。
【0019】
I/O演算部122bは、制御部121bから制御信号を入力し、制御信号と設定ファイルに基づいて演算処理を行い、その演算結果を出力データとして共有メモリ部121cの出力先アドレスへ出力する。
【0020】
ユーザが制御エミュレート部121の制御ソフトウェアを動作させると、I/O演算部122bは設定ファイルの内容に基づき、例えば以下のような演算結果を制御エミュレート部121の共有メモリ部121cへ書き込む。
【0021】
(A)デジタル出力の折り返し
制御部121bから制御信号(出力指示)が入力されると、設定ファイルにおいて予め設定されている出力時間後に、I/O演算部122bが共有メモリ部121cの所定のメモリアドレス(出力先アドレス)へ所定の出力値を書き込む。例えば、設定ファイルでの定義内容により、制御部121bからの制御信号(出力指示)のデジタル値をビット反転して書き込むことができる。
【0022】
(B)データセット
設定ファイル内に予め設定されている出力条件が成立している間のみ、I/O演算部122bが共有メモリ部121cの所定のメモリアドレス(出力先アドレス)へ所定の出力値を書き込む。
【0023】
(C)カウンタセット
設定ファイル内に予め設定されている出力条件が成立している間のみ、I/O演算部122bが所定の出力時間間隔で、共有メモリ部121cの所定の出力先アドレスへカウントアップまたはカウントダウンした値を書き込む。
【0024】
(D)PID演算結果のセット
I/O演算部122bが制御部121bからの入力値に対して所定のPID演算を行い、演算した結果をPIDの現在値入力として共有メモリ部121cの所定の出力先アドレスへ書き込む。PID(Proportional―Integral―Derivative)制御は、制御工学におけるフィードバック制御の一種であり、入力値の制御を出力値と目標値との偏差、その積分、および微分の3つの要素によって行う方法のことである。
【0025】
設定ファイル編集部122cは、ファイル読込または編集画面(図示省略する)における入力操作によって設定ファイルを編集し、設定ファイル記憶部122aへ記憶する。例えば、設定ファイル編集部122cは、設定ファイルとしてCSVファイルを必要に応じて読み込むことで、設定変更を容易に実施することができる。
【0026】
図2は、
図1に示す各エミュレータのハードウェア構成例を示すブロック図である。各エミュレータは、CPU(Central Processing Unit)101、ROM(Read Only Memory)102、RAM(Random Access Memory)103、入出力インターフェース104、システムバス105、入力装置106、表示装置107、ストレージ108および通信装置109から構成されたコンピュータである。
【0027】
CPU101は、ROM102やRAM103に格納されたプログラムやデータなどを用いて各種の演算処理を実行する処理装置である。ROM102は、コンピュータを機能させるための基本プログラムや環境ファイルなどを記憶する読み取り専用の記憶装置である。RAM103は、CPU101が実行するプログラムおよび各プログラムの実行に必要なデータを記憶する主記憶装置であり、高速な読み出しと書き込みが可能である。入出力インターフェース104は、各種のハードウェアとシステムバス105との接続を仲介する装置である。システムバス105は、CPU101、ROM102、RAM103および入出力インターフェース104で共有される情報伝達路である。
【0028】
また、入出力インターフェース104には、入力装置106、表示装置107、ストレージ108、および通信装置109などのハードウェアが接続されている。入力装置106は、ユーザからの入力を処理する装置であり、例えばキーボードやマウスなどである。表示装置107は、ユーザに対して演算結果や作成画面などを表示する装置であり、例えば液晶ディスプレイやプラズマディスプレイなどである。ストレージ108は、プログラムやデータを蓄積する大容量の補助記憶装置であり、例えばハードディスク装置などである。
【0029】
図3は、
図1に示すI/O演算部122bにおける入出力試験時の処理例を示すフローチャートである。この処理は、制御エミュレート部121及びI/Oエミュレート部122の起動時に開始される。
【0030】
先ず、I/O演算部122bは、制御部121bから入力された制御信号が入出力(I/O)試験の開始指示か否かを判定する(S101)。ここで、制御信号が入出力試験の開始指示であると判定した場合(S101:YES)は、S102へ進む。これに対し、入出力試験の開始指示ではないと判定した場合(S101:NO)は、開始指示が入力されるまで待機状態が維持される。
【0031】
S102において、I/O演算部122bは、設定ファイル記憶部122aから設定ファイルを読み込む。
次に、I/O演算部122bは、制御信号と読み込んだ設定ファイルに記述されている設定条件に基づいてI/O演算処理を実行し、演算結果を出力データとして共有メモリ部121cの出力先アドレスへ書き込む(S103)。例えば、制御信号が“PID演算結果のセット”の場合には、I/O演算部122bが設定ファイルを参照して“PID演算結果のセット”に係る設定条件を取得するとともに、制御部121bからの入力値に対して所定のPID演算を行い、演算した結果をPIDの現在値入力として共有メモリ部121cの所定の出力先アドレスへ書き込む。
【0032】
次に、I/O演算部122bは、制御部121bから入力された制御信号が入出力試験の終了指示か否かを判定する(S104)。ここで、制御信号が入出力試験の終了指示であると判定した場合(S104:YES)は、処理を終了する。これに対し、入出力試験の終了指示ではないと判定した場合(S104:NO)は、S103へ戻る。
【0033】
図4は、
図3のS103の詳細な処理例を示すフローチャートである。先ず、I/O演算部122bは、制御部121bから入力された制御信号が“デジタル出力の折り返し”か否かを判定する(S201)。ここで、制御信号が“デジタル出力の折り返し”と判定した場合(S201:YES)は、S202へ進む。これに対し、制御信号が“デジタル出力の折り返し”ではないと判定した場合(S201:NO)は、S203へ進む。
【0034】
S202において、I/O演算部122bは、設定ファイルにおいて予め設定されている出力時間後に、共有メモリ部121cの所定のメモリアドレス(出力先アドレス)へ所定の出力値を書き込む。
【0035】
S203において、I/O演算部122bは、制御部121bから入力された制御信号が“データセット”か否かを判定する。ここで、制御信号が“データセット”と判定した場合(S203:YES)は、S204へ進む。これに対し、制御信号が“データセット”ではないと判定した場合(S203:NO)は、S205へ進む。
【0036】
S204において、設定ファイル内に予め設定されている出力条件が成立している間、I/O演算部122bは、共有メモリ部121cの所定のメモリアドレス(出力先アドレス)へ所定の出力値を書き込む。
【0037】
S205において、I/O演算部122bは、制御部121bから入力された制御信号が“カウンタセット”か否かを判定する。ここで、制御信号が“カウンタセット”と判定した場合(S205:YES)は、S206へ進む。これに対し、制御信号が“カウンタセット”ではないと判定した場合(S205:NO)は、S207へ進む。
【0038】
S206において、設定ファイル内に予め設定されている出力条件が成立している間、I/O演算部122bは、所定の出力時間の間隔で、共有メモリ部121cの所定の出力先アドレスへカウントアップまたはカウントダウンした値を書き込む。
【0039】
S207において、I/O演算部122bは、制御部121bから入力された制御信号が“PID演算”か否かを判定する。ここで、制御信号が“PID演算”と判定した場合(S207:YES)は、S208へ進む。これに対し、制御信号が“PID演算”ではないと判定した場合(S207:NO)は、処理を終了する。
【0040】
S208において、I/O演算部122bは、制御部121bからの入力値に対して所定のPID演算を行い、演算した結果をPIDの現在値入力として共有メモリ部121cの所定の出力先アドレスへ書き込み、処理を終了する。
【0041】
上記実施形態に係る制御エミュレータ12によれば、I/Oエミュレート部122によって制御エミュレート部121の共有メモリ部121cに書き込まれた結果を元に、制御ソフトウェアが動作し、再度、I/Oエミュレート部122へ出力するという動作を繰り返す。この繰り返し動作によって、実際の工場設備の動作に近い試験を事前に実施することができるようになるため、制御機器の出荷前に、制御ソフトウェアの健全性を十分に確認することができ、ソフトウェアの品質向上が見込める。
【0042】
また、別の制御ソフトウェアに対して同様の試験を実施する際には、同じ設定ファイルを流用して試験を行うことができるため、工事毎に同じようなシミュレーション用のI/Oソフトウェアを作成して制御ソフトウェアに組み込む必要がなくなり、試験の効率化を図ることができる。
【0043】
<第2の実施形態>
図5は、本発明の第2の実施形態における制御ソフトウェア試験システム1の全体構成例を示すブロック図である。尚、上記第1の実施形態の各図において付された符号と同一の符号は同一の対象を示すものであるため、詳細な説明を省略する。
【0044】
本実施形態と第1の実施形態との相違点は大きく3つある。先ず、第1の相違点は、I/Oエミュレート部122がI/Oログファイル記憶部122dを更に備えていることである。I/Oログファイル記憶部122dは、少なくとも制御信号の種別、制御信号の入力時間、出力データの出力値、出力時間及び出力先アドレスを含むI/Oログファイルを記憶している。また、これに対応して、I/O演算部122bは、共有メモリ部121cへの出力データの書込みに連動してI/Oログファイル記憶部122d内のI/Oログファイルにログデータを時間経過とともに記録する。
【0045】
次に、第2の相違点は、制御部121bから再現試験の実行指示があった場合に、I/O演算部122bはI/Oログファイル記憶部122dから実行指示に係る出力データをI/Oログファイルから読み出し、ファイルに記述されている出力時間に基づいて出力データを制御部121bへ出力することである。実行指示としては、実施済みの試験のIDやファイル名などが挙げられる。
【0046】
そして、第3の相違点は、制御部121bから再現試験の実行速度が指定された場合に、I/O演算部122bには、実行速度に応じて出力時間を短縮(倍速再生)または延長(スロー再生)しつつ、I/Oログファイルから読み出した出力データを制御部121bの共有メモリ部121cへ出力することである。
【0047】
図6は、
図5に示すI/O演算部122bの入出力試験時の処理例を示すフローチャートである。この処理は、制御エミュレート部121及びI/Oエミュレート部122の起動時に開始される。
【0048】
先ず、I/O演算部122bは、制御部121bから入力された制御信号が入出力(I/O)試験の開始指示か否かを判定する(S301)。ここで、制御信号が入出力試験の開始指示であると判定した場合(S301:YES)は、S302へ進む。これに対し、入出力試験の開始指示ではないと判定した場合(S301:NO)は、待機状態が維持される。
【0049】
S302において、I/O演算部122bは、設定ファイル記憶部122aから設定ファイルを読み込む。
次に、I/O演算部122bは、制御信号と読み込んだ設定ファイルに記述されている設定条件に基づいてI/O演算処理を実行し、演算結果を出力データとして共有メモリ部121cの出力先アドレスへ書き込む(S303)。
【0050】
次に、I/O演算部122bは、演算結果と処理時間を含むログをI/Oログファイルに記録し、I/OログファイルをI/Oログファイル記憶部122dに記憶する(S304)。
【0051】
次に、I/O演算部122bは、制御部121bから入力された制御信号が入出力試験の終了指示か否かを判定する(S305)。ここで、制御信号が入出力試験の終了指示であると判定した場合(S305:YES)は、処理を終了する。これに対し、入出力試験の終了指示ではないと判定した場合(S305:NO)は、S303へ戻る。
【0052】
図7は、
図5に示すI/O演算部122bの再現試験時の処理例を示すフローチャートである。この処理は、制御エミュレート部121及びI/Oエミュレート部122の起動時に開始されるが、再現試験の対象となるI/OログファイルがI/Oログファイル記憶部122dに記憶されていることが前提となる。
【0053】
先ず、I/O演算部122bは、制御部121bから入力された制御信号が再現試験の開始指示か否かを判定する(S401)。ここで、制御信号が再現試験の開始指示であると判定した場合(S401:YES)は、S402へ進む。これに対し、再現試験の開始指示ではないと判定した場合(S401:NO)は、待機状態が維持される。
【0054】
S402において、I/O演算部122bは、制御部121bから指定されたI/OログファイルをI/Oログファイル記憶部122dから読み込む。
【0055】
次に、I/O演算部122bは、制御部121bから再現試験における実行速度の変更指示の有無を判定する(S403)。ここで、実行速度の変更指示が有りと判定した場合(S403:YES)は、S404へ進む。これに対し、実行速度の変更指示が有りと判定した場合(S403:NO)は、S405へ進む。
【0056】
S404において、I/O演算部122bは、I/Oログファイルから読込んだ出力時間の間隔を指定速度に応じて変更し、変更後の出力時間で出力値を共有メモリ部121cに書込み、処理を終了する。
【0057】
図8は、再現試験時の実行速度の変更例について説明する図である。ここでは、I/Oログファイルの記録時における4つの出力データの出力時間がそれぞれt
1、t
2、t
3、t
4、全データの出力時間がTである場合に、試験結果を2倍速で再生するときには出力データの出力時間がそれぞれt
1/2、t
2/2、t
3/2、t
4/2、全データの出力時間がT/2となることを示している。すなわち、制御部121bより指定された実行速度がN倍の場合には出力時間を1/N倍することで早送り再生またはスロー再生される。
【0058】
S405において、I/O演算部122bは、I/Oログファイルの出力時間の間隔で出力値を共有メモリ部121cに書込み、処理を終了する。
【0059】
このように、本実施形態に係る制御エミュレータ12によれば、上記第1の実施形態の効果に加えて、以下のような効果を奏する。
(1)I/Oログファイルを記録して保持することにより、試験結果の再検証を効率的に行うことができるため、制御ソフトウェアの品質向上を図ることができる。
(2)I/Oログファイルに基づいて再現試験を行う際にI/Oエミュレート部122における実行速度を変更し、試験結果を早送り再生あるいはスロー再生することが可能となる。
(3)設定ファイルの設定条件を変更した場合には、I/Oログファイルの記録内容が変化するため、ソフトウェア自体を修正することなく、様々な条件下での検証が容易となる。
【0060】
<変形例>
図9は、上記第1の実施形態の変形例における制御ソフトウェア試験システムの全体構成例を示すブロック図である。第1の実施形態においては、制御エミュレータ12の中にI/Oエミュレート部122を追加した構成であったが、
図9では同機能を単独の装置であるI/Oエミュレータ13に持たせ、ネットワークNWを介して接続した構成としてもよいことを示している。この場合、従来から知られている制御エミュレータ12の装置自体を改造することなく、I/Oエミュレート機能を追加することが可能となる利点がある。
【0061】
また、上記第2の実施形態においては、I/O演算部122bは、再現試験において設定ファイルに基づく演算処理を再度実行するのではなく、I/Oログファイルに記録されている出力時間に基づいて出力値を共有メモリ部121cに書込む構成としていたが、同一の設定ファイルを用いて演算処理を再度実行してもよい。この場合、設定ファイルから読込んだ出力時間の間隔を1/N倍することで実行速度の変更にも対応することができる。
【0062】
以上、本発明の実施形態を説明したが、本実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。この新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。本実施形態およびその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。