(57)【特許請求の範囲】
【請求項１】
複数のセンサ（26）および複数のアクチュエータ（24）を有する自動化された設備（22）を制御するよう設計された安全コントローラ（20）用のユーザプログラムを作成するための方法であって、
前記ユーザプログラムは、安全関連のプログラム変数がフェールセーフな仕方で処理される第1プログラム部分（74）と、安全関連でないプログラム変数が処理される少なくとも1つの第2プログラム部分（78）とを備え、前記第2プログラム部分（78）においてフェールセーフな処理は必ずしも、前記第2プログラム部分（78）内の安全関連でないプログラム変数に必要とされず、当該方法は、
複数の安全関連のプログラム変数（46）を規定するステップと、
複数の安全関連でないプログラム変数（48）を規定するステップと、
前記複数の安全関連のプログラム変数（46）から安全関連のプログラム変数（50）を選択するステップと、
前記複数の安全関連でないプログラム変数（48）から安全関連でないプログラム変数(52)を選択するステップであって、前記安全関連でないプログラム変数(52)は、前記ユーザプログラムが実行されたときに、瞬時値を繰り返し割り当てられるステップと、
前記ユーザプログラムが実行されたときに処理される少なくとも1つの割り当て条件（54）を規定するステップと、
前記選択された安全関連でないプログラム変数(52)を前記選択された安全関連のプログラム変数（50）に関連付ける関連付け（56）を規定するステップであって、前記ユーザプログラムが実行されたときに、前記選択された安全関連でないプログラム変数(52)の瞬時値が、前記割り当て条件（54）に応じて、前記選択された安全関連のプログラム変数（50）に割り当てられるステップとを含む、方法。
【請求項２】
前記割り当て条件（54）が、安全関連のプログラム変数のために必要な信頼性要求を、前記選択された安全関連でないプログラム変数(52)が満たしているかを判断するために使用されるテストを表す、請求項1に記載の方法。
【請求項３】
信憑性テストが前記割り当て条件（54）として規定され、前記信憑性テストは、前記選択された安全関連でないプログラム変数(52)と選択されたさらなるプログラム変数とが互いに一致しているかを確認するために使用される、請求項1または2に記載の方法。
【請求項４】
信憑性テストが前記割り当て条件（54）として規定され、前記信憑性テストは、前記選択された安全関連でないプログラム変数(52)が比較基準を満たしているかを確認するために使用され、前記比較基準は、前記選択された安全関連でないプログラム変数(52)の特有の性質を表す、請求項1〜3のいずれか1項に記載の方法。
【請求項５】
前記ユーザプログラムが複数の変換命令を備え、前記変換命令は前記関連付け（56）および前記割り当て条件（54）を表し、少なくともいくつかの前記割り当て条件（54）が前記第1プログラム部分（74）に含まれる、請求項1〜4のいずれか1項に記載の方法。
【請求項６】
前記関連付け（56）を表す第1コードコンポーネント（200）および前記割り当て条件（54）を表す第2コードコンポーネント（202）が組み合わされて、プログラムモジュール（76、220）を形成している、請求項1〜5のいずれか1項に記載の方法。
【請求項７】
前記ユーザプログラムが、コンピュータ（12）上で作動するコンピュータプログラム（16）を使用して作成され、前記コンピュータプログラム（16）はディスプレイモジュール（60）を備え、前記ディスプレイモジュール（60）は、ユーザプログラムソースコード（62）を表す複数のグラフィカルソースコードシンボル（196）により、前記ユーザプログラムの作成中に、前記ソースコードが、前記コンピュータ（12）に接続されたディスプレイユニット（14）に表示されるようにし、前記グラフィカルソースコードシンボル（196）は提示の基本的な形態で実施され、前記複数のグラフィカルソースコードシンボル（196）は、前記ソースコード（62）に含まれた変換コードを表す、複数のグラフィカル変換コードシンボル（198）を備え、前記変換コードは、前記関連付け（56）を表す第1コードコンポーネント（200）と、前記割り当て条件（54）を表す第2コードコンポーネント（202）とを備え、前記コンピュータプログラム（16）は、前記2つのコードコンポーネント（200、202）の少なくとも一方を識別するために使用される識別モジュールをも備え、識別されたコードコンポーネントの存在により、前記ディスプレイモジュール（60）が、前記提示の基本的な形態と比較して修正された提示の形態で、前記複数のグラフィカル変換コードシンボル（198）に含まれた少なくとも1つのグラフィカル変換コードシンボルを提示する、請求項1〜6のいずれか1項に記載の方法。
【請求項８】
前記識別モジュール（68）が、前記第1コードコンポーネント（200）を識別するために使用される、請求項7に記載の方法。
【請求項９】
前記ユーザプログラムが、コンピュータ（12）上で作動するコンピュータプログラム（16）を使用して作成され、前記ユーザプログラムは、複数の所定のプログラムモジュールから複数のプログラムモジュールを選択することにより作成され、前記コンピュータプログラム（16）は、前記コンピュータ（12）に接続されたディスプレイユニット（14）に複数のグラフィカルプログラムモジュールシンボル（212）を表示するディスプレイモジュール（60）を備え、前記複数のグラフィカルプログラムモジュールシンボル（212）は、前記所定のプログラムモジュールを表す第1の複数のグラフィカルプログラムモジュールシンボル（214）と、前記複数の選択されたプログラムモジュールを表す第2の複数のグラフィカルプログラムモジュールシンボル（216）とを備え、少なくとも前記第1の複数のグラフィカルプログラムモジュールシンボル（214）は提示の基本的な形態で実施され、前記複数の所定のプログラムモジュールは、前記ユーザプログラムの前記作成中に記述され前記関連付け（56）および前記割り当て条件（54）を表すプログラムモジュール（220）を備え、前記記述されたプログラムモジュール（220）は、少なくとも1つの修正されたグラフィカルプログラムモジュールシンボル（222）によって表され、前記ディスプレイモジュール（60）は、前記提示の基本的な形態と比較して修正された提示の形態で、前記修正されたグラフィカルプログラムモジュールシンボル（222）を表示する、請求項1〜8のいずれか1項に記載の方法。
【請求項１０】
前記ユーザプログラムの実行に、複製された安全関連でないプログラム変数が、前記選択された安全関連でないプログラム変数(52)から生成されることが含まれる、請求項1〜9のいずれか1項に記載の方法。
【請求項１１】
前記割り当て条件（54）が、前記選択された安全関連でないプログラム変数(52)および前記複製された安全関連でないプログラム変数の両方のために処理される、請求項10に記載の方法。
【請求項１２】
前記選択された安全関連でないプログラム変数(52)がプログラム入力変数であり、前記プログラム入力変数に割り当てられた前記瞬時値が、非フェールセーフ設計のセンサ（104）を使用して生成されたセンサ信号（102）の値を表している、請求項1〜11のいずれか1項に記載の方法。
【請求項１３】
複数のセンサ（26）および複数のアクチュエータ（24）を有する自動化された設備（22）を制御するよう設計された安全コントローラ（20）用のユーザプログラムを作成するための機器であって、前記ユーザプログラムは、安全関連のプログラム変数がフェールセーフな仕方で処理される第1プログラム部分（74）と、安全関連でないプログラム変数が処理される少なくとも1つの第2プログラム部分（78）とを備え、前記第2プログラム部分（78）においてフェールセーフな処理は必ずしも、前記第2プログラム部分（78）内の安全関連でないプログラム変数に必要とされず、
複数の安全関連のプログラム変数（46）を規定するため、および、前記複数の安全関連のプログラム変数（46）から安全関連のプログラム変数（50）を選択するためのユニット（12、14、16）と、
複数の安全関連でないプログラム変数（48）を規定するため、および、前記複数の安全関連でないプログラム変数（48）から安全関連でないプログラム変数(52)を選択するためのユニットであって、前記安全関連でないプログラム変数(52)は、前記ユーザプログラムの実行中に、繰り返し瞬時値を割り当てられるユニットと、
前記ユーザプログラムの前記実行中に処理される、少なくとも1つの割り当て条件（54）を規定するユニットと、
前記選択された安全関連でないプログラム変数(52)を、前記選択された安全関連のプログラム変数（50）と関連付ける関連付け（56）を規定するためのユニットであって、前記選択された安全関連でないプログラム変数(52)の前記瞬時値は、前記ユーザプログラムが実行されたときに、前記割り当て条件（54）に基づいて、前記選択された安全関連のプログラム変数（50）に割り当てられるユニットとを備える、機器。
【請求項１４】
コンピュータ（12）上で実行されたときに、請求項1〜12のいずれか1項に記載の方法を行うためのプログラムコード手段を有する、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のセンサおよび複数のアクチュエータを有する自動化された設備を制御するよう設計された安全コントローラ用のユーザプログラムを作成するための方法および機器に関するものである。ユーザプログラムは、安全関連のプログラム変数がフェールセーフな仕方で処理される第1プログラム部分を備え、安全関連でないプログラム変数が処理される少なくとも1つの第2プログラム部分を備え、フェールセーフな処理は必ずしも、第2プログラム部分内の安全関連でないプログラム変数には必要とされない、方法および機器に関する。
【背景技術】
【０００２】
本発明に関する安全コントローラは、センサにより提供された入力信号を入力して、論理結合により、および、場合によってさらなる信号またはデータ処理工程により、そこから出力信号を生成する装置または機器である。次いで、出力信号をアクチュエータに供給することができる。アクチュエータは、入力信号に応じて、制御された設備中で、作用または反応を生じさせる。
【０００３】
このような安全コントローラに関する好ましい適用分野は、機械の安全の分野における、緊急時オフ押しボタン、両手用のコントローラ、保護ドアまたは光グリッドの監視である。このようなセンサは、例えば、作動中に人間および物品に危害を加える機械を防護するために使用される。保護ドアが開いたとき、または、緊急時オフ押しボタンが操作されたときに、それぞれの信号が生成され、入力信号として安全コントローラに供給される。これに応答して、安全コントローラはアクチュエータを使用して、例えば、危害を加える機械の一部を停止する。
【０００４】
「標準的な」コントローラに対し、安全コントローラの特徴は、安全コントローラに、または、それに接続された装置に不具合が生じた場合でも、危害を加える設備または機械について、安全な状態を常に保証することにある。ゆえに、安全コントローラに対し、それ自体のフェールセーフ性について、きわめて高い要求がなされている。その結果、開発および製造が高度に複雑になっている。
【０００５】
通常、安全コントローラは、使用される前に、専門の団体（すなわち、ドイツではTUVと呼ばれるもの）など、適切な監督機関からの特定の承認が必要である。安全コントローラは、例として、ヨーロッパ規格EN 954-1、または、規格IEC 61508もしくは規格EN ISO 13849-1などの類似の規格などに記載されている、所定の安全規格に適っていなければならない。ゆえに、以下では、安全コントローラは、ヨーロッパ規格EN 954-1の安全カテゴリー3に、または、上記規格IEC 61508の安全度水準（SIL）2に少なくとも適合する装置または機器を意味すると理解されたい。
【０００６】
プログラム可能な安全コントローラにより、1個のソフトウェア（すなわちユーザプログラム）を使用して、ユーザの必要に従って個別に、論理結合、および、場合によってさらなる信号またはデータ処理工程を規定する機会が、ユーザに提供される。その結果、さまざまな安全チップの間の規定の配線により論理結合を生成していたこれまでの解決手段と比較して、多大の柔軟性が得られる。例として、市販のパーソナルコンピュータ（PC）および適切にセットアップされたソフトウェアプログラムを使用して、ユーザプログラムを記述することができる。
【０００７】
先行技術に基づく設備の場合、安全作業を行うための安全コントローラおよび標準作業を行うための標準コントローラという、2つのプログラム可能なコントローラが通常使用されている。まれには、すべての標準作業および安全作業を行うために、ジョイントコントローラが使用される場合もある。両方の実施態様において、安全作業は、安全関連のプログラム変数のフェールセーフ処理により達成される。この目的のために、安全センサ（フェールセーフ設計のセンサ）が安全関連の変数を捕捉し、それらを、安全関連の制御入力信号により、安全コントローラまたはジョイントコントローラへと供給する。コントローラは、安全関連の制御出力信号用の値を決定するために、安全関連のプログラム変数を使用する。これらの制御出力信号は、安全アクチュエータ（フェールセーフ設計のアクチュエータ）を起動して、安全関連の動作を行うために使用される。
【０００８】
標準作業は、安全関連でないプログラム変数を処理することにより達成される。安全関連でないプログラム変数は、フェールセーフな処理を必要としない。この目的のために、標準センサが安全関連でない変数（処理関連の変数と呼ばれる場合もある）を捕捉する。安全関連でない制御入力信号が、これらの変数を標準コントローラまたはジョイントコントローラへと供給するのに使用される。コントローラは、安全関連でないプログラム変数を使用して、安全関連でない制御出力信号用の値を決定する。これらの制御出力信号は、標準アクチュエータを起動するために使用され、標準アクチュエータは次いで安全関連でない動作を行う。
【発明の概要】
【発明が解決しようとする課題】
【０００９】
両方の実施態様において、安全作業の達成のために、フェールセーフ設計であるゆえに高価なセンサを使用しなければならない。現在まで、フェールセーフ設計でないゆえに安価な標準センサを使用することも、安全関連でないプログラム変数の値を使用することもできなかった。
すべての標準作業および安全作業を達成するために、プログラム可能な安全コントローラを使用することおよびジョイントコントローラを使用することは両方とも、ユーザプログラムを作成する際、およびそれゆえに安全コントローラを実施する際に、柔軟性を高めるのに役立つ。しかし、これらは、経費（すなわち、ユーザプログラムを作成するための経費、および、安全コントローラを実施するために必要な部品の経費）の点で、いまだに最適ではない。
【００１０】
本発明の目的は、冒頭に述べた種類の方法および機器を提供する場合に、安全関連の機能を有するユーザプログラムを作成するための経費を削減することができ、それゆえに、安全コントローラを実施するための経費を削減することができ、柔軟性を高めて、安全コントローラの、より簡単で、より速く、かつ、より明快なプログラミングを可能にすることができる方法および機器を提供することである。
【課題を解決するための手段】
【００１１】
この目的は、以下のステップを含む冒頭で言及したタイプの方法により達成される。複数の安全関連のプログラム変数を規定するステップと、複数の安全関連でないプログラム変数を規定するステップと、複数の安全関連のプログラム変数から安全関連のプログラム変数を選択するステップと、複数の安全関連でないプログラム変数から安全関連でないプログラム変数を選択するステップであって（選択されたものを以下「第１の安全関連でないプログラム変数」という）、第１の安全関連でないプログラム変数は、ユーザプログラムが実行されたときに、瞬時値を繰り返し割り当てられるステップと、ユーザプログラムが実行されたときに処理される少なくとも1つの割り当て条件を規定するステップと、選択された第１の安全関連でないプログラム変数を選択された安全関連のプログラム変数に関連付ける関連付けを規定するステップであって、ユーザプログラムが実行されたときに、選択された第１の安全関連でないプログラム変数の瞬時値が、割り当て条件に応じて、選択された安全関連のプログラム変数に割り当てられるステップ。
【００１２】
この目的は、以下のユニットを含む冒頭で言及したタイプの機器によっても達成される。複数の安全関連のプログラム変数を規定するため、および、複数の安全関連のプログラム変数から安全関連のプログラム変数を選択するためのユニットと、複数の安全関連でないプログラム変数を規定するため、および、複数の安全関連でないプログラム変数から第1の安全関連でないプログラム変数を選択するためのユニットであって、第1の安全関連でないプログラム変数は、ユーザプログラムの実行中に、繰り返し瞬時値を割り当てられるユニットと、ユーザプログラムの実行中に処理される、少なくとも1つの割り当て条件を規定するユニットと、選択された第1の安全関連でないプログラム変数を、選択された安全関連のプログラム変数と関連付ける関連付けを規定するためのユニットであって、選択された第1の安全関連でないプログラム変数の瞬時値は、ユーザプログラムが実行されたときに、割り当て条件に基づいて、選択された安全関連のプログラム変数に割り当てられるユニット。
【００１３】
本発明の方法および本発明の機器は、ユーザプログラムが実行されたときに、割り当て条件に基づき、選択された第1の安全関連でないプログラム変数の瞬時値を、選択された安全関連のプログラム変数に割り当てるという考案に基づいており、より一般的に言えば、安全関連でないプログラム変数を安全関連のプログラム変数に変換するという考案に基づいている。これにより、ユーザプログラムを記述する際の柔軟性が高まる。安全作業を達成するという目的のために、安全関連のプログラム変数、および、それにより表された安全関連の信号が利用可能なだけでなく、安全関連でないプログラム変数、および、それにより表された安全関連でない信号も利用可能である。ゆえに、プログラミング個別安全作業を実施するための選択肢の数が増加する。
【００１４】
プログラミングの柔軟性の向上は、ユーザプログラムの作成者が、必要な割り当て条件を自由に規定できるようにすることによっても達成される。ゆえに、安全関連でないプログラム変数、および、それにより表された物理的な信号を、変換のために使用することができる。
選択された第1の安全関連でないプログラム変数の瞬時値を、選択された安全関連のプログラム変数に割り当てることで、安全関連のプログラム変数の瞬時値を提供する目的のための、フェールセーフ設計のセンサの数を減らすことができる。ゆえに、安全関連のプログラム変数により表される物理的な信号を、非フェールセーフ設計のセンサを使用して捕捉することもできる。これにより、経費を削減することができる。
【００１５】
安全関連でないプログラム変数を安全関連のプログラム変数に変換することは本質的に、割り当て条件および関連付けを規定することしか必要としない。これにより、安全コントローラの明瞭で、簡潔で、それゆえにすばやいプログラミングが可能となり、これは、フェールセーフ性を向上させるのにも役立つ。
ゆえに、上記目的が完全に達成される。
【００１６】
本発明の改良形態では、割り当て条件は、安全関連のプログラム変数のために必要な信頼性要求を、選択された第1の安全関連でないプログラム変数が満たしているかを判断するために使用されるテストを表わしている。
この改良形態により、安全関連でないプログラム変数から安全関連のプログラム変数への瞬時値の移動にもかかわらず、安全コントローラのフェールセーフな作動が保証される。ゆえに、安全作業を達成するために、安全関連のプログラム変数およびそれにより表される物理的な変数に加えて、安全関連でないプログラム変数およびそれにより表される変数を使用することもできる。さらに、フェールセーフ性を向上するために、割り当て条件が満たされたときにのみ、選択された第1の安全関連でないプログラム変数の値が、選択された安全関連のプログラム変数に割り当てられる。
【００１７】
技術的なシステムに鑑みて、信頼性とは、規定の確率限界および期間内での承認されたサービスの連続的で正確な提供に関する信用性を意味すると理解される。ゆえに、信頼性は、不具合の可能性が少ないこと、正確性確率が大きいこと、または、故障もしくは不具合の比率が低いことに基づいて証明されていると思われる信用の程度である。
安全関連のプログラム変数のために必要な信頼性要求は主に、上記変数の瞬時値についての正確性確率を規定する。例として、信頼性要求は、安全関連のプログラム変数の瞬時値が、無視できるほど低い不一致を有するすべてのイベントで、物理的な信号用の実際に使用可能な値と一致することを指示してもよい。通常、この信頼性要求は、フェールセーフ設計のセンサを使用して満たされる。ゆえに、物理的な変数の捕捉中にエラーを識別すること、および、必要な正確性確率を観測することが可能になる。必要な信頼性要求が満たされているかどうかは、有利なことに、選択された第1の安全関連でないプログラム変数の瞬時値を評価することにより判断される。
【００１８】
本発明のさらなる改良形態では、規定された割り当て条件が、選択された第1の安全関連でないプログラム変数と選択されたさらなるプログラム変数とが互いに一致しているかを確認するために使用される信憑性テストである。
この改良形態により、高水準の柔軟性が得られる。これは、さらなるプログラム変数の自由な選択により、信憑性テストを規定するための複数の選択肢が提供されるためである。くわえて、信憑性テストは、2つのプログラム変数を使用して、それほど複雑でなく実施することができる。
【００１９】
2つのプログラム変数が互いに一致しているかを判断するための確認は、2つのプログラム変数が互いに調和しているかを確証するために使用される。すなわち、2つのプログラム変数が適合するかが確証される。この確認は、以下の仮定に基づいている。選択された第1の安全関連でないプログラム変数および選択されたさらなるプログラム変数の両方が、同一の物理的な信号（例えば、速度信号または距離信号）を表しているのが理想である。しかし、この確認は、2つのプログラム変数が、異なる物理的な信号であるが物理的な法則によって関連付けられているものである場合についても行うことができる。しかし、この場合、2つのプログラム変数の一方が、その瞬時値が物理法則を考慮して変換されることを要求する。
【００２０】
有利なことに、確認は、2つのプログラム変数の瞬時値を評価することにより行われる。
瞬時値の評価には、2つのプログラム変数の瞬時値が、規定の基準を満たしているかを判断するための確認が含まれる。原則として、多くの基準がこの目的に適っている。第1に、このような瞬時値に向けられた基準を使用することができる。この場合、確認は、このような瞬時値が一致した応答を示すかを判断するために行われる。例として、2つの瞬時値が作る相違が規定の閾値よりも小さいか、または、2つの瞬時値が作る商が1周辺の規定の範囲内であるかを確認することができる。第2に、瞬時値のタイミング応答に向けられた基準を使用することができる。ゆえに、確認は、瞬時値が一致したタイミング応答を示すかを判断するために行われる。この場合、時間微分は、2つのプログラム変数に関して、有利なことにはおおよそ異なる商の形で、確かめられてもよい。この基準の場合でも、上述したように、適切なやり方で商の相違を評価することができる。タイミング応答に向けられた基準の使用には、2つのプログラム変数の間の不一致を、瞬時値自体に重大な不一致が認められるようになるはるか前の、非常に早い時点で判断することができるという利点がある。有利なことに、相違または商を作るために使用された2つのプログラム変数の瞬時値は、小さな時間間隔の前または中の特定の時点で、それぞれ対になっている。
【００２１】
有利なことに、複数の基準が互いに組み合わされている。これにより、非常に信頼できる信憑性テストを作成することができ、これは高水準のフェールセーフ性につながる。
選択されたさらなるプログラム変数は、安全関連でないプログラム変数であるのが好ましい。この場合、安全関連のプログラム変数を、安全関連でないプログラム変数を使用するだけで作ることができ、これは非常に高水準の柔軟性につながる。
【００２２】
上述した方策のさらなる改良形態では、選択された第1の安全関連でないプログラム変数および選択されたさらなるプログラム変数の両方が、プログラム入力変数であり、選択された第1の安全関連でないプログラム変数が、第1のセンサを使用して判断された第1センサ信号の値を表す瞬時値に割り当てられ、選択されたさらなる安全関連でないプログラム変数が、第2のセンサを使用して判断された第2センサ信号の値を表す瞬時値に割り当てられている。ゆえに、安全関連でないプログラム変数を安全関連のプログラム変数に変換するために非フェールセーフ設計の2つのセンサを使用することは簡単である。
【００２３】
上述した方策のさらなる改良形態では、2つのセンサが有利なことに多様性設計とされている。ゆえに、2つのセンサは、異なる測定原理を使用しているにもかかわらず、同一の物理的な信号を捕捉するために使用される。例として、一方のセンサを電圧に基づき使用し、かつ、他方のセンサを電流に基づき使用して、物理的な信号を捕捉することができる。この測定により、非常に高水準のフェールセーフ性が保証される。
【００２４】
2つのセンサの適切な選択または組み合わせによっても、温度ドリフトなどの外的な影響を補正することができる。
あるいは、使用される選択されたさらなるプログラム変数は、安全関連のプログラム変数であってもよく、これは、柔軟性をさらに高めるのに役立つ。
本発明のさらなる改良形態では、規定された割り当て条件が、選択された第1の安全関連でないプログラム変数が比較基準を満たしているかを確認するために使用される信憑性テストであり、比較基準は、選択された第1の安全関連でないプログラム変数の特有の特性を表している。
【００２５】
この改良形態には、選択された第1の安全関連でないプログラム変数のみを使用して、信頼性要求が満たされているかを判断することができるという利点がある。さらなるプログラム変数は必要でない。この改良形態により、高水準の柔軟性および簡単な実施が可能になる。選択された第1の安全関連でないプログラム変数がプログラム入力変数である場合には、それゆえに、安全関連でないプログラム変数を安全関連のプログラム変数に変換するためのさらなるセンサが必要でない。これにより、非常に安価な変換が可能になる。
【００２６】
全体として、さまざまな比較基準が考えられる。第1に、瞬時値自体に向けられた比較基準を使用することが可能である。例として、これは、選択された第1の安全関連でないプログラム変数の瞬時値を含むことが期待される範囲である。この範囲は、通常期待される最大値および通常期待される最小値により指示することができる。第2に、瞬時値のタイミング応答に向けられた比較基準を使用することが可能である。例として、瞬時値について判断された時間勾配を含むことが期待される範囲である。対応する手続きを、瞬時値を減少させるために使用することができる。
【００２７】
より有利なことに、比較基準は、複数の単独のテストから編集（コンパイル）される。これにより、例として、比較基準は、瞬時値自体についてのガイドラインおよび瞬時値のタイミング応答についてのガイドラインの両方を含んでいてもよい。ゆえに、瞬時値が、第1値水準から始まって、規定の期間内に第2の値水準を取ったか、および、この期間後に利用可能な瞬時値が規定の範囲内にあるかを確認することができる。対応する筋書きも、瞬時値を減少させるために可能である。瞬時値をまず増加させ次いで減少させるために比較基準を規定することも可能である。
【００２８】
本発明のさらなる改良形態では、ユーザプログラムは複数の変換命令を備え、変換命令は関連付けおよび割り当て条件を表し、少なくともいくつかの割り当て条件が第1プログラム部分に含まれている。
ゆえに、変換命令は、安全関連のプログラム変数がフェールセーフなやり方で処理されるプログラム部分であって、安全アクチュエータを起動させるための安全コントロール命令を含むプログラム部分に含まれている。ゆえに、フェールセーフ性は、安全関連でないプログラム変数が安全関連のプログラム変数に変換されるときにも達成される。これは、変換により生じた安全関連のプログラム変数がフェールセーフであり、他方、安全関連でないプログラム変数は非フェールセーフであり続けることを意味している。有利なことに、すべての変換命令は、第1プログラム部分に含まれている。
【００２９】
本発明のさらなる改良形態では、関連付けを表す第1コードコンポーネントおよび割り当て条件を表す第2コードコンポーネントが組み合わされて、プログラムモジュールを形成している。
この改良形態は、ユーザプログラム用のソースコードに関連している。したがって、2つのコードコンポーネントは組み合わされてソースコード内でブロックを形成している。ゆえに、ソースコードは、変換命令が組み合わされる専用の変換点を含んでいる。関連付けおよび割り当て条件の両方はフェールセーフ性に関連しており、それゆえに、管理権者により行われることになる承認手続きの一部としても確認される。ソースコード内でのブロック形成により、承認手続きが簡略化される。プログラムモジュールは、第1プログラム部分に含まれているのが好ましい。
【００３０】
専用の変換点により、ユーザプログラムの記述者が、あまり複雑でなく、安全関連でないプログラム変数が安全関連のプログラム変数を生成するためにどこで使用されているか、または、どの安全関連のプログラム変数が安全関連でないプログラム変数に起因する可能性があるかについての外観を得ることができる。ユーザプログラムが複数の変換を含んでいる場合、すなわち、複数の安全関連でないプログラム変数がそれぞれ、安全関連のプログラム変数に変換されている場合、ユーザプログラムは、複数の独立したプログラムモジュールを含んでいる。各変換について、専用の変換点が存在する。
【００３１】
さらなる利点は、プログラムモジュールを形成するための組み合わせによりカプセル化が可能になることである。カプセル化により、プログラムモジュールが、適切な呼び出しを使用することにより、関数として、望むだけ再利用できるようになる。
2つのコードコンポーネントを組み合わせてプログラムモジュールを形成することは、有利なことに、ユーザプログラムを記述するのに使用されるコンピュータプログラムにより、自動で行われる。
【００３２】
本発明のさらなる改良形態では、ユーザプログラムが、コンピュータ上で作動するコンピュータプログラムを使用して作成され、コンピュータプログラムはディスプレイモジュールを備え、ディスプレイモジュールは、ユーザプログラムソースコードを表す複数のグラフィカルソースコードシンボルにより、ユーザプログラムの作成中に、ソースコードが、コンピュータに接続されたディスプレイユニットに表示されるようにし、グラフィカルソースコードシンボルは提示の基本的な形態で実施され、複数のグラフィカルソースコードシンボルは、ソースコードに含まれた変換コードを表す、複数のグラフィカル変換コードシンボルを備え、変換コードは、関連付けを表す第1コードコンポーネントと、割り当て条件を表す第2コードコンポーネントとを備え、コンピュータプログラムは、2つのコードコンポーネントの少なくとも一方を識別するために使用される識別モジュールをも備え、識別されたコードコンポーネントの存在により、ディスプレイモジュールが、提示の基本的な形態と比較して修正された提示の形態で、複数のグラフィカル変換コードシンボルに含まれた少なくとも1つのグラフィカル変換コードシンボルを提示する。
【００３３】
修正されたグラフィカル変換シンボルの提示により、ユーザプログラムの提示におけるマーキングが促進される。ゆえに、ユーザプログラムの記述者は、困難なしに、ユーザプログラム中で、変換コード（すなわち専用の変換点）を表す範囲を特定することができる。ゆえに、安全関連でないプログラム変数を安全関連のプログラム変数に変換することから生じる、ユーザプログラムのこれらの範囲を、容易に識別することができる。ゆえに、記述者は、これらに、必要な臨界チェックを受けさせることができ、これは、認可手続きにとっても有利である。
【００３４】
修正されたグラフィカル変換シンボルの提示およびそれゆえにユーザプログラムの提示中でのマーキングは、ユーザプログラムを記述するのに使用されるコンピュータプログラムにより、自動で行われる。ユーザプログラムの記述者は、ユーザプログラムを記述するのに通常必要な行動以上の、追加の行動をとる必要がない。
有利なことに、第1コードコンポーネントを表すグラフィカル変換シンボルは、提示の修正された形態で提示される。くわえて、第2コードコンポーネントを表すグラフィカル変換シンボルを、提示の修正された形態で提示することも可能である。
【００３５】
複数のグラフィカルシンボルを使用してユーザプログラム用のソースコードを提示するために、複数の改良形態が考えられる。第1改良形態では、テキスト入力によりユーザプログラムが記述される。ゆえに、ユーザプログラムは、例えば、構造化テキストの形態であってもよい。この場合、グラフィカルソースコードシンボルは、個々の文字、数字およびことによると特別な記号に対応する。この改良形態では、修正された形態の第1コードコンポーネントを表す少なくともいくつかの文字を示すことが考えられる。例として、これは、提示の基本的な形態と比較して変更された色で提示された文字により行うことができる。あるいは、または、くわえて、これらの文字は、提示の基本的な形態と比較して変更されたテキスト様式（例えば、イタリックまたはボールド）で提示することもできる。これらの文字を例えばインデントさせること、または、第1文字を含む行の前に適切な記号を置くことも考えられる。例として、アスタリスク、または、「以下は安全関連の変換コードです！」などの特別なテキストを前に置くことができる。さらなる行を挿入することにより、記号が前に置かれる。くわえて、適切な記号を、最後の文字を含む行のあとに挿入することもできる。
【００３６】
好ましい改良形態では、識別モジュールが、第1コードコンポーネントを識別するために使用される。
第1コードコンポーネントの識別およびこのコードコンポーネントの関連するマーキングには、変換に含まれる選択された第1の安全関連でないプログラム変数および選択された安全関連のプログラム変数をユーザプログラムの提示の際にすばやく確かめられるという利点がある。ゆえに、ユーザプログラムの記述者は、包括的な情報を得ることができる。記述者は、どのプログラム変数が変換の基礎であるか、および、どのプログラム変数が変換により生成されたかを直ちに識別することができる。
【００３７】
有利なことに、安全関連でないプログラム変数が、まとまりのあるコードコンポーネント中で読まれるという事実から、第1コードコンポーネントは識別され、この文脈で読まれる瞬時値が、安全関連のプログラム変数に割り当てられる。
第1コードコンポーネントの識別の結果、変換に含まれるプログラム変数がそれ自体で知られることになる。これにより、ユーザプログラムの記述者のための、より包括的な支援を目的として、ユーザプログラムの追加の範囲をマークすることができる。割り当て条件を表すテキストをマークできることも好ましい。これにより、ユーザプログラムの提示中での、より一層目立つマーキングが促進される。
【００３８】
とくに有利な改良形態では、両方のコードコンポーネントが識別される。この場合、両方のコードコンポーネントが提示の基本的な形態と比較して修正された提示の形態で存在するとき、少なくとも1つのグラフィカル変換コードシンボルが提示される。くわえて、すべての変換コードシンボルを、提示の修正された形態で提示することもできる。
ユーザプログラムの作成、および、その結果としての、ユーザプログラムの提示に関し、さらなる改良形態が考えられる。この場合、ユーザプログラムは、機能ブロック図として知られる形態のグラフィカルシンボルを使用して記述される。この改良形態では、例えば長方形などの、異なる種類のグラフィカルシンボルが使用され、それらは、選択された機能ブロック、文字およびワイルドカードシンボルを表す。この改良形態では、使用可能な、およびそれゆえに選択可能なプログラムモジュールがデータベースに保存されている。これらのプログラムモジュールそれぞれについて、小さなワイルドカードシンボルがシンボルバーに作成される。このようなワイルドカードシンボルが、ドラッグアンドドロップ機能を使用して選択され、この目的のためにグラフィカルインターフェース中に設けられた領域にドロップされると、グラフィカルインターフェース上の対応する点が、選択されたプログラムモジュールを表す機能ブロックを提示する。ユーザプログラムが記述されている間に、データベースにプログラムモジュールを追加することも可能である。一例が、関連付けおよび割り当て条件を表すプログラムモジュールである。
【００３９】
したがって、本発明のさらなる改良形態では、ユーザプログラムが、コンピュータ上で作動するコンピュータプログラムを使用して作成され、ユーザプログラムは、複数の所定のプログラムモジュールから複数のプログラムモジュールを選択することにより作成され、コンピュータプログラムは、コンピュータに接続されたディスプレイユニットに複数のグラフィカルプログラムモジュールシンボルを表示するディスプレイモジュールを備え、複数のグラフィカルプログラムモジュールシンボルは、所定のプログラムモジュールを表す第1の複数のグラフィカルプログラムモジュールシンボルと、複数の選択されたプログラムモジュールを表す第2の複数のグラフィカルプログラムモジュールシンボルとを備え、少なくとも第1の複数のグラフィカルプログラムモジュールシンボルは提示の基本的な形態で実施され、複数の所定のプログラムモジュールは、ユーザプログラムの作成中に記述され関連付けおよび割り当て条件を表すプログラムモジュールを備え、記述されたプログラムモジュールは、少なくとも1つの修正されたグラフィカルプログラムモジュールシンボルによって表され、ディスプレイモジュールは、提示の基本的な形態と比較して修正された提示の形態で、修正されたグラフィカルプログラムモジュールシンボルを表示する。
【００４０】
この改良形態は、変換に帰することができ、かつ、実際の安全作業を表すユーザプログラムの範囲に加えてフェールセーフ性の点で関連するユーザプログラムの範囲を、ユーザプログラムの記述者に信頼できる仕方で参照させる。この文脈では、変換に関連する範囲を特に観察することが必要である。なぜなら、これは、第1プログラム部分で使用されている安全関連でないプログラム変数に帰することができるプログラム変数を含んでいるからである。ゆえに、修正されたグラフィカルプログラムモジュールシンボルの範囲に関する限り、関連付けおよび割り当て条件を表すプログラムモジュールを表すワイルドカードシンボルのみを修正することが考えられる。くわえて、このプログラムモジュールを表すユーザプログラム中に記述されたすべての機能ブロックを修正することが、同様に可能である。有利なことに、この改良形態は、識別されている第1コードコンポーネントをも含んでいる。
【００４１】
有利なことに、記述されたプログラムモジュールが、第1コードコンポーネントおよび第2コードコンポーネントの両方を備えていると識別されたときに、修正されたグラフィカルプログラムモジュールシンボルが使用される。修正されたグラフィカルプログラムモジュールシンボルの使用により、ユーザプログラムの記述者の注意が、潜在的な変換点に向けられる。上記プログラムモジュールを表す、ユーザプログラム中に記述されたすべての機能ブロックが修正された場合、これにより、特定の変換点がマークされることになる。ユーザプログラムがテキスト入力を使用して記述された場合でも、マーキングにより特定の変換点が強調（ハイライト）される。
【００４２】
本発明のさらなる改良形態では、ユーザプログラムの実行に、複製された安全関連でないプログラム変数が、選択された第1の安全関連でないプログラム変数から生成されることが含まれる。
この改良形態には、安全コントローラ中での安全関連のプログラム変数のフェールセーフな処理に必要とされる2つの処理チャネルのそれぞれについて、各場合に独立して安全関連のプログラム変数に変換される独立した安全関連でないプログラム変数が提供されるという利点がある。
【００４３】
複製された安全関連でないプログラム変数は有利なことに、選択された第1の安全関連でないプログラム変数の瞬時値が2つの独立したメモリ領域へと読み込まれることにより生成される。2つの独立したメモリ領域の一方は安全関連でないプログラム変数用に設けられ、一方は複製された安全関連でないプログラム変数用に設けられている。
有利なことに、複製された安全関連でないプログラム変数は、ユーザプログラムを作成するために使用されるコンピュータプログラムにより、自動で生成される。ユーザプログラムの記述者は、ユーザプログラムを記述するために通常行うことが必要な行動のほかに、追加の行動を行う必要がない。
【００４４】
複製された安全関連でないプログラム変数の自動的な生成は、有利なことに次のように進行する。ディスプレイモジュールが、ユーザプログラム用のソースコードを記述するために使用される。識別されたコードコンポーネントが利用可能であれば、識別モジュールは、ソースコードに挿入される複製コードを生成する。次いで、この複製コードに基づき、複製された安全関連でないプログラム変数が、ユーザプログラムが実行されたときに、選択された第1の安全関連でないプログラム変数に基づいて、自動的に生成される。あるいは、複製コードの明示的な記述を必要としない実施形態が考えられる。この場合、安全コントローラ上で作動するファームウェアが、自動で複製を行う、または、関連付けに基づき安全関連でないプログラム変数が第1プログラム部分で処理される必要があるときにこの目的のために必要な命令を自動で作成するルーチンを保存している。
【００４５】
上述した方策のさらなる改良形態では、割り当て条件が、選択された第1の安全関連でないプログラム変数および複製された安全関連でないプログラム変数の両方のために処理される。
ゆえに、以下の手順が取り決められる。第1ステップでは、複製された安全関連でないプログラム変数が生成される。第2ステップでは、次いで、安全関連のプログラム変数のために必要な信頼性要求それぞれが満たされているかを判断するために、両方のプログラム変数について確認が行われる。この扱いの手順により、複製中に発生するエラーを識別することができ、これは、フェールセーフ性を向上させるのに役立つ。
【００４６】
本発明のさらなる改良形態では、選択された第1の安全関連でないプログラム変数がプログラム入力変数であり、プログラム入力変数に割り当てられた瞬時値が、非フェールセーフ設計のセンサを使用して生成されたセンサ信号の値を表している。
この方策には、安全作業を、非フェールセーフ設計の安価なセンサを使用して達成できるという利点がある。フェールセーフ設計の高価なセンサの使用は、絶対に必要なわけではない。これにより、安全コントローラを安価に実施できる。
【００４７】
選択されたさらなるプログラム入力変数の瞬時値は、非フェールセーフ設計のセンサを使用しても提供できることが好ましい。非フェールセーフ設計のセンサは、安全コントローラを介して達成されることになる標準作業のために必要な物理的な変数を捕捉するのに使用されるものであるのが好ましい。これには、標準作業を達成するために必要なセンサのほかに、さらなるセンサを使用することを必要としないという利点がある。ゆえに、安全コントローラを安価に実施することができる。
【００４８】
すでに上述したように、選択された第1の安全関連でないプログラム変数および選択されたさらなるプログラム入力変数は両方とも、それぞれ、プログラム入力変数であってもよい。あるいは、これら2つのプログラム変数はまた、それぞれ、プログラム中間変数であってもよい。例として、プログラム中間変数の瞬時値は、プログラム入力変数の瞬時値に基づいて判断される。あるいは、2つのプログラム変数はまた、それぞれ、プログラム出力変数であってもよい。例として、プログラム出力変数の瞬時値は、プログラム入力変数の瞬時値またはプログラム中間変数の瞬時値に基づいて判断され、アクチュエータを起動させるのに使用される制御出力信号の値を表す。選択された第1の安全関連でないプログラム変数および選択されたさらなるプログラム入力変数は、必ずしも同一の種類のプログラム変数でなくてよい。考えられる組み合わせの1つが存在していてもよい。
【図面の簡単な説明】
【００４９】
【図１】ユーザプログラムを作成する必要のある安全コントローラと組み合わせた本発明の機器の模式図である。
【図２】本発明の方法を説明する簡略化されたフローチャートである。
【図３】ユーザプログラムを作成するための第1グラフィカルインターフェースの模式図である。
【図４】ユーザプログラムを作成するための第2グラフィカルインターフェースの模式図である。
【発明を実施するための形態】
【００５０】
上述した特徴および以下にこれから説明する特徴を、本発明の範囲を逸脱することなく、それぞれ示唆した組み合わせのみでなく、他の組み合わせ、または単独で使用できる。選択された安全関連のプログラム変数を、例えば、安全関連の制御出力信号を確認する基礎となる中間変数として使用することができる。
上記説明および以下の説明において、ユーザプログラムという用語が、ソースコードおよび機械コードの両方を備えており、それゆえにそれらを表すということを理解されたい。すなわち、ユーザプログラムはソースコードおよび機械コードにより提示される。安全関連でない、および、処理関連の、という用語は、上記部分でも以下の部分でも同義的に使用されていることをお断りしておく。
【００５１】
本発明の実施形態を図に示し、以下の説明で、より詳細に説明する。
図1では、本発明に係る機器の全体が、参照番号10で示されている。
機器10は、ディスプレイユニット14を有する従来のコンピュータ12を有している。このコンピュータ上で、コンピュータプログラム16が実行される。コンピュータプログラム16は、安全コントローラ用にユーザプログラムを記述することを可能にする。ゆえに、専門用語で、これはプログラミングツールとも呼ばれている。コンピュータ12はPCの形態であってもよく、ディスプレイユニット14はモニタの形態であってもよい。
【００５２】
図1は、自動化された設備（全体を参照番号22で示す）を制御するよう設計された安全コントローラ20を有する安全回路（全体を参照番号18で示す）を示している。自動化された設備22は、複数のアクチュエータ24および複数のセンサ26を備えている。例として、設備22に含まれる負荷28を示している。これは例えばロボットであってもよい。
安全に不可欠な処理を制御するために必要なフェールセーフ性を実現するために、安全コントローラ20は2チャンネル冗長な設計にされている。2チャンネル設計を表すために、図1は、第1プロセッサ30および第2プロセッサ32という2つの別体のプロセッサを示している。2つのプロセッサ30、32は、双方向の通信インターフェース34により互いに接続されて、互いに制御し合い、かつデータ交換することができるようにされている。系統誤差を大部分排除するために、安全コントローラ20の2つのチャネルおよび2つのプロセッサ30、32は、多様な（すなわち異なる）設計であるのが好ましい。
【００５３】
参照番号36は、2つのプロセッサ30、32のそれぞれに接続された入力/出力ユニットを示している。入力/出力ユニット36は、複数のセンサ26から複数の制御入力信号38を受信し、上記信号を2つのプロセッサ30、32のそれぞれにカスタマイズされたデータ形式で送る。制御入力信号がアナログ信号であるとすると、制御入力信号のアナログ値は、A/D変換によりデジタル値に変換され、次いで、デジタル値は瞬時値としてプログラム入力変数に割り当てられる。くわえて、入力/出力ユニット36は、複数のアクチュエータ24を起動するために使用される複数の制御出力信号40を生成するための基盤として、プロセッサ30、32を利用する。制御出力信号がアナログ信号であるとすると、プログラム出力変数用のデジタル形式の瞬時値は、この目的のために、D/A変換によりアナログ値に変換され、変換されたアナログ値は制御出力信号の値を表す。
【００５４】
参照番号42は、機械コードの形態のユーザプログラムを保存するのに使用されるプログラムメモリを示している。ユーザプログラムおよび機械コードは、機器10を使用して記述される。プログラムメモリ42がチップカードの形態である場合、これにより、コンピュータ12への直接的な接続がなくても、機械コードおよびそれゆえにユーザプログラムの簡単な交換が可能になる。あるいは、プログラムメモリ42はまた、安全コントローラ20に恒久的にインストールされたメモリ（例えばEEPROM）の形態であってもよい。
【００５５】
コンピュータプログラム16は、ディスプレイユニット14上でユーザインターフェース44を提供する。ユーザインターフェース44により、プログラマがユーザプログラムを記述することが可能になる。プログラマは、コンピュータ12に、上記コンピュータに接続された入力ユニットを介して、入力を供給することにより、ユーザプログラムを記述する。例として、入力ユニットはキーボードまたはマウスであってもよい。
【００５６】
入力概念は、ユーザプログラムを記述するために使用されるプログラミング言語により、異なっていてもよい。プログラミング言語が例えば構造化テキストプログラミング言語である場合、ユーザプログラムはテキスト入力により記述される。反対に、機能ブロック図がプログラミング言語として使用されている場合、例えば、グラフィカルシンボルによりユーザインターフェース44上に示された所定のプログラムモジュールを、マウスを使用して選択することにより、プログラマはユーザプログラムを記述する。
【００５７】
使用されるプログラミング言語にかかわりなく、本発明の方法には、プログラマが行うことが必要なさまざまな入力が要求される。これらの入力には、多くの安全関連のプログラム変数46の定義、多くの安全関連でないプログラム変数48の定義、安全関連のプログラム変数50を多くの安全関連のプログラム変数46から選択すること、安全関連でないプログラム変数52を多くの安全関連でないプログラム変数48から選択すること、割り当て条件54の定義、関連付け56の定義および制御命令58の記述が含まれる。プログラミングに関し、関連付け56は、選択された第1の安全関連でないプログラム変数52を、選択された安全関連のプログラム変数50に割り当てるのに使用される割り当てに対応する。ユーザプログラムが実行されるとき、これは、安全関連でないプログラム変数の瞬時値が安全関連のプログラム変数に割り当てられることを意味する。関連付けはマッピングの性質を有する。
【００５８】
コンピュータプログラム16はディスプレイモジュール60を備えている。ディスプレイモジュール60は、入力ユニットを使用してプログラマが作成した入力を、捕捉および評価するのに使用される。まず、ディスプレイモジュール60は、個々の入力を示しソースコードメモリ64に保存されるソースコード62を生成する。プログラマがその入力すべてを作成したあとに存在する完全なソースコードと比較して、ソースコード62は部分的なソースコードである。次に、ディスプレイモジュール60は、提示の基本的な形態で、グラフィカルシンボル66を表示または提示する。グラフィカルシンボル66は、プログラマが作成した入力を、およびそれゆえにディスプレイモジュール60により生成されたソースコード62をも表す。ゆえに、ユーザプログラムまたはユーザプログラム用のソースコードをディスプレイユニット14に提示することが可能になる。
【００５９】
コンピュータプログラム16は、ソースコード62が評価される識別モジュール68をも備えている。全体がディスプレイモジュール60により生成されたソースコードは、第1コードコンポーネントおよび第2コードコンポーネントを備える変換コードを含んでいる。第1コードコンポーネントは関連付け56を表し、第2コードコンポーネントは割り当て条件54を表す。識別モジュール68が第1コードコンポーネントを識別すると、ディスプレイモジュール60にまず識別通知70が供給される。識別通知70に基づき、ディスプレイモジュール60は、提示の基本的な形態と比較して修正された提示の形態のグラフィカルシンボル66の少なくとも1つを提示する。次に、識別モジュール68が複製コード72を生成する。複製コード72はソースコードメモリ64へと供給され、それゆえにソースコードへと挿入される。この場合、さまざまな改良形態が考えられる。複製コード72は、第1プログラム部分74および第2プログラム部分78と独立して存在する独立したプログラム部分であってもよい。あるいは、複製コード72は第1プログラム部分74の一部または第2プログラム部分78の一部であってもよい。
【００６０】
プログラマが、そのユーザプログラムに必要な入力すべてを行うと、ソースコードはソースコードメモリ64内で完全に使用可能となる。ソースコードは、フェールセーフな形態の安全関連のプログラム変数を処理するために、第1プログラム部分74を備えている。第1プログラム部分74はプログラムモジュール76を備えている。プログラムモジュール76は、第1コードコンポーネントと第2コードコンポーネントとを組み合わせて形成される。プログラムモジュール76に接続された機能性のために、プログラムモジュール76を変換モジュールと呼ぶことができる。また、ソースコードは、第2プログラム部分78内の安全関連でないプログラム変数についてフェールセーフな処理が必要でない状態で、安全関連でないプログラム変数を処理するために、第2プログラム部分78を備えている。第1プログラム部分74は、安全コントローラ20により達成されることになる安全作業に必要な安全命令を表すソースコードを備えている。安全命令は、安全制御命令だけでなく、関連付け56および割り当て条件54を表す変換命令を有する変換命令をも備えている。変換命令は組み合わされてプログラムモジュール76を形成する。プログラムモジュール76に組み込まれた変換命令は、実際の安全制御命令から独立している。第2プログラム部分78は、安全コントローラ20により達成されることになる標準作業に必要な標準命令を表すソースコードを備えている。
【００６１】
ソースコードメモリ64に保存された完全なソースコード80は、コンパイラ82により機械コードへと翻訳される。これはCRC（巡回冗長検査）により追加で保護されているのが好ましい。
コンパイラ82により翻訳された機械コードは、プログラムメモリ42に保存される。安全関連のプログラム変数のフェールセーフな処理のために、プログラムメモリ42は第1機械コード84および第2機械コード86を保存する。第1機械コード84は第1プロセッサ30用に意図されており、第2機械コード86は第2プロセッサ32用に意図されている。
【００６２】
第1機械コード84は第1安全コード88および標準コード90を備えている。第1安全コード88は第一に、安全コントローラ20により達成されることになる安全作業のために、第1プロセッサ30により実行される必要のある安全命令を備えている。次に、第1安全コード88は、関連付け56および割り当て条件54により規定される変換のために、第1プロセッサ30により実行される必要のある安全命令を備えている。ゆえに、全体として、第1安全コード88は安全制御命令および変換命令を備えている。標準コード90は、安全コントローラ20により達成されることになる標準作業のために、第1プロセッサ30により実行される必要のある標準命令を備えている。
【００６３】
第2機械コード86は第2安全コード92を備えている。第1安全コード88に関連した説明と一致して、第2安全コード92は、第2プロセッサ32により実行される必要のある安全命令、すなわち安全制御命令および変換命令を備えている。プログラマによって記述されたユーザプログラムは、完全なソースコード80および2つの機械コード84、86を備えている。
ユーザプログラムの実行に基づき、第1プロセッサ30はまず第１の現行の（current）安全命令94を実行し、次に現行の標準命令96を実行する。本質的に同時に、第2プロセッサ32は第２の現行の安全命令98を実行する。第１の現行の安全命令94および第２の現行の安全命令98の両方は、安全制御命令であっても、または変換命令であってもよい。
【００６４】
標準制御命令およびそれゆえに安全関連でない制御命令である現行の標準命令96の実行では、第1の安全関連でないデータ100が、第1プロセッサ30と入力/出力ユニット36との間で交換される。この場合、プログラム入力変数を使用して、第1プロセッサ30にデータが供給され、その際、その瞬時値は、安全関連でないセンサ104により生成された安全関連でない制御入力信号102の値を表す。安全関連でないセンサ104は、例えば、閉ループ駆動制御に必要な入力変数を捕捉する種類のセンサである。これらは、例えば、回転速度、角度または速度であってもよい。安全関連でないセンサ104は非フェールセーフ設計とされている。プログラム出力変数を使用して、入力/出力ユニット36にデータが供給され、その際、その瞬時値は、安全関連でないアクチュエータ108を制御するために安全関連でないアクチュエータ108に供給される安全関連でない制御出力信号106の値を表す。例として、安全関連でないアクチュエータ108はモータまたは作動シリンダであってもよい。安全関連でないプログラム出力変数の瞬時値は、標準命令に従い、安全関連でないプログラム入力変数に基づいて決定される。この場合、中間変数を確かめる必要がある可能性がある。中間変数の瞬時値はプログラム中間変数に割り当てられる。プログラム中間変数の瞬時値は、第2の安全関連でないデータ110によりメインメモリ112に供給され、そこにバッファ記憶される。
【００６５】
第１の現行の安全命令94が安全制御命令すなわち安全関連の制御命令である場合、その処理には、第1の安全関連のデータ114が第1プロセッサ30と入力/出力ユニット36との間で交換されることが含まれる。この場合、安全関連のプログラム入力変数を使用して、第1プロセッサ30にデータが供給され、その際、その瞬時値は、安全関連のセンサ118により生成された安全関連の制御入力信号116の値を表す。例として、安全関連のセンサ118は、緊急時オフ押しボタン、両手用のコントローラ、保護ドア、回転速度監視器具、または、安全関連のパラメータを取得するための他のセンサである。安全関連のプログラム出力変数を使用して、入力/出力ユニット36にデータが供給され、その際、後者の瞬時値は、安全関連のアクチュエータ122を起動するために安全関連のアクチュエータ122に供給される安全関連の制御出力信号120の値を表す。例として、安全関連のアクチュエータ122は接触器として知られるものであり、その作動コンタクトは電源124と負荷28との間の接続として配置されている。安全関連のアクチュエータ122は、負荷28に対して電源124を接続解除するのに使用することができる。これは、関連する不具合が起きたときに、少なくとも負荷28を安全状態に移行することができることを意味している。安全関連のプログラム出力変数の瞬時値は、安全制御命令ごとに、安全関連のプログラム入力変数に基づき確かめられる。これには、安全関連の中間変数を確かめる必要のある場合がある。中間変数の瞬時値は安全関連のプログラム中間変数に割り当てられる。安全関連のプログラム中間変数の瞬時値は、第2の安全関連のデータ126によりメインメモリ112に供給され、そこにバッファ記憶される。
【００６６】
第２の現行の安全命令98が安全制御命令すなわち安全関連の制御命令である場合、手続きは、第1プロセッサ30で処理された第１の現行の安全命令94に従っている。第２の現行の安全命令98に関する限り、第1の安全関連のデータ114に対応する第3の安全関連のデータ128、および、第2の安全関連のデータ126に対応する第4の安全関連のデータ130が適切に使用される。
【００６７】
第1プロセッサ30および第2プロセッサ32が安全関連の制御出力信号120についての値を生成する上記説明は、これらの2つのプロセッサにより生成された値が制御出力信号120として同時に出力されることを意味しない。上記説明は、達成されることになる安全作業に関して、安全コントローラ20の冗長設計を伝えようとしているに過ぎない。プロセッサ30、32の両方は、制御出力信号120用に値を決定するよう設計されている。安全コントローラ20の正しい作動中は、一方のプロセッサ（例えば、第1プロセッサ30）により決定された値のみが、制御出力信号120として出力される。
【００６８】
安全コントローラ20は、さらなる周辺ユニット132を有していてもよい。周辺ユニット132は、安全コントローラ20により達成されることになる標準作業および安全作業のために必要であり、入力/出力ユニット36を介して安全コントローラ20に接続されている。例として、これらは、モードセレクタスイッチまたは確認ボタンであってもよい。あるいは、ディスプレイユニットがあってもよい。
【００６９】
入力/出力ユニット36は、安全コントローラ20と安全関連のセンサ118、安全関連のアクチュエータ122および必要であればさらなる周辺ユニット132との間でテスト信号134を交換するのに使用される。テスト信号134は、安全コントローラ20中で、それに接続されたユニットおよび部品が正しく作動しているかを確証するのに使用されてもよい。これは必要である。なぜなら、安全コントローラ20に接続された器具に不具合が起きるとすぐに、制御されることになる設備22が確実に安全状態になるようにすることが必要だからである。
【００７０】
第１の現行の安全命令94および第２の現行の安全命令98が変換命令である場合、割り当て条件54に基づいて、選択された安全関連のプログラム変数50へ、選択された第1の安全関連でないプログラム変数52の瞬時値を割り当てるために必要なステップの1つを、2つのプロセッサ30、32が実行する。この目的のために、選択された第1の安全関連でないプログラム変数52用の（所定のタイムステップで利用可能な）元の瞬時値136が、複製ユニット138に供給される。複製ユニット138では、選択された第1の安全関連でないプログラム変数52が、複製された安全関連でないプログラム変数を生成するために使用される。このために、元の瞬時値136が2つの別個のメモリ領域に読み込まれる。明瞭にするために、これら2つのメモリ領域は図示しない。2つのメモリ領域は独立して読まれるため、元の瞬時値136が第1確認ユニット140に供給され、複製された瞬時値142が第2確認ユニット144に供給される。ゆえに、第2確認ユニット144は、複製された安全関連でないプログラム変数を評価およびそれゆえに処理する。
【００７１】
2つの確認ユニット140、144はともに、信憑性ユニット146を形成している。複製ユニット138および信憑性ユニット146は、組み合わせて、変換ユニットであるとみなすことができる。この場合、複製ユニット138、確認ユニット140、144および信憑性ユニット146はすべて、メインメモリ112内の構造的なユニットというよりはむしろ機能的なユニットであることに言及しておかねばならない。
【００７２】
2つの確認ユニット140、144は、割り当て条件54を独立して実行する。第1確認ユニット140はそれを、選択された第1の安全関連でないプログラム変数52用に実行し、第2確認ユニット144はそれを、複製された安全関連でないプログラム変数用に実行する。ゆえに、選択された第1の安全関連でないプログラム変数52および複製された安全関連でないプログラム変数の両方について、上記信頼性要求が各場合に満たされているかが確証される。
【００７３】
割り当て条件54について2つの実施形態が考えられる。第1実施形態では、規定の割り当て条件が、選択された第1の安全関連でないプログラム変数52と選択されたさらなるプログラム変数とが互いに一致しているかを確認するために使用される信憑性テストである。したがって、複製された安全関連でないプログラム変数と選択されたさらなるプログラム変数とが互いに一致しているかを判断するために確認が行われる。選択されたさらなるプログラム変数が安全関連でないプログラム変数であれば、2つの確認ユニット140、144に、規定の時ステップで利用可能な第1の瞬時値148が供給される。これは、選択されたさらなる安全関連でないプログラム変数用の瞬時値である。第1確認ユニット140が、選択された第1の安全関連でないプログラム変数52と選択されたさらなる安全関連でないプログラム変数とが互いに一致していることを確証した場合、元の瞬時値136が、選択された安全関連のプログラム変数50に割り当てられ、第1プロセッサ30に出力される。第2確認ユニット144が、複製された安全関連でないプログラム変数と選択されたさらなる安全関連でないプログラム変数とが互いに一致していることを確証した場合、選択された安全関連のプログラム変数50に対応し、第2安全コード92内で作成されて第2プロセッサ32で処理された安全関連のプログラム変数に、複製された瞬時値142が割り当てられ、第2プロセッサ32へと出力される。
【００７４】
反対に、選択されたさらなるプログラム変数が安全関連のプログラム変数である場合、第5の安全関連のデータ150により、第1確認ユニット140に、規定の時ステップで利用可能な第2の瞬時値が供給される。これは、選択されたさらなる安全関連のプログラム変数用の瞬時値である。続いて、第6の安全関連のデータ152により、第2確認ユニット144に、規定の時ステップで利用可能な第3の瞬時値が供給される。これは、第2安全コード92内で作成された適切な安全関連のプログラム変数の瞬時値である。次いで、第1確認ユニット140は、選択された第1の安全関連でないプログラム変数52と選択されたさらなる安全関連のプログラム変数とが互いに一致しているかを確証する。次いで、第2確認ユニット144は、選択された第1の安全関連でないプログラム変数52と、第2安全コード92内で使用される、対応する安全関連のプログラム変数とが互いに一致しているかを確証する。元の瞬時値136および複製された瞬時値144は、選択されたさらなるプログラム変数が安全関連でないプログラム変数である場合に、割り当てられ、かつ出力される。
【００７５】
第2実施形態では、規定の割り当て条件は、選択された第1の安全関連でないプログラム変数52が、選択された第1の安全関連でないプログラム変数52の特有の特性を表す比較基準を満たしているかを確認するために使用される信憑性テストである。この場合、第5の安全関連のデータ150により、第1確認ユニット140に比較データが供給され、上記比較データは、これらと比較される元の瞬時値136を有している。第6の安全関連のデータ152により、第2確認ユニット144に適切な比較データが供給される。選択された第1の安全関連でないプログラム変数52が比較基準を満たしていることを、第1確認ユニット140が確証した場合、元の瞬時値136が選択された安全関連のプログラム変数50に割り当てられ、第1プロセッサ30に出力される。複製された安全関連でないプログラム変数が比較基準を満たしていることを、第2確認ユニット144が確証した場合、第2安全コード内で作成されて選択された安全関連のプログラム変数50に対応した安全関連のプログラム変数に、複製された瞬時値142が割り当てられ、第2プロセッサ32に出力される。
【００７６】
2つの確認ユニット140、144での割り当て条件54の確認に、複数の瞬時値、または、評価されることになる経時的な瞬時値における変化が必要な場合、2つの確認ユニット140、144は、複数の連続した時ステップ用に利用可能な瞬時値をバッファ記憶する。
図1は、第1安全コード88および第2安全コード92の両方が変換命令を含む第1実施形態を示している。これは、限定的な効果を有することを意図していない。第1安全コード88のみが変換命令を含み、第2安全コード92は含まない実施形態も考えられる。安全コードの一方または両方が、割り当て条件54を表す変換命令のみを含む実施形態も考えられる。複製コード72に関する限り、複数の実施形態が同様に考えられる。第1安全コード88のみが、関連する命令を含んでいることも考えられる。あるいは、安全コード88、92の両方が、関連する命令を含んでいてもよい。
【００７７】
図2のフローチャートは、本発明の方法によりユーザプログラムを作成する際の基本的なやり方を示している。
ステップ170では、複数の安全関連のプログラム変数46が規定される。次のステップ172では、複数の安全関連でないプログラム変数48が規定される。続くステップ174では、安全関連のプログラム変数50が、複数の安全関連でないプログラム変数48から選択される。続くステップ176では、第1の安全関連でないプログラム変数52が、複数の安全関連でないプログラム変数48から選択される。ユーザプログラムが実行されたときに、第1の安全関連でないプログラム変数52は、瞬時値を繰り返し割り当てられる。続くステップ178では、ユーザプログラムが実行されたときに処理される割り当て条件54が規定される。ステップ178では、規定された割り当て条件54が信憑性テストである場合、さらなるプログラム変数が追加で選択される。続くステップ180では、選択された第1の安全関連でないプログラム変数52を、選択された安全関連のプログラム変数50と関連付ける関連付け56が規定される。ユーザプログラムが実行されたときに、選択された第1の安全関連でないプログラム変数52の瞬時値が、割り当て条件54に基づき、選択された安全関連のプログラム変数50に割り当てられる。さらなる安全関連でないプログラム変数を安全関連のプログラム変数に変換することが必要な場合、すなわち、さらなる関連付けを行うことが必要な場合、これは続くステップ182で設定され、次いでステップ174〜180が再び実行される。これに対して、さらなる変換およびそれゆえ関連付けを行うことが必要でない場合、ステップ182に続いてステップ184が実行される。ステップ184では、制御命令が記述される。
【００７８】
図3は、第1プログラミング概念を表す第1グラフィカルユーザインタフェース190を示している。全体として、ユーザプログラムは、コンピュータ12上で実行されるコンピュータプログラム16を使用して記述される。この文脈では、第1グラフィカルユーザインタフェース190により、プログラマは、ユーザプログラムを記述するのに必要なテキスト入力を行うことができる。コンピュータプログラム16が備えるディスプレイモジュール60は、ユーザプログラムが記述されている間、コンピュータ12に接続されているディスプレイユニット14上に、少なくともソースコード62、または、完全なソースコード80の一部、少なくとも抜粋を表示する。以下の説明では、簡略化のために、ソースコードの抜粋について考慮する。
【００７９】
図3は、連続したドット192および複数の長方形194により示すように、ソースコードおよびそれゆえにユーザプログラムからの抜粋を示している。各長方形は、ソースコードおよびそれゆえにユーザプログラムからのプログラムラインを表している。全体として、ディスプレイユニット14上に提示された第1グラフィカルユーザインタフェース190は、ソースコードを表す複数のグラフィカルソースコードシンボル196を備えている。この場合、グラフィカルソースコードシンボルは、提示の基本的な形態で実施されている。複数のグラフィカルソースコードシンボル196は、複数のグラフィカル変換コードシンボル198を備えている。複数のグラフィカル変換コードシンボル198は、ソースコードが含んでいる変換コードを表す。そして、変換コードは、関連付け56を表す第1コードコンポーネント200と、割り当て条件54を表す第2コードコンポーネント202とを備えている。識別モジュール68が、2つのコードコンポーネント200、202の少なくとも一方を識別するために使用される。識別されたコードコンポーネントが利用可能であれば、ディスプレイモジュール60は、提示の基本的な形態と比較して修正された提示の形態で複数のグラフィカル変換コードシンボル198が含んでいる少なくとも1つのグラフィカル変換コードシンボル204を示す。これは図3に、斜線を付して参照番号204により示した2つの長方形により示されている。
【００８０】
第1コードコンポーネント200は、関連付け56を表す変換命令を表している。第2コードコンポーネント202は、割り当て条件54を表す変換命令を表している。破線によって示した囲みにより図3に示すように、2つのコードコンポーネント200、202は組み合わされて、プログラムモジュール76を形成する。
提示の基本的な形態と比較して修正された提示の形態の少なくとも1つのグラフィカル変換コードシンボル204の表示により、ソースコード内およびそれゆえにユーザプログラム内での検知された変換点が提供される。
【００８１】
図4は、第2プログラミング概念を表す第2グラフィカルユーザインタフェース210を示している。この第2プログラミング概念でも、ユーザプログラムは、コンピュータ12上で実行されるコンピュータプログラム16を使用して記述される。しかし、この第2プログラミング概念では、複数の所定のプログラムモジュールから複数のプログラムモジュールを選択することにより、ユーザプログラムが記述される。この選択を可能にするために、ディスプレイモジュール60は、第2グラフィカルユーザインタフェース210上およびそれゆえにディスプレイユニット14上に、複数のグラフィカルプログラムモジュールシンボル212を表示する。そして、複数のグラフィカルプログラムモジュールシンボル212は、所定のプログラムモジュールを表す第1の複数のグラフィカルプログラムモジュールシンボル214と、複数の選択されたプログラムモジュールを表す第2の複数のグラフィカルプログラムモジュールシンボル216を備えている。所定のプログラムモジュールは、例えばマウスを使用して、ドラッグアンドドロップ機能により選択される。上記選択は、図4に2つの矢印218により示されている。少なくとも第1の複数のグラフィカルプログラムモジュールシンボル214は、提示の基本的な形態で実施されている。複数の所定のプログラムモジュールは、ユーザプログラムの記述中に記述され関連付け56および割り当て条件54を表すプログラムモジュール220を備えている。記述されたプログラムモジュール220は、少なくとも1つの修正されたグラフィカルプログラムモジュールシンボル222によって表される。ディスプレイモジュール60は、提示の基本的な形態と比較して修正された提示の形態の、修正されたグラフィカルプログラムモジュールシンボル222を表示する。これは図4に斜線を使用して示されている。記述されたプログラムモジュール220は、上述したプログラムモジュール76に対応している。
【００８２】
第2のプログラミング概念の場合、プログラムモジュールの記述は以下のように提示される。プログラマは、特にこの目的のために設けられた入力フィールドを使用して、記述されることになるプログラムモジュールの機能を規定する。この目的のために、プログラマは、記述されることになるプログラムモジュールにより実行される必要のある制御命令を（例えばテキスト入力の形態で）入力する。この段階で、グラフィカルプログラムモジュールシンボルは、記述されることになるプログラムモジュール用にすでに記述されている。識別モジュール68が、プログラマにより入力されてきた制御命令内で、2つのコードコンポーネント200、202の一方を識別すると、すでに作成されたグラフィカルプログラムモジュールシンボルが修正され、その結果、それは、提示の基本的な形態と比較して修正された提示の形態で表示される。
【図１】
0005636378.tif 000002
【図２】
0005636378.tif 000003
【図３】
0005636378.tif 000004
【図４】
0005636378.tif 000005