(57)【要約】【課題】  部機器モニタ（ＥＤＭ）機能付ファンクションブロックを含むユーザプログラムであっても、シミュレーションを行なうことができるシミュレーション装置を提供すること【解決手段】  ファンクションブロックの入力タグと出力タグとディレイ時間とを関連づけたフィードバック条件記憶手段（テーブル）を持ち、出力タグの値が変化してから、ディレイ時間経過後に入力タグに出力タグの値を反転させたフィードバック信号を与える機能を設けた。この機能は、サンプリングタイムごとに出力タグの値をキューに登録し（Ｓ７２，Ｓ７３）、ディレイ時間に対応する所定回数分経過後のキューの値を取り出し（Ｓ７４）、その取り出した値に基づくフィードバック信号を入力タグに与える（Ｓ７５）ことにより実現する。【選択図】        図２４
2008027156.tif 000002
【特許請求の範囲】
【請求項１】
外部機器モニタ機能付ファンクションブロックを含むユーザプログラム用のシミュレーション装置であって、
ファンクションブロックの入力タグと出力タグとディレイ時間とを関連づけたフィードバック条件記憶手段と、
前記出力タグの値が変化してから、前記ディレイ時間経過後に前記入力タグに前記出力タグの値に基づくフィードバック信号を与えるフィードバック手段と、
を備えたことを特徴とするシミュレーション装置。
【請求項２】
フィードバック手段は、キューを持ち、サンプリングタイムごとに前記出力タグの値をキューに登録し、前記ディレイ時間に対応する所定回数分経過後のキューの値を取り出し、その取り出した値に基づくフィードバック信号を前記入力タグに与えるようにしたことを特徴とする請求項１に記載のシミュレーション装置。
【請求項３】
入力タグと出力タグとディレイ時間を受け付け、それらを関連づけて前記フィードバック条件記憶手段に格納するフィードバック条件の設定手段を備えたことを特徴とする請求項１または２に記載のシミュレーション装置。
【請求項４】
設定手段は、フィードバック信号の反転の有無の条件を受付け、その反転の有無の条件も合わせて格納するものであることを特徴とする請求項３に記載のシミュレーション装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ファンクションブロックで記述されたユーザプログラムを実行するシミュレーション装置に関するものである。
【背景技術】
【０００２】
ＦＡ（Ｆａｃｔｏｒｙ  Ａｕｔｏｍａｔｉｏｎ）におけるネットワークシステムは、生産設備の制御を司るＰＬＣ（プログラマブルコントローラ）と、そのＰＬＣにより動作が制御される機器とが、制御系のネットワークに接続される。それらＰＬＣと機器は、その制御系のネットワークを介してサイクリックに通信を行なうことで、ＩＯデータの送受を行ない、生産設備を制御する。
【０００３】
ＰＬＣは、制御プログラムに基づいて演算実行するＣＰＵユニット、センサやスイッチなどの入力機器を接続してそれらのオン・オフ信号を入力信号として取り込む入力ユニット、アクチュエータやリレーなどの出力機器を接続してそれらに対して出力信号を送り出す出力ユニット、ネットワークに接続された他の装置とデータの送受を行なう通信ユニット、各ユニットに電源を供給する電源ユニット、などの複数のユニットを組み合わせることにより構成されている。また、各機能を１つの筐体内に実装した一体型のＰＬＣもある。
【０００４】
さらに最近ではＰＬＣによる制御においても、フェイルセーフ（安全）システムが導入されつつある。つまり、ＰＬＣや各機器自体はもちろん、それらを接続するネットワークも安全機能を組み込まれたもので構成される。ここで安全機能とは、例えばＣＰＵその他の各処理部等を二重化して、正しい出力をするようにしたり、ネットワーク異常（正常な通信ができない）の場合や、緊急停止スイッチが押下されたり、ライトカーテンなどのセンサが人（身体の一部）の進入を検出した場合等の、ネットワークシステムが危険状態になった場合に、フェイルセーフが働き、システムが安全側になって、動作が停止するものである。
【０００５】
この種のセーフティ制御システムは、セーフティコントローラ、セーフティＩ／Ｏターミナルを含み、切削機械や切断機械やアーム付き製造機ロボット等とともに使用される。セーフティコントローラは、一般的なプログラマブルコントローラ（ＰＬＣ）に類似するロジック演算機能、入出力制御機能に加えて、安全面の自己診断機能を内蔵させることにより、その制御において高度な安全性および信頼性を確保したものである。セーフティコントローラは、自己診断結果により異常を検出した場合には、自己の制御が危険につながらないように、強制的に安全な制御を行なうような機能（フェールセーフ機能）を備えている。セーフティＩ／Ｏターミナルにおいても、自己診断機能を有していて、自己診断結果により異常を検出した場合には自己の制御が危険につながらない制御をするといった、フェイルセーフ機能を備えている。それにより、セーフティ制御システムは、製造機ロボット等の動作が危険につながらないようにしている。
【０００６】
ここに言う安全は、より具体的には、規格化されている安全基準を含む意味である。安全規格には、例えばＩＥＣ６１５０８やＥＮ規格などがある。ＩＥＣ６１５０８（プログラム可能な電子システムの機能安全に関する国際電気標準委員会）では、時間あたりの危険故障確率を（失敗確率：Ｐｒｏｂａｂｉｌｉｔｙ  ｏｆ  Ｆａｉｌｕｒｅ  ｐｅｒ  Ｈｏｕｒ）を定義し、この確率によってＳＩＬのレベル（Ｓａｆｅｔｙ  Ｉｎｔｅｇｒｉｔｙ  Ｌｅｖｅｌ）を４段階に分類している。また、ＥＮ規格では、機械のリスクの大きさを評価し、リスク低減策を講じるように義務づけされていて、ＥＮ９５４−１では５つの安全カテゴリにて規定されている。この明細書でいうセーフティコントローラ、セーフティＩ／Ｏターミナル、セーフティ制御システム等は、このような安全基準のいずれかに対応したものである。
【０００７】
なお、セーフティ制御システムは「安全制御システム」と称されることもあり、セーフティコントローラは「安全コントローラ」や「安全制御装置」と称されることもある。セーフティＩ／Ｏターミナルは「セーフティスレーブ局」や「セーフティスレーブユニット」、単に「セーフティスレーブ」と称されることもあり、セーフティを「安全」と置き換えて称されることもある。
【０００８】
セーフティコントローラとセーフティＩ／Ｏターミナルとをネットワークで結んでなるセーフティ制御システムが知られている。セーフティコントローラは、セーフティＩ／Ｏターミナルに対してネットワーク通信する通信マスタ機能を備えている。セーフティコントローラが複数のユニット筐体（例えば、電源ユニット、ＣＰＵユニット、ＩＯユニット、通信ユニット等）を結合させてなるビルディングブロックタイプである場合には、通信マスタユニットにその通信マスタ機能が内蔵される。その通信マスタユニットは「セーフティマスタ局」、「セーフティマスタユニット」や「セーフティマスタ」と称されることもあり、セーフティを「安全」と置き換えて称されることもある。
【０００９】
セーフティＩ／Ｏターミナルは、セーフティコントローラの通信マスタ機能との間でネットワーク通信機能、つまり、通信スレーブ機能を備えている。セーフティＩ／Ｏターミナルは接続端子を備えていて、その接続端子に、オンオフ信号を出すスイッチ等の入力機器と、制御信号の出力先となる出力機器との少なくとも一方が接続されている。入力機器の例は、非常停止スイッチＳＷ、ライトカーテン、ドアスイッチ、２ハンドスイッチなどである。出力機器の例は、セーフティリレーやコンタクタである。これらの入力機器または出力機器も安全規格に対応している。セーフティＩ／Ｏターミナルは、接続された安全用途機器から入力した信号に基づいて制御データを生成し、生成した制御データをセーフティコントローラへネットワーク通信する。
【００１０】
セーフティコントローラがビルディングブロックタイプのものであれば、各ユニットは、共通内部バスに接続され、セーフティコントローラ全体の制御を司るＣＰＵユニットとの間でバス通信をし、データをやり取りする。連結されたＩ／Ｏユニットも接続端子を備えていて、その接続端子に、安全用途の入力機器または安全用途の出力機器が接続されている。そして、セーフティコントローラは、通信マスタユニットを介してセーフティＩ／Ｏターミナルからネットワーク通信により入力した入力機器の入力信号、または連結されたＩ／Ｏユニットに接続された入力機器の入力信号を入力し、予め記憶されたロジックプログラムによってその入力信号のオンオフを論理演算する。その演算結果に基づく出力信号を、通信マスタユニットを介してネットワーク通信によりセーフティＩ／Ｏターミナルへ出力するか、または連結されたＩ／Ｏユニットへ出力をする。Ｉ／Ｏユニット及びセーフティＩ／Ｏターミナルは、その出力信号を出力機器へ出力する。この一連の動作を繰り返し実行することにより、セーフティコントローラにより製造機ロボットを含むシステム全体が制御される。
【００１１】
なお、セーフティコントローラとセーフティＩ／Ｏターミナルとの間の通信サイクルは、セーフティコントローラの繰り返し実行のサイクルと同期していてもよいし、非同期でもよい。また、セーフティコントローラあるいはＣＰＵユニットにおけるロジック演算処理の対象となるロジックプログラムは、プログラマーにより予め作成される。作成する際のプログラミング記述については、例えば、ラダー表記、ニーモニック表記、ファンクションブロック表記であってもよい。プログラミング言語でいうと、インタプリタ型言語、スクリプト言語、アセンブリ言語、高級言語、Ｊａｖａ言語と呼ばれるものであってもよい。このようなプログラミング言語で書かれたソースコードを、アセンブルやコンパイルなどの処理を行ってＣＰＵに実行させる。
【００１２】
また、セーフティＩ／Ｏターミナルに接続された出力機器であるところのセーフティリレーやコンタクタは、製造機ロボットや加工機械、切断機械等につながれていて、リレーやコンタクタの接点がオン中は製造機ロボット等が動作し、接点がオフ中は製造機ロボット等が停止するようになっている。よって、セーフティコントローラは、出力機器をオンオフ制御することで、最終的な制御対象の操作ロボット等の動作停止に関する制御をする。具体的な例をいうと、セーフティコントローラは、非常停止スイッチＳＷが正常に操作されたことをセーフティＩ／Ｏターミナルから通信にて入力すると、制御対象が危険な動作をしないように出力機器（リレーやコンタクタ）をオフするか、安全側の状態に強制制御し、直ちに必要な安全処置を採る。セーフティコントローラは、非常停止スイッチＳＷまたは他の入力機器が異常有りの診断結果を入力すると、非常停止スイッチＳＷの操作有無または入力機器のオンオフ状態にかかわらずに、制御対象が危険な動作をしないようにその動作を停止するよう出力機器をオフするか、安全側の状態に強制制御し、直ちに必要な安全処置を採る。
【００１３】
このセーフティ制御システム（安全システム）は、例えば図１に示すように、セーフティコントローラ１と複数のセーフティスレーブ２とがセーフティネットワーク３に接続されたネットワーク構成をとる。各セーフティコントローラ１，セーフティスレーブ２，セーフティネットワーク３等のネットワークを構成する機器は二重化されている。図では、左端の入力スレーブから緊急停止スイッチ等の異常状態を検出するスイッチがＯＮになったことをセーフティネットワーク３経由でマスタであるセーフティコントローラ１に伝える。セーフティコントローラ１は、論理演算を実行し、右端のセーフティスレーブ２に対して動作停止命令を送るべくＩＯデータとしてＯＦＦを送る。これにより、その右端のセーフティスレーブ２に接続された外部のＩＯ機器（出力装置）の動作が停止し、フェイルセーフが働くことになる。
【００１４】
この安全システムに対応したセーフティコントローラ１のユーザプログラムは、例えば、１つのファンクションブロック或いは複数のファンクションブロックの組み合わせで構築されるものがある。このようにファンクションブロックを用いて記述されたユーザプログラムを演算実行するＰＬＣとしては、特許文献１に開示されたものがある。
【特許文献１】特開２０００−２７６５０８号公報
【発明の開示】
【発明が解決しようとする課題】
【００１５】
セーフティコントローラ特有のファンクションブロックとして、外部デバイスモニタリングや外部機器モニタ等と称させるＥＤＭ（External  Device  Monitoring）の入力端子を備えたものがある。このＥＤＭはセーフティの考え方そのものであり、セーフティリレーなどは、接点を二つ持ち、どちらかが閉じればどちらかが開く構造になっている。
【００１６】
このファンクションブロックは、入力信号と、外部デバイスの状態を評価して、外部デバイスへの安全出力を行うものである。実際には外部デバイスからのフィードバック信号を入力信号として取りこみ、ファンクションブロックへのＥＤＭ  Ｆｅｅｄ  Ｂａｃｋ信号へ入力しなければいけない。このフィードバック信号は、出力と反対側の接点を入力するため、外部機器が正常であれば出力をＯＦＦした場合には、フィードバック信号はＯＮとなる。一方、リレーの溶着が起きたとき、出力をＯＦＦしているのに、フィードバックがＯＦＦのままになり、異常を検知できる仕組みになっている。
【００１７】
ところがシミュレータは実際の機器と接続することができないため、図３に示すようにデバッグの開始時に入力がＯＮで、ファンクションブロックの演算処理をした結果の出力もＯＮの場合、ＥＤＭ  Ｆｅｅｄ  Ｂａｃｋ信号へ入力される値はＯＦＦとなると、係る値（ＯＦＦ）と出力の値が反転の関係にあるので正常状態となる。その後、入力がＯＦＦに反転したことに伴い出力もＯＦＦになった場合でもＥＤＭ  Ｆｅｅｄ  Ｂａｃｋ信号へ入力される値はＯＦＦのままであるので、ファンクションブロックが異常になってしまう（ＥＤＭエラー）。
【００１８】
この発明の目的は、外部機器モニタ（ＥＤＭ）機能付ファンクションブロックを含むユーザプログラムであっても、シミュレーションを行なうことができるシミュレーション装置を提供することにある。
【課題を解決するための手段】
【００１９】
上記の目的を達成するため、本発明に係るシミュレーション装置は、外部機器モニタ機能付ファンクションブロックを含むユーザプログラム用のシミュレーション装置であって、ファンクションブロックの入力タグと出力タグとディレイ時間とを関連づけたフィードバック条件記憶手段と、前記出力タグの値が変化してから、前記ディレイ時間経過後に前記入力タグに前記出力タグの値に基づくフィードバック信号を与えるフィードバック手段と、を備えて構成した。
【００２０】
フィードバック手段は、キューを持ち、サンプリングタイムごとに前記出力タグの値をキューに登録し、前記ディレイ時間に対応する所定回数分経過後のキューの値を取り出し、その取り出した値に基づくフィードバック信号を前記入力タグに与えるようにしてもよい。
【００２１】
さらに、入力タグと出力タグとディレイ時間を受け付け、それらを関連づけて前記フィードバック条件記憶手段に格納するフィードバック条件の設定手段を備えるとよい。そして、設定手段は、フィードバック信号の反転の有無の条件を受付け、その反転の有無の条件も合わせて格納するようにすることができる。
【００２２】
出力タグの値に基づくフィードバック信号は、出力の値と同値或いは反転した信号となる。いずれにするかは、設定により決定される。その設定は、予めいずれかに決定していても良いし、ユーザが設定できるようにしても良い。通常の外部機器モニタ（ＥＤＭ）機能付ファンクションブロックの場合、反転するように設定する。
【発明の効果】
【００２３】
本発明では、外部機器モニタ（ＥＤＭ）機能付ファンクションブロックを含むユーザプログラムであっても、シミュレーションを行なうことができる。
【発明を実施するための最良の形態】
【００２４】
図４は、本実施形態のツール装置１０のハードウェア構成を示す。ツール装置１０は、内部装置として、ＣＰＵ１１と、メモリ１２と、ハードディスクドライブ１３と、ＣＯＭポート１４とを備える。それらの内部装置は、バス１５に接続され、バス１５を介して必要なデータを送受する。ＣＰＵ１１は、インストールされたアプリケーションプログラムを実行するプロセッサである。メモリ１２は、ＲＡＭ等の一時記憶手段であり、例えば、ＣＰＵ１１の演算実行の際にワークＲＡＭとして使用される。ハードディスドライブ装置１３は、内蔵ハードディスクに対しアクセスし、データの読み書きを行う。このハードディスクドライブ装置１３並びに内蔵ハードディスクが、記憶装置を構成する。上記のアプリケーションプログラムは、この内蔵ハードディスクに格納される。ＣＯＭポート１４は、外部装置に接続するためのインターフェースであり、この例では、ＲＳ−２３２Ｃなどのシリアルポートである。ツール装置１０は、このＣＯＭポート１４を介してセーフティコントローラに接続する。ツール装置１０は、外部装置として、キーボード１６，ポインティングデバイス１７等の入力装置と、ディスプレイ１８と、ＣＤ−ＲＯＭドライブ装置１９を備えている。
【００２５】
アプリケーションプログラムの１つである設定プログラム（コンフィグレーションソフトウェアとも称される）やシミュレータプログラムは、ＣＤ−ＲＯＭ媒体１９′に格納される。この設定プログラムが格納されたＣＤ−ＲＯＭ媒体１９′が、ユーザに提供される。ユーザは、そのＣＤ−ＲＯＭ媒体１９′をＣＤ−ＲＯＭデバイス装置１９に挿入すると共に、キーボード１６，ポインティングデバイス１７を操作し、設定プログラムやシミュレータプログラムをノート型パーソナルコンピュータにインストールする。インストールされた設定プログラムは、内蔵ハードディスクに格納される。このインストールにより、ノート型パーソナルコンピュータが、ツール装置１０となる。設定プログラムやシミュレータプログラムは、インターネットサイトからのダウンロードによって提供するようにしてもよい。ここで、設定プログラムは、ユーザプログラムを作成・編集したり、作成したユーザプログラムをセーフティコントローラ等にダウンロードしたり、システムを構成するセーフティコントローラやその他の機器並びにネットワークに対するパラメータ等の設定を行なったりするためのものである。
【００２６】
図５は、安全システム設計の手順の流れを示している。Ｓ２，Ｓ３，Ｓ４，Ｓ６の各処理ステップは、設計者が設定プログラム（ツール）やシミュレータソフトウェア（ツール）を使用して行うものである。
【００２７】
まず、設計者は、セーフティシステム（安全システム）を設計する（Ｓ１）。すなわち、設計者は、ネットワークを構成するセーフティコントローラ，機器等を選択したり、それらをどのように配置・配線するかなどについて設計を行なう。
【００２８】
次いで、設定プログラムをインストールして構成される設定ツール装置を用いて、ローカルＩ／Ｏの設定や、ネットワークの設定を行なう（Ｓ２）。すなわち、ユーザは、設定ツール装置を起動する。設定ツール装置は、ユーザからの指示に従いディスプレイ１８に設定対象のネットワークやローカルＩ／Ｏに各種の設定画面を出力する。ユーザは、表示された設定画面中の各パラメータ等を入力することで、それらの設定を行なう。設定画面の一例を示すと、図６は、ネットワーク設定、図７はローカル入力設定、図８はローカル出力設定のための設定画面である。設定ツール装置は、これらの設定画面を用いて、入力された各パラメータと、指定された機器・ネットワークとを関連付けて記憶する。なお、係る設定ツール装置の機能は、例えば特開２００３−２８８４５８号公報等により従来公知であるので、その詳細な説明を省略する。
【００２９】
次に、ユーザは、プログラミングを行なう（Ｓ３）。本実施形態のセーフティコントローラは、プログラマブルコントローラであり、ユーザプログラムはファンクションブロックにより記述されている。ファンクションブロックは、所定の機能を実現するプログラムと、パラメータ情報と、を備えている。パラメータ情報は、そのファンクションブロックがステータス異常か否かを判断するための情報であり、例えば、入力値の取り得る組み合わせや、入力値と出力値の取り得る組み合わせや、異なる入力端子に同じ値が一定時間遅れて入力されるような場合にその遅れ時間（ディレイタイム）等がある。発明が解決しようとする課題の欄で説明したＥＤＭのフィードバック信号の入力は、ファンションブロックの出力が変化してから、出力機器の動作を経てファンクションブロックのＥＤＭ入力端子に入力されることから、一定のディレイタイムが生じる。係るディレイタイムなどがパラメータ情報として設定される。
【００３０】
この処理ステップＳ３で実行されるファンクションブロックを用いたプログラミングは、具体的には図９に示すフローチャートを実行することになる。まず、プログラミングエディタを起動する（Ｓ１１）。具体的には、図１０に示すような設定ツール装置の表示画面に表示されたコンフィグレーションソフトウェアのプログラムタブの画面で［編集］ボタンをクリックすると、それを認識した設定ツール装置はプログラムエディタを起動させる。そして、プログラムエディタが起動すると、図１１に示すようなエディタ画面がディスプレイ１８に出力表示される。このエディタ画面は、右側のウインドウがファンクションブロックや各Ｉ／Ｏを配置したり、結線をしたりしてプログラムを作成する領域となり、左側のウインドウはプログラムの構成要素（ファンクションブロック，Ｉ／Ｏ等）をリスト表示（図示の例では、ツリー状）する領域となる。
【００３１】
次いで、エディタ画面の右側の領域に、プログラムで使用するファンクションブロックを配置する（Ｓ１２）。図１２では、左側のウインドウに表示されたファンクションブロックのリストの中から、“Ｏｕｔｐｕｔ”の“ＥＤＭ”を選択し、右側のウインドウにドラッグアンドペーストにより配置している。
【００３２】
次に、配置したファンクションブロックのパラメータ設定を行なう（Ｓ１３）。例えば、設定対象のファンクションブロックに対して右クリックなど予め設定された処理が実行されたことを認識したプログラムエディタは、図１３に示すようなパラメータ設定画面を重ねて表示する。ここでは、“Ｍａｘ．  ｆｅｅｄｂａｃｋ  Ｔｉｍｅ”として、ＥＤＭフィードバック信号のディレイ時間が設定される。この設定されたディレイ時間経過するまでは、ＥＤＭフィードバック信号に基づく異常判定を行なわない。また、この例では、１０ｍｓｅｃを基準単位としているため、図示のように、“１００”という値を入力すると、ディレイ時間は１０００ｍｓｅｃとなる。このディレイ時間は、実機における遅れ時間を考慮して設定される。
【００３３】
次に、ローカルＩ／ＯまたはリモートＩ／Ｏのタグを配置する（Ｓ１４）。この配置処理は、上述したファンクションブロックの配置と同様に、左側のウインドウに表示されたリストの中から、該当するものをドラッグアンドドロップにより配置する（図１４参照）。
【００３４】
最後に、図１５に示すように、プログラムエディタ上でファンクションブロックとＩ／Ｏタグとを結線する（Ｓ１５）。プログラミング処理を終了するには、作成したファンクションブロックを含んで構成されるプログラムをハードディスク等の記憶手段に保存してプログラムエディタを閉じる。
【００３５】
表示画面に作成されたプログラムを構成するファンクションブロックや、タグは、単なるイメージデータで構成されているのではなく、各デバイス等を示すパーツがそれぞれ仮想アイコンを構成する。そして、その仮想アイコンが選択（クリック等）されると、そのデバイスの設定を行なったり、設定されたデータを読み出したりする処理が実行可能となる。
【００３６】
プログラミング処理が終了すると、ユーザは、作成したプログラムの検証を行なう。すなわち、シミュレータプログラムをインストールして構成されるシミュレータ装置を用いてデバッグを行なう（Ｓ４）。本実施形態では、このシミュレータ装置と設定ツール装置とは、同じパソコンにそれぞれのソフトをインストールして構成したが、別々のパソコンにより実現してももちろん良い。
【００３７】
本実施形態のシミュレータ装置は、ＥＤＭ付のファンクションブロックに対し、仮想的に外部機器のフィードバック信号を入力する機能を備えている。この機能を実行する前処理として、図１６に示すフローチャートを実行し、フィードバックについての出力タグと入力タグとの関連付けを行なう。このフローチャートを実行するための設定画面として、シミュレータ装置は、図１７に示すフィードバック設定画面を用意している。
【００３８】
シミュレータ装置は、関連付けをする入力タグ並びに出力タグの選択を受け付ける（Ｓ８１，Ｓ８２）。具体的には、ユーザが、図１７の設定画面における「入力タグ」と「出力タグ」のそれぞれの入力欄に用意されたプルダウンメニューで表示されたリストの中から、該当するタグを選択する。シミュレータ装置は、その選択されたタグを認識する。プルダウンメニューにリストアップされるタグは、処理ステップＳ３（Ｓ１４）の実行により配置されたタグである。
【００３９】
次いで、ユーザは、図１７の設定画面におけるディレイ時間の入力欄を利用して、フィードバックのディレイ時間を入力するため、シミュレーション装置は、入力されたディレイ時間を、Ｓ８１，Ｓ９２で受け付けた各タグと関連付ける（Ｓ８３）。入力するディレイ時間は、入力欄に直接数値を入力しても良いし、上下の矢印ボタンを押下して数値を昇降させて目的の値にしてもよい。
【００４０】
その後、フィードバックする際の反転の有無の選択を受け付け（Ｓ８４）、確定した内容で登録する（Ｓ８５）。すなわち、ＥＤＭフィードバックの場合、ファンクションブロックの出力タグの値（ＯＮ／ＯＦＦ）と反転した値が、一定時間遅れてＥＤＭ用の入力タグに入力される。そこで、通常、条件の入力欄として、「反転」のチェックボックスにチェックする。なお、この「反転」のチェックボックスのチェックをはずした場合、ファンクションブロックの出力タグの値（ＯＮ／ＯＦＦ）と同値が、一定時間遅れてＥＤＭ用の入力タグに入力されることになる。また、本実施形態では、デフォルトとして「反転」のチェックボックスがチェックされた状態にしている。
【００４１】
処理ステップＳ８５の登録処理は、設定画面に用意された「追加」ボタンを押下することにより行なう。この「追加」ボタンが押下された場合、そのときの各入力欄に表示されている内容でフィードバックの条件が確定され、設定画面の下方に用意された「登録一覧」リストに登録される。これにより、入力タグに出力タグをリンクさせ、ファンクションブロックに対し、仮想的に外部機器のフィードバックを入力することができる。
【００４２】
図１７に示した例では、フィードバックの条件は、ＥＤＭ  フィードバックの入力タグに対し、Ｏｕｔｐｕｔ１の出力タグの反転信号を２００ｍｓ遅れで入力するようになっている。
【００４３】
上記のＳ８１からＳ８５の処理を実行することで、１組のフィードバックの条件が設定される。ユーザは、係る処理を必要な組数分だけ繰り返し実行する（Ｓ８６）。全ての登録が済んだならば（Ｓ８６の分岐判断でＮｏ）、処理ステップＳ８７に移行し、登録された内容に基づいてテーブルを作成する。Ｓ８６の判断は、図１７の設定画面における「ＯＫ」ボタンがクリックされたか否かにより行なう。作成されるテーブルは、図１８に示すように、入力タグと出力タグについては、具体的なアドレスで登録される。タグ名とアドレスとの変換は、別途用意された変換テーブルに従って行なう。この変換テーブルは、プログラムを作成する際に生成される。また、テーブルの先頭の数値は、レコードＮｏである。
【００４４】
前処理として上記のフィードバック条件の設定を行なった後、シミュレータ装置は、図１９に示すフローチャートを実行してシミュレーションを行なう。シミュレータ装置は、イベントを受信するのを待ち（Ｓ２１）、イベントを受信したならばイベントの内容を解析し（Ｓ２２からＳ２６）、イベントに対応した処理（Ｓ３０，Ｓ４０，Ｓ５０，Ｓ６０，Ｓ７０）を実行する。
【００４５】
すなわち、受信したイベントが「開始イベント」の場合、Ｓ２２の判断がＹｅｓとなるので、処理ステップＳ３０に飛び、デバッグ開始処理を実行する。このデバッグ開始処理は、図２０に示すように、表示タイマ，エンジン実行タイマ，フィードバックタイマを順次起動するものである（Ｓ３１，Ｓ３２，Ｓ３３）。
【００４６】
受信したイベントが、「停止イベント」の場合、Ｓ２３の判断がＹｅｓとなるので、処理ステップＳ４０に飛び、デバッグ開始処理を実行する。このデバッグ開始処理は、図２１に示すように、表示タイマ，エンジン実行タイマ，フィードバックタイマを順次停止するものである（Ｓ４１，Ｓ４２，Ｓ４３）。
【００４７】
受信したイベントが「表示タイマイベント」の場合、Ｓ２４の判断がＹｅｓとなるので、処理ステップＳ５０に飛び、表示処理を実行する。この表示処理は、図２２に示すように、シミュレータ装置が仮想ＰＬＣ（ＣＰＵユニット）のＩＯメモリの所定アドレス（各タグのＩＯデータが格納される領域）に格納されている入出力データを呼び出し（Ｓ５１）、その結果を表示する（Ｓ５２）。係る結果の表示は、例えばＯＮとＯＦＦによりタグの色を異ならせたり、表示色の濃度を異ならせたりすることで、ユーザにＯＮ／ＯＦＦの状態を容易に理解させることができる。もちろん、これ以外の表示形態をとることができる。
【００４８】
受信したイベントが「エンジン実行タイマイベント」の場合、Ｓ２５の判断がＹｅｓとなるので、処理ステップＳ６０に飛び、エンジン実行処理を実行する。このエンジン実行処理は、図２３に示すように、シミュレータ装置が仮想ＰＬＣ（ＣＰＵユニット）のＩＯメモリにアクセスし、入力を取り込む（Ｓ６１）。そして、取り込んだ入力（ＯＮ／ＯＦＦ）に基づき、ファンクションブロックで規定される演算を実行し（Ｓ６２）、その演算結果をＩＯメモリの所定アドレス（出力タグに対応するアドレス）に書き込む（Ｓ６３）。
【００４９】
受信したイベントが「フィードバックタイマイベント」の場合、Ｓ２６の判断がＹｅｓとなるので、処理ステップＳ７０に飛び、フィードバック処理を実行する。このフィードバック処理は、図２４に示すように、未処理のフィードバック設定の有無を確認し（Ｓ７１）、未処理のものがあったならばその出力アドレスの値を取り込む（Ｓ７２）。次いで、取り込んだ出力アドレスの値を対応するキューに登録する（Ｓ７３）。このキューは、フィードバック設定された“一組の入力タグと出力タグ”ごとに設定される。図２６（ａ）は、図１８のフィードバック設定テーブルのＮｏ．＝１についてのキューを示し、図２６（ｂ）は、図１８のフィードバック設定テーブルのＮｏ．＝２についてのキューを示している。
【００５０】
次いで、シミュレーション装置は、キューの中から設定時間が経過したものを取り出し（Ｓ７４）、その取り出した値を反転条件に基づいて入力アドレスに書き込む。最新の値がキューに登録されたならば、そのときの最古の値が取り出されるので、結果として、今回キューに登録された値は、所定回分のサンプリング時間経過後、つまり、設定されたディレイ時間経過後に取り出される。例えば図２６（ａ）に示す例では、ディレイ時間が２００ｍｓに設定されているため（図１８参照）、最新の値（ＯＦＦ）がキューに登録されたならば、そのときの最古の値（図の例ではＯＮ）が取り出され、今回登録された値は２００ｍｓ経過後に取り出されることになる。
【００５１】
この例では、フィードバックタイマ４０ｍｓで出力アドレスの値をサンプリングしている。設定されたサンプリング間隔で最新の値をサンプリングし、キューの最後に追加する。そしてキューをさかのぼり、ディレイ時間が経過したものをキューから取り出し、その値を条件にしたがって入力アドレスに書き込む。
【００５２】
また、デバッグを行なうに際して入力の値を変更する場合、入力の値を変更する対象の入力ＩＯタグをポインティングデバイスを操作して右クリックする。すると、シミュレータ装置は、図２５に示すように、メニューリストを表示するので、ユーザは、いずれかを選択して指令を与える。このメニューリストにおいて、「セット」は入力の値をＯＮにすることであり、「リセット」は入力の値をＯＦＦにすることである。
【００５３】
図２７は、「Ｍｏｎｉｔｏｒｅｄ  Ｉｎｐｕｔ」の入力の値をＯＦＦにした場合の各タグの状態を示している。図において、波線で囲んだタグがＯＦＦを示し、実線で囲んだタグがＯＮを示している。このファンクションブロックは、「Ｍｏｎｉｔｏｒｅｄ  Ｉｎｐｕｔ」の入力の値がＯＮになると「Ｏｕｔｐｕｔ１」，「Ｏｕｔｐｕｔ２」の値がＯＮになり、このファンクションブロックは、「Ｍｏｎｉｔｏｒｅｄ  Ｉｎｐｕｔ」の入力の値がＯＦＦになると「Ｏｕｔｐｕｔ１」，「Ｏｕｔｐｕｔ２」の値がＯＦＦになる。そして、「Ｏｕｔｐｕｔ１」と「ＥＤＭ  Ｆｅｅｄｂａｃｋ」とがフィードバック設定により関連付けられるとともに、条件は「反転」としている。
【００５４】
すると、「Ｍｏｎｉｔｏｒｅｄ  Ｉｎｐｕｔ」の入力の値がＯＦＦになるのに伴い演算実行して「Ｏｕｔｐｕｔ１」の値もＯＦＦになる。そして、フィードバック設定されているため、一定のディレイ時間が経過すると、ＥＤＭ  Ｆｅｅｄｂａｃｋ信号は自動的にＯＮになるので、ファンクションブロックはエラーにならない。
【００５５】
同様に、図２８に示すように、「Ｍｏｎｉｔｏｒｅｄ  Ｉｎｐｕｔ」の入力の値がＯＮになると「Ｏｕｔｐｕｔ１」の値もＯＮになる。そして、フィードバック設定されているため、一定のディレイ時間が経過すると、ＥＤＭ  Ｆｅｅｄｂａｃｋ信号は自動的にＯＦＦになるので、ファンクションブロックはエラーにならない。
【００５６】
これに対し、フィードバック設定がされていないと、図２９に示すように、「Ｍｏｎｉｔｏｒｅｄ  Ｉｎｐｕｔ」の入力の値がＯＦＦになって「Ｏｕｔｐｕｔ１」の値もＯＦＦになった場合でも、「ＥＤＭ  Ｆｅｅｄｂａｃｋ」には信号が入力されないのでＯＦＦのままとなる。よって、「Ｏｕｔｐｕｔ１」の値と「ＥＤＭ  Ｆｅｅｄｂａｃｋ」の値とが同値となるので、ファンクションブロックがＥＤＭエラーとなる。
【００５７】
上述したように、シミュレータ装置を用いたデバッグでは、ＥＤＭ付のファンクションブロックに対しても、正しいタイミングでＥＤＭ  フィードバック信号を与えることができるので、係るＥＤＭ付のファンクションブロックを含むプログラムのデバッグを正しく行なえる。このデバッグ処理が終了すると、プログラムが正しく動作したか否かをユーザが判断し（Ｓ５）、動作に不具合があった場合には処理ステップＳ３に戻りプログラムの修正を行なう。そして、プログラムが正しく動作した場合には、設定ツール装置は、検証済みのプログラムを実デバイスにダウンロードする（Ｓ６）。ユーザは、実デバイスで機能テストを行ない（Ｓ７）、機能が正しく動作しているか否かを確認する（Ｓ８）。ここで不具合が見つかった場合には、処理ステップＳ１に戻り、設計の見直し・修正を行なう。機能が正しく動作したならば、処理を終了する。
【図面の簡単な説明】
【００５８】
【図１】全体システムを示す図である。
【図２】ＥＤＭ付のファンクションブロックの一例を示す図である。
【図３】従来の問題点を説明する図である。
【図４】ツール装置のハードウェア構成を示す図である。
【図５】安全システム設計の手順の流れを示す図である。
【図６】ネットワーク設定のための設定画面の一例である。
【図７】ローカル入力設定のための設定画面の一例である。
【図８】ローカル出力設定のための設定画面の一例である。
【図９】処理ステップＳ３で実行されるファンクションブロックを用いたプログラミングの具体的な処理フローを示す図である。
【図１０】設定ツール装置の表示画面の一例である。
【図１１】プログラムエディタにおけるエディタ画面の一例である。
【図１２】プログラムエディタにおけるエディタ画面の一例である。
【図１３】プログラムエディタにおけるエディタ画面の一例である。
【図１４】プログラムエディタにおけるエディタ画面の一例である。
【図１５】プログラムエディタにおけるエディタ画面の一例である。
【図１６】フィードバック条件の設定を行なう設定手段の機能を示すフローチャートである。
【図１７】フィードバック条件の設定画面の一例である。
【図１８】フィードバック条件の設定テーブル（フィードバック条件記憶手段）の一例を示す図である。
【図１９】シミュレータ装置の機能を示すフローチャートである。
【図２０】処理ステップ３０の具体的な処理フローを示すフローチャートである。
【図２１】処理ステップ４０の具体的な処理フローを示すフローチャートである。
【図２２】処理ステップ５０の具体的な処理フローを示すフローチャートである。
【図２３】処理ステップ６０の具体的な処理フローを示すフローチャートである。
【図２４】処理ステップ７０の具体的な処理フローを示すフローチャートである。
【図２５】シミュレーション装置を用いたデバッグ処理の一画面を示す図である。
【図２６】ディレイ時間経過後にフィードバック信号を入力タグに与えるためのキューを示す図である。
【図２７】シミュレーション装置を用いたデバッグ処理の一画面を示す図である。
【図２８】シミュレーション装置を用いたデバッグ処理の一画面を示す図である。
【図２９】シミュレーション装置を用いたデバッグ処理の一画面を示す図である。
【符号の説明】
【００５９】
１０  ツール装置
１１  ＣＰＵ
１２  メモリ
１３  ハードディスクドライブ
１４  ＣＯＭポート
１５  バス
１６  キーボード
１７  ポインティングデバイス
１８  ディスプレイ
１９  ＣＤ−ＲＯＭドライブ装置
【図１】
2008027156.tif 000003
【図２】
2008027156.tif 000004
【図３】
2008027156.tif 000005
【図４】
2008027156.tif 000006
【図５】
2008027156.tif 000007
【図６】
2008027156.tif 000008
【図７】
2008027156.tif 000009
【図８】
2008027156.tif 000010
【図９】
2008027156.tif 000011
【図１０】
2008027156.tif 000012
【図１１】
2008027156.tif 000013
【図１２】
2008027156.tif 000014
【図１３】
2008027156.tif 000015
【図１４】
2008027156.tif 000016
【図１５】
2008027156.tif 000017
【図１６】
2008027156.tif 000018
【図１７】
2008027156.tif 000019
【図１８】
2008027156.tif 000020
【図１９】
2008027156.tif 000021
【図２０】
2008027156.tif 000022
【図２１】
2008027156.tif 000023
【図２２】
2008027156.tif 000024
【図２３】
2008027156.tif 000025
【図２４】
2008027156.tif 000026
【図２５】
2008027156.tif 000027
【図２６】
2008027156.tif 000028
【図２７】
2008027156.tif 000029
【図２８】
2008027156.tif 000030
【図２９】
2008027156.tif 000031