(57)【特許請求の範囲】
【請求項１】
汎用演算処理装置と特定用途向け制御装置とを搭載したプログラマブルコントローラにおいて、
前記汎用演算処理装置から前記特定用途向け制御装置に対してユーザプログラムの実行処理依頼を行って前記特定用途向け制御装置を起動した場合に、前記汎用演算処理装置は、前記特定用途向け制御装置が依頼されたユーザプログラムを実行中に、イベント処理を実行するものであり、
前記特定用途向け制御装置は、実行処理依頼を受け取ると、ユーザプログラム中の命令を順次取り込み、自身で実行可能かどうか判断し、実行可能な場合は取り込んだ前記命令を実行し、
自身で実行可能でない命令と判断した場合には、前記汎用演算処理装置に対してその命令の実行依頼を行うものであり、
前記汎用演算処理装置は、前記特定用途向け制御装置が自身で実行可能でないと判断した命令の実行依頼を受けると、実行中の前記イベント処理を終了し、当該命令を実行するものであることを特徴とするプログラマブルコントローラ。
【請求項２】
汎用演算処理装置と特定用途向け制御装置とを搭載したプログラマブルコントローラにおいて、
前記汎用演算処理装置から前記特定用途向け制御装置に対してＩ／Ｏリフレッシュ処理におけるＤＭＡ転送処理依頼を行って前記特定用途向け制御装置を起動した場合に、前記汎用演算処理装置は、前記特定用途向け制御装置が依頼されたＩ／Ｏリフレッシュ処理におけるＤＭＡ転送処理を実行中に、イベント処理を実行することを特徴とするプログラマブルコントローラ。
【請求項３】
汎用演算処理装置と特定用途向け制御装置とを搭載したプログラマブルコントローラの制御方法において、
前記汎用演算処理装置は、ユーザプログラムの演算実行中に、その一部の命令の実行処理依頼を前記特定用途向け制御装置に対して行い、
前記特定用途向け制御装置は、受け取った前記実行処理依頼に伴い、前記ユーザプログラム中の所定の命令を実行し、
前記汎用演算処理装置は、前記特定用途向け制御装置が前記所定の命令を実行している期間、イベント処理要求の有無を判断し、前記イベント処理要求があった場合にそのイベント処理を実行し、
前記特定用途向け制御装置は、実行処理依頼を受け取ると、ユーザプログラム中の命令を順次取り込み、自身で実行可能かどうか判断し、
実行可能と判断した場合は、取り込んだ前記命令を実行し、
自身で実行可能でない命令と判断した場合には、前記汎用演算処理装置に対してその命令の実行依頼を行い、
前記汎用演算処理装置は、前記特定用途向け制御装置が自身で実行可能でないと判断した命令の実行依頼を受けると、実行中の前記イベント処理を終了し、当該命令を実行することを特徴とするプログラマブルコントローラの制御方法。
【請求項４】
汎用演算処理装置と特定用途向け制御装置とを搭載したプログラマブルコントローラの制御方法において、
前記汎用演算処理装置は、Ｉ／Ｏリフレッシュ処理中に、ＤＭＡ転送処理依頼を前記特定用途向け制御装置に対して行い、
前記特定用途向け制御装置は、受け取った前記ＤＭＡ転送処理依頼に伴い、そのＤＭＡ転送処理を実行し、
前記汎用演算処理装置は、前記特定用途向け制御装置が前記ＤＭＡ転送処理を実行している期間、イベント処理要求の有無を判断し、前記イベント処理要求があった場合にそのイベント処理を実行することを特徴とするプログラマブルコントローラの制御方法。
【請求項５】
前記汎用演算処理装置が、ユーザプログラムの演算実行処理やＩ／Ｏリフレッシュ処理と独立してイベント処理を実行するステップを含むことを特徴とする請求項３または４に記載のプログラマブルコントローラの制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、プログラマブルコントローラに関し、特に、ユーザプログラムの実行処理または入出力リフレッシュ処理の実行中に、上位系、通信ユニット等の周辺コンポーネントに対する周辺サービス処理（イベント処理）を並列実行することにより、プログラマブルコントローラのＣＰＵユニットのサイクルタイムを短縮してその応答性を改善したプログラマブルコントローラとその制御方法に関する。
【０００２】
【従来の技術】
一般に、プログラマブルコントローラ（ＰＬＣ）は、センサやスイッチ，アクチュエータが繋がれたＩ／Ｏユニットと、予め設定されたユーザプログラムを実行するＣＰＵユニットと、ネットワークを介して上位系と通信する通信ユニットなどが組み合わされて構成されている。そして、プログラマブルコントローラの中型，小型機種では、ＣＰＵユニットに１個のＭＰＵ（Ｍｉｃｒｏ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）が設けられ、その１個のＭＰＵによりシーケンス制御が行われていた。そのシーケンス制御は、Ｉ／Ｏユニットからセンサなどの入力信号を取り込んで、ユーザプログラムの論理式に当てはめて演算し、その演算結果を出力信号としてＩ／Ｏユニットに送り、アクチュエータなどの制御対象を駆動して製造装置などを制御するというものである。なお、Ｉ／ＯデータはＣＰＵユニットのＩ／Ｏメモリに記憶されるようになっている。
【０００３】
図３は、この種のプログラマブルコントローラのＣＰＵユニットにおける上記処理の概略を示すものである。この図３の処理においては、プログラマブルコントローラは、電源ＯＮにより、まず、メモリ初期化や組み合わされている各ユニットの認識等の電源ＯＮ時処理を行う（ＳＴ３０１）。その後、供給電源の状態を確かめるためにバッテリ異常チェック等の共通処理を行う（ＳＴ３０２）。続いて、ユーザプログラムの実行等の演算処理をする（ＳＴ３０３）。なお、１サイクル目の入力データは、前回電源ＯＦＦしたときの入力信号を記憶しておいて、その記憶データをステップ３０１で呼び戻して演算することができる。こうすると、電源ＯＦＦしたときの処理の続きとして演算処理できる。また、別の方法としては、ステップ３０１を実行して初期化されたメモリ初期化データに基づく演算処理をすることもできる。
【０００４】
続いて、外部のスイッチなどの制御機器からの入力データをＩ／Ｏメモリに書き込んだり、演算結果に基づいて更新されたＩ／Ｏデータを制御対象へ出力データとして送信する入出力リフレッシュ処理を行う（ＳＴ３０４）。その後、ネットワークを介して繋がれた、いわゆるツールとのやりとりや、接続時の通信処理等の周辺サービス処理（イベント処理）を実行する（ＳＴ３０５）。その後、ステップ３０２から３０５迄の処理を一連のサイクリック処理として順次繰り返し実行する。ここで、上記共通処理（ＳＴ３０２）から上記周辺サービス処理（ＳＴ３０５）までの時間を一般にこのＣＰＵユニットのサイクルタイムと呼ぶ。
【０００５】
また、この種のプログラマブルコントローラにおいては、図４に示すようにパーソナルコンピュータ等から構成される上位系４０１と複数の子プログラマブルコントローラ（子ＰＬＣ）４０３，４０４，４０５，……との間に、親プログラマブルコントローラ（親ＰＬＣ）４０２を介在させて、各種制御を可能にしたプログラマブルコントローラシステムを構築する場合がある。この場合、親ＰＬＣ４０２が、３つの子ＰＬＣのデータを収集して、上位系にそのデータを送信することで、上位系でシステム全体の制御状態をモニタすることができる。
【０００６】
【発明が解決しようとする課題】
ところで、上記図４に示したようなプログラマブルコントローラシステムを構築する場合に、上記親プログラマブルコントローラ４０２として、１個のＭＰＵを搭載している機種を採用したとすると、図３に示したような共通処理（ＳＴ３０２）から周辺サービス処理（ＳＴ３０５）までの一連のサイクリック処理時間をサイクルタイムとして動作することになる。この際、上記ステップ３０３の演算処理のユーザプログラム実行処理時間を経て、入出力リフレッシュ処理が終了しないことには、周辺サービス処理に移行しないので、上位系または通信ユニットを通じてＣＰＵユニットが優先度の高い周辺サービス処理（イベント処理）を行いたくても、周辺サービス処理のサイクルタイミングまで待たなければならず、応答性、すなわち速いイベント応答性が満足できないという問題があった。
【０００７】
一方、サイクルタイムを短くするために、プログラマブルコントローラのＣＰＵユニットに従来の１個のＭＰＵ（汎用演算処理装置に相当）に加えて専用のハードウェア回路としてのＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  ＳｐｅｃｉｆｉｃＩｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ：特定用途向け制御装置に相当）を実装したものがあった。ここで、特定用途向け制御装置は、ハードウェア回路でユーザプログラムの一部の命令を実行する機能を持たせたものである。ハードウェア回路で実行処理するので、ソフトウェア的に処理実行する汎用演算処理装置の処理スピードに比べて格段に速い特徴をもつ。但し、複雑な応用命令を行おうとすると、そのために専用のハードウェア回路を開発設計する必要が生じ、ＡＳＩＣ上ではなかなか実現することは困難である。よって、ビット演算や基本命令と呼ばれるある程度限られたいくつかの命令コマンドについて処理できるようにハードウェア回路を開発設計し、ＡＳＩＣを作るのが実情である。つまり、ハードウェア処理に適した命令コマンドの実行を行わせるように設計したＡＳＩＣチップを実装するのが実情である。
【０００８】
一方、ＭＰＵとしての汎用演算処理装置は、ソフトウェア的に処理を行うので、応用命令と呼ばれる複雑な演算を必要とする命令コマンドでも、単純な演算としてのビット演算や基本命令でも処理することができる。但し、ソフトウェア的な処理のため、処理スピードはハードウェア回路に比べて遅い。
【０００９】
上述の２つの装置を実装したプログラマブルコントローラでは、ユーザプログラム実行の演算処理時間を少し短くできる。これはユーザプログラムのうち、特定用途向け制御装置で処理できるものは、汎用演算処理装置で処理するのではなく、特定用途向け制御装置にて早く処理しているからである。実際には、ユーザプログラムを実行する際に、実行対象の命令一つずつを特定用途向け制御装置にて実行可能か否かの判断をし、実行可能と判断すれば、そのまま特定用途向け制御装置で実行をし、実行不可と判断すれば実行権を汎用演算処理装置に渡し、その命令を汎用演算処理装置で実行するようにしている。
【００１０】
係る構成を採ることにより、サイクルタイムを短くすることはできる。しかし、この場合もユーザプログラム実行処理（演算処理）と、入出力リフレッシュ処理とイベント処理は、一連のサイクリック処理として順次繰り返して、逐次的に処理されているので、ユーザプログラム実行処理と入出力リフレッシュ処理が終了しないことには、イベント処理に移行しない。よって、周辺サービス処理を優先して実行したくてもできず、速いイベント応答性が満足できないという問題があった。
【００１１】
そこで、この発明は、汎用演算処理装置と特定用途向け制御装置とを搭載したプログラマブルコントローラにおいて、ユーザプログラム実行処理中に、イベント処理を平行して実行させるようにして、イベント応答性を改善することを目的とする。
【００１２】
【課題を解決するための手段】
上記目的を達成するために、この発明に係るプログラマブルコントローラは、汎用演算処理装置と特定用途向け制御装置とを搭載したプログラマブルコントローラにおいて、前記汎用演算処理装置から前記特定用途向け制御装置に対してユーザプログラムの実行処理依頼を行って前記特定用途向け制御装置を起動した場合に、前記汎用演算処理装置は、前記特定用途向け制御装置が依頼されたユーザプログラムを実行中に、イベント処理を実行するようにした。そして、前記特定用途向け制御装置は、実行処理依頼を受け取ると、ユーザプログラム中の命令を順次取り込み、自身で実行可能かどうか判断し、実行可能な場合は取り込んだ前記命令を実行し、自身で実行可能でない命令と判断した場合には、前記汎用演算処理装置に対してその命令の実行依頼を行うようにした。さらに、前記汎用演算処理装置は、前記特定用途向け制御装置が自身で実行可能でないと判断した命令の実行依頼を受けると、実行中の前記イベント処理を終了し、当該命令を実行するように構成した。
【００１３】
また、別の解決手段としては、汎用演算処理装置と特定用途向け制御装置とを搭載したプログラマブルコントローラにおいて、前記汎用演算処理装置から前記特定用途向け制御装置に対してＩ／Ｏリフレッシュ処理におけるＤＭＡ転送処理依頼を行って前記特定用途向け制御装置を起動した場合に、前記汎用演算処理装置は、前記特定用途向け制御装置が依頼されたＩ／Ｏリフレッシュ処理におけるＤＭＡ転送処理を実行中に、イベント処理を実行するように構成することもできる。
【００１４】
また、本発明に係るプログラマブルコントローラの制御方法は、汎用演算処理装置と特定用途向け制御装置とを搭載したプログラマブルコントローラの制御方法において、前記汎用演算処理装置は、ユーザプログラムの演算実行中に、その一部の命令の実行処理依頼を前記特定用途向け制御装置に対して行い、前記特定用途向け制御装置は、受け取った前記実行処理依頼に伴い、前記ユーザプログラム中の所定の命令を実行し、前記汎用演算処理装置は、前記特定用途向け制御装置が前記所定の命令を実行している期間、イベント処理要求の有無を判断し、前記イベント処理要求があった場合にそのイベント処理を実行する。そして、前記汎用演算処理装置は、前記特定用途向け制御装置が前記所定の命令を実行している期間、イベント処理要求の有無を判断し、前記イベント処理要求があった場合にそのイベント処理を実行し、前記特定用途向け制御装置は、実行処理依頼を受け取ると、ユーザプログラム中の命令を順次取り込み、自身で実行可能かどうか判断し、実行可能と判断した場合は、取り込んだ前記命令を実行し、自身で実行可能でない命令と判断した場合には、前記汎用演算処理装置に対してその命令の実行依頼を行う。そして、前記汎用演算処理装置は、前記特定用途向け制御装置が自身で実行可能でないと判断した命令の実行依頼を受けると、実行中の前記イベント処理を終了し、当該命令を実行するようにした。
【００１５】
また、別の解決手段としては、汎用演算処理装置と特定用途向け制御装置とを搭載したプログラマブルコントローラの制御方法において、前記汎用演算処理装置は、Ｉ／Ｏリフレッシュ処理中に、ＤＭＡ転送処理依頼を前記特定用途向け制御装置に対して行い、前記特定用途向け制御装置は、受け取った前記ＤＭＡ転送処理依頼に伴い、そのＤＭＡ転送処理を実行し、前記汎用演算処理装置は、前記特定用途向け制御装置が前記ＤＭＡ転送処理を実行している期間、イベント処理要求の有無を判断し、前記イベント処理要求があった場合にそのイベント処理を実行することもできる。
【００１６】
上記した各発明を前提として、前記汎用演算処理装置が、ユーザプログラムの演算実行処理やＩ／Ｏリフレッシュ処理と独立してイベント処理を実行するステップを含むようにしてもよい。
【００１７】
ここで、上記汎用演算処理装置とは、このプログラマブルコントローラに搭載されるＭＰＵを含み、また、特定用途向け制御装置とは、このプログラマブルコントローラに搭載されるユーザプログラム実行のための専用ＡＳＩＣを含む。
【００１８】
上記イベント処理は周辺コンポーネントに対する周辺サービス処理を含み、この周辺サービス処理には上位系、通信ユニット等の周辺コンポーネントに対するイベント処理が含まれる。
【００１９】
上記汎用演算処理装置から特定用途向け制御装置に対して依頼するユーザプログラムとしては、たとえば処理に時間のかかる命令があり、この種の命令を依頼した場合は、汎用演算処理装置の空き時間が増えるので、イベント処理の実行に必要な時間を十分に確保することができる。
【００２０】
Ｉ／Ｏリフレッシュは、入出力リフレッシュ処理や、入力リフレッシュ処理並びに出力リフレッシュ処理に対応し、Ｉ／Ｏメモリに対するリフレッシュを行う処理などである。
【００２１】
【発明の実施の形態】
以下、この発明に係わるプログラマブルコントローラの好適な実施の形態について添付図面を参照して詳細に説明する。図１は、この発明に係わるプログラマブルコントローラのＣＰＵユニット部の全体構成を示すブロック図である。
【００２２】
図１において、このプログラマブルコントローラのＣＰＵユニット部は、ＭＰＵ（Ｍｉｃｒｏ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ：汎用演算処理装置）１０１、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１０２、バックアップユーザメモリ（ＢＵＭ）１０３，ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１０４、ユーザメモリ１０５、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ：特定用途向け制御装置）１０６、Ｉ／Ｏメモリ１０７、およびＩ／Ｏバス１０８を具備して構成される。
【００２３】
ここで、ＭＰＵ１０１は、このＣＰＵユニット部の全体の動作を司るマイクロプロセッサユニットであり、従来のプログラマブルコントローラと同様に、ユーザプログラム実行処理と、入出力リフレッシュ処理とイベント処理とをサイクリックに行う。そして、内部バスを介して、ＲＯＭ１０２，ＢＵＭ１０３，ＲＡＭ１０４並びにＡＳＩＣ１０６と接続されている。
【００２４】
ＲＯＭ１０２は、このＣＰＵユニット部のシステムファームウェアを格納するメモリである。このＲＯＭ１０２には、具体的には入出力リフレッシュやイベント処理などの全体の動作に関わるプログラムや、ＭＰＵ１０１で実行されるユーザプログラム命令の実態であるプログラムが格納される。
【００２５】
ＲＡＭ１０４は、このＣＰＵユニット部のシステムワークとして使用されるメモリである。このＲＡＭ１０４には、上述のシステムが動作するために一時的に使用されるデータが格納される。例えば、演算の中間データを含むデータである。また、ユーザメモリ１０５は、ユーザがツールを利用してラダー言語などのＰＬＣ言語により作成されたユーザプログラムを格納するメモリである。
【００２６】
ＡＳＩＣ１０６は、内部バスを介してＭＰＵ１０１，ＲＯＭ１０２，ＢＵＭ１０３，ＲＡＭ１０４と繋がっている。また、ユーザメモリ１０５とＩ／Ｏメモリ１０７とは直接接続されている。さらに、Ｉ／Ｏバス１０８に対しても接続されており、Ｉ／Ｏユニットや通信ユニットとバス通信する。そして、ＡＳＩＣ１０６は、ユーザメモリ１０５に格納されたユーザプログラムを読み出し、その命令がＡＳＩＣで実行可能か否かの判断処理，ＡＳＩＣで実行可能な命令の実行処理，Ｉ／Ｏリフレッシュである入出力リフレッシュ処理の内のＤＭＡ転送処理，Ｉ／Ｏバス１０８についてのバスインタフェース処理およびＩ／Ｏメモリの調停処理等を実行する専用の制御装置である。なお、このＡＳＩＣ１０６とＭＰＵ１０１との連係動作については、後述する。
【００２７】
Ｉ／Ｏメモリ１０７は、このプログラマブルコントローラの制御に必要な入出力データ、つまり、ユーザメモリ１０５に格納されたユーザプログラムを実行するときに使用する入力データや演算結果としての出力データを格納する機能を有する。このＩ／Ｏメモリ１０７のデータを必要とするのは、ＭＰＵ１０１，ＡＳＩＣ１０６，Ｉ／Ｏバス１０８を介して繋がれたＩ／Ｏユニット及び通信ユニット（図示せず）と複数に渡り、メモリアクセスの調停をＡＳＩＣ１０６が行うことで不具合なくデータのやりとりが成される。
【００２８】
さて、本実施の形態のプログラマブルコントローラのＣＰＵユニット部においては、Ｉ／Ｏメモリ１０７内に、システム設定エリアがあって、そのエリア内にこのプログラマブルコントローラの動作モードを指定するエリアを設ける。ＭＰＵ１０１は、プログラマブルコントローラの運転開始時に係るＩ／Ｏメモリ１０７のシステム設定エリアに格納された動作モードの指定内容を読み込み、この読み込んだ動作モードに対応するように内部処理を選択する。なお、具体的な動作モードは以下の通りである。
【００２９】
Ｉ／Ｏメモリ１０７の中で、このエリアに格納される動作モードは、
（１）通常モード
（２）並列実行モード
の２種類である。
【００３０】
ここで、通常モードとは、後述するユーザプログラムの実行処理および入出力リフレッシュ処理と、イベント処理とを並列実行しないモードである。つまり、従来と同様に、ユーザプログラムを演算実行する処理と入出力リフレッシュ処理並びにイベント処理（周辺サービス処理）等を順次サイクリックに実行するモードである。
【００３１】
一方、並列実行モードは、この発明の特徴であるプログラマブルコントローラの実行処理方法である。その概要は、第１に、従来の一連のサイクリック処理の１つとして行われていたイベント処理を、ＡＳＩＣ１０６がユーザプログラムを実行している間にＭＰＵ１０１が行うようにした。つまり、通常モードのように、イベント処理の実行を、一連のサイクリック処理の中の入出力リフレッシュ処理が終了した後に行うのではなく、ＡＳＩＣ１０６がユーザプログラムの実行処理期間中に、ＭＰＵ１０１で並列的にイベント処理を行うようにした。
【００３２】
係る構成を採ることで、一連のサイクリック処理からイベント処理が無くなり、ユーザプログラムの演算実行処理とイベント実行処理との並列処理と、入出力リフレッシュ処理の２つの処理が順次繰り返し実行されるプログラマブルコントローラとなる。
【００３３】
また、概要の第２としては、従来のイベント処理の実行を、ＡＳＩＣ１０６が入出力リフレッシュ処理中のＤＭＡ転送している間に、ＭＰＵ１０１が行うようにした。つまり、通常モードのように、イベント処理の実行を、一連のサイクリック処理の中の入出力リフレッシュ処理が終了した後に行うのではなく、ＡＳＩＣ１０６がＤＭＡ転送処理をしている期間中に、ＭＰＵ１０１で並列的にイベント処理を行うようにした。
【００３４】
係る構成を採ることで、一連のサイクリック処理からイベント処理が無くなり、ユーザプログラムの演算処理と、入出力リフレッシュ処理が順次繰り返し実行されるとともに、各処理の所定のタイミングでイベント処理が並列処理されるプログラマブルコントローラとなる。
【００３５】
なお、本実施の形態では、上記した第１の概要ポイントと第２の概要ポイントを併せ持ったプログラマブルコントローラを例に挙げて説明しているが、本発明は、これに限ることはなく、いずれか一方の機能を備えたものでももちろん良い。
【００３６】
次に、並列実行モードの具体的な処理手順について説明する。図２は、並列実行モードが選択された場合の図１に示したＭＰＵ１０１並びにＡＳＩＣ１０６の内部処理を説明する図である。
【００３７】
図２に示すように、まず、ＭＰＵ１０１は、共通処理２０１を実行した後、ユーザプログラムの命令実行初期処理２０２において、ＡＳＩＣ１０６に対してユーザプログラムの命令の実行依頼を行って、ＡＳＩＣ命令２０３を起動する。係るＭＰＵ１０１からＡＳＩＣ１０６に対するＡＳＩＣ命令の実行依頼は、たとえばＡＳＩＣ１０６の起動用レジスタにＭＰＵ１０１が書き込み処理を行うことによってなされる。
【００３８】
ＡＳＩＣ１０６は、実行依頼を受け取ると、ユーザメモリ１０５にアクセスし、そのユーザメモリ１０５に格納されたユーザプログラムを読みに行く。そして、ＡＳＩＣ１０６は、ユーザプログラム中の命令内容について順次取り込み、ＡＳＩＣ１０６で実行可能か否かを判断する。係る判断をした結果、実行可能な場合には、ＡＳＩＣ１０６が係る命令を実行し、その後、次の命令を取り込み実行可能か否かを判断する。本実施の形態では、ＡＳＩＣ１０６は、多くの命令が実行可能なように設計開発されたものとしているので、実行可能と判断される命令が連続する。よって、ＡＳＩＣ１０６では、実行可能な命令が次々と処理され、図２に示すように、一定の期間ＡＳＩＣ命令２０３が実行される。そして、このＡＳＩＣ命令２０３は、ＡＳＩＣ１０６で実行可能でない命令が出現するまで継続する。
【００３９】
一方、ＭＰＵ１０１は、上記ＡＳＩＣ１０６に対するＡＳＩＣ命令の実行依頼後、ユーザプログラムの演算処理がＡＳＩＣ１０６で処理している期間（ＡＳＩＣ命令２０３が実行されている期間）、他の処理ができる。そこで、その期間を利用して周辺周辺サービス処理等のイベント処理２０４を実行する。すなわち、ＭＰＵ１０１は、この期間中、Ｉ／Ｏバス１０８に繋がれた通信ユニット（図示せず）からイベント処理要求があるか否かをチェックする。そして、イベント要求がない時はそのまま待機状態となり、イベント処理要求がある場合には、その要求を受けたイベント処理を実行する。イベント処理の一例としては、Ｉ／Ｏメモリ１０７の内容の一部を読み出して通信ユニットやツールなどに送る処理や、逆に通信ユニットが持っているＩ／ＯデータをＣＰＵユニットが取り込んでＩ／Ｏメモリ１０７に書き込む処理や、ツールからＩ／Ｏメモリ１０７のデータを書き換える処理などがある。もちろん、このイベント処理２０４の期間中に複数のイベント要求が来る場合もあるし、１度も来ない場合もある。
【００４０】
なお、イベント処理をする際、Ｉ／Ｏメモリ１０７へのアクセスは、ＡＳＩＣ１０６が調停をする。この調停処理と、ＡＳＩＣ命令２０３の実行との関係は、直列処理である。つまり、ＡＳＩＣ１０６は、１つの命令に対してＡＳＩＣで実行可能か否かの判断処理及び実行可能な命令の実行処理をした後、必要に応じてメモリの調停処理を行う。その調停処理が完了すると、次の命令を読み出し、実行可能か否かの判断等を行う。もちろん、命令処理と、調停処理を独立に並列処理するようにしても良い。いずれにしても、ＭＰＵ１０１がイベント処理対応可能とし、かつＡＳＩＣ１０６がユーザプログラムの命令実行を同時に行うようになるので、この状態では、ＡＳＩＣ１０６によるユーザプログラムの命令の実行、すなわちＡＳＩＣ命令２０３の実行と、ＭＰＵ１０１によるイベント処理２０４の実行とが並列実行となっているといえる。
【００４１】
そして、ＡＳＩＣ１０６がユーザプログラムの命令実行を次々とユーザメモリ１０５から読み出し、ユーザプログラムの命令でＡＳＩＣで実行可能でない命令（当初からＡＳＩＣ処理命令としておらず、ＭＰＵで処理する命令としていたもの）だと判断すると、ＡＳＩＣ命令２０３の実行が中止となり、ＡＳＩＣ１０６はレジスタにその旨の信号を出し、ＭＰＵ１０１に対して実行依頼をする。実際には、ＡＳＩＣ１０６からＭＰＵ１０１へ割込み通知がなされる。これにより、ＭＰＵ１０１は、上記イベント処理２０４を中止するか、イベント処理の区切りのところまで処理を実行した後、ＭＰＵ１０１で実行すべきユーザプログラムの命令の演算実行処理を行う。つまり、図示のＭＰＵ命令２０５を開始する。
【００４２】
このＭＰＵ命令２０５としての１つの命令の演算処理の実行が終了すると、ＭＰＵ１０１は、再びＡＳＩＣ１０６に対して実行依頼をする。そして、ＡＳＩＣ１０６は、次の命令をユーザメモリ１０５から読み出し、その命令がＡＳＩＣで実行可能か否かを判断する。実行可能な命令で有れば、ＡＳＩＣ１０６での実行となり、図示のＡＳＩＣ命令２０６を起動する。そして、読み出した命令がＡＳＩＣ１０６で実行不可能でＭＰＵ１０１で処理すべきと判断されるまで、ＡＳＩＣ命令２０６は続き、その期間、ＭＰＵ１０１は、周辺サービス処理等のイベント処理２０７を実行する。
【００４３】
この状態でも、上述の並列処理と同様に、ＡＳＩＣ１０６によるユーザプログラムの命令の実行、すなわちＡＳＩＣ命令２０６の実行と、ＭＰＵ１０１によるイベント処理２０７の実行との並列実行となる。そして、ＡＳＩＣ１０６にて実行可能でない命令だと判断すると、ＡＳＩＣ命令２０６の実行が中止となり、ＡＳＩＣ１０６はレジスタにその旨の信号を出し、ＭＰＵ１０１に対して実行依頼をする。これにより、ＭＰＵ１０１は、上記イベント処理２０７を中止するか、イベント処理の区切りのところまで処理を実行した後、ＭＰＵ１０１で実行すべきユーザプログラムの命令の演算実行処理を行う。つまり、図示のＭＰＵ命令２０８を開始する。
【００４４】
このように、ＭＰＵ１０１によるユーザプログラムの命令実行（演算処理）並びにＡＳＩＣ１０６とＭＰＵ１０１の並列処理は、ユーザプログラムの命令を全て実行して終了するまで繰り返される。なお、図示の例では、ＭＰＵ実行命令２０で処理が終了しているが、並列処理で終了することももちろんある。
【００４５】
そして、ユーザプログラムが終了すると、ＭＰＵ１０１は、命令実行終了処理２０９をしてから入出力リフレッシュ処理２１０の実行を始める。この処理は、Ｉ／Ｏメモリ１０７のリフレッシュ更新をするものである。説明すると、Ｉ／Ｏバス１０８に繋がれたＩ／Ｏユニット（図示せず）の入力データを取り込んで、Ｉ／Ｏメモリ１０７の入力データエリアに書き込むとともに、Ｉ／Ｏメモリ１０７に記憶されたユーザプログラムの演算実行結果を出力データとしてＩ／Ｏユニットに送信する処理を行う。つまり、Ｉ／Ｏメモリ１０７とＩ／Ｏユニットにある共有メモリとの間でデータ交換を行うものである。対象は、Ｉ／Ｏユニットの他に、アナログ演算ユニットなどのいわゆる高機能ユニットがある。
【００４６】
この入出力リフレッシュ処理２１０において、データ交換量が多い場合に、ＭＰＵ１０１は、ＡＳＩＣ１０６のＤＭＡ転送２１１を起動してＤＭＡ転送２１１を行う。ＡＳＩＣ１０６は、上述のようにメモリのアクセス調停をする機能に加え、ＤＭＡ転送する機能を持っている。この機能は、例えばＩ／Ｏメモリのリフレッシュするデータが、メモリ中の連続したエリアにまとまって存在するときに、そのデータをまとめてＩ／Ｏバス１０８を介して外部のユニットの共有メモリの連続したエリアに転送する場合に、ＤＭＡ転送の方法を用いる。なお、外部ユニットの共有メモリの連続したエリアのデータを、Ｉ／Ｏメモリ１０８の連続したエリアに取り込む場合にも、ＤＭＡ転送を利用する。特に、高機能ユニットとの間でアナログデータを受け渡しする場合には、ＤＭＡ転送をよく利用する。
【００４７】
ＭＰＵ１０１は、入出力リフレッシュ処理を行うとき、随時リフレッシュする対象のデータがＤＭＡ転送する方が適するか否かを判断する。つまり、Ｉ／Ｏユニットに対する個別のデータリフレッシュならば、「否」と判断し、図示の符号２１０のようにＭＰＵ１０１にて処理する。アナログ演算ユニットに対するまとまったデータリフレッシュならば「適」と判断し、ＡＳＩＣ１０６へ処理依頼をし、図示のようにＡＳＩＣ処理としてＤＭＡ転送２１１が実行される。なお、ＤＭＡ転送を、外部ユニット側で指定しておき、その指定を呼んでＭＰＵ１０１がＤＭＡ転送すると判断させるようにしても良い。
【００４８】
この場合、ＡＳＩＣ１０６に処理依頼し、ＡＳＩＣ１０６がＤＭＡ転送処理をしている期間は、ＭＰＵ１０１は他の処理をすることが可能となる。よって、その期間、すなわちＤＭＡ転送２１１の開始から終了までの時間を利用してＭＰＵ１０１による周辺サービス処理等のイベント処理２１２が実行される。
【００４９】
このようにＤＭＡ転送処理をしている期間、ＡＳＩＣ１０６によるＤＭＡ転送２１１の実行と、ＭＰＵ１０１によるイベント処理２１２の実行との並列実行となる。このイベント処理２１２は、上述のイベント処理２０４，２０７と同様の処理を行うものである。ＡＳＩＣ１０６によるＤＭＡ転送２１１が完了すると、ＡＳＩＣ１０６からＭＰＵ１０１へ割り込みが通知され、これにより、ＭＰＵ１０１はイベント処理２１２を中止するか、１つのイベント処理を終了するかのどちらかをし、再び入出力リフレッシュ処理２１３に移る。入出力リフレッシュ処理中に、ＤＭＡ転送をすべき対象データが有れば、ＭＰＵ１０１からＡＳＩＣ１０６に対してＤＭＡ転送の処理依頼を送り、それに伴い、上述のようなＡＳＩＣ処理としてＤＭＡ転送２１１とＭＰＵ処理としてイベント処理２１２と同様の並列処理を行う。以後、このような入出力リフレッシュ処理と、ＤＭＡ転送とイベント処理との並列実行処理とが、必要により繰り返される。
【００５０】
入出力リフレッシュ処理が全て完了すると、従来行われていた周辺サービス処理（イベント処理）は行われずに、共通処理に戻る。つまり、このプログラマブルコントローラの一連のサイクリック処理は、動作モードによって異なることになる。繰り返し説明すると、通常モードは、従来通りに共通処理，ユーザプログラムの演算実行処理，入出力リフレッシュ処理，イベント処理を一連のサイクリック処理として順次繰り返し実行する。一方、並列実行モードでは、共通処理，ユーザプログラムの演算実行処理，入出力リフレッシュ処理を一連のサイクリック処理として順次繰り返し実行する。そして、ユーザプログラムの実行処理において、ＡＳＩＣ１０６が命令実行しているときに、ＭＰＵ１０１がイベント処理を並列処理するようにしている。また、入出力リフレッシュ処理において、ＡＳＩＣ１０６がＤＭＡ転送しているときに、ＭＰＵ１０１がイベント処理を並列処理するようにしている。
【００５１】
なお、本実施の形態では、並列処理によって周辺サービス（イベント処理）を実行しているので、入出力リフレッシュ処理２１３が完了すると、周辺サービス処理を行わずに共通処理に戻る構成とした。
【００５２】
ところで、プログラマブルコントローラのＣＰＵユニットにメモリカードを増設する場合がある。このメモリカードには、コンパクトフラッシュメモリが用いられていて、例えばＣＰＵユニットでの処理履歴や、異常やエラーの履歴に関するデータを記憶させておく場合がある。そして、その履歴データを外部のツールで記憶させておく場合がある。そして、その履歴データを外部のツールで収集したい場合がある。
【００５３】
係る場合、通常の通信ユニットとのデータ交換などのイベント処理に比べて、かなりの時間を必要とする。そのような処理を上述の並列処理によるイベント処理（２０４，２０７，２１２など）で行おうとすると、処理の途中で中止となり、ツールでデータ収集できなかったり、イベント処理タイムが通常に比べて大きくなりすぎ、うまく処理できない状況となる。
【００５４】
このような時間のかかるイベント処理が必要な場合には、入出力リフレッシュ処理２１３の後に、イベント処理を例外的に設けるようにすると良い。実際には、ＭＰＵ１０１がイベント処理２０４，２０７，２１２の期間中に、時間がかかるイベント処理の要求があると判断すると、その期間中に処理をせずに要求があったことを記憶しておき、そのサイクルの最後の処理である入出力リフレッシュ処理２１３の完了後に、そのイベント要求によるイベント実行をする。よって、このサイクルでは並列実行モードであるが、入出力リフレッシュ処理の後にイベント処理を行うことになる。このように、イベント処理を直列的に実行する制御方式も、本発明は含む概念である。
【００５５】
また動作モードとして、上記した実施の形態では（１）通常モードと（２）並列実行モードの２つを示したが、他の方式として、例えば、
（３）通常モードと同様の一連のサイクリック処理を行うとともに、図２中のＡＳＩＣ実行２０３，２０６とイベント処理２０４，２０７を行い、さらに、ＤＭＡ転送処理２１１とイベント処理２１２を行うモード；
（４）（２）または（３）のモードと似ているがＤＭＡ転送２１１時にイベント処理を行わないモード；
のようなモードを採用することもできる。
【００５６】
さらにまた、上記した実施の形態並びに変形例では一連のサイクリック処理として、共通処理，ユーザプログラム実行処理，入出力リフレッシュ処理（＋周辺処理）を繰り返し実行するもので説明したが、他の形態のサイクリック処理ももちろんとりうる。
【００５７】
一例としては、
（ａ）共通処理，入力リフレッシュ処理，ユーザプログラムの演算実行処理，出力リフレッシュ処理，（＋周辺処理）
（ｂ）共通処理、入出力リフレッシュ処理，ユーザプログラムの演算実行処理，（＋周辺処理）
等がとりうる。すなわち、Ｉ／Ｏリフレッシュ処理は、入力リフレッシュと出力リフレッシュを別々に行っても良いし、一緒に行ってもよい。
【００５８】
これら（ａ），（ｂ）のサイクリック処理を行うプログラマブルコントローラにおいても同様に、ユーザプログラム実行処理がＡＳＩＣ処理として行われている期間を利用して、ＭＰＵ処理としてイベント処理を行うことで上述の並列実行モードと同様となる。また、入出力リフレッシュ処理、または入力リフレッシュ処理か出力リフレッシュ処理の中でＤＭＡ転送をＡＳＩＣ処理として行われている期間を利用して、ＭＰＵ処理としてイベント処理を行うことでも上述の並列実行モードと同様となる。
【００５９】
さらにまた、この（ａ），（ｂ）のプログラマブルコントローラの並列実行モードにおいても、動作モードとして（１），（２），（３），（４）は適用可能である。
【００６０】
上記構成によると、ＭＰＵ１０１の処理可能時間を有効に利用するべく、ＡＳＩＣ１０６が実行中に、ＭＰＵ１０１はイベント処理を行う構成としたことにより、プログラマブルコントローラのＣＰＵユニット部のサイクルタイムを短縮することができる。
【００６１】
なお、上記実施の形態においては、上記並列実行モードを選択しない場合は従来と同様の動作も可能になる。
【００６２】
【発明の効果】
以上説明したようにこの発明によれば、プログラマブルコントローラが保有する汎用演算処理装置と特定用途向け制御装置を同時に処理、つまり、特定用途向け制御装置がユーザプログラムの演算処理及びまたはＩ／Ｏリフレッシュ時のＤＭＡ転送処理を行っている期間を、汎用演算処理装置におけるイベント処理期間とすることにより、サイクリックに行うイベント処理を無くすか、減少させることができ、イベント応答性を改善することができる。
【図面の簡単な説明】
【図１】この発明に係わるプログラマブルコントローラのＣＰＵユニット部の全体構成を示すブロック図である。
【図２】図１に示したＭＰＵの並列実行モードが選択された場合における内部処理を説明する図である。
【図３】従来のプログラマブルコントローラのＣＰＵユニットの基本サイクル処理を示すフローチャートである。
【図４】従来のプログラマブルコントローラシステムの問題点を説明するためのブロック図である。
【符号の説明】
１０１  ＭＰＵ（Ｍｉｃｒｏ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）
１０２  ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）
１０３  ＢＵＭ
１０４  ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）
１０５  ユーザメモリ
１０６  ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ：特定用途向け制御装置）
１０７  Ｉ／Ｏメモリ
１０８  Ｉ／Ｏバス
４０１  上位系
４０２  親プログラマブルコントローラ（親ＰＬＣ）
４０３，４０４，４０５  子プログラマブルコントローラ（子ＰＬＣ）
【図１】
0003548780.tif 000002
【図２】
0003548780.tif 000003
【図３】
0003548780.tif 000004
【図４】
0003548780.tif 000005