(57)【要約】【課題】プログラムの簡略化等を図るのに好適なプログラマブルコントローラのＩ／Ｏユニット等を提供する。【解決手段】プログラマブルコントローラのＩ／Ｏユニット２０は、ＣＰＵユニット側とデータリンクするデータリンク手段と、ＣＰＵユニットからの起動命令に基づき当該制御プログラムを実行する手段と、を有し、データリンク手段は、上記ＣＰＵユニットの制御プログラム実行に伴うサイクリック制御情報のうち、データリンクを希望するサイクリック制御情報を指定するサイクリック制御情報指定手段と、上記サイクリック制御情報指定手段で指定されたサイクリック制御情報をサイクリックに収集するサイクリック制御情報収集手段と、上記サイクリック制御情報収集手段で収集されたサイクリック制御情報を指定されたデータリンクに従って上記ＣＰＵユニットに転送するサイクリック制御情報転送手段と、を備えてなるものとする。【選択図】図３
2008251052.tif 000002
【特許請求の範囲】
【請求項１】
プログラミングされた制御プログラムを実行するとともに、入出力データをＣＰＵユニットとやり取りをするプログラマブルコントローラのＩ／Ｏユニットであって、
上記Ｉ／Ｏユニットは、
上記ＣＰＵユニット側とデータリンクするデータリンク手段と、
上記ＣＰＵユニットからの起動命令に基づき当該制御プログラムを実行する手段と、を有し、
上記データリンク手段は、
上記ＣＰＵユニットの制御プログラム実行に伴うサイクリック制御情報のうち、データリンクを希望するサイクリック制御情報を指定するサイクリック制御情報指定手段と、
上記サイクリック制御情報指定手段で指定されたサイクリック制御情報をサイクリックに収集するサイクリック制御情報収集手段と、
上記サイクリック制御情報収集手段で収集されたサイクリック制御情報を指定されたデータリンクに従って上記ＣＰＵユニットに転送するサイクリック制御情報転送手段と、を備えてなること
を特徴とするプログラマブルコントローラのＩ／Ｏユニット。
【請求項２】
プログラミングされた制御プログラムを実行するとともに、入出力データをＣＰＵユニットとやり取りをするプログラマブルコントローラのＩ／Ｏユニットであって、
上記Ｉ／Ｏユニットは、
上記ＣＰＵユニット側とデータリンクするデータリンク手段を有し、
上記データリンク手段は、
上記ＣＰＵユニットの制御プログラム実行に伴うサイクリック制御情報のうち、データリンクを希望するサイクリック制御情報を指定するサイクリック制御情報指定手段と、
上記サイクリック制御情報指定手段で指定されたサイクリック制御情報をサイクリックに収集するサイクリック制御情報収集手段と、
上記サイクリック制御情報収集手段で収集されたサイクリック制御情報を指定されたデータリンクに従って上記ＣＰＵユニットに転送するサイクリック制御情報転送手段と、を備えてなること
を特徴とするプログラマブルコントローラのＩ／Ｏユニット。
【請求項３】
プログラミングされた制御プログラムを実行するとともに、入出力データをＣＰＵユニットとやり取りをするプログラマブルコントローラのＩ／Ｏユニットであって、
上記Ｉ／Ｏユニットは、上記ＣＰＵユニットからの起動命令に基づき当該制御プログラムを実行する手段を有すること
を特徴とするプログラマブルコントローラのＩ／Ｏユニット。
【請求項４】
プログラミングされた制御プログラムを実行するＩ／ＯユニットとＣＰＵユニットからなるプログラマブルコントローラシステムにおいて、
上記プログラマブルコントローラシステムは、データリンク手段を有し、
上記データリンク手段は、
上記ＣＰＵユニット及び上記Ｉ／Ｏユニットのそれぞれの制御プログラム実行に伴うサイクリック制御情報のうち、データリンクを希望する相手側のサイクリック制御情報を指定するサイクリック制御情報指定手段と、
上記サイクリック制御情報指定手段で指定されたサイクリック制御情報をサイクリックに収集するサイクリック制御情報収集手段と、
上記サイクリック制御情報収集手段で収集されたサイクリック制御情報を指定されたデータリンクに従って上記ＣＰＵユニット及び上記Ｉ／Ｏユニットに転送するサイクリック制御情報転送手段と、
を有することを特徴とするプログラマブルコントローラシステム。
【請求項５】
プログラミングされた制御プログラムを実行するＩ／ＯユニットとＣＰＵユニットからなるプログラマブルコントローラシステムにおいて、
上記ＣＰＵユニットは、
上記Ｉ／Ｏユニットに対して起動命令を発生する起動命令発生手段を有し、
上記Ｉ／Ｏユニットは、
上記起動命令に基づき当該制御プログラムを実行すること
を特徴とするプログラマブルコントローラシステム。
【請求項６】
上記Ｉ／Ｏユニットは、さらに、
上記ＣＰＵユニットの異常を検出する異常検出手段と、
上記検出された異常を登録する異常登録手段と、
上記異常が登録されている場合はＣＰＵ異常時処理をするＣＰＵ異常時処理手段と、
上記異常が登録されていない場合は上記Ｉ／Ｏユニット側制御プログラムを実行するＩ／Ｏユニット側制御プログラム実行手段と、
を有すること
を特徴とする請求項５に記載のプログラマブルコントローラシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、プログラマブルコントローラのＩ／Ｏユニット及びプログラマブルコントローラシステムに関し、詳しくは、Ｉ／Ｏユニットにプログラミング機能を搭載することにより、Ｉ／Ｏユニットをユーザのニーズに合わせてカスタマイズして利用できるようにしたプログラマブルコントローラのＩ／Ｏユニット及びプログラマブルコントローラシステムに関する。
【背景技術】
【０００２】
従来、プログラマブルコントローラ（プログラマブルロジックコントローラ）システムにおいては、ＣＰＵユニット、Ｉ／Ｏユニット（入出力ユニット）等のユニットがビルディングブロックタイプに配列されてシステムが構築されている（いわゆる集合ユニット型）。
【０００３】
ここで、ＣＰＵユニットは、Ｉ／Ｏユニットからの入力信号（接点情報）に基づいてユーザプログラムの演算実行を行ない、実行結果をＩ／Ｏユニットに出力する等の処理を行なうとともにプログラマブルコントローラシステム全体を統括制御するものである。
【０００４】
また、Ｉ／Ｏユニットは直接プログラマブルコントローラシステムにおける制御対象機器が接続されるユニットで、制御対象機器からの入力信号をＣＰＵユニットに送出するとともに、ＣＰＵユニットからの出力信号を受信して制御対象機器に出力するものである。
【０００５】
ところで、近年、ＣＰＵユニットの負荷軽減、スキャンタイムの短縮等を目的として、Ｉ／Ｏユニットに新機能を付加した以下のような高機能Ｉ／Ｏユニットと呼ばれるＩ／Ｏユニットが普及してきている。
【０００６】
（１）Ｉ／Ｏユニットにパルスやアナログなどの特殊な入出力がある場合、それらの特殊な入出力についてのプログラム演算機能等、Ｉ／Ｏユニットに想定される特別のアプリケーションを付加し、アプリケーションに沿ったＩ／Ｏ制御、演算機能等を動作モードとして組み込んだ高機能Ｉ／Ｏユニット。
【０００７】
この高機能Ｉ／Ｏユニットでは、ユーザは組み込まれた複数の動作モード中から所望の動作モードを選択して使用する。
【０００８】
（２）従来のＩ／Ｏユニットにシーケンスプログラムを搭載し、ＣＰＵユニットと独立してＩ／Ｏ制御を行なう高機能Ｉ／Ｏユニット。
【０００９】
この高機能Ｉ／Ｏユニットでは、高機能Ｉ／Ｏユニット側でプログラムを実行する分、ＣＰＵユニット側の負荷が軽減される。
【００１０】
しかしながら、上記の如き従来の高機能Ｉ／Ｏユニットでは、以下の問題点があった。
【００１１】
まず、上記（１）のものでは、Ｉ／Ｏユニットに想定される特別のアプリケーションを付加し、アプリケーションに沿ったＩ／Ｏ制御、演算機能等を動作モードとして組み込んでいるが、これらの動作モードは予め設定した固定的なものである。つまり、Ｉ／Ｏユニットにはじめから内蔵されているものである。従って、そのＩ／Ｏ制御手段、演算機能には自由度がなく、動作モードとして設定した用途以外の用途には利用できない。設定した用途以外の用途に利用できない場合、高機能Ｉ／Ｏユニットは単なるＩ／Ｏユニットとしてしか利用できず、Ｉ／Ｏ制御、演算機能は全てＣＰＵユニットが行なうことになる。
【００１２】
このため、ＣＰＵユニットのプログラムが増大、複雑化することになり、ＣＰＵユニットの負荷増大、スキャンタイムの増大を招くという問題点があった。
【００１３】
また、スキャンタイムの増大は、ＩＮとＯＵＴのＩ／Ｏ制御、演算機能の性能・精度を落とすという問題点があった。
【００１４】
また、上記の如きＣＰＵユニットの高機能Ｉ／Ｏユニットの処理負担は、プログラム内容の増大を招き、プログラム作成中における作成プログラムの視認性の劣化、プログラムの作業効率、保守性の低下を招くという問題点があった。
【００１５】
また、上記（２）のものでは、高機能Ｉ／Ｏユニットは入出力の高速化に資する以外何ら効果がなく、また、たとえＩ／Ｏユニットにシーケンスプログラムを搭載してＣＰＵユニットのプログラムを一部切り出したとしてもプログラマブルコントローラシステム全体からみてさほど効果的なことではなかった。
【００１６】
また、従来のＩ／Ｏユニットにシーケンスプログラムを搭載したものでは、ＣＰＵユニットとＩ／Ｏユニット間のＩ／Ｆが固定的なものであったため、両者間のデータ授受においてＣＰＵユニット及びＩ／Ｏユニット双方のプログラムに依存するところが大きく、これらのプログラムに対する負荷が大きくなるという問題点があった。
【００１７】
また、従来のＩ／Ｏユニットにシーケンスプログラムを搭載したものでは、プログラムが入っていない場合にはエラーとなり、プログラムレスのＩ／Ｏユニットとしても利用できないという問題点があった。
【発明の開示】
【発明が解決しようとする課題】
【００１８】
本発明は、プログラムの簡略化等を図るのに好適なプログラマブルコントローラのＩ／Ｏユニット、プログラマブルコントローラシステムを提供することを目的とする。
【課題を解決するための手段】
【００１９】
本発明に係わるプログラマブルコントローラのＩ／Ｏユニットは、プログラミングされた制御プログラムを実行するとともに、入出力データをＣＰＵユニットとやり取りをするプログラマブルコントローラのＩ／Ｏユニットであって、
上記Ｉ／Ｏユニットは、
上記ＣＰＵユニット側とデータリンクするデータリンク手段と、
上記ＣＰＵユニットからの起動命令に基づき当該制御プログラムを実行する手段と、を有し、
上記データリンク手段は、
上記ＣＰＵユニットの制御プログラム実行に伴うサイクリック制御情報のうち、データリンクを希望するサイクリック制御情報を指定するサイクリック制御情報指定手段と、
上記サイクリック制御情報指定手段で指定されたサイクリック制御情報をサイクリックに収集するサイクリック制御情報収集手段と、
上記サイクリック制御情報収集手段で収集されたサイクリック制御情報を指定されたデータリンクに従って上記ＣＰＵユニットに転送するサイクリック制御情報転送手段と、を備えてなること
を特徴とする。
本発明に係わるプログラマブルコントローラのＩ／Ｏユニットは、プログラミングされた制御プログラムを実行するとともに、入出力データをＣＰＵユニットとやり取りをするプログラマブルコントローラのＩ／Ｏユニットであって、
上記Ｉ／Ｏユニットは、
上記ＣＰＵユニット側とデータリンクするデータリンク手段を有し、
上記データリンク手段は、
上記ＣＰＵユニットの制御プログラム実行に伴うサイクリック制御情報のうち、データリンクを希望するサイクリック制御情報を指定するサイクリック制御情報指定手段と、
上記サイクリック制御情報指定手段で指定されたサイクリック制御情報をサイクリックに収集するサイクリック制御情報収集手段と、
上記サイクリック制御情報収集手段で収集されたサイクリック制御情報を指定されたデータリンクに従って上記ＣＰＵユニットに転送するサイクリック制御情報転送手段と、を備えてなること
を特徴とする。
本発明に係わるプログラマブルコントローラのＩ／Ｏユニットは、プログラミングされた制御プログラムを実行するとともに、入出力データをＣＰＵユニットとやり取りをするプログラマブルコントローラのＩ／Ｏユニットであって、
上記Ｉ／Ｏユニットは、上記ＣＰＵユニットからの起動命令に基づき当該制御プログラムを実行する手段を有すること
を特徴とする。
【００２０】
上記本発明に係わるプログラマブルコントローラのＩ／Ｏユニットは、外部で組まれたユーザプログラムの入出力部と、
上記入出力部から取り込んだユーザプログラムが格納される書き換え可能なメモリと、
上記メモリに格納されたユーザプログラムを実行するユーザプログラム実行手段と、を有するように構成することができる。
【００２１】
プログラマブルコントローラシステムは、ＰＳ（電源）ユニット、ＣＰＵユニット、Ｉ／Ｏユニット（高機能Ｉ／Ｏユニット）等の多数のユニットで構成されるシステムである。
【００２２】
ここで、Ｉ／Ｏユニットには多数の制御対象機器が接続されるが、この際接続される制御対象に応じてＩ／Ｏユニットには任意の動作モードが設定される。
【００２３】
具体的には、Ｉ／Ｏユニット２０とＣＰＵユニット４０間のデータリンク機能、Ｉ／Ｏユニット２０側からＣＰＵユニット４０に対して任意に割込みを発生させる機能、ＣＰＵユニット４０側と同期して動作する機能、ＣＰＵユニット４０側の故障を検出してＣＰＵユニット４０の故障時の処理をする機能、特殊入出力（パルス、アナログ、ＩＤ等）を扱う入出力ボードの制御機能等の動作モードが設定される。
【００２４】
これによって、本発明では、ユーザはＩ／Ｏユニットに対してＩ／Ｏ制御ロジック、演算処理のためのプログラムを入力してユーザオリジナルのユニット動作モードを作り上げ、制御対象、制御方式に最適な状態にカスタマイズして使用できるようにする。
【００２５】
すなわち、Ｉ／Ｏユニットに取り込まれ実行されるプログラムは、ユーザがＩ／Ｏユニットで実行させたいプログラムでユーザが別途作成するカスタマイズされたプログラムである。このプログラムは、プログラマブルコントローラシステムのＣＰＵユニットでなされる処理プログラム（システムプログラム、ユーザプログラム）とは独立した別のもので、Ｉ／Ｏユニット向けで独自のＩ／Ｏ制御ロジックや任意の演算処理などを行なうプログラムである。外部ツールを用いて作成されるプログラムで、ユーザが新規作成、または書き換え（変更または追加）でき、ユーザが自由にプログラミングできるものである。
【００２６】
そのための構成として、本発明では、外部で組まれたユーザプログラムの入出力部と、上記入出力部から取り込んだユーザプログラムが格納される書き換え可能なメモリと、上記メモリに格納されたユーザプログラムを実行するユーザプログラム実行手段と、を有する構成を採用してもよい。
【００２７】
ユーザプログラムの入出力部とは、ツールとの通信を行なう部分で、実施形態では図１に示したプログラム入出力部２１である。図１において、プログラム入出力部２１はＩ／Ｏユニット２０の正面に設けられているが、取り付け位置や形態は実施形態に限定されない。この入出力部によって、ユーザがプログラミングするときに用いるプログラム開発用ツールと直接接続でき、プログラムをツールへアップロード、ツールからダウンロードすることができる。
【００２８】
上記本発明に係わるプログラマブルコントローラのＩ／Ｏユニットは、ＣＰＵユニットに対して着脱でき、入出力データをバスを介してＣＰＵユニットとやり取りをするプログラマブルコントローラのＩ／Ｏユニットとした上で、さらに、
バスを介してユーザプログラムを受信するユーザプログラム受信手段と、
上記ユーザプログラム受信手段で受信したユーザプログラムを格納する書き換え可能なメモリと、
上記メモリに格納されたユーザプログラムを実行するユーザプログラム実行手段と、
を有する構成を採用してもよい。
【００２９】
ここで、バスとは、プログラマブルコントローラを構成する各ユニットを接続する通信用バスのことをいい、図１では専用バス６１が相当する。
【００３０】
従って、バスを介してユーザプログラムを受信するユーザプログラム受信手段とは、パソコン１０で開発されたユーザプログラムをＩ／Ｏユニット２０に導く構成をいい、図１では、パソコン１０で開発されたプログラムを、ＣＰＵユニット４０の通信ポート４１，プログラマブルコントローラの専用バス６１等を介してＩ／Ｏユニット２０−１にダウンロードさせる構成をいう。
【００３１】
なお、プログラムの受信（ツールへのアップロード、ツールからのダウンロードを含む）は、上記の如く、Ｉ／Ｏユニットの入出力部からもできるので、使用現場の都合等を考慮してバスを介した受信かＩ／Ｏユニットの入出力部からの受信かの選択をすると良い。
【００３２】
また、上記ユーザプログラム受信手段で受信したユーザプログラムを格納する書き換え可能なメモリとは実施形態では図２のＰＲＧメモリ２７が相当する。書き換え可能なメモリである。なお、このメモリは実施形態のように独立した専用のメモリを設けても良いが、他のメモリと兼用してもよい。
【００３３】
なお、Ｉ／Ｏユニットのプログラムを変更するときは、ツールからプログラムを全て上記入出力部か上記バスを介して再びダウンロードしてＰＲＧメモリ２７の任意のエリアに格納すればよい。また、上書き保存してもよい。
【００３４】
また、オンラインエディットで一部を変更するときなどは、ＰＲＧメモリ２７から一部をツールにアップロードし、ツールにて表示し（例えばラダー表示）、ユーザがツールで一部変更してから再度ＰＲＧメモリ２７に送るようにすればよい。
【００３５】
上記本発明に係わるプログラマブルコントローラのＩ／Ｏユニットは、パルス等の特殊入出力を扱う入出力ボードと、
上記入出力ボードに入力された特殊入力に基づいてプログラミングされた制御プログラムを実行し、該実行結果を上記入出力ボードに出力するプログラム実行手段と、
を有する構成を採用してもよい。
【００３６】
上記構成によると、Ｉ／Ｏユニットは、パルス等の特殊入力が入力されるとともに、該入力に基づいて上記プログラム実行手段でプログラムが実行されると該実行結果が出力される入出力ボードが装着可能とされている。
【００３７】
実施形態では、図３に示す如く、Ｉ／Ｏユニット２０には、パルス入力、アナログ入力、特殊センサ入力等が入力される特殊入力回路３１と、パルス出力、アナログ出力等が出力される特殊出力回路３２とを具備する入出力ボード２３が装着されている。
【００３８】
これによって、特殊入出力の制御はＩ／Ｏユニット単独で行なうことができ、プログラマブルコントローラシステムの構成に依存しない安定した入出力制御ができ、かつＣＰＵユニットへのプログラム依存度が小さくなるのでサイクルタイムを短くすることができる。
【００３９】
上記本発明に係わるプログラマブルコントローラのＩ／Ｏユニットは、ＣＰＵユニットに対して着脱でき、入出力データをＣＰＵユニットとやり取りをするプログラマブルコントローラのＩ／Ｏユニットとした上で、さらに、
プログラミングされた制御プログラムを実行するとともに所定の入力条件に基づいてＣＰＵユニット側に対して任意のタイミングで割込みトリガを発生させるように構成することもできる。
【００４０】
割込みトリガとは、ＣＰＵユニットがサイクリックにプログラムを実行中、プログラムの実行を中断させて割込みプログラムを実行させるトリガをいう。
【００４１】
実施形態では、図１１に示したＩ／Ｏユニット側プログラム２４０が相当する。
【００４２】
これによって、Ｉ／Ｏユニットの演算機能にＣＰＵユニットに対する割込み機能を搭載したので、任意の割込み発生ロジック、割込みタイミングを作ることが可能となる。
【００４３】
ここで、データリンクとは、Ｉ／ＯユニットとＣＰＵユニットとが互いにデータの授受を行なうことをいう。
【００４４】
実施形態では、図５に示したシステム設定メモリ２９ｃ、４９ｃのシステム設定により、ＣＰＵユニット４０及びＩ／Ｏユニット２０は互いの任意のメモリにデータリンクできるよう構成されている。このため、双方のＩ／Ｆプログラムを簡略化することができる。
【００４５】
上記本発明に係わるプログラマブルコントローラのＩ／Ｏユニットは、ＣＰＵユニットに対して着脱でき、入出力データをＣＰＵユニットとやり取りをするプログラマブルコントローラのＩ／Ｏユニットとした上で、さらに、
プログラミングされた制御プログラムを実行するとともにＣＰＵユニット側からの指令に基づいてＣＰＵユニット側と同期動作をするように構成することもできる。
【００４６】
ここで、同期動作をするとは、ＣＰＵユニットとＩ／Ｏユニットが同一タイミングで動作することをいう。
【００４７】
図１２に示したＣＰＵユニット主導モードにおいては、ＣＰＵユニット４０側のプログラムで任意にＩ／Ｏユニット２０側のＲＵＮフラグをコントロールできるようにし、これによってＩ／Ｏユニット２０のプログラム実行を起動または停止できるようにした。このため、Ｉ／Ｏユニット２０側にはＣＰＵユニット４０と同期をとるためのプログラムは不要となり、サイクルタイムを短くすることができる等の効果を奏する。
【００４８】
上記本発明に係わるプログラマブルコントローラのＩ／Ｏユニットは、ＣＰＵユニットに対して着脱でき、入出力データをＣＰＵユニットとやり取りをするプログラマブルコントローラのＩ／Ｏユニットとした上で、さらに、
プログラミングされた制御プログラムを実行するとともにＣＰＵユニット側と非同期動作をするように構成することもできる。
【００４９】
非同期動作をするというのは、ＣＰＵユニットとＩ／Ｏユニットが互いに独立して動作することをいう。
【００５０】
図１３に示すＩ／Ｏユニット主導モードにおいては、Ｉ／ＯユニットとＣＰＵユニットは非同期動作をする。そして、ＣＰＵユニットに異常が発生した場合、Ｉ／ＯユニットはＣＰＵユニット異常時処理を行なうことができ、プログラマブルコントローラシステムとして安定した機器制御ができる。
【００５１】
また、本発明に係わるプログラマブルコントローラシステムは、プログラミングされた制御プログラムを実行するＩ／ＯユニットとＣＰＵユニットからなるプログラマブルコントローラシステムにおいて、
上記プログラマブルコントローラシステムは、データリンク手段を有し、
上記データリンク手段は、
上記ＣＰＵユニット及び上記Ｉ／Ｏユニットのそれぞれの制御プログラム実行に伴うサイクリック制御情報のうち、データリンクを希望する相手側のサイクリック制御情報を指定するサイクリック制御情報指定手段と、
上記サイクリック制御情報指定手段で指定されたサイクリック制御情報をサイクリックに収集するサイクリック制御情報収集手段と、
上記サイクリック制御情報収集手段で収集されたサイクリック制御情報を指定されたデータリンクに従って上記ＣＰＵユニット及び上記Ｉ／Ｏユニットに転送するサイクリック制御情報転送手段と、
を有することを特徴とする。
【００５２】
ここで、サイクリック制御情報指定手段は、ＣＰＵユニット及び上記Ｉ／Ｏユニットのそれぞれの制御プログラム実行に伴うサイクリック制御情報のうち、データリンクを希望する相手側のサイクリック制御情報を指定するものであるが、実施形態では、データリンクのためのシステム設定を行なう図５のシステム設定メモリ２９ｃや各ユニット用システム設定メモリ４９ｃである。
【００５３】
また、サイクリック制御情報収集手段は上記サイクリック制御情報指定手段で指定されたサイクリック制御情報をサイクリックに収集するものであるが、実施形態では、図７のステップ１８６、１８８、１９０の処理である。
【００５４】
また、サイクリック制御情報転送手段とは、上記サイクリック制御情報収集手段で収集されたサイクリック制御情報を指定されたデータリンクに従って上記ＣＰＵユニット及び上記Ｉ／Ｏユニットに転送するものであるが、実施形態では、図５，６のデータ転送処理が相当する。
【００５５】
これによって、本発明では、ＣＰＵユニット及びＩ／Ｏユニットは互いの任意のメモリにデータリンクできるので、双方のＩ／Ｆプログラムを簡略化することができる。
【００５６】
上記本発明に係わるプログラマブルコントローラシステムにおいて、上記Ｉ／Ｏユニットは、所定の入力条件に基づいてＣＰＵユニット側に対して任意のタイミングで割込みトリガを発生させる割込みトリガ発生手段を有し、上記ＣＰＵユニットは、Ｉ／Ｏユニット側からの割込みトリガにより指定されたタイミングで所定の割込みプログラムを実行する割込みプログラム実行手段、を有するように構成することもできる。
【００５７】
ここで、指定されたタイミングで所定の割込みプログラムを実行する割込みプログラム実行手段とは、Ｉ／Ｏユニット側で発生された割込みトリガに基づいて所定の割込みプログラムを実行するものをいう。
【００５８】
実施形態では、図１１に示したＣＰＵユニット側プログラム２５０において、割込みプログラムＮｏ．１０を実行することをいう。
【００５９】
本発明では、Ｉ／Ｏユニットの演算機能にＣＰＵユニットに対する割込み機能を搭載したので、任意の割込み発生ロジック、割込みタイミングを作ることが可能となり、Ｉ／Ｏユニット側で最適な割込みタイミングを絞り込むことが可能になる。このため、ＣＰＵユニット側の割込みプログラム作成も簡易化され、且つ全体のプログラム実行も不要な割込み発生が減少するため効率が上がる。
【００６０】
また、本発明に係わるプログラマブルコントローラシステムは、プログラミングされた制御プログラムを実行するＩ／ＯユニットとＣＰＵユニットからなるプログラマブルコントローラシステムにおいて、
上記ＣＰＵユニットは、
上記Ｉ／Ｏユニットに対して起動命令を発生する起動命令発生手段を有し、
上記Ｉ／Ｏユニットは、
上記起動命令に基づきＩ／Ｏ側制御プログラムを実行することを特徴とする。
【００６１】
図１２には、ＣＰＵユニット主導モードで同期をとる場合が示されており、同図（ａ）に示すＣＰＵユニット側プログラムで所定のＩ／Ｏユニットスタートの入力があると、Ｉ／ＯユニットＲＵＮ（スタート）が実行され、Ｉ／Ｏユニット２０側ではＲＵＮフラグがＯＮとなる。
【００６２】
これによって、同図（ｂ）に示すＩ／Ｏユニット状態別処理では、ＲＵＮフラグＯＮかが調べられると（ステップ３００）、ＲＵＮフラグＯＮが検出されるので、所定のＩ／Ｏ側プログラムが実行される（ステップ３０２）。
【００６３】
このように、ＣＰＵユニット主導モードにおいては、ＣＰＵユニット４０側のプログラムで任意にＩ／Ｏユニット２０側のＲＵＮフラグをコントロールできるようにし、これによってＩ／Ｏユニット２０のプログラム実行を起動または停止できるようにした。このため、Ｉ／Ｏユニット２０側にはＣＰＵユニット４０と同期をとるためのプログラムは不要となり、サイクルタイムを短くすることができる等の効果を奏する。
【００６４】
上記本発明に係わるプログラマブルコントローラシステムにおいて、
上記Ｉ／Ｏユニットは、さらに、
上記ＣＰＵユニットの異常を検出する異常検出手段と、
上記検出された異常を登録する異常登録手段と、
上記異常が登録されている場合はＣＰＵ異常時処理をするＣＰＵ異常時処理手段と、
上記異常が登録されていない場合は上記Ｉ／Ｏユニット側制御プログラムを実行するＩ／Ｏユニット側制御プログラム実行手段と、
を有するように構成することができる。
ことを特徴とする。
【００６５】
Ｉ／Ｏユニット主導モードでは、Ｉ／ＯユニットはＣＰＵユニットとは非同期で動作するため、ＣＰＵユニット側の動作モードとは関係なくＩ／Ｏユニットの状態で動作する。これにより、ＣＰＵユニット側で異常が発生し、ＣＰＵユニットが動作停止しても、Ｉ／Ｏユニットは運転を継続することができる。
【００６６】
また、Ｉ／Ｏユニットにおいては、ＣＰＵユニット側の異常を検出することができるため、上記データリンク機能とセットで使用することにより、ＣＰＵユニット側で発生した異常内容、停止時のデータ内容を参照してＩ／Ｏユニットプログラム動作を行なうことができる。
【００６７】
図１３はＩ／Ｏユニット主導モードにおいて、ＣＰＵユニット４０に異常が発生した場合の処理手順を示すフローチャートである。
【００６８】
この処理では、ＣＰＵユニット４０に異常が発生したか否かが調べられており（ステップ３１０）、ＣＰＵユニット４０に異常が発生していない場合は（ステップ３１０でＮＯ）、ステップ３１４に進むが、ＣＰＵユニット４０に異常が発生している場合は（ステップ３１０でＹＥＳ）、ＣＰＵユニット異常時フラグをＯＮして異常登録をし（ステップ３１２）、ステップ３１４に進んでＩ／Ｏユニットプログラム動作を行なう。この場合はＣＰＵユニット異常時フラグがＯＮされているので、ＣＰＵユニット異常時処理が行なわれることになる。
【００６９】
このように、Ｉ／Ｏユニット主導モードにおいては、ＣＰＵユニットに異常が発生した場合、Ｉ／ＯユニットはＣＰＵユニット異常時処理を行なうようにしたので、プログラマブルコントローラシステムとして安定した機器制御ができる。
【発明の効果】
【００７０】
本発明にあっては、「データリンク手段」（第１の構成要件）、あるいは、「ＣＰＵユニットからの起動命令に基づきＩ／Ｏユニットが制御プログラムを実行する構成」（第２の構成要件）を採用した。特に、第１の構成要件の採用により、例えばＩ／ＯユニットはＣＰＵユニットの任意のメモリにデータリンクできるので、ＣＰＵユニット側のＩ／Ｆ用のプログラムを簡略化することができる等の作用効果を奏する。また、上記第２の構成要件の採用により、ＣＰＵユニットからＩ／Ｏユニットの制御プログラムを起動でき、Ｉ／Ｏユニット側にはＣＰＵユニットと同期を取るためのプログラムは不要となり、サイクルタイムを短くすることができる等の作用効果を奏する。
【発明を実施するための最良の形態】
【００７１】
以下、この発明に係わるＩ／Ｏユニット及びプログラマブルコントローラシステムの実施の形態を添付図面を参照して詳細に説明する。
【００７２】
図１は、本実施形態に係わるＩ／Ｏユニットに搭載されるユニットプログラムの開発環境の概要を示す概略ブロック図である。
【００７３】
図１において、１０はＩ／Ｏユニット（高機能Ｉ／Ｏユニット）２０に搭載されるユニットプログラムの開発ツールとしてのパソコンで、オンライン、オフラインでプログラムを開発する。
【００７４】
パソコン１０で開発されたプログラムはシリアルＩ／Ｆを使ってＩ／Ｏユニット２０にダウンロードされるが、そのために、Ｉ／Ｏユニット２０はダウンロード用のプログラム入出力部２１を有し、パソコン１０で開発されたプログラムはプログラム入出力部２１を介してＩ／Ｏユニット２０にダウンロードされる。
【００７５】
なお、Ｉ／Ｏユニット２０の表面には、プログラム入出力部２１の他に、制御対象となる入出力機器が接続される汎用デジタル入出力部２２と、特殊入出力を取り扱う入出力ボード２３（図３参照）の制御対象となる入出力機器が接続される入出力部２３ａが設けられている。
【００７６】
なお、図１において、６０はビルディングブロックタイプのプログラマブルコントローラシステムで、ＣＰＵユニット４０と２つのＩ／Ｏユニット２０−１，２０−２を具備している。そこで、パソコン１０で開発されたプログラムはＣＰＵユニット４０を介してＩ／Ｏユニット２０−１（Ｉ／Ｏユニット２０）に転送するよう構成することもできる。この場合は、パソコン１０で開発されたプログラムは、ＣＰＵユニット４０の通信ポート４１，プログラマブルコントローラの専用バス６１を介してＩ／Ｏユニット２０−１にダウンロードされる。
【００７７】
図２は、図１に示したＩ／Ｏユニット２０やＣＰＵユニット４０で構成されるプログラマブルコントローラシステム６０の概略構成を示すブロック図である。プログラマブルコントローラシステム６０は、ＰＳ（電源）ユニット、ＣＰＵユニット、Ｉ／Ｏユニット（高機能Ｉ／Ｏユニット）等の多数のユニットで集合ユニットを構成しているが、図２はこのうちＩ／Ｏユニット２０とＣＰＵユニット４０の部分の構成を示している。
【００７８】
図２において、Ｉ／Ｏユニット２０とＣＰＵユニット４０は専用バス６１を介して接続され、Ｉ／Ｏユニット２０は、バスＩ／Ｆ用デバイス２４、ＣＰＵ２５、ＲＯＭ２６、ＰＲＧメモリ２７、変数メモリ２９より構成されている。
【００７９】
また、ＣＰＵユニット４０は、バスＩ／Ｆ用デバイス４４、ＣＰＵ４５、ＲＯＭ４６、ユーザプログラムメモリ４７、ＲＡＭ４８、変数メモリ４９より構成されている。
【００８０】
ここで、バスＩ／Ｆ用デバイス２４は、プログラマブルコントローラシステム６０の専用バス６１に接続され、後述するようにＩ／Ｏユニット２０とＣＰＵユニット４０がデータ授受（データリンク）を行なうときの共有メモリとなるものである。
【００８１】
ＣＰＵ２５は、Ｉ／Ｏユニット２０全体を統括制御するとともに、図１に示したパソコン１０でプログラミングされたプログラムに基づいて、Ｉ／Ｏユニット２０とＣＰＵユニット４０間のデータリンク機能、Ｉ／Ｏユニット２０側からＣＰＵユニット４０に対して任意に割込みを発生させる機能、ＣＰＵユニット４０と同期または非同期で動作する機能、特殊入出力（パルス、アナログ、ＩＤ等）を扱う入出力ボード２３の制御機能等の処理を行なう。
【００８２】
ＲＯＭ２６は、ＣＰＵ２５で実行されるシステムプログラムが格納されるメモリである。
【００８３】
ＰＲＧメモリ２７は、パソコン１０でプログラミングされたプログラムが格納されるメモリである。
【００８４】
変数メモリ２９は、プログラム実行、外部入出力、ＣＰＵユニット４０とのＩ／ＦのためのＩ／Ｏメモリである。なお、この変数メモリ２９中には、後述するシステム設定メモリ（図５のシステム設定メモリ２９ｃ）も含まれる。
【００８５】
また、ＣＰＵユニット４０側のバスＩ／Ｆ用デバイス４４は、プログラマブルコントローラシステム６０の専用バス６１に接続され、プログラマブルコントローラシステム６０を構成するＩ／Ｏユニット２０を含む他のユニットとのＩ／Ｆをとるものである。
【００８６】
ＣＰＵ４５は、ＣＰＵユニット４０全体を統括制御するとともに、ＣＰＵユニット４０とＩ／Ｏユニット２０間のデータリンク機能、Ｉ／Ｏユニット２０と同期または非同期で動作する機能等の処理を行なう。
【００８７】
ＲＯＭ４６は、ＣＰＵ４５で実行されるシステムプログラムが格納されるメモリである。
【００８８】
ユーザプログラムメモリ４７は、入出力の処理動作を指示するユーザプログラムが格納されるメモリである。
【００８９】
ＲＡＭ４８は、演算結果やタイマ、カウンタ値等が格納されるメモリである。
【００９０】
変数メモリ４９は、プログラム実行、外部入出力、Ｉ／Ｏユニット２０とのＩ／ＦのためのＩ／Ｏメモリである。なお、この変数メモリ４９中には、後述する各ユニット用システム設定メモリ（図５の各ユニット用システム設定メモリ４９ｃ）も含まれる。
【００９１】
図３は、図２に示したＩ／Ｏユニット２０の詳細を示すブロック図である。
【００９２】
図３において、Ｉ／Ｏユニット２０は、プログラム実行部３０と入出力ボード２３より構成され、プログラム実行部３０は汎用デジタル入出力部２２、バスＩ／Ｆ用デバイス２４、ＣＰＵ２５、ＲＯＭ２６、ＰＲＧメモリ２７、変数メモリ２９を具備し、入出力ボード２３は特殊入力回路３１、特殊出力回路３２を具備している。
【００９３】
ここで、バスＩ／Ｆ用デバイス２４、ＣＰＵ２５、ＲＯＭ２６、ＰＲＧメモリ２７、変数メモリ２９の内容は図２の説明で述べたので重複した説明は省略する。
【００９４】
汎用デジタル入出力部２２は、プログラマブルコントローラシステムにおける制御対象機器が接続されるもので、複数の入力接点、出力接点より構成されている。
【００９５】
入出力ボード２３はパルス、アナログ等の特殊入出力が取り扱われるボードで、本実施形態では、パルス入力、アナログ入力、特殊センサ入力等が入力される特殊入力回路３１と、パルス出力、アナログ出力等が出力される特殊出力回路３２とを具備している。
【００９６】
次に、図３に示したＩ／Ｏユニット２０の全体的な動作を図４を参照しながら説明する。
【００９７】
この処理では、まず、電源ＯＮ時初期処理を行なう（ステップ１００）。この電源ＯＮ時初期処理では、Ｉ／Ｏユニット２０及びＣＰＵユニット４０のそれぞれの変数メモリ２９，４９にセットされたシステム設定の内容を読み出し（図５の変数メモリ２９，４９にセットされたシステム設定メモリ２９ｃ及び各ユニット用システム設定メモリ４９ｃの内容を読み出す）、Ｉ／Ｏユニット２０のバスＩ／Ｆ用デバイス２４上にあるサイクリック制御情報登録テーブル（図９のサイクリック制御情報登録テーブル２１０）に登録する等の処理を行なうが、この処理は後に詳述する。
【００９８】
次に、１サイクルタイムにおける共通処理を行なう（ステップ１１０）。
【００９９】
共通処理が終ると、状態別処理を行ない（ステップ１２０）、具体的にはＩ／Ｏユニットとしての演算処理（ステップ１２２）、Ｉ／Ｏリフレッシュ処理（ステップ１２４）を行なう。
【０１００】
ステップ１２２の演算処理では、入出力ボード２３の特殊入力回路３１に入力されるパルス入力、アナログ入力、特殊センサ入力等に基づいてユーザ命令を実行し、実行結果を特殊出力回路３２に出力する。こうして、ステップ１２２の演算処理では、ＣＰＵユニット４０を介することなく、特殊入力回路３１及び特殊出力回路３２のデータを書き換える（命令語によるダイレクトリフレッシュ）。つまり、入出力ボード２３の入出力はＣＰＵユニット４０を介することなく、Ｉ／Ｏユニット２０が単独で制御する。
【０１０１】
また、ステップ１２４のＩ／Ｏリフレッシュ処理では、以下の処理が行なわれる。なお、上記の如く、入出力ボード２３の入出力はステップ１２２の演算処理中にダイレクトリフレッシュされるので、ステップ１２４のＩ／Ｏリフレッシュ処理には含まれない。なお、ステップ１２４のＩ／Ｏリフレッシュ処理にて処理するようにしてもよい。
【０１０２】
（１）上記汎用デジタル入出力部２２に接続された入出力機器のＩ／Ｏリフレッシュ。
（２）Ｉ／Ｏユニット２０とＣＰＵユニット４０間における変数メモリ２９，４９中の固定割付によるデータリンク用エリア（図５の固定割付によるデータリンク用エリア２９ａ−１と４９ａ−１）間のデータリンク。
（３）変数メモリ２９，４９のシステム設定メモリ（図５のシステム設定メモリ２９ｃと各ユニット用システム設定メモリ４９ｃ）に設定されたシステム設定条件による任意のエリアのデータリンク。
【０１０３】
ステップ１２０の状態別処理が終ると、最後に周辺サービス処理を行ない（ステップ１３０）、ＣＰＵユニット４０をはじめとする他ユニットへのデータ転送をデータリード／データライトのイベント方式で行なう。
【０１０４】
そして、Ｉ／Ｏユニット２０は、電源ＯＮ時の初期処理が終ると、以上のステップ１１０からステップ１３０の処理をサイクリックに繰り返すことになる。
【０１０５】
ところで、上記の如く、ステップ１２４のＩ／Ｏリフレッシュ処理では、Ｉ／Ｏユニット２０とＣＰＵユニット４０間における変数メモリ２９，４９中の固定割付によるデータリンク用エリア（図５の固定割付によるデータリンク用エリア２９ａ−１と４９ａ−１）間のデータリンクと、変数メモリ２９，４９のシステム設定メモリ（図５のシステム設定メモリ２９ｃと各ユニット用システム設定メモリ４９ｃ）に設定されたシステム設定条件による任意のエリアのデータリンクが行なわれるが、前者の場合は、固定割付によるデータリンク用エリア間のデータリンクであり、デフォルトで設定されるものである。
【０１０６】
従って、図１に示したプログラム開発環境によって各Ｉ／Ｏユニットに最適にカスタマイズされたデータリンクのシステム設定が行なわれる後者のデータリンクの手法について、以下説明する。
【０１０７】
まず、両者がデータリンクする場合、Ｉ／Ｏユニット側のシステム設定で両者がデータリンクする場合と、ＣＰＵユニット側のシステム設定で両者がデータリンクする場合がある。以下、２つの場合について説明する。
【０１０８】
（１）Ｉ／Ｏユニット側のシステム設定で両者がデータリンクする場合。
【０１０９】
図５にはこの場合のＩ／Ｏユニット側変数メモリ２９とＣＰＵユニット側変数メモリ４９が示されている。
【０１１０】
ここで、Ｉ／Ｏユニット側変数メモリ２９は、図５（ａ）に示す如く、固定割付によるデータリンク用エリア２９ａ−１を含む実Ｉ／Ｏ用メモリ２９ａと、システム設定によるデータリンク用エリア２９ｂと、システム設定メモリ２９ｃより構成されている。
【０１１１】
また、ＣＰＵユニット側変数メモリ４９は、図５（ｂ）に示す如く、固定割付によるデータリンク用エリア４９ａ−１を含む実Ｉ／Ｏ用メモリ４９ａと、システム設定によるデータリンク用エリア４９ｂと、各ユニット用システム設定メモリ４９ｃより構成されている。
【０１１２】
ここで、実Ｉ／Ｏ用Ｉ／Ｏメモリ２９ａには固定割付によるデータリンク用エリア２９ａ−１が含まれ、固定割付によるデータリンク用エリア２９ａ−１はデフォルトで固定的に割り付けられたデータリンク用エリアである。
【０１１３】
また、システム設定によるデータリンク用エリア２９ｂは、システム設定メモリ２９ｃで任意に設定されたデータリンク用エリアで、プログラム演算用Ｉ／Ｏメモリ２９−１、ボードＩ／Ｏ用Ｉ／Ｏメモリ２９−２、電断保持用Ｉ／Ｏメモリ２９−３、データ用メモリ２９−４、データリンク用Ｉ／Ｏメモリ２９−５、…等より構成されている。
【０１１４】
また、システム設定メモリ２９ｃは、Ｉ／Ｏユニット２０がＣＰＵユニット４０とデータリンクを行なう際のシステム設定を行なうものである。システム設定の方法は後述する。
【０１１５】
また、実Ｉ／Ｏ用Ｉ／Ｏメモリ４９ａには固定割付によるデータリンク用エリア４９ａ−１が含まれ、固定割付によるデータリンク用エリア４９ａ−１はデフォルトで固定的に割り付けられたデータリンク用エリアである。
【０１１６】
また、システム設定によるデータリンク用エリア４９ｂは、各ユニット用システム設定メモリ４９ｃで任意に設定されたデータリンク用エリアで、プログラム演算用Ｉ／Ｏメモリ４９−１、電断保持用Ｉ／Ｏメモリ４９−３、データ用メモリ４９−４、データリンク用Ｉ／Ｏメモリ４９−５、…等より構成されている。
【０１１７】
また、各ユニット用システム設定メモリ４９ｃは、ＣＰＵユニット４０がＩ／Ｏユニット２０とデータリンクを行なう際のシステム設定を行なうものであるが、この場合の処理は、ＣＰＵユニット側のシステム設定で両者がデータリンクする場合として、後述する。
【０１１８】
次に、Ｉ／Ｏユニット側のシステム設定メモリ２９ｃにおけるシステム設定の方法を説明する。これは、システム設定メモリ２９ｃで任意のＣＰＵユニット側のメモリエリア、先頭アドレス、転送長（データ長）を指定することにより行なう。これにより、Ｉ／ＯユニットとＣＰＵユニット間のデータ交換処理時、自動的にＣＰＵユニット側変数メモリ４９の特定データエリアとデータリンクを行なう。
【０１１９】
図５では、システム設定メモリ２９ｃでＣＰＵユニット側変数メモリ４９の実Ｉ／Ｏ用Ｉ／Ｏメモリ４９ａ（固定割付によるデータリンク用エリア４９ａ−１以外の部分）を、そのメモリエリア、先頭アドレス、転送長（データ長）を指定することによって指定し、これによってデータリンク用エリア２９ｂのデータリンク用Ｉ／Ｏメモリ２９−５のＯＵＴデータ用エリア２９−５ａのデータをＣＰＵユニット側変数メモリ４９の実Ｉ／Ｏ用Ｉ／Ｏメモリ４９ａ（固定割付によるデータリンク用エリア４９ａ−１以外の部分）に書込み、実Ｉ／Ｏ用Ｉ／Ｏメモリ４９ａ（固定割付によるデータリンク用エリア４９ａ−１以外の部分）のデータをデータリンク用Ｉ／Ｏメモリ２９−５のＩＮデータ用エリア２９−５ｂに読み込む。
【０１２０】
なお、Ｉ／Ｏユニット側、ＣＰＵユニット側ともに、データリンクする場合には自ユニット内にデータリンク用エリアを持つ。データリンク用エリアは、ＩＮデータ用とＯＵＴデータ用で構成されており、システム設定では、それぞれのＩＮデータ用、ＯＵＴデータ用に対して相手側のデータリンク対象となるエリアを指定することができる。
【０１２１】
図５では、Ｉ／Ｏユニット側変数メモリ２９はデータリンク用エリアとしてデータリンク用Ｉ／Ｏメモリ２９−５を有し、ＩＮデータ用とＯＵＴデータ用としてＯＵＴデータ用エリア２９−５ａとＩＮデータ用エリア２９−５ｂを有す。そして、システム設定では、ＯＵＴデータ用エリア２９−５ａとＩＮデータ用エリア２９−５ｂは共に実Ｉ／Ｏ用Ｉ／Ｏメモリ４９ａをデータリンク対象エリアとして指定している。
【０１２２】
これにより、Ｉ／Ｏユニット側のプログラムは、ＣＰＵユニット側にＩ／Ｆ用のプログラムなしで、ＣＰＵユニット側の状態を参照して動作できるプログラムが作成できる。
【０１２３】
なお、図５のシステム設定では、Ｉ／Ｏユニット側変数メモリ２９のデータリンク用Ｉ／Ｏメモリ２９−５のＯＵＴデータ用エリア２９−５ａとＩＮデータ用エリア２９−５ｂは共に実Ｉ／Ｏ用Ｉ／Ｏメモリ４９ａをデータリンク対象エリアとして指定したが、異なったエリアをデータリンク対象エリアとして指定することもできる。例えば、ＯＵＴデータ用エリア２９−５ａは実Ｉ／Ｏ用Ｉ／Ｏメモリ４９ａを指定し、ＩＮデータ用エリア２９−５ｂはプログラム演算用Ｉ／Ｏメモリ４９−１を指定することができる。
【０１２４】
（２）ＣＰＵユニット側のシステム設定で両者がデータリンクする場合。
【０１２５】
図６にはこの場合のＩ／Ｏユニット側変数メモリ２９とＣＰＵユニット側変数メモリ４９が示されている。
【０１２６】
ここで、Ｉ／Ｏユニット側変数メモリ２９の内容とＣＰＵユニット側変数メモリ４９の内容は図５の場合と同一である。
【０１２７】
ところで、ＣＰＵユニット側変数メモリ４９の各ユニット用システム設定メモリ４９ｃは、ＣＰＵユニット４０がＩ／Ｏユニット２０とデータリンクを行なう際のシステム設定を行なうものであるが、この各ユニット用システム設定メモリ４９ｃは、ＣＰＵユニット４０に接続されるＩ／Ｏユニット２０が複数ある場合、各Ｉ／Ｏユニット毎に設けられる。従って、ＣＰＵユニット側変数メモリ４９はＩ／Ｏユニット２０が複数ある場合、Ｉ／Ｏユニットの数だけ設けられる。そして、ＣＰＵユニット側変数メモリ４９の各ユニット用システム設定メモリ４９ｃは各Ｉ／Ｏユニットに対応したシステム設定が行なわれる。
【０１２８】
ここで、各ユニット用システム設定メモリ４９ｃは、ユニット設定メモリ４９ｃ−１、ＯＵＴデータ用メモリ４９ｃ−２、ＩＮデータ用メモリ４９ｃ−３より構成され、ＣＰＵユニット４０側では、各ユニット用システム設定メモリ４９ｃのユニット設定メモリ４９ｃ−１にＩ／Ｏユニット側変数メモリ２９のメモリエリア、先頭アドレス、転送長を指定することにより、電源ＯＮ時にこの設定テーブルがＩ／Ｏユニット２０のバスＩ／Ｆ用デバイス２４に転送され、Ｉ／Ｏユニット２０とＣＰＵユニット４０間のデータリンク時は自動的にＣＰＵユニット側変数メモリ４９の各ユニット用システム設定メモリ４９ｃとＩ／Ｏユニット側変数メモリ２９の特定エリア間のデータリンクが行なわれる。
【０１２９】
図６では、Ｉ／Ｏユニット側変数メモリ２９のボードＩ／Ｏ用Ｉ／Ｏメモリ２９−２のデータがＣＰＵユニット側変数メモリ４９の各ユニット用システム設定メモリ４９ｃのＩＮデータ用メモリ４９ｃ−３に読み込まれ、ＣＰＵユニット側変数メモリ４９の各ユニット用システム設定メモリ４９ｃのＯＵＴデータ用メモリ４９ｃ−２のデータがＩ／Ｏユニット側変数メモリ２９のデータ用メモリ２９−４に書き込まれる。
【０１３０】
これにより、ＣＰＵユニット側は、Ｉ／Ｏユニット側のプログラムなしで、Ｉ／Ｏユニット側の特殊入出力をモニタ、コントロールすることが可能になったり、ＣＰＵユニット側で特定のデータ転送プログラムなしで、Ｉ／Ｏユニット側のプログラムを間接的に制御したりすることができる。
【０１３１】
ところで、上記の如きデータリンクを行なうに際して、電源ＯＮ時初期処理では、Ｉ／Ｏユニット２０はＩ／Ｏユニット側変数メモリ２９のシステム設定メモリ２９ｃ、ＣＰＵユニット側変数メモリ４９の各ユニット用システム設定メモリ４９ｃに設定された内容を読み出し、システム設定の中でデータリンク設定が有効となっていた場合、Ｉ／Ｏユニット２０のバスＩ／Ｆ用デバイス２４上にデータリンクのための情報を登録する処理を行なう。具体的には、バスＩ／Ｆ用デバイス２４のサイクリック制御情報登録テーブルにデータリンクのための情報を登録する。
【０１３２】
以下、このサイクリック制御情報登録処理を図７のフローチャートを参照しながら説明する。
【０１３３】
電源ＯＮでこの処理が開始されると（ステップ１８０）、所定の初期化処理を行なう（ステップ１８２）。
【０１３４】
次に、共有メモリ（バスＩ／Ｆ用デバイス２４）に固定割付エリア用サイクリック制御情報を登録する（ステップ１８４）。
【０１３５】
次に、Ｉ／Ｏユニット２０のシステム設定メモリ２９ｃとＣＰＵユニット４０の各ユニット用メモリ４９ｃよりシステム設定を読み出し（ステップ１８６）、データリンク指定ありか否か調べる（ステップ１８８）。
【０１３６】
ここで、データリンク指定がない場合は（ステップ１８８でＮＯ）、当処理を終了するが（ステップ１９２）、データリンク指定がある場合は（ステップ１８８でＹＥＳ）、当該データリンク指定をサイクリック制御情報登録テーブルに登録し（ステップ１９０）、当処理を終える（ステップ１９２）。
【０１３７】
図８には、上記図７の処理により作成されるバスＩ／Ｆ用デバイス２４の共有メモリの内容が示されており、共有メモリはサイクリック制御情報登録テーブル２１０、転送データエリア２１２等より構成されているが、サイクリック制御情報はサイクリック制御情報登録テーブル２１０に定義されている。
【０１３８】
図９には、上記サイクリック制御情報登録テーブル２１０の内容が示されており、サイクリック制御情報は
（１）転送先アドレス
（２）転送元アドレス
（３）転送長
の１セットからなり、登録テーブルとしては、数セット登録できるようになっている。そして、このサイクリック制御情報が、
（１）ＣＰＵユニット→Ｉ／Ｏユニット
（２）Ｉ／Ｏユニット→ＣＰＵユニット
のそれぞれの転送方向に対して登録できるようになっている。
【０１３９】
また、転送長に任意のコード（ｈ'ＦＦＦＦ  ｏｒ  ｈ'００００）をセットすることで、転送時無効とすることができる。
【０１４０】
この場合の処理手順を図１０に示す。
【０１４１】
まず、Ｉ／Ｏリフレッシュ処理が開始されると（ステップ２２０）、登録データを読み出し（ステップ２２２）、転送長が有効か否か調べる（ステップ２２４）。
【０１４２】
ここで、転送長が有効でない場合は（ステップ２２４でＮＯ）、当処理を終了するが、転送長が有効な場合は（ステップ２２４でＹＥＳ）、転送データの読み出し、書込み処理を行ない（ステップ２２６）、ステップ２２２の処理に戻る。そして、登録データの読み出し処理を続ける。
【０１４３】
このように、電源ＯＮ時、各ユニットのシステム設定に基づき図８，９に示す如きサイクリック制御情報登録テーブル２１０を作成し、Ｉ／Ｏリフレッシュ処理時に、Ｉ／Ｏユニット２０及びＣＰＵユニット４０はこのサイクリック制御情報登録テーブル２１０を参照してデータの書き込み、読み出しを行なう。サイクリック制御情報登録テーブル２１０に従い、Ｉ／Ｏユニット２０及びＣＰＵユニット４０上のメモリのデータが書き込まれるため、双方のＩ／Ｏリフレッシュのタイミングで共有メモリから指定されている自ユニットのメモリへデータの転送を行なうことができる。
【０１４４】
以上が、登録データの転送処理である。
【０１４５】
次に、本実施形態では、Ｉ／Ｏユニット２０側からの命令で、ＣＰＵユニット４０に対して割込みをかけることができる。
【０１４６】
これは、Ｉ／Ｏユニット２０側からの命令で、ＣＰＵユニット４０側の割込みプログラムを任意に指定して起動をかけることができるものである。
【０１４７】
図１１は、この場合のＩ／Ｏユニット側プログラムとＣＰＵユニット側プログラムを示すものであるが、同図（ａ）に示すＩ／Ｏユニット側プログラム２４０では、複数の入力条件に基づいて割込み起動命令（Ｎｏ．１０）が実行され、これによって、ＣＰＵユニット側プログラム２５０では、指定された割込みプログラムＮｏ．１０が実行される。
【０１４８】
このように、本実施形態では、ＣＰＵユニット４０側の設定でＩ／Ｏユニット側に割込み発生条件を設定することなく、Ｉ／Ｏユニット２０側の独自のプログラムロジックの結果として、任意のタイミングでＣＰＵユニット４０側の特定の割込みプログラムを指定して起動することができる。
【０１４９】
これにより、従来のような特定の入出力（Ｉ／Ｏ）の割込み要件発生に対して特定の割込みプログラムが固定的に起動されるのではなく、Ｉ／Ｏユニット２０側の割込み起動命令に対してＣＰＵユニット側の特定の割込みプログラムを指定することができるほか、Ｉ／Ｏユニット側プログラム２４０を介することで、複数の入力条件のＡＮＤやＯＲだけでなく、演算結果を待ってＣＰＵユニット側の割込みプログラムを起動することができる。
【０１５０】
このため、ＣＰＵユニット側では、従来のように、特定の入出力（Ｉ／Ｏ）のＯＮ／ＯＦＦに対して特定の割込みプログラムがすぐ起動されるのではなく、Ｉ／Ｏユニット側で最適な割込みタイミングを絞り込むことが可能になるため、ＣＰＵユニット側の割込みプログラム作成も簡易化され、且つ全体のプログラム実行も不要な割込み発生が減少するため効率が上がる。
【０１５１】
ところで、従来のプログラマブルコントローラシステムにおいては、Ｉ／Ｏユニットの動作はＣＰＵユニットと連動して動作するか、単独で動作するかであった。
【０１５２】
しかし、Ｉ／ＯユニットがＣＰＵユニットと連動して動作するには連動モードにおいてはＣＰＵユニットのモードに連動する。このため、両者が同期するためのプログラムがＣＰＵユニットにもＩ／Ｏユニットにも必要であるという問題点があった。
【０１５３】
そこで、以下、Ｉ／Ｏユニットの動作を従来のようなＣＰＵユニットとの連動か単独動作にするのではなく、ＣＰＵユニット主導動作かＩ／Ｏユニット主導動作に切替えるようにして、Ｉ／Ｏユニット側に同期を取るためのプログラムを不用とした場合について説明する。
【０１５４】
このうち、図１２には、ＣＰＵユニット主導モードで同期をとる場合が示されており、同図（ａ）に示すＣＰＵユニット側プログラムで所定のＩ／Ｏユニットスタートの入力があると、Ｉ／ＯユニットＲＵＮ（スタート）が実行され、Ｉ／Ｏユニット２０側ではＲＵＮフラグがＯＮとなる。
【０１５５】
これによって、同図（ｂ）に示すＩ／Ｏユニット状態別処理では、ＲＵＮフラグＯＮかが調べられると（ステップ３００）、ＲＵＮフラグＯＮが検出されるので、所定のＩ／Ｏ側プログラムが実行される（ステップ３０２）。
【０１５６】
このように、ＣＰＵユニット主導モードにおいては、ＣＰＵユニット４０側のプログラムで任意にＩ／Ｏユニット２０側のＲＵＮフラグをコントロールできるようにし、これによってＩ／Ｏユニット２０のプログラム実行を起動または停止できるようにした。このため、Ｉ／Ｏユニット２０側にはＣＰＵユニット４０と同期をとるためのプログラムは不要となり、サイクルタイムを短くすることができる等の効果を奏する。
【０１５７】
次に、Ｉ／Ｏユニット主導モードについて説明する。Ｉ／Ｏユニット主導モードにおいては、ユニット立上がり時にシステム設定のユニット動作モード設定に従い、以後の動作モードの変更は接続されるツールのモードに従う。
【０１５８】
このＩ／Ｏユニット主導モードでは、ＣＰＵユニットとは非同期で動作するため、ＣＰＵユニット側の動作モードとは関係なくＩ／Ｏユニットの状態で動作する。これにより、ＣＰＵユニット側で異常が発生し、ＣＰＵユニットが動作停止しても、Ｉ／Ｏユニットは運転を継続することができる。
【０１５９】
また、Ｉ／Ｏユニットにおいては、ＣＰＵユニット側の異常を検出することができるため、上記データリンク機能とセットで使用することにより、ＣＰＵユニット側で発生した異常内容、停止時のデータ内容を参照してＩ／Ｏユニットプログラム動作を行なうことができる。
【０１６０】
図１３はＩ／Ｏユニット主導モードにおいて、ＣＰＵユニット４０に異常が発生した場合の処理手順を示すフローチャートである。
【０１６１】
この処理では、ＣＰＵユニット４０に異常が発生したか否かが調べられており（ステップ３１０）、ＣＰＵユニット４０に異常が発生していない場合は（ステップ３１０でＮＯ）、ステップ３１４に進むが、ＣＰＵユニット４０に異常が発生している場合は（ステップ３１０でＹＥＳ）、ＣＰＵユニット異常時フラグをＯＮして異常登録をし（ステップ３１２）、ステップ３１４に進んでＩ／Ｏユニットプログラム動作を行なう。この場合はＣＰＵユニット異常時フラグがＯＮされているので、ＣＰＵユニット異常時処理が行なわれることになる。
【０１６２】
このように、Ｉ／Ｏユニット主導モードにおいては、ＣＰＵユニットに異常が発生した場合、Ｉ／ＯユニットはＣＰＵユニット異常時処理を行なうようにしたので、プログラマブルコントローラシステムとして安定した機器制御ができる。
【０１６３】
以上説明したように、本実施形態では、以下の効果を奏する。
（１）ユーザはＩ／Ｏユニット２０に対してＩ／Ｏ制御ロジック、演算処理のためのプログラムを入力してユーザオリジナルのユニット動作モードを作り上げ、制御対象、制御方式に最適な状態にカスタマイズして使用できる。
（２）Ｉ／Ｏユニット２０には入出力ボード２３が装着できるように構成され、入出力ボード２３にはパルス入力、アナログ入力、特殊センサ入力等が入力される特殊入力回路３１と、パルス出力、アナログ出力等が出力される特殊出力回路３２とを具備して、特殊入出力の制御はＩ／Ｏユニット２０単独で行なうようにしたので、プログラマブルコントローラシステムの構成に依存しない安定した入出力制御ができ、かつＣＰＵユニット４０へのプログラム依存度が小さくなるのでサイクルタイムを短くすることができる。
（３）Ｉ／Ｏユニット２０の演算機能にＣＰＵユニットに対する割込み機能を搭載したので、任意の割込み発生ロジック、割込みタイミングを作ることが可能となり、Ｉ／Ｏユニット側で最適な割込みタイミングを絞り込むことが可能になるため、ＣＰＵユニット側の割込みプログラム作成も簡易化され、且つ全体のプログラム実行も不要な割込み発生が減少するため効率が上がる。
（４）ＣＰＵユニット主導モードにおいては、ＣＰＵユニット４０側のプログラムで任意にＩ／Ｏユニット２０側のＲＵＮフラグをコントロールできるようにし、これによってＩ／Ｏユニット２０のプログラム実行を起動または停止できるようにした。このため、Ｉ／Ｏユニット２０側にはＣＰＵユニット４０と同期をとるためのプログラムは不要となり、サイクルタイムを短くすることができる等の効果を奏する。
（５）また、Ｉ／Ｏユニット主導モードにおいては、ＣＰＵユニットに異常が発生した場合、Ｉ／ＯユニットはＣＰＵユニット異常時処理を行なうようにしたので、プログラマブルコントローラシステムとして安定した機器制御ができる。
（６）Ｉ／Ｏユニット２０には入出力ボード２３が装着できるように構成され、特殊入出力の制御はＩ／Ｏユニット２０で行なうようにしたので、ＣＰＵユニット４０へのプログラム依存度が小さくなり、ＣＰＵユニット４０のプログラムが簡易化される。従って、プログラムを分割して開発でき、プログラムをモジュール化した、いわゆるタスクを用いたプログラム開発に好適である。
（７）特殊入出力の制御はＩ／Ｏユニット２０で行なうようにしたり、Ｉ／Ｏユニット２０とＣＰＵユニット４０間のデータリンクはＩ／Ｏユニット２０のバスＩ／Ｆ用デバイス（共有メモリ）を使用して行なうようにして高機能Ｉ／Ｏユニット制御のためのプログラムがＣＰＵユニット４０からＩ／Ｏユニット２０側へ分散されるため、ＣＰＵユニット側の負荷も分散されて、プログラマブルコントローラシステムとしての性能が向上する。
（８）変数メモリのシステム設定により、ＣＰＵユニット４０及びＩ／Ｏユニット２０は互いの任意のメモリにデータリンクできるので、双方のＩ／Ｆプログラムを簡略化することができる。
【図面の簡単な説明】
【０１６４】
【図１】この発明が適用されたＩ／Ｏユニットに搭載されるユニットプログラムの開発環境の概要を示す概略ブロック図。
【図２】図１に示したＩ／Ｏユニット２０やＣＰＵユニット４０で構成されるプログラマブルコントローラシステム６０の概略構成を示すブロック図。
【図３】図２に示したＩ／Ｏユニット２０の詳細を示すブロック図。
【図４】図３に示したＩ／Ｏユニット２０の全体的な動作を示す図。
【図５】Ｉ／Ｏユニット側のシステム設定でＩ／ＯユニットとＣＰＵユニットがデータリンクする場合の説明図。
【図６】ＣＰＵユニット側のシステム設定でＩ／ＯユニットとＣＰＵユニットがデータリンクする場合の説明図。
【図７】Ｉ／Ｏユニット２０がＩ／Ｏユニット側変数メモリ２９のシステム設定メモリ２９ｃとＣＰＵユニット側変数メモリ４９の各ユニット用システム設定メモリ４９ｃにセットされたシステム設定を読み出し、Ｉ／Ｏユニット２０のバスＩ／Ｆ用デバイス２４上にあるサイクリック制御情報登録テーブルにデータリンクのための情報を登録する処理を行なう場合の処理手順を示すフローチャート。
【図８】図７の処理により作成されるバスＩ／Ｆ用デバイス２４の共有メモリの構成を示す図。
【図９】図８に示したサイクリック制御情報登録テーブル２１０の構成を示す図。
【図１０】サイクリック制御情報を登録データとして読み出す際、サイクリック制御情報の転送長（データ長）に任意のコード（ｈ'ＦＦＦＦ  ｏｒ  ｈ'００００）をセットすることでデータの有効、無効を判断する場合の処理手順を示すフローチャート。
【図１１】Ｉ／Ｏユニット２０側からの命令で、ＣＰＵユニット４０に対して割込みをかける場合の構成を示す図。
【図１２】ＣＰＵユニット主導モードで同期をとる場合の説明図。
【図１３】Ｉ／Ｏユニット主導モードにおいて、ＣＰＵユニット４０に異常が発生した場合の処理手順を示すフローチャート。
【符号の説明】
【０１６５】
１０  パソコン
２０、２０−１、２０−２  Ｉ／Ｏユニット（高機能Ｉ／Ｏユニット）
２１  プログラム入出力部
２２  汎用デジタル入出力部
２３ａ  入出力部
２３  入出力ボード
２４  バスＩ／Ｆ用デバイス（共有メモリ）
２５  ＣＰＵ
２６  ＲＯＭ
２７  ＰＲＧメモリ
２９  変数メモリ
２９ａ  固定割付によるデータリンク用エリア
２９ｂ  システム設定によるデータリンク用エリア
２９ｃ  システム設定メモリ
３０  プログラム実行部
３１  特殊入力回路
３２  特殊出力回路
４０  ＣＰＵユニット
４１  通信ポート
４４  バスＩ／Ｆ用デバイス
４５  ＣＰＵ
４６  ＲＯＭ
４７  ユーザプログラムメモリ
４８  ＲＡＭ
４９  変数メモリ
４９ａ  固定割付によるデータリンク用エリア
４９ｂ  システム設定によるデータリンク用エリア
４９ｃ  各ユニット用システム設定メモリ
６０  プログラマブルコントローラシステム
６１  専用バス
２１０  サイクリック制御情報登録テーブル
２１２  転送データエリア
２４０  Ｉ／Ｏユニット側プログラム
２５０  ＣＰＵユニット側プログラム
【図１】
2008251052.tif 000003
【図２】
2008251052.tif 000004
【図３】
2008251052.tif 000005
【図４】
2008251052.tif 000006
【図５】
2008251052.tif 000007
【図６】
2008251052.tif 000008
【図７】
2008251052.tif 000009
【図８】
2008251052.tif 000010
【図９】
2008251052.tif 000011
【図１０】
2008251052.tif 000012
【図１１】
2008251052.tif 000013
【図１２】
2008251052.tif 000014
【図１３】
2008251052.tif 000015