説明

安全関連制御ユニット用アプリケーションプログラムの生成方法および装置

【課題】ユーザプログラムの生成ひいては安全コントローラの製造の柔軟性をさらに向上させて安全コントローラの迅速かつ安価なプログラミングを可能とする。
【解決手段】ユーザプログラムのソースコード(52)を生成するステップであって、前記ソースコード(52)が前記アクチュエータ(24)を制御するための複数の制御命令(160, 162)および診断レポートを生成するための複数の診断命令(164, 166)を含み、前記制御命令(160, 162)の実行中に安全関連プログラム変数がフェイルセーフ的に処理されるステップと、前記ソースコード(52)に基づいてマシンコード(70)を生成するステップと、少なくとも1つのチェックサム(102, 104)を決定するステップであって、前記チェックサム(102, 104)が前記マシンコード(70)の少なくとも一部に対して決定され、前記チェックサム(102, 104)の決定に際して前記診断命令(164, 166)が無視されるステップと、を含む方法。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数のセンサおよび複数のアクチュエータを有する自動化設備を制御するように設計された安全コントローラに用いるユーザプログラムの生成方法および装置に関するものである。
【背景技術】
【0002】
本発明における安全コントローラは、センサからの入力信号を取得し、論理の組み合わせおよび場合によっては他の信号処理ステップまたはデータ処理ステップによって、入力信号から出力信号を生成する装置またはデバイスである。出力信号はアクチュエータに供給可能であり、アクチュエータでは、入力信号に基づいて、制御される設備中で動作または反応を起こすことができる。
【0003】
このような安全コントローラの好適な応用分野としては、機械の安全性の分野における緊急停止押しボタン、両手コントローラ、防護ドア、またはライトグリッドのモニタリングが挙げられる。そういったセンサは、作動中に人間または有形財に対して危険を及ぼす機械の保護等に使用する。防護ドアが開かれたり、または緊急停止押しボタンが操作されたりすると、個別の信号が生成され、入力信号として安全コントローラに供給される。安全コントローラは、これに応答して、アクチュエータ等により危険が生じている機械の部分を停止させる。
【0004】
安全コントローラは、「一般的な」コントローラとは対照的に、内部または接続された装置に異常が発生した場合でも、危険が生じている設備または機械の安全状態を常に確保する点が特徴である。このため、安全コントローラの場合には、それ自体のフェイルセーフ性の観点から極めて高い要求が課せられており、開発および製造が大幅に複雑化してしまう。
【0005】
安全コントローラは通常、使用前に専門職協会またはドイツの

【0006】
等に相当する監督機関からの特別な承認を得る必要がある。この場合、安全コントローラは、たとえば欧州規格EN954−1またはこれに相当するIEC61508もしくはEN ISO13849−1等の規格に規定された所定の安全基準を満たす必要がある。以下では、安全コントローラが少なくとも上述の欧州規格EN954−1の安全カテゴリ3またはIEC61508にかかる安全度水準(SIL)2を満たす装置またはデバイスであるものとする。
【0007】
プログラム可能な安全コントローラであれば、ユーザは、ユーザプログラムと呼ばれるソフトウェアを用いることにより、必要に応じて論理の組み合わせおよび場合によっては別の信号処理ステップまたはデータ処理ステップを個別に定義することができる。この結果、様々な安全コンポーネント間の規定のハードワイヤリングにより論理の組み合わせが生成された初期のソリューションに比べて、柔軟性は大幅に高くなる。たとえば、ユーザプログラムは、市販のパソコン(PC)およびしかるべき設定のソフトウェアプログラムを用いて記述可能である。
【発明の概要】
【発明が解決しようとする課題】
【0008】
前述した通り、安全コントローラは、使用前に監督機関からの特別な承認を得る必要がある。このような承認には、ユーザプログラムの安全に関する範囲の確認が含まれる。ユーザプログラムの安全に関する部分は、安全コントローラによって達成される安全タスクに必要な安全命令により規定される。このような安全命令の処理には、安全関連プログラム変数のフェイルセーフ的な処理が含まれる。確認が行われると、ユーザプログラムの安全に関する部分、とくに、マシンコードの安全に関する部分に対してチェックサムが決定され、安全に関する部分が前記チェックサムにより封印される。監督機関は、検収後にチェックサムを用いて、ユーザプログラムの安全に関する部分の変更を検出可能である。したがって、たとえばユーザプログラムの安全に関する部分についての認められない操作を識別することができる。
【0009】
監督機関による承認後、たとえば制御される設備上で実行するアプリケーションの最適化のため、既存のユーザプログラムの安全に関する範囲に変更を加えた場合は、修正したユーザプログラムについて監督機関の承認を再度得る必要がある。ユーザプログラムの安全に関する範囲には診断命令も含まれるため、このような診断命令に変更を加えただけの場合であっても、新たな承認が必要となる。
【0010】
しかし残念ながら、承認後に診断命令に変更が加えられることは珍しいことではない。たとえば、診断命令の適応を要する知識が得られるのは、設備が試験モードの場合のみである。安全制御命令とは対照的に、診断命令それ自体は安全に関連しないため、承認後に診断命令にだけ変更が加えられた場合であっても監督機関による新たな承認が必要となるのは不利である。この結果、手間が増えて追加費用が発生してしまう。さらには、制御される設備の開発ひいてはユーザプログラムの生成の柔軟性が制限されてしまう。
【0011】
そこで、本発明は、ユーザプログラムの生成ひいては安全コントローラの製造の柔軟性をさらに向上させて安全コントローラの迅速かつ安価なプログラミングを可能とするユーザプログラムの生成方法および装置を提供することを目的とする。
【課題を解決するための手段】
【0012】
本発明の目的は、ユーザプログラムのソースコードを生成するステップであって、前記ソースコードがアクチュエータを制御するための複数の制御命令および診断レポートを生成するための複数の診断命令を含み、前記制御命令の実行中に安全関連プログラム変数がフェイルセーフ的に処理されるステップと、前記ソースコードに基づいてマシンコードを生成するステップと、少なくとも1つのチェックサムを決定するステップであって、前記チェックサムが前記マシンコードの少なくとも一部に対して決定され、前記sチェックサムの決定に際して前記診断命令が無視されるステップと、を含むことを特徴とする冒頭に記載した種類の方法によって達成される。
【0013】
また、本発明の目的は、ユーザプログラムのソースコードを生成するユニットであって、前記ソースコードがアクチュエータを制御するための複数の制御命令および診断レポートを生成するための複数の診断命令を含み、前記制御命令の実行中に安全関連プログラム変数がフェイルセーフ的に処理されるユニットと、前記ソースコードに基づいてマシンコードを生成するユニットと、少なくとも1つのチェックサムを決定するユニットであって、前記チェックサムが前記マシンコードの少なくとも一部に対して決定され、前記チェックサムの決定に際して前記診断命令が無視されるユニットと、を備えたことを特徴とする装置によって達成される。
【0014】
本発明の方法および装置は、チェックサムの決定に際して診断命令を無視するという着想に基づいている。したがって、チェックサムは、安全制御命令に対してのみ決定される。すなわち、診断命令は、監督機関による承認の一部として決定されるチェックサムに対しても無視される。このため、確認用に生成されるチェックサムに何ら影響を及ぼすことなく、承認後に診断命令に変更を加えることができる。また、承認または検収後、承認前からすでに存在していた診断命令に対して追加を行うことができる。あるいは、承認後に初めて、診断命令をユーザプログラムに追加することができる。これにより、ユーザプログラムの生成の柔軟性が向上する。診断命令に変更を加えても一監督機関によるユーザプログラムの新たな承認は不要なため、ユーザプログラムの生成ひいては安全コントローラのプログラミングに要する時間が短くなり、結果として費用も抑えられる。
【0015】
以上のようにして、上述の目的は完遂される。
本発明の一改良形態においては、前記診断命令がマーキングされる。
マーキングされた診断命令は明確に識別可能である。これにより、診断命令は識別され、チェックサムの決定に際して確実に無視される。この改良形態の効果は、本発明にかかる方法および装置が確実に作用することにある。
【0016】
診断マーキングは、ユーザプログラム生成用のコンピュータプログラムによるソースコードの生成中に自動的に行われるのが好ましい。これは、ユーザプログラムのプログラマが自身で診断マーキングを行う必要がないことを意味する。この改良形態によれば、時間と費用とが節減される。さらには、本発明にかかる方法および本発明にかかる装置に対する高い信頼性が保証される。
【0017】
診断命令のマーキングは、前後にそれぞれ診断マーキングを配置して行うのが好ましい。これにより、診断命令は、2つの診断マーカーに埋め込まれるか、または囲まれた状態となる。あるいは、診断命令をマーキングする別の方策も考えられる。たとえば、専用の特殊文字を挿入することによって診断命令ごとにマーキングを行うことが可能である。
本発明の別の改良形態においては、前記マシンコードが第1安全コードおよび第2安全コードを含み、各チェックサムが前記2つの各安全コードに対して決定される。
【0018】
この改良形態によれば、監督機関による承認後に発生する可能性のある変更に関して、とくに高い柔軟性が得られる。たとえば安全コントローラの2つのチャンネルの一方にのみ影響を及ぼす変更が加えられた場合は、前記チャンネルに関するユーザプログラムの部分についてのみ、新たな承認が必要となる。
別の改良形態においては、前記マシンコードが第1安全コードおよび第2安全コードを含み、前記第1安全コードの生成には前記診断命令を考慮し、前記第2安全コードの生成には前記診断命令を無視する。
【0019】
この改良形態には、安全コントローラの2つのチャンネルの一方からは診断命令が完全になくなるという利点がある。したがって、診断命令に変更を加えても、このチャンネルには一切影響しない。このため、既存の診断命令に別の診断命令を追加できる上、このチャンネルに影響を及ぼすことなく診断命令を初めて生成することも可能である。
当然のことながら、上述の特徴および以下に説明する特徴は、本発明の要旨を逸脱しない範囲で、個別に示した組み合わせだけでなく、それ以外の組み合わせまたはそれら自体で使用可能である。
【0020】
本発明の実施形態を図面に示すとともに、以下に詳細に説明する。
【図面の簡単な説明】
【0021】
【図1】制御される設備の模式図である。
【図2】マシンコードの生成およびチェックサムの決定を説明するための模式図である。
【発明を実施するための形態】
【0022】
図1においては、本発明にかかる装置の全体を参照番号10で示している。
装置10は、ディスプレイユニット14を有する従来のコンピュータ12を備えている。このコンピュータ12は、コンピュータプログラム16を実行する。コンピュータプログラム16は、安全コントローラに対するユーザプログラムの書き込みを可能とする。このため、この技術分野では、コンピュータプログラム16をプログラミングツールと称することが多い。コンピュータ12はPCの形式であってもよく、ディスプレイユニット14はモニタの形式であってもよい。
【0023】
図1においては、安全回路の全体を参照番号18で示している。この安全回路は、全体を参照番号22で示した自動化設備を制御するように設計された安全コントローラ20を有する。自動化設備は、複数のアクチュエータ24と複数のセンサ26とを備えている。一例としては、ロボット等の負荷28が設備22に含まれた場合を図示している。
安全コントローラ20は、セーフティクリティカルなプロセスまたはアプリケーションの制御に必要なフェイルセーフ性を確保するため、2チャンネルの冗長設計となっている。図1には、2チャンネル設計の代表例として、2つの個別プロセッサ、すなわち、第1プロセッサ30および第2プロセッサ32を図示している。これら2つのプロセッサ30,32は、相互モニタリングおよびデータ交換が可能なように、双方向通信インターフェース34を介して互いに接続されている。安全コントローラ20の2つのチャンネルおよび2つのプロセッサ30,32は、システマティックエラーを大幅に削減するため、多様な設計、すなわち、互いに異なる設計とするのが好ましい。
【0024】
参照番号36は、2つの各プロセッサ30,32に接続された入出力ユニットを示している。入出力ユニット36は、複数のセンサ26から複数の制御入力信号38を取得し、しかるべきデータフォーマットで2つの各プロセッサ30,32に転送する。さらに、入出力ユニット36は、各プロセッサ30,32に基づいて、複数のアクチュエータ24の駆動に用いられる複数の制御出力信号40を生成する。
【0025】
参照番号42は、ユーザプログラムをマシンコードの形式で記憶させるためのプログラムメモリを示している。マシンコードは、装置10を用いて記述される。また、プログラムメモリ42がチップカードの形式であれば、コンピュータ12に直接接続しなくても、マシンコードひいてはユーザプログラムを簡単に交換可能である。あるいは、プログラムメモリ42は、たとえば、安全コントローラ20に常設のEEPROM等のメモリの形式であってもよい。
【0026】
コンピュータプログラム16は、ディスプレイユニット14上にユーザインターフェース44を提供する。ユーザインターフェース44は、プログラマによるユーザプログラムの記述を可能にする。プログラマは、コンピュータ12に接続された入力ユニットを用いてコンピュータ12に入力を供給することにより、ユーザプログラムを記述する。
入力ユニットは、たとえばキーボードまたはマウスであってもよい。入力の概念は、ユーザプログラムを生成する際に使用するプログラミング言語によって異なる。たとえば、使用するプログラミング言語が構造化テキスト言語または命令リスト言語である場合、ユーザプログラムはテキスト入力によって記述される。これに対して、プログラミング言語として機能ブロック図を用いる場合、プログラマは、ユーザインターフェース44上に図示記号で表示された所定のプログラムモジュールをマウス等により選択して、ユーザプログラムを記述する。
【0027】
コンピュータプログラム16には、ディスプレイモジュール46が含まれる。このディスプレイモジュール46は、プログラマが入力ユニットによって行った入力の取得および評価に使用する。まず初めに、ディスプレイモジュール46は、各入力を表すソースコード部品48を生成する。この部品は、ソースコードメモリ50に記憶される。次に、ディスプレイモジュール46は、ユーザインターフェース44上での図示記号の表示を促す。これらの図示記号は、プログラマによる入力ひいてはディスプレイモジュール46によるソースコード部品48を表す。
【0028】
プログラマがユーザプログラムに必要なすべての入力を終えると、ソースコードメモリ50には、ソースコード52が含まれることになる。このソースコード52には、第1ソースコードコンポーネント54および第2ソースコードコンポーネント56が含まれる。
第1ソースコードコンポーネント54は、安全コントローラ20によって達成される安全タスクに必要な安全命令を表す。この安全命令は、アクチュエータを制御するための第1制御命令58である。第1制御命令58の処理には、安全関連プログラム変数のフェイルセーフ的な処理を伴う。第1制御命令は、安全制御命令と称することもできる。また、安全命令には、診断レポートを生成するための第1診断命令60が含まれる。第1診断命令は、安全診断命令と称することもできる。
【0029】
第2ソースコードコンポーネント56は、安全コントローラ20によって達成される標準タスクに必要な標準命令を表す。この標準命令は、アクチュエータを制御するための第2制御命令62である。第2制御命令62の処理には、フェイルセーフ処理が不要な非安全関連プログラム変数の処理を伴う。第2制御命令は、標準制御命令と称することもできる。また、標準命令には、診断レポートを生成するための第2診断命令64が含まれる。第2診断命令は、標準診断命令と称することもできる。
【0030】
マシンコード70は、2つのコンパイラ66,68により、ソースコードメモリ50に含まれるソースコード52から生成される。マシンコード70は、ゲートウェイ72を介して安全コントローラ20に送信され、プログラムメモリ42に記憶される。このマシンコード70の生成方法は、以下の通りである。
ソースコード52は、第1コンパイラ66に供給される。第1コンパイラ66は、第1マシンコード生成ユニット74と第1チェックサム決定ユニット76とを備えている。第1マシンコード生成ユニット74は、第1マシンコードコンポーネント78の生成に使用する。第1マシンコードコンポーネント78には、第1安全コード80および標準コード82が含まれる。第1安全コード80は、第1ソースコードコンポーネント54に基づいて生成される。この第1安全コード80には、第3制御命令84すなわち安全制御命令および第3診断命令86すなわち安全診断命令が含まれる。したがって、第1安全コード80の生成にあたっては、第1ソースコードコンポーネント54が完全にマシンコードに変換される。すなわち、第1制御命令58および第1診断命令60の両者がマシンコードに変換される。この場合、以下の関係性が有効である。すなわち、ソースコード末尾で利用可能な第1制御命令58は、マシンコード末尾で利用可能な第3制御命令84に対応し、ソースコード末尾で利用可能な第1診断命令60は、マシンコード末尾で利用可能な第3診断命令86に対応する。
【0031】
標準コード82は、第2ソースコードコンポーネント56に基づいて生成される。この標準コード82には、第4制御命令88すなわち標準制御命令および第4診断命令90すなわち標準診断命令が含まれる。したがって、標準コード82の生成にあたっては、第2ソースコードコンポーネント56が完全にマシンコードに変換される。すなわち、第2制御命令62および第2診断命令64の両者がマシンコードに変換される。この場合、以下の関係性が有効である。すなわち、ソースコード末尾で利用可能な第2制御命令62は、マシンコード末尾で利用可能な第4制御命令88に対応し、ソースコード末尾で利用可能な第2診断命令64は、マシンコード末尾で利用可能な第4診断命令90に対応する。
【0032】
また、ソースコード52は、第2コンパイラ68にも供給される。第2コンパイラ68は、第2マシンコード生成ユニット92と第2チェックサム決定ユニット94とを備えている。第2マシンコード生成ユニット92は、第2マシンコードコンポーネント96の生成に使用する。第2マシンコードコンポーネント96には、第2安全コード98が含まれる。第2安全コード98は、第1ソースコードコンポーネント54に基づいて生成され、第2ソースコードコンポーネント56は無視される。この第2安全コード98には、第5制御命令100すなわち安全制御命令のみが含まれ、診断命令は含まれない。したがって、第2安全コード98の生成にあたっては、第1ソースコードコンポーネント54が完全にマシンコードに変換されるわけではない。第1制御命令58だけがマシンコードに変換され、第1診断命令60は無視される。
【0033】
第1チェックサム決定ユニット76は、第1安全コード80の第1チェックサム102の決定に使用する。ただし、第1チェックサム102は、第1安全コード80に含まれる第3制御命令84に対してのみ決定される。この場合、第1安全コード80に含まれる第3診断命令86は無視される。第1チェックサム102は、同様にゲートウェイ72を介して安全コントローラ20に送信され、プログラムメモリ42に記憶される。第2チェックサム決定ユニット94は、第2安全コード98の第2チェックサム104の決定に使用する。第2安全コード98には診断命令が一切含まれないため、第2チェックサム104の決定には、制御命令、とくに第5制御命令100のみを考慮する。第2チェックサム104も同様に、ゲートウェイ72を介して安全コントローラ20に送信され、プログラムメモリ42に記憶される。安全コントローラ20に記憶および保存された2つのチェックサム102,104を用いると、安全コントローラ20が実行するユーザプログラムの安全に関する部分が、一監督機関による承認プロセスにおいて確認され、その際に決定されたチェックサムにより封印された安全に関する部分と同一であるか否かを随時確認することができる。なお、承認に際して決定されたチェックサムについても、安全コントローラ20に記憶させるのが好ましい。
【0034】
2つのマシンコード生成ユニット74,92および2つのチェックサム決定ユニット76,94は、多様な設計とすれば都合が良い。あるいは、2つのチェックサム決定ユニット76,94を同一の設計とすることも考えられる。また、チェックサム決定ユニットを1つだけ設けることも考えられる。そして、このユニットを用いることにより、マシンコード生成ユニット74で生成された第1安全コード80およびマシンコード生成ユニット92で生成された第2安全コード98の両者に対して、それぞれのチェックサムを決定する。
【0035】
全体として、マシンコード70は、第1安全コード80、標準コード82、および第2安全コード98で構成されており、第1安全コード80および標準コード82は第1プロセッサ30と関連付けられている。一方、第2安全コード98は、第2プロセッサ32と関連付けられている。プログラマによって記述されたユーザプログラムの全体は、ソースコード52およびマシンコード70によって表される。
【0036】
第1プロセッサ30は、ユーザプログラムの処理プロセスに基づいて、まず初めに現行第1安全命令106を実行し、次に、現行標準命令108を実行する。また、本質的にはこれと同時に、第2プロセッサ32では、現行第2安全命令110を実行する。現行第1安全命令106は、第3制御命令84に含まれる安全制御命令または第3診断命令86に含まれる安全診断命令であってもよい。現行標準命令108は、第4制御命令88に含まれる標準制御命令または第4診断命令90に含まれる標準診断命令であってもよい。現行第2安全命令110は、第5制御命令100に含まれる安全制御命令である。なお、安全制御命令は、安全関連制御命令とも称する。また、標準制御命令は、非安全関連制御命令とも称する。
【0037】
現行標準命令108が標準制御命令である場合、第1プロセッサ30と入出力ユニット36との間では第1非安全関連データ112が交換される。この場合、第1プロセッサ30にはプログラム入力変数を用いてデータが供給されるが、その瞬時値は、非安全関連センサ116で生成された非安全関連制御入力信号114の値を表している。非安全関連センサ116は、たとえば閉ループ駆動制御に必要な入力変数を取得するセンサである。そのような変数としては、回転速度、角度、または速度等が挙げられる。また、非安全関連センサ116は、フェイルセーフ設計とはなっていない。入出力ユニット36にはプログラム出力変数を用いてデータが供給されるが、その瞬時値は、作動用に非安全関連アクチュエータ120に供給された非安全関連制御出力信号118の値を表している。非安全関連アクチュエータ120は、たとえばモータまたは作動シリンダであってもよい。非安全関連プログラム出力変数の瞬時値は、標準制御命令に応じて、非安全関連プログラム入力変数に基づいて決定される。
【0038】
現行標準命令108が標準診断命令である場合、第1プロセッサ30と入出力ユニット36との間では第2非安全関連データ122が交換される。一例として、第1プロセッサ30には同様に、非安全関連制御入力信号114の瞬時値および/または非安全関連制御出力信号118の瞬時値が供給される。そして、供給された瞬時値に基づいて、制御される設備22のプロセス状態を規定することができる。また、診断ディスプレイユニット124により、しかるべき診断レポートが表示される。
【0039】
現行第1安全命令106が安全制御命令である場合、第1プロセッサ30と入出力ユニット36との間では第1安全関連データ126が交換される。この場合、第1プロセッサ30には安全関連プログラム入力変数を用いてデータが供給されるが、その瞬時値は、安全関連センサ130で生成された安全関連制御入力信号128の値を表している。
安全関連センサ130は、たとえば緊急停止押しボタン、両手コントローラ、防護ドア、速度モニタリング装置、または安全関連パラメータを取得するその他のセンサである。入出力ユニット36には安全関連プログラム出力変数を用いてデータが供給されるが、その瞬時値は、作動用に安全関連アクチュエータ134に供給された安全関連制御出力信号132の値を表している。安全関連アクチュエータ134は、たとえば動作接点が電源136と負荷28との間に接続配置されたいわゆるコンタクタであって、負荷28に対して電源136を遮断する際に使用可能である。
【0040】
しかるべき異常が発生した場合には、遮断によって、少なくとも負荷28を安全な状態に移行させることができる。安全関連プログラム出力変数の瞬時値は、安全制御命令に応じて、安全関連プログラム入力変数に基づいて決定される。
現行第1安全命令106が安全診断命令である場合、第1プロセッサ30と入出力ユニット36との間では第2安全関連データ138が交換される。一例として、第1プロセッサ30には同様に、安全関連制御入力信号128の瞬時値および/または安全関連制御出力信号132の瞬時値が供給される。そして、供給された瞬時値に基づいて、制御される設備22がどのプロセス状態となるかを規定することができる。また、診断ディスプレイユニット134により、しかるべき診断レポートが表示される。
【0041】
現行第2安全命令110は、第1プロセッサ30で実行された現行第1安全命令106と手順が対応する安全制御命令である。この現行第2安全命令110には、第1安全関連データ126に対応する第3安全関連データ140が用いられる。
安全関連制御出力信号132の値は、上述の内容に従って、第1プロセッサ30および第2プロセッサ32の両者により生成されるが、これら2つのプロセッサ30,32で生成された値が制御出力信号132として同時に出力されることを意味するものではない。上述の内容は、処理対象の安全タスクに関して冗長な安全コントローラ20の設計を提供することのみを意図したものである。両プロセッサ30,32は、制御出力信号132の値を決定するように設計されている。安全コントローラ20が正常に動作している間は、第1プロセッサ30等の1つのプロセッサにより決定された値のみが制御出力信号132として出力される。
【0042】
入出力ユニット36は、安全コントローラ20、安全関連センサ130、安全関連アクチュエータ134、および診断ディスプレイユニット124間での試験信号142の交換に用いられる。安全コントローラ20では、試験信号142を用いて、接続されたコンポーネントが正常に動作しているか否かを判定することができる。この判定が必要なのは、安全コントローラ20に接続された装置に異常が発生した場合に、制御される設備22の安全状態を直ちに保証しなければならないためである。
【0043】
図2は、ソースコードに基づいてマシンコードを生成する手順を示している。この図では、第1ソースコードコンポーネント54ひいてはソースコードすなわちユーザプログラムの安全に関する範囲のみを考慮している。
第1ソースコードコンポーネント54には、参照番号160を付した第1安全制御命令FSSA1QCが含まれる。この場合、命名した名称には以下の意味がある。すなわち、FSは「フェイルセーフ(fail-safe)」を表し、この命令が安全関連制御命令であることを示している。SAは一般的に、「制御命令(Control Instruction)」を表す。そして、数字の1を末尾に付け加えることで安全制御命令が識別され、これにより、複数の安全制御命令の中から前記安全制御命令を識別可能となる。QCは、この命令がソースコード末尾の安全制御命令であることを示している。この命名法は、図2において標準として使用している。
【0044】
参照番号162は、第2安全制御命令FSSA2QCを示している。これら2つの安全制御命令FSSA1QC,FSSA2QCは、第1制御命令58に含まれる。また、参照番号164,166はそれぞれ、第1安全診断命令FSDA1QCおよび第2安全診断命令FSDA2QCを示している。この場合、DAは一般的に、「診断命令(Diagnosis Instruction)」を表す。そして、たとえば数字の1を末尾に付け加えることにより、複数の安全診断命令の中から1つの安全診断命令を識別可能となる。
【0045】
前記2つの安全診断命令FSDA1QC,FSDA2QCは、参照番号168を付した第1診断マーキングFSDM1QCおよび参照番号170を付した第2診断マーキングFSDM2QCによって包含、構成、または包囲されている。この場合、DMは一般的に、「診断マーキング(Diagnosis Marking)」を表す。そして、たとえば数字の1を末尾に付け加えることにより、診断マーキングの識別が可能となる。また、2つの診断マーキングFSDM1QC,FSDM2QCを用いることによって、コンパイルプロセス中に、第1ソースコードコンポーネント54に含まれる安全診断命令を識別可能となる。前記2つの安全診断命令FSDA1QC,FSDA2QCおよび2つの診断マーキングFSDM1QC,FSDM2QCはいずれも、第1診断命令60に含まれる。
【0046】
第1ソースコードコンポーネント54は、矢印172で示すように、第1コンパイラ66に供給される。この第1コンパイラ66は、第1チャンネルデータ174の生成に使用する。第1チャンネルデータ174は、第1プロセッサ30を含むチャンネルと関連付けられている。また、第3制御命令84を含む第1安全コード80の生成には、第1マシンコード生成ユニット74を使用する。この第3制御命令84は、参照番号176を付した第3安全制御命令FSSA1MCAおよび参照番号178を付した第4安全制御命令FSSA2MCAである。MCは、これらの命令がマシンコード末尾の安全制御命令であることを示している。文字Aは、これらの安全制御命令が第1プロセッサ30ひいてはチャンネルAに割り当て済みであることを示している。ソースコード末尾の安全制御命令とマシンコード末尾の安全制御命令との間では、以下の関係性が有効である。すなわち、マシンコード末尾の第3安全制御命令FSSA1MCAは、ソースコード末尾の第1安全制御命令FSSA1QCと関連付けられており、マシンコード末尾の第4安全制御命令FSSA2MCAは、ソースコード末尾の第2安全制御命令FSSA2QCと関連付けられている。
【0047】
また、第1安全コード80には、第3診断命令86が含まれる。この第3診断命令86は、参照番号180を付した第3安全診断命令FSDA1MCAおよび参照番号182を付した第4安全診断命令FSDA2MCAである。ソースコード末尾の安全診断命令とマシンコード末尾の安全診断命令との間では、以下の関係性が有効である。すなわち、マシンコード末尾の第3安全診断命令FSDA1MCAは、ソースコード末尾の第1安全診断命令FSDA1QCと関連付けられており、マシンコード末尾の第4安全診断命令FSDA2MCAは、ソースコード末尾の第2安全診断命令FSDA2QCと関連付けられている。
【0048】
参照番号102を付した第1安全コード80の第1チェックサムCRCFSAの決定には、第1チェックサム決定ユニット76を使用する。文字列CRC(Cyclic Redundancy Check:巡回冗長検査)は、このチェックサム決定がCRC法に基づいて行われることを示している。第1チェックサムCRCFSAの生成には、第1安全コード80に含まれる安全制御命令、すなわち2つの安全制御命令FSSA1MCA,FSSA2MCAのみを考慮する。第1安全コード80に含まれる安全診断命令、すなわち2つの安全診断命令FSDA1MCA,FSDA2MCAは無視される。
【0049】
このように、第1チェックサム決定ユニット76は、第1ソースコードコンポーネント54に含まれる安全診断命令が第1チェックサムCRCFSAの決定に際して無視されるように設計されている。この目的のため、第1チェックサム決定ユニット76は、第1ソースコードコンポーネント54に含まれる診断マーキングを識別する。第1チェックサム決定ユニット76は、2つの診断マーキングFSDM1QC,FSDM2QCによって、これら2つの診断マーキング間に配置された安全命令が第1チェックサムCRCFSAの生成に際して無視可能となるようする必要がある。
【0050】
第1ソースコードコンポーネント54は、矢印184で示すように、第2コンパイラ68にも供給される。この第2コンパイラ68は、第2チャンネルデータ186の生成に使用する。第2チャンネルデータ186は、第2プロセッサ32を含むチャンネルを対象としている。また、第2安全コード98の生成には、第2マシンコード生成ユニット92を使用する。第2安全コード98には、第5制御命令100が含まれる。この第5制御命令100は、参照番号188を付した第5安全制御命令FSSA1MCBおよび参照番号190を付した第6安全制御命令FSSA2MCBである。文字Bは、これらの安全制御命令が第2プロセッサ32ひいてはチャンネルBに割り当て済みであることを示している。この場合、ソースコード末尾の安全制御命令とマシンコード末尾の安全制御命令との間では、以下の関係性が有効である。すなわち、マシンコード末尾の第5安全制御命令FSSA1MCBは、ソースコード末尾の第1安全制御命令FSSA1QCと関連付けられており、マシンコード末尾の第6安全制御命令FSSA2MCBは、ソースコード末尾の第2安全制御命令FSSA2QCと関連付けられている。
【0051】
この場合、第2マシンコード生成ユニット92は、第1ソースコードコンポーネント54に含まれる安全診断命令、すなわち2つの安全診断命令FSDA1QC,FSDA2QCが無視されるように設計されている。この目的のため、第2マシンコード生成ユニット92は、第1ソースコードコンポーネントに含まれる診断マーキング、すなわち2つの診断マーキングFSDM1QC,FSDM2QCを識別する。第2マシンコード生成ユニット92は、2つの診断マーキングFSDM1QC,FSDM2QCによって、これら2つの診断マーキング間に配置された安全命令が第1安全コード80の生成に際して無視可能となるようする必要がある。これら2つの診断マーキングは、両者間に安全診断命令として配置された安全命令として識別される。
【0052】
参照番号104を付した第2安全コード98の第2チェックサムCRCFSBの決定には、第2チェックサム決定ユニット94を使用する。第2安全コード98には安全制御命令のみが含まれるため、第2チェックサムCRCFSBの決定には安全診断命令を考慮しない。
第1チェックサムCRCFSAの決定に際しては、マシンコード末尾の2つの安全診断命令FSDA1MCA,FSDA2MCAが無視されるため、ソースコード末尾の2つの安全診断命令FSDA1QC,FSDA2QCも無視される。

【特許請求の範囲】
【請求項1】
複数のセンサ(26)および複数のアクチュエータ(24)を有する自動化設備(22)を制御するように設計された安全コントローラ(20)に用いるユーザプログラムの生成方法において、
ユーザプログラムのソースコード(52)を生成するステップであって、前記ソースコード(52)が前記アクチュエータ(24)を制御するための複数の制御命令(160,162)および診断レポートを生成するための複数の診断命令(164,166)を含み、前記制御命令(160,162)の実行中に安全関連プログラム変数がフェイルセーフ的に処理されるステップと、
前記ソースコード(52)に基づいてマシンコード(70)を生成するステップと、
少なくとも1つのチェックサム(102,104)を決定するステップであって、前記チェックサム(102,104)が前記マシンコード(70)の少なくとも一部に対して決定され、前記チェックサム(102,104)の決定に際して前記診断命令(164,166)が無視されるステップと、
を含むことを特徴とする方法。
【請求項2】
前記診断命令(164,166)がマーキングされることを特徴とする、請求項1に記載の方法。
【請求項3】
前記マシンコード(70)が第1安全コード(80)および第2安全コード(98)を含み、各チェックサム(102,104)が前記2つの各安全コード(80,98)に対して決定されることを特徴とする、請求項1または請求項2に記載の方法。
【請求項4】
前記マシンコード(70)が第1安全コード(80)および第2安全コード(98)を含み、前記第1安全コード(80)の決定には前記診断命令(164,166)を考慮し、前記第2安全コード(98)の決定には前記診断命令(164,166)を無視することを特徴とする、請求項1〜請求項3のいずれか1項に記載の方法。
【請求項5】
複数のセンサ(26)および複数のアクチュエータ(24)を有する自動化設備(22)を制御するように設計された安全コントローラ(20)に用いるユーザプログラムの生成装置において、
ユーザプログラムのソースコード(52)を生成するユニット(12,14,16)であって、前記ソースコード(52)が前記アクチュエータ(24)を制御するための複数の制御命令(160,162)および診断レポートを生成するための複数の診断命令(164,166)を含み、前記制御命令(160,162)の実行中に安全関連プログラム変数がフェイルセーフ的に処理されるユニット(12,14,16)と、
前記ソースコード(52)に基づいてマシンコード(70)を生成するユニット(74,92)と、
少なくとも1つのチェックサム(102,104)を決定するユニット(76,94)であって、前記チェックサム(102,104)が前記マシンコード(70)の少なくとも一部に対して決定され、前記チェックサム(102,104)の決定に際して前記診断命令(164,166)が無視されるユニット(76,94)と、
を備えたことを特徴とする装置。
【請求項6】
コンピュータ(12)上での実行時に請求項1〜請求項4のいずれか1項に記載の方法を実行するプログラムコード手段を有するコンピュータプログラム(16)。

【図1】
image rotate

【図2】
image rotate


【公表番号】特表2012−524352(P2012−524352A)
【公表日】平成24年10月11日(2012.10.11)
【国際特許分類】
【出願番号】特願2012−506391(P2012−506391)
【出願日】平成22年4月20日(2010.4.20)
【国際出願番号】PCT/EP2010/002435
【国際公開番号】WO2010/121795
【国際公開日】平成22年10月28日(2010.10.28)
【出願人】(501493037)ピルツ ゲーエムベーハー アンド コー.カーゲー (49)
【Fターム(参考)】