(57)【特許請求の範囲】
【請求項１】
キャッシュメモリを有するマイクロコントローラと、
このマイクロコントローラによって実行されて外部機器を制御するためのユーザアプリケーションと、
このユーザアプリケーションによって起動され前記ユーザアプリケーションの実行結果を記憶手段に転送する転送手段と、
前記記憶手段に保持された前記実行結果を前記外部機器に出力する出力手段と、を有するプログラマブルコントローラであって、
制御の運用に先立ち、前記転送手段の起動をマスクして前記ユーザアプリケーションを実行し前記キャッシュメモリに前記ユーザアプリケーションをロードする仮実行手段を備えることを特徴とするプログラマブルコントローラ。
【請求項２】
請求項１に記載のプログラマブルコントローラにおいて、
前記ユーザアプリケーションは、所定の変数が与えられ呼び出されることにより起動されるサブルーチンプログラムであって、
前記仮実行手段は、前記ユーザアプリケーションを呼び出し実行する際、前記転送手段の起動を禁止するための変数を前記ユーザアプリケーションに与え、
前記ユーザアプリケーションは、前記転送手段の起動を禁止するための変数に基づき前記転送手段を未起動として該ユーザアプリケーションのプログラムを実行することを特徴とするプログラマブルコントローラ。
【請求項３】
請求項２に記載のプログラマブルコントローラにおいて、
前記ユーザアプリケーションは、さらに、前記転送手段の起動を禁止するための変数に基づき、前記ユーザアプリケーションの終了と共に前記キャッシュメモリをロックすることを特徴とするプログラマブルコントローラ。
【請求項４】
請求項１〜請求項３のいずれか１項に記載のプログラマブルコントローラにおいて、
前記ユーザアプリケーションは、前記外部制御機器を所定の周期毎に制御するためのシーケンス制御プログラムであることを特徴とするプログラマブルコントローラ。
【請求項５】
請求項１〜請求項３のいずれか１項に記載のプログラマブルコントローラにおいて、
前記ユーザアプリケーションは、位置決め制御を実行する位置決め制御プログラムであることを特徴とするプログラマブルコントローラ。
【請求項６】
請求項１〜５のいずれか１項に記載のプログラマブルコントローラにおいて、
前記ユーザアプリケーションは、コンパイラ型言語のプログラムであることを特徴とするプログラマブルコントローラ。
【請求項７】
請求項１〜６のいずれか１項に記載のプログラマブルコントローラにおいて、
前記ユーザアプリケーションは不揮発性メモリに保持されており、
前記プログラマブルコントローラは、前記不揮発性メモリに保持された前記ユーザアプリケーションを、該プログラマブルコントローラに着脱可能なプログラミング装置によって転送された更新用のユーザアプリケーションに更新するプログラム更新手段をさらに備えることを特徴とするプログラマブルコントローラ。
【請求項８】
キャッシュメモリを有するマイクロコントローラと、
このマイクロコントローラによって実行されて外部機器を制御するためのユーザアプリケーションと、
該ユーザアプリケーションの作業メモリと、
前記ユーザアプリケーションによって起動され前記ユーザアプリケーションの実行結果を記憶手段に転送する転送手段と、
前記記憶手段に保持された前記実行結果を前記外部機器に出力する出力手段と、を有するプログラマブルコントローラのプログラム実行方法であって、
前記作業メモリと前記記憶手段とを初期化し、前記転送手段の起動をマスクして前記ユーザアプリケーションを実行することで前記キャッシュメモリに前記ユーザアプリケーションをロードし、前記キャッシュメモリをロックし、前記作業メモリを再度初期化した後、
前記転送手段の起動を許可して前記ユーザアプリケーションを実行することを特徴とするプログラム実行方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、機器を制御するプログラマブルコントローラなどのプログラムの実行を高速化する技術に関する。
【背景技術】
【０００２】
図５は、プログラムを実行して制御対象機器を制御する制御装置の概略構成図である。この制御装置は、キャッシュメモリを有するマイクロコントローラ５００を備え、マイクロコントローラ５００が不揮発性メモリ３００に保持されたプログラムを実行し入出力装置回路を介して制御対象機器を制御するよう構成されている。
【０００３】
プログラム実行速度を早くするには、不揮発メモリ３００に保持されたアプリケーションプログラムをＲＡＭ３０１などの高速メモリに再配置し、この再配置されたプログラムを読み出して実行する高速化方法が知られている。
【０００４】
近年のマイクロコントローラの性能の向上に伴い、マイクロコントローラに搭載されるキャッシュメモリへのアクセスはマイクロコントローラ内部の高速なクロックの１ないし２クロックで実行できるのに対し、上記のように外部メモリへのアクセスはその十倍から十数倍のアクセス時間を要するため、上述高速化方法に加えてマイクロコントローラ５００のキャッシュを活用する方法がある。
【０００５】
キャッシュを活用した場合、ＲＡＭ３０１に再配置されたアプリケーションプログラムは、マイクロコントローラ５００からのフェッチ動作に連動してプロセッサ５０１に転送され実行されるとともに、命令キャッシュメモリ５０２にロードされる。以降、マイクロコントローラ５００はプログラム実行の際、実行しようとするプログラムがキャッシュメモリに保持されていれば、外部メモリからのプログラムのフェッチを行わずキャッシュメモリに保持されたプログラムを実行するので、プログラムの実行速度が高速化される。
【０００６】
制御機器を代表するプログラマブルコントローラ（以下、ＰＬＣという）は、一般的にパワーオンまたはリセットスタート後、メモリクリアや各種初期設定を実行した後にユーザアプリケーションを起動し、以降、アプリケーションプログラムをサイクリックに実行するよう構成されている。アプリケーションプログラムをサイクリックに実行することで、ＰＬＣは所定の単位時間（制御周期）で制御を行う。
【０００７】
図６は上述の如く起動されたＰＬＣのユーザアプリケーションの実行概念図である。図６において、アプリケーションプログラムの実行時間は、ユーザアプリケーション起動後、初回（区間Ｐ１）の実行で該プログラムが命令キャッシュメモリ５０２にロードされるため、次の実行区間Ｐ２からは高速化され、以降この高速性が維持されている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００２−９９３１２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、キャッシュメモリを活用してプログラムの実行速度を高速化すると、アプリケーションの実行時間を短縮できる反面、キャッシュのヒットとミスヒットしたときとでプログラムの実行時間が変動してしまうため、制御周期にばらつきが発生する。
【００１０】
また、ユーザアプリケーションの１回目の実行（Ｐ１）においては、プログラムはＲＡＭ３０１からフェッチされるので、その実行時間は、２回目以降の実行時間（Ｐ２、Ｐ３）に比べて長く、プログラムの実行時間の変動が制御周期に影響してしまう。
【００１１】
ユーザアプリケーションの種類によっては、ユーザアプリケーションの実行時間そのものだけではなく、制御周期のバラツキが高精度に要求されるアプリケーション（サーボシステムによる位置決め制御などを代表とするモーションコントロール）があり、このようなモーションコントロール機能を実現するＰＬＣにおいては、プログラム実行時間の変動が制御のスピードや制御周期のばらつきとなり、正常な制御を実行できないケースが出てきて問題となる。
【００１２】
本発明の目的（課題）は、上記のような問題を鑑みて考案されたものであり、キャッシュのヒット／ミスヒットに起因する実行時間の差異を解消し、常に安定した単位時間（制御周期）で制御することが可能なプログラマブルコントローラ、プログラマブルコントローラのプログラム実行方法を提供することにある。
【課題を解決するための手段】
【００１３】
上記のような課題を解決する方法として、本発明は以下のように構成される。
請求項１に係る発明は、キャッシュメモリを有するマイクロコントローラと、このマイクロコントローラによって実行されて外部機器を制御するためのユーザアプリケーションと、このユーザアプリケーションによって起動されユーザアプリケーションの実行結果を記憶手段に転送する転送手段と、記憶手段に保持された実行結果を外部機器に出力する出力手段と、を有するプログラマブルコントローラであって、
制御の運用に先立ち、転送手段の起動をマスクしてユーザアプリケーションを実行しキャッシュメモリにユーザアプリケーションをロードする仮実行手段を備える。
【００１４】
請求項２に係る発明は、請求項１に記載のプログラマブルコントローラにおいて、
ユーザアプリケーションは、所定の変数が与えられ呼び出されることにより起動されるサブルーチンプログラムであって、仮実行手段は、ユーザアプリケーションを呼び出し実行する際、転送手段の起動を禁止するための変数をユーザアプリケーションに与え、ユーザアプリケーションは、転送手段の起動を禁止するための変数に基づき転送手段を未起動として該ユーザアプリケーションのプログラムを実行するよう構成する。
【００１５】
請求項３に係る発明は、請求項２に記載のプログラマブルコントローラにおいて、ユーザアプリケーションは、さらに、転送手段の起動を禁止するための変数に基づき、ユーザアプリケーションの終了と共にキャッシュメモリをロックするよう構成する。
【００１６】
請求項４に係る発明は、ユーザアプリケーションを、外部制御機器を所定の周期毎に制御するシーケンス制御プログラムで構成する。
請求項５に係る発明は、ユーザアプリケーションを、位置決め制御を実行する位置決め制御プログラムで構成する。
【００１７】
請求項６に係る発明は、ユーザアプリケーションを、コンパイラ型言語のプログラムで構成する。
請求項７に係る発明は、請求項１〜６に記載のいずれかのプログラマブルコントローラにおいて、ユーザアプリケーションは不揮発性メモリに保持されており、プログラマブルコントローラは、不揮発性メモリに保持されたユーザアプリケーションを、該プログラマブルコントローラに着脱可能なプログラミング装置から転送された更新用のユーザアプリケーションに更新するプログラム更新手段を備える。
【００１８】
請求項８に係る発明は、キャッシュメモリを有するマイクロコントローラと、このマイクロコントローラによって実行されて外部機器を制御するためのユーザアプリケーションと、該ユーザアプリケーションの作業メモリと、ユーザアプリケーションによって起動されユーザアプリケーションの実行結果を記憶手段に転送する転送手段と、記憶手段に保持された実行結果を外部機器に出力する出力手段と、を有するプログラマブルコントローラのプログラム実行方法であって、
作業メモリと記憶手段とを初期化し、転送手段の起動をマスクしてユーザアプリケーションを実行することでキャッシュメモリにユーザアプリケーションをロードすると共にキャッシュメモリをロックし、作業メモリを再度初期化し、転送手段の起動を許可してユーザアプリケーションを実行するよう構成する。
【発明の効果】
【００１９】
本発明のプログラマブルコントローラは、制御を運用するに先立ち、ユーザアプリケーションを仮実行する。すなわち、実際の制御を行わずユーザアプリケーションを実行してキャッシュメモリにユーザアプリケーションをロードしロックするように構成したので、運用時の初回のユーザアプリケーションの実行から高速性が発揮されると共に、プログラムの実行時間や制御周期が極めて安定する。
【００２０】
従って、本発明によって、キャッシュのヒット／ミスヒットに起因する実行時間の差異を解消し、常に安定した制御周期で制御することが可能なプログラマブルコントローラが提供される。
【図面の簡単な説明】
【００２１】
【図１】本発明に係るプログラマブルコントローラのシステム構成図
【図２】本発明に係るプログラマブルコントローラの機能ブロック図
【図３】本発明に係るプログラマブルコントローラのイニシャル処理を示すフロー図
【図４】本発明に係るプログラマブルコントローラがユーザアプリケーションを実行する動作概念図
【図５】制御対象機器を制御する一般的な制御装置の概略構成図
【図６】図５に係る制御装置のユーザアプリケーションの実行概念図
【発明を実施するための形態】
【実施例】
【００２２】
以下、本発明の一実施形態について、図面を参照しながら説明する。
図１は、本発明の一実施形態に係る制御システムの構成を示すブロック図である。
図１に示すように、この制御システムでは、プログラマブルコントローラ（以下、ＰＬＣという）２０が、入出力モジュール２３を介して外部制御機器３２に接続されるとともに、定義設定ローダ３０とは通信路（例えば汎用シリアル通信）３１を介して接続されている。
【００２３】
ＰＬＣ２０は、ＣＰＵ（Central Processing Unit）モジュール１０を有する。このＣＰＵモジュール１０は、ＣＰＵ１１、不揮発性メモリなどのプログラムメモリ１２、システムワークメモリ（ＲＡＭ（Random Access Memory））１３、入出力メモリ（ＲＡＭ）１４、アプリケーションメモリ（ＲＡＭ）１５、そして、定義設定ローダ３０との通信を行うためのドライバ／レシーバ１６、入出力モジュールとのインタフェースを行うバスインターフェース１７、を有し、これらがバス１９により接続されている。さらに、ＣＰＵ１１には、プログラムを高速に実行するための命令キャッシュ１１ｂおよびデータキャッシュ１１ｃが搭載されている。
【００２４】
ＰＬＣ２０は、パワーオンまたはリセットスタート後、システムの初期化を経てプログラムメモリ１２に保持されたユーザアプリケーションを起動し、以降、ユーザアプリケーションをサイクリックに実行して、所定の制御周期で制御を行うよう構成されている。すなわち、本発明で扱うユーザアプリケーションは、その一例として、外部制御機器を所定の制御周期で制御するためのシーケンス制御プログラムを対象としている。
【００２５】
また、定義設定ローダ３０は、ユーザによってプログラミングされたソースプログラムをコンパイルしてＰＬＣ２０のＣＰＵ１１が直接実行可能な実行コード（コンパイラ言語）を生成する機能を有している。そして、実行コードが、通信線３１を介してＣＰＵモジュール１０にダウンロードされることにより、ＣＰＵモジュール１０は、プログラムメモリ１２などに予め保持されていたユーザアプリケーションを、ダウンロードされた実行コードに更新する（プログラム更新手段）ことができる。
【００２６】
図２は、ＰＬＣ２０の機能ブロック図である。図２を参照しながら本発明に係るＰＬＣ２０の機能について説明する。
ＰＬＣ２０は、該ＰＬＣ２０の初期化を行うイニシャル機能２００と、ユーザアプリケーション２０２と、外部制御機器３２とインタフェースする入出力制御機能２０３と、ＰＬＣ２０全体をオペレーションするシステム機能２０１を備える。また、イニシャル機能２００には、ユーザアプリケーション２０２を仮実行させるアプリケーション仮実行機能２００a、および、ＲＡＭなどに保持されたデータを初期化するメモリクリア機能（不図示）や入出力制御機能２０２に動作パラメータなどを与える入出力制御機能初期化機能（不図示）などが備えられている。また、システム機能２０１には、ユーザアプリケーション２０２によって演算出力された出力データを入出力制御機能２０３に転送するためのI/Oデータ転送機能２０１ａと、ステータス情報（状態情報）などをシステムワークメモリに転送する状態情報転送機能２０１ｂが備えられている。
【００２７】
なお、システムワークメモリ１３、入出力メモリ１４、アプリケーションメモリ１５の各メモリは、図１に記載したそれと同じである。
ユーザアプリケーション２０２はサブルーチン化されたプログラムであり、呼び出された際に変数が与えられ、与えられた変数に対応した処理を実行するよう構成されている。
【００２８】
ここで、ＰＬＣ２０が運用状態のときの動きを説明する。ユーザアプリケーション２０２はシステム機能２０１によってシステムコールされることによりアプリケーションプログラムを実行する。そして、ユーザアプリケーション２０２は、この実行の際に演算出力された出力データを外部制御機器３２に反映させるため、I/Oデータ転送機能２０１ａ（データを伝達するドライバに相当）を呼び出す。
【００２９】
呼び出されたI/Oデータ転送機能２０１ａは、出力データを入出力メモリ１４に転送する。入出力制御機能２０３は転送された出力データを、入出力モジュール２３を介して外部制御機器３２に出力する。
【００３０】
このとき、システム機能２０１は、ユーザアプリケーションをシステムコールする際、前述変数を「１」としてユーザアプリケーション２０２に与えている。ユーザアプリケーション２０２は、変数「１」を受けることによって、アプリケーションプログラムを実行するとともに、I/Oデータ転送機能２０１ａを呼び出す。
【００３１】
すなわち、運用状態において、ユーザアプリケーション２０２は、システム機能２０１によって変数１が与えられ、そのシステムコール毎にアプリケーションプログラムを実行し、ユーザアプリケーション２０２と入出力制御機能２０３との間のデータを転送するI/Oデータ転送機能２０１ａを呼び出し、シーケンス演算の結果である出力データを外部制御機器３２に出力する。
【００３２】
図３はＰＬＣ２０が起動され、運用状態に至るまでの処理（イニシャル機能）を示すフロー図である。本発明のポイントは、ＰＬＣ２０を運用するに先立ち（すなわちイニシャル処理中に）ユーザアプリケーション仮実行機能（Ｓ１０１）を実行する点にある。
【００３３】
図３において、パワーオンまたはリセットスタート後、イニシャル機能２００はＲＡＭなどのデータをクリア（Ｓ１００）した後、ユーザアプリケーションを仮に実行させる（Ｓ１０１）。この仮の実行とは、外部制御機器３２への制御を行わないでユーザアプリケーションを実行することであり、変数「０」をユーザアプリケーション２０２に与え、呼び出すことにより達成される。
【００３４】
変数「０」が与えられ呼び出されたユーザアプリケーション２０２は、アプリケーションプログラムを実行するが、I/Oデータ転送機能２０１ａの呼び出しは行わず終了する。I/Oデータ転送機能２０１ａの呼び出しが行われなければ、Ｉ／Ｏデータが外部制御機器３２に反映されることがないため、実際の制御が行われないでユーザアプリケーション２０２を実行することができる。
【００３５】
また、ユーザアプリケーション２０２は、変数「０」が与えられ呼び出されることにより、プログラムの終了と同時に命令キャッシュメモリ１１ｂをロックする。キャッシュがロックされた以降は、命令キャッシュメモリ１１ｂの内容が更新されないため、以降のユーザアプリケーションの実行の際には命令キャッシュメモリ１１ｂに保持されたアプリケーションプログラムがフェッチされることになる。
【００３６】
このようにして、ユーザアプリケーション２０２は、実際の制御を行わないでアプリケーションプログラムを実行し、実行されたアプリケーションプログラムは命令キャッシュメモリ１１ｂにロードされてロックされる。従って、ＰＬＣ２０が運用状態になってからのユーザアプリケーション２０２の実行の際には、命令キャッシュメモリからユーザアプリケーションプログラムがフェッチされるようになるため、ＰＬＣ２０は正式なアプリケーションの起動の初回からプログラムを高速に実行することができる。
【００３７】
続いて、イニシャル機能２００は、メモリクリアを再度行うと共に、各種初期値を設定する（Ｓ１０２）。このステップＳ１０２におけるメモリの再クリアを実行する理由は、ユーザアプリケーション仮実行機能（Ｓ１０１）を実行した際の作業データが、ＰＬＣ２０の運用状態での制御動作に影響を与えないようにするためである。この際、ステップＳ１００で実行したメモリクリアと同じように、ＲＡＭなどで構成される全ての領域のデータをクリアしても良いが、アプリケーションメモリ１５のみを対象にしてメモリクリアしても良い。ユーザを（Ｓ１０１）では、アプリケーションメモリ１５のみが作業メモリとして扱われるため、ステップＳ１０２でのメモリ再クリアでアプリケーションメモリ１５以外の領域をクリアする必要はなく、そして、イニシャル処理を速く終了させ、ＰＬＣ２０を運用状態にすることができるためである。
【００３８】
続いて、イニシャル機能２００は、入出力制御機能２０３に動作パラメータなどを与えて入出力制御機能を初期化する（Ｓ１０３）。この後、イニシャル機能２００は、ユーザアプリケーションをシステムコールするようシステム機能２０１に対して指示し、ユーザアプリケーション２０２を正式に起動する（Ｓ１０４）。この指示に基づき、システム機能２０１はユーザアプリケーションに与える変数を「１」としてユーザアプリケーション２０２を定期的にシステムコールする。
【００３９】
このようなイニシャルを経て運用状態になったＰＬＣ２０がユーザアプリケーションを実行する動作概念図が図４である。上述のようにユーザアプリケーション２０２は、一旦、仮実行された後に正式に起動されるため、そのプログラムは仮実行の際に命令キャッシュにロードされ保持されている。従って、アプリケーション起動後の初回の実行（区間Ｐ１）から高速に処理され、以降も高速性が維持され安定している。すなわち、本発明によってＰＬＣ２０は、アプリケーションを起動した初回の区間Ｐ１から高速性が発揮されるとともに制御周期に乱れがなく極めて安定した制御を実行することができる。
【００４０】
すなわち、上述説明したように本発明のポイントは、制御運用までのプリプロセス(準備処理)としてユーザアプリケーションを実行してキャッシュメモリにユーザアプリケーションをロードする際、ユーザアプリケーションが操作するメモリ領域（アプリケーションメモリ）から外部機器への出力用のメモリ領域（入出力メモリ）への転送の起動をマスクすることにある。
【００４１】
なお、アプリケーションメモリ１５へのアクセスはユーザアプリケーション２０２によるアクセスがほとんどなので（主にユーザアプリケーションの作業用なので）、システム機能２０１の配下でアクセスされるシステムワークメモリ１３および入出力メモリ１４とは物理的に別のメモリで構成すると良い。
【００４２】
また、システムワークメモリ１３と入出力メモリ１４へのアクセスはシステム機能２０１によるアクセスがほとんどなので、１媒体のメモリを領域分けして構成しても良い。
また、ユーザアプリケーションに与えられる変数「０」は、I／Oデータ転送処理２０１ａの呼び出しを禁止するとともに、ユーザアプリケーションの終了と同時にキャッシュをロックするパラメータであり、変数「１」は、I／Oデータ転送処理２０１ａの呼び出しを許可するパラメータである。
【００４３】
また、本発明に係るＰＬＣ２０は、ユーザアプリケーションを位置決め制御プログラムとし、入出力モジュール２３を位置決め制御モジュールとすることにより、サーボなどを外部制御機器として接続したモーションコントロールに適用することができる。このように、本発明に係るプログラマブルコントローラは、プログラム実行時間や制御周期が極めて安定するので、制御周期のバラツキが高精度に要求されるモーションコントロールなどのアプリケーションにおいても高信頼な制御を行うことができる。
【符号の説明】
【００４４】
１０    ＣＰＵモジュール
１１    マイクロコントローラ
１１ａ  中央演算部
１１ｂ  命令キャッシュメモリ
１１ｃ  データキャッシュメモリ
１２    プログラムメモリ
１３    システムワークメモリ
１４    入出力メモリ
１５    アプリケーションメモリ
１６    ドライバ／レシーバ
２０    プログラマブルコントローラ（ＰＬＣ）
２３    入出力モジュール
３０    定義設定ローダ
３２    外部制御機器
２００    イニシャル機能
２００ａ  アプリケーション仮実行機能
２０１    システム機能
２０１ａ  I/Oデータ転送機能
２０１ｂ  状態情報転送機能
２０２    ユーザアプリケーション
２０３    入出力制御機能
【図１】
0005494243.tif 000002
【図２】
0005494243.tif 000003
【図３】
0005494243.tif 000004
【図４】
0005494243.tif 000005
【図５】
0005494243.tif 000006
【図６】
0005494243.tif 000007