(57)【特許請求の範囲】
【請求項１】
複数のセンサ（２６）および複数のアクチュエータ（２４）を有する自動化設備（２２）を制御するように設計された安全コントローラ（２０）に用いるユーザプログラムの生成方法において、
ユーザプログラムのソースコード（５２）を生成するステップであって、前記ソースコード（５２）が前記アクチュエータ（２４）を制御するための複数の制御命令（１６０，１６２）および診断レポートを生成するための複数の診断命令（１６４，１６６）を含み、前記制御命令（１６０，１６２）の実行中に安全関連プログラム変数がフェイルセーフ的に処理されるステップと、
前記ソースコード（５２）に基づいてマシンコード（７０）を生成するステップと、
少なくとも１つのチェックサム（１０２，１０４）を決定するステップであって、前記チェックサム（１０２，１０４）が前記マシンコード（７０）の少なくとも一部に対して決定され、前記チェックサム（１０２，１０４）の決定に際して前記診断命令（１６４，１６６）が無視されるステップと、
を含むことを特徴とする方法。
【請求項２】
前記診断命令（１６４，１６６）がマーキングされることを特徴とする、請求項１に記載の方法。
【請求項３】
前記マシンコード（７０）が第１安全コード（８０）および第２安全コード（９８）を含み、各チェックサム（１０２，１０４）が前記２つの各安全コード（８０，９８）に対して決定されることを特徴とする、請求項１または請求項２に記載の方法。
【請求項４】
前記マシンコード（７０）が第１安全コード（８０）および第２安全コード（９８）を含み、前記第１安全コード（８０）の決定には前記診断命令（１６４，１６６）を考慮し、前記第２安全コード（９８）の決定には前記診断命令（１６４，１６６）を無視することを特徴とする、請求項１〜請求項３のいずれか１項に記載の方法。
【請求項５】
複数のセンサ（２６）および複数のアクチュエータ（２４）を有する自動化設備（２２）を制御するように設計された安全コントローラ（２０）に用いるユーザプログラムの生成装置において、
ユーザプログラムのソースコード（５２）を生成するユニット（１２，１４，１６）であって、前記ソースコード（５２）が前記アクチュエータ（２４）を制御するための複数の制御命令（１６０，１６２）および診断レポートを生成するための複数の診断命令（１６４，１６６）を含み、前記制御命令（１６０，１６２）の実行中に安全関連プログラム変数がフェイルセーフ的に処理されるユニット（１２，１４，１６）と、
前記ソースコード（５２）に基づいてマシンコード（７０）を生成するユニット（７４，９２）と、
少なくとも１つのチェックサム（１０２，１０４）を決定するユニット（７６，９４）であって、前記チェックサム（１０２，１０４）が前記マシンコード（７０）の少なくとも一部に対して決定され、前記チェックサム（１０２，１０４）の決定に際して前記診断命令（１６４，１６６）が無視されるユニット（７６，９４）と、
を備えたことを特徴とする装置。
【請求項６】
コンピュータ（１２）上での実行時に請求項１〜請求項４のいずれか１項に記載の方法を実行するプログラムコード手段を有するコンピュータプログラム（１６）。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のセンサおよび複数のアクチュエータを有する自動化設備を制御するように設計された安全コントローラに用いるユーザプログラムの生成方法および装置に関するものである。
【背景技術】
【０００２】
本発明における安全コントローラは、センサからの入力信号を取得し、論理の組み合わせおよび場合によっては他の信号処理ステップまたはデータ処理ステップによって、入力信号から出力信号を生成する装置またはデバイスである。出力信号はアクチュエータに供給可能であり、アクチュエータでは、入力信号に基づいて、制御される設備中で動作または反応を起こすことができる。
【０００３】
このような安全コントローラの好適な応用分野としては、機械の安全性の分野における緊急停止押しボタン、両手コントローラ、防護ドア、またはライトグリッドのモニタリングが挙げられる。そういったセンサは、作動中に人間または有形財に対して危険を及ぼす機械の保護等に使用する。防護ドアが開かれたり、または緊急停止押しボタンが操作されたりすると、個別の信号が生成され、入力信号として安全コントローラに供給される。安全コントローラは、これに応答して、アクチュエータ等により危険が生じている機械の部分を停止させる。
【０００４】
安全コントローラは、「一般的な」コントローラとは対照的に、内部または接続された装置に異常が発生した場合でも、危険が生じている設備または機械の安全状態を常に確保する点が特徴である。このため、安全コントローラの場合には、それ自体のフェイルセーフ性の観点から極めて高い要求が課せられており、開発および製造が大幅に複雑化してしまう。
【０００５】
安全コントローラは通常、使用前に専門職協会またはドイツの
0005436660.tif 000002
【０００６】
等に相当する監督機関からの特別な承認を得る必要がある。この場合、安全コントローラは、たとえば欧州規格ＥＮ９５４−１またはこれに相当するＩＥＣ６１５０８もしくはＥＮ  ＩＳＯ１３８４９−１等の規格に規定された所定の安全基準を満たす必要がある。以下では、安全コントローラが少なくとも上述の欧州規格ＥＮ９５４−１の安全カテゴリ３またはＩＥＣ６１５０８にかかる安全度水準（ＳＩＬ）２を満たす装置またはデバイスであるものとする。
【０００７】
プログラム可能な安全コントローラであれば、ユーザは、ユーザプログラムと呼ばれるソフトウェアを用いることにより、必要に応じて論理の組み合わせおよび場合によっては別の信号処理ステップまたはデータ処理ステップを個別に定義することができる。この結果、様々な安全コンポーネント間の規定のハードワイヤリングにより論理の組み合わせが生成された初期のソリューションに比べて、柔軟性は大幅に高くなる。たとえば、ユーザプログラムは、市販のパソコン（ＰＣ）およびしかるべき設定のソフトウェアプログラムを用いて記述可能である。
【発明の概要】
【発明が解決しようとする課題】
【０００８】
前述した通り、安全コントローラは、使用前に監督機関からの特別な承認を得る必要がある。このような承認には、ユーザプログラムの安全に関する範囲の確認が含まれる。ユーザプログラムの安全に関する部分は、安全コントローラによって達成される安全タスクに必要な安全命令により規定される。このような安全命令の処理には、安全関連プログラム変数のフェイルセーフ的な処理が含まれる。確認が行われると、ユーザプログラムの安全に関する部分、とくに、マシンコードの安全に関する部分に対してチェックサムが決定され、安全に関する部分が前記チェックサムにより封印される。監督機関は、検収後にチェックサムを用いて、ユーザプログラムの安全に関する部分の変更を検出可能である。したがって、たとえばユーザプログラムの安全に関する部分についての認められない操作を識別することができる。
【０００９】
監督機関による承認後、たとえば制御される設備上で実行するアプリケーションの最適化のため、既存のユーザプログラムの安全に関する範囲に変更を加えた場合は、修正したユーザプログラムについて監督機関の承認を再度得る必要がある。ユーザプログラムの安全に関する範囲には診断命令も含まれるため、このような診断命令に変更を加えただけの場合であっても、新たな承認が必要となる。
【００１０】
しかし残念ながら、承認後に診断命令に変更が加えられることは珍しいことではない。たとえば、診断命令の適応を要する知識が得られるのは、設備が試験モードの場合のみである。安全制御命令とは対照的に、診断命令それ自体は安全に関連しないため、承認後に診断命令にだけ変更が加えられた場合であっても監督機関による新たな承認が必要となるのは不利である。この結果、手間が増えて追加費用が発生してしまう。さらには、制御される設備の開発ひいてはユーザプログラムの生成の柔軟性が制限されてしまう。
【００１１】
そこで、本発明は、ユーザプログラムの生成ひいては安全コントローラの製造の柔軟性をさらに向上させて安全コントローラの迅速かつ安価なプログラミングを可能とするユーザプログラムの生成方法および装置を提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明の目的は、ユーザプログラムのソースコードを生成するステップであって、前記ソースコードがアクチュエータを制御するための複数の制御命令および診断レポートを生成するための複数の診断命令を含み、前記制御命令の実行中に安全関連プログラム変数がフェイルセーフ的に処理されるステップと、前記ソースコードに基づいてマシンコードを生成するステップと、少なくとも１つのチェックサムを決定するステップであって、前記チェックサムが前記マシンコードの少なくとも一部に対して決定され、前記ｓチェックサムの決定に際して前記診断命令が無視されるステップと、を含むことを特徴とする冒頭に記載した種類の方法によって達成される。
【００１３】
また、本発明の目的は、ユーザプログラムのソースコードを生成するユニットであって、前記ソースコードがアクチュエータを制御するための複数の制御命令および診断レポートを生成するための複数の診断命令を含み、前記制御命令の実行中に安全関連プログラム変数がフェイルセーフ的に処理されるユニットと、前記ソースコードに基づいてマシンコードを生成するユニットと、少なくとも１つのチェックサムを決定するユニットであって、前記チェックサムが前記マシンコードの少なくとも一部に対して決定され、前記チェックサムの決定に際して前記診断命令が無視されるユニットと、を備えたことを特徴とする装置によって達成される。
【００１４】
本発明の方法および装置は、チェックサムの決定に際して診断命令を無視するという着想に基づいている。したがって、チェックサムは、安全制御命令に対してのみ決定される。すなわち、診断命令は、監督機関による承認の一部として決定されるチェックサムに対しても無視される。このため、確認用に生成されるチェックサムに何ら影響を及ぼすことなく、承認後に診断命令に変更を加えることができる。また、承認または検収後、承認前からすでに存在していた診断命令に対して追加を行うことができる。あるいは、承認後に初めて、診断命令をユーザプログラムに追加することができる。これにより、ユーザプログラムの生成の柔軟性が向上する。診断命令に変更を加えても一監督機関によるユーザプログラムの新たな承認は不要なため、ユーザプログラムの生成ひいては安全コントローラのプログラミングに要する時間が短くなり、結果として費用も抑えられる。
【００１５】
以上のようにして、上述の目的は完遂される。
本発明の一改良形態においては、前記診断命令がマーキングされる。
マーキングされた診断命令は明確に識別可能である。これにより、診断命令は識別され、チェックサムの決定に際して確実に無視される。この改良形態の効果は、本発明にかかる方法および装置が確実に作用することにある。
【００１６】
診断マーキングは、ユーザプログラム生成用のコンピュータプログラムによるソースコードの生成中に自動的に行われるのが好ましい。これは、ユーザプログラムのプログラマが自身で診断マーキングを行う必要がないことを意味する。この改良形態によれば、時間と費用とが節減される。さらには、本発明にかかる方法および本発明にかかる装置に対する高い信頼性が保証される。
【００１７】
診断命令のマーキングは、前後にそれぞれ診断マーキングを配置して行うのが好ましい。これにより、診断命令は、２つの診断マーカーに埋め込まれるか、または囲まれた状態となる。あるいは、診断命令をマーキングする別の方策も考えられる。たとえば、専用の特殊文字を挿入することによって診断命令ごとにマーキングを行うことが可能である。
本発明の別の改良形態においては、前記マシンコードが第１安全コードおよび第２安全コードを含み、各チェックサムが前記２つの各安全コードに対して決定される。
【００１８】
この改良形態によれば、監督機関による承認後に発生する可能性のある変更に関して、とくに高い柔軟性が得られる。たとえば安全コントローラの２つのチャンネルの一方にのみ影響を及ぼす変更が加えられた場合は、前記チャンネルに関するユーザプログラムの部分についてのみ、新たな承認が必要となる。
別の改良形態においては、前記マシンコードが第１安全コードおよび第２安全コードを含み、前記第１安全コードの生成には前記診断命令を考慮し、前記第２安全コードの生成には前記診断命令を無視する。
【００１９】
この改良形態には、安全コントローラの２つのチャンネルの一方からは診断命令が完全になくなるという利点がある。したがって、診断命令に変更を加えても、このチャンネルには一切影響しない。このため、既存の診断命令に別の診断命令を追加できる上、このチャンネルに影響を及ぼすことなく診断命令を初めて生成することも可能である。
当然のことながら、上述の特徴および以下に説明する特徴は、本発明の要旨を逸脱しない範囲で、個別に示した組み合わせだけでなく、それ以外の組み合わせまたはそれら自体で使用可能である。
【００２０】
本発明の実施形態を図面に示すとともに、以下に詳細に説明する。
【図面の簡単な説明】
【００２１】
【図１】制御される設備の模式図である。
【図２】マシンコードの生成およびチェックサムの決定を説明するための模式図である。
【発明を実施するための形態】
【００２２】
図１においては、本発明にかかる装置の全体を参照番号１０で示している。
装置１０は、ディスプレイユニット１４を有する従来のコンピュータ１２を備えている。このコンピュータ１２は、コンピュータプログラム１６を実行する。コンピュータプログラム１６は、安全コントローラに対するユーザプログラムの書き込みを可能とする。このため、この技術分野では、コンピュータプログラム１６をプログラミングツールと称することが多い。コンピュータ１２はＰＣの形式であってもよく、ディスプレイユニット１４はモニタの形式であってもよい。
【００２３】
図１においては、安全回路の全体を参照番号１８で示している。この安全回路は、全体を参照番号２２で示した自動化設備を制御するように設計された安全コントローラ２０を有する。自動化設備は、複数のアクチュエータ２４と複数のセンサ２６とを備えている。一例としては、ロボット等の負荷２８が設備２２に含まれた場合を図示している。
安全コントローラ２０は、セーフティクリティカルなプロセスまたはアプリケーションの制御に必要なフェイルセーフ性を確保するため、２チャンネルの冗長設計となっている。図１には、２チャンネル設計の代表例として、２つの個別プロセッサ、すなわち、第１プロセッサ３０および第２プロセッサ３２を図示している。これら２つのプロセッサ３０，３２は、相互モニタリングおよびデータ交換が可能なように、双方向通信インターフェース３４を介して互いに接続されている。安全コントローラ２０の２つのチャンネルおよび２つのプロセッサ３０，３２は、システマティックエラーを大幅に削減するため、多様な設計、すなわち、互いに異なる設計とするのが好ましい。
【００２４】
参照番号３６は、２つの各プロセッサ３０，３２に接続された入出力ユニットを示している。入出力ユニット３６は、複数のセンサ２６から複数の制御入力信号３８を取得し、しかるべきデータフォーマットで２つの各プロセッサ３０，３２に転送する。さらに、入出力ユニット３６は、各プロセッサ３０，３２に基づいて、複数のアクチュエータ２４の駆動に用いられる複数の制御出力信号４０を生成する。
【００２５】
参照番号４２は、ユーザプログラムをマシンコードの形式で記憶させるためのプログラムメモリを示している。マシンコードは、装置１０を用いて記述される。また、プログラムメモリ４２がチップカードの形式であれば、コンピュータ１２に直接接続しなくても、マシンコードひいてはユーザプログラムを簡単に交換可能である。あるいは、プログラムメモリ４２は、たとえば、安全コントローラ２０に常設のＥＥＰＲＯＭ等のメモリの形式であってもよい。
【００２６】
コンピュータプログラム１６は、ディスプレイユニット１４上にユーザインターフェース４４を提供する。ユーザインターフェース４４は、プログラマによるユーザプログラムの記述を可能にする。プログラマは、コンピュータ１２に接続された入力ユニットを用いてコンピュータ１２に入力を供給することにより、ユーザプログラムを記述する。
入力ユニットは、たとえばキーボードまたはマウスであってもよい。入力の概念は、ユーザプログラムを生成する際に使用するプログラミング言語によって異なる。たとえば、使用するプログラミング言語が構造化テキスト言語または命令リスト言語である場合、ユーザプログラムはテキスト入力によって記述される。これに対して、プログラミング言語として機能ブロック図を用いる場合、プログラマは、ユーザインターフェース４４上に図示記号で表示された所定のプログラムモジュールをマウス等により選択して、ユーザプログラムを記述する。
【００２７】
コンピュータプログラム１６には、ディスプレイモジュール４６が含まれる。このディスプレイモジュール４６は、プログラマが入力ユニットによって行った入力の取得および評価に使用する。まず初めに、ディスプレイモジュール４６は、各入力を表すソースコード部品４８を生成する。この部品は、ソースコードメモリ５０に記憶される。次に、ディスプレイモジュール４６は、ユーザインターフェース４４上での図示記号の表示を促す。これらの図示記号は、プログラマによる入力ひいてはディスプレイモジュール４６によるソースコード部品４８を表す。
【００２８】
プログラマがユーザプログラムに必要なすべての入力を終えると、ソースコードメモリ５０には、ソースコード５２が含まれることになる。このソースコード５２には、第１ソースコードコンポーネント５４および第２ソースコードコンポーネント５６が含まれる。
第１ソースコードコンポーネント５４は、安全コントローラ２０によって達成される安全タスクに必要な安全命令を表す。この安全命令は、アクチュエータを制御するための第１制御命令５８である。第１制御命令５８の処理には、安全関連プログラム変数のフェイルセーフ的な処理を伴う。第１制御命令は、安全制御命令と称することもできる。また、安全命令には、診断レポートを生成するための第１診断命令６０が含まれる。第１診断命令は、安全診断命令と称することもできる。
【００２９】
第２ソースコードコンポーネント５６は、安全コントローラ２０によって達成される標準タスクに必要な標準命令を表す。この標準命令は、アクチュエータを制御するための第２制御命令６２である。第２制御命令６２の処理には、フェイルセーフ処理が不要な非安全関連プログラム変数の処理を伴う。第２制御命令は、標準制御命令と称することもできる。また、標準命令には、診断レポートを生成するための第２診断命令６４が含まれる。第２診断命令は、標準診断命令と称することもできる。
【００３０】
マシンコード７０は、２つのコンパイラ６６，６８により、ソースコードメモリ５０に含まれるソースコード５２から生成される。マシンコード７０は、ゲートウェイ７２を介して安全コントローラ２０に送信され、プログラムメモリ４２に記憶される。このマシンコード７０の生成方法は、以下の通りである。
ソースコード５２は、第１コンパイラ６６に供給される。第１コンパイラ６６は、第１マシンコード生成ユニット７４と第１チェックサム決定ユニット７６とを備えている。第１マシンコード生成ユニット７４は、第１マシンコードコンポーネント７８の生成に使用する。第１マシンコードコンポーネント７８には、第１安全コード８０および標準コード８２が含まれる。第１安全コード８０は、第１ソースコードコンポーネント５４に基づいて生成される。この第１安全コード８０には、第３制御命令８４すなわち安全制御命令および第３診断命令８６すなわち安全診断命令が含まれる。したがって、第１安全コード８０の生成にあたっては、第１ソースコードコンポーネント５４が完全にマシンコードに変換される。すなわち、第１制御命令５８および第１診断命令６０の両者がマシンコードに変換される。この場合、以下の関係性が有効である。すなわち、ソースコード末尾で利用可能な第１制御命令５８は、マシンコード末尾で利用可能な第３制御命令８４に対応し、ソースコード末尾で利用可能な第１診断命令６０は、マシンコード末尾で利用可能な第３診断命令８６に対応する。
【００３１】
標準コード８２は、第２ソースコードコンポーネント５６に基づいて生成される。この標準コード８２には、第４制御命令８８すなわち標準制御命令および第４診断命令９０すなわち標準診断命令が含まれる。したがって、標準コード８２の生成にあたっては、第２ソースコードコンポーネント５６が完全にマシンコードに変換される。すなわち、第２制御命令６２および第２診断命令６４の両者がマシンコードに変換される。この場合、以下の関係性が有効である。すなわち、ソースコード末尾で利用可能な第２制御命令６２は、マシンコード末尾で利用可能な第４制御命令８８に対応し、ソースコード末尾で利用可能な第２診断命令６４は、マシンコード末尾で利用可能な第４診断命令９０に対応する。
【００３２】
また、ソースコード５２は、第２コンパイラ６８にも供給される。第２コンパイラ６８は、第２マシンコード生成ユニット９２と第２チェックサム決定ユニット９４とを備えている。第２マシンコード生成ユニット９２は、第２マシンコードコンポーネント９６の生成に使用する。第２マシンコードコンポーネント９６には、第２安全コード９８が含まれる。第２安全コード９８は、第１ソースコードコンポーネント５４に基づいて生成され、第２ソースコードコンポーネント５６は無視される。この第２安全コード９８には、第５制御命令１００すなわち安全制御命令のみが含まれ、診断命令は含まれない。したがって、第２安全コード９８の生成にあたっては、第１ソースコードコンポーネント５４が完全にマシンコードに変換されるわけではない。第１制御命令５８だけがマシンコードに変換され、第１診断命令６０は無視される。
【００３３】
第１チェックサム決定ユニット７６は、第１安全コード８０の第１チェックサム１０２の決定に使用する。ただし、第１チェックサム１０２は、第１安全コード８０に含まれる第３制御命令８４に対してのみ決定される。この場合、第１安全コード８０に含まれる第３診断命令８６は無視される。第１チェックサム１０２は、同様にゲートウェイ７２を介して安全コントローラ２０に送信され、プログラムメモリ４２に記憶される。第２チェックサム決定ユニット９４は、第２安全コード９８の第２チェックサム１０４の決定に使用する。第２安全コード９８には診断命令が一切含まれないため、第２チェックサム１０４の決定には、制御命令、とくに第５制御命令１００のみを考慮する。第２チェックサム１０４も同様に、ゲートウェイ７２を介して安全コントローラ２０に送信され、プログラムメモリ４２に記憶される。安全コントローラ２０に記憶および保存された２つのチェックサム１０２，１０４を用いると、安全コントローラ２０が実行するユーザプログラムの安全に関する部分が、一監督機関による承認プロセスにおいて確認され、その際に決定されたチェックサムにより封印された安全に関する部分と同一であるか否かを随時確認することができる。なお、承認に際して決定されたチェックサムについても、安全コントローラ２０に記憶させるのが好ましい。
【００３４】
２つのマシンコード生成ユニット７４，９２および２つのチェックサム決定ユニット７６，９４は、多様な設計とすれば都合が良い。あるいは、２つのチェックサム決定ユニット７６，９４を同一の設計とすることも考えられる。また、チェックサム決定ユニットを１つだけ設けることも考えられる。そして、このユニットを用いることにより、マシンコード生成ユニット７４で生成された第１安全コード８０およびマシンコード生成ユニット９２で生成された第２安全コード９８の両者に対して、それぞれのチェックサムを決定する。
【００３５】
全体として、マシンコード７０は、第１安全コード８０、標準コード８２、および第２安全コード９８で構成されており、第１安全コード８０および標準コード８２は第１プロセッサ３０と関連付けられている。一方、第２安全コード９８は、第２プロセッサ３２と関連付けられている。プログラマによって記述されたユーザプログラムの全体は、ソースコード５２およびマシンコード７０によって表される。
【００３６】
第１プロセッサ３０は、ユーザプログラムの処理プロセスに基づいて、まず初めに現行第１安全命令１０６を実行し、次に、現行標準命令１０８を実行する。また、本質的にはこれと同時に、第２プロセッサ３２では、現行第２安全命令１１０を実行する。現行第１安全命令１０６は、第３制御命令８４に含まれる安全制御命令または第３診断命令８６に含まれる安全診断命令であってもよい。現行標準命令１０８は、第４制御命令８８に含まれる標準制御命令または第４診断命令９０に含まれる標準診断命令であってもよい。現行第２安全命令１１０は、第５制御命令１００に含まれる安全制御命令である。なお、安全制御命令は、安全関連制御命令とも称する。また、標準制御命令は、非安全関連制御命令とも称する。
【００３７】
現行標準命令１０８が標準制御命令である場合、第１プロセッサ３０と入出力ユニット３６との間では第１非安全関連データ１１２が交換される。この場合、第１プロセッサ３０にはプログラム入力変数を用いてデータが供給されるが、その瞬時値は、非安全関連センサ１１６で生成された非安全関連制御入力信号１１４の値を表している。非安全関連センサ１１６は、たとえば閉ループ駆動制御に必要な入力変数を取得するセンサである。そのような変数としては、回転速度、角度、または速度等が挙げられる。また、非安全関連センサ１１６は、フェイルセーフ設計とはなっていない。入出力ユニット３６にはプログラム出力変数を用いてデータが供給されるが、その瞬時値は、作動用に非安全関連アクチュエータ１２０に供給された非安全関連制御出力信号１１８の値を表している。非安全関連アクチュエータ１２０は、たとえばモータまたは作動シリンダであってもよい。非安全関連プログラム出力変数の瞬時値は、標準制御命令に応じて、非安全関連プログラム入力変数に基づいて決定される。
【００３８】
現行標準命令１０８が標準診断命令である場合、第１プロセッサ３０と入出力ユニット３６との間では第２非安全関連データ１２２が交換される。一例として、第１プロセッサ３０には同様に、非安全関連制御入力信号１１４の瞬時値および／または非安全関連制御出力信号１１８の瞬時値が供給される。そして、供給された瞬時値に基づいて、制御される設備２２のプロセス状態を規定することができる。また、診断ディスプレイユニット１２４により、しかるべき診断レポートが表示される。
【００３９】
現行第１安全命令１０６が安全制御命令である場合、第１プロセッサ３０と入出力ユニット３６との間では第１安全関連データ１２６が交換される。この場合、第１プロセッサ３０には安全関連プログラム入力変数を用いてデータが供給されるが、その瞬時値は、安全関連センサ１３０で生成された安全関連制御入力信号１２８の値を表している。
安全関連センサ１３０は、たとえば緊急停止押しボタン、両手コントローラ、防護ドア、速度モニタリング装置、または安全関連パラメータを取得するその他のセンサである。入出力ユニット３６には安全関連プログラム出力変数を用いてデータが供給されるが、その瞬時値は、作動用に安全関連アクチュエータ１３４に供給された安全関連制御出力信号１３２の値を表している。安全関連アクチュエータ１３４は、たとえば動作接点が電源１３６と負荷２８との間に接続配置されたいわゆるコンタクタであって、負荷２８に対して電源１３６を遮断する際に使用可能である。
【００４０】
しかるべき異常が発生した場合には、遮断によって、少なくとも負荷２８を安全な状態に移行させることができる。安全関連プログラム出力変数の瞬時値は、安全制御命令に応じて、安全関連プログラム入力変数に基づいて決定される。
現行第１安全命令１０６が安全診断命令である場合、第１プロセッサ３０と入出力ユニット３６との間では第２安全関連データ１３８が交換される。一例として、第１プロセッサ３０には同様に、安全関連制御入力信号１２８の瞬時値および／または安全関連制御出力信号１３２の瞬時値が供給される。そして、供給された瞬時値に基づいて、制御される設備２２がどのプロセス状態となるかを規定することができる。また、診断ディスプレイユニット１３４により、しかるべき診断レポートが表示される。
【００４１】
現行第２安全命令１１０は、第１プロセッサ３０で実行された現行第１安全命令１０６と手順が対応する安全制御命令である。この現行第２安全命令１１０には、第１安全関連データ１２６に対応する第３安全関連データ１４０が用いられる。
安全関連制御出力信号１３２の値は、上述の内容に従って、第１プロセッサ３０および第２プロセッサ３２の両者により生成されるが、これら２つのプロセッサ３０，３２で生成された値が制御出力信号１３２として同時に出力されることを意味するものではない。上述の内容は、処理対象の安全タスクに関して冗長な安全コントローラ２０の設計を提供することのみを意図したものである。両プロセッサ３０，３２は、制御出力信号１３２の値を決定するように設計されている。安全コントローラ２０が正常に動作している間は、第１プロセッサ３０等の１つのプロセッサにより決定された値のみが制御出力信号１３２として出力される。
【００４２】
入出力ユニット３６は、安全コントローラ２０、安全関連センサ１３０、安全関連アクチュエータ１３４、および診断ディスプレイユニット１２４間での試験信号１４２の交換に用いられる。安全コントローラ２０では、試験信号１４２を用いて、接続されたコンポーネントが正常に動作しているか否かを判定することができる。この判定が必要なのは、安全コントローラ２０に接続された装置に異常が発生した場合に、制御される設備２２の安全状態を直ちに保証しなければならないためである。
【００４３】
図２は、ソースコードに基づいてマシンコードを生成する手順を示している。この図では、第１ソースコードコンポーネント５４ひいてはソースコードすなわちユーザプログラムの安全に関する範囲のみを考慮している。
第１ソースコードコンポーネント５４には、参照番号１６０を付した第１安全制御命令ＦＳＳＡ１ＱＣが含まれる。この場合、命名した名称には以下の意味がある。すなわち、ＦＳは「フェイルセーフ(fail-safe)」を表し、この命令が安全関連制御命令であることを示している。ＳＡは一般的に、「制御命令(Control Instruction)」を表す。そして、数字の１を末尾に付け加えることで安全制御命令が識別され、これにより、複数の安全制御命令の中から前記安全制御命令を識別可能となる。ＱＣは、この命令がソースコード末尾の安全制御命令であることを示している。この命名法は、図２において標準として使用している。
【００４４】
参照番号１６２は、第２安全制御命令ＦＳＳＡ２ＱＣを示している。これら２つの安全制御命令ＦＳＳＡ１ＱＣ，ＦＳＳＡ２ＱＣは、第１制御命令５８に含まれる。また、参照番号１６４，１６６はそれぞれ、第１安全診断命令ＦＳＤＡ１ＱＣおよび第２安全診断命令ＦＳＤＡ２ＱＣを示している。この場合、ＤＡは一般的に、「診断命令（Diagnosis Instruction）」を表す。そして、たとえば数字の１を末尾に付け加えることにより、複数の安全診断命令の中から１つの安全診断命令を識別可能となる。
【００４５】
前記２つの安全診断命令ＦＳＤＡ１ＱＣ，ＦＳＤＡ２ＱＣは、参照番号１６８を付した第１診断マーキングＦＳＤＭ１ＱＣおよび参照番号１７０を付した第２診断マーキングＦＳＤＭ２ＱＣによって包含、構成、または包囲されている。この場合、ＤＭは一般的に、「診断マーキング（Diagnosis Marking）」を表す。そして、たとえば数字の１を末尾に付け加えることにより、診断マーキングの識別が可能となる。また、２つの診断マーキングＦＳＤＭ１ＱＣ，ＦＳＤＭ２ＱＣを用いることによって、コンパイルプロセス中に、第１ソースコードコンポーネント５４に含まれる安全診断命令を識別可能となる。前記２つの安全診断命令ＦＳＤＡ１ＱＣ，ＦＳＤＡ２ＱＣおよび２つの診断マーキングＦＳＤＭ１ＱＣ，ＦＳＤＭ２ＱＣはいずれも、第１診断命令６０に含まれる。
【００４６】
第１ソースコードコンポーネント５４は、矢印１７２で示すように、第１コンパイラ６６に供給される。この第１コンパイラ６６は、第１チャンネルデータ１７４の生成に使用する。第１チャンネルデータ１７４は、第１プロセッサ３０を含むチャンネルと関連付けられている。また、第３制御命令８４を含む第１安全コード８０の生成には、第１マシンコード生成ユニット７４を使用する。この第３制御命令８４は、参照番号１７６を付した第３安全制御命令ＦＳＳＡ１ＭＣＡおよび参照番号１７８を付した第４安全制御命令ＦＳＳＡ２ＭＣＡである。ＭＣは、これらの命令がマシンコード末尾の安全制御命令であることを示している。文字Ａは、これらの安全制御命令が第１プロセッサ３０ひいてはチャンネルＡに割り当て済みであることを示している。ソースコード末尾の安全制御命令とマシンコード末尾の安全制御命令との間では、以下の関係性が有効である。すなわち、マシンコード末尾の第３安全制御命令ＦＳＳＡ１ＭＣＡは、ソースコード末尾の第１安全制御命令ＦＳＳＡ１ＱＣと関連付けられており、マシンコード末尾の第４安全制御命令ＦＳＳＡ２ＭＣＡは、ソースコード末尾の第２安全制御命令ＦＳＳＡ２ＱＣと関連付けられている。
【００４７】
また、第１安全コード８０には、第３診断命令８６が含まれる。この第３診断命令８６は、参照番号１８０を付した第３安全診断命令ＦＳＤＡ１ＭＣＡおよび参照番号１８２を付した第４安全診断命令ＦＳＤＡ２ＭＣＡである。ソースコード末尾の安全診断命令とマシンコード末尾の安全診断命令との間では、以下の関係性が有効である。すなわち、マシンコード末尾の第３安全診断命令ＦＳＤＡ１ＭＣＡは、ソースコード末尾の第１安全診断命令ＦＳＤＡ１ＱＣと関連付けられており、マシンコード末尾の第４安全診断命令ＦＳＤＡ２ＭＣＡは、ソースコード末尾の第２安全診断命令ＦＳＤＡ２ＱＣと関連付けられている。
【００４８】
参照番号１０２を付した第１安全コード８０の第１チェックサムＣＲＣＦＳＡの決定には、第１チェックサム決定ユニット７６を使用する。文字列ＣＲＣ（Cyclic Redundancy Check：巡回冗長検査）は、このチェックサム決定がＣＲＣ法に基づいて行われることを示している。第１チェックサムＣＲＣＦＳＡの生成には、第１安全コード８０に含まれる安全制御命令、すなわち２つの安全制御命令ＦＳＳＡ１ＭＣＡ，ＦＳＳＡ２ＭＣＡのみを考慮する。第１安全コード８０に含まれる安全診断命令、すなわち２つの安全診断命令ＦＳＤＡ１ＭＣＡ，ＦＳＤＡ２ＭＣＡは無視される。
【００４９】
このように、第１チェックサム決定ユニット７６は、第１ソースコードコンポーネント５４に含まれる安全診断命令が第１チェックサムＣＲＣＦＳＡの決定に際して無視されるように設計されている。この目的のため、第１チェックサム決定ユニット７６は、第１ソースコードコンポーネント５４に含まれる診断マーキングを識別する。第１チェックサム決定ユニット７６は、２つの診断マーキングＦＳＤＭ１ＱＣ，ＦＳＤＭ２ＱＣによって、これら２つの診断マーキング間に配置された安全命令が第１チェックサムＣＲＣＦＳＡの生成に際して無視可能となるようする必要がある。
【００５０】
第１ソースコードコンポーネント５４は、矢印１８４で示すように、第２コンパイラ６８にも供給される。この第２コンパイラ６８は、第２チャンネルデータ１８６の生成に使用する。第２チャンネルデータ１８６は、第２プロセッサ３２を含むチャンネルを対象としている。また、第２安全コード９８の生成には、第２マシンコード生成ユニット９２を使用する。第２安全コード９８には、第５制御命令１００が含まれる。この第５制御命令１００は、参照番号１８８を付した第５安全制御命令ＦＳＳＡ１ＭＣＢおよび参照番号１９０を付した第６安全制御命令ＦＳＳＡ２ＭＣＢである。文字Ｂは、これらの安全制御命令が第２プロセッサ３２ひいてはチャンネルＢに割り当て済みであることを示している。この場合、ソースコード末尾の安全制御命令とマシンコード末尾の安全制御命令との間では、以下の関係性が有効である。すなわち、マシンコード末尾の第５安全制御命令ＦＳＳＡ１ＭＣＢは、ソースコード末尾の第１安全制御命令ＦＳＳＡ１ＱＣと関連付けられており、マシンコード末尾の第６安全制御命令ＦＳＳＡ２ＭＣＢは、ソースコード末尾の第２安全制御命令ＦＳＳＡ２ＱＣと関連付けられている。
【００５１】
この場合、第２マシンコード生成ユニット９２は、第１ソースコードコンポーネント５４に含まれる安全診断命令、すなわち２つの安全診断命令ＦＳＤＡ１ＱＣ，ＦＳＤＡ２ＱＣが無視されるように設計されている。この目的のため、第２マシンコード生成ユニット９２は、第１ソースコードコンポーネントに含まれる診断マーキング、すなわち２つの診断マーキングＦＳＤＭ１ＱＣ，ＦＳＤＭ２ＱＣを識別する。第２マシンコード生成ユニット９２は、２つの診断マーキングＦＳＤＭ１ＱＣ，ＦＳＤＭ２ＱＣによって、これら２つの診断マーキング間に配置された安全命令が第１安全コード８０の生成に際して無視可能となるようする必要がある。これら２つの診断マーキングは、両者間に安全診断命令として配置された安全命令として識別される。
【００５２】
参照番号１０４を付した第２安全コード９８の第２チェックサムＣＲＣＦＳＢの決定には、第２チェックサム決定ユニット９４を使用する。第２安全コード９８には安全制御命令のみが含まれるため、第２チェックサムＣＲＣＦＳＢの決定には安全診断命令を考慮しない。
第１チェックサムＣＲＣＦＳＡの決定に際しては、マシンコード末尾の２つの安全診断命令ＦＳＤＡ１ＭＣＡ，ＦＳＤＡ２ＭＣＡが無視されるため、ソースコード末尾の２つの安全診断命令ＦＳＤＡ１ＱＣ，ＦＳＤＡ２ＱＣも無視される。
【図１】
0005436660.tif 000003
【図２】
0005436660.tif 000004