(57)【特許請求の範囲】
【請求項１】
シーケンスプログラムをパソコン上で実行及び途中ステップにおける実行停止を可能としたシーケンスプログラムのシミュレーション装置であって、
シーケンスプログラムの実行の際の参照対象及び実行結果による設定対象となるべきデータが格納されるメモリ領域と、
メモリ領域の内容をバックアップするためのバックアップ領域と、
毎スキャンの開始時点で前記メモリ領域の内容をバックアップ領域に保存するメモリ内容保存手段と、
バックアップ領域の内容の複数スキャン回数分の履歴を保存する手段と、
所定の操作が受付られるのを条件として、メモリ領域の内容を、バックアップ領域に保存された履歴の中から指定された入出力条件が成立したスキャン回の内容に復元すると共に、シーケンスプログラムの実行アドレスをプログラムの先頭へと強制的に戻す初期化手段とを備え、
それにより、指定された入出力条件が成立したスキャン回の内容に戻って、シーケンスプログラムの再実行を可能としたシーケンスプログラムのシミュレーション装置。
【請求項２】
シーケンスプログラムをパソコン上で実行及び途中ステップにおける実行停止を可能としたシーケンスプログラムのシミュレーション装置を実現するために、コンピュータを、
シーケンスプログラムの実行の際の参照対象及び実行結果による設定対象となるべきデータが格納されるメモリ領域を定義する手段と、
メモリ領域の内容をバックアップするためのバックアップ領域を定義するための手段と、
毎スキャンの開始時点で前記メモリ領域の内容をバックアップ領域に保存するメモリ内容保存手段と、
バックアップ領域の内容の複数スキャン回数分の履歴を保存する手段と、
所定の操作が受付られるのを条件として、メモリ領域の内容を、バックアップ領域に保存された履歴の中から指定された入出力条件が成立したスキャン回の内容に復元すると共に、シーケンスプログラムの実行アドレスをプログラムの先頭へと強制的に戻す初期化手段と、
して機能させるためのプログラムを記憶したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、シーケンスプログラムをパソコン上で実行及び途中ステップにおける実行停止を可能としたシーケンスプログラムのシミュレーション装置に係り、特に、スキャン開始時の入出力デバイスの状態に戻って、シーケンスプログラムの実行を再現するための操作を簡便に行えるようにしたシーケンスプログラムのシミュレーション装置に関する。
【０００２】
【従来の技術】
シーケンスプログラムを構成する命令列をパソコン上で１ステップ単位で寸送り的に模擬実行させることを可能としたシーケンスプログラムのシミュレーション装置は、公知である。
【０００３】
この種のシミュレーション装置にあっては、本来１スキャン単位で一括して実行される一連のシーケンスプログラム（命令ステップ列で構成される）を、１ステップずつ寸送り的に模擬実行してその都度出力デバイス（リレー等）の値をモニタリング（視認）することによりプログラムのデバッグが行われる。
【０００４】
モニタリング時に出力デバイスが所期の値とならない場合、実行した命令ステップに関連する入出力デバイス（センサやリレー）の値を強制的に変更しては、再度その命令ステップの実行結果を確認する。状況によっては複数の入出力データの値を変更しては、再度その命令ステップの実行結果を確認する。必要な場合には、プログラムの修正を行い、修正されたプログラムにより再度動作の確認を行なう。開発者の意図した動作を行うことが確認されたならば、プログラムのデバッグは完了する。
【０００５】
【発明が解決しようとする課題】
このようなシーケンスプログラムのデバッグにおいては、デバッグ完了に至る過程で、各命令ステップの実行動作確認等のために、入出力デバイスの値を必要により適宜に変更する。そのため、最終的なデバッグ完了確認のために、シーケンスプログラムを構成する一連の命令ステップをその先頭から末尾まで１ステップずつ寸送りに実行させるためには、それに先立って、それまでに変更された入出力デバイス等の値を全てスキャン開始時の本来の値（実機ＰＬＣにおける入出力リフレッシュ直後の値に相当する）に戻さねばならない。さもなければ、実機ＰＬＣにおいても、プログラムが正常に動作することが保証されない。
【０００６】
しかしながら、従来のこの種のシミュレーション装置にあっては、デバッグの過程でどの入出力デバイスをどのような値に変更したかの情報は、手作業による記録や作業者の記憶に頼る他なかったため、値の戻し忘れや値の設定ミスが発生したり、値を元に戻すために多大な作業工数が必要であったりすることにより、デバッグ効率が低下すると言った問題点が指摘されている。
【０００７】
この発明は、このような従来の問題点に着目してなされたもので、その目的とするところは、デバッグの過程で入出力デバイスの値を変更した場合、その変更箇所を作業者が記録若しくは記憶しておかずとも、必要に応じてスキャン開始時の入出力デバイスの状態に直ちに復元することができ、これによりこの種のデバッグ作業を効率よく実施可能なシーケンスプログラムのシミュレーション装置を提供することにある。
【０００８】
この発明の他の目的とするところは、デバッグの過程で入出力デバイスの値を変更した場合、その変更箇所を作業者が記録若しくは記憶しておかずとも、過去のスキャン回の中で指定されたスキャン回におけるスキャン開始時の入出力デバイスの状態に直ちに復元することができ、これによりこの種のデバッグ作業をより効率よく実施可能なシーケンスプログラムのシミュレーション装置を提供することにある。
【０００９】
この発明の他の目的とするところは、デバッグの過程で入出力デバイスの値を変更した場合、その変更箇所を作業者が記録若しくは記憶しておかずとも、過去のスキャン回の中で、入出力デバイスが指定の値に変化したスキャン回におけるスキャン開始時の入出力デバイスの状態に直ちに復元することができ、これによりこの種のデバッグ作業をより効率よく実施可能なシーケンスプログラムのシミュレーション装置を提供することにある。
【００１０】
この発明のさらに他の目的とするところは、デバッグの過程で入出力デバイスの値を変更した場合、その変更箇所を作業者が記録若しくは記憶しておかずとも、１ステップずつ命令実行を寸送りに逆戻りさせつつ、最終的にスキャン開始時の入出力デバイスの状態に復元することができ、これによりこの種のデバッグ作業をより効率よく実施可能なシーケンスプログラムのシミュレーション装置を提供することにある。
【００１１】
【課題を解決するための手段】
この発明のシーケンスプログラムのシミュレーション装置は、シーケンスプログラムをパソコン上で実行及び途中ステップにおける実行停止を可能としたシーケンスプログラムのシミュレーション装置であって、
シーケンスプログラムの実行の際の参照対象及び実行結果による設定対象となるべきデータが格納されるメモリ領域と、
メモリ領域の内容をバックアップするためのバックアップ領域と、
毎スキャンの開始時点で前記メモリ領域の内容をバックアップ領域に保存するメモリ内容保存手段と、
所定の操作が受付られるのを条件として、メモリ領域の内容を、バックアップ領域に保存された内容に復元すると共に、シーケンスプログラムの実行アドレスをプログラムの先頭へと強制的に戻す初期化手段と、を備え、
それにより、過去のスキャン時に戻って、シーケンスプログラムの実行を再現可能としたものである。
【００１２】
なお、途中ステップにおける実行停止可能なモードとしては、この種のシミュレーション装置においては種々のモードが知られている。具体的には、１ステップ実行モードのほかに、指定された入出力の内容が特定値となったことを条件として実行を自動停止する各種の自動停止モード、さらには、任意の時点で手動でプログラムを途中停止させるモード等が存在する。加えて、そのような途中ステップにおける実行停止可能な新規なモードとしては、予め停止すべきステップを具体的にステップ番号により指定し、そのステップの到来を待って、実行停止を行うモードも考えられる。本発明は、あらゆる途中停止モードに対応可能である。
【００１３】
このような構成によれば、デバッグの過程で入出力デバイスの値を変更した場合、その変更箇所を作業者が記録若しくは記憶しておかずとも、必要に応じてスキャン開始時の入出力デバイスの状態に直ちに復元することができ、これによりこの種のデバッグ作業を効率よく実施可能となる。
【００１４】
好ましい実施の形態では、バックアップ領域の内容の複数スキャン回数分の履歴を保存する手段を有し、かつ
初期化手段が、メモリ領域の内容を、バックアップ領域の履歴の中から指定されたスキャン回の内容に復元すると共に、シーケンスプログラムの実行アドレスをプログラムの先頭へと強制的に戻すものである。
【００１５】
このような構成によれば、デバッグの過程で入出力デバイスの値を変更した場合、その変更箇所を作業者が記録若しくは記憶しておかずとも、過去のスキャン回の中で指定されたスキャン回におけるスキャン開始時の入出力デバイスの状態に直ちに復元することができ、これによりこの種のデバッグ作業をより効率よく実施可能となる。
【００１６】
好ましい実施の形態では、バックアップ領域が、メモリ領域の内容を複数スキャン回数分の履歴として保存可能になされており、かつ
初期化手段が、メモリ領域の内容を、バックアップ領域に保存された履歴の中から指定された入出力条件が成立したスキャン回の内容に復元すると共に、シーケンスプログラムの実行アドレスをプログラムの先頭へと強制的に戻すものである。
【００１７】
このような構成によれば、デバッグの過程で入出力デバイスの値を変更した場合、その変更箇所を作業者が記録若しくは記憶しておかずとも、過去のスキャン回の中で、入出力デバイスが指定の値に変化したスキャン回におけるスキャン開始時の入出力デバイスの状態に直ちに復元することができ、これによりこの種のデバッグ作業をより効率よく実施可能となる。
【００１８】
さらに、この発明のシーケンスプログラムのシミュレーション装置は、シーケンスプログラムをパソコン上で実行及び途中ステップにおける実行停止可能としたシーケンスプログラムのシミュレーション装置であって、
シーケンスプログラムの実行の際に参照及び設定されるべきデータが格納されるメモリ領域と、
メモリ領域の内容をバックアップするためのバックアップ領域と、
毎スキャンの開始時点で前記メモリ領域の内容をバックアップ領域に保存するメモリ内容保存手段と、
所定の操作が受付られるのを条件として、メモリ領域の内容を、バックアップ領域に保存された内容に復元すると共に、シーケンスプログラムの実行アドレスをプログラムの先頭へと強制的に戻し、以後、前記所定操作が受け付けられた時点のステップの１ステップ手前まで、シーケンスプログラムを強制的に連続実行させる再実行手段と、を備え、
それにより、シーケンスプログラムの実行を１ステップ分逆戻りさせた状態と等価な状態を再現可能としたものである。
【００１９】
このような構成によれば、デバッグの過程で入出力デバイスの値を変更した場合、その変更箇所を作業者が記録若しくは記憶しておかずとも、１ステップずつ命令実行を寸送りに逆戻りさせつつ、最終的にスキャン開始時の入出力デバイスの状態に復元することができ、これによりこの種のデバッグ作業をより効率よく実施可能となる。
【００２０】
【発明の実施の形態】
以下に、この発明の好適な幾つかの実施の一形態を添付図面を参照しながら詳細に説明する。
【００２１】
本発明に係るシーケンスプログラムのシミュレーション装置の第１実施形態が図１〜図４に示されている。なお、図１はシーケンスプログラムのシミュレーション装置のソフトウェア構成を示す構成図、図２はシーケンスプログラムのシミュレーション装置の機能ブロック図、図３はシーケンスプログラム実行処理のフローチャート、図４はステップ実行処理のフローチャートである。
【００２２】
図１に示されるように、本発明のシミュレーション装置１は、市販のパソコン（例えば、Windows95/98/NT4.0等）１０上に、デバッガ１０１とシミュレーションエンジン１０２とをソフトウェア的に実現して構成されている。
【００２３】
シミュレーションエンジン１０２は、実行管理部１０２ａと、プログラム実行部１０２ｂと、メモリ領域１０２ｃと、バックアップ領域１０２ｄとを含んでいる。
【００２４】
デバッガ１０１は、シミュレーションエンジン１０２に対する動作指示やシミュレーションエンジンの動作監視を行う。使用者は、デバッガ１０１のユーザインタフェースを介して、シミュレーションエンジン１０２に対して指示することができる。
【００２５】
シミュレーションエンジン１０２は、本発明の要部を構成するものであり、シーケンスプログラムのシミュレーション機能を有する。
【００２６】
実行管理部１０２ａは、シーケンスプログラムの実行指示、メモリバックアップ処理等を行う。また、実行管理部１０２ａは、デバッガ１０１からの指示を受け付け、プログラムの実行を制御する。
【００２７】
プログラム実行部１０２ｂは、メモリ領域１０２ｃを参照・操作しつつ、シーケンスプログラムの実行を行う。すなわち、プログラム実行部１０２ｂは、メモリ領域１０２ｃの入力デバイスの値を参照して命令を実行すると共に、命令実行結果によりメモリ領域１０２ｃの出力デバイスの値を（書き替え）操作する。
【００２８】
メモリ領域１０２ｃは、プログラム実行部１０２ｂが参照するメモリ領域である。このメモリ領域１０２ｃには、シーケンスプログラムの実行の際の参照対象及び実行結果による設定対象となるべき入出力データが格納される。
【００２９】
バックアップ領域１０２ｄは、メモリ領域１０２ｃを一時的にバックアップするための領域である。このバックアップ領域１０２ｄには、後述するように、スキャン毎にメモリ領域１０２ｃの内容が保存される。また、バックアップ領域１０２ｄの内容は、デバッガ１０１からの指示に応じて、メモリ領域１０２ｃへと転送複写され、これによりメモリ領域１０２ｃにはスキャン開始時の内容（プログラムの実行等により変更されていない内容）が復元される。
【００３０】
次に、図２〜図４を参照しつつ、本発明に関連するシミュレーション装置１の構成機能並びに全体動作をより詳細に説明する。
【００３１】
先ず、図２を参照して説明すると、デバッガ１０１は、ユーザからの各種の操作指令乃至指示を受け付ける役目とユーザに対して動作内容を認識可能に出力（表示等）する役目とを果たすマンマシンインタフェース（ＭＭＩ）として有効に機能するソフトウェアである。
【００３２】
ユーザからの操作指令乃至指示としては、（１）プログラム実行に関する指示、（２）デバッグ中等のプログラム変更指示、（３）デバッグ中等の入出力デバイスの値の変更指示、等が少なくとも含まれている。
【００３３】
特に、プログラム実行に関する指示には、（１）実行（モニタモード）指示、（２）停止（プログラムモード）指示、（３）一時停止指示、（４）ステップ実行指示、（５）スキャン実行指示、（６）連続スキャン実行指示、（７）スキャン再実行指示（本発明の要部）、等が少なくとも含まれている。
【００３４】
ここで、実行（モニタモード）指示（１）とは、スキャンを連続的に行わせながらプログラムを実行する指示である。
【００３５】
停止（プログラムモード）指示（２）とは、プログラムの実行を停止させる指示である。このとき、ラダー実行エンジンの運転モードは、自動的にプログラムモードになる。
【００３６】
一時停止指示（３）とは、一時的にプログラムの実行を停止する指示である。このとき、各実行モードで処理を再開することができる。
【００３７】
ステップ実行指示（４）とは、プログラムを構成する一連のニモニックの１ステップ毎の処理（解読実行）を寸送り的に行う指示である。ステップ実行では、１ステップ分のプログラム実行の毎に動作は停止する。
【００３８】
スキャン実行指示（５）とは、ラダープログラムを１スキャンだけ実行する指示である。ステップ実行中にスキャン実行指示を与えると、ラダーの最後まで実行する。
【００３９】
連続スキャン実行指示（６）とは、スキャン実行を一定の間隔（インターバル）で連続して行う指示である。
【００４０】
スキャン再実行指示（７）とは、図２の再実行指示（２０１）に相当するものであり、ステップ実行の途中で、入出力メモリ（Ｉ／Ｏメモリ）の内容をスキャン開始時の状態に戻すと共に、プログラムカウンタの内容をクリアさせる（先頭値とさせる）指示である。ここで、当業者には良く知られているように、入出力メモリとはプログラム実行に際して参照乃至設定されるメモリ領域１０２ｃに相当するものである。また、プログラムカウンタとは、プログラムの実行アドレスを管理するポインタとして機能するものである。
【００４１】
実行管理部１０２ａは、デバッガ１０１からの各種の指示を受け付けると共に、それらに対応する動作を実現するために、プログラム実行部１０２ｂやメモリ領域１０２ｃを適宜に制御するものである。本発明に関連する処理としては、プログラム実行モードを様々に変更するためのプログラムアドレス変更処理（２０２）が挙げられる。
【００４２】
プログラム実行部１０２ｂは、シーケンスプログラムを実行するためのラダー実行エンジンとして機能するものであり、このプログラム実行部１０２ｂのプログラム実行アドレスは実行管理部１０２ａにより制御される。
【００４３】
メモリ領域１０２ｃは、ＰＬＣの所謂入出力メモリ（Ｉ／Ｏメモリ）に相当するものであり、このメモリ領域１０２ｃには入出力デバイスに対応する入出力データの他に、プログラムの実行に必要なタイマやカウンタのデータ等が格納される。このメモリ領域１０２の入力領域の内容は、実行管理部１０２の制御下にあって、１スキャン毎に仮想入力デバイスとの間で更新され、出力領域の内容は１スキャン毎に仮想出力デバイスとの間で更新される。すなわち、実行管理部１０２ａは、命令実行工程、入出力更新工程、周辺サービス処理工程を含む１サイクル動作を基準として動作管理をおこなっている。
【００４４】
当業者に良く知られているように、メモリ領域１０２ｃの内容は、プログラムの実行に際して適宜に参照（２０３）される。また、プログラムの実行結果を受けて適宜に書き替え設定（２０４）される。
【００４５】
バックアップ領域１０２ｄは、本発明に関連して新たに設けられたものであり、メモリ領域１０２ｃの内容を１スキャン分だけ保存するための記憶領域である。すなわち、後述するように、このバックアップ領域１０２ｄには、毎スキャンの開始時点で、メモリ領域１０２ｃの内容（すなわち、最新の１スキャン分のプログラム実行開始時の内容）が上書き保存（２０５）され、後述する再実行指令（２０１）が与えられた場合には、その保存された内容に基づいて、メモリ領域１０２ｃの内容が復元（２０６）される。
【００４６】
次に、図２及び図３を参照しながら、ステップ実行処理及びスキャン再実行処理を中心として、第１実施形態のシミュレーション装置１におけるシーケンスプログラム実行動作を説明する。
【００４７】
このシミュレーション装置にあっては、シーケンスプログラムをパソコン上で１ステップ単位で寸送り的に模擬実行させることを可能としている。これは、次のような一連の処理の実行により実現される。
【００４８】
図３のフローチャートに示されるように、スキャン再実行指示がない状態（ステップ３０４ＮＯ）では、ステップ実行処理（ステップ３０３）だけが繰り返し実行される。図４のフローチャートに示されるように、ステップ実行処理では、１ステップ分の実行指示を受けてリセットされ（ステップ４０５ＹＥＳ）かつ１ステップ分の命令実行完了毎にセット（ステップ４０３）されるフラグＦ１を参照（ステップ４０１，４０５）することで、１ステップ単位による寸送り的（ステップ４０４）な命令模擬実行動作（ステップ４０２）が行われる。
【００４９】
また、このシミュレーション装置にあっては、毎スキャンの開始時点で、メモリ領域１０２ｃの内容をバックアップ領域１０２ｄへと保存する。これは、つぎのような一連の処理の実行により実現される。
【００５０】
図３のフローチャートに示されるように、プログラムカウンタの内容を参照してスキャンの先頭であると判定されると（ステップ３０２ＹＥＳ）、そのときのメモリ領域１０２ｃの内容は、バックアップ領域１０２ｄへと保存される（ステップ３０７）。
【００５１】
また、所定の操作（スキャンの再実行指示）が受付られるのを条件として、メモリ領域１０２ｃの内容を、バックアップ領域１０２ｄに保存されたスキャン開始時（プログラム実行開始時）の内容に復元すると共に、シーケンスプログラムの実行アドレスをプログラムの先頭へと強制的に戻すことを可能としている。これは、次のような一連の処理の実行により実現される。
【００５２】
図３のフローチャートに示されるように、ステップモードの実行中に、スキャン再実行指示（図２の２０１）が与えられると（ステップ３０４ＹＥＳ）、バックアップ領域１０２ｄからメモリ領域１０２ｃへの復元処理が行われ（ステップ３０５）、同時に、プログラムの実行アドレスを管理するプログラムカウンタの値は先頭値に戻される（ステップ３０６）。
【００５３】
そのため、この実施形態によれば、デバッグの過程で入出力デバイスの値を変更した場合、その変更箇所を作業者が記録若しくは記憶しておかずとも、スキャン再実行指示を与えるだけで、スキャン開始時の入出力デバイスの状態に直ちに復元することができ、同一の内部条件でシーケンスプログラムのスキャンを繰り返すことが可能となるほか、状態の確認やデバッグ後の確認のための作業工数を軽減することが可能になり、人手を介することなくスキャン実行前の状態に戻せるため、作業ミスによるデバッグ効率の低下を防ぐことができる、等の格別の作用効果が得られる。
【００５４】
本発明に係るシーケンスプログラムのシミュレーション装置の第２実施形態が図５〜図８に示されている。なお、図５はシーケンスプログラムのシミュレーション装置の機能ブロック図、図６はシーケンスプログラム実行処理のフローチャート、図７は履歴からのメモリ領域復元処理のフローチャート、図８は履歴の内容を説明するための概念図である。
【００５５】
図２に示されるように、この実施形態のシミュレーション装置にあっても、第１実施形態の場合と同様に、デバッガ１０１と、実行管理部１０２ａと、プログラム実行部１０２ｂと、メモリ領域１０２ｃと、バックアップ領域１０２ｄとを有する。これらの機能要素の詳細については、第１実施例の該当項目の説明を参照されたい。
【００５６】
新たな機能要素であるバックアップ領域の履歴１０３は、バックアップ領域１０２ｄの内容の複数スキャン回数分の履歴に相当する。このバックアップ領域の履歴１０３は、必要により、例えばパソコン１０上の主メモリ或いは補助メモリ上に格納される。
【００５７】
また、図５に示される再実行指示（１０１）には、復元を希望するメモリ領域のスキャン回若しくは入出力条件を指定することが可能となっている。すなわち、『第ｎ回目のスキャンにおけるスキャン開始時のメモリ領域』或いは『入出力デバイスが特定状態に変化したときのスキャン回のメモリ領域』と言った具合の指定が所定のコマンド言語で可能となされている。
【００５８】
次に、図６〜図８を参照しながら、ステップ実行処理及びスキャン再実行処理を中心として、第２実施形態のシミュレーション装置１におけるシーケンスプログラム実行動作を説明する。
【００５９】
このシミュレーション装置にあっても、シーケンスプログラムをパソコン上で１ステップ単位で寸送り的に模擬実行させることを可能としている。これは、次のような一連の処理の実行により実現される。
【００６０】
図６のフローチャートに示されるように、スキャン再実行指示がない状態（ステップ６０６ＮＯ）では、ステップ実行処理（ステップ６０５）だけが繰り返し実行される。ステップ実行処理の内容は先に図４を参照して説明したものと同様であるので、重複説明は回避する
また、このシミュレーション装置にあっては、毎スキャンの開始時点で、メモリ領域１０２ｃの内容をバックアップ領域１０２ｄへと保存すと共に、これと同時にバックアップ領域の履歴１０３を作成している。
【００６１】
図６のフローチャートに示されるように、プログラムカウンタの内容を参照してスキャンの先頭であると判定されると（ステップ６０２ＹＥＳ）、そのときのメモリ領域１０２ｃの内容は、バックアップ領域１０２ｄへと保存される（ステップ６０３）。続いて、それまでのバックアップ領域１０２ｄの内容は履歴１０３へと追加保存される（ステップ６０４）。
【００６２】
また、所定の操作（スキャンの再実行指示）が受付られるのを条件として、メモリ領域１０２ｃの内容を、バックアップ領域の履歴１０３に保存されたバックアップ領域の内容から選択された内容に復元すると共に、シーケンスプログラムの実行アドレスをプログラムの先頭へと強制的に戻すことを可能としている。これは、次のような一連の処理の実行により実現される。
【００６３】
図６のフローチャートに示されるように、ステップモードの実行中に、スキャン再実行指示（図２の２０１）が与えられると（ステップ６０６ＹＥＳ）、図７に示される所定のアルゴリズムに従ってバックアップ領域の履歴１０３からメモリ領域１０２ｃへのデータ復元処理が行われ（ステップ６０７）、同時に、プログラムの実行アドレスを管理するプログラムカウンタの値は先頭値に戻される（ステップ６０８）。
【００６４】
履歴からのメモリ領域復元処理の詳細が図７のフローチャートに示されている。同図において、ステップ７０１では、その再実行指令において復元対象となるメモリ領域が、『指定スキャン時』又は『条件成立時』のいずれのものであるかの判定が行われる。ここで、『指定スキャン時』とは、スキャン回により復元されるべきメモリ領域を指定した場合のことである。また、『条件成立時』とは、特定の入出力の状態により復元されるべきメモリ領域を指定した場合である。
【００６５】
図８に示されるように、バックアップ領域の履歴１０３としては、例えば、ｎ個のメモリ内容（メモリ領域１０２ｃの内容）ＭＤ０〜ＭＤｎが含まれている。その内、例えば、３つ前のスキャン時のメモリ領域と言った指定が行われると、それに対応してメモり内容ＭＤ３が復元される。また、各メモリ内容ＭＤ０〜ＭＤｎには入力データ領域、出力データ領域、制御データ領域（カウンタ、タイマ等）が含まれている。そこで、特定の入出力が特定のオンオフパターンとなったときと言った指定を行うと、そのようなオンオフパターンが検索されて、その条件に合致したスキャン時点のメモリ内容が復元されるのである。
【００６６】
すなわち、ステップ７０１において、『条件成立時』と判定されると、入出力条件成立のスキャン時データが探索され（ステップ７０３）、探索されたスキャン時のメモリ領域が復元される（ステップ７０４）。これに対して、ステップ７０１において、『指定スキャン時』と判定されると、当該スキャン時のメモリ領域が復元される（ステップ７０２）。
【００６７】
そのため、この実施形態によれば、デバッグの過程で入出力デバイスの値を変更した場合、その変更箇所を作業者が記録若しくは記憶しておかずとも、スキャン再実行指示をスキャン時指定又は入出力条件指定と共に与えるだけで、該当するスキャン開始時の入出力デバイスの状態に直ちに復元することができる。そのため、第１実施形態のものに比べて、より一層に使い勝手の良好なシミュレーション装置となる。
【００６８】
次に、図９〜図１１を参照しながら、ステップ実行処理及びステップバック処理を中心として、第３実施形態のシミュレーション装置１におけるシーケンスプログラム実行動作を説明する。
【００６９】
このシミュレーション装置にあっても、シーケンスプログラムをパソコン上で１ステップ単位で寸送り的に模擬実行させることを可能としている。これは、次のような一連の処理の実行により実現される。
【００７０】
図９のフローチャートに示されるように、スキャン再実行指示がない状態（ステップ９０５ＮＯ）では、ステップバック機能付ステップ実行処理（ステップ９０４）だけが繰り返し実行される。
【００７１】
このとき、図１０のフローチャートに示されるように、ステップバック機能付ステップ実行処理では、ステップバックモードを示すフラグＦ２がリセットされているため（ステップ１００１ＮＯ）、第１実施形態と同様にして、ステップ実行処理（ステップ１００２〜１００７）だけが実行される。
【００７２】
また、このシミュレーション装置にあっても、毎スキャンの開始時点で、メモリ領域１０２ｃの内容をバックアップ領域１０２ｄへと保存する。これは、つぎのような一連の処理の実行により実現される。
【００７３】
図９のフローチャートに示されるように、プログラムカウンタの内容を参照してスキャンの先頭であると判定されると（ステップ９０２ＹＥＳ）、そのときのメモリ領域１０２ｃの内容は、バックアップ領域１０２ｄへと保存される（ステップ９０３）。
【００７４】
また、所定の操作（スキャンの再実行指示）が受付られるのを条件として、メモリ領域１０２ｃの内容を、バックアップ領域１０２ｄに保存されたスキャン開始時（プログラム実行開始時）の内容に復元すると共に、シーケンスプログラムの実行アドレスをプログラムの先頭へと強制的に戻すことを可能としている。これは、次のような一連の処理の実行により実現される。
【００７５】
図９のフローチャートに示されるように、ステップモードの実行中に、スキャン再実行指示（図２の２０１）が与えられると（ステップ９０５ＹＥＳ）、バックアップ領域１０２ｄからメモリ領域１０２ｃへの復元処理が行われ（ステップ９０６）、同時に、プログラムの実行アドレスを管理するプログラムカウンタの値は先頭値に戻される（ステップ９０７）。
【００７６】
さらに、ステップバック指示が与えられた場合には、所定の操作が受付られるのを条件として、メモリ領域１０２ｃの内容を、バックアップ領域１０２ｄに保存された内容に復元すると共に、シーケンスプログラムの実行アドレスをプログラムの先頭へと強制的に戻し、以後、前記所定操作が受け付けられた時点のステップの１ステップ手前まで、シーケンスプログラムを強制的に連続実行させる処理が実行される。これは、次のような一連の処理の実行により実現される。
【００７７】
図１０のフローチャートに示されるように、ステップモードの実行中にステップバック指示が与えられると（ステップ１００８ＹＥＳ）、先程説明したステップバックモードフラグＦ２がセットされる（ステップ１００９）。すると、ステップ１００１における判定結果はＹＥＳとなる。そのため、１ステップ分の命令実行処理（ステップ１０１０）とプログラム実行アドレスの歩進処理（ステップ１０１１）とが繰り返し実行される。そして、プログラム実行アドレスがステップバック指示が与えられたステップよりも一つ前の値まで達すると（ステップ１０１２ＹＥＳ）、ステップバックモードフラグＦ２はリセットされて（ステップ１０１３）、ステップバック動作は完了する。
【００７８】
図１１に示されるように、このとき、実際には、アドレス（８）にてステップバック指示が与えられた瞬間に、プログラムの先頭であるアドレス（０）に戻ってから、順次に各ステップであるアドレス（１）〜（６）を実行しつつ一つ手前のステップであるアドレス（７）に到達したのにも拘わらず、一連のステップの実行は瞬時に完了するため、恰も、１ステップ逆戻りさせたものと等価な状態が出現される。従って、このステップバック指示を繰り返すことで、プログラムの実質的な逆戻りが可能となる。特に、この等価逆戻り方式によれば、各ステップにおける実行途中結果を保存しなくても、実質的に逆戻りが可能となる利点がある。
【００７９】
そのため、この実施形態によれば、デバッグの過程で入出力デバイスの値を変更した場合、その変更箇所を作業者が記録若しくは記憶しておかずとも、１ステップずつ命令実行を寸送りに逆戻りさせつつ、最終的にスキャン開始時の入出力デバイスの状態に復元することができ、これによりこの種のデバッグ作業をより効率よく実施可能となる。
【００８０】
【発明の効果】
以上の説明で明らかなように、この発明によれば、デバッグの過程で入出力デバイスの値を変更した場合、その変更箇所を作業者が記録若しくは記憶しておかずとも、必要に応じて簡単な操作を行うだけで、スキャン開始時の入出力デバイスの状態に直ちに復元することができ、これによりこの種のデバッグ作業を効率よく実施可能となる。
【００８１】
また、この発明によれば、デバッグの過程で入出力デバイスの値を変更した場合、その変更箇所を作業者が記録若しくは記憶しておかずとも、スキャン回を指定して簡単な操作を行うだけで、過去のスキャン回の中で指定されたスキャン回におけるスキャン開始時の入出力デバイスの状態に直ちに復元することができ、これによりこの種のデバッグ作業をより効率よく実施可能となる。
【００８２】
また、この発明によれば、デバッグの過程で入出力デバイスの値を変更した場合、その変更箇所を作業者が記録若しくは記憶しておかずとも、入出力デバイス並びにその状態を指定して簡単な操作を行うだけで、過去のスキャン回の中で、入出力デバイスが指定の値に変化したスキャン回におけるスキャン開始時の入出力デバイスの状態に直ちに復元することができ、これによりこの種のデバッグ作業をより効率よく実施可能となる。
【００８３】
さらに、この発明によれば、デバッグの過程で入出力デバイスの値を変更した場合、その変更箇所を作業者が記録若しくは記憶しておかずとも、必要により簡単な操作を行うだけで、１ステップずつ命令実行を寸送りに逆戻りさせつつ、最終的にスキャン開始時の入出力デバイスの状態に復元することができ、これによりこの種のデバッグ作業をより効率よく実施可能となる。
【図面の簡単な説明】
【図１】  シーケンスプログラムのシミュレーション装置の構成図（第１実施形態）である。
【図２】  シーケンスプログラムのシミュレーション装置の機能ブロック図（第１実施形態）である。
【図３】  シーケンスプログラム実行処理のフローチャート（第１実施形態）である。
【図４】  ステップ実行処理のフローチャートである。
【図５】  シーケンスプログラムのシミュレーション装置の機能ブロック図（第２実施形態）である。
【図６】  シーケンスプログラム実行処理のフローチャート（第２実施形態）である。
【図７】  履歴からのメモリ領域復元処理のフローチャートである。
【図８】  履歴の内容を説明するための概念図である。
【図９】  シーケンスプログラム実行処理のフローチャート（第３実施形態）である。
【図１０】  ステップバック機能付きステップ実行処理のフローチャートである。
【図１１】  ステップバック動作の概念図である。
【符号の説明】
１              シミュレーション装置
１０            パソコン
１０１          デバッガ
１０２          シミュレーションエンジン
１０２ａ        実行管理部
１０２ｂ        プログラム実行部
１０２ｃ        メモリ領域
１０２ｄ        バックアップ領域
１０３          バックアップ領域の履歴
ＭＤ０〜ＭＤｎ      メモリ領域の履歴
【図１】
0003876959.tif 000002
【図２】
0003876959.tif 000003
【図３】
0003876959.tif 000004
【図４】
0003876959.tif 000005
【図５】
0003876959.tif 000006
【図６】
0003876959.tif 000007
【図７】
0003876959.tif 000008
【図８】
0003876959.tif 000009
【図９】
0003876959.tif 000010
【図１０】
0003876959.tif 000011
【図１１】
0003876959.tif 000012