(57)【要約】【課題】タスクの実行可能状態及び待機の内部状態の変更やサイクルタイムの短縮化をシミュレーションで行なえるＰＬＣシミュレータ装置及びシミュレーションするためのプログラムとこれが記録された記録媒体を提供する。【解決手段】タスク起動命令とタスク待機命令によって他のタスクの実行状態を制御できるＰＬＣプログラムの命令実行をシミュレーションするＰＬＣシミュレータ装置１０において、デバッガ３０のタスク管理部３１からラダー実行エンジン２０のメイン処理部２１に対して、タスクの内部状態の変更指示が行なわれ、その変更指示に基づいてタスクの内部状態が待機状態から実行可能状態に、又は実行可能状態から待機状態に変更される。【選択図】図１
2008123559.tif 000002
【特許請求の範囲】
【請求項１】
タスク起動命令とタスク待機命令によって他のタスクの実行状態を制御できるＰＬＣプログラムの命令実行をシミュレーションするＰＬＣシミュレータ装置において、
タスクの内部状態を待機状態と実行可能状態に相互に変更できる内部状態変更手段
を有することを特徴とするＰＬＣシミュレータ装置。
【請求項２】
タスク単位で実行されるＰＬＣプログラムの命令実行をシミュレーションするＰＬＣシミュレータ装置において、
タスク中の１命令毎の実行時または非実行時の処理時間を計測する１命令処理時間計測手段と、
上記１命令処理時間計測手段で計測された処理時間を積算して１タスクの処理時間を計測する１タスク処理時間計測手段と、
上記１タスク処理時間計測手段で計測された処理時間を記憶する１タスク処理時間記憶手段と、
を有することを特徴とするＰＬＣシミュレータ装置。
【請求項３】
タスク起動命令とタスク待機命令によって他のタスクの実行状態を制御できるＰＬＣプログラムの命令実行と、タスク単位で実行されるＰＬＣプログラムの命令実行とをシミュレーションするＰＬＣシミュレータ装置において、
タスクの内部状態を待機状態と実行可能状態に相互に変更できる内部状態変更手段と、
タスク中の１命令毎の実行時または非実行時の処理時間を計測する１命令処理時間計測手段と、
上記１命令処理時間計測手段で計測された処理時間を積算して１タスクの処理時間を計測する１タスク処理時間計測手段と、
上記１タスク処理時間計測手段で計測された処理時間を記憶する１タスク処理時間記憶手段と、
を有することを特徴とするＰＬＣシミュレータ装置。
【請求項４】
タスク起動命令とタスク待機命令によって他のタスクの実行状態を制御できるＰＬＣプログラムの命令実行をシミュレーションするプログラムが記録された記録媒体であって、
上記記録媒体は、コンピュータを、タスクの内部状態を待機状態と実行可能状態に相互に変更できる内部状態変更手段として機能させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項５】
タスク単位で実行されるＰＬＣプログラムの命令実行をシミュレーションするためのプログラムが記録された記録媒体であって、
上記記録媒体は、コンピュータを、タスク中の１命令毎の実行時または非実行時の処理時間を計測する１命令処理時間計測手段と、上記１命令処理時間計測手段で計測された処理時間を積算して１タスクの処理時間を計測する１タスク処理時間計測手段と、上記１タスク処理時間計測手段で計測された処理時間を記憶する１タスク処理時間記憶手段として機能させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項６】
タスク起動命令とタスク待機命令によって他のタスクの実行状態を制御できるＰＬＣプログラムの命令実行をシミュレーションするプログラムであって、
上記プログラムは、コンピュータを、タスクの内部状態を待機状態と実行可能状態に相互に変更できる内部状態変更手段として機能させるためのプログラム。
【請求項７】
タスク単位で実行されるＰＬＣプログラムの命令実行をシミュレーションするためのプログラムであって、
上記プログラムは、コンピュータを、タスク中の１命令毎の実行時または非実行時の処理時間を計測する１命令処理時間計測手段と、上記１命令処理時間計測手段で計測された処理時間を積算して１タスクの処理時間を計測する１タスク処理時間計測手段と、上記１タスク処理時間計測手段で計測された処理時間を記憶する１タスク処理時間記憶手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、タスク起動命令とタスク待機命令によって他のタスクの実行状態を制御できるＰＬＣプログラムの命令実行や、タスク単位で実行されるＰＬＣプログラムの命令実行をシミュレーションするＰＬＣシミュレータ装置及びシミュレーションするためのプログラムとこれが記録された記録媒体に関する。
【背景技術】
【０００２】
従来、ＰＬＣ（プログラマブルロジックコントローラ）のプログラムをデバッグする場合には、例えばパソコン上でプログラムを仮想的に１命令ごと実行させることによってプログラムのシミュレーションを行ない、プログラムのデバッグを行なっていた。
【０００３】
ところで、従来、ＰＬＣのプログラムは１つの連続したプログラムとして構成されていたが、近年、１つの連続したプログラムをタスクという複数のプログラムに分割してＰＬＣのプログラムを構成する方式が普及してきている。
【０００４】
図６はタスクでプログラムを構成する場合の説明図であるが、従来は同図（ａ）に示す如く、１つの連続したプログラムでＰＬＣプログラム（ユーザプログラム）を構成していたが、タスクを利用したプログラムでは、従来の１つの連続したプログラムを、同図（ｂ）に示す如く、複数のタスク（同図ではタスク１，２，３）に分割してプログラムを構成する。各タスクに割り付けたプログラムは、従来と同じく最後にＥＮＤ命令をもった１つのプログラムである。
【０００５】
タスクの特徴は、その実行及び非実行（「待機」と呼ぶ）を、他のタスクからの「タスク制御命令」によって任意に制御できることである。図６（ｂ）では、タスク１とタスク３が実行状態で、タスク２は非実行（待機）とされている。
【０００６】
従って、いくつかのプログラム部品をタスクとして組み込んでおき（プログラムのモジュール化）、品種や工程などに応じて、あるプログラム（タスク）だけを実行することができる（プログラムの段取り替え）。
【０００７】
また、必要なときに、必要なプログラムのみを実行させることができるため、性能（サイクルタイム）向上にも貢献する。
【０００８】
また、プログラムのモジュール化が可能なので、デバッグもタスクごとのデバッグが行なえる。
【０００９】
なお、いったん実行とされたタスクは、次のサイクル以降でも実行される。また、いったん待機とされたタスクは、他のタスクから実行に戻されない限り、次のサイクル以降でも待機のままである。
【００１０】
従来のプログラムを実行する場合とタスクを実行する場合の差異を、図７を参照しながら模式的に説明すると、従来は、図７（ａ）に示す如く、巻物５０をはじめから読んでいくイメージなのに対して、タスクは、図７（ｂ）に示す如く、カードを個々に読んでいくイメージである。
【００１１】
すでに述べたように、タスクの場合、各カードは互いに実行、待機を指示でき、待機とされたカードは読み飛ばされる。実行、待機の指示はタスク制御命令にて行なう。図７（ｂ）の場合、タスク１からのタスク制御命令でタスク２を実行可能状態（活性化）とし、タスク３を待機（非活性化）としている。
【００１２】
ところで、タスクにはサイクル実行タスクと割込みタスクがある。
【００１３】
サイクル実行タスクは、１サイクルに１回、タスクの状態が「実行可能状態」なら実行されるタスクである。
【００１４】
また、割込みタスクは割込み要因が発生すると、サイクル実行タスク実行中でも割り込んで実行されるタスクである。割込みタスクには次の４種類ある。
（１）電断割込みタスク：電源断時に実行
（２）定時割込みタスク：一定時間間隔で実行
（３）Ｉ／Ｏ割込みタスク：割込み入力ユニットの接点立ち上がりで実行
（４）外部割込みタスク：外部の高機能ユニット等から要求があったとき実行
【００１５】
ここで、このようなタスクより構成されたプログラムをデバッグのためシミュレーションしようとする場合、以下の問題点があった。
【００１６】
（１）サイクル実行タスクはシミュレーションできるのでデバッグが行なえるが、割込みタスクは実機と接続されていないのでシミュレーションできず、デバッグが行なえない。
【００１７】
そこで、従来はＰＬＣシステムを構築後、割込み要因を発生させるデバッグ用装置を取り付け、その装置を手動により操作することで行なっていた。
【００１８】
しかし、このとき、不具合が発生した場合には、すでにできあがったプログラムの再度の検証が必要となり、後処理が面倒であるという問題点があった。また、別途デバッグ用装置が必要になり、コスト高になるという問題点があった。
【００１９】
（２）また、従来は、タスクの内部状態の変更、すなわち、実行可能状態、待機の変更は、実際にＰＬＣシステムを構築後、ＰＬＣに接続されたプログラミングコンソールやパソコン上のアプリケーションを通じて、あるいは上記の如き他のタスクからのタスク制御命令の実行を通じてのみ変更可能であった。
【００２０】
従って、タスクの内部状態を変更するデバッグ作業はシステム構築後の工程で行なわれることになり、同じく不具合発生時の後処理が面倒であるという問題点があった。
【００２１】
（３）また、タスクでプログラムを構成する場合でも、なるべくサイクルタイムを短くしなければならないが、そのための特別の構成がなく、サイクルタイムの短縮化が困難であるという問題点があった。
【発明の開示】
【発明が解決しようとする課題】
【００２２】
本発明は、タスクの実行可能状態及び待機の内部状態の変更やサイクルタイムの短縮化をシミュレーションで行なえるＰＬＣシミュレータ装置及びシミュレーションするためのプログラムとこれが記録された記録媒体を提供することを目的とする。
【課題を解決するための手段】
【００２３】
上記目的を達成するために、本発明は、タスク起動命令とタスク待機命令によって他のタスクの実行状態を制御できるＰＬＣプログラムの命令実行をシミュレーションするＰＬＣシミュレータ装置において、タスクの内部状態を待機状態と実行可能状態に相互に変更できる内部状態変更手段を有することを特徴とする。
本発明は、タスク単位で実行されるＰＬＣプログラムの命令実行をシミュレーションするＰＬＣシミュレータ装置において、タスク中の１命令毎の実行時または非実行時の処理時間を計測する１命令処理時間計測手段と、上記１命令処理時間計測手段で計測された処理時間を積算して１タスクの処理時間を計測する１タスク処理時間計測手段と、上記１タスク処理時間計測手段で計測された処理時間を記憶する１タスク処理時間記憶手段と、を有することを特徴とする。
本発明は、タスク起動命令とタスク待機命令によって他のタスクの実行状態を制御できるＰＬＣプログラムの命令実行と、タスク単位で実行されるＰＬＣプログラムの命令実行とをシミュレーションするＰＬＣシミュレータ装置において、タスクの内部状態を待機状態と実行可能状態に相互に変更できる内部状態変更手段と、タスク中の１命令毎の実行時または非実行時の処理時間を計測する１命令処理時間計測手段と、上記１命令処理時間計測手段で計測された処理時間を積算して１タスクの処理時間を計測する１タスク処理時間計測手段と、上記１タスク処理時間計測手段で計測された処理時間を記憶する１タスク処理時間記憶手段と、を有することを特徴とする。
本発明は、タスク起動命令とタスク待機命令によって他のタスクの実行状態を制御できるＰＬＣプログラムの命令実行をシミュレーションするプログラムが記録された記録媒体であって、上記記録媒体は、コンピュータを、タスクの内部状態を待機状態と実行可能状態に相互に変更できる内部状態変更手段として機能させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体であることを特徴とする。
本発明は、タスク単位で実行されるＰＬＣプログラムの命令実行をシミュレーションするためのプログラムが記録された記録媒体であって、上記記録媒体は、コンピュータを、タスク中の１命令毎の実行時または非実行時の処理時間を計測する１命令処理時間計測手段と、上記１命令処理時間計測手段で計測された処理時間を積算して１タスクの処理時間を計測する１タスク処理時間計測手段と、上記１タスク処理時間計測手段で計測された処理時間を記憶する１タスク処理時間記憶手段として機能させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体であることを特徴とする。
本発明は、タスク起動命令とタスク待機命令によって他のタスクの実行状態を制御できるＰＬＣプログラムの命令実行をシミュレーションするプログラムであって、上記プログラムは、コンピュータを、タスクの内部状態を待機状態と実行可能状態に相互に変更できる内部状態変更手段として機能させるためのプログラムであることを特徴とする。
本発明は、タスク単位で実行されるＰＬＣプログラムの命令実行をシミュレーションするためのプログラムであって、上記プログラムは、コンピュータを、タスク中の１命令毎の実行時または非実行時の処理時間を計測する１命令処理時間計測手段と、上記１命令処理時間計測手段で計測された処理時間を積算して１タスクの処理時間を計測する１タスク処理時間計測手段と、上記１タスク処理時間計測手段で計測された処理時間を記憶する１タスク処理時間記憶手段として機能させるためのプログラムであることを特徴とする。
【００２４】
ここで、ＰＬＣプログラムの命令実行をシミュレーションするとは、ＰＬＣ上で制御対象機器の動作を制御する制御プログラムが設計通り動作するか否か調べるため、パソコン等でＰＬＣプログラムを仮想的に実行することをいう。従って、ＰＬＣシミュレータ装置とは、そうして使用されるパソコン等をいう。なお、ＰＬＣシミュレータ装置は、ＰＬＣ、ＰＬＣと表示装置の組み合わせ等でも構成できる。
【００２５】
ここで、本発明でシミュレーションするＰＬＣプログラムは、サイクル実行タスクと割込みタスクより構成されている。
【００２６】
サイクル実行タスクは、１サイクルに１回、タスクの状態が「実行可能状態」なら実行されるタスクである。
【００２７】
また、割込みタスクは割込み要因が発生すると、サイクル実行タスク実行中でも割り込んで実行されるタスクである。割込みタスクには次の４種類ある。
（１）電断割込みタスク：電源断時に実行
（２）定時割込みタスク：一定時間間隔で実行
（３）Ｉ／Ｏ割込みタスク：割込み入力ユニットの接点立ち上がりで実行
（４）外部割込みタスク：外部の高機能ユニット等から要求があったとき実行
【００２８】
ここで、このようなタスクより構成されたプログラムをデバッグのためシミュレーションしようとする場合、サイクル実行タスクはシミュレーションできるのでデバッグが行なえるが、外部の実機から起動される割込みタスクはシミュレーション時、装置は実機と接続されていないのでシミュレーションできず、デバッグが行なえない。
【００２９】
そこで、本発明では、割込み要因発生手段で特定の割込みタスクを起動するための割込み要因を発生させ、タスク実行手段で上記割込み要因発生手段で指定された割込みタスクを実行するようにしてもよい。
【００３０】
特定の割込みタスクを起動するための割込み要因を発生させるとは、実際には電断割込みタスクでは電源断、定時割込みタスクでは一定時間の到来、Ｉ／Ｏ割込みタスクでは割込み入力ユニットの接点立ち上がり、外部割込みタスクでは外部の高機能ユニット等から要求等であるが、実施形態では、図２に示したメッセージウィンドウ３２上のタスク種別表示部３２−２に表示されたタスク中のうちいずれかの割込みタスクの指定及びこれに続くポップアップ画面（図示せず）中の「起動」ボタンのクリックに基づくタスク管理部３１の割込みタスク起動指示である。
【００３１】
また、タスク実行手段で上記割込み要因発生手段で指定された割込みタスクを実行するとは、実施形態では、図３のフローチャートのステップ１１０〜１１６の割込みタスク実行処理である。
【００３２】
このように、本発明では、割込みタスクをシミュレーション上で実行でき、ＰＬＣシステムを構築前にデバッグを行なうことができる。
【００３３】
従って、ＰＬＣシステム構築後の、すでにできあがったプログラムの再度の検証等が不要となり、デバッグ効率が向上する。また、デバッグ用装置が不要になり、低コストにデバッグを行なうことができる。
【００３４】
また、本発明において、タスク起動命令とタスク待機命令によって他のタスクの実行状態を制御するとは、タスクを使用したプログラムでは、例えば、図７（ｂ）に示す如く、タスク１からのタスク制御命令でタスク２を実行可能状態（活性化）とし、タスク３を待機（非活性化）としていることをいう。
【００３５】
このように、タスクを使用したプログラムでは、他のタスクからのタスク制御命令によらなければタスク内の実行状態を変更できない。
【００３６】
そこで、本発明では、上記の通り、内部状態変更手段を設けて、タスクの内部状態を待機状態と実行可能状態に相互に変更できるようにした。
【００３７】
内部状態変更手段は、実施形態では、図４の処理である。
【００３８】
従って、同じく、ＰＬＣシステム構築後の、すでにできあがったプログラムの再度の検証等が不要となり、デバッグ効率が向上する。
【００３９】
ここで、シミュレーションするためのプログラムが記録された記録媒体は、例えば、フロッピィディスクで構成される。
【００４０】
この記録媒体に記録されたプログラムがパソコン等より構成されるＰＬＣシミュレータ装置に読み取られて実行されると、割込みタスクをシミュレーション上で実行できる。
【発明の効果】
【００４１】
本発明では以下の効果を奏する。
【００４２】
（１）本発明では、タスク起動命令とタスク待機命令によって他のタスクの実行状態を制御できるＰＬＣプログラムの命令実行をシミュレーションするＰＬＣシミュレータ装置において、タスクの内部状態を待機状態と実行可能状態に相互に変更できる内部状態変更手段を具備するようにしたので、タスクの内部状態をシミュレーション上で変更できる。
【００４３】
従って、同じく、ＰＬＣシステム構築後の、すでにできあがったプログラムの再度の検証等が不要となり、デバッグ効率が向上する。
【００４４】
（２）また、本発明では、タスク単位で実行されるＰＬＣプログラムの命令実行をシミュレーションするＰＬＣシミュレータ装置において、タスク中の１命令毎の実行時または非実行時の処理時間を計測する１命令処理時間計測手段と、上記１命令処理時間計測手段で計測された処理時間を積算して１タスクの処理時間を計測する１タスク処理時間計測手段と、上記１タスク処理時間計測手段で計測された処理時間を記憶する１タスク処理時間記憶手段と、を具備するようにしたので、タスクごとの実行時間等が分かり、例えばプログラムの１サイクルタイムが長い場合等には、そのプログラムを構成する各タスクの実行時間を検証し、１サイクルタイムの短縮化に資することができる。
【発明を実施するための最良の形態】
【００４５】
以下、この発明を実施するための最良の形態について、添付した図面を参照しながら詳細に説明する。
【００４６】
図１は、この発明に係わるＰＬＣシミュレータ装置の概略構成を示すブロック図である。
【００４７】
図１において、ＰＬＣシミュレータ装置１０はパソコン等より構成され、タスクより構成されるＰＬＣプログラムの命令実行をシミュレーションすることによってプログラムのデバッグを支援するもので、ラダー実行エンジン２０とデバッガ３０より構成されている。
【００４８】
ここで、ラダー実行エンジン２０は、デバッガ３０からの指令によってＰＬＣのプログラムを実行するもので、メイン処理部２１、ラダー実行処理部２２、周辺処理部２３より構成されている。
【００４９】
ここで、メイン処理部２１はデバッガ３０からの指示によりプログラムの実行、停止、タスクの切り替え、タスクの内部状態の変更、プログラムの実行時間の積算処理等を行なう。また、ラダー実行処理部２２及び周辺処理部２３の管理を行なう。
【００５０】
ラダー実行処理部２２は、メイン処理部２１からの指令によりプログラムを１命令ずつ実行する。
【００５１】
周辺処理部２３は、ラダー実行処理部２２の非実行時、メイン処理部２１からの指令により、図示しない通信機器（例えばＰＬＣ）やアプリケーションとの通信処理を行なう。
【００５２】
デバッガ３０は、デバッグのためラダー実行エンジン２０に対してプログラムを１命令ずつ実行するよう指示するとともに、本実施形態では特に、ラダー実行エンジン２０に対して割込みタスクの起動指示、タスクの内部状態の変更指示、及びタスクの実行時間の管理等が行なえるよう構成され、タスク管理部３１とメッセージウィンドウ３２を具備している。
【００５３】
ここで、タスク管理部３１は、後に詳述する如く、ＰＬＣプログラムを構成するタスクの管理を行なうものである。
【００５４】
メッセージウィンドウ３２はデバッガ３０の行なうプログラムのデバッグを支援するものである。
【００５５】
ところで、本実施形態は、ＰＬＣプログラムのシミュレーションをタスク単位で行なうものであるが、その際、従来できなかったシミュレーション上での割込みタスクの実行、シミュレーション上でのタスクの内部状態の変更、シミュレーション上での各タスクの実行時間の演算を行なう。
【００５６】
そこで、本実施形態では、デバッガ３０のメッセージウィンドウ３２には、図２に示す如きメッセージ画面が表示され、オペレータはこの画面上でマウス等を利用した各種操作を行なうことで上記の如き処理を行なう。
【００５７】
なお、請求項でいうシミュレーションするためのプログラムが記録された記録媒体とは、上記の如き処理を行なうプログラムが記録された記録媒体であり、フロッピィディスク等に記録される。
【００５８】
なお、図２において、メッセージウィンドウ３２には、タスク表示切替部３２−１、タスク種別表示部３２−２、タスクＮｏ．表示部３２−３、タスク設定表示部３２−４、［閉じる］ボタン３２−５、メインメニュー表示部３２−６、モニタボタン３２−７、タスク起動間隔表示部３２−８、タスク状態表示部３２−９、タスク実行回数表示部３２−１０、タスク実行時間表示部３２−１１が設けられている。
【００５９】
ここで、タスク表示切替部３２−１は、この部分をマウスでクリックすることによってタスクの表示を切り替えるものである。
【００６０】
タスク種別表示部３２−２は、タスクの種別を表示するもので、割込みタスクかサイクル実行タスクかの種別が表示される。
【００６１】
タスクＮｏ．表示部３２−３はタスクの番号を表示するものである。
【００６２】
タスク設定表示部３２−４はタスクの設定状態を表示するもので、割込みタスクの場合は割込みの種別、すなわち、「定時」割込みタスクか、「外部」割込みタスクか、「Ｉ／Ｏ」割込みタスクか等の種別が表示される。なお、サイクル実行タスクは種別がないので、「サイクル」とのみ表示される。
【００６３】
［閉じる］ボタン３２−５は、現在の画面を終了させるものである。
【００６４】
メインメニュー表示部３２−６は「タスク」とか「ヘルプ」とかのメインメニューが表示されるものである。
【００６５】
モニタボタン３２−７は、タスクの状態をモニタするためのスイッチである。
【００６６】
タスク起動間隔表示部３２−８は定時割込みタスクの起動間隔を表示するものである。
【００６７】
タスク状態表示部３２−９は、サイクル実行タスクの現在の状態を表示するもので、サイクル実行タスクは、未実行状態（ＩＮＩ）、実行可能状態（ＲＥＡＤＹ）、実行状態（ＲＵＮ）、待機状態（ＷＡＩＴ）の４つの状態を遷移するので、いずれの状態かが表示される。
【００６８】
タスク実行回数表示部３２−１０は、そのタスクのそれまでの実行回数が表示される。
【００６９】
タスク実行時間表示部３２−１１はそのタスクの実行時間が表示される。
【００７０】
図３は、シミュレーション上で割込みタスクを実行する場合の処理手順を示すフローチャートである。
【００７１】
この処理では、まず、デバッガ３０のタスク管理部３１よりラダー実行エンジン２０のメイン処理部２１に対して割込みタスク起動を指示する（ステップ１００）。これは、図２に示したメッセージウィンドウ３２上でタスク種別表示部３２−２に表示されたタスク中のうちいずれかの割込みタスクをマウスでクリックし、このクリックでメッセージウィンドウ３２には割込みタスク起動のためのポップアップ画面（図示せず）が出るので、さらにポップアップ画面中の「起動」ボタンをクリックすることにより行なう。
【００７２】
これによって、メイン処理部２１は割込み要因を受け取る（ステップ１０２）。なお、割込み要因とは、実際には電断割込みタスクでは電源断、定時割込みタスクでは一定時間の到来、Ｉ／Ｏ割込みタスクでは割込み入力ユニットの接点立ち上がり、外部割込みタスクでは外部の高機能ユニット等から要求等であるが、シミュレーション上では、上記の如き、メッセージウィンドウ３２上のタスク種別表示部３２−２に表示されたタスク中のうちいずれかの割込みタスクの指定及びこれに続くポップアップ画面中の「起動」ボタンのクリックに基づくタスク管理部３１の割込みタスク起動指示である。
【００７３】
こうして、割込み要因を受け取ると、メイン処理部２１は割込み要因の受け取りを記憶するが、この記憶は後にステップ１０８で判断される。
【００７４】
次に、メイン処理部２１はラダー実行処理部２２に対して１命令の実行を依頼する（ステップ１０４）。これによって、ラダー実行処理部２２は１命令を実行する（ステップ１０６）。
【００７５】
次に、ステップ１０８では割込み要因が発生しているか否かが調べられる。ここでは、ステップ１０２でメイン処理部２１は割込み要因を受け取っているので、割込み要因は発生していると判断される（ステップ１０８でＹＥＳ）。従って、ステップ１１０に進み、メイン処理部２１は割込み要因を分析し、該当する割込みタスクへ実行を移す。該当する割込みタスクとは、ステップ１０２で受け取った割込みタスクである。
【００７６】
次に、該当する割込みタスクの１命令の実行依頼をメイン処理部２１からラダー実行処理部２２に対して行なう（ステップ１１２）。ラダー実行処理部２２は１命令を実行する（ステップ１１４）。
【００７７】
次に、割込みタスクの最後のプログラムか否か、すなわちＥＮＤ命令か否かが調べられ（ステップ１１６）、プログラムの最後でない場合は（ステップ１１６でＮＯ）、ステップ１１２に戻ってさらに１命令を行なうが、プログラムの最後の場合は（ステップ１１６でＹＥＳ）、ステップ１０８に戻って、再度割込み要因が発生しているか否かが調べられる。
【００７８】
ここで、割込み要因が発生している場合は（ステップ１０８でＹＥＳ）、再びステップ１１０に進み、該当する割込みタスクを実行する。なお、この場合の割込み要因の発生は、割込みタスク実行中にさらに割込みタスクの起動があった場合である。
【００７９】
また、割込み要因が発生していない場合は（ステップ１０８でＮＯ）、プログラム（ＰＬＣプログラム）の最後か否かが調べられ（ステップ１１８）、プログラムの最後でない場合は（ステップ１１８でＮＯ）、ステップ１０４に進んでさらに１命令を実行する。また、プログラムの最後の場合は（ステップ１１８でＹＥＳ）、メイン処理部２１は周辺処理部２３に対して周辺処理を行なうよう指示する（ステップ１２０）。そして、再びステップ１０４の処理を行なう。
【００８０】
以上が、シミュレーション上で割込みタスクを実行する場合の処理手順である。
【００８１】
なお、以上の説明では、割込み要因の発生方法として、図２に示したメッセージウィンドウ３２上でタスク種別表示部３２−２に表示されたタスク中のうちいずれかの割込みタスクをマウスでクリックする等して行なうようにしたが、その他、実機を接続して特定のＩ／Ｏの入力の変化で割込み要因を発生させるようにすることもできる。
【００８２】
なお、ステップ１０８で、割込み要因が発生していると判別された場合は、ステップ１１０以下の割込みタスクの実行を行ない、割込みタスクの実行中にさらに割込み要因が発生した場合は、再度ステップ１１０以下の割込みタスクの実行を行なうようにしたが、これは新しく発生した割込み要因は保留とし、現在実行している割込みタスクが終了すると保留した割込みタスクを実行するようにしたものである。つまり、割込みタスクの保留があると、ステップ１０８では、割込み要因が発生していると判断する。
【００８３】
このように、図３の処理では、図２に示したメッセージウィンドウ３２上でタスク種別表示部３２−２に表示されたタスク中のうちいずれかの割込みタスクをマウスでクリックする等して特定の割込み要因を発生させ、割込みタスクのシミュレーションを行なうようにしたので、ＰＬＣシステムの構築前にシミュレーションによってプログラムのデバッグが行なえ、ＰＬＣシステムの構築前に割込みタスクを含めた全てのタスクのデバッグを確実に行なうことができる等の効果を奏する。
【００８４】
次に、タスクの内部状態を、シミュレーションによって実行可能状態から待機状態に、又は待機状態から実行可能状態に変更する場合の処理手順を図４のフローチャートに基づいて説明する。
【００８５】
このタスクの内部状態変更処理では、まず、デバッガ３０のタスク管理部３１でタスクの内部状態変更指示を行なう（ステップ１３０）。次に、この変更指示は待機状態から実行可能状態への変更指示か否かが調べられ（ステップ１３２）、待機状態から実行可能状態への変更指示の場合は（ステップ１３２でＹＥＳ）、ラダー実行エンジン２０のメイン処理部２１は指定されたタスクの内部状態を実行可能状態にする（ステップ１３４）。
【００８６】
また、変更指示が待機状態から実行可能状態への変更指示でない場合は（ステップ１３２でＮＯ）、次に、この変更指示は実行可能状態から待機状態への変更指示か否かが調べられ（ステップ１３６）、実行可能状態から待機状態への変更指示の場合は（ステップ１３６でＹＥＳ）、ラダー実行エンジン２０のメイン処理部２１は指定されたタスクの内部状態を待機状態にする（ステップ１３８）。
【００８７】
また、変更指示が実行可能状態から待機状態への変更指示でない場合は（ステップ１３６でＮＯ）、当処理を終了する。
【００８８】
このように、本実施形態では、タスクの内部状態を、シミュレーションによって実行可能状態から待機状態に、又は待機状態から実行可能状態に変更できる。
【００８９】
従って、タスクの内部状態を変更するデバッグ作業をシステム構築前に行なうことができ、不具合発生を事前に防止できる等の効果を奏する。
【００９０】
次に、シミュレーション上で各タスクの実行時間等の演算を行なう場合の処理手順を図５のフローチャートに基づいて説明する。
【００９１】
この処理においては、タスクの実行が開始されると（ステップ１５０）、１命令のニモニック（コード）読込みを行ない（ステップ１５２）、実行条件成立か否かが判別される（ステップ１５４）。これは、１命令について所定の入力条件が成立したか否かが調べられているもので、実行条件不成立の場合は（ステップ１５４でＮＯ）、非実行処理時間を読込み（ステップ１５６）、ステップ１６２に進む。
【００９２】
一方、実行条件成立の場合は（ステップ１５４でＹＥＳ）、ニモニック処理、すなわち１命令を実行し（ステップ１５８）、１命令の実行処理時間を読込む（ステップ１６０）。そして、前回までの処理時間に積算するが（ステップ１６２）、初めての命令実行の場合は積算しない。
【００９３】
次に、１タスクの実行が終了したか否かが調べられ（ステップ１６４）、１タスクの実行が終了しない場合は（ステップ１６４でＮＯ）、ステップ１５２に戻り、１タスクの実行を継続するが、１タスクの実行が終了した場合は（ステップ１６４でＹＥＳ）、ステップ１６６に進み、当該１タスクの処理時間を記憶し、タスク数を１インクリメントし（ステップ１６８）、さらに最後のタスクか否かが調べられる（ステップ１７０）。
【００９４】
ここで、最後のタスクでない場合は（ステップ１７０でＮＯ）、ステップ１５２に戻り、１タスクの実行を継続するが、最後のタスクの場合は（ステップ１７０でＹＥＳ）、タスクの総実行時間（プログラムの総実行時間）を記憶し（ステップ１７２）、実行した総タスク数を記憶し（ステップ１７４）、タスクの実行を終了する（ステップ１７６）。
【００９５】
このように、本実施形態では、シミュレーションにおいて、
（１）１つのタスクを構成する１命令ごとの実行時又は非実行時の処理時間を記憶し、
（２）１つのタスクの実行が終了すると各命令の処理時間を積算してその１タスクの処理時間を記憶し、
（３）全てのタスクの実行が終了すると、タスクの総実行時間と、プログラムを構成する総タスク数を記憶
するようにした。
【００９６】
このため、タスクごとの実行時間等が分かり、例えばプログラムの１サイクルタイムが長い場合等には、そのプログラムを構成する各タスクの実行時間を検証し、１サイクルタイムの短縮化に資することができる等の効果を奏する。
【図面の簡単な説明】
【００９７】
【図１】この発明に係わるＰＬＣシミュレータ装置の一実施形態の概略構成を示すブロック図である。
【図２】図１に示したＰＬＣシミュレータ装置で実行されるＰＬＣプログラムの内容を示す図。
【図３】図２に示したプログラムが実行された場合のデバッガのメッセージウィンドウにおける表示例を示す図。
【図４】図１に示した実施形態の処理手順を示すフローチャート。
【図５】同じく図１に示した実施形態の処理手順を示すフローチャート。
【図６】タスクでプログラムを構成する場合の説明図で、（ａ）は１つの連続したプログラムでＰＬＣプログラム（ユーザプログラム）を構成する場合、（ｂ）は（ａ）のプログラムを複数のタスク（同図ではタスク１，２，３）に分割してプログラムを構成する場合の説明図である。
【図７】従来のプログラムを実行する場合とタスクを実行する場合の差異を模式的に説明する図で、（ａ）は従来のプログラムを実行する場合、（ｂ）はタスクを実行する場合の説明図である。
【符号の説明】
【００９８】
１０  ＰＬＣシミュレータ装置
２０  ラダー実行エンジン
２１  メイン処理部
２２  ラダー実行処理部
２３  周辺処理部
３０  デバッガ
３１  タスク管理部
３２  メッセージウィンドウ
３２−１  タスク表示切替部
３２−２  タスク種別表示部
３２−３  タスクＮｏ．表示部
３２−４  タスク設定表示部
３２−５  ［閉じる］ボタン
３２−６  メインメニュー表示部
３２−７  モニタボタン
３２−８  タスク起動間隔表示部
３２−９  タスク状態表示部
３２−１０  タスク実行回数表示部
３２−１１  タスク実行時間表示部
【図１】
2008123559.tif 000003
【図２】
2008123559.tif 000004
【図３】
2008123559.tif 000005
【図４】
2008123559.tif 000006
【図５】
2008123559.tif 000007
【図６】
2008123559.tif 000008
【図７】
2008123559.tif 000009