JP5619331B1 - プログラミング装置及び実行コード生成方法 - Google Patents
プログラミング装置及び実行コード生成方法 Download PDFInfo
- Publication number
- JP5619331B1 JP5619331B1 JP2014526728A JP2014526728A JP5619331B1 JP 5619331 B1 JP5619331 B1 JP 5619331B1 JP 2014526728 A JP2014526728 A JP 2014526728A JP 2014526728 A JP2014526728 A JP 2014526728A JP 5619331 B1 JP5619331 B1 JP 5619331B1
- Authority
- JP
- Japan
- Prior art keywords
- safety
- cpu
- drive
- function block
- execution code
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/04—Programme control other than numerical control, i.e. in sequence controllers or logic controllers
- G05B19/05—Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
- G05B19/056—Programming the PLC
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/10—Plc systems
- G05B2219/14—Plc safety
- G05B2219/14012—Safety integrity level, safety integrated systems, SIL, SIS
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/20—Pc systems
- G05B2219/23—Pc programming
- G05B2219/23469—Execute alternatively a failsafe, proven program and a non failsafe program
Abstract
コントローラ(1)は、駆動制御を行う駆動CPU(10)と、安全制御を行う安全CPU(20)と、を備える。プログラミング装置は、駆動CPU(10)が実行する駆動CPU実行コードと安全CPU(20)が実行する安全CPU実行コードとを生成するコンパイラ(100)を備える。コンパイラ(100)は、駆動制御のための駆動機能ブロックと安全制御のための安全機能ブロックとの両方を含むソースプログラムをコンパイルし、駆動機能ブロックを駆動CPU(10)に割り当てることによって駆動CPU実行コードを生成し、また、安全機能ブロックを安全CPU(20)に割り当てることによって安全CPU実行コードを生成する。
Description
本発明は、駆動制御と安全制御を行うコントローラが実行するプログラムの実行コードを生成する技術に関する。
工場等における自動機械の制御に用いられるPLC(Programmable Logic Controller)等のコントローラが知られている。そのようなコントローラは、駆動制御やシーケンス制御を行う。駆動制御として、例えば、サーボモータを駆動するサーボアンプを制御して、駆動軸の速度や回転角度を制御することが挙げられる。シーケンス制御として、例えば、外部スイッチの動作に応答してサーボモータ周辺の機器の動作を制御することが挙げられる。
特許文献1は、駆動制御とシーケンス制御を行うPLCを開示している。具体的には、カム動作が、カムテーブルを用いたモーション制御によって実現される。一方、カムテーブルの切り替えが、シーケンス制御により実現される。それらモーション制御とシーケンス制御は、PLCの1つのCPUユニットによって実行される。
PLC等のコントローラにおいて、システムの非常停止、駆動軸の速度監視や停止といった安全機能も重要である。そのような安全機能はシーケンス制御により実現され得る。安全機能のためのシーケンス制御は、以下「安全制御」と呼ばれる。
駆動制御と安全制御は、異なる概念で設計されるため、それらを別々のプログラムに記述することも考えられる。しかしながら、その場合、プログラミング工数が増大する。
本発明の1つの目的は、駆動制御と安全制御を行うコントローラに対するプログラミングに有用な技術を提供することにある。
本発明の1つの観点において、コントローラが実行するプログラムの実行コードを生成するプログラミング装置が提供される。コントローラは、コントローラに接続された駆動装置の駆動制御を行う駆動CPUと、駆動装置の安全制御を行う安全CPUと、を備える。プログラミング装置は、駆動CPUが実行する駆動CPU実行コードと安全CPUが実行する安全CPU実行コードとを生成するコンパイラを備える。コンパイラは、駆動制御のための駆動機能ブロックと安全制御のための安全機能ブロックとの両方を含むソースプログラムをコンパイルし、駆動機能ブロックを駆動CPUに割り当てることによって駆動CPU実行コードを生成し、また、安全機能ブロックを安全CPUに割り当てることによって安全CPU実行コードを生成する。
本発明の他の観点において、コントローラが実行するプログラムの実行コードを生成する実行コード生成方法が提供される。コントローラは、コントローラに接続された駆動装置の駆動制御を行う駆動CPUと、駆動装置の安全制御を行う安全CPUと、を備える。実行コード生成方法は、駆動CPUが実行する駆動CPU実行コードと安全CPUが実行する安全CPU実行コードとを生成するステップを有する。当該生成するステップは、駆動制御のための駆動機能ブロックと安全制御のための安全機能ブロックとの両方を含むソースプログラムをコンパイルし、駆動機能ブロックを駆動CPUに割り当てることによって駆動CPU実行コードを生成し、また、安全機能ブロックを安全CPUに割り当てることによって安全CPU実行コードを生成するステップを含む。
本発明は、駆動制御と安全制御を行うコントローラに対するプログラミングに有用である。
添付図面に基づいて、本発明の実施の形態を説明する。
実施の形態1.
図1は、本発明の実施の形態1の概要を示すブロック図である。安全駆動コントローラ1は、工場等で使用されるPLC(Programmable Logic Controller)等のコントローラである。
図1は、本発明の実施の形態1の概要を示すブロック図である。安全駆動コントローラ1は、工場等で使用されるPLC(Programmable Logic Controller)等のコントローラである。
安全駆動コントローラ1は、駆動装置30に接続されており、その駆動装置30の駆動制御を行う。駆動装置30としては、インバータや、サーボモータを駆動するサーボアンプが例示される。この場合、駆動制御として、インバータやサーボアンプを制御することによって、駆動軸の速度や回転角度を制御することが挙げられる。
また、安全駆動コントローラ1は、駆動装置30に関する安全制御も行う。具体的には、安全駆動コントローラ1は、安全装置40に接続されており、その安全装置40からの入力に応答して安全制御を行う、あるいは、安全制御のために安全装置40を動作させる。例えば、安全装置40が外部の非常停止スイッチである場合、安全制御として、非常停止スイッチの操作に応答してシステムを非常停止させることが挙げられる。また、安全装置40がモータに設けられたエンコーダである場合、安全制御として、エンコーダによって検出された回転速度に基づいて駆動軸の速度制限を行うことが挙げられる。また、安全装置40が外部のリレーである場合、安全制御として、そのリレーをOFFすることが挙げられる。
このように、安全駆動コントローラ1は、駆動制御と安全制御の両方を行う。ここで、本実施の形態では、駆動制御における高速且つ高精度な演算処理を実現するために、駆動制御と安全制御のために別々のCPUが用いられる。より詳細には、図1に示されるように、安全駆動コントローラ1は、駆動CPU10と安全CPU20とを別々に搭載している。駆動CPU10は、駆動装置30に接続されており、上述のような駆動制御を行う機能を有する。一方、安全CPU20は、安全装置40に接続されており、上述のような安全制御を行う機能を有する。また、駆動CPU10と安全CPU20は、互いに通信可能に接続されている。駆動CPU10と安全CPU20は、デュアルコアプロセッサで実現されてもよい。
尚、一般に、駆動制御に対しては、安全制御よりも高速処理が要求される。例えば、駆動制御にはms以下の処理速度が要求される一方、安全制御の処理速度は10ms程度でもよい。従って、駆動CPU10として、安全CPU20よりも処理性能が高いものが使用される。
本実施の形態では、このような安全駆動コントローラ1が実行するプログラムの実行コードを作成する技術が提案される。本実施の形態に係る安全駆動コントローラ1が実行するプログラムのソースコードは、駆動制御と安全制御の両方を含んでおり、以下「安全駆動プログラムSRC」と呼ばれる。すなわち、1つのソースコードである安全駆動プログラムSRCに、駆動制御と安全制御の両方が記述されている。
より詳細には、安全駆動プログラムSRCの制御ロジックは、POU(Program
Organization Unit:プログラム構成単位)の組み合わせで記述される。POUは、機能ブロックに相当する。駆動制御及び安全制御のためのPOUは、以下、「駆動POU」及び「安全POU」とそれぞれ呼ばれる。図1に示されるように、本実施の形態では、1つの安全駆動プログラムSRCが、駆動POUと安全POUの両方を含んでいる。つまり、1つの安全駆動プログラムSRC中に、駆動POUと安全POUが組み合わされて記述されている。
Organization Unit:プログラム構成単位)の組み合わせで記述される。POUは、機能ブロックに相当する。駆動制御及び安全制御のためのPOUは、以下、「駆動POU」及び「安全POU」とそれぞれ呼ばれる。図1に示されるように、本実施の形態では、1つの安全駆動プログラムSRCが、駆動POUと安全POUの両方を含んでいる。つまり、1つの安全駆動プログラムSRC中に、駆動POUと安全POUが組み合わされて記述されている。
安全駆動プログラムSRCの実行コードは、駆動CPU10が実行する駆動CPU実行コードEXE1と、安全CPU20が実行する安全CPU実行コードEXE2とを含んでいる。これら駆動CPU実行コードEXE1と安全CPU実行コードEXE2は、別々の実行コードであり、それぞれ駆動CPU10と安全CPU20に供給される。駆動CPU10は駆動CPU実行コードEXE1を実行することにより駆動制御を行い、安全CPU20は安全CPU実行コードEXE2を実行することにより安全制御を行う。これにより、安全駆動コントローラ1全体として、駆動装置30の駆動制御と安全制御が実現される。
安全駆動プログラムSRCからこれら駆動CPU実行コードEXE1及び安全CPU実行コードEXE2を生成するのが、コンパイラ100である。コンパイラ100は、1つの安全駆動プログラムSRCを読み込み、その安全駆動プログラムSRCをコンパイルすることによって、駆動CPU実行コードEXE1と安全CPU実行コードEXE2を同時且つ別々に生成する。
より詳細には、コンパイラ100は、POUの名称または名称プリフィックスに基づいて、駆動POUと安全POUを識別する。そして、コンパイラ100は、安全POUや、異なる安全POU間をつなぐインタフェースを、安全CPU20とそのメモリに割り当てる。また、コンパイラ100は、駆動POUと安全POUとをつなぐインタフェースを、駆動CPU10と安全CPU20との間に通信に用いられる共有メモリに割り当てる。ここで、インタフェースとは、メモリアドレスや変数を意味する。
それ以外については、コンパイラ100は、処理性能の優れた駆動CPU10とそのメモリへの割り当てを行う。つまり、コンパイラ100は、駆動POUや、異なる駆動POU間をつなぐインタフェースを、駆動CPU10とそのメモリに割り当てる。また、ある処理に関するPOUを駆動CPU10と安全CPU20のいずれにも割り当て可能な場合、すなわちいずれでも実行可能な場合、コンパイラ100は、当該POUとそのインタフェースを優先的に駆動CPU10とそのメモリに割り当てる。
このような割り当てにより、コンパイラ100は、駆動CPU実行コードEXE1と安全CPU実行コードEXE2を同時に生成する。生成された駆動CPU実行コードEXE1と安全CPU実行コードEXE2は、安全駆動コントローラ1の駆動CPU10と安全CPU20のそれぞれに転送される。そして、安全駆動コントローラ1のリセット後、駆動CPU10と安全CPU20のそれぞれが、駆動CPU実行コードEXE1と安全CPU実行コードEXE2の実行を開始する。
図2は、本実施の形態に係るコンパイラ100を実現するプログラミング装置110の構成例を示すブロック図である。このプログラミング装置110は、コンピュータであり、処理装置120、記憶装置130、コントローラ通信部140、入力装置150、及び表示装置160を備えている。
処理装置120は、CPU等のプロセッサであり、各種の演算処理や制御処理を実行する。記憶装置130は、RAMやHDDを含んでいる。この記憶装置130には、ソースコードである安全駆動プログラムSRC、コンパイル処理用のライブラリLIB、コンパイルによって生成される実行コードEXE1、EXE2などが格納される。コントローラ通信部140は、安全駆動コントローラ1とのデータ通信に用いられる。入力装置150は、キーボードやマウスを含んでいる。ユーザは、表示装置160に表示される情報を参照しながら、入力装置150を使用して、安全駆動プログラムSRCの作成及び編集、コマンドや各種データの入力が可能である。コマンドとしては、例えばコンパイル実行が挙げられる。
コンパイラ100は、処理装置120がコンパイラプログラムを実行することにより実現される。尚、コンパイラプログラムは、コンピュータ読み取り可能な記録媒体に記録されていてもよい。ユーザからの指示に従い、コンパイラ100は、記憶装置130に保存されている安全駆動プログラムSRCを取得し、その安全駆動プログラムSRCをコンパイルする。このとき、コンパイラ100は、既に作成されているライブラリLIBのファイルを利用してもよい。このコンパイルの結果、駆動CPU実行コードEXE1及び安全CPU実行コードEXE2が生成される。生成された駆動CPU実行コードEXE1と安全CPU実行コードEXE2は、コントローラ通信部140を介して、安全駆動コントローラ1へ転送される。
以上に説明されたように、本実施の形態に係るコンパイラ100は、駆動制御と安全制御の両方を含む安全駆動プログラムSRCをコンパイルして、駆動CPU実行コードEXE1と安全CPU実行コードEXE2をそれぞれ別々に生成することができる。つまり、駆動制御と安全制御を1つのソースコードに記述しておき、1回のコンパイルで駆動CPU10と安全CPU20のそれぞれ用の実行コードを得ることができる。駆動制御と安全制御を別々のプログラムに記述する必要がなくなるため、プログラミング工数を削減することが可能となる。
また、本実施の形態によれば、駆動制御のための駆動CPU10と安全制御のための安全CPU20とが別々に設けられる。ここで、駆動制御に対しては安全制御よりも高速処理が要求されるため、駆動CPU10として、安全CPU20よりも処理性能が高いものが使用される。そして、コンパイルにおいては、処理性能の優れた駆動CPU10に対して優先的に処理が割り当てられる。これにより、全体としての処理速度が向上する。
実施の形態2.
図3は、本発明の実施の形態2の概要を示すブロック図である。尚、既出の実施の形態と重複する説明は適宜省略する。
図3は、本発明の実施の形態2の概要を示すブロック図である。尚、既出の実施の形態と重複する説明は適宜省略する。
本実施の形態では、安全駆動コントローラ1の安全CPU20が、認証安全POU21を内蔵している。認証安全POUとは、安全規格に適合した安全POUのことである。本実施の形態では、安全駆動コントローラ1が、安全CPU20における認証安全POU21に関する構成情報を収集し、安全POU構成情報CONFを作成する。
一例として、安全CPU20が“STO(Safe Torque Off)”という認証安全POU21を内蔵している場合を考える。安全CPU20が内蔵する“STO”は、例えば、サーボモータへの電力供給を遮断するために、サーボアンプとサーボモータとの間に設けられたリレーをOFFする関数である。図4は、この例の場合の安全POU構成情報CONFを示している。一般に、POUのデータ構造は、名称、インタフェース、及び処理ロジックを有している。CPU内蔵のPOUの場合、インタフェースは構造体であり、処理ロジックは関数へのポインタである。図4の例では、STOが、2つの入力(Emg0/Emg1)の論理積に基づいて安全出力(Sout)を制御する。
電源投入時の構成管理フェーズにおいて、安全駆動コントローラ1は、安全CPU20が内蔵している認証安全POU21に関する構成情報を収集し、その一覧を示す安全POU構成情報CONFを作成する。そして、安全駆動コントローラ1は、作成した安全POU構成情報CONFを、プログラミング装置110に送信する。あるいは、プログラミング装置110が、あるタイミングで、例えばコンパイル実施時に、安全駆動コントローラ1から安全POU構成情報CONFを読みだしてもよい。いずれにせよ、プログラミング装置110は、図5に示されるように、安全POU構成情報CONFを取得し、その安全POU構成情報CONFを記憶装置130に格納する。
コンパイル時、コンパイラ100は、記憶装置130から安全POU構成情報CONFを読み込む。そして、コンパイラ100は、安全POU構成情報CONFを参照して、安全駆動プログラムSRCに含まれる安全POUと同一名の認証安全POU21が安全CPU20に内蔵されているかチェックする。
安全駆動プログラムSRC中の安全POUと同一名の認証安全POU21が安全CPU20に内蔵されている場合、コンパイラ100は、当該安全POUをコンパイルする代わりに、安全CPU20に内蔵されている認証安全POU21を使用するように安全CPU実行コードEXE2を生成する。このとき、コンパイラ100は、両者のインタフェースを比較して、インタフェースの調整を行う。具体的には、一致するインタフェースについてはそのまま使用し、余剰または不足するインタフェースについては安全POU構成情報CONFに合わせて無視または補完する。その他は、実施の形態1と同様である。
図6は、安全POU構成情報CONFが利用される場合の処理を要約的に示すフローチャートである。
ステップS1:
安全駆動コントローラ1は、安全POU構成情報CONFを作成する。プログラミング装置110は、その安全POU構成情報CONFを取得する。
安全駆動コントローラ1は、安全POU構成情報CONFを作成する。プログラミング装置110は、その安全POU構成情報CONFを取得する。
ステップS10:
コンパイラ100は、安全駆動プログラムSRCをコンパイルし、駆動CPU実行コードEXE1及び安全CPU実行コードEXE2を生成する。このとき、コンパイラ100は、安全POU構成情報CONFを参照する(ステップS11)。安全駆動プログラムSRC中の安全POUと同一名の認証安全POU21が安全CPU20に内蔵されているとする(ステップS12;No、ステップS14;Yes)。この場合、コンパイラ100は、安全CPU20の認証安全POU21を使用するように安全CPU実行コードEXE2を生成する(ステップS15)。
コンパイラ100は、安全駆動プログラムSRCをコンパイルし、駆動CPU実行コードEXE1及び安全CPU実行コードEXE2を生成する。このとき、コンパイラ100は、安全POU構成情報CONFを参照する(ステップS11)。安全駆動プログラムSRC中の安全POUと同一名の認証安全POU21が安全CPU20に内蔵されているとする(ステップS12;No、ステップS14;Yes)。この場合、コンパイラ100は、安全CPU20の認証安全POU21を使用するように安全CPU実行コードEXE2を生成する(ステップS15)。
ステップS20:
プログラミング装置110は、生成された駆動CPU実行コードEXE1と安全CPU実行コードEXE2を、安全駆動コントローラ1の駆動CPU10と安全CPU20のそれぞれに転送する。
プログラミング装置110は、生成された駆動CPU実行コードEXE1と安全CPU実行コードEXE2を、安全駆動コントローラ1の駆動CPU10と安全CPU20のそれぞれに転送する。
本実施の形態によれば、前述の実施の形態1の場合と同じ効果が得られる。更に、次の効果も得られる。
すなわち、本実施の形態によれば、未認証の安全POUの代わりに、安全CPU20が内蔵する認証安全POU21を利用した安全制御が可能となる。従って、安全規格の認証審査を受けていない安全駆動プログラムSRCを用いる場合であっても、安全規格に適合した実行環境を実現することが可能となる。このことは、安全性の向上の観点から好適である。
また、安全CPU20に内蔵された認証安全POU21が利用されるため、安全CPU実行コードEXE2のサイズが削減される。
また、コンパイラ100は、安全POU構成情報CONFを参照することによって、自動的に、未認証の安全POUを認証安全POU21に置き換える。つまり、未認証の安全POUを含む安全駆動プログラムSRCを書き換える必要はない。このことも、プログラム工数の削減に寄与する。
また、安全POU構成情報CONFは、安全駆動コントローラ1によって自動的に作成され、プログラミング装置110に送られる。つまり、安全POU構成情報CONFは自動的に更新される。従って、認証安全POU21に関する設定の工数も削減される。
例えば、安全CPU20が、認証安全POU21を内蔵する最新の安全CPU20に交換されたとする。この場合、安全駆動コントローラ1のリセット後に、安全POU構成情報CONFは自動的に更新される。そして、コンパイラ100は、最新の安全POU構成情報CONFに基づいて、駆動CPU実行コードEXE1及び安全CPU実行コードEXE2を生成する。すなわち、安全CPU20の交換後に一度コンパイルを実施するだけで、最新の構成に最適化された実行コードを得ることができる。
尚、実際の開発では、安全駆動コントローラ1の実機が無く、そのシミュレータを用いることによって、安全駆動プログラムSRCの開発及びデバックを行うこともある。この場合は、安全駆動コントローラ1の実機から安全POU構成情報CONFを取得することはできないが、プログラミング装置110の入力装置150を用いて、安全POU構成情報CONFを適宜作成することは可能である。この場合、コンパイラ100は、その安全POU構成情報CONFを参照することにより、シミュレータ用の駆動CPU実行コードEXE1及び安全CPU実行コードEXE2を生成する。つまり、安全駆動コントローラ1の実機が無くても、安全駆動プログラムSRCの開発及びデバックを行うことはできる。安全駆動コントローラ1の実機に接続した際には、実機の安全POU構成情報CONFに基づいて再度コンパイルを実施すればよい。
実施の形態3.
図7は、本発明の実施の形態3の概要を示すブロック図である。尚、既出の実施の形態と重複する説明は適宜省略する。
図7は、本発明の実施の形態3の概要を示すブロック図である。尚、既出の実施の形態と重複する説明は適宜省略する。
本実施の形態では、駆動CPU10に接続された駆動装置30が、認証安全POU31を内蔵している。駆動CPU10は、駆動装置30に内蔵されている認証安全POU31を利用可能である。
一例として、駆動装置30がサーボアンプであり、そのサーボアンプが“STO(Safe Torque Off)”という認証安全POU31を内蔵している場合を考える。駆動CPU10は、サーボアンプに外部信号を出力することにより、サーボアンプに内蔵されたSTOを利用することができる。図8は、この例の場合の安全POU構成情報CONFを示している。サーボアンプ内蔵のPOUの場合、インタフェースは駆動CPU10のI/Oアドレスであり、処理ロジックはダミーである。つまり、駆動CPU10がインタフェースに信号を出力すれば、サーボアンプ側でSTOが実行される。
電源投入時の構成管理フェーズにおいて、安全駆動コントローラ1は、駆動CPU10及び駆動装置30における認証安全POU31に関する構成情報を収集し、その一覧を示す安全POU構成情報CONFを作成する。そして、安全駆動コントローラ1は、作成した安全POU構成情報CONFを、プログラミング装置110に送信する。あるいは、プログラミング装置110が、あるタイミングで、例えばコンパイル実施時に、安全駆動コントローラ1から安全POU構成情報CONFを読みだしてもよい。いずれにせよ、プログラミング装置110は、図5に示されるように、安全POU構成情報CONFを取得し、その安全POU構成情報CONFを記憶装置130に格納する。
コンパイル時、コンパイラ100は、記憶装置130から安全POU構成情報CONFを読み込む。そして、コンパイラ100は、安全POU構成情報CONFを参照して、安全駆動プログラムSRCに含まれる安全POUと同一名の認証安全POU31が駆動装置30に内蔵されているかチェックする。
安全駆動プログラムSRC中の安全POUと同一名の認証安全POU31が駆動装置30に内蔵されている場合、コンパイラ100は、当該安全POUをコンパイルする代わりに、駆動装置30に内蔵されている認証安全POU31を使用するように駆動CPU実行コードEXE1を生成する。このとき、コンパイラ100は、両者のインタフェースを比較して、インタフェースの調整を行う。具体的には、一致するインタフェースについてはそのまま使用し、余剰または不足するインタフェースについては安全POU構成情報CONFに合わせて無視または補完する。その他は、実施の形態1と同様である。
既出の図6において、ステップS1、S11、S20は、実施の形態2の場合と同じである。安全駆動プログラムSRC中の安全POUと同一名の認証安全POU31が駆動装置30に内蔵されているとする(ステップS12;Yes)。この場合、コンパイラ100は、駆動装置30の認証安全POU31を使用するように駆動CPU実行コードEXE1を生成する(ステップS13)。
本実施の形態によれば、前述の実施の形態1の場合と同じ効果が得られる。更に、次の効果も得られる。
すなわち、本実施の形態によれば、未認証の安全POUの代わりに、駆動装置30が内蔵する認証安全POU31を利用した安全制御が可能となる。従って、安全規格の認証審査を受けていない安全駆動プログラムSRCを用いる場合であっても、安全規格に適合した実行環境を実現することが可能となる。このことは、安全性の向上の観点から好適である。
また、駆動装置30に内蔵された認証安全POU31が利用されるため、駆動CPU実行コードEXE1のサイズが削減される。
また、コンパイラ100は、安全POU構成情報CONFを参照することによって、自動的に、未認証の安全POUを認証安全POU31に置き換える。つまり、未認証の安全POUを含む安全駆動プログラムSRCを書き換える必要はない。このことも、プログラム工数の削減に寄与する。
また、安全POU構成情報CONFは、安全駆動コントローラ1によって自動的に作成され、プログラミング装置110に送られる。つまり、安全POU構成情報CONFは自動的に更新される。従って、認証安全POU31に関する設定の工数も削減される。
例えば、駆動装置30が、認証安全POU31を内蔵する最新の駆動装置30に交換されたとする。この場合、安全駆動コントローラ1のリセット後に、安全POU構成情報CONFは自動的に更新される。そして、コンパイラ100は、最新の安全POU構成情報CONFに基づいて、駆動CPU実行コードEXE1及び安全CPU実行コードEXE2を生成する。すなわち、駆動装置30の交換後に一度コンパイルを実施するだけで、最新の構成に最適化された実行コードを得ることができる。
実施の形態4.
図9は、本発明の実施の形態4の概要を示すブロック図である。尚、既出の実施の形態と重複する説明は適宜省略する。
図9は、本発明の実施の形態4の概要を示すブロック図である。尚、既出の実施の形態と重複する説明は適宜省略する。
本実施の形態の構成は、既出の実施の形態2、3の組み合わせである。すなわち、安全駆動コントローラ1の安全CPU20が、認証安全POU21を内蔵している。また、駆動CPU10に接続された駆動装置30が、認証安全POU31を内蔵している。駆動CPU10は、駆動装置30に内蔵されている認証安全POU31を利用可能である。
安全駆動コントローラ1は、安全CPU20、駆動CPU10及び駆動装置30における認証安全POU21、31に関する構成情報を収集し、その一覧を示す安全POU構成情報CONFを作成する。図10は、本実施の形態における安全POU構成情報CONFの一例を示している。図10に示される例は、既出の図4、図8の組み合わせである。
既出の図6で示されたフローチャートに基づいて、本実施の形態におけるコンパイルを説明する。尚、ステップS1、S11、S20は、既出の実施の形態の場合と同じである。
まず、コンパイラ100は、安全POU構成情報CONFを参照して、安全駆動プログラムSRCに含まれる安全POUと同一名の認証安全POU31が駆動装置30に内蔵されているかチェックする(ステップS12)。安全駆動プログラムSRC中の安全POUと同一名の認証安全POU31が駆動装置30に内蔵されている場合(ステップS12;Yes)、コンパイラ100は、当該安全POUをコンパイルする代わりに、駆動装置30に内蔵されている認証安全POU31を使用するように駆動CPU実行コードEXE1を生成する(ステップS13)。一方、安全駆動プログラムSRC中の安全POUと同一名の認証安全POU31が駆動装置30に内蔵されていない場合(ステップS12;No)、処理はステップS14に進む。
ステップS14において、コンパイラ100は、安全POU構成情報CONFを参照して、安全駆動プログラムSRCに含まれる安全POUと同一名の認証安全POU21が安全CPU20に内蔵されているかチェックする。安全駆動プログラムSRC中の安全POUと同一名の認証安全POU21が安全CPU20に内蔵されている場合(ステップS14;Yes)、コンパイラ100は、当該安全POUをコンパイルする代わりに、安全CPU20に内蔵されている認証安全POU21を使用するように安全CPU実行コードEXE2を生成する(ステップS15)。一方、安全駆動プログラムSRC中の安全POUと同一名の認証安全POU21が安全CPU20に内蔵されていない場合(ステップS14;No)、処理はステップS16に進む。
ステップS16において、コンパイラ100は、実施の形態1の場合と同様にコンパイルを実施する。尚、安全性の向上のためには、ライブラリLIBが安全規格適合の認証を受けていることが好ましい。
ここで、安全駆動プログラムSRCに含まれる安全POUと同一名の認証安全POU(21、31)が、安全CPU20と駆動装置30の両方に内蔵されている場合を考える。この場合、図6で示されたフローによれば、コンパイラ100は、駆動装置30に内蔵されている認証安全POU31の方を使用するように駆動CPU実行コードEXE1を生成することになる(ステップS13)。すなわち、可能であれば、処理速度に優れた駆動CPU10に認証安全POUに係る処理を実行させるようにコンパイルが行われる。このことは、処理速度と安全機能の応答性の観点から好適である。また、安全CPU20に内蔵された認証安全POU21を使用しないため、その分、部品点数を削減できる可能性がある。
例えば、図10で示された例の場合、“STO”が安全CPU20と駆動装置30であるサーボアンプの両方に内蔵されている。この場合、コンパイラ100は、安全駆動プログラムSRC中の“STO”をコンパイルする代わりに、サーボアンプの方のSTOを使用するように駆動CPU実行コードEXE1を生成する。すなわち、STOに関する処理を駆動CPU10が実行する。このことは、処理速度と安全機能の応答性の観点から好適である。また、安全CPU20の方のSTOは使用しないため、サーボアンプとサーボモータとの間にリレーを設ける必要がなくなる。つまり、部品点数を削減することが可能となる。
本実施の形態によれば、前述の実施の形態2、3の場合と同じ効果が得られる。更に、次の効果も得られる。すなわち、駆動装置30に内蔵された認証安全POU31を優先的に使用することにより、処理速度と安全機能の応答性が向上する。また、部品点数が削減される。
尚、以上の説明において、STOが安全POUの一例として挙げられた。しかし、安全POUはそれだけに限られない。サーボアンプの安全POUとして、安全速度監視(SLS)なども考えられる。安全CPU20の安全POUとして、非常停止スイッチが押された時の停止(ESTOP)や、ライトカーテン遮光時の停止(ESPE)なども考えられる。これら安全POUの場合であっても、既出の実施の形態は同様に適用可能である。
以上、本発明の実施の形態が添付の図面に基づいて説明された。但し、本発明は、上述の実施の形態に限定されず、要旨を逸脱しない範囲で当業者により適宜変更され得る。
1 安全駆動コントローラ、10 駆動CPU、20 安全CPU、21 認証安全POU、30 駆動装置、31 認証安全POU、40 安全装置、100 コンパイラ、110 プログラミング装置、120 処理装置、130 記憶装置、140 コントローラ通信部、150 入力装置、160 表示装置、CONF 安全POU構成情報、EXE1 駆動CPU実行コード、EXE2 安全CPU実行コード、LIB ライブラリ、SRC 安全駆動プログラム。
Claims (7)
- コントローラが実行するプログラムの実行コードを生成するプログラミング装置であって、
前記コントローラは、
前記コントローラに接続された駆動装置の駆動制御を行う駆動CPUと、
安全制御を行う安全CPUと
を備え、
前記プログラミング装置は、前記駆動CPUが実行する駆動CPU実行コードと前記安全CPUが実行する安全CPU実行コードとを生成するコンパイラを備え、
前記コンパイラは、前記駆動制御のための駆動機能ブロックと前記安全制御のための安全機能ブロックとの両方を含むソースプログラムをコンパイルし、前記駆動機能ブロックを前記駆動CPUに割り当てることによって前記駆動CPU実行コードを生成し、また、前記安全機能ブロックを前記安全CPUに割り当てることによって前記安全CPU実行コードを生成する
ことを特徴とするプログラミング装置。 - 前記安全CPUは、安全規格に適合した安全機能ブロックである認証安全機能ブロックを内蔵しており、
前記コンパイラは、前記認証安全機能ブロックに関する構成情報を読み込み、
前記ソースプログラムに含まれる前記安全機能ブロックと同一名の前記認証安全機能ブロックが前記安全CPUに内蔵されている場合、前記コンパイラは、前記ソースプログラム中の前記安全機能ブロックをコンパイルする代わりに、前記安全CPUの前記認証安全機能ブロックを使用するように前記安全CPU実行コードを生成する
ことを特徴とする請求項1に記載のプログラミング装置。 - 前記駆動装置は、安全規格に適合した安全機能ブロックである認証安全機能ブロックを内蔵しており、
前記駆動CPUは、前記駆動装置に内蔵された前記認証安全機能ブロックを利用可能であり、
前記コンパイラは、前記認証安全機能ブロックに関する構成情報を読み込み、
前記ソースプログラムに含まれる前記安全機能ブロックと同一名の前記認証安全機能ブロックが前記駆動装置に内蔵されている場合、前記コンパイラは、前記ソースプログラム中の前記安全機能ブロックをコンパイルする代わりに、前記駆動装置の前記認証安全機能ブロックを使用するように前記駆動CPU実行コードを生成する
ことを特徴とする請求項1に記載のプログラミング装置。 - 前記安全CPUと前記駆動装置の各々は、安全規格に適合した安全機能ブロックである認証安全機能ブロックを内蔵しており、
前記駆動CPUは、前記駆動装置に内蔵された前記認証安全機能ブロックを利用可能であり、
前記コンパイラは、前記認証安全機能ブロックに関する構成情報を読み込み、
前記ソースプログラムに含まれる前記安全機能ブロックと同一名の前記認証安全機能ブロックが前記安全CPUと前記駆動装置の両方に内蔵されている場合、前記コンパイラは、前記ソースプログラム中の前記安全機能ブロックをコンパイルする代わりに、前記駆動装置の前記認証安全機能ブロックを使用するように前記駆動CPU実行コードを生成する
ことを特徴とする請求項1に記載のプログラミング装置。 - 前記駆動CPUと前記安全CPUのいずれもが実行可能な処理が前記ソースプログラムに含まれる場合、前記コンパイラは、当該処理を前記駆動CPUに割り当てて前記駆動CPU実行コードを生成する
ことを特徴とする請求項1から4のいずれか一項に記載のプログラミング装置。 - 前記コンパイラは、前記駆動機能ブロックと前記安全機能ブロックとをつなぐインタフェースを、前記駆動CPUと前記安全CPUとの間の通信に用いられる共有メモリに割り当てる
ことを特徴とする請求項1から5のいずれか一項に記載のプログラミング装置。 - コントローラが実行するプログラムの実行コードを生成する実行コード生成方法であって、
前記コントローラは、
前記コントローラに接続された駆動装置の駆動制御を行う駆動CPUと、
安全制御を行う安全CPUと
を備え、
前記実行コード生成方法は、前記駆動CPUが実行する駆動CPU実行コードと前記安全CPUが実行する安全CPU実行コードとを生成するステップを有し、
前記生成するステップは、前記駆動制御のための駆動機能ブロックと前記安全制御のための安全機能ブロックとの両方を含むソースプログラムをコンパイルし、前記駆動機能ブロックを前記駆動CPUに割り当てることによって前記駆動CPU実行コードを生成し、また、前記安全機能ブロックを前記安全CPUに割り当てることによって前記安全CPU実行コードを生成するステップを含む
ことを特徴とする実行コード生成方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2014/058195 WO2015145562A1 (ja) | 2014-03-25 | 2014-03-25 | プログラミング装置及び実行コード生成方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP5619331B1 true JP5619331B1 (ja) | 2014-11-05 |
JPWO2015145562A1 JPWO2015145562A1 (ja) | 2017-04-13 |
Family
ID=54194162
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014526728A Expired - Fee Related JP5619331B1 (ja) | 2014-03-25 | 2014-03-25 | プログラミング装置及び実行コード生成方法 |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP5619331B1 (ja) |
WO (1) | WO2015145562A1 (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6477553B2 (ja) * | 2016-03-14 | 2019-03-06 | オムロン株式会社 | プログラム開発支援装置、プログラム開発支援プログラムおよびプログラム開発支援方法 |
ES2808156T3 (es) * | 2016-07-13 | 2021-02-25 | Siemens Energy Global Gmbh & Co Kg | Procedimiento para el control de un accionamiento |
JP7115351B2 (ja) | 2019-02-13 | 2022-08-09 | オムロン株式会社 | 制御装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009259134A (ja) * | 2008-04-21 | 2009-11-05 | Koyo Electronics Ind Co Ltd | 安全plc |
JP2012518823A (ja) * | 2009-02-23 | 2012-08-16 | ピルツ ゲーエムベーハー アンド コー.カーゲー | 安全コントローラ用のユーザプログラムを作成するための方法および機器 |
JP2012524352A (ja) * | 2009-04-20 | 2012-10-11 | ピルツ ゲーエムベーハー アンド コー.カーゲー | 安全関連制御ユニット用アプリケーションプログラムの生成方法および装置 |
-
2014
- 2014-03-25 JP JP2014526728A patent/JP5619331B1/ja not_active Expired - Fee Related
- 2014-03-25 WO PCT/JP2014/058195 patent/WO2015145562A1/ja active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009259134A (ja) * | 2008-04-21 | 2009-11-05 | Koyo Electronics Ind Co Ltd | 安全plc |
JP2012518823A (ja) * | 2009-02-23 | 2012-08-16 | ピルツ ゲーエムベーハー アンド コー.カーゲー | 安全コントローラ用のユーザプログラムを作成するための方法および機器 |
JP2012524352A (ja) * | 2009-04-20 | 2012-10-11 | ピルツ ゲーエムベーハー アンド コー.カーゲー | 安全関連制御ユニット用アプリケーションプログラムの生成方法および装置 |
Also Published As
Publication number | Publication date |
---|---|
JPWO2015145562A1 (ja) | 2017-04-13 |
WO2015145562A1 (ja) | 2015-10-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5436660B2 (ja) | 安全関連制御ユニット用アプリケーションプログラムの生成方法および装置 | |
EP3410296A1 (en) | Starting method and device for embedded device | |
ITTO980869A1 (it) | Elaboratore con sistema per predisporre un record di avviamento con partizione modificabile del dispositivo di memoria. | |
JP5619331B1 (ja) | プログラミング装置及び実行コード生成方法 | |
JP2014035564A (ja) | マルチコアプロセッサを有する数値制御装置 | |
JP2014211721A (ja) | 数値制御装置 | |
ES2772675T3 (es) | Método de compilación óptima de un comando de PLC | |
US20190012168A1 (en) | Program generating apparatus | |
CN102789206B (zh) | 机床数控中集中式和分布式控制混合的安全逻辑控制系统 | |
US11169510B2 (en) | Engineering system and method for planning an automation system | |
JP2013242629A (ja) | 制御装置、制御方法および命令セット | |
CN105159696A (zh) | 一种独立于Linux内核的硬件驱动实现方法及装置 | |
JP6821101B1 (ja) | 数値制御装置 | |
JP2010134593A (ja) | プログラマブルコントローラ | |
WO2012124162A1 (ja) | デバッグ装置 | |
WO2010029812A1 (ja) | マルチコアにおけるプログラミングシステム、その方法及びそのプログラム | |
KR102091134B1 (ko) | Plc의 브랜치 명령어 처리 방법 | |
JP6295914B2 (ja) | プログラマブルコントローラシステム、その支援装置、プログラマブルコントローラ | |
JP4877257B2 (ja) | プログラマブルコントローラ、プログラマブルコントローラ支援装置、及びプログラマブルコントローラシステム | |
JP5726106B2 (ja) | 組み込みシステムの制御装置 | |
JP5832368B2 (ja) | エンジニアリング装置 | |
US10768597B2 (en) | Method and controller for flexible process control | |
US20210356925A1 (en) | Control system, control method, and drive device | |
JP2021174426A (ja) | ソースコード自動生成システム | |
JP2009251782A (ja) | プログラマブルコントローラの高速化方法等 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20140819 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5619331 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |