(57)【要約】      （修正有）【課題】安全制御器に関連するプログラムコードの、より迅速な修正を可能にするプログラミング方法を提供する。【解決手段】ユーザプログラムは、第1のプログラム部分および少なくとも1つの追加のプログラム部分を有している。第1のプログラム部分は、選択されたセンサ信号およびアクチュエータ信号の間の安全関連の論理的依存性を規定する。オリジナルなプログラムコードは、安全制御器の第1のメモリに転送され、安全制御器の少なくとも1つのプロセッサにより実行される。第1のプログラム部分は、修正された第1のコード部分を得るために、修正され、コンパイルされる。修正された第1のコード部分は、オリジナルなプログラムコードが実行されている間に、安全制御器の第2のメモリに転送される。次いで、修正された第1のコード部分が、オリジナルな追加のコード部分に加えられて、かつ、オリジナルな第1のコード部分の代わりに、実行される。【選択図】図３
2017117444.tif 000002
【特許請求の範囲】
【請求項１】
センサ信号を受信するための複数の入力部、アクチュエータ信号を出力するための複数の出力部、および、プログラムコードを実行するための少なくとも1つのプロセッサを有する安全制御器をプログラミングするための方法であって、
プログラムエディタを使用して、前記センサ信号と前記アクチュエータ信号との間の論理的依存性を規定する、ユーザプログラムを作成するステップであって、前記ユーザプログラムは、第1のプログラム部分および少なくとも1つの追加のプログラム部分を有し、前記第1のプログラム部分は、選択されたセンサ信号およびアクチュエータ信号の間の安全関連の論理的依存性を規定する、ステップと、
前記少なくとも1つのプロセッサ用に、実行可能なオリジナルなプログラムコードを得るために、前記第1のプログラム部分および前記少なくとも1つの追加のプログラム部分をコンパイルおよびリンクするステップであって、前記オリジナルなプログラムコードは、前記第1のプログラム部分を表すオリジナルな第1のコード部分、および、前記少なくとも1つの追加のプログラム部分を表す少なくとも1つのオリジナルな追加のコード部分を有する、ステップと、
前記実行可能なオリジナルなプログラムコードを、前記安全制御器の第1のメモリに転送するステップと、
前記センサ信号に応じて前記アクチュエータ信号を生成するために、前記実行可能なオリジナルなプログラムコードを前記少なくとも1つのプロセッサにより実行するステップと、
修正された第1のプログラム部分を得るために、前記第1のプログラム部分を、前記プログラムエディタを使用して修正するステップと、
修正された第1のコード部分を得るために、前記修正された第1のプログラム部分をコンパイルするステップとを備え、
前記修正された第1のコード部分は、前記安全制御器の第2のメモリへと転送され、前記オリジナルなプログラムコードは、前記少なくとも1つのプロセッサにより実行され、
前記修正された第1のコード部分は次いで、前記修正された第1のプログラム部分に応じて前記アクチュエータ信号を生成するために、前記オリジナルな追加のコード部分に加えて、かつ、前記オリジナルな第1のコード部分の代わりに、前記少なくとも1つのプロセッサにより実行される、方法。
【請求項２】
前記修正された第1のコード部分は、制限された期間中にのみ、前記オリジナルな第1のコード部分の代わりに実行される、請求項1に記載の方法。
【請求項３】
前記安全制御器は、前記制限された期間が経過したのち、規定の安全状態に入る、請求項2に記載の方法。
【請求項４】
前記第1のメモリは不揮発性メモリであり、前記第2のメモリは揮発性メモリである、請求項1に記載の方法。
【請求項５】
前記オリジナルな第1のコード部分の代わりに前記修正された第1のコード部分を実行するために、前記安全制御器のプログラムコードポインタが変更される、請求項1に記載の方法。
【請求項６】
前記少なくとも1つのプロセッサは、複数のプログラム周期を規定する周期的な仕方で、前記オリジナルなプログラムコードを実行し、前記修正された第1のコード部分は、前記複数のプログラム周期の1つの完了後に、前記オリジナルな第1のコード部分の代わりに実行される、請求項1に記載の方法。
【請求項７】
前記安全制御器は、前記修正された第1のコード部分の実行を表示する視覚的なインジケータを有している、請求項1に記載の方法。
【請求項８】
前記修正された第1のコード部分は、修正された実行可能なプログラムコードを得るために、前記少なくとも1つの追加のプログラム部分とともに、コンパイルおよびリンクされ、前記修正された実行可能なプログラムコードは、前記オリジナルなプログラムコードの実行が停止されたのち、前記第1のメモリに転送される、請求項1に記載の方法。
【請求項９】
前記修正された第1のプログラム部分は、修正された第1のコード部分および修正された第2のコード部分を生成するために、2度コンパイルされ、前記修正された第1のコード部分および前記修正された第2のコード部分は、前記第2のメモリに転送され、前記少なくとも1つのプロセッサにより冗長に実行される、請求項1に記載の方法。
【請求項１０】
前記安全制御器は、個々のプログラムコードがそれぞれ実行される複数のネットワーク化された制御ユニットを含む、分散型の安全制御器であり、前記修正された第1のコード部分は、前記オリジナルなプログラムコードが実行されている間に、少なくとも2つの異なる制御ユニットに転送される、請求項1に記載の方法。
【請求項１１】
前記第1のプログラム部分の前記修正は、ユーザの識別に応じて有効化または無効化される、請求項1に記載の方法。
【請求項１２】
前記第2のメモリへの前記修正された第1のコード部分の前記転送は、日付スタンプとともに、追加のメモリに記録される、請求項1に記載の方法。
【請求項１３】
安全が要求される処理のフェールセーフな制御のための安全制御器であって、
センサ信号を受信するための複数の入力部と、
アクチュエータ信号を出力するための複数の出力部と、
プログラムコードを周期的に実行するための少なくとも1つのプロセッサと、
第1の不揮発性メモリと、
第2の揮発性メモリと、
選択されたセンサ信号と選択されたアクチュエータ信号との間の論理的依存性を規定するユーザプログラムを作成するためのプログラミングツールとを備え、
前記プログラミングツールは、第1のプログラム部分および少なくとも1つの追加のプログラム部分を生成するよう設計されたプログラムエディタを有し、
前記第1のプログラム部分は、いくつかの選択されたセンサ信号といくつかの選択されたアクチュエータ信号との間の安全関連の論理的依存性を規定し、
前記プログラミングツールはさらに、前記少なくとも1つのプロセッサのために、実行可能なオリジナルなプログラムコードを形成するために、前記第1および前記少なくとも1つの追加のプログラム部分をコンパイルし、かつ、それをリンクするよう設計されたコンパイラを有し、
前記オリジナルなプログラムコードは、前記第1のプログラム部分を表すオリジナルな第1のコード部分、および、前記少なくとも1つの追加のプログラム部分を表す少なくとも1つのオリジナルな追加のコード部分を有し、
前記プログラミングツールは、前記オリジナルなプログラムコードを、前記第1のメモリに転送するよう構成されており、
前記プログラミングツールはさらに、修正された第1のコード部分を得るために、前記第1のプログラム部分を、前記追加のプログラム部分から分離して、修正およびコンパイルするよう設計されており、
前記プログラミングツールはさらに、前記オリジナルなプログラムコードを前記少なくとも1つのプロセッサにより実行しながら、前記修正された第1のコード部分を第2のメモリへと転送するよう構成されており、
当該安全制御器は、前記修正された第1のプログラム部分に応じて前記アクチュエータ信号を生成するために、前記修正された第1のコード部分を、前記オリジナルな追加のコード部分に加えて、かつ、前記オリジナルな第1のコード部分の代わりに、前記少なくとも1つのプロセッサにより実行するよう構成されている、安全制御器。
【請求項１４】
安全が要求される処理のフェールセーフな制御のための安全制御器用のコンピュータプログラムであって、前記安全制御器は、センサ信号を受信するための複数の入力部、アクチュエータ信号を出力するための複数の出力部、プログラムコードを周期的に実行するための少なくとも1つのプロセッサ、第1の不揮発性メモリ、第2の揮発性メモリ、および、選択されたセンサ信号と選択されたアクチュエータ信号との間の論理的依存性を規定するユーザプログラムを作成するプログラミングツールを有し、当該コンピュータプログラムは、非一時的なデータ保存装置に保存され、かつ、
プログラムエディタを使用して、前記センサ信号と前記アクチュエータ信号との間の論理的依存性を規定する、ユーザプログラムを作成するステップであって、前記ユーザプログラムは、第1のプログラム部分および少なくとも1つの追加のプログラム部分を有し、前記第1のプログラム部分は、選択されたセンサ信号およびアクチュエータ信号の間の安全関連の論理的依存性を規定する、ステップと、
前記少なくとも1つのプロセッサ用に実行可能なオリジナルなプログラムコードを得るために、前記第1および前記少なくとも1つの追加のプログラム部分をコンパイルおよびリンクするステップであって、前記オリジナルなプログラムコードは、前記第1のプログラム部分を表すオリジナルな第1のコード部分、および、前記少なくとも1つの追加のプログラム部分を表す少なくとも1つのオリジナルな追加のコード部分を有する、ステップと、
前記実行可能なオリジナルなプログラムコードを、前記安全制御器の第1のメモリへと転送するステップと、
前記センサ信号に応じて前記アクチュエータ信号を生成するために、前記実行可能なオリジナルなプログラムコードを前記少なくとも1つのプロセッサにより実行するステップと、
修正された第1のプログラム部分を得るために、前記第1のプログラム部分を、前記プログラムエディタを使用して修正するステップと、
修正された第1のコード部分を得るために、前記修正された第1のプログラム部分をコンパイルするステップとを含む方法を実行するよう設計され、
前記修正された第1のコード部分は、前記安全制御器の第2のメモリへと転送され、前記オリジナルなプログラムコードは、前記少なくとも1つのプロセッサにより実行され、
前記修正された第1のコード部分は次いで、前記修正された第1のプログラム部分に応じて前記アクチュエータ信号を生成するために、前記オリジナルな追加のコード部分に加えて、かつ、前記オリジナルな第1のコード部分の代わりに、前記少なくとも1つのプロセッサにより実行される、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、安全制御器をプログラミングするための方法、および、センサ信号を受信する複数の入力部と、アクチュエータ信号を出力する複数の出力部と、プログラムコードを実行するための少なくとも1つのプロセッサとを有する安全制御器に関するものである。
【０００２】
本発明は、複数のネットワーク化された制御ユニットを有する複雑なシステムに限定されず、小型の設計を有し、かつ自動運転される機械または設備でいくつかの安全機能を制御する、「小さな」安全制御器をプログラミングするために、同様に使用されてもよい。また、本発明は、「純粋な」安全制御器に限定されるわけでもない。むしろ、これは、安全関連の処理（いわゆるFSすなわちフェールセーフな処理（failsafe processes））および非安全関連の処理（いわゆる標準的な処理（standard processes））の両方を制御する制御システムでも使用することができる。
【背景技術】
【０００３】
非安全関連の標準的な処理は通常、自動化された設備の通常の作動に関係している。この処理の制御システムでの不具合は、経済的な理由で問題がある場合があり、それゆえに、可能であれば避けなければならない。しかし、これらは、設備の近傍にいる運転員または人他の間の健康または生命に危険を及ぼすことはない。
【０００４】
反対に、安全関連の制御機能は主として、自動化された設備から生じる危害を処置するために使用される。この理由で、不具合を防止および処置することに関して、自動化技術における安全関連の処理の制御システムに、特に需要がある。安全関連の制御システムおよび制御部品では、より高い水準の開発努力が必要であり、特にEN ISO 13849、EN IEC 61508、EN/IEC 62061などの基準に従う、特別な認証を通常必要とする。
【０００５】
前記PSS 4000自動化システムは、安全が要求される処理を制御するために必要な認証を有する多数の部品を含んでいるため、上記基準の要求を満たす安全制御器である。特に、多数の部品は、SIL 2以上に係る、EN/IEC 61508および/またはPL dに係る、EN ISO 13849以上に係る要求を満たしている。くわえて、自動化システムPSS 4000は、複雑な設備の標準的な処理を制御するようにも設計されている。ゆえに、公知の安全制御器のプログラミングは、多数の安全関連および非安全関連の処理を複雑な設備内で制御しなければならない場合、個々の事例において非常に複雑かつ包括的となる場合がある。
【０００６】
安全制御器の一般的な例は、本出願人であるPilz GmbH & Co. KG（ドイツ、オストフィルダーン72760、フェリクスヴァンケルシュトラーセ2）の提供する商標名「Automation System PSS 4000」 である。これは、「Automation System PSS 4000 - Building Block System」という題の2015年の社誌に記載されている。
【０００７】
安全制御器の別の例が、下記特許文献1に記載されている。この公知の安全制御器は、複数のハードウェア部品およびソフトウェア部品を備えており、そこから、ユーザは、ユーザの個人的な必要に応じて、自動化システムを組み立てることができる。用途の寸法に応じて、システムは、通信ネットワークを介して互いに接続された複数の制御ユニットを備えていてもよく、各制御ユニットは、複雑な設備内で、下位処理（サブプロセス）を制御する。
【０００８】
このようなシステムについては通常、設備内でのセンサ信号とアクチュエータ信号との間の論理的依存性を規定するいわゆるユーザプログラムが、複数のパーツまたはモジュールで生成される。その際、ユーザは一般に、国際基準IEC 61131に基づく、より高い水準のプログラミング言語を使用する。続いて個々のプログラム部分がコンパイルされ（すなわち機械可読コードに翻訳され）、互いにリンクされる。結果として生じるプログラムコードは次いで、関連するプログラムコードを実行することになるすべての制御ユニットにダウンロードされる。
【０００９】
複雑なユーザプログラムの作成はしばしば、単一の工程では不可能である。一般に、安全制御器を注文したあとで、修正および/または追加が必要である。これは、設置が行われているときにのみ、すべての相互依存を識別することが可能であるからであろう。
【００１０】
公知の安全制御器では、ユーザは、より高い水準のプログラミング言語において、ユーザプログラムの1つまたは複数のパーツを修正する場合がある。続いて、関係する修正を有する機械可読プログラムコードを取得するために、修正されたユーザプログラムを再コンパイルしなければならず、コンパイルした部分を再リンクしなければならない。次いで、修正されたプログラムコードを安全制御器にリロードし、以前の（オリジナルな）プログラムコードを上書きする。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】独国特許出願公開第10 2009 019 096 A1号明細書
【発明の概要】
【発明が解決しようとする課題】
【００１２】
公知の安全制御器では、このようにして修正を行うには、修正されたプログラムコードをダウンロードすることを可能にするために、制御処理を停止する必要がある。続いて、設置を再開しなければならず、それには、特に複雑な設置の場合に、時間のかかることがある。
【００１３】
PSS 3000というブランド名で提供されていたPilz GmbH & Co. KGの以前の制御システムでは、機械が稼働している間でも、制御システムのメモリに標準的なコンポーネントを転送することが可能であった。これは、ユーザプログラムをあとで修正することを容易にする。しかし、このアップデートオプション（選択肢）は、非安全関連の標準的な処理に関連するプログラム部分に厳しく制限されていた。ゆえに、この機能の実際の使用は制限されていた。
【００１４】
この背景に対し、本発明の目的は、上述した種類の方法を提供することであり、この方法は、安全制御器用のプログラムコードの、より迅速な修正を可能にする。本発明の別の目的は、このような方法を介して、より簡単かつ迅速にプログラムすることのできる安全制御器を提供することである。
【課題を解決するための手段】
【００１５】
本発明の第1の局面によれば、センサ信号を受信するための複数の入力部、アクチュエータ信号を出力するための複数の出力部、および、プログラムコードを実行するための少なくとも1つのプロセッサを有する安全制御器をプログラミングするための次の各ステップを含む方法が提供される。
【００１６】
プログラムエディタを使用して、前記センサ信号と前記アクチュエータ信号との間の論理的依存性を規定する、ユーザプログラムを作成するステップであって、前記ユーザプログラムは、第1のプログラム部分および少なくとも1つの追加のプログラム部分を有し、前記第1のプログラム部分は、選択されたセンサ信号およびアクチュエータ信号の間の安全関連の論理的依存性を規定する、ステップと、前記少なくとも1つのプロセッサ用に、実行可能なオリジナルなプログラムコードを得るために、前記第1および前記少なくとも1つの追加のプログラム部分をコンパイルおよびリンクするステップであって、前記オリジナルなプログラムコードは、前記第1のプログラム部分を表すオリジナルな第1のコード部分、および、前記少なくとも1つの追加のプログラム部分を表す少なくとも1つのオリジナルな追加のコード部分を有する、ステップと、前記実行可能なオリジナルなプログラムコードを、前記安全制御器の第1のメモリに転送するステップと、前記センサ信号に応じて前記アクチュエータ信号を生成するために、前記実行可能なオリジナルなプログラムコードを前記少なくとも1つのプロセッサにより実行するステップと、修正された第1のプログラム部分を得るために、前記第1のプログラム部分を、前記プログラムエディタを使用して修正するステップと、修正された第1のコード部分を得るために、前記修正された第1のプログラム部分をコンパイルするステップ。
【００１７】
前記修正された第1のコード部分は、前記安全制御器の第2のメモリへと転送され、前記オリジナルなプログラムコードは、前記少なくとも1つのプロセッサにより実行され、前記修正された第1のコード部分は次いで、前記修正された第1のプログラム部分に応じて前記アクチュエータ信号を生成するために、前記オリジナルな追加のコード部分に加えて、かつ、前記オリジナルな第1のコード部分の代わりに、前記少なくとも1つのプロセッサにより実行される。
【００１８】
本発明の別の局面によれば、安全が要求される（safety-critical）処理のフェールセーフな制御のための安全制御器であって、センサ信号を受信するための複数の入力部と、アクチュエータ信号を出力するための複数の出力部と、プログラムコードを周期的に実行するための少なくとも1つのプロセッサと、第1の不揮発性メモリと、第2の揮発性メモリと、選択されたセンサ信号と選択されたアクチュエータ信号との間の論理的依存性を規定するユーザプログラムを作成するためのプログラミングツールとを備え、前記プログラミングツールは、第1のプログラム部分および少なくとも1つの追加のプログラム部分を生成するよう設計されたプログラムエディタを有し、前記第1のプログラム部分は、いくつかの選択されたセンサ信号といくつかの選択されたアクチュエータ信号との間の安全関連の論理的依存性を規定し、前記プログラミングツールはさらに、前記少なくとも1つのプロセッサ用に、実行可能なオリジナルなプログラムコードを形成するために、前記第1および前記少なくとも1つの追加のプログラム部分をコンパイルし、かつ、それをリンクするよう設計されたコンパイラを有し、前記オリジナルなプログラムコードは、前記第1のプログラム部分を表すオリジナルな第1のコード部分、および、前記少なくとも1つの追加のプログラム部分を表す少なくとも1つのオリジナルな追加のコード部分を有し、前記プログラミングツールは、前記オリジナルなプログラムコードを、前記第1のメモリに転送するよう構成されており、前記プログラミングツールはさらに、修正された第1のコード部分を得るために、前記第1のプログラム部分を、前記追加のプログラム部分から分離して、修正およびコンパイルするよう設計されており、前記プログラミングツールはさらに、前記オリジナルなプログラムコードを前記少なくとも1つのプロセッサにより実行しながら、前記修正された第1のコード部分を第2のメモリへと転送するよう構成されており、当該安全制御器は、前記修正された第1のプログラム部分に応じて前記アクチュエータ信号を生成するために、前記修正された第1のコード部分を、前記オリジナルな追加のコード部分に加えて、かつ、前記オリジナルな第1のコード部分の代わりに、前記少なくとも1つのプロセッサにより実行するよう構成されている、安全制御器が提供される。
【００１９】
前記方法および前記安全制御器は、コンピュータプログラムを介して、特に好適な仕方で実行されてもよく、コンピュータプログラムが安全制御器上で実施されていれば、コンピュータプログラムは、上述した方法を有効化する。
【００２０】
前記方法および前記安全制御器は、隔離された（isolated）プログラムコードの断片（fragment）として安全制御器の第2のメモリへとロードされた修正された第1のコード部分を生成するために、少なくとも1つの追加のプログラム部分での修正から独立して第1のプログラム部分の修正を、かつ、修正された第1のプログラム部分の続く隔離されたコンパイルを、有効化する。好ましくは、修正された第1のコード部分は、他のコード部分へ先行してリンクされることなしに、第2のメモリへとロードされる。オリジナルなプログラムコードを有する第1のメモリはそれにより書き換えられないので、オリジナルなプログラムコードを少なくとも1つのプロセッサにより実行しながら、修正された第1のコード部分をダウンロードすることが容易に可能となる。ゆえに、修正された第1のコード部分をダウンロードすることは、制御処理の中断および停止を必要としない。すなわち、第1のプログラム部分は修正されてもよく、修正された第1のコード部分は、安全制御器がオリジナルなプログラムコードを実行しそれにより自動化された設備で少なくとも部分的に安全が要求される処理を制御している間に、安全制御器の第2のメモリに転送されてもよい。修正された第1のプログラム部分の隔離されたコンパイルおよび少なくとも1つの追加のプログラム部分へのリンク（linking）の好ましい削除（omission）により、機械可読な修正されたコード部分の、より迅速な生成が可能となる。安全制御器のプログラミングにおける、より迅速な修正は、この結果として、すでに可能である。
【００２１】
くわえて、安全制御器の修正された第1のコード部分は、制御処理を中断することなく実行されてもよい。好適には、安全制御器は、制御された設備の現在の処理値を使用して、修正された第1のコード部分を実行してもよい。これにより、多大の時間を節約することが可能となる。これは、安全制御器および制御された設備を、再起動の前に、まず規定の状態にせねばならないためである。これは、複雑な設備の場合、非常に時間のかかる場合がある。これを、本新規な方法により除くことができる。
【００２２】
いくつかの好適な実施形態では、安全制御器がプログラミングツールにより要求されて、第1のコード部分の実行がプログラムコードの周期的な実行内で開始する用意ができるとすぐに、第2のメモリからの修正された第1のコード部分が、第1のメモリからのオリジナルな第1のコード部分の代わりに実行されるようなやり方で、プログラムコードポインタを変更することにより、安全制御器の作動中の、修正された第1のコード部分の組み込みが実施される。
【００２３】
いくつかの好適な実施形態では、プログラムコードポインタの修正はプログラム周期の最後に起こり、その結果、修正された第1のコード部分が、1つのプログラム周期から次のものへと実行される。この場合、すべての変数の現在の処理値は、好適に保持される。しかし、原則として、特にプログラムコードが第1のメモリから直接に実行されず例えば特定のメインメモリから実行される場合に、オリジナルな第1のコード部分が、修正された第1のコード部分により上書きされることが考えられるであろう。
【００２４】
好ましい実施形態では、安全制御器の物理的な入力部および出力部の間のすべてのI/Ｏマッピングならびにプログラムコードで使用される変数が保持される。好ましくは、修正された第1のコード部分の修正はゆえに、選択されたセンサ信号およびアクチュエータ信号の間の修正された論理的依存性のみに限定される。これにより、制御処理への、修正されたコード部分の迅速な組み込みが促進される。
【００２５】
修正された第1のコード部分は、選択されたセンサ信号およびアクチュエータ信号の間の安全関連の論理的依存性を表すため、本発明の新規な方法および新規な安全制御器は、安全制御器の作動中に、安全関連の制御処理の修正を可能にする。一方で、これは、安全関連の制御システム部品が、設備の非安全関連の作動を妨げるおよび損ねる場合があるため、たいへん有利である。結果として、新規な方法および対応する安全制御器は、例えば非安全関連の制御処理における不具合対応（トラブルシューティング）を促進するために、例えば安全関連の制御処理の時間制限された取り消し(cancellation)を可能にする。
【００２６】
好適な実施形態では、新規な方法および新規な安全制御器は、少なくとも1つの追加のプログラム部分を分離して修正およびコンパイルし、修正された追加のコード部分を第2のメモリに転送することにより、作動中の少なくとも1つの追加のプログラム部分における修正をも可能にする。しかし、それにもかかわらず、前記方法および前記安全制御器の特徴は、安全関連の論理的依存性を含む第1のプログラム部分を、上述した仕方で、修正し、コンパイルし、かつ、隔離して安全制御器の第2のメモリに転送できるという点にある。ゆえに、いくつかの好適な実施形態では、第1のプログラム部分の修正および修正された第1のコード部分の安全制御器の第2のメモリへの転送は、ユーザの識別および/または認可（authorization）の成功、ならびに、安全制御器のオペレーティングシステムの対応する有効化のあとにのみ、可能となる。
【００２７】
くわえて、いくつかの好適な実施形態では、修正された第1のコード部分の第2のメモリからの実行を、オリジナルなプログラムコードの実行中に無効化することが、この無効化がオリジナルなプログラムコードの実行中に2つのチャンネルで好適に監視されている状態で、可能である。このように、これらの実施形態は、現在実行されているオリジナルなプログラムコードに応じて、安全関連の制御処理における介入を防止し、そのようにして、安全性の増加をもたらすが、個々の場合における修正の実行を妨げる。
【００２８】
好適には、新規な方法および新規な安全制御器は一般に、隔離されてコンパイルされた第1のコード部分を安全制御器の第2のメモリへとロードする、および、作動中にこのコード部分を実行するための少なくとも1つのプロセッサを要求する、という選択肢を有しており、その際、この一般的な選択肢は特に停止されてもよい。
【００２９】
要約すると、本発明の新規な方法および新規な安全制御器は、安全関連の論理的依存性を表す修正されたコード部分の、より迅速な組み込みを可能にする。これにより、ユーザは、以前の場合よりも速やかに新規な安全制御を再プログラムすることができる。上述した目的はこのようにして完全に達成される。
【００３０】
本発明の好ましい改良形態では、前記修正された第1のコード部分は、制限された期間中にのみ、前記オリジナルな第1のコード部分の代わりに実行される。
【００３１】
この改良形態では、新規な方法に係るプログラムコードの修正が、一時的にのみ可能となる。制限された期間が経過したのちに、少なくとも1つのプロセッサは、このようにして再び、修正された第1のコード部分の代わりに、オリジナルな第1のコード部分を実行する。いくつかの実施形態では、これは、自動的に起きてもよい。しかし、オリジナルな第1のコード部分への復帰は、好ましい実施形態に基づいて以下にさらに説明するように、手動の介入を要求するのが好ましい。いくつかの好適な実施形態では、制限された期間は24時間もしくはそれ以内の時間、好適には12時間もしくはそれ以内の時間である。他の好適な実施形態では、制限された期間は5時間もしくはそれ以内の時間、または0.5時間もしくはそれ以内の時間でさえあってもよい。この改良形態には、本新規な方法により、安全関連のプログラムコードの恒久的な修正が、これを行う確立された実績のあるやり方を迂回して行われないようにする、という利点がある。その結果、安全関連の制御処理におけるフェールセーフ性が増加する。特に、不具合対応を促進するよう設備に委任する（commission）際に好適な可能性のある安全水準の継続的な低下は、時間制限されている。長期的に、新規な安全制御器は、オリジナルなプログラムコードを使用して作動する。
【００３２】
さらなる改良形態では、前記安全制御器は、前記制限された期間が経過したのち、規定の安全状態に入る。
【００３３】
この改良形態に関し、規定の安全状態は、危険なアクチュエータがそれらの安全状態にされる状態である。一般に、安全状態は、再任（recommission）のために、安全制御器の手動のリセットまたは手動の再起動を要求する。好ましい実施形態では、制限された期間の監視は、安全制御器のファームウェアにおいて、好ましくは2チャンネル冗長性を有して、実施される。好適には、これはユーザによって無効にすることができない。この改良形態により、安全関連の制御システムに関し、さらに増し加わった安全性がもたらされる。
【００３４】
さらなる改良形態では、前記第1のメモリは不揮発性メモリであり、前記第2のメモリは揮発性メモリである。この改良形態に関し、不揮発性メモリは、作動電圧または供給電圧が損失した場合にも、転送されたプログラムコードを保持するメモリのことであり、揮発性メモリは、作動電圧または供給電圧が損失した場合に、保存されたコード部分を喪失する。この改良形態には、再起動により（および、好ましくは手動のリセットによっても）、修正された第１のコード部分の使用が確実に終了されるという利点がある。設備の保護向上のために、不具合対応の際に本新規な方法を介して得られた柔軟性および簡易化が、第2のメモリの揮発性の性質により制限される。
【００３５】
さらなる改良形態では、前記オリジナルな第1のコード部分の代わりに前記修正された第1のコード部分を実行するために、前記安全制御器のプログラムコードポインタが変更される。
【００３６】
この改良形態では、安全制御器は、有効に共存する両方の第１のコード部分を有している。（それ自体公知の仕方で）制御システムのメモリ内の次の機械語コマンド指し示すプログラムコードポインタを変更することにより、修正された第１のコード部分への非常に迅速な切り替えが可能である。くわえて、2つのコード部分の共存により、オリジナルなコード部分に切り戻す（switch back）ことが容易に可能となる。あるいは、修正された第１のコード部分を第2のメモリから第1のメモリに転送し、オリジナルな第１のコード部分をそこで上書きすることも、一般に考えられるであろう。それに反して、本改良形態は、修正された第１のコード部分の上述した一時的な実行を簡略化する。
【００３７】
さらなる改良形態では、前記少なくとも1つのプロセッサは、前記オリジナルなプログラムコードを周期的に実行し、前記修正された第1のコード部分は、プログラム周期の完了後に、前記オリジナルな第1のコード部分の代わりに実行される。
【００３８】
この改良形態は、安全制御器の作動中に、オリジナルな第1のコード部分から修正された第1のコード部分への、規定のシームレスな移行を可能にする。この改良形態では、修正された第1のコード部分が、現在の処理値を好適に受信し、その結果、修正にもかかわらず、制御処理をシームレスに実行することができる。
【００３９】
さらなる改良形態では、前記安全制御器は、前記修正された第1のコード部分の実行を視覚的に表示する視覚的なインジケータを有している。好適な実施形態では、視覚的なインジケータは、修正された第1のコード部分の組み込みから始まり制限された期間が経過するまでおよび/または手動のリセットもしくは再起動までの全期間中（すなわち、修正された第1のコード部分が「アクティブ」である限り）、修正された第1のコード部分の実行を表示する。この改良形態は、制御された処理操作のフェールセーフ性に関して好適である。これは、オリジナルなプログラムコードからの逸脱が安全水準の変更につながる場合があり、この改良形態で好適に表示されるためである。
【００４０】
さらなる改良形態では、前記修正された第1のコード部分は、修正された実行可能なプログラムコードを得るために、前記少なくとも1つの追加のプログラム部分とともに、コンパイルおよびリンクされ、前記修正された実行可能なプログラムコードは、前記オリジナルなプログラムコードの実行が停止されたのち、前記第1のメモリに転送される。
【００４１】
この改良形態では、修正された第1のコード部分は、実行可能なプログラムコードへと恒久的に統合され、「新たなオリジナルなプログラムコード」として、時間制限なしに安全制御器へと有効にロードされる。この改良形態は、第1の試験段階に続いて、本新規な安全制御器中の第1のプログラム部分における修正を恒久的に実施するのに好適である。好適には、修正された実行可能なプログラムコードは、第1のメモリ内のオリジナルな実行可能なプログラムコードを上書きする。
【００４２】
さらなる改良形態では、前記修正された第1のプログラム部分は、修正された第1のコード部分および修正された第2のコード部分を生成するために、2度コンパイルされ、前記修正された第1のコード部分および前記修正された第2のコード部分は、前記第2のメモリに転送され、前記少なくとも1つのプロセッサにより冗長に実行される。
【００４３】
この改良形態は、修正後も、安全関連の第1のプログラム部分の実行中に、単一故障安全性（single-fault safety）を保証するのに特に好適である。好適には、オリジナルな第1のプログラム部分は2度コンパイルされ、その際、修正された第1のコード部分および修正された第2のコード部分が、オリジナルな第1およびオリジナルな第2のコード部分の代わりに、説明された仕方で実行される。そのうえ、それにより多チャンネルの冗長な設計の一部として機能する2つの別体のチャンネルを実施するために、第1のコード部分および第2のコード部分が別体のプロセッサで実行される場合に、それは好ましい。この改良形態により、高度のフェールセーフ性がもたらされ、高度のフェールセーフ性は、安全関連のプログラム部分の迅速な修正用の新規な選択肢についても維持される。くわえて、この改良形態は、修正された第1のプログラム部分が安全制御器内で実際の条件下で実行され、そのようにして、上述した改良形態に関し、恒久的な組み込みを促進するという利点を有している。
【００４４】
さらなる改良形態では、前記安全制御器は、個々のプログラムコードがそれぞれで実行される複数のネットワーク化された制御ユニットを含む、分散型の安全制御器であり、前記修正された第1のコード部分は、前記オリジナルなプログラムコードが実行されている間に、少なくとも2つの異なる制御ユニットに転送される。
【００４５】
好ましい実施形態では、分散型の安全制御器は、修正された第1のコード部分が提供される中央メモリを備えており、少なくとも2つの異なる制御ユニットは、修正された第1のコード部分を、中央メモリから、それらのそれぞれの第1のメモリへとロードする。この改良形態により、簡単、好適かつ迅速な仕方で、分散型の安全制御器内の複合的な局面および/またはオブジェクト指向ユーザプログラムの修正が可能となり、その際、修正は、実際の条件下で、複数の制御ユニットにおいて実行され、そのようにして試験されてもよい。
【００４６】
好適な実施形態では、続いて、すべての影響を受ける制御ユニットに、修正された第1のコード部分をそれぞれの第2のメモリへとロードし、かつ、それを記載したやり方で実行するよう要求するために、プログラミングツールは、オリジナルな第1のプログラム部分が実行されるすべてのネットワーク化された制御ユニットを把握するよう設計されている。
【００４７】
好ましい実施形態では、修正された第1のプログラム部分を異なるハードウェアプラットフォーム上で実行するために、プログラミングツールは、修正された第1のプログラム部分を、少なくとも2つの異なる制御ユニット用に異なってコンパイルするよう設計されている。
【００４８】
さらなる改良形態では、前記第1のプログラム部分の前記修正は、ユーザの識別に応じて有効化または無効化される。
【００４９】
この改良形態では、第1のプログラム部分を修正したいユーザはまず、識別手続きを正常に経なければならない。いくつかの実施形態では、ユーザの識別は、パスワードの入力を含んでいてもよい。あるいは、または、くわえて、ユーザの識別は、電子キーおよび/またはメカニカルキーに基づいて行ってもよい。この改良形態により、安全関連の制御処理において、不正操作および意図せぬ介入に対する安全性の増加がもたらされる。
【００５０】
さらなる改良形態では、前記第2のメモリへの前記修正された第1のコード部分の前記転送は、日付スタンプとともに、追加のメモリに記録（log）される。好ましくは、追加のメモリは不揮発性メモリである。
【００５１】
この改良形態は、安全関連の第1のプログラム部分へのいかなる修正も、一時的に可能なだけである場合であっても、自動で記録され、かつ、そのようにして後で追跡することもできるという利点を有している。一方で、これは、安全制御器をプログラミングする際に、プログラムコードの不具合対応および最適化を促進する。他方で、不正操作または不正操作の試みを識別および防止することが容易になる。
【００５２】
上述した特徴および以下に説明する特徴が、本発明の範囲を逸脱することなく、それぞれの特定の組み合わせだけでなく、他の組み合わせでも、または単独でも適用可能であることを理解されたい。
【図面の簡単な説明】
【００５３】
【図１】本発明の実施形態に係る分散型の安全制御器を含む複雑な設備を高度に模式的に表現した図である。
【図２】図1の設備の単一の制御ユニットを模式的に表現した図である。
【図３】本新規な方法の実施形態を説明するためのフローチャートである。
【発明を実施するための形態】
【００５４】
本発明の実施形態を図面に示し、以下の説明において、より詳細に説明する。
【００５５】
図1では、参照番号10が設備全体を示しており、この設備は、実施形態に係る新規な安全制御器を介して制御される。設備10は、複数の設備部品12を含んでいる。本実施形態では、これらは、配置ステーション14、処理ステーション16、試験ステーション18、搬送ユニット20、ならびに、梱包およびパレット載置ステーション22である。
【００５６】
仕掛品は、例えばロボットを含んでいてもよい配置ステーション14を介して、処理ステーション16に自動で送られる。これらの仕掛品は処理ステーション16で処理される。続いて、処理された仕掛品は、試験ステーション18に送られ、試験ステーション18において、処理された仕掛品が事前設定された試験規準を満たしているかが確認される。これらの試験規準を満たしている場合、仕掛品は搬送ユニット20により、梱包およびパレット載置ステーション22に移送される。このステーションで、複数の仕掛品がパッケージに組み合わされ、パッケージは次いでパレットに積載される。このようにして、設備10は、自動で制御される複数の設備の例となっており、そこでは、安全関連および非安全関連の処理が、全体の処理へと組み合わされている。
【００５７】
ここで、参照番号24は、本発明の実施形態に係る安全制御器の全体を示している。安全制御器24は、特にプログラム可能な制御ユニット28、センサ装置30およびアクチュエータ装置32の形態の複数のハードウェア部品26と、ここで本発明の方法に従って生成されたユーザプログラムを含むソフトウェア部品とを含んでいる。
【００５８】
好ましい実施形態では、センサ装置30およびアクチュエータ装置32は、モジュール的に組み立てられたI/O装置であり、それには、位置スイッチ、回転エンコーダ、温度センサ、ソレノイドバルブ、コネクタおよび/または電気駆動装置などの、複数の異なるセンサおよびアクチュエータが接続されていてもよい。
【００５９】
好ましい実施形態では、制御ユニットは、上述した自動システムPSS 4000から原則として公知のように、モジュール式のセンサおよびアクチュエータと一緒に、組み合わされたアセンブリを形成していてもよい。
【００６０】
好適には、制御ユニット、センサおよびアクチュエータはそれぞれ、設備部品12の1つと関連付けられている。制御システムハードウェア部品26は好適には、通信ネットワーク34を介して相互接続されている。通信ネットワークは、ブランド名SafetyNET p（登録商標）でPilz GmbH & Co. KGにより提供および市販されている、イーサネット（登録商標）ベースのバスシステムを含んでいてもよい。あるいは、または、くわえて、通信ネットワーク34は、自動化された制御システムにおける周期的なデータトラフィック用に特に設計されている、追加のバスシステムを含んでいてもよい。
【００６１】
個々のステーション14、16、18、22の作業区域は、例えば、関連付けられた制御ユニットがそれぞれのステーションを安全状態にした場合にのみ個々のステーションの危険な作業区域への接近を許可する安全ドアによって、保護されていてもよい。あるいは、または、くわえて、光グリッドまたは光カーテンを使用してもよい。くわえて、個々のステーション14、16、18、22は、緊急停止ボタンを設けられていてもよく、緊急停止ボタンを介して、各ステーションは、特に電源を切断することにより、安全状態に移行されてもよい。この目的のために、通常、各ステーション用に電流供給路内に配置された接触器が駆動される。
【００６２】
上述した安全ドア、光グリッド、光カーテンおよび緊急停止ボタンは通常、安全関連のセンサであり、その出力信号は、ステーションの電流供給路における接触器などの安全関連のアクチュエータを稼働するために、それに応じて、論理的に結合されている。くわえて、ステーションのセンサ装置30は、作動を制御するために必要とされ、かつ、例えば、作動上の回転の速さ、角度、位置、または、作動を制御するために必要な速さを検知する、多数の非安全関連のセンサを含んでいてもよい。アクチュエータ32は同様に、非安全関連のアクチュエータ（特にモータまたは作動シリンダ（actuating cylinder））を含んでいてもよい。
【００６３】
本実施形態では、別体の制御ユニット28は、各ステーション14、16、18、22に関連付けられている。あるいは、共通の制御ユニットを介して、設備の複数のステーションを制御することが可能である。設備部品は、互いに構造的および空間的に分離されている。しかし、複数の設備部品が接続されて、統合されたステーションを形成することも考えられる。
【００６４】
図1は、同一の参照数字を有する機能的に同一の部品を示しており、そこでは、ダッシュは、それぞれの部品が異なって実施されてもよいことを示している。同じことが信号にも当てはまる。この種の識別が他の図面にも当てはまる。
【００６５】
図2は、プログラミングツール36と一緒に、単一の制御ユニット28を示している。好ましい実施形態では、プログラミングツールは、コンピュータプログラム（ソフトウェア）40が実行されるパーソナルコンピュータ（ＰＣ）38である。コンピュータプログラム40は、ＰＣ38上でプログラムエディタ42を提供し、プログラムエディタ42は、ユーザが、ユーザにとって好適なプログラミング言語で、制御ユニット28用および/または複数の制御ユニット28、28’、28’’などのためのユーザプログラムを作成することを可能にする。
【００６６】
好ましくは、プログラムエディタは、規格EN 61131に基づく1つまたは複数のプログラミング言語を提供する。これらは例えば、特にいわゆる機能ブロックに基づき、グラフィック形式（graphical form）において、選択されたセンサ信号と選択されたアクチュエータ信号との間の論理的依存性の定義を可能にするプログラミング言語を含んでいる。
【００６７】
プログラミングツール36はコンパイラ44をさらに含んでおり、コンパイラ44により、より高度なプログラミング言語で作成されたプログラム部分を、制御システム28により機械可読とされ、かつ実行される機械語へと翻訳することができる。好ましい実施形態では、プログラミングツールは、第1のコンパイラ44aおよび第2のコンパイラ44bを含んでいる。第1のコンパイラ44aおよび第2のコンパイラ44bは、安全関連のプログラム部分45から、2つの別体の実行可能なプログラムコードを生成し、続いて、それらが、より高いフェールセーフ性を達成するために、1つまたは複数のプロセッサにより、冗長に実行される。
【００６８】
図示した実施形態では、第1のコンパイラ44aにより第1のプログラム部分45から生成されて、機械可読な形態の安全関連の論理的依存性を定義する第1のコード部分を、参照数字46aが示している。参照数字46bは、第2のコンパイラ44b が第1のプログラム部分45から生成した第2のコード部分を表す。第2のコード部分46bは、第1のコード部分46aと同じ論理的依存性を表すが、これは冗長かつ好ましくは別の（diverse）実装においてである。いくつかの好ましい実施形態では、コード部分46a、46bは、異なるプロセッサ用にコンパイルされてもよい。しかし、原則として、1つのプロセッサまたは同種の複数のプロセッサ上でのコード部分46a、46bの実行が考えられる。
【００６９】
参照数字48は、本実施形態では第1のコンパイラ44aにより追加のプログラム部分49から生成された、追加のコード部分を表している。追加のコード部分48は、安全関連の機能に関係していない、選択されたセンサ信号およびアクチュエータ信号の間の論理的依存性を表している。ゆえに、この実施形態では、コード部分48は、標準的な処理用のコード部分である。冗長なコード部分46a、46bは、安全関連の処理を制御するために使用される。
【００７０】
参照数字50は、複数のコード部分46a、48をリンクして、制御システム28用の実行可能なプログラムコードを形成できる、リンカ（linker）を示す。単なる例としてここに記載したコード部分に加えて、本新規な方法が、いくつかが安全関連であり他が非安全関連である、複数のコード部分を生成してもよいことに留意されたい。通常、リンカ50は、複数のコード部分を編成して、実行可能なプログラムコード52を形成する。特に、いくつかの実施形態では、複数の安全関連のコード部分をアセンブルして、実行可能なプログラムコードを形成することが可能である。
【００７１】
プログラミングツール36は第1のインターフェース54を有しており、第1のインターフェース54を介して、実行可能なプログラムコード52が制御ユニット28の第1のメモリ56へと転送される。好ましい実施形態では、第1のメモリ56は、制御ユニット28に固定的に統合された、例えばEEPROMの形態の、不揮発性メモリである。あるいは、または、くわえて、第1の不揮発性メモリ56は、例えばSDカードの形態の、フラッシュメモリであってもよい。
【００７２】
参照数字58は、好ましい実施形態において揮発性メモリである、制御ユニット28の第2のメモリを表す。プログラミングツール36は、追加のインターフェース60を有しており、追加のインターフェース60を介して、特に、修正された第1のコード部分61aおよび修正された第2のコード部分61bをメモリ58に転送することができる。
【００７３】
ここで、参照数字62a、62bは、制御ユニット28の好ましい実施形態において、互いに対して冗長に作動する、2つのマイクロプロセッサを表している。双方向矢印64は、マイクロプロセッサ62a、62bが、それらの処理結果を比較する、および/または、相互に確認することができることを示している。
【００７４】
好ましい実施形態では、マイクロプロセッサ62aは、第1の安全関連のコード部分46aおよび非安全関連のコード部分48を実行し、第2のマイクロプロセッサ62 bは、第2の安全関連のコード部分46bを実行する。一般に、少なくとも安全関連のコード部分は、上述した規格に関して、SIL3および/またはPL eの要求に対応する高いフェールセーフ性を達成するために、制御ユニット28により、2つのチャンネルで冗長に実行されるのが好ましい。しかし、原則として、制御ユニット28のフェールセーフな実施も、別のやり方で実現することができる。
【００７５】
参照数字66は、I/Ｏインターフェースを示す。I/Ｏインターフェースを介して、制御ユニット28は、センサ30から現在の処理値を読み込むことができ、かつ、アクチュエータ32を制御するために、現在の処理値を出力することができる。好ましい実施形態では、I/Ｏインターフェースは、制御ユニット28を通信ネットワーク34へと接続するためのバスインターフェースを含んでいる。
【００７６】
いくつかの実施形態では、I/Ｏインターフェース66は、ユーザの識別68を発見するためのインターフェース68を含んでいる。いくつかの実施形態では、ユーザの識別は、パスワードを入力すること、ならびに/または、電子キーおよび/もしくはメカニカルキーを読み込むことを含んでいてもよい。あるいは、または、くわえて、ユーザの識別を読み込むためのインターフェースを、プログラミングツール36（ここに図示せず）で実行してもよい。
【００７７】
参照数字70は、例えば信号灯の形態で実施される、視覚的なインジケータを表示している。好ましい実施形態では、視覚的なインジケータ70は、以下に説明するように、修正された第1のコード部分61aが制御ユニット28により実行されたときに、合図する。
【００７８】
参照数字72は、制御ユニット28のいわゆるファームウェアが保存される、追加の不揮発性メモリを表示している。ファームウェアはオペレーティングシステムを含んでおり、オペレーティングシステムによって、制御ユニット28は、プログラミングツール36を介してメモリ56、58にロードされたコード部分46a、46b、48を実行することを可能とされる。好ましい実施形態では、修正された第1のコード部分61aおよび修正された第2のコード部分61bの実行を一時的に制限する、規定の期間74がファームウェアに保存されている。
【００７９】
この実施形態では、マイクロプロセッサ62a、62bのそれぞれが、プログラムコードポインタ76を有しており、プログラムコードポインタ76はそれぞれ、それ自体公知の仕方で、周期的に実行されるプログラムコード内で実行されることになる次の命令コードを指し示す。
【００８０】
いくつかの好ましい実施形態では、2つのマイクロプロセッサ62a、62bそれぞれのプログラムコードポインタ76は、ファームウェア72により、および、プログラミングツール36により、プロセッサ62aが修正された第1のコード部分61aを一時的に実行し、プロセッサ62bが修正された第2のコード部分61bを一時的に実行するように、修正される。
【００８１】
図3は、簡略化されたフローチャートに基づく、新規な方法の好ましい実施形態を示している。ステップ80において、安全制御器24をプログラミングしたいと思うユーザが、選択されたセンサ信号と選択されたアクチュエータ信号との間の安全関連の論理的依存性を規定する少なくとも1つの第1のプログラム部分を作成する。つまり、ユーザは、少なくとも1つのFSプログラム部分を作成する。実際の実施形態では、FSプログラム部分は、複数のFSプログラムモジュールで形成されていてもよく、その結果、第1のプログラム部分は、追加のサブプログラム部分に分割されてもよい。
【００８２】
ステップ82において、ユーザは、センサ信号とアクチュエータ信号との間の非安全関連の論理的依存性を通常規定する少なくとも1つの追加のプログラム部分を作成する。つまり、ステップ82において、ユーザは、STプログラム部分を作成する。
【００８３】
ステップ84において、ステップ80、82からのプログラム部分がコンパイルされおよびリンクされて、安全制御器24用の実行可能なプログラムコードを形成する。好ましい実施形態では、2つの冗長なFSコード部分を生成するために、第1のプログラム部分（FSプログラム部分）が、2つのコンパイラ44a、44bにより2度コンパイルされる。
【００８４】
いくつかの実施形態では、2つの冗長なFSコード部分の一方のみが、ステップ82からのSTコード部分にリンクされる。しかし、他の実施形態では、STコード部分は、2つのFSコード部分のそれぞれの1つにリンクされて、実行可能なプログラムコードを形成してもよい。
【００８５】
ステップ86において、実行可能なプログラムコードは、安全制御器の第1のメモリにダウンロードされる。続いて、ステップ88において、ダウンロードされたプログラムコードが、安全制御器中のプロセッサにより実行されるように、安全制御器24が作動される。安全制御器24は、第1のメモリからのプログラムコードを、それ自体公知の仕方で、周期的に繰り返される仕方で実行し、その際、センサ30からの現在の処理値を読み込み、各周期において、アクチュエータ32用に現在の処理値を判定し、それらをI/Ｏインターフェースを介してアクチュエータに出力する（ステップ89）。
【００８６】
好ましい実施形態によれば、ユーザは、プログラムコードの実行中に第1のプログラム部分において修正を行ってもよく（ステップ90）、修正された第1のプログラム部分を再コンパイルしてもよく（ステップ92）、かつ、ステップ94において、このようにして得られた修正されたコード部分を、安全制御器の第2のメモリへとダウンロードしてもよい。好ましい実施形態では、例えばパスワードクエリ96を含むユーザの識別が、前もって要求される。すでに上で示唆したように、2つの冗長な修正されたコード部分61a、61bを得るために、ステップ92は、修正された第1のプログラム部分のダブルコンパイルを含んでいてもよい。
【００８７】
ステップ98において、修正された第1のコード部分のダウンロードは、タイムスタンプとともにログされる（記録される）。好ましい実施形態では、ログは、タイムスタンプと一緒に、プログラミングツール36の不揮発性メモリおよび/または安全制御器24に保存される。さらに、ステップ100によれば、インジケータ70が稼働される。
【００８８】
視覚的なインジケータを稼働する前に行うこともできるステップ102において、安全制御器の少なくとも1つのプロセッサのプログラムコードポインタが、第1のメモリ56からのプログラムコードの周期的な実行の範囲内で安全関連の第1のコード部分が実行されるようにされるとすぐに、不揮発性メモリ58中の修正された第1のコード部分をここで指すように、プログラミングツール36および/またはファームウェア72により変更される。その結果、第1のメモリ56からのオリジナルな第1のコード部分46aの代わりに、揮発性メモリ58からの修正された第1のコード部分61aがここで実行される。好ましい実施形態では、メモリ56からの冗長なオリジナルな第2のコード部分46bの代わりに、揮発性メモリ58からの冗長な修正された第2のコード部分61bが同様に実行される。
【００８９】
修正された安全関連のコード部分を含むプログラムコードの周期的な実行は、好ましい実施形態では、時間制限されている。ゆえに、ステップ104において、安全制御器がソフトウェアリセットまたは再起動を介してオリジナルなプログラムコードに戻ることになっているかどうかについて、クエリが作成される。
【００９０】
そうでない場合、ステップ106において、修正されたプログラムコードの一時的な実行に関する最大の時間制限74に到達しているかが、確認される。肯定であれば、好ましい実施形態では、安全制御器24のファームウェアが、安全制御器（そしてそれゆえに設備10）が、安全状態に入る（ステップ108）ことを保証する。安全状態から手動での再起動が要求される。ステップ110において、安全制御器は、手動での再起動のあとに、オリジナルな修正されていないプログラムコードを実行する。
【００９１】
ユーザが、恒久的に実行される修正されたプログラムコードを得ることを望む場合、ステップ112において、ユーザは、修正された第1のプログラム部分を、追加のプログラム部分と一緒に、再コンパイルおよびリンクしなければならない。修正されたプログラムコードはこのようにして、新たなオリジナルなプログラムコードとして、安全制御器24の不揮発性メモリ56へと転送される。
【００９２】
好ましい実施形態では、新規な方法を使用して、第1のプログラム部分45における論理的依存性のみを修正することができるが、安全制御器24の物理的な接続と処理変数との間のI/Ｏ割り当て（いわゆるI/Ｏマッピング）はない。好ましい実施形態では、安全制御器24のハードウェアの修正も、安全制御器24がプログラムコードを実行する限り、排除される。すなわち、このような修正は、安全制御器24が停止されて現行の制御機能を果たさない場合に、ユーザにより行われなければならない。
【００９３】
好ましい実施形態では、第1のプログラム部分における修正および結果としての第1のコード部分の修正は、永続的でない（non-persistent）。これは、安全制御器に元々転送されたプログラムコードが上書きされず、変更のないまま保持されることを意味している。好ましい実施形態では、修正は、不揮発性メモリ58においてのみ行われる。その結果、安全制御器は、リセットコマンドを実行した後または例えば、供給電圧を切断した後の再起動を介して、オリジナルなプログラムコードに戻る。好ましい実施形態では、プログラムコードの恒久的な修正には、完全にコンパイルおよびリンクされたプログラムコードの再ダウンロードが必要である。
【００９４】
すでに上で示唆したように、好ましい実施形態では、プログラミングツール36が、修正された第1のコード部分61aが実行されることになる、すべての制御ユニット28、28’、28’’を決定する。好ましい実施形態では、続いて、プログラミングツール36が、影響を受けるすべての制御ユニットへの組み込み用に、修正された第1のコード部分を（および、好ましくは、冗長な実行用の修正された第2のコード部分をも）供給する。結果として、影響を受けるすべての制御ユニット中のプログラムコードポインタが、続いて、修正されたコード部分へと一時的にルート変更される。
【００９５】
組織的な観点から、第1のプログラム部分45における修正についての特定のリスク分析を行うことは、ユーザの責任である。適用可能であれば、ユーザは、安全水準が低下している場合に、制御された設備の近傍での人に対する危害が、異なるやり方で管理されることを保証しなければならない。
【００９６】
本出願は、2015年11月24日に出願された独国特許出願第10 2015 120 314.6号明細書のパリ条約優先権を主張する。この優先権出願の全内容は、参照により本明細書に組み込まれる。
【図１】
2017117444.tif 000003
【図２】
2017117444.tif 000004
【図３】
2017117444.tif 000005
【外国語明細書】
2017117444.tif 000006
2017117444.tif 000007
2017117444.tif 000008
2017117444.tif 000009
2017117444.tif 000010
2017117444.tif 000011
2017117444.tif 000012
2017117444.tif 000013
2017117444.tif 000014
2017117444.tif 000015
2017117444.tif 000016
2017117444.tif 000017
2017117444.tif 000018
2017117444.tif 000019
2017117444.tif 000020
2017117444.tif 000021
2017117444.tif 000022
2017117444.tif 000023
2017117444.tif 000024
2017117444.tif 000025
2017117444.tif 000026
2017117444.tif 000027
2017117444.tif 000028
2017117444.tif 000029
2017117444.tif 000030
2017117444.tif 000031
2017117444.tif 000032
2017117444.tif 000033
【図１】
2017117444.tif 000034
【図２】
2017117444.tif 000035
【図３】
2017117444.tif 000036