JP3666507B2 - シミュレーション支援ツールおよびラダープログラムの検証システムならびにテスト入力ラダープログラム生成方法ならびにラダープログラムの検証方法 - Google Patents

シミュレーション支援ツールおよびラダープログラムの検証システムならびにテスト入力ラダープログラム生成方法ならびにラダープログラムの検証方法 Download PDF

Info

Publication number
JP3666507B2
JP3666507B2 JP2004216525A JP2004216525A JP3666507B2 JP 3666507 B2 JP3666507 B2 JP 3666507B2 JP 2004216525 A JP2004216525 A JP 2004216525A JP 2004216525 A JP2004216525 A JP 2004216525A JP 3666507 B2 JP3666507 B2 JP 3666507B2
Authority
JP
Japan
Prior art keywords
input
test
test input
ladder program
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.)
Expired - Fee Related
Application number
JP2004216525A
Other languages
English (en)
Other versions
JP2005063425A (ja
Inventor
仁 山根
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Omron Corp
Original Assignee
Omron Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Omron Corp filed Critical Omron Corp
Priority to JP2004216525A priority Critical patent/JP3666507B2/ja
Publication of JP2005063425A publication Critical patent/JP2005063425A/ja
Application granted granted Critical
Publication of JP3666507B2 publication Critical patent/JP3666507B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Testing And Monitoring For Control Systems (AREA)
  • Programmable Controllers (AREA)

Description

この発明は、シミュレーション支援ツールおよびラダープログラムの検証システムならびにテスト入力ラダープログラム生成方法ならびにラダープログラムの検証方法に関するものである。
生産工場(製造現場)に設置されるFA(ファクトリーオートメーション)システムの制御をつかさどるPLC(プログラマブルロジックコントローラ)は、制御プログラムに基づいて演算実行するCPUユニット、センサやスイッチなどの入力機器を接続してそれらのオンオフ信号を入力信号として取り込む入力ユニット、アクチュエータやリレーなどの出力機器を接続してそれらに対して出力信号を送り出す出力ユニット、上位端末装置などと接続してそれと情報をやりとりする通信ユニット、各ユニットに電源を供給する電源ユニット、など複数のユニットを組み合わせて成っている。そしてPLCは、入力ユニットで入力した信号をCPUユニットのI/Oメモリに取り込み(INリフレッシュ処理)、予め登録されたラダー言語で組まれた制御プログラムに基づき論理演算をし(プログラム演算実行処理)、その演算実行結果をI/Oメモリに書き込んで出力ユニットに送り出し(OUTリフレッシュ処理)、その後、ネットワーク接続された上位端末装置や表示器等と通信する(周辺サービス処理)、といった各処理をサイクリックに繰り返す。
ところで、実際の運用を開始するに先立ち、制御プログラムが正常に動作するか否かの事前検証を行なう必要がある。そして、係る事前検証は、従来、実際の設備を用いずに、机上で制御プログラムをテストして、実際の設備設置現場で行う調整工数(例えばプログラムの修正や編集など)を削減することが図られている。現在行われている机上テスト方法に、検証対象の制御プログラムが実装されたPLCに対して、PLC用シミュレータ装置から入力信号を与えて行うものがある。このPLC用シミュレータ装置において、仮想的にPLCに対するテスト用入力信号を生成させて、その生成した信号をPLCへ与えるわけである。このPLC用シミュレータ装置がPLCへのテスト入力信号を生成するためには、別途にテスト入力信号生成用のプログラム(例えばラダー言語で書いたプログラム)が必要である。従来は、このテスト入力信号生成用プログラムは人手によって作成されていた。しかし最近では、プログラム作成の労力軽減をするために次のような改良もされている。これも従来例であるが、例えば、検査テストの代表パターンに合わせて予め複数個のラダー基本回路を作成しておき、それらを記憶手段に記憶しておく。そしてシナリオ手段を設けて、複数のラダー基本回路のうち任意のものを選び、その実行順序および入出力データの内容などを人手により設定する。このようなシナリオ手段の設定に基づいて、記憶手段から必要なラダー基本回路を読み出してシミュレーション用のラダープログラム(テスト入力信号生成用のプログラム)を自動的に作成するような改良がなされていた。この方法では、シミュレーション用ラダープログラムを作成する労力を少し軽減できる。このことは、例えば特許文献1などに開示されている。
特開平10−133717号公報
しかしながら、従来の事前検証では、テスト入力用のラダープログラムを通常の制御プログラムと同様に、人手により作成していたため、作成者はラダープログラミングのスキルが必要となる。特に複雑なテストを行う場合は、高度なスキルが必要となる場合が多い。さらに、テスト対象のラダープログラムの入力I/Fが多い場合、テスト入力用のラダープログラムが膨大となり、係るテスト入力用のラダープログラムを作成するのが煩雑となり、テスト準備工数が多く必要となる。また、予め記憶したラダー基本回路を用いてシミュレーション用のラダープログラムを作成する構成では、基本回路で対応できる範囲のテストは限られ、基本回路で想定していないテストを行うことはできない。もし想定外のテストを行おうとすると、新しく人手によってプログラムを作成する必要が出てくる。
さらに、従来の事前検査は、入力信号が正規の順番で正しく入力された場合に、制御プログラムが正しく動作するかどうかの確認にとどまり、異常事態等が発生し、正規と異なる入力信号が入力された場合の動作確認をすることができなかった。さらにまた、PLC上で行なっているプログラム演算実行処理を一時停止することができないため、テスト実行を途中で中断することが不可能であり、一瞬の結果変化を確認することができないという問題もあった。
この発明は、テスト対象となる制御プログラムから、テスト入力するための変数を自動抽出し、テスト入力用のラダープログラムを自動的に生成することができるシミュレーション支援ツールおよびラダープログラムの検証システムならびにテスト入力ラダープログラム生成方法ならびにラダープログラムの検証方法を提供することを目的とする。
本発明に係るシミュレーション支援ツールは、テスト対象のラダープログラムを解析し、そのラダープログラムで使用される変数を抽出する変数抽出手段と、その変数抽出手段で抽出された変数のうちの入力変数を取得し、その取得した入力変数についてテスト対象のラダープログラムにおける実行順を検索し、その実行順をテスト入力順とし、そのテスト入力順に、各入力変数に対し入力変数のコマンド,変数名,正常な入力値を関連付けたテーブルを記述したテスト入力シーケンスを管理するテスト入力シーケンス管理手段と、前記テスト入力シーケンス管理手段で作成したテスト入力シーケンスに基づき、そのテスト入力シーケンスで規定される前記テスト入力順に従って、各入力変数のコマンドに対応するテスト入力ラダープログラムを生成するテスト入力ラダー生成手段を備えるように構成するようにした。
入力変数を実行順に並べたテスト入力シーケンスを作成し、そのテスト入力シーケンスに従ってテスト入力ラダープログラムを自動的に生成する。つまり、テスト入力シーケンスは、テスト入力順に配置され、しかも、各入力変数の正常な入力値などが関連づけられたテーブル構造となっているので、各入力変数の正常値を入力条件とする接点を配置することによりその入力変数についてのラダー回路を作成することができる。そして、入力順にリストアップされているので、その入力順に従って、各ラダー回路を配置することにより、簡単に入力信号を出力するテスト入力ラダープログラムを生成することができる。
従って、ラダーを意識しないで自動的にテスト入力用ラダーが生成されるため、メカ設計者などラダー知識の無い人でも精度の高いテストを行なうことができる。そして、長く複雑なラダーからも簡単に入力すべき変数をピックアップすることができるためテスト設計工数が短縮できる。さらに、テスト入力ラダー上に結果チェックを行うロジックを埋め込むようにすると、一瞬の結果変化も検知することができる。
また、前記変数抽出手段で抽出した変数を、入力変数と出力変数で分類して記憶するとともに、前記入力変数については、テスト入力値として取りうる値を関連づけて記憶する変数管理手段と、前記変数管理手段に格納されたテスト入力値を参照し、前記テスト入力シーケンスにおける所定の入力変数のテスト入力値として正常な入力値でない値に設定した異常パターンからなるテスト入力データパターンを生成し管理するテスト入力パターン管理手段を備え、前記テスト入力ラダー生成手段は、前記異常パターンに基づいて前記テスト入力ラダープログラムを生成するように構成することもできる。
このように、異常パターンに基づいてテスト入力ラダープログラムが生成されるので、正常動作のみ成らず、異常発生時の動作確認をすることができる。また、異常ケースなど複数のテストケースを連続実行するラダープログラムを自動生成することができ、無人テストを行うことができる。
さらに、前記ラダープログラムは、モジュール単位で構成されたプログラム、つまり部品化されたプログラムを複数含んで構成されていて、前記テスト入力シーケンス管理手段においては、このモジュール単位で構成された各プログラムごとに、モジュール単位でテスト入力シーケンスを作成する。そして、テスト入力シーケンス管理手段で作成されたモジュール単位のテスト入力シーケンスを、ラダープログラム全体のテスト入力シーケンスへインポートして合成するモジュールテストシーケンスインポート手段を備えるようにしてもよい。このようにすると、制御プログラム全体のテスト入力シーケンスを作成するに際し、モジュール単位で作成したテスト入力シーケンスを利用することができるので好ましい。
また、本発明に係るラダープログラムの検証システムでは、上記したシミュレーション支援ツールと、このシミュレーション支援ツールが生成した前記テスト入力ラダープログラムが実装された仮想I/O用プログラマブルコントローラと、テスト対象のラダープログラムを実行するプログラマブルコントローラがネットワークを介して接続され、前記仮想I/O用プログラマブルコントローラが、前記テスト入力ラダープログラムを実行し、得られたテスト入力信号を前記ネットラークを介して前記プログラマブルコントローラに対して順次与え、前記プログラマブルコントローラは、前記テスト入力信号を取得し、その取得した前記テスト入力信号に基づき前記テスト対象のラダープログラムを実行するようにすることができる。
このようにすると、自動作成されたテスト入力用のラダープログラムに基づいて事前検証をすることができ、時間制御が高く、繰り返し同じテストを実行することも容易に行える。
さらに、シミュレーション支援ツールと前記仮想I/O用プログラマブルコントローラをネットワーク接続し、前記シミュレーション支援ツールは、生成した前記テスト入力ラダープログラムを前記ネットワーク接続された前記仮想I/O用プログラマブルコントローラにダウンロードし、前記仮想I/O用プログラマブルコントローラは、ダウンロードされた前記テスト入力ラダープログラムを実行し、前記テスト入力信号を出力するように構成してもよい。なお、シミュレーション支援ツールと仮想I/O用プログラマブルコントローラが接続されたネットワークと、その仮想I/O用プログラマブルコントローラとテスト対象の制御プログラムを実行するプログラマブルコントローラを接続するネットワークは、同じでも良いし異なっていても良い。そして、同じ場合には、シミュレーション支援ツールは、プログラマブルコントローラからテスト対象の制御プログラムをアップロードすることができる。
また、本発明に係るテスト入力ラダープログラム生成方法は、テスト対象のラダープログラムを解析し、そのラダープログラムに使用される変数を抽出して解析し、入力変数を得る工程、前記得た入力変数についてテスト対象のラダープログラムにおける実行順を検索し、その実行順をテスト入力順とし、そのテスト入力順に、各入力変数に対し入力変数のコマンド,変数名,正常な入力値を関連付けたテーブルを記述したテスト入力シーケンスを記憶する工程と、前記記憶したテスト入力シーケンスに基づき、そのテスト入力シーケンスで規定される前記テスト入力順に従って、各入力変数のコマンドに対応するテスト入力ラダープログラムを生成する工程と、からなる方法である。
さらに、前記入力変数を得る工程では、抽出した変数を入力変数と出力変数で分類して記憶するとともに、前記入力変数については、テスト入力値として取りうる値を関連づけて記憶し、前記テスト入力シーケンス記憶工程では、さらに、前記記憶したテスト入力値を参照し、前記テスト入力シーケンスにおける所定の入力変数のテスト入力値として正常な入力値でない値に設定した異常パターンからなるテスト入力データパターンを生成し、前記テスト入力ラダープログラム生成工程では、異常パターンに基づいて前記テスト入力ラダープログラムを生成するようにすることができる。
また本発明に係るラダープログラムの検証方法は、前記のシミュレーション支援ツールが生成した前記テスト入力ラダープログラムが実装された仮想I/O用プログラマブルコントローラと、テスト対象のラダープログラムを実行するプログラマブルコントローラとをネットワークを介して接続し、前記仮想I/O用プログラマブルコントローラにて前記テスト入力ラダープログラムを実行させることにより得られたテスト入力信号を、前記ネットラークを介して前記テスト対象プログラマブルコントローラに対して順次与え、前記テスト対象プログラマブルコントローラにて前記テスト入力信号を取得し、その取得した前記テスト入力信号に基づき前記テスト対象のラダープログラムを実行する方法である。
さらに、前記ラダープログラムの検証方法において、ネットワークに、さらにテスト対象プログラマブルコントローラの動作テスト中の状態やテスト結果をモニタするための作動モニタを接続し、前記作動モニタにおいて、テスト対象プログラマブルコントローラが取得した前記テスト入力信号に基づいてテスト対象のラダープログラムを実行した結果をモニタするようにしてもよい。
本発明では、制御プログラム(ラダープログラム)からテスト入力するための変数を自動抽出し、テスト入力用のラダープログラムを自動的に生成することができる。よって、ラダーを意識しないテスト入力用ラダーが生成されるため、メカ設計者などラダー知識の無い人でも精度の高いテストを行なうことができる。
本実施の形態は、センサその他の入力機器が存在していない状態か、または、仮に存在していたとしても、FAシステム全体が動作しておらず、実機の入力機器から入力信号が与えられないような状態で、テスト対象のPLCに実装された制御プログラムの事前検証を行うためのものである。この検証を行うため、テスト対象のPLCに対して所定のタイミングで入力信号を与える必要があるが、本実施の形態では、係る検証のための入力信号を別のPLCにて生成させる。この別のPLCは、後述の「仮想I/O生成用PLC」または「仮想I/O」に該当する。このPLCとテスト対象のPLCとを通信可能にネットワークで接続し、仮想I/O生成用PLCにて検証用のプログラム(仮想入力ラダープログラム)を実行させることにより、入力信号を生成し、その入力信号をテスト対象のPLCへ通信して与える。なお、検証用プログラムは予め作成しておき、それを仮想I/O生成用PLCにダウンロードしておく。テストについては、この仮想I/O生成用PLCがネットワーク接続されたテスト対象のPLCに対して所定のタイミングで生成した入力信号を与え、テスト対象のPLCがその入力信号に基づいてテスト対象の制御プログラムを実行して、その結果から正常に動作するか否かの検証をしたり、デバッグを行う。
図1は、本発明が適用されるシステムの一例を示している。図1に示すように、生産工場(製造現場)に設置されるFA(ファクトリーオートメーション)システムでは、所定数のPLC5が当該生産工場に設置される。そして、PLC5が複数存在する場合、制御系ネットワーク6で接続され、複数のPLC5間で同期したり、協働したりしながら動作する。また、実際のシステムでは、この各PLC5に、制御対象の各種の出力機器やロボットや等が接続されたり、センサ,スイッチ等の入力機器が直接或いは間接的に接続されたりするが、本発明が対象とするPLC5にダウンロードした制御プログラムの動作確認(事前検証)を行う際には、係る入出力機器は必ずしも接続されているとは限らず、少なくとも入力機器からの信号は与えられない。なお、PLC5に実装された制御プログラムの代表例に、ファンクションブロックで構成されたものがある。ファンクションブロックは、入力パラメータと出力パラメータと内部データとプログラムコードとを併せ持っている。ファンクションブロックの表記は、中央に四角の形で表わしたボディ部と、ボディ部の左側に表わした入力部と、ボディ部の右側に表した出力部とからなる。ボディ部は、ひとかたまりの動作をするためのプログラムであり、別途にラダー言語などで作成される。
ここで本発明では、テスト対象のPLC5に対して検証用の入力信号を与えるための仮想入力ラダープログラムを作成するシミュレーション支援ツール1と、そのシミュレーション支援ツール1にて作成した仮想入力ラダープログラムを演算実行することにより所定のタイミングでテスト用の入力信号を出力する仮想I/O生成用PLC2と、テスト対象のPLC5の動作テスト中の状態やテスト結果をモニタするための作動モニタ3と、テスト対象のPLC5とが同じネットワークに接続されている。これにより、シミュレーション支援ツール1は、テスト対象のPLC5に実装された検証対象となる制御プログラム等に基づき仮想入力ラダープログラムを作成し、その作成したプログラムを、ネットワーク6を介して仮想I/O生成シミュレータ(仮想I/O)となるPLC2にダウンロードする。そして、仮想I/OPLC2は、ダウンロードされた仮想入力ラダープログラムを実行することにより、所定のタイミングで入力信号をネットワーク6を介してテスト対象のPLC5へ出力する。
これにより、テスト対象のPLC5は、仮想I/OPLC2から所定のタイミングで与えられる検証用の入力信号を受けとり、制御用プログラムを順次実行する。そして、その実行中の状態や実行結果は、作動モニタ3により監視することができる。つまり、この動作モニタがテスト対象のPLC5のIOメモリに格納されたデータを収集して表示することでその動きをチェックすることができる。また、その動作モニタ3内で別途に3Dシミュレータを動作させておき、PLC5により制御される想定のロボット等の動作を、その収集データに基づいて当該作動モニタ3のモニタ画面上に仮想空間的に表示させ、その動きをチェックすることができる。
仮想入力ラダープログラムを作成するシミュレーション支援ツール1は、所定の機能を持つアプリケーションプログラムをパソコン等にインストールすることにより実現される。従って、そのパソコンには他の機能のツールも実装されていることがある。そして、具体的な構成は図2に示すようになっている。
すなわち、テスト対象ラダー管理部11は、テスト対象の制御プログラム(例えばラダー言語で作成されたプログラム)を管理するものである。管理するとは、例えば、テスト対象のPLC5に実装されているラダープログラムをアップロードして取得するとともに、所定の記憶部に格納し記憶保持する。また、その記憶保持しているテスト対象のラダープログラムを読み出す。そして読み出したプログラムを、他の処理部に渡したりする。また、シミュレーション支援ツール1を構成するパソコンに、制御プログラム(ラダープログラム)を作成・編集する機能を有するプログラミングツールが実装され、テスト対象のラダープログラムも同一のパソコンに実装されたプログラミングツールによって作成された場合、テスト対象ラダー管理部11は、パソコン内で作成され、格納された当該テスト対象のラダープログラムを管理するようにしても良い。
また、制御プログラムが複数の部品モジュールプログラムから構成されている場合には、部品モジュールのプログラム毎にそのモジュールデータをモジュールデータ管理部12が管理するようにしている。ここでモジュールデータとしては、モジュールにおける入出力変数のリスト(変数データ)と、モジュールラダープログラム(ラダー)と、モジュールのテスト時に設定したテストシーケンスやテストパターンデータ(テスト設定データ)から構成される。このモジュールデータ管理部12で管理されるモジュールデータも、上記したテスト対象ラダー管理部11と同様に、PLC5からアップロード等することにより取得する。そして、このモジュールデータ管理部12で管理されるモジュールデータは、テスト対処ラダー管理部11にて呼び出され、他の処理部に渡される。
また、テスト対象プログラムで定義された変数は、変数管理部13にて管理されている。つまり、テスト対象範囲における入力変数,出力変数,内部変数ごとに管理するもので、具体的に以下の通りである。
まず、説明の便宜上、モジュールデータ管理部12に、図3に示すような設備制御全体プログラムが管理されているとする。この設備制御全体プログラムは、クランプ1モジュールと装置制御インターロックを組合わせて作成されている。この設備制御全体プログラムがテスト対象プログラムとなるものとする。各モジュールはファンクションブロックで記述される。そして、クランプ1モジュールの入力I/Fである「クランプ1作動指令」,「クランプ1作動条件」,「クランプ1作動速度」は、装置制御インターロックモジュールからの内部変数として扱うので、設備制御全体プログラムにおける入力変数とはならない。
さらに、この設備制御全体プログラム概要としては、クランプ1は、作動指令と作動条件がともにONした場合クランプ作動(出/戻)の信号を出力し、作動後、完了LS(リミットスイッチ)がONしたタイミングで完了とする。そして、設備制御全体としては、装置作動指令と装置作動条件がともにONした場合に、クランプ1の作動を開始する。そして、作動後、クランプ1が完了したタイミングで完了とする。
変数管理部13は、テスト対象プログラムで定義された全変数を、テスト対象範囲における入力変数と出力変数とで分類し、図3に示した制御プログラムの場合、図4に示したようなテーブル構造のリストが作成され、このテーブル構造のリストが変数管理部13で管理される。ここで、入力I/F変数については、変数名とデータ型の他に後述するテストパターン自動生成を行なうための目的で、テスト入力値として取りうる値をユーザが設定する。図4の場合、「装置作動速度」の入力値として「20」と「30」が設定される。なお、BOOL型変数は「TRUE」または「FALSE」のどちらかのため設定は不要である。
そして、この変数管理部13で管理する変数データのうち、変数名及びデータ型は、入出力変数抽出部14で抽出される。すなわち、入出力変数抽出部14が、テスト対象ラダー管理部11を介してテスト対象ラダープログラムを取得し、その内容を解析して入力変数を抽出する。つまり、テスト対象のラダーで定義された全変数について、ラダープログラムを走査し、出力変数で使用されている場合は出力変数とし、使われていない場合は入力変数とすることによって、入出力分類を行う。すなわち、図5に示すように、図5(a)に示す装置制御全体ラダーの実際のラダープログラムは、図5(b)のようになっているので、そこから装置作動速度,装置作動指令等の変数名を抽出することができる。そして、「クランプ1出」はOUT命令に使われているので、出力変数として分類し、「装置作動指令」は出力系命令で使われていないので入力変数として分類する。
そして、具体的には、図6に示すフローチャートを実行することにより行なう。すなわち、テスト対象のラダープログラムをサーチし、そこに使用されている全ての変数のリスト(ラダー全変数リスト)を作成する(ST1)。次いで、作成したリストの先頭から順に変数名を1つずつ選択し、その選択した変数名の変数が使用されているラダー命令を検索する(ST2)。すなわち、テスト対象ラダー管理部11からテスト対象のラダープログラム(モジュールデータ)を取得し、選択した変数名の変数がそのラダープログラム中に使用されている箇所を全て抽出する。
そして、抽出した箇所に基づき、出力命令で使われているか否かを判断し(ST3)、出力命令で使用されている場合には、出力変数として分類する(ST4)。また、出力命令に使用されていない場合には、入力命令で使われているか否かを判断し(ST5)、入力命令で使用されている場合には、入力命令のみで使用されることになるので入力変数として分類する(ST6)。なお、出力命令並びに入力命令のいずれにも使用されていない場合には、ステップ5の分岐判断でNOとなるので、変数リストから削除する(ST7)。
上記の処理を行なうことにより、選択された変数名についての処理(分類分け)が完了するので、次の変数名について上記した処理を実行する。このようにして全ての変数についてのチェックが完了したならばステップ8の分岐判断がYesとなり、処理を終了する。
また、変数管理部13で管理するデータのうち、BOOL以外の入力変数がとりうる入力値(テスト入力値)は、テスト設定入力部15が行なう。つまり、このテスト設定入力部15は、テスト設定データのユーザ入力受け付けを行うもので、シミュレーション支援ツール1の入力装置であるキーボード,マウスなどをユーザが操作して与えられたならば、そのデータをテスト入力値として変数管理部13に渡し、そこにおいて対応する変数名と関連づけてテスト入力値を記憶保持する。
テスト入力シーケンス管理部16は、ユーザ定義された入力変数に対するテスト入力順序を示すテスト入力シーケンスを管理する。すなわち、入出力変数抽出部14にて抽出された入力変数を取得し、テスト対象のラダープログラムにおける実行順を検索し、その実行順にしたがって図7に示すようなテスト入力シーケンスを作成する。なお図7は、モジュールの一つであるクランプ1モジュールについてのテスト入力シーケンスの設定例である。
また、テスト入力順序とテスト入力に対するテスト結果チェックタイミングをスクリプト言語を用いて記述する。つまり、テスト入力順に、IN,CHECK,CALLのシーケンスコマンド及びオペランドを記述する。ここで、INコマンドのオペランドは入力変数であり、このコマンドは、入力変数に対してデータを入力するものである。変数選択は入力変数リストから行えるため、容易でミスの少ない選択が行える。また、CHECKコマンドのオペランドは出力変数であり、このコマンドは、入力データに対する出力変数の変化をチェックするものである。変数選択は出力変数リストから行えるため、容易でミスの少ない選択が行える。更にCALLコマンドのオペランドはシーケンス名であり、このコマンドは別途定義されたテストシーケンスを呼び出すものである。このコマンドにより、テストシーケンスの構造化が可能となる。さらに、図7に示すテストシーケンスでは、各入力変数に対するテスト入力値の正常な値を関連づけて管理しているが、この正常なテスト入力値からなる正常パターンは、ユーザが手動で入力する。つまり、テスト設定入力部15は、係るユーザからの入力をテスト入力シーケンス管理部16に渡し、そこにおいて取得した正常パターンを関連づけたテストシーケンスを作成するとともに記憶して管理する。
一方、この入力データパターン管理部18は、図7に示す正常パターンが付記されたテストシーケンスに基づき、テスト入力値が正常動作でない値を含む異常パターンのテスト入力値も作成し、テストパターンに追加する機能を備えている。これにより、例えば図8に示すようなテストパターンが生成され、正常動作している場合のテスト対象のラダープログラムの動作のチェックに加え、正規の入力信号が与えられない異常事態が発生した場合の動作チェックも行うことができる仮想入力ラダープログラムを作成することが可能となる。なお、図8中、テストパターンでの空白は、左端(正常)パターンのデータと同じ値を採ることを意味する。また、図示省略するが、テストパターンの右側にも更に別の異常パターンが追加されている。
係る機能は、例えば、シーケンスで記述された変数を出力表示し、ユーザにその表示したリストの中から組合せパターンを生成したい変数のリストを選択させる(図8では、クランプ1作動指令、クランプ1作動条件、クランプ1作動速度を指定)。そして、係る選択された変数のデータ値の組合せを自動生成し、パターンデータとして新規列を追加する。つまり、選択された変数のテスト入力情報を変数管理部13から取得し、BOOL型以外の変数については取り得る入力値を取得し、各変数についての正常の値と異常の値を認識し、複数個の変数が指定された場合には、少なくとも1つの変数が異常になるような入力値の組み合わせからなるパターンを生成する。
そして、具体的には、図9に示すフローチャートを実行するようになっている。すなわち、まず、ユーザがテスト設定入力部15を介してテストシーケンスからパターン生成する変数を指定するので、係る指定を取得するのを待ち、指定を取得したならばパターン生成指示を行う(ST10)。すなわち、例えば図7に示すようなテストシーケンスを、テスト設定内容表示部19を介してモニタ画面に表示させ、その表示画面においてマウスその他のポインティングデバイスを操作して、パターン組み合わせを生成する変数を指定させる。そこで、係る指定された変数名を取得し、上記処理を行なう。
次に、指定された変数のテスト入力値情報を変数管理部13から取得する(ST11)。つまり、変数のデータ方がBOOL以外の場合には、とりうる入力値の全ての情報(図4の場合には、装置作動速度が20と30)を取得する。また、データ型がBOOLの場合には、TRUE or FALSEの二値であるので、その旨取得してもよいし、具体的なテスト入力値が無い場合には、BOOL型と判断するようにし、特にテスト入力値を取得しないようにしても良い。
次いで、N(デフォルト値から値を変更する変数の数)を1にセットする(ST13)。指定された変数群のうちN個の変数について入力値をデフォルト値(正常パターンで設定された値)から変更し、パターンを生成する(ST14)。そして、このようにして生成したパターンと同一パターンが、テスト入力シーケンスで記述された変数に対するテスト入力パターンを管理する入力データパターン管理部18に登録されていない場合には、当該入力データパターン管理部18へ登録する(ST15,ST16)。なお、登録されていた場合何もしない。これにより、少なくとも1つの変数の入力値が正常でない異常パターンが生成される。
そして、デフォルト値と異ならせるN個の変数の組み合わせの全てのパターンを生成したか否かを判断し(ST17)、生成していない場合には新たなパターン、つまりステップ14で変更した変数以外のN個の変数の入力値をデフォルト値と異なる値に設定したパターンを生成し(ST19)、ステップ15に戻りそのパターンが未登録の場合には入力データパターン管理部18に登録する。
また、N個の変数を変更する全てのパターンについて生成できたならば、ステップ17の分岐判断がYesとなるので、ステップ18に飛び、現在のNがパターン生成を指定した変数の数に一致したか否かを判断する(ST18)。そして、一致していれば、全ての異常パターンが生成されたことになるので処理を終了する。また、このステップ18の分岐判断がNoの場合には、ステップ20に進み、Nを1インクリメントし、新たなNに基づいて、ステップ14以降の処理を行なう。これにより、指定された変数のうち、いずれか1つのみの変数をデフォルト値と異なる値にした全ての異常パターンを生成し、次いで、指定された変数のうち任意の2つの変数をデフォルト値と異ならせる値にした全ての異常パターンを生成し、……というように異ならせる数を1つずつ増やし、最終的に指定された全ての変数がデフォルト値と異なる値を取る異常パターンを生成することにより、取りうる全ての異常パターンを生成することができる。
従って、例えば図8に示すシーケンスのうち、「クランプ1作動指令」,「クランプ1作動条件」,「クランプ1作動速度」の3つの変数についてパターン生成指示を受けたとすると、指定変数数は3となる。そして、ステップ13よりN=1に設定されるので、図10に示すように、まず、ステップ14或いはステップ19を実行することにより、指定された3つのいずれか1つがデフォルト値と異なる値に設定された異常パターン(計3つ)が生成され、ステップ16にて登録される。
次いで、ステップ18,ステップ20を経由してN=2に設定されるため、新たに設定されたN(2)に基づきステップ14或いはステップ19を実行することにより、指定された3つのうちの任意の2つがデフォルト値と異なる値に設定された異常パターン(計3つ)が生成され、ステップ16にて登録される。
その後、ステップ18,ステップ20を経由してN=3に設定されるため、新たに設定されたN(3)に基づきステップ14を実行し、指定された3つの変数をデフォルト値と異なる値に設定した異常パターンを生成し、ステップ16にて登録される登録する。なお、N=3の場合には、ステップ14で生成された3つの全ての変数をデフォルト値と異なる値に設定するパターン以外には存在しないため、ステップ17でYesとなるとともに、ステップ18の分岐判断もYesとなるので、異常パターンの生成処理は終了する。これにより、入力データパターン管理部18にて計7つの異常パターンが生成されるとともに登録されて管理される。
更に本実施の形態では、モジュールテストデータインポート部17を設け、構成モジュールのテストデータを現在設定中のテストシーケンスにインポートできるようにしている。すなわち、上記したテスト入力シーケンス管理部16では、各モジュール単位でテストシーケンスを作成し、テストパターンを作成することについて説明した。ところで、プログラムの検証は、モジュール単位でも行なうが、最終的には当該モジュールを含む制御プログラム全体での動作が正しく行なわれるかの検証を行なう必要がある。そこで、このモジュールテストデータインポート部17にて、モジュールテスト時に設定したシーケンスを設備全体テスト時に再利用できるようにした。
つまり、ユーザがモジュールテストシーケンスからインポートする範囲を指定し、現在設定中の設備全体シーケンスのインポート位置を指定しインポート要求を出す。すると、変数管理部13でモジュールテストシーケンスのINコマンドのオペランドで記述された変数が、設備全体ラダーでも入力変数となっているか、或いは内部変数となっているかをチェックする。そして、係るチェックをした結果、内部変数となった変数が記述されたINコマンドをCHECKコマンドに置き換えるようにする。
すなわち、図11に示す設備装置全体ラダーテストシーケンスを作成するに際し、クランプ1モジュール用のテストシーケンスを再利用する場合、まず、「クランプ1作動指令」は、設備全体ラダーでは内部変数のためINコマンドをCHECKコマンドに置き換える。一方、「クランプ1出端S1」は設備全体ラダーでも入力変数のためINコマンドのままとする。
そして、上記処理を実行するための具体的な処理機能は、図12に示すフローチャートのようになっている。すなわち、まず、ユーザが、モジュールテストシーケンスから指定したインポートする範囲をテスト設定入力部15を介して取得する(ST21)。図11の例では、クランプ1テストシーケンスを表示装置に表示し、ポインティングデバイスにて画面上でインポートする範囲(ステップ番号3から12)を指定したり、インポートする範囲を特定するための開始ステップ番号(図示の場合3)と終了ステップ番号(図示の場合12)をテキスト入力して指定したりする。
そして、ユーザが指定したインポート先の設備全体テストシーケンス位置を取得する(ST22)。図11の場合では、設備制御全体ラダー中のステップ番号5以降をインポート先に指定することになる。この指定も、テストシーケンスを表示させておき、ポインティングデバイスにより直接インポート先を指定したり、ステップ番号を入力させたりすることにより行える。
次に、モジュールデータ管理部12から指定されたモジュールに対応するテスト設定データの指定された範囲のテストシーケンスデータを読み出す(ST23)。そして、読み出したモジュールテストシーケンスデータの各行のシーケンスコマンドを取得する(ST24)。
取得した行で定義されたシーケンスコマンドがINコマンドで、さらにオペランドで記述された変数が設備全体ラダーで内部変数となっているか否かを判断し(ST25)、条件に合致する場合には、INコマンドをCHECKコマンドに変更し(ST26)、設備全体シーケンスに挿入する(ST27)。もちろん、内部変数になっていない場合には、ステップ25の分岐判断でNoとなるので、その読み出した行を設備全体シーケンスへ挿入することになる。
そして、指定範囲の全行の挿入を完了したか否かを判断し(ST28)、未挿入の行が存在する場合にはステップ24に戻り次の行について上記した処理を実行する。このようにして、ステップ24から28を処理を繰り返し実行することにより、指定されたインポート範囲の全シーケンス行を設備制御全体シーケンスの所望の位置へ挿入することができる。
このようにモジュールテストシーケンスがインポートされた制御プログラム全体に対するテストシーケンス(設備制御全体ラダーテストシーケンス)に対しても、テスト入力シーケンス管理部16,入力データパターン管理部18により、正常パターン,異常パターンを含むテストパターンを生成することにより、図13,図14に示すような最終テストデータが生成される。すなわち、図13は設備制御全体ラダーテストシーケンスであり、図14は図13に示す設備制御全体ラダーテストシーケンス中のCALLコマンドにより呼び出される別のプログラムのシーケンスである。そして、図14(a)は、設備制御全体ラダーテストシーケンスにおけるステップ1番のCALLコマンドにより呼び出される初期化シーケンスであり、図14(b)は、設備制御全体ラダーテストシーケンスにおけるステップ2番のCALLコマンドにより呼び出される異常発生シーケンスである。また、この最終テストデータは、各コマンドの処理の実行順を規定するテスト入力シーケンスと、シーケンス実行時に与える入力値を規定する入力データパターン(正常パターン&異常パターン)を含み、テスト入力シーケンス(正常パターンを含む)は、テスト入力シーケンス管理部16にて管理され、入力データパターンのうちの異常パターンは入力データパターン管理部18で管理される。もちろん、正常パターンも入力データパターン管理部18側で管理するようにしても良いし、各データを合体し、図示する最終テストデータの状態で管理(記憶保持)するようにしてもよい。
図13,図14に示した最終テストデータ(テスト入力シーケンスに入力データパターン(正常パターン&異常パターン)を付加)は、仮想入力ラダー生成部20に与えられ、そこにおいて仮想入力ラダーが生成される。すなわち、この仮想入力ラダー生成部20では、テストシーケンス中の各コマンドに対応したラダー回路を生成し、各コマンド処理が終了すると次のコマンドに対応したラダーを実行するようにラダーを生成する。コマンドの実行順は、各パターンごとにステップ1から順に実行するようにしている。つまり、まず、1番目のパターン(パターン1)の正常のパターンについて、ステップ1から順に実行し、ステップ17まで至ると、2番目のパターン(パターン2)の異常発生中について定義した異常パターンをステップ1からステップ17まで順に実行する。次いで、先頭から3番目のパターン(パターン3)の指令非入力について定義した異常パターンをステップ1からステップ17まで順に実行する(以下同じように繰り返し実行する)。
具体的には図15以降に示すフローチャートを実行する機能を有する。図15に示すように、テスト入力シーケンス管理部16からテストシーケンスデータを取得する(ST31)。そして、取得したテストシーケンスデータ中のコマンドの欄中に存在するINコマンドを検索し、INコマンドに対応したラダーを生成する(ST32)。次いで、同様にCHECKコマンドを検索し、CHECKコマンドに対応したラダーを生成する(ST33)。さらに、同様にCALLコマンドを検索し、CALLコマンドに対応したラダーを生成する(ST34)。そして、各処理ステップを実行して生成したラダーを順に並べることにより、仮想入力ラダーを生成する(ST35)。
次に、各処理部、より具体的には、ラダーの生成処理プロセスについて説明する。まず、ステップ32のINコマンドに対応したラダー生成処理は、図16に示すフローチャートを実行することにより行う。すなわち、シーケンスの先頭行からINコマンドを検索する(ST41)。そして、INコマンドを検出したか否かを判断する(ST42)。この分岐判断は、最終行に至るまでINコマンドが検出できなかった場合にNoとなる。つまり、ステップ41では先頭行から順にサーチし、INコマンドを検出できたか、最終行に至ったならばステップ42に移行する。
そして、INコマンドが存在した場合(ST42の分岐判断でYes)、同一オペランドの別のINコマンドを検索する(ST43)。つまり、同一変数についてON/OFFするステップを検索する。
ステップ41,43で検索した全てのINコマンドにおいて、入力データパターン管理部18から対応するパターン値を取得し、OFF→ON,ON→OFFの変化入力があるか検出する(ST44)。そして、OFF→ONの変化入力が存在するか否かを判断し(ST45)、存在した場合には、それに基づいて自己保持回路のON部分を生成する(ST46)。また、ON→OFFの変化入力が存在するか否かを判断し(ST47)、存在した場合にはそれに基づいて自己保持回路のOFF部分を生成する(ST48)。
そして、ステップ46,48で生成した自己保持回路のON部分並びにOFF部分を組合わせ、一つの入力変数に対する自己保持回路を完成する(ST49)。次いで、ステップ41(2回目以降は前回のステップ50)で検出した次のステップ以降でINコマンドが存在するか検索する(ST50)。そして、INコマンドが存在したならば、ステップ42でYesとなり、ステップ43以降の処理を実行して自己保持回路を作成する。上記した処理を繰り返し実行することにより、全てのINコマンドに対するラダー回路を生成する。
上記自己保持回路の作成プロセスを、ステップ番号12の「クランプ1出端LS1」,ステップ番号13「クランプ1出端LS2」を例にあげて説明すると以下の通りである。すなわち、パターン毎にOFF→ONとなるタイミングを検索し、パターン番号とシーケンスステップ番号をAND条件でグループ化する。また、同様にパターン毎にON→OFFとなるタイミングについて、パターン番号のB接点とステップ番号のB接点をAND条件でグループ化する。
その後、全パターンにおいてグループ化したOFF→ONタイミングに対応した回路をOR条件でまとめ、ON→OFFタイミングに対応した回路をAND条件でまとめ、1入力変数に対する入力ラダーとする。
これにより、例えば「クランプ1出端LS1」の場合、正常パターンのステップ番号12でOFFからONになるので、パターン1,ステップ番号12を直列(AND)接続したラダー回路が自己保持回路のON部分となる。一方、「クランプ1出端LS1」画ONからOFFに変わるのはパターン2(異常発生中)のステップ番号12や、パターン3(指令非入力)のステップ番号12などであるので、それら対となるパターン番号とステップ番号をB接点のAND接続を採る。これにより、変数「クランプ1出端LS1」についての図17(a)に示すような自己保持回路が生成される。同様に「クランプ1出端LS2」については、図17(b)に示すような自己保持回路が生成される。
一方、ステップ33のCHECKコマンドに対応したラダーの生成処理プロセスは、具体的には、図18に示すフローチャートを実行することにより行う。まず、ステップ32のINコマンドに基づく処理がすでに行われているので、係る処理の実行時にテスト入力シーケンス管理部16から取得したテストシーケンスデータに対し、シーケンスの先頭行からCHECKコマンドを検索する(ST51)。そして、CHECKコマンドを検出したか否かを判断する(ST52)。この分岐判断は、最終行に至るまでCHECKコマンドが検出できなかった場合にNoとなる。つまり、ステップ51では先頭行から順にサーチし、CHECKコマンドを検出できたか、最終行に至ったならばステップ52に移行する。
そして、CHECKコマンドが存在した場合(ST52の分岐判断でYes)、存在した場合には、入力データパターン管理部18から対応するチェック値を取得し、チェック値に応じてA接点、B接点をOR条件でまとめる(ST53)。そして、ステップNo.に対応した接点をAND条件で追加し、チェック回路を完成する(ST54)。その後、次ステップ以降でCHECKコマンドを検索する(ST55)。すなわち、ステップ51(2回目以降は前回のステップ55)で検出した次のステップ以降でCHECKコマンドが存在するか検索する。そして、CHECKコマンドが存在したならば、ステップ52でYesとなり、ステップ53以降の処理を実行する。
そして、全てのCHECKコマンドの検索が完了したならば、ステップ52の分岐判断でNoとなるので、ステップ56に飛び、ステップ移行回路を生成し、一連の処理を終了する。上記した一連の処理を実行することにより、例えばステップ番号6の「クランプ1作動指令」に対する仮想入力ラダーは、図19に示すように生成される。
すなわち、CHECKコマンドが記述されたステップでオペランドがその値に変化したかチェックする。そして、各パターン毎にCHECK値がONの場合、パターン番号とチェック対象の変数をAND条件でグループ化し(パターン1&クランプ作動指令)、CHECK値がOFFの場合、パターン番号とチェック対象の変数のB接点をAND条件でグループ化する(パターン2&クランプ作動指令,パターン3&クランプ作動指令)。その後、全パターンにおいてグループ化した回路をOR条件でまとめ、さらにCHECKコマンドが記述されたステップ番号をAND条件で加える。
そして、次のステップに移行するには、上記ラダーにおいてCHECK条件が成立したとき、ラダー出力のステップX実行中フラグがOFFとなり、当ステップ実行完了とする。
また、INコマンドは無条件で次ステップへ移行するが、CHECKコマンドはCHECK条件成立時に次ステップへ移行する。したがって、CHECKコマンドが記述されたステップの実行中コイルがOFFしたタイミングで次シーケンスへの移行を行うことになる。そして、これは図20に示すようなラダー回路により実現できる。
さらに、ステップ34のCALLコマンドに対応したラダーの生成処理プロセスは、具体的には、図21に示すフローチャートを実行することにより行う。まず、ステップ32のINコマンドに基づく処理がすでに行われているので、係る処理の実行時にテスト入力シーケンス管理部16から取得したテストシーケンスデータに対し、シーケンスの先頭行からCALLコマンドを検索する(ST61)。
そして、CALLコマンドが存在した場合には、入力データパターン管理部18から実行/非実行値を取得し、実行設定されたパターンに対応した接点をOR条件でまとめる(ST62,ST63)。その後、次ステップ以降でCALLコマンドを検索する(ST64)。すなわち、ステップ61(2回目以降は前回のステップ64)で検出した次のステップ以降でCALLコマンドが存在するか検索する。そして、CALLコマンドが存在したならば、ステップ62でYesとなり、ステップ63以降の処理を実行する。
そして、最終行に至ってもCALLコマンドが検出されなければ(ステップ62の分岐判断でNo)、全てのCALLコマンドの検索が終了したことになるので、ステップ移行回路を作成し(ST65)、一連の処理を終了する。上記した一連の処理を実行することにより、例えば図13に示すテストシーケンスからは、初期化シーケンスについて図22に示すようなラダー回路が生成される。
すなわち、CALL先のシーケンスの起動フラグをONし、CALL先シーケンス実行完了フラグがONするまで停止させるため、CALLを実行するパターンをOR条件で追加することになる。図13から明らかなように、全てのパターンのステップ1で実行される。よって、パターン1,パターン2,パターン3,…の接点をOR条件で接続し、各パターンに対してステップ1の接点をAND接続する。なお、図示の例では、パターン3まで記述しているが、実際には、全てのパターンの接点がOR接続されることになる。
そして、初期化シーケンス実行の接点がONになると、CALL先の初期化シーケンスに基づいて生成された仮想入力ラダー回路を順次実行し、最終回路を実行(CALL先のシーケンス実行完了フラグがON)したとき、当ステップの実行完了とする。なお、具体的な図示は省略するが、CALL先の図14(a)に示した初期化シーケンスに基づいても、仮想入力ラダー生成部20により仮想入力タープログラムが作成される。
ところで、次パターンへの移行は、そのパターンの最終行を実行した後に行われ、その次のパターンでは先頭のステップ番号から実行されるので、定義された最後のステップ(ステップ番号17)まで実行が完了したことをチェックし、実行パターンを次パターンへ移行するラダー回路を作成する。具体的には、図23に示すような回路が生成される。
そして、上記したように仮想入力ラダー生成部20にて生成された仮想入力ラダープログラムは、ローダ21により、ネットワーク6を介して仮想I/O(PLC)2へダウンロードされる。
上記した実施の形態では、正常パターンと異常パターンに基づいて仮想入力ラダープログラムを生成したが、本発明はこれ限ることはなく、少なくとも正常パターンに基づいて仮想入力ラダープログラムを生成するようにすればよい。
本発明に係るラダープログラムの検証システムの好適な一実施の形態を示す図である。 本発明に係るシミュレーション支援ツールの好適な一実施の形態を示す図である。 設備制御全体ラダープログラムの一例を示す図である。 変数管理部が管理するデータ構造の一例を示す図である。 設備制御全体ラダープログラムの具体例を示す図である。 入出力変数抽出部14の機能を示すフローチャートである。 クランプ1モジュールについてのテスト入力シーケンスの一例を示す図である。 異常パターンが付加されたテストパターンの一例を示す図である。 入力データパターン管理部の機能を示すフローチャートである。 入力データパターン管理部の作用を説明する図である。 設備装置全体ラダーテストシーケンスの一例を示す図である。 モジュールテストシーケンスインポート部の機能を示すフローチャートである。 設備制御全体ラダーテストシーケンスの一例を示す図である。 CAALコマンドで呼び出される他のプログラムのテストシーケンスの一例を示す図である。 仮想入力ラダー生成部の機能を説明するフローチャートである。 ステップ32の具体的な処理アルゴリズムを示すフローチャートである。 INコマンドに対応するラダー回路の一例を示す図である。 ステップ33の具体的な処理アルゴリズムを示すフローチャートである。 CHECKコマンドに対応するラダー回路の一例を示す図である。 CHECKコマンドに対応するラダー回路の一例を示す図である。 ステップ34の具体的な処理アルゴリズムを示すフローチャートである。 CALLコマンドに対応するラダー回路の一例を示す図である。 実行パターンを次パターンへ移行するラダー回路の一例を示す図である。
符号の説明
1 シミュレーション支援ツール
2 仮想I/O(PLC)
3 作動モニタ
5 PLC
6 制御系ネットワーク
11 テスト対処ラダー管理部
12 モジュールデータ管理部
13 変数管理部
14 入出力変数抽出部
15 テスト設定入力部
16 テスト入力シーケンス管理部
17 モジュールテストシーケンスインポート部
18 入力データパターン管理部
19 テスト設定内容表示部
20 仮想入力ラダー生成部
21 ローダ

Claims (9)

  1. テスト対象のラダープログラムを解析し、そのラダープログラムで使用される変数を抽出する変数抽出手段と、
    その変数抽出手段で抽出された変数のうちの入力変数を取得し、その取得した入力変数についてテスト対象のラダープログラムにおける実行順を検索し、その実行順をテスト入力順とし、そのテスト入力順に、各入力変数に対し入力変数のコマンド,変数名,正常な入力値を関連付けたテーブルを記述したテスト入力シーケンスを管理するテスト入力シーケンス管理手段と、
    前記テスト入力シーケンス管理手段で作成したテスト入力シーケンスに基づき、そのテスト入力シーケンスで規定される前記テスト入力順に従って、各入力変数のコマンドに対応するテスト入力ラダープログラムを生成するテスト入力ラダー生成手段を備えたことを特徴とするシミュレーション支援ツール。
  2. 前記変数抽出手段で抽出した変数を、入力変数と出力変数で分類して記憶するとともに、前記入力変数については、テスト入力値として取りうる値を関連づけて記憶する変数管理手段と、
    前記変数管理手段に格納されたテスト入力値を参照し、前記テスト入力シーケンスにおける所定の入力変数のテスト入力値として正常な入力値でない値に設定した異常パターンからなるテスト入力データパターンを生成し管理するテスト入力パターン管理手段を備え、
    前記テスト入力ラダー生成手段は、前記異常パターンに基づいて前記テスト入力ラダープログラムを生成するようにした
    ことを特徴とする請求項1に記載のシミュレーション支援ツール。
  3. 前記ラダープログラムがモジュール単位で構成されたプログラムを含んで構成され、
    前記テスト入力シーケンス管理手段は、モジュール単位で構成された各プログラムごとに、モジュール単位でテスト入力シーケンスを作成するものであって、
    前記テスト入力シーケンス管理手段で作成されたモジュール単位のテスト入力シーケンスを、ラダープログラム全体のテスト入力シーケンスへインポートするモジュールテストシーケンスインポート手段を備えた
    ことを特徴とする請求項1又は2に記載のシミュレーション支援ツール。
  4. 請求項1から3のいずれか1項に記載のシミュレーション支援ツールと、このシミュレーション支援ツールが生成した前記テスト入力ラダープログラムが実装された仮想I/O用プログラマブルコントローラと、テスト対象のラダープログラムを実行するプログラマブルコントローラと、がネットワークを介して接続され、
    前記仮想I/O用プログラマブルコントローラが、前記テスト入力ラダープログラムを実行し、得られたテスト入力信号を前記ネットラークを介して前記プログラマブルコントローラに対して順次与え、
    前記プログラマブルコントローラは、前記テスト入力信号を取得し、その取得した前記テスト入力信号に基づき前記テスト対象のラダープログラムを実行するようにした
    ことを特徴とするラダープログラムの検証システム。
  5. 請求項1から3のいずれか1項に記載のシミュレーション支援ツールと前記仮想I/O用プログラマブルコントローラをネットワーク接続し、
    前記シミュレーション支援ツールは、生成した前記テスト入力ラダープログラムを前記ネットワーク接続された前記仮想I/O用プログラマブルコントローラにダウンロードし、
    前記仮想I/O用プログラマブルコントローラは、ダウンロードされた前記テスト入力ラダープログラムを実行し、前記テスト入力信号を出力するように構成した
    ことを特徴とする請求項4に記載のラダープログラムの検証システム。
  6. テスト対象のラダープログラムを解析し、そのラダープログラムに使用される変数を抽出して解析し、入力変数を得る工程、
    前記得た入力変数についてテスト対象のラダープログラムにおける実行順を検索し、その実行順をテスト入力順とし、そのテスト入力順に、各入力変数に対し入力変数のコマンド,変数名,正常な入力値を関連付けたテーブルを記述したテスト入力シーケンスを記憶する工程、
    前記記憶したテスト入力シーケンスに基づき、そのテスト入力シーケンスで規定される前記テスト入力順に従って、各入力変数のコマンドに対応するテスト入力ラダープログラムを生成する工程、
    からなることを特徴とするテスト入力ラダープログラム生成方法。
  7. 前記入力変数を得る工程では、抽出した変数を入力変数と出力変数で分類して記憶するとともに、前記入力変数については、テスト入力値として取りうる値を関連づけて記憶し、
    前記テスト入力シーケンス記憶工程では、さらに、前記記憶したテスト入力値を参照し、前記テスト入力シーケンスにおける所定の入力変数のテスト入力値として正常な入力値でない値に設定した異常パターンからなるテスト入力データパターンを生成し、
    前記テスト入力ラダープログラム生成工程では、異常パターンに基づいて前記テスト入力ラダープログラムを生成するようにした
    ことを特徴とする請求項6に記載のテスト入力ラダープログラム生成方法。
  8. 請求項1から3のいずれか1項に記載のシミュレーション支援ツールが生成した前記テスト入力ラダープログラムが実装された仮想I/O用プログラマブルコントローラと、テスト対象のラダープログラムを実行するプログラマブルコントローラとをネットワークを介して接続し、
    前記仮想I/O用プログラマブルコントローラにて前記テスト入力ラダープログラムを実行させることにより得られたテスト入力信号を、前記ネットラークを介して前記テスト対象プログラマブルコントローラに対して順次与え、
    前記テスト対象プログラマブルコントローラにて前記テスト入力信号を取得し、その取得した前記テスト入力信号に基づき前記テスト対象のラダープログラムを実行するようにした
    ことを特徴とするラダープログラムの検証方法。
  9. 請求項8において、ネットワークに、さらにテスト対象プログラマブルコントローラの動作テスト中の状態やテスト結果をモニタするための作動モニタを接続し、
    前記作動モニタにおいて、テスト対象プログラマブルコントローラが取得した前記テスト入力信号に基づいてテスト対象のラダープログラムを実行した結果を、モニタするようにした
    ことを特徴とするラダープログラムの検証方法。
JP2004216525A 2003-07-25 2004-07-23 シミュレーション支援ツールおよびラダープログラムの検証システムならびにテスト入力ラダープログラム生成方法ならびにラダープログラムの検証方法 Expired - Fee Related JP3666507B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004216525A JP3666507B2 (ja) 2003-07-25 2004-07-23 シミュレーション支援ツールおよびラダープログラムの検証システムならびにテスト入力ラダープログラム生成方法ならびにラダープログラムの検証方法

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2003280506 2003-07-25
JP2004216525A JP3666507B2 (ja) 2003-07-25 2004-07-23 シミュレーション支援ツールおよびラダープログラムの検証システムならびにテスト入力ラダープログラム生成方法ならびにラダープログラムの検証方法

Publications (2)

Publication Number Publication Date
JP2005063425A JP2005063425A (ja) 2005-03-10
JP3666507B2 true JP3666507B2 (ja) 2005-06-29

Family

ID=34380115

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004216525A Expired - Fee Related JP3666507B2 (ja) 2003-07-25 2004-07-23 シミュレーション支援ツールおよびラダープログラムの検証システムならびにテスト入力ラダープログラム生成方法ならびにラダープログラムの検証方法

Country Status (1)

Country Link
JP (1) JP3666507B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102017110567A1 (de) 2016-05-19 2017-11-23 Fanuc Corporation Kontaktplanprogrammanalysevorrichtung

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4952345B2 (ja) * 2007-04-06 2012-06-13 株式会社安川電機 プログラミング装置
KR101838765B1 (ko) * 2013-05-20 2018-03-14 엘에스산전 주식회사 입력변수 및 출력변수의 연관관계 표시방법
US10295981B2 (en) 2016-02-12 2019-05-21 Mitsubishi Electric Corporation Engineering tool
JP6923569B2 (ja) * 2019-01-22 2021-08-18 ファナック株式会社 テストパターン生成装置
CN112286135B (zh) * 2020-11-13 2022-04-05 航天晨光股份有限公司 飞机加油车plc控制器的程序实时调整方法
WO2024028932A1 (ja) * 2022-08-01 2024-02-08 三菱電機株式会社 シミュレーションプログラム、シミュレーション装置、シミュレーションシステム及びシミュレーション方法
CN118112987B (zh) * 2024-03-06 2024-09-10 大连理工大学 基于控制目标量化指标的梯形图自动生成装置及方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10133717A (ja) * 1996-10-28 1998-05-22 Nippon Steel Corp シーケンサ用シミュレータ
JP2003076405A (ja) * 2001-08-30 2003-03-14 Digital Electronics Corp 制御用表示装置、制御システム、制御プログラムおよびそれを記録した記録媒体

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102017110567A1 (de) 2016-05-19 2017-11-23 Fanuc Corporation Kontaktplanprogrammanalysevorrichtung
JP2017207962A (ja) * 2016-05-19 2017-11-24 ファナック株式会社 ラダープログラム解析装置
US10565010B2 (en) 2016-05-19 2020-02-18 Fanuc Corporation Ladder program analyzing device
US10838764B2 (en) 2016-05-19 2020-11-17 Fanuc Corporation Ladder program analyzing device

Also Published As

Publication number Publication date
JP2005063425A (ja) 2005-03-10

Similar Documents

Publication Publication Date Title
US7734357B2 (en) System for operating an installation by editing graphic objects
JP3925557B2 (ja) パラメータ設定装置
CN108345265B (zh) 硬件设备的编程方法、可视化编程平台、存储器和处理器
JP6996888B2 (ja) プログラマブル・ロジック・コントローラ、データ収集装置およびプログラム作成支援装置
JP2008282362A (ja) プログラム編集支援装置、コンピュータプログラム、プログラム編集支援方法及びplcシステム
US20150338834A1 (en) Simulation system
US7877758B2 (en) Translator software for monitoring, automation, testing and control
JP3666507B2 (ja) シミュレーション支援ツールおよびラダープログラムの検証システムならびにテスト入力ラダープログラム生成方法ならびにラダープログラムの検証方法
US20050033457A1 (en) Simulation aid tools and ladder program verification systems
JP4379687B2 (ja) シミュレーション支援ツールおよびラダープログラムの検証システムならびにプログラム製品
US6941261B1 (en) Cause and effect logic application implementation
KR100938179B1 (ko) 플랜트 제어 시스템의 제어 프로그램 작성·표시 장치
US8181172B2 (en) Method for operation of an automation system
JP2005018598A (ja) 制御テスト支援システム、及び制御テスト支援システム用プログラム
JPH10301763A (ja) ディジタル制御装置のプログラム作成支援装置
US20090132067A1 (en) Design Device for Designing a Control System and Method for Examining the Technological Aims When Designing a Control System
JP7058925B2 (ja) プラント制御装置
JP4609655B2 (ja) プログラム部品の付属データ生成装置
JP4488231B2 (ja) プログラム管理装置
US20240037016A1 (en) Computer readable storage medium, debugging support device, debugging support method, and machine learning device
JP4491165B2 (ja) 検証パターン生成装置及び方法、並びに検証パターン生成プログラム
JP2000293208A (ja) シーケンス制御システム
US20210018888A1 (en) Automated programming of a programmable-logic controller (plc) of a microcontroller using an expert system
JP2003223204A (ja) プログラマブルコントローラのプログラミング方法およびその装置並びに記憶媒体
JP2940586B2 (ja) プラント制御装置のシミュレーションテスト方法及びプラント制御装置用シミュレータ

Legal Events

Date Code Title Description
A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20041122

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20041130

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050128

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20050315

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20050328

R150 Certificate of patent or registration of utility model

Ref document number: 3666507

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090415

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100415

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110415

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130415

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130415

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140415

Year of fee payment: 9

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees