JP4379687B2 - シミュレーション支援ツールおよびラダープログラムの検証システムならびにプログラム製品 - Google Patents

シミュレーション支援ツールおよびラダープログラムの検証システムならびにプログラム製品 Download PDF

Info

Publication number
JP4379687B2
JP4379687B2 JP2003280507A JP2003280507A JP4379687B2 JP 4379687 B2 JP4379687 B2 JP 4379687B2 JP 2003280507 A JP2003280507 A JP 2003280507A JP 2003280507 A JP2003280507 A JP 2003280507A JP 4379687 B2 JP4379687 B2 JP 4379687B2
Authority
JP
Japan
Prior art keywords
input
test
variable
test input
pattern
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
JP2003280507A
Other languages
English (en)
Other versions
JP2005044316A (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 JP2003280507A priority Critical patent/JP4379687B2/ja
Publication of JP2005044316A publication Critical patent/JP2005044316A/ja
Application granted granted Critical
Publication of JP4379687B2 publication Critical patent/JP4379687B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02PCLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
    • Y02P90/00Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
    • Y02P90/02Total factory control, e.g. smart factories, flexible manufacturing systems [FMS] or integrated manufacturing systems [IMS]

Landscapes

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

Description

この発明は、シミュレーション支援ツールおよびラダープログラムの検証システムならびにプログラム製品に関するものである。
生産工場(製造現場)に設置されるFA(ファクトリーオートメーション)システムの制御をつかさどるPLC(プログラマブルロジックコントローラ)は、入力ユニットで入力した信号をCPUユニットのI/Oメモリに取り込み(INリフレッシュ)、予め登録されたラダー言語で組まれた制御プログラム(ユーザプログラム)に基づき論理演算をし(演算実行)、その演算実行結果をI/Oメモリに書き込んで出力ユニットに送り出し(OUTリフレッシュ)、その後、いわゆる周辺サービス処理を行うことをサイクリックに繰り返し処理するようになる。
ところで、実際の運用を開始するに先立ち、制御プログラムが正常に動作するか否かの事前検証を行なう必要がある。そして、係る事前検証は、従来実設備を用いずに机上でラダープログラムをテストし現場調整工数を削減することが図られている。係る事前検証を行なう場合、センサなどの入力機器等からの実際の入力信号(I/Oデータ)を与えることができないので、その入力信号の代わりに所定のタイミングで検証のために疑似の入力信号(テスト入力:仮想I/O)をテスト対象の制御プログラムを実装したPLCに与える必要がある。そこで、従来の事前検証の一例としては、プログラミングツールのPLCメモリモニタ機能を用い、ユーザがマニュアル操作をし、テスト入力を与える変数のデータ値を直接変更する方法が一般的に行なわれていた。上記方法は、例えば特許文献1の従来技術の説明などにも開示されている。
特開平8−63207号公報
しかしながら、従来の事前検証におけるテスト入力では、以下に示す問題があった。すなわち、テスト対象の制御プログラムであるラダープログラムに記述された変数の数が膨大で、入力を与える変数を選ぶのが煩雑である。更に、同時に複数の変数に対してON/OFFすることが難しい。
また、従来の事前検査は、入力信号が正規の順番で正しく入力された場合に、制御プログラムが正しく動作するかの動作確認にとどまり、異常事態等が発生し、正規と異なる入力信号が入力された場合の動作確認まではできなかった。
さらに、上記した制御プログラムの動作確認を行なった結果、バグを発見したような場合には、プログラミングツールを用いて制御プログラムのバグ修正を行なうとともに、修正後の制御プログラムを再度PLCにダウンロードすることになるが、係るバグ修正後の制御プログラムに対しても、再テスト(動作確認)を行なう必要がある。すると、係る再テスト時において、上記した再度同じ操作を行わなければならないので煩雑であり、テスト設計時間並びに実行時問の増加を招くという問題点がある。
また、特許文献1には、テスト入力を自動的にPLCに与えるシミュレーションプログラムを生成する技術が開示されているが、アクチュエータの制御プログラムの記述方法を工夫し、その記述内容からシミュレーションプログラムを生成可能とするものである。従って、制御プログラムの生成に制約が生じてしまうという問題がある。さらに、異常パターンに対する検証もできない。
この発明は、テスト対象の制御プログラム(ラダープログラム)からテスト入力するための変数を自動抽出するとともに、その抽出した変数に基づきテスト用の入力信号を自動的に生成し、そのテスト対象の制御プログラムが実装されたプログラマブルコントローラに対してその入力信号を与えることのできるシミュレーション支援ツールおよびラダープログラムの検証システムならびにプログラム製品を提供することを目的とする。
本発明に係るシミュレーション支援ツールは、テスト対象のラダープログラムを解析し、そのラダープログラムで使用される変数を抽出する変数抽出手段と、前記抽出された変数のうちの入力変数について、テスト入力順に各入力変数に対し入力変数のコマンド,変数名,正常な入力値を関連付けたテーブルを、前記実行順にしたがって記述したテスト入力シーケンスを管理するテスト入力シーケンス管理手段と、前記変数抽出手段で抽出した変数を、入力変数と出力変数で分類して記憶するとともに、前記入力変数については、テスト入力値として取りうる値を関連づけて記憶する変数管理手段と、前記変数管理手段に格納されたテスト入力値を参照し、前記テスト入力シーケンスにおける所定の入力変数のテスト入力値として正常な入力値でない値に設定した異常パターンからなるテスト入力データパターンを生成し管理するテスト入力パターン管理手段と、前記テスト入力シーケンス管理手段で作成したテスト入力シーケンス並びに前記テスト入力パターン管理手段で生成した異常パターンに基づいてテスト入力変数に対して入力データ値のパターンを自動生成する手段を備えた構成した。さらに、前記テスト入力順は、テスト対象のラダープログラムにおける実行順であり、前記自動生成した入力データのパターンに基づき、所定のタイミングで前記ラダープログラムを実装したプログラマブルコントローラに対してテスト用の入力信号を与える手段を備えて構成するとよい。ここで、自動生成する手段や、入力信号を与える手段は、実施の形態では、PLCデータ送受信部20に対応する。
テスト入力シーケンスは、入力変数の実行順に配置され、しかも、各入力変数の正常な入力値からなる正常パターンや、異常な入力値を含む異常パターンなどが関連づけられたテーブル構造となっているので、各パターンに対し、実行順に従って、対象となる変数の入力値を参照し、テスト対象の制御プログラムを備えたプログラマブルコントローラに対して所定の入力信号を与えることができる。よって、仮想I/O(テスト入力)を自動的に生成し、プログラマブルコントローラに対するテスト入力,動作確認が実行可能となる。
そして、テスト入力すべき変数を自動抽出を行うことにより、テスト対象の制御プログラム(ラダープログラム)が大きい場合でも、簡単にテスト設計を行うことができ、しかも、正常系に限らず、様々な異常テストケースを短時間で作成することができる。さらに、テストケースとして入力データを管理するため、何度でも同じテストを行なうことができる。
また、前記ラダープログラムがモジュール単位で構成されたプログラムを含んで構成され、前記モジュールについて前記テスト入力シーケンス管理手段で作成された構成モジュールのテスト入力シーケンスを、ラダープログラム全体のテスト入力シーケンスへインポートするモジュールテストシーケンスインポート手段を備えるようにしてもよい。このようにすると、制御プログラム全体のテスト入力シーケンスを作成するに際し、モジュール単位で作成したテスト入力シーケンスを利用することができ、テスト対象のラダープログラムがモジュール構造をもつ場合でも、短時間でテスト設計を行うことができる。
また、本発明に係るラダープログラムの検証システムでは、上記したシミュレーション支援ツールと、テスト対象のラダープログラムを実行するプログラマブルコントローラがネットワークを介して接続され、前記シミュレーション支援ツールが、自動生成したテスト入力値を前記ネットワークを介して前記プログラマブルコントローラに対して順次与え、前記プログラマブルコントローラは、前記テスト入力値を取得し、その取得した前記テスト入力信号に基づき前記テスト対象のラダープログラムを実行し、前記シミュレーション支援ツールが、前記ネットワークを介して前記ラダープログラムの実行結果を取得し、前記パターンに記述された値と前記実行結果を比較するようにした。このようにすると、自動作成されたテスト入力に基づいて事前検証をすることができ、時間制御が高く、繰り返し同じテストを実行することも容易に行える。
更に、本発明に係るプログラム製品では、テスト対象のラダープログラムを解析し、そのラダープログラムで使用される変数を抽出する処理、前記抽出された変数のうちの入力変数について、テスト入力順に各入力変数に対し入力変数のコマンド,変数名,正常な入力値を関連付けたテーブルを、前記実行順にしたがって記述したテスト入力シーケンスを管理する処理、前記抽出した変数を、入力変数と出力変数で分類して記憶するとともに、前記入力変数については、テスト入力値として取りうる値を関連づけて記憶する処理と、前記記憶したテスト入力値を参照し、前記テスト入力シーケンスにおける所定の入力変数のテスト入力値として正常な入力値でない値に設定した異常パターンからなるテスト入力データパターンを生成する処理と、前記テスト入力シーケンス並びに前記異常パターンに基づいてテスト入力変数に対して入力データ値のパターンを自動生成し、所定のタイミングで前記プログラマブルコントローラに対してテスト用の入力信号を与える処理を実行するプログラム部分を含むように構成した。
本発明では、テスト入力すべき変数を自動抽出を行うことにより、テスト対象のラダープログラムが大きい場合でも、簡単にテスト設計を行うことができるばかりでなく、正常系に限らず、様々な異常テストケースを短時間で作成することができる。更に、テスト対象となるラダープログラムに対する構造の制約が無く、各種のプログラムに対する検証が行える。
本実施の形態は、センサその他の入力機器が存在していないか、仮に存在していたとしても、FAシステム全体が動作しておらず、実機の入力機器から入力信号が与えられないような状態で、当該PLC(テスト対象のPLC)に実装された制御プログラムの事前検証を行うためのものである。つまり、検証を行うため、テスト対象のPLCに対して所定のタイミングで入力信号を与える必要があるが、本実施の形態では、係る検証のための入力信号を、シミュレーション支援ツールが作成するとともに、ネットワーク接続されたテスト対象のPLCに対し、所定のタイミングで入力信号を与え、正常に動作するか否かの検証をし、デバッグを行えるようにしている。
そして、具体的な構成は、以下の通りである。すなわち、図1は、本発明が適用されるシステムの一例を示している。図1に示すように、生産工場(製造現場)に設置されるFA(ファクトリーオートメーション)システムでは、所定数のPLC5が当該生産工場に設置される。そして、PLC5が複数存在する場合、制御系ネットワーク6で接続され、複数のPLC5間で同期したり、協働したりしながら動作する。また、実際のシステムでは、このPLC5に、制御対象の各種の出力機器やロボットや等が接続されたり、センサ,スイッチ等の入力機器が直截或いは間接的に接続されたりするが、本発明が対象とするPLC5にダウンロードした制御プログラム(ラダープログラム)の動作確認(事前検証)を行う際には、係る入出力機器は必ずしも接続されているとは限らず、少なくとも入力機器からの信号は与えられない。
ここで本発明では、テスト対象のPLC5に対して与える検証用の入力信号を作成するとともに当該PLC5に対して出力するシミュレーション支援ツール1と、作動モニタ3をテスト対象のPLC5が接続されたネットワークに接続している。これにより、シミュレーション支援ツール1は、テスト対象のPLC5に実装された検証対象となる制御プログラム等に基づきテスト入力用の入力信号を作成し、その作成した入力信号を所定のタイミングで出力し、その入力信号をネットワーク6を介してテスト対象のPLC5に与える。
これにより、テスト対象のPLC5は、シミュレーション支援ツール1から所定のタイミングで与えられる検証用の入力信号を受けとり、制御用プログラムを順次実行する。そして、その実行中の状態や実行結果は、作動モニタ3により監視することができる。つまり、テスト対象のPLC5のIOメモリに格納されたデータを収集して表示したり、そのデータに基づいて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作動速度」は、装置制御インターロックモジュールと接続され、設備制御全体ラダーにおける入力I/Fとはならない。
さらに、このラダープログラム概要としては、クランプ1は、作動指令と作動条件がともにONした場合クランプ作動(出/戻)の信号を出力し、作動後、完了LS(リミットスイッチ)がONしたタイミングで完了とする。そして、設備制御全体としては、装置作動指令と装置作動条件がともにONした場合に、クランプ1の作動を開始する。そして、作動後、クランプ1が完了したタイミングで完了とする。
変数管理部13は、テスト対象ラダーで定義された全変数を、テスト対象範囲における入力I/F、出力I/Fで分類し、リスト管理するので、図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に示した最終テストデータ(テスト入力シーケンスに入力データパターン(正常パターン&異常パターン)を付加)は、PLCデータ送受信部20に与えられ、そこにおいて最終テストデータに従いテスト対象のPLC5のPLCメモリに対して入力データを書込み、また、その入力に対するテスト結果の読出しを行う。
すなわち、シーケンスの記述順に従って各コマンドを順に処理する。そして、INコマンドの場合には、シーケンスのオペランドの変数に対して、実行中のテストパターンの値(入力値)を書き込む。また、CHECKコマンドの場合には、シーケンスのオペランドの変数を読出し、その変数の値が実行中のテストパターンの値に変化したかをチェックする。さらに、WAITコマンドの場合には、テストパターンで規定される時間だけPLC送受信処理を中断する。
また、コマンドの実行順は、各パターンごとにステップ1から順に実行するようにしている。つまり、まず、1番目のパターン(パターン1)の正常のパターンについて、ステップ1から順に実行し、ステップ17まで至ると、2番目のパターン(パターン2)の異常発生中について定義した異常パターンをステップ1からステップ17まで順に実行する。次いで、先頭から3番目のパターン(パターン3)の指令非入力について定義した異常パターンをステップ1からステップ17まで順に実行する(以下同じように繰り返し実行する)。
さらに、図13に示したテストシーケンスを表示装置に表示し、テスト実行を完了した部分について順次色を反転させるようにすると良い。このようにすると、どこまで処理が進んでいるかがわかるとともに、エラーなどを生じた場合にどこのステップでエラーが生じたかなどを容易に理解することができる。
そして、上記した処理を実行するPLCデータ送受信部20の具体的なアルゴリズムは、図15に示すフローチャートを実行ようになっている。すなわち、図15に示すように、テスト入力シーケンス管理部16からテストシーケンスデータを取得する(ST31)とともに、入力パターンデータ管理部18から今回実行するテストパターンを取得する(ST32)。通常は、まず正常パターンについて実行し、その後異常パターンについて順次実行するようにしたため、ステップ32において取得するテストパターンは正常パターンである。よって、正常パターンをテスト入力シーケンス管理部16で保有している場合には、ステップ32における処理は、テスト入力シーケンス管理部16から今回実行するテストパターン(正常パターン)を取得するということになる。
次いで、取得したテストシーケンスに基づき、実行行を抽出する(ST33)。つまり、先頭の行から順に実行するため、まず最初にステップ番号「1」についてのデータを抽出する。そして抽出した行のコマンドを解析し(ST34)、コマンドに応じた所定の処理を実行する。
すなわち、解析したコマンドがINコマンドの場合、テスト対象のPLC5に対する入力信号として、テストシーケンスの処理対象の行のオペランドに記述された変数へ、テストパターンに記述されたデータ値を与える。(ST35)。また、解析したコマンドがCHECKコマンドの場合、テストシーケンスの処理対象の行のオペランドに記述された変数のデータ値をテスト対象のPLC5から読み出し、その読み出したデータ値が対応するテストパターンのデータ値と同じになるまで待つ(ST36,ST37)。さらに、解析したコマンドがINコマンド,CHECKコマンド以外の場合には、そのコマンドに応じた処理をする(ST38)。
そして、上記したコマンドに対応すめる処理を実行したならば、テストシーケンスの最終行まで到達したか否かを判断し(ST39)、最終行でなければ、実行行を次の行に移動し(ST40)、係る次の行のデータを抽出し、上記したコマンド解析に基づく所定の処理を実行する。これにより、現在実行中のテストパターンについて、テストシーケンスの先頭から順に各行のコマンドに基づくテスト入力をPLC5に対して行うことができる。
そして、最終行に至ると、ステップ39の分岐判断でYesとなるので、ステップ41に飛び、全てのパターンについて実行したか否かを判断し、実行していないパターンが残っている場合には、入力パターンデータ管理部18から次のテストパターンを呼び出すとともに(ST42)、ステップ33に戻る。つまり、新たなテストパターンについて先頭の行から順にコマンド解析し、その解析したコマンドに基づく所定の処理を実行し、PLC5に対してテスト入力を与える。
本発明に係るラダープログラムの検証システムの好適な一実施の形態を示す図である。 本発明に係るシミュレーション支援ツールの好適な一実施の形態を示す図である。 設備制御全体ラダープログラムの一例を示す図である。 変数管理部が管理するデータ構造の一例を示す図である。 設備制御全体ラダープログラムの具体例を示す図である。 入出力変数抽出部14の機能を示すフローチャートである。 クランプ1モジュールについてのテスト入力シーケンスの一例を示す図である。 異常パターンが付加されたテストパターンの一例を示す図である。 入力データパターン管理部の機能を示すフローチャートである。 入力データパターン管理部の作用を説明する図である。 設備装置全体ラダーテストシーケンスの一例を示す図である。 モジュールテストシーケンスインポート部の機能を示すフローチャートである。 設備制御全体ラダーテストシーケンスの一例を示す図である。 CALLコマンドで呼び出される他のプログラムのテストシーケンスの一例を示す図である。 PLCデータ送受信部の機能を説明するフローチャートである。
符号の説明
1 シミュレーション支援ツール
3 作動モニタ
5 PLC
6 制御系ネットワーク
11 テスト対処ラダー管理部
12 モジュールデータ管理部
13 変数管理部
14 入出力変数抽出部
15 テスト設定入力部
16 テスト入力シーケンス管理部
17 モジュールテストシーケンスインポート部
18 入力データパターン管理部
19 テスト設定内容表示部
20 仮想入力ラダー生成部

Claims (5)

  1. テスト対象のラダープログラムを解析し、そのラダープログラムで使用される変数を抽出する変数抽出手段と、
    前記抽出された変数のうちの入力変数について、テスト入力順に、各入力変数に対し入力変数のコマンド,変数名,正常な入力値を関連付けたテーブルを記述したテスト入力シーケンスを管理するテスト入力シーケンス管理手段と、
    前記変数抽出手段で抽出した変数を、入力変数と出力変数で分類して記憶するとともに、前記入力変数については、テスト入力値として取りうる値を関連づけて記憶する変数管理手段と、
    前記変数管理手段に格納されたテスト入力値を参照し、前記テスト入力シーケンスにおける所定の入力変数のテスト入力値として正常な入力値でない値に設定した異常パターンからなるテスト入力データパターンを生成し管理するテスト入力パターン管理手段と、
    前記テスト入力シーケンス管理手段で作成したテスト入力シーケンス並びに前記テスト入力パターン管理手段で生成した異常パターンに基づいてテスト入力変数に対して入力データ値のパターンを自動生成する手段を備えたことを特徴とするシミュレーション支援ツール。
  2. 前記テスト入力順は、テスト対象のラダープログラムにおける実行順であり、
    前記自動生成した入力データのパターンに基づき、所定のタイミングで前記ラダープログラムを実装したプログラマブルコントローラに対してテスト用の入力信号を与える手段を備えたことを特徴とする請求項1に記載のシミュレーション支援ツール。
  3. 前記ラダープログラムがモジュール単位で構成されたプログラムを含んで構成され、
    前記モジュールについて前記テスト入力シーケンス管理手段で作成された構成モジュールのテスト入力シーケンスを、ラダープログラム全体のテスト入力シーケンスへインポートするモジュールテストシーケンスインポート手段を備えたことを特徴とする請求項1または2に記載のシミュレーション支援ツール。
  4. 請求項1〜3のいずれか1項に記載のシミュレーション支援ツールと、テスト対象のラダープログラムを実行するプログラマブルコントローラがネットワークを介して接続され、
    前記シミュレーション支援ツールが、自動生成したテスト入力値を前記ネットワークを介して前記プログラマブルコントローラに対して順次与え、
    前記プログラマブルコントローラは、前記テスト入力値を取得し、その取得した前記テスト入力信号に基づき前記テスト対象のラダープログラムを実行し、
    前記シミュレーション支援ツールが、前記ネットワークを介して前記ラダープログラムの実行結果を取得し、前記パターンに記述された値と前記実行結果を比較するようにしたことを特徴とするラダープログラムの検証システム。
  5. テスト対象のラダープログラムを解析し、そのラダープログラムで使用される変数を抽出する処理、
    前記抽出された変数のうちの入力変数について、テスト入力順に各入力変数に対し入力変数のコマンド,変数名,正常な入力値を関連付けたテーブルを、前記実行順にしたがって記述したテスト入力シーケンスを管理する処理、
    前記抽出した変数を、入力変数と出力変数で分類して記憶するとともに、前記入力変数については、テスト入力値として取りうる値を関連づけて記憶する処理と、
    前記記憶したテスト入力値を参照し、前記テスト入力シーケンスにおける所定の入力変数のテスト入力値として正常な入力値でない値に設定した異常パターンからなるテスト入力データパターンを生成する処理と、
    前記テスト入力シーケンス並びに前記異常パターンに基づいてテスト入力変数に対して入力データ値のパターンを自動生成し、所定のタイミングで前記プログラマブルコントローラに対してテスト用の入力信号を与える処理を実行するプログラム部分を持つことを特徴とするプログラム製品。
JP2003280507A 2003-07-25 2003-07-25 シミュレーション支援ツールおよびラダープログラムの検証システムならびにプログラム製品 Expired - Fee Related JP4379687B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2003280507A JP4379687B2 (ja) 2003-07-25 2003-07-25 シミュレーション支援ツールおよびラダープログラムの検証システムならびにプログラム製品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003280507A JP4379687B2 (ja) 2003-07-25 2003-07-25 シミュレーション支援ツールおよびラダープログラムの検証システムならびにプログラム製品

Publications (2)

Publication Number Publication Date
JP2005044316A JP2005044316A (ja) 2005-02-17
JP4379687B2 true JP4379687B2 (ja) 2009-12-09

Family

ID=34266308

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003280507A Expired - Fee Related JP4379687B2 (ja) 2003-07-25 2003-07-25 シミュレーション支援ツールおよびラダープログラムの検証システムならびにプログラム製品

Country Status (1)

Country Link
JP (1) JP4379687B2 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100981330B1 (ko) * 2009-03-25 2010-09-10 주식회사 유디엠텍 입출력 모델을 자동으로 생성하기 위한 피엘씨 코드의 피엘씨 심벌 구조를 이용하여 피엘씨 코드를 테스트하기 위한 시뮬레이션 장치 및 방법
JP5230587B2 (ja) * 2009-11-26 2013-07-10 三菱電機株式会社 ラダープログラムのプログラム試験装置、ラダープログラムのプログラム試験方法およびラダープログラムのプログラム試験用プログラム
KR101558832B1 (ko) 2012-03-26 2015-10-07 미쓰비시덴키 가부시키가이샤 시퀀스 프로그램 디버그 지원 장치
WO2015083178A1 (en) * 2013-12-05 2015-06-11 Debashis Ghatak Tools of advanced model of software engineering and software testing management
JP6688665B2 (ja) * 2016-04-11 2020-04-28 横河電機株式会社 機器保全装置、機器保全方法、機器保全プログラム及び記録媒体
JP6395967B1 (ja) * 2017-06-23 2018-09-26 三菱電機株式会社 プログラム検証システム、制御装置およびプログラム検証方法
US11579596B2 (en) 2018-07-26 2023-02-14 Nec Corporation Plant monitoring apparatus, plant monitoring method, and computer readable recording medium
JP2022139087A (ja) * 2021-03-11 2022-09-26 オムロン株式会社 開発支援装置、開発支援方法、及び、開発支援プログラム
JP2022139088A (ja) * 2021-03-11 2022-09-26 オムロン株式会社 開発支援装置、開発支援方法、及び、開発支援プログラム
JP2022139090A (ja) * 2021-03-11 2022-09-26 オムロン株式会社 開発支援装置、開発支援方法および開発支援プログラム
CN117642727A (zh) * 2021-12-22 2024-03-01 三菱电机株式会社 Fa控制测试辅助程序、fa控制测试辅助装置、fa控制测试辅助方法及fa控制测试辅助系统

Also Published As

Publication number Publication date
JP2005044316A (ja) 2005-02-17

Similar Documents

Publication Publication Date Title
US7272450B2 (en) Development aid device
JP6996888B2 (ja) プログラマブル・ロジック・コントローラ、データ収集装置およびプログラム作成支援装置
JP4379687B2 (ja) シミュレーション支援ツールおよびラダープログラムの検証システムならびにプログラム製品
US10437211B2 (en) Simulation system
US9727442B2 (en) Engineering tool, program editing device, and program editing system
JP3963174B2 (ja) 表示・編集装置及び表示方法並びにプログラム
US20050033457A1 (en) Simulation aid tools and ladder program verification systems
US20080162104A1 (en) Simulation data creation supporting device
JP3666507B2 (ja) シミュレーション支援ツールおよびラダープログラムの検証システムならびにテスト入力ラダープログラム生成方法ならびにラダープログラムの検証方法
WO2011125280A1 (ja) デバッグ支援装置、デバッグ支援方法及びデバッグ支援プログラム
JP7058925B2 (ja) プラント制御装置
JP4928471B2 (ja) プラント制御システム
JP4767309B2 (ja) 情報処理装置、情報処理方法、及びコンピュータプログラム
KR101846140B1 (ko) 프로그램 진단 장치, 프로그램 진단 방법 및 프로그램 진단 프로그램
JP7184710B2 (ja) 模擬プロセス制御装置
JP2008165324A (ja) プログラム作成支援装置
JP6989411B2 (ja) 検索装置
JP4488231B2 (ja) プログラム管理装置
JP2006163657A (ja) プレイバックシミュレータ装置
WO2020189142A1 (ja) 制御システム、制御方法、および制御プログラム
JP4491165B2 (ja) 検証パターン生成装置及び方法、並びに検証パターン生成プログラム
JP2007128455A (ja) プログラム部品の付属データ生成装置
US20240037016A1 (en) Computer readable storage medium, debugging support device, debugging support method, and machine learning device
EP0528237A2 (en) A method for preparing control program and a preparing apparatus thereof
WO2020031903A1 (ja) サポート装置およびサポートプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060202

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090203

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090212

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090409

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: 20090827

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090909

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

Free format text: PAYMENT UNTIL: 20121002

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4379687

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20121002

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20131002

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees