(57)【特許請求の範囲】
【請求項１】
ＰＬＣとしてのシステム制御仕様を実現するためのシステムプログラムを格納するための不揮発性メモリで構成されたシステムプログラムメモリと、
ユーザの所望する機器制御仕様を実現するためのＰＬＣ言語で記述されたユーザプログラムを格納するための不揮発性メモリで構成されたユーザプログラムバッファメモリと、
ＭＰＵ言語で記述されたプログラムを実行するＭＰＵと、
ＰＬＣ言語で記述されたプログラムを実行するＡＳＩＣと、
ＡＳＩＣの実行対象となるプログラムを格納するためのシステムプログラムメモリ及びユーザプログラムバッファメモリより高速動作可能なメモリで構成されたＡＳＩＣ実行対象メモリと、を有し、
システムプログラムメモリに格納されたシステムプログラムは、ＭＰＵ言語で記述されかつ電源ＯＮ時のイニシャル処理を少なくとも含む第１のプログラム部分と、ＰＬＣ言語で記述された第２のプログラム部分とを有し、かつ
電源ＯＮ時のイニシャル処理には、ユーザプログラムバッファメモリからＡＳＩＣ対象メモリへとＰＬＣ言語で記述されたユーザプログラムを転送する第１の転送処理と、システムプログラムメモリからＡＳＩＣ実行対象メモリへとＰＬＣ言語で記述された第２のプログラム部分を転送する第２の転送処理とが含まれていることを特徴とするＰＬＣ。
【請求項２】
第１の転送処理にて転送されるユーザプログラム部分をＡＳＩＣ実行対象メモリにその先頭から格納すると共に、第２の転送処理にて転送されるシステムプログラム部分をＡＳＩＣ実行対象メモリのユーザプログラム部分に続く空きエリアに格納することを特徴とする請求項１に記載のＰＬＣ。
【請求項３】
ＡＳＩＣには、ＰＬＣ言語を構成する各命令語が読み出されるたびに、そのオペランドで指定されるアクセス対象アドレスが予め決められたユーザプログラムアクセス範囲に収まっているか否かをチェックし、そのチェック結果に基づいて、アクセス対象メモリへのアクセス可否を制御するアクセス範囲チェック機能を有するアクセス範囲チェック回路が含まれており、かつ
アクセス範囲チェック回路には、各読み出される命令語がアクセス範囲チェックイネーブルの命令語であると判定されるときに限り、アクセス範囲チェック機能を有効とするプロテクト回路が含まれていることを特徴とする請求項１又は２に記載のＰＬＣ。
【請求項４】
第２のプログラム部分には、
共通処理、Ｉ／Ｏリフレッシュ処理、及び／又は、周辺サービス処理が含まれていることを特徴とする請求項１〜３のいずれかに記載のＰＬＣ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、専用ＬＳＩ（以下、ＡＳＩＣと言う）とマイクロプロセッサ（以下、ＭＰＵと言う）とを併有するプログラマブル・コントローラ（以下、ＰＬＣと言う）に関するものである。
【背景技術】
【０００２】
ＡＳＩＣとＭＰＵとを備えてＰＬＣとしての機能を実現するようにしたＰＬＣは、従来より種々に知られている（特許文献１参照）。このようなＰＬＣの一例、より具体的には、ＡＳＩＣとＭＰＵとを併有するビルディングブロック型ＰＬＣのＣＰＵユニットのハードウェア構成図が図８に示されている。
【０００３】
同図に示されるように、このＣＰＵユニット１２は、Ｃ言語等に代表されるＭＰＵ言語で記述されたプログラムを実行するＭＰＵ１２１と、ラダー図言語等に代表されるＰＬＣ言語で記述されたプログラムを実行するＡＳＩＣ１２２と、ＰＬＣとしてのシステム制御仕様を実現するためのシステムプログラムを格納するためのシステムプログラムメモリ（ＲＯＭで構成される）１２３と、ＭＰＵがプログラムを実行する際のワークエリアを提供するワーキングメモリ（ＲＡＭで構成される）１２４と、異常通知の設定や異常ステータスを格納するための設定メモリ（フラッシュメモリ（以下、ＦＲＯＭと言う）で構成される）１２５と、ユーザの所望する機器制御仕様を実現するためのＰＬＣ言語で記述されたユーザプログラムを格納するためのユーザプログラムバッファメモリ（フラッシュメモリ（以下、ＦＲＯＭと言う）で構成される）１２６と、ＡＳＩＣの実行対象となるプログラムを格納するためのＡＳＩＣ実行対象メモリ（高速動作するＲＡＭで構成される）１２７と、外部入出力ユニットの入出力割付に対応する入出力データ並びにユーザプログラムで使用される各種データを格納する入出力メモリ（高速動作するＲＡＭで構成される）１２８とを備えている。
【０００４】
システムプログラムメモリに格納されたシステムプログラムには、電源ＯＮ時イニシャル処理と、共通処理と、演算処理（ユーザプログラム中のＡＳＩＣでは実行できない複雑なデータ演算処理部分等）、Ｉ／Ｏリフレッシュ処理、及び周辺サービス処理のそれぞれに対応するプログラム部分が含まれている。それらの処理に対応する各プログラム部分はいずれもＭＰＵ言語にて記述されている。
【０００５】
電源ＯＮ時イニシャル処理に対応するプログラム部分には、電源ＯＮ時イニシャル処理として、ユーザプログラムバッファメモリ（ＦＲＯＭ）１２６からＡＳＩＣ実行対象メモリ１２７へとＰＬＣ言語で記述されたユーザプログラムを転送する機能（図８のＳＴ０１参照）が組み込まれている。
【０００６】
なお、この電源ＯＮ時イニシャル処理に対応するプログラム部分には、その他の機能として、ハードメモリやシステムワークを初期化する機能、実装されているユニットの認識機能、メモリカードからの電源ＯＮ時自動転送機能、電源ユニットと実装Ｉ／Ｏテーブルの照合機能、入出力メモリのクリア機能、ユーザプログラムメモリのチェック機能、強制セットやリセット解除等の機能、等々が必要に応じて組み込まれている。
【０００７】
ＡＳＩＣ１２２には、ユーザプログラムで使用可能なＰＬＣ言語の命令語のうちの大部分（ＭＰＵ１２１が処理を担当する命令語を除く）を実行するための機能を実現する回路部分、通信ユニットインターフェースとしての機能を実現する回路部分、メモリアクセスのためのバス調停機能を実現する回路部分等々が含まれている。
【０００８】
次に、ＰＬＣ１のＣＰＵユニット１２の動作を示すゼネラルフローチャート（従来例）が図９に示されている。同図において、電源投入により処理が開始されると、先ず、ＭＰＵ１２１はシステムプログラムメモリ１２３から電源ＯＮ時イニシャル処理（ステップ９０１）に対応するプログラム部分を読み出して実行する。
【０００９】
すると、電源ＯＮ時イニシャル処理に相当する各種の機能が実現される。これらの機能の中には、ユーザプログラムバッファメモリ（ＦＲＯＭ）１２６からＡＳＩＣ実行対象メモリ１２７へとＰＬＣ言語で記述されたユーザプログラムを転送する機能（図８のＳＴ０１参照）も含まれている。
【００１０】
以後、図９のフローチャートに示されるように、共通処理（ステップ９０２）、演算処理（ステップ９０３）、Ｉ／Ｏリフレッシュ処理（ステップ９０４）、周辺サービス処理（ステップ９０５）がサイクリックに実行される。ここで、共通処理（ステップ９０２）、演算処理（ステップ９０３）、Ｉ／Ｏリフレッシュ処理（ステップ９０４）、周辺サービス処理（ステップ９０５）の一巡実行時間をサイクルタイムと称する。この種のスキャニング型ＰＬＣにおいて、入出力応答性を向上させるためには、サイクルタイムをできる限り短縮することが必要とされる。
【００１１】
従来、サイクルタイムを決定する上記処理（ステップ９０２〜９０５）の中で、演算処理（ステップ９０３）に相当するプログラム部分は、ＭＰＵ１２１に委ねられる複雑なデータ演算処理等を除いては、主として、ＡＳＩＣ１２２により実行され、これによりサイクルタイムの短縮化が図られている。
【００１２】
すなわち、ＡＳＩＣ１２２は、ＡＳＩＣ実行対象メモリ１２７からＰＬＣ言語で記述されたユーザプログラムの各命令語を順次に読み出す（図８のＳＴ０２参照）。次いで、ＡＳＩＣ１２２は、読み出された各命令語を入出力メモリ１２８の入出力データ並びに設定データ等を参照しつつ解読実行し、その実行結果で入出力メモリ１２８の出力データを書き換える（図８のＳＴ０３参照）。以上の動作がユーザプログラムの末尾まで繰り返される。
【００１３】
演算処理（ステップ９０３）が実行完了すると、続いて、Ｉ／Ｏリフレッシュ処理（ステップ９０４）、周辺サービス処理（ステップ９０５）に対応するプログラム部分が順次に実行される。それらの処理については、ＭＰＵ１２１がシステムプログラムメモリ１２３から該当するプログラム部分（いずれもＣ言語等のＭＰＵ言語で記述）を順次に読み出しつつこれを実行することにより実現される（図８のＳＴ０４参照）。なお、ＭＰＵ１２１による上記各プログラム部分の実行に際しては、ワーキングメモリ内のシステムワークエリアが利用される。
【００１４】
なお、共通処理（ステップ９０２）に対応するプログラムには、例えば、バッテリ異常チェック機能、メモリカード電源チェック機能、ディップスイッチ監視機能、入出力バス（システムバス）のチェック機能、ユーザプログラムのメモリチェック機能、等々が組み込まれている。
【００１５】
また、Ｉ／Ｏリフレッシュ処理（ステップ９０４）に対応するプログラムには、例えば、（１）基本Ｉ／Ｏユニットとの間におけるデータ交換機能、（２）高機能Ｉ／Ｏユニットの割付リレーエリアのサイクリックなデータ交換及びユニット固有のデータ交換機能、（３）ＣＰＵ高機能ユニットの割付リレーやＤＭエリアのサイクリックなデータ交換機能、及びユニット固有のデータ交換機能、等々が組み込まれている。
【００１６】
さらに、周辺サービス処理（ステップ９０５）に対応するプログラムには、例えば、イベント発生時のみに実行される、（１）高機能Ｉ／Ｏユニットとのイベントサービス機能、（２）ＣＰＵ高機能ユニットとのイベントサービス機能、（３）周辺ポートサービス機能、（４）ＲＳ２３２Ｃポートサービス機能、（５）ファイルアセスサービス機能、（６）通信ポートサービス機能、等々が組み込まれている。
【特許文献１】特開２００２−３５８１０４号公報
【発明の開示】
【発明が解決しようとする課題】
【００１７】
しかしながら、このような従来のＰＬＣあっては、ＰＬＣの実現に必要な諸々の処理（電源ＯＮ時イニシャル処理、共通処理、ＰＬＣ言語で記述されたユーザプログラムを実行する演算処理、Ｉ／Ｏリフレッシュ処理、周辺サービス処理）のうちで、演算処理の大部分をＰＬＣ言語（ラダー図言語等）を実行可能なＡＳＩＣに委ねる一方、それ以外の処理については、ＭＰＵ言語（Ｃ言語等）を実行するＭＰＵに委ねると言うものであるから、この方式においてさらなるサイクルタイムの短縮を図ろうとすると、ＡＳＩＣとして高速動作可能な素子構造のものを採用するか、ＭＰＵとして動作速度の高速なものを採用するか、あるいは、演算処理以外の処理（電源ＯＮ時イニシャル処理、共通処理、Ｉ／Ｏリフレッシュ処理、周辺サービス処理）を新たに製作されたＡＳＩＣに委ねる他はなく、いずれにしても、大規模な設計変更が必要となって大幅なコストアップに繋がり実用に供し得ないと言う問題点があった。
【００１８】
この発明は、上述の問題点に着目してなされたものであり、その目的とするところは、この種のＭＰＵとＡＳＩＣとを併有するＰＬＣにおいて、既存のＰＬＣ資源を有効活用しつつ、入出力応答性の高いＰＬＣを低コストに提供することにある。
【課題を解決するための手段】
【００１９】
この発明は、上記の目的を達成するために、つぎのような構成を有するＰＬＣを提供するものである。
【００２０】
すなわち、このＰＬＣは、ＰＬＣとしてのシステム制御仕様を実現するためのシステムプログラムを格納するためのシステムプログラムメモリと、ユーザの所望する機器制御仕様を実現するためのＰＬＣ言語で記述されたユーザプログラムを格納するためのユーザプログラムバッファメモリと、ＭＰＵ言語で記述されたプログラムを実行するＭＰＵと、ＰＬＣ言語で記述されたプログラムを実行するＡＳＩＣと、ＡＳＩＣの実行対象となるプログラムを格納するためのＡＳＩＣ実行対象メモリと、を有する。
【００２１】
システムプログラムメモリに格納されたシステムプログラムは、ＭＰＵ言語で記述されかつ電源ＯＮ時のイニシャル処理を少なくとも含む第１のプログラム部分と、ＰＬＣ言語で記述された第２のプログラム部分とを有し、かつ電源ＯＮ時のイニシャル処理には、ユーザプログラムバッファメモリからＡＳＩＣ実行対象メモリへとＰＬＣ言語で記述されたユーザプログラムを転送する第１の転送処理と、システムプログラムメモリからＡＳＩＣ実行対象メモリへとＰＬＣ言語で記述された第２のプログラム部分を転送する第２の転送処理とが含まれている。ここで、「ＰＬＣ言語で記述された」とは、当該プログラムのソースプログラムを作成する際に、ＰＬＣ言語（ラダー図言語等）を用いたという意味であり、ＡＳＩＣ実行対象メモリに格納された状態においては、ＡＳＩＣが実行可能なコード（実行可能プログラム）に変換されている。また、「ＭＰＵ言語で記述された」とは、当該プログラムのソースプログラムを作成する際に、ＭＰＵ言語（Ｃ言語等）を用いたという意味であり、システムプログラムメモリに格納された状態においては、ＭＰＵが実行可能なコード（実行可能プログラム）に変換されている。
【００２２】
このような構成によれば、電源ＯＮと共に、ＭＰＵが第１の転送処理と第２の転送処理とを実行することにより、ＡＳＩＣ実行対象メモリには、ユーザプログラムとシステムプログラムの第２のプログラム部分とが転送格納され、しかもそれらの２つのプログラム部分はいずれもＰＬＣ言語にて記述されているため、それら２つのプログラム部分をＡＳＩＣにて実行させることができる。そのため、本発明によれば、ユーザプログラムのみならず、システムプログラムの一部についてもＡＳＩＣにてＭＰＵよりも高速に実行させるため、既存のＰＬＣ資源を有効活用しつつ、入出力応答性の良好なＰＬＣを低コストに実現することができる。
【００２３】
好ましい実施の形態においては、第１の転送処理にて転送されるユーザプログラム部分をＡＳＩＣ実行対象メモリにその先頭から格納すると共に、第２の転送処理にて転送されるシステムプログラム部分をＡＳＩＣ実行対象メモリのユーザプログラム部分に続く空きエリアに格納する。
【００２４】
このような構成によれば、ＡＳＩＣ実行対象メモリ内におけるユーザプログラム配置を変更することなく、ＡＳＩＣ実行対象メモリ内にシステムプログラムの一部を配置することができるため、従前の構成に対して必要最小限の変更を加えるだけで、本発明を実施することができる。
【００２５】
好ましい実施の形態においては、ＡＳＩＣには、ＰＬＣ言語を構成する各命令語が読み出されるたびに、そのオペランドで指定されるアクセス対象アドレスが予め決められたユーザプログラムアクセス範囲に収まっているか否かをチェックし、そのチェック結果に基づいて、アクセス対象メモリへのアクセス可否を制御するアクセス範囲チェック機能を有するアクセス範囲チェック回路が含まれており、かつアクセス範囲チェック回路には、各読み出される命令語がアクセス範囲チェックイネーブルの命令語であると判定されるときに限り、アクセス範囲チェック機能を有効とするプロテクト回路が含まれているようにしてもよい。
【００２６】
このような構成によれば、ユーザプログラムを記述するＰＬＣ言語の各命令語に関しては、例えばオペーコードの特定ビットを第１の論理値とすることでアクセス範囲チェックディセーブルとする一方、システムプログラムの第２のプログラム部分を記述するＰＬＣ言語の各命令語に関しては、例えばオペーコードの特定ビットを第２の論理値とすることでアクセス範囲チェックイネーブルとすることにより、ユーザプログラムに関しては予定のアドレス空間内におけるアクセスを保証しつつも、システムプログラムの第２のプログラム部分に関しては、それよりも広いアドレス空間へのアクセスを可能とすることで、システム設計の自由度を確保することができる。
【００２７】
なお、システムプログラムの第２のプログラム部分としては、共通処理、Ｉ／Ｏリフレッシュ処理、及び／又は、周辺サービス処理を含ませることができる。すなわち、この発明によれば、共通処理、Ｉ／Ｏリフレッシュ処理、及び／又は、周辺サービス処理をＡＳＩＣにより実行させることで、サイクルタイムを短縮しつつ、入出力応答制約向上させることができる。
【発明の効果】
【００２８】
この発明によれば、電源ＯＮと共に、ＭＰＵが第１の転送処理と第２の転送処理とを実行することにより、ＡＳＩＣ実行対象メモリには、ユーザプログラムとシステムプログラムの第２のプログラム部分とが転送格納され、しかもそれらの２つのプログラム部分はいずれもＰＬＣ言語にて記述されているため、それら２つのプログラム部分をＡＳＩＣにて実行させることができる。そのため、本発明によれば、ユーザプログラムのみならず、システムプログラムの一部についてもＡＳＩＣにてＭＰＵよりも高速に実行させるため、既存のＰＬＣ資源を有効活用しつつ、入出力応答性の良好なＰＬＣを低コストに実現することができる。
【発明を実施するための最良の形態】
【００２９】
以下に、この発明に係るＰＬＣの好適な実施の一形態を添付図面を参照しながら詳細に説明する。
【００３０】
ＰＬＣ全体の基本構成の説明図が図１に示されている。同図（ａ），（ｂ）に示されるように、この実施形態に係るＰＬＣ１は、ビルディングブロック型に構成されたものであり、電源ユニット１１と、ＣＰＵユニット１２と、１台もしくは２台以上の入出力ユニット（Ｉ／Ｏユニット）１３，１３・・・と、特殊機能ユニット１４とを備えて構成されている。
【００３１】
これらのユニット１１〜１４は、バックプレーン３上に敷設されたシステムバス（入出バスとも言う）３１に対して、それぞれコネクタ３ａ，３ａ・・・を介して着脱自在に接続されている。
【００３２】
ＣＰＵユニット１２は、ＰＬＣ１の全体を統括制御するものであり、この例では、ケーブル５を介して開発支援装置２が接続されている。開発支援装置２は、この例では、パーソナルコンピュータ（以下、パソコンと言う）に、所定のアプリケーションプログラムをインストールすることで構成されている。
【００３３】
開発支援装置２には、ユーザプログラムをＰＬＣ１からダウンロードしてモニタする機能、ユーザプログラムを作成してＰＬＣ１にアップロードする機能、入出力データや設定データをＰＬＣ１からダウンロードしてモニタする機能等々が組み込まれている。
【００３４】
ＣＰＵユニット１２のハードウェア構成図（本発明）が図２に示されている。同図に示されるように、本発明に係るＣＰＵユニット１２は、Ｃ言語等に代表されるＭＰＵ言語で記述されたプログラムを実行するＭＰＵ１２１と、ラダー図言語等に代表されるＰＬＣ言語で記述されたプログラムを実行するＡＳＩＣ１２２と、ＰＬＣとしてのシステム制御仕様を実現するためのシステムプログラムを格納するためのシステムプログラムメモリ（ＲＯＭで構成される）１２３と、ＭＰＵがプログラムを実行する際のワークエリアを提供するワーキングメモリ（ＲＡＭで構成される）１２４と、異常通知の設定や異常ステータスを格納するための設定メモリ（フラッシュメモリ（以下、ＦＲＯＭと言う）で構成される）１２５と、ユーザの所望する機器制御仕様を実現するためのＰＬＣ言語で記述されたユーザプログラムを格納するためのユーザプログラムバッファメモリ（フラッシュメモリ（以下、ＦＲＯＭと言う）で構成される）１２６と、ＡＳＩＣの実行対象となるプログラムを格納するためのＡＳＩＣ実行対象メモリ（高速動作するＲＡＭで構成される）１２７と、外部入出力ユニットの入出力割付に対応する入出力データ並びにユーザプログラムで使用される各種データを格納する入出力メモリ（高速動作するＲＡＭで構成される）１２８とを備えている。
【００３５】
システムプログラムメモリ（ＲＯＭ）１２３には、ＰＬＣとしてのシステム制御仕様を実現するためのシステム制御用プログラムが格納されている。このシステム制御用プログラムは、図７を参照して後に詳述するように、電源ＯＮ時のイニシャル処理、共通処理、演算処理（但し、ＡＳＩＣが実行する部分を除いた処理）、Ｉ／Ｏリフレッシュ処理、周辺サービス処理のそれぞれに対応するプログラム部分を含んでいる。
【００３６】
電源ＯＮ時のイニシャル処理に対応するプログラム部分は、Ｃ言語等のＭＰＵ言語にて記述された第１のプログラム部分と、ラダー言語等のＰＬＣ言語で記述された第２のプログラム部分とから構成されている。
【００３７】
第１のプログラム部分には、ハードメモリやシステムワークを初期化する処理、実装されているユニットの認識処理、メモリカードからの電源ＯＮ時自動転送処理、電源ユニットと実装Ｉ／Ｏテーブルの照合処理、入出力メモリのクリア処理、ユーザプログラムメモリのチェック処理、強制セットやリセット解除等の処理、等々の一般的な電源ＯＮ時処理に対応するプログラム部分に加えて、ユーザプログラムバッファメモリ（ＦＲＯＭ）１２６からＡＳＩＣ実行実行対象メモリ（高速ＲＡＭ）１２７へとユーザプログラムを転送する処理（第１の転送処理）に対応するプログラム部分と、システムプログラムメモリ（ＲＯＭ）１２３からＡＳＩＣが実行実行対象メモリ（高速ＲＡＭ）１２７へとシステムプログラムの第２のプログラム部分を転送する処理（第２転送処理）に対応するプログラム部分とが含まれている。
【００３８】
第２のプログラム部分には、この例にあっては、共通処理と、演算処理（ＡＳＩＣが実行する機能に相当する部分を除く）、Ｉ／Ｏリフレッシュ処理、及び周辺サービス処理のそれぞれに対応するプログラムが含まれている。
【００３９】
ここで、先に従来例で説明したように、共通処理に対応するプログラムには、例えば、バッテリ異常チェック処理、メモリカード電源チェック処理、ディップスイッチ監視処理、入出力バス（システムバス）のチェック処理、ユーザプログラムのメモリチェック処理、等々に対応するプログラムが組み込まれている。
【００４０】
また、Ｉ／Ｏリフレッシュ処理に対応するプログラムには、例えば、基本Ｉ／Ｏユニットとの間におけるデータ交換処理、高機能Ｉ／Ｏユニットの割付リレーエリアのサイクリックなデータ交換及びユニット固有のデータ交換処理、ＣＰＵ高機能ユニットの割付リレーやＤＭエリアのサイクリックなデータ交換処理、及びユニット固有のデータ交換処理、等々に相当するプログラムが含まれている。
【００４１】
さらに、周辺サービス処理に対応するプログラムには、例えば、イベント発生時のみに実行される、高機能Ｉ／Ｏユニットとのイベントサービス処理、ＣＰＵ高機能ユニットとのイベントサービス処理、周辺ポートサービス処理、ＲＳ２３２Ｃポートサービス処理、ファイルアセスサービス処理、通信ポートサービス処理、等々に対応するプログラムが含まれている。
【００４２】
ＡＳＩＣ実行対象メモリ１２７内の格納内容の説明図が図３に示されている。同図に示されるように、ユーザプログラムバッファメモリ（ＦＲＯＭ）１２６からＡＳＩＣ実行対象メモリ（高速ＲＡＭ）１２７に転送されるユーザプログラムは、ＡＳＩＣ実行対象メモリ１２７内の先頭（ＡＤ０）から順に格納される。一方、システムプログラムメモリ（ＲＯＭ）１２３からＡＳＩＣ実行対象メモリ（高速ＲＡＭ）１２７に転送されるシステムプログラムの第２の部分は、ＡＳＩＣ実行対象メモリ１２７内のユーザプログラム格納エリア１２７ａに続く空きエリア（システム制御用プログラム格納エリア）１２７ｂ内の適当な位置に格納される。
【００４３】
このようなメモリ内配置によれば、ユーザプログラムに関しては従前通りの配置となるため、ＡＳＩＣ１２２においてはユーザプログラム処理に関する従前通りの回路構成をそのまま採用することができる一方、システムプログラムの第２のプログラム部分については、ユーザプログラムのサイズに応じたメモリ内配置を自由に選択することができる。
【００４４】
ところで、ＡＳＩＣ１２２には、従前より、ＰＬＣ言語を構成する各命令語が読み出されるたびに、そのオペランドで指定されるアクセス対象アドレスが予め決められたユーザプログラムアクセス範囲に収まっているか否かをチェックし、そのチェック結果に基づいて、アクセス対象メモリへのアクセス可否を制御するアクセス範囲チェック機能を有するアクセス範囲チェック回路が含まれている。
【００４５】
このアクセス範囲チェック回路によれば、ユーザプログラムのプログラミング誤り等を原因として、ユーザプログラムの実行により予期せぬアドレス空間へのアクセスが生じて、ＰＬＣの誤動作乃至故障に至る危険を未然に防止することができる。
【００４６】
しかし、本発明にあっては、ＡＳＩＣ実行対象メモリ１２７内には、ユーザプログラムのみならず、システム制御用プログラムの第２のプログラム部分も格納されており、ＡＳＩＣ１２２としては、それらのプログラムの双方に対応せねばならない。換言すれば、図４に示されるように、ＡＳＩＣとしては、ユーザプログラムのオペランドで規定されるアドレス空間を超えて、システム制御のための拡張されたオペランド範囲で規定されるアドレス空間へのアクセスを保証しなければならない。
【００４７】
そこで、この実施形態においては、アクセス範囲チェック回路に対して、各読み出される命令語がアクセス範囲チェックイネーブルの命令語であると判定されるときに限り、アクセス範囲チェック機能を有効とするプロテクト回路を組み込んでいる。
【００４８】
ユーザプログラムとシステム制御プログラムのアクセス範囲チェック回路のブロック図が図５に示されている。なお、このアクセス範囲チェック回路２０は、ＡＳＩＣ１２２に組み込まれるものである。
【００４９】
同図に示されるように、このアクセス範囲チェック回路２０は、ユーザプログラムのアクセス範囲チェック回路２０ａと、第１のＡＮＤゲート２０ｂと、第２のＡＮＤゲート２０ｃと、１個のゲート回路２０ｄとを備えている。
【００５０】
ユーザプログラムのアクセス範囲チェック回路２０ａは、アクセス対象を特定するアドレスデータ（ＡＤｘ）とユーザプログラムのアクセス範囲を特定するアドレスデータ（Ｄｋ）とに基づいてユーザプログラムアクセス範囲をチェックして範囲外アドレスアクセス信号Ｓ１を生成する。ここで、範囲外アドレスアクセス信号Ｓ１は、範囲外のときには“１”状態となり、範囲内のときには“０”状態となる。
【００５１】
第１のＡＮＤゲート２０ｂは、所定の設定レジスタ（図示せず）に設定されたアクセス範囲チェック回路のイネーブル設定状態ＳＴ１により開閉制御され、命令語のオペコードの特定ビットに設定されたアクセス範囲チェックイネーブル状態ＳＴ２の論理反転したものを通過又は遮断する。ここで、アクセス範囲チェック回路のイネーブル設定状態ＳＴ１は、イネーブルのときには“１”状態となり、ディセーブルのときには“０”状態となる。また、命令語のオペコードのアクセス範囲チェックイネーブル状態ＳＴ２は、ディセーブルのときには“０”となり、イネーブルのときには“１”となる。
【００５２】
第２のＡＮＤゲート２０ｃは、プロテクト回路として機能するものであり、第１のＡＮＤゲート２０ｂの出力信号Ｓ２により開閉制御され、ユーザプログラムのアクセス範囲チェック回路２０ａから出力される範囲外アドレスアクセス信号Ｓ１を通過又は遮断する。ここで、第２のＡＮＤゲート２０ｃの出力信号はプロテクト信号Ｓ３としてゲート回路２０ｄの開閉制御入力へと供給される。ここで、プロテクト信号Ｓ３は、プロテクトありのときには“１”となり、プロテクトなしのときには“０”となる。
【００５３】
ゲート回路２０ｄは、アクセス対象メモリ２０ｅに至る制御信号（チップイネーブル信号）の通過経路に介在され、プロテクト信号Ｓ３により開閉制御されて、制御信号Ｓ４を通過又は遮断する。ここで、ゲート回路２０ｄは、プロテクト信号Ｓ３が“１”のとき開状態となり、“０”のとき閉状態となる。
【００５４】
アクセス対象メモリ２０ｅは、制御信号Ｓ４が供給されているときに、アクセスアドレスデータ（ＡＤｘ）で指定されるアドレスに対して、データ（ＤＡＴＡ）のリード又はライトが可能になされている。なお、ＤＢはデータバス、ＡＢはアドレスバスである。
【００５５】
以上の構成において、アクセス範囲チェック回路のイネーブル設定状態ＳＴ１をイネーブル（“１”）としておけば、第１のＡＮＤ回路２０ｂは開状態に維持されるから、命令語のオペコードのアクセス範囲チェックイネーブル状態ＳＴ２は、論理判定されたのち、第１のＡＮＤゲートの出力信号Ｓ２として現れる。
【００５６】
したがって、ユーザプログラムを記述するＰＬＣ命令のオペコードの特定ビットを第１の論理値（例えば、“０”）とする一方、システムプログラムを記述するＰＬＣ命令のオペコードの特定ビットを第２の論理値（例えば、“１”）としておけば、ユーザプログラムを実行する際には、第１のＡＮＤゲート２０ｂの出力信号Ｓ２は“１”となって、プロテクト回路を構成する第２のＡＮＤゲートは開いたままの状態となる。すると、第２のＡＮＤゲート２０ｃの出力であるプロテクト信号Ｓ３の値は、ユーザプログラムのアクセス範囲チェック回路２０ａの出力である範囲外アドレスアクセス信号Ｓ１の値に追従して変化する。
【００５７】
そのため、ゲート回路２０ｄは、アクセスアドレスデータ（ＡＤｘ）の値がユーザプログラムアクセス範囲を超えていると閉状態となり、アクセス対象メモリ２０ｅへ供給される制御信号Ｓ４を遮断するから、アクセス対象メモリ２０ｅに対するデータリード又はデータライトが禁止されて、誤ったデータによるアクセスがプロテクトされる。
【００５８】
一方、システムプログラムの第２のプログラム部分を実行する際には、第１のＡＮＤゲート２０ｂの出力信号Ｓ２は“０”となって、プロテクト回路を構成する第２のＡＮＤゲートは閉じたままの状態となる。すると、第２のＡＮＤゲート２０ｃの出力であるプロテクト信号Ｓ３の値は、常に、“０”となるから、ゲート回路２０ｄは開いたままの状態のままとなり、仮に、アクセスアドレスデータ（ＡＤｘ）の値がユーザプログラムアクセス範囲を超えていたとしても、アクセス対象メモリ２０ｅに対するアクセスにプロテクトがかかることはなくなり、システムプログラムを支障なく事項することがかのうとなる。
【００５９】
なお、アクセス範囲チェック回路のイネーブル設定状態ＳＴ１をディセーブル（“０”）としておけば、命令語のオペコードのアクセス範囲チェックイネーブル状態ＳＴ２の値に拘わらず、第１のＡＮＤゲート２０ｂの出力信号Ｓ２は常に“０”となるから、プロテクト信号Ｓ３の値も常にプロテクトなし（“０”）となり、ゲート回路２０ｄは開いたままの状態となって、ユーザプログラムのアクセス範囲チェック回路２０ａの範囲外アドレスアクセス信号Ｓ１は無効化され、メモリアクセスに関してプロテクトがかかることはなくなる。
【００６０】
以上説明したアクセス範囲チェック回路のイネーブル設定処理を示すフローチャートが図６に示されている。同図に示されるように、設定レジスタ（図示せず）に記憶されたアクセス範囲チェック回路のイネーブル設定状態ＳＴ１がイネーブル（“１”）のとき（ステップ６０１ＹＥＳ）、ユーザプログラムのアクセス範囲チェック回路２０ａは有効とされるから（ステップ６０２）、以後、命令語のオペコードのアクセス範囲チェックイネーブル状態がディセーブルであるか否かが、命令実行毎に繰り返しチェックされ（ステップ６０３）、アクセス対象メモリ２０ｅに対するプロテクトがかかることになる。
【００６１】
これに対して、アクセス範囲チェック回路のイネーブル設定状態ＳＴ１がディセーブル（“０”）のときには（ステップ６０１ＮＯ）、アクセス範囲チェック回路２０ａは常に無効とされ、アクセス対象メモリ２０ｅに対するプロテクトがかかることことはない。
【００６２】
次に、ＣＰＵ処理を本発明と従来例とで比較して示すフローチャートが図７に示されている。
【００６３】
同図において処理が開始されると、同図（ａ）に示される従来処理及び同図（ｂ）に示される本発明処理のいずれにおいても、電源ＯＮ時のイニシャル処理を実行したのち、サイクルタイムを規定する一連の処理（共通処理、演算処理、Ｉ／Ｏリフレッシュ処理、及び周辺サービス処理）がサイクリックに実行される。
【００６４】
このとき、電源オン時のイニシャル処理に着目すると、従来処理にあっては、一般的なイニシャル処理（ステップ７１１）及びＦＲＯＭ１２５からＡＳＩＣ実行対象メモリ１２７へとユーザプログラムを転送する第１の転送処理（ステップ７１２）がＭＰＵ１２１により実行されるのに対して、本発明処理にあっては、一般的なイニシャル処理（ステップ７２１）及びＦＲＯＭ１２５からＡＳＩＣ実行対象メモリ１２７へとユーザプログラムを転送する第１の転送処理（ステップ７２２、図２のＳＴ１１参照）に加えて、ＲＯＭ１２３からＡＳＩＣ実行対象メモリ１２７へとシステムプログラムの第２のプログラム部分を転送する第２の転送処理（ステップ７２２Ａ、図２のＳＴ１２参照）がＭＰＵ１２１により実行される。そのため、本発明処理と従来処理とのいずれにおいてもＭＰＵ１２１による処理ではあるものの、本発明処理における電源ＯＮ時のイニシャル処理の所要時間（Ｔ２１）は、処理（ステップ７２２Ａ）が追加された分だけ、従来処理における電源ＯＮ時のイニシャル処理の所要時間（Ｔ１１）よりも長く（Ｔ２１＞Ｔ１１）なる。
【００６５】
同様にして、共通処理に着目すると、従来処理にあっては、ハードウェア、ユーザプログラムメモリのチェック処理（ステップ７１３）及びその他のチェック処理（ステップ７１４）がＭＰＵ１２１にて実行されるのに対して、本発明処理にあっては、ハードウェア、ユーザプログラムメモリのチェック処理（ステップ７２３）及びその他のチェック処理（ステップ７２４）がＡＳＩＣ１２２にて実行される。そのため、本発明処理と従来処理とのいずれにおいても処理内容は変わらないものの、実行主体がＭＰＵ１２１とＡＳＩＣ１２２とで異なることから、本発明処理における共通処理の所要時間（Ｔ２２）は、従来処理における共通処理の所要時間Ｔ１２よりも短く（Ｔ２２＜Ｔ１２）なる。
【００６６】
同様にして、演算処理に着目すると、従来処理にあっては、ユーザプログラムの実行処理（ステップ７１５）がＡＳＩＣ１２２にて実行されるのに対して、本発明処理にあっても、ユーザプログラムの実行処理（ステップ７２５）がＡＳＩＣ１２２にて実行される（図２のＳＴ１３，１４参照）。そのため、本発明処理における演算処理の所要時間（Ｔ２３）は、従来処理における本発明処理の所要時間（Ｔ１３）と実質的に変わりはない（Ｔ２３＝Ｔ１３）。
【００６７】
同様にして、Ｉ／Ｏリフレッシュ処理に着目すると、従来処理にあっては、Ｉ／Ｏリフレッシュ処理（ステップ７１６）がＭＰＵ１２１にて実行されるのに対して、本発明処理にあっては、Ｉ／Ｏリフレッシュ処理（ステップ７２６）がＡＳＩＣ１２２にて実行される。そのため、本発明処理におけるＩ／Ｏリフレッシュ処理の所要時間（Ｔ２４）は、従来処理におけるＩ／Ｏリフレッシュ処理（Ｔ１４）に比べて短く（Ｔ２４＜Ｔ１４）なる。
【００６８】
同様にして、周辺サービス処理に着目すると、従来処理にあっては、周辺サービス処理（ステップ７１７）がＭＰＵ１２１にて実行されるのに対して、本発明処理にあっては、周辺サービス処理（ステップ７２７）がＡＳＩＣ１２２にて実行される。そのため、本発明処理における周辺サービス処理の所要時間（Ｔ２５）は、従来処理における周辺サービス処理（Ｔ１５）に比べて短く（Ｔ２５＜Ｔ１５）なる。
【００６９】
その結果、本発明者等の試算によれば、同図（ｂ）に示される本発明処理におけるサイクルタイムは、同図（ａ）に示される従来処理におけるサイクルタイムの１／３程度に短縮されることが確認された。
【００７０】
なお、以上の実施形態においては、共通処理、Ｉ／Ｏリフレッシュ処理、周辺サービス処理のすべてをＰＬＣ言語にて記述することにより、それらの処理を全てＡＳＩＣ１２１にて実行させるように構成したが、どの処理をＰＬＣ言語で記述してＡＳＩＣ１２１に実行させるかは、要求されるサイクルタイムと設計変更のコスト等とを勘案して、任意に決定すればよい。
【００７１】
また、ＭＰＵ言語にて記述されたシステム制御用プログラムをコンパイラを介してＰＬＣ言語に変換する際には、ＰＬＣ言語を構成する各命令語のオペコードの特定ビットに、その命令語がアクセス範囲チェックにかからなくなるように、ディセーブル（“０”）を設定することが好ましい。
【産業上の利用可能性】
【００７２】
この発明によれば、この種のＭＰＵとＡＳＩＣとを併有するＰＬＣにおいて、既存のＰＬＣ資源を有効活用しつつ、入出力応答性の高いＰＬＣを低コストに提供することができる。
【図面の簡単な説明】
【００７３】
【図１】ＰＬＣ全体の基本構成の説明図である。
【図２】ＣＰＵユニットのハードウェア構成図（本発明）である。
【図３】ＡＳＩＣ実行対象メモリの格納内容を示す説明図である。
【図４】オペランド範囲に関して本発明と従来例とを比較して示すアドレス空間の説明図である。
【図５】ユーザプログラムとシステム制御プログラムのアクセス範囲チェック回路のブロック図である。
【図６】アクセス範囲チェック回路イネーブル設定処理を示すフローチャートである。
【図７】ＣＰＵ処理を本発明と従来例とで比較して示すフローチャートである。
【図８】ＣＰＵユニットのハードウェア構成図（従来例）である。
【図９】ＰＬＣのＣＰＵユニットの動作を示すゼネラルフローチャート（従来例）である。
【符号の説明】
【００７４】
１        ＰＬＣ
２        開発支援装置
３        バックプレーン
１１        電源ユニット
１２        ＣＰＵユニット
１３        入出力ユニット（Ｉ／Ｏユニット）
１４        特殊機能ユニット
１２１        ＭＰＵ
１２２        ＡＳＩＣ
１２３        システムプログラムメモリ（ＲＯＭ）
１２４        ワーキングメモリ（ＲＡＭ）
１２５        設定メモリ（ＦＲＯＭ）
１２６        ユーザプログラムバッファメモリ（ＦＲＯＭ）
１２７        ＡＳＩＣ実行対象メモリ（高速ＲＡＭ）
１２７ａ      ユーザプログラム格納エリア
１２７ｂ      システム制御用プログラム格納エリア
１２８        入出力メモリ（高速ＲＡＭ）
２０        アクセス範囲チェック回路
ＳＴ１        アクセス範囲チェック回路のイネーブル設定状態
ＳＴ２        命令オペコードのアクセス範囲チェックイネーブル状態
２０ａ        ユーザプログラムのアクセス範囲チェック回路
２０ｂ        第１のＡＮＤゲート
２０ｃ        第２のＡＮＤゲート（プロテクト回路）
２０ｄ        ゲート回路
２０ｅ        アクセス対象メモリ
ＡＤｘ        アクセス対象となるアドレスデータ
ＡＤｋ        ユーザプログラムアクセス範囲を示すアドレスデータ
Ｓ１        範囲外アドレスアクセス信号
Ｓ２        第１のＡＮＤゲートの出力信号
Ｓ３        第２のＡＮＤゲート（プロテクト回路）の出力信号（プロテクト信号）
Ｓ４        制御信号
ＤＡＴＡ    書き込まれるデータ
ＤＢ        データバス
ＡＤ        アドレスデータ
【図１】
0004793585.tif 000002
【図２】
0004793585.tif 000003
【図３】
0004793585.tif 000004
【図４】
0004793585.tif 000005
【図５】
0004793585.tif 000006
【図６】
0004793585.tif 000007
【図７】
0004793585.tif 000008
【図８】
0004793585.tif 000009
【図９】
0004793585.tif 000010