(57)【特許請求の範囲】
【請求項１】
制御システムの少なくとも一部を構成する制御装置であって、
マスター制御部と、
前記マスター制御部と少なくとも通信ラインを介して接続される少なくとも１つのスレーブ制御部とを備え、
前記スレーブ制御部は、
前記マスター制御部との間で同期された計時手段と、
割込信号を受付ける入力部と、
前記入力部を介して前記割込信号を受付けると、前記計時手段からタイミングを示す情報を取得するとともに、前記割込信号の入力を前記マスター制御部へ通知する手段と、
前記マスター制御部から前記通信ラインを介して要求を受信すると、前記取得したタイミングを示す情報を前記通信ラインを介して前記マスター制御部へ送信する手段とを含む、制御装置。
【請求項２】
前記マスター制御部と前記スレーブ制御部とは、さらに割込ラインを介して接続されており、
前記スレーブ制御部は、前記割込信号の入力を前記割込ラインを介して、前記マスター制御部へ通知する、請求項１に記載の制御装置。
【請求項３】
前記スレーブ制御部の各々は、
前記割込ラインに介挿され、前段のスレーブ制御部からの割込信号の入力を通知する信号と、自身の割込信号の入力を通知する信号との論理和を新たな割込信号の入力を通知する信号として出力する論理和回路と、
前記論理和回路から出力される前記新たな割込信号の入力を通知する信号を後段のスレーブ制御部へ出力するか否かを切換える回路とを含む、請求項２に記載の制御装置。
【請求項４】
前記スレーブ制御部は、前記割込信号の入力を示す情報を前記通信ラインを介して、前記マスター制御部へ通知する、請求項１に記載の制御装置。
【請求項５】
前記マスター制御部は、前記通信ラインを介して前記スレーブ制御部へ周期的に問い合わせを行うように構成されており、
前記スレーブ制御部は、前記マスター制御部からの問い合わせを受信した際に、前記割込信号を受付けていれば、前記割込信号の入力を示す情報を前記マスター制御部へ通知する、請求項４に記載の制御装置。
【請求項６】
前記通信ラインは、前記マスター制御部から前記スレーブ制御部へデータを伝送するためのダウンリンクと、前記スレーブ制御部から前記マスター制御部へデータを伝送するためのアップリンクとを含み、
前記マスター制御部は、
前記アップリンクを介した前記スレーブ制御部からのデータ送信が完了すると、前記アップリンクを非アクティブ化するための指令を、前記ダウンリンクを介して前記スレーブ制御部へ送信する手段と、
前記スレーブ制御部からの前記割込信号の入力の通知を受信すると、前記アップリンクをアクティブ化するための指令を、前記ダウンリンクを介して前記スレーブ制御部へ送信する手段とを含む、請求項１〜５のいずれか１項に記載の制御装置。
【請求項７】
前記制御装置は、前記スレーブ制御部を複数含んでおり、
前記制御装置は、前記割込信号の入力を前記マスター制御部へ通知可能なスレーブ制御部を制限するための手段を含む、請求項１〜５のいずれか１項に記載の制御装置。
【請求項８】
前記マスター制御部から前記通信ラインを介して送信される前記要求を受信するスレーブ制御部を、前記割込信号の入力の通知が可能なスレーブ制御部に制限するように構成される、請求項１〜５のいずれか１項に記載の制御装置。
【請求項９】
マスター制御部と、前記マスター制御部と少なくとも通信ラインを介して接続される少なくとも１つのスレーブ制御部とを含む制御システムにおける制御方法であって、
前記スレーブ制御部が、入力部を介して割込信号を受付けると、前記マスター制御部との間で同期された計時手段からタイミングを示す情報を取得するとともに、前記割込信号の入力を前記マスター制御部へ通知するステップと、
前記スレーブ制御部が、前記マスター制御部から前記通信ラインを介して要求を受信すると、前記取得したタイミングを示す情報を前記通信ラインを介して前記マスター制御部へ送信するステップとを含む、制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、機械や設備などの動作を制御するために用いられる制御システムの少なくとも一部を構成する制御装置およびそれにおける制御方法に関する。
【背景技術】
【０００２】
多くの生産現場で使用される機械や設備は、典型的には、プログラマブルコントローラ（Programmable  Logic  Controller；以下「ＰＬＣ」とも称す）などからなる制御システムによって制御される。このような制御システムは、外部のスイッチやセンサなどからの信号入力および外部のリレーやアクチュエータへの信号出力を担当するＩＯ（Input  Output）ユニットを含む。【０００３】
このような制御システムにおいては、要求される制御仕様を満足するために、各種の割込機能が用意されている。このような割込機能の一例としては、ＩＯ割込、電断割込、定時割込などが知られている。ＩＯ割込とは、外部から信号が入力されることを契機として割込処理を実行する機能を意味し、電断割込とは、ＰＬＣなどに供給される電源が遮断されることを契機として割込処理を実行する機能を意味し、定時割込とは、予め定められた周期毎に割込処理が実行される機能を意味する。【０００４】
このような割込機能に関する先行技術として、特開２０１２−０１０２１６号公報（特許文献１）は、ネットワーク接続されたホスト装置と周辺装置とを有する割込みシステムなどを開示する。また、特開２０１１−０８６１２０号公報（特許文献２）は、シリアルバス構成による制御装置において、同期処理を行うための割込信号を同じタイミングで必要とする装置へ通知し、同期割込信号の揺らぎを低減した制御装置を開示する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１２−０１０２１６号公報
【特許文献２】特開２０１１−０８６１２０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
例えば、ＩＯユニットに入力される割込信号を用いてＩＯ割込を実現しようとすると、ＩＯユニットに入力された割込信号をバスやネットワークなどを介して、演算主体へ伝搬する必要がある。このとき、割込信号の伝送に要する時間などがユーザプログラムの実行に影響を与える場合がある。【０００７】
上述の特許文献１では、割込信号の伝送方法を教示するのみであり、割込信号の入力タイミングなどについては考慮されていない。特許文献２では、同期処理を行うための割込み信号を同じタイミングで必要とする装置へ通知するという構成を採用するが、この構成では、割込信号を複数の装置へ通知する必要があり、信号の伝送量が増大するという課題がある。そのため、割込発生によって実行される各種プログラムの実行タイミングなどをより自在に制御できる制御装置が要求されている。
【課題を解決するための手段】
【０００８】
本発明のある局面に係る、制御システムの少なくとも一部を構成する制御装置は、マスター制御部と、マスター制御部と少なくとも通信ラインを介して接続される少なくとも１つのスレーブ制御部とを含む。スレーブ制御部は、マスター制御部との間で同期された計時手段と、割込信号を受付ける入力部と、入力部を介して割込信号を受付けると、計時手段からタイミングを示す情報を取得するとともに、割込信号の入力をマスター制御部へ通知する手段と、マスター制御部から通信ラインを介して要求を受信すると、取得したタイミングを示す情報を通信ラインを介してマスター制御部へ送信する手段とを含む。【０００９】
好ましくは、マスター制御部と制御部とは、さらに割込ラインを介して接続されており、スレーブ制御部は、割込信号の入力を割込ラインを介して、マスター制御部へ通知する。【００１０】
あるいは好ましくは、スレーブ制御部は、割込信号の入力を示す情報を通信ラインを介して、マスター制御部へ通知する。【００１１】
さらに好ましくは、マスター制御部は、通信ラインを介してスレーブ制御部へ周期的に問い合わせを行うように構成されており、スレーブ制御部は、マスター制御部からの問い合わせを受信した際に、割込信号を受付けていれば、割込信号の入力を示す情報をマスター制御部へ通知する。【００１２】
好ましくは、通信ラインは、マスター制御部からスレーブ制御部へデータを伝送するためのダウンリンクと、スレーブ制御部からマスター制御部へデータを伝送するためのアップリンクとを含む。マスター制御部は、アップリンクを介したスレーブ制御部からのデータ送信が完了すると、アップリンクを非アクティブ化するための指令を、ダウンリンクを介してスレーブ制御部へ送信する手段と、割込ラインを介したスレーブ制御部からの割込信号の入力の通知を受信すると、アップリンクをアクティブ化するための指令を、ダウンリンクを介してスレーブ制御部へ送信する手段とを含む。【００１３】
好ましくは、制御装置は、スレーブ制御部を複数含んでおり、制御装置は、割込信号の入力をマスター制御部へ通知可能なスレーブ制御部を制限するための手段を含む。【００１４】
好ましくは、マスター制御部から通信ラインを介して送信される要求を受信するスレーブ制御部を、割込信号の入力の通知が可能なスレーブ制御部に制限するように構成される。【００１５】
好ましくは、スレーブ制御部の各々は、割込ラインに介挿され、前段のスレーブ制御部からの割込信号の入力を通知する信号と、自身の割込信号の入力を通知する信号との論理和を新たな割込信号の入力を通知する信号として出力する論理和回路と、論理和回路から出力される新たな割込信号の入力を通知する信号を後段のスレーブ制御部へ出力するか否かを切換える回路とを含む。【００１６】
本発明の別の局面によれば、マスター制御部と、マスター制御部と少なくとも通信ラインを介して接続される少なくとも１つのスレーブ制御部とを含む制御システムにおける制御方法が提供される。制御方法は、スレーブ制御部が、入力部を介して割込信号を受付けると、マスター制御部との間で同期された計時手段からタイミングを示す情報を取得するとともに、割込信号の入力をマスター制御部へ通知するステップと、マスター制御部から通信ラインを介して要求を受信すると、取得したタイミングを示す情報を通信ラインを介してマスター制御部へ送信するステップとを含む。
【発明の効果】
【００１７】
本発明のある局面に係る制御装置によれば、割込処理において各種プログラムの実行タイミングなどをより自在に制御できる。
【図面の簡単な説明】
【００１８】
【図１】本発明の実施の形態に係るＰＬＣシステムの全体構成を示す模式図である。
【図２】本実施の形態に係るメイン処理装置における接続構成を示す模式図である。
【図３】本実施の形態に係るメイン処理装置を構成するＣＰＵユニットのハードウェア構成を示す模式図である。
【図４】本実施の形態に係るリモートＩＯ装置を構成するマスターユニットのハードウェア構成を示す模式図である。
【図５】本実施の形態に係るＰＬＣシステムを構成するＩＯユニットのハードウェア構成を示す模式図である。
【図６】本実施の形態に係るＰＬＣシステムにおける割込処理を説明するための図である。
【図７】本実施の形態に係るＰＬＣシステムにおける低消費電力化の実現方法を説明するための図である。
【図８】本実施の形態に係るＰＬＣシステムにおける低消費電力化に係る手順の一例を示すタイムチャートである。
【図９】本実施の形態に係るＰＬＣシステムにおける割込信号が入力されたときの処理手順（第１の実装例）を示すタイムチャートである。
【図１０】本実施の形態に係るＰＬＣシステムにおける割込信号が入力されたときの処理手順（第２の実装例）を示すタイムチャートである。
【図１１】本実施の形態に係るＰＬＣシステムにおける割込信号が入力されたときの処理手順（第３の実装例）を示すタイムチャートである。
【図１２】本実施の形態に係るＰＬＣシステムにおけるＩＲＱバス上での誤った通知の送信を防止するための回路構成例を示す模式図である。
【図１３】本実施の別に形態に係るメイン処理装置の概略構成図である。
【発明を実施するための形態】
【００１９】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰り返さない。
【００２０】
本実施の形態においては、制御システムの一例として、ＰＬＣを中心とするシステムについて例示する。但し、このような制御システムとしては、ＰＬＣだけではなく、各種の産業用コンピュータを中心として構成を採用することもできる。さらに、技術の進展によって、新たな処理装置（演算装置）が開発された場合には、そのような新たな処理装置を採用することもできる。
【００２１】
＜Ａ．ＰＬＣシステムの全体構成＞
まず、本実施の形態に係るＰＬＣシステムの全体構成について説明する。図１は、本実施の形態に係るＰＬＣシステム１の全体構成を示す模式図である。
【００２２】
図１を参照して、ＰＬＣシステム１は、メイン処理装置２と、１つ以上のリモートＩＯ装置３とを含む。メイン処理装置２およびリモートＩＯ装置３は、ＰＬＣシステム１の少なくとも一部を構成する制御装置である。メイン処理装置２は、フィールドバス４を介して、１つ以上のリモートＩＯ装置３と接続されている。リモートＩＯ装置３の各々は、フィールドバス４と接続するための通信モジュール１２を有している。
【００２３】
メイン処理装置２は、制御プログラム（ユーザプログラムやシステムプログラムなどを含む）を実行し、外部のスイッチやセンサからの入力信号に応答して、外部のリレーやアクチュエータへの出力信号を算出する。より具体的には、メイン処理装置２は、ＣＰＵユニット１０と、ＩＯユニット２０と、電源ユニット３０とを含む。ＣＰＵユニット１０およびＩＯユニット２０は、内部バス５を介して互いにデータ通信可能に接続されている。電源ユニット３０は、ＣＰＵユニット１０およびＩＯユニット２０へ適切な電圧の電力を供給する。
【００２４】
ＣＰＵユニット１０は、制御プログラムを実行するためのプロセッサおよびメインメモリを含む演算主体である。ＣＰＵユニット１０は、フィールドバス４を介して、リモートＩＯ装置３との間でデータを遣り取りするための通信モジュール４２を含む。フィールドバス４は、予め定められた制御周期で通信可能な（リアルタイム通信可能な）通信方式が好ましい。
【００２５】
リモートＩＯ装置３は、外部のスイッチやセンサからの入力信号を受信し、フィールドバス４を介して、その受信した入力信号をメイン処理装置２へ送信するとともに、メイン処理装置２からフィールドバス４を介して受信した信号を、外部のリレーやアクチュエータへ出力する。より具体的には、リモートＩＯ装置３は、マスターユニット４０と、１つ以上のＩＯユニット２０とを含む。マスターユニット４０およびＩＯユニット２０は、内部バス５を介して互いにデータ通信可能に接続されている。
【００２６】
マスターユニット４０は、主として、ＩＯユニット２０の動作（ＩＯデータの更新タイミングなど）を制御するとともに、メイン処理装置２との間のデータ通信を制御する。
【００２７】
ＩＯユニット２０は、ＣＰＵユニット１０またはマスターユニット４０と内部バス５を介してデータ通信する機能に加えて、一般的な入出力処理の機能を有する。すなわち、ＩＯユニット２０は、外部のスイッチやセンサからの信号入力および／または外部のリレーやアクチュエータへの信号出力を担当する。
【００２８】
典型的には、ＩＯユニット２０は、オン／オフといった２値化されたデータを入力／出力する。例えば、ＩＯユニット２０は、検出センサから、何らかの対象物を検出している状態（オン）および何らの対象物も検出していない状態（オフ）のいずれであるかという情報を収集する。また、ＩＯユニット２０は、リレーやアクチュエータといった出力先に対して、アクティブ化する（活性化する）ための指令（オン）および非アクティブ化する（非活性化する）ための指令（オフ）のいずれかを与える。ＩＯユニット２０の各々が入出力処理を行う構成を採用してもよいし、入力処理に特化した構成（入力ユニット）または出力処理に特化した構成（出力ユニット）を採用してもよい。
【００２９】
＜Ｂ．ＰＬＣシステムにおける割込処理＞
メイン処理装置２において、ＣＰＵユニット１０は、マスター制御部に相当し、ＩＯユニット２０は、スレーブ制御部に相当する。リモートＩＯ装置３において、マスターユニット４０は、マスター制御部に相当し、ＩＯユニット２０は、スレーブ制御部に相当する。つまり、マスター制御部であるＣＰＵユニット１０およびマスターユニット４０の各々は、通信ラインである内部バス５を介して少なくとも１つのＩＯユニット２０に接続される。
【００３０】
ＰＬＣシステム１においては、ＩＯ割込のための割込信号がスレーブ制御部へ入力され、ＩＲＱバス６を介してスレーブ制御部からマスター制御部への割込信号の入力が通知される。すなわち、メイン処理装置２およびリモートＩＯ装置３の各々は、割込入力を伝送するための割込ラインであるＩＲＱバス６を含む。すなわち、メイン処理装置２とリモートＩＯ装置３とは、さらに割込ラインを介して接続されている。
【００３１】
ＰＬＣシステム１においては、ＣＰＵユニット１０またはマスターユニット４０とＩＯユニット２０との間でデータを遣り取りするための内部バス５に加えて、割込信号を伝送するためのＩＲＱバス６が設けられており、これらの２種類のバスを組み合わせて、割込処理が実行される。
【００３２】
ＰＬＣシステム１においては、割込信号が入力されたタイミングを取得および利用できるようになっている。すなわち、ＩＯユニット２０は、割込信号を受付けると、計時手段からタイミングを示す情報を取得するとともに、ＩＯユニット２０は、割込ラインであるＩＲＱバス６を介して、割込信号の入力をマスター制御部（ＣＰＵユニット１０またはマスターユニット４０）へ通知する。続いて、ＩＯユニット２０は、マスター制御部（ＣＰＵユニット１０またはマスターユニット４０）から内部バス５を介して要求を受信すると、取得したタイミングを示す情報を内部バス５を介してマスター制御部へ送信する。マスター制御部（ＣＰＵユニット１０またはマスターユニット４０）は、ＩＯユニット２０からの割込信号が入力されたタイミングを利用して、各種の割込処理を実行する。
【００３３】
＜Ｃ．ＰＬＣシステムのハードウェア構成＞
次に、ＰＬＣシステム１を構成する各部のハードウェア構成について説明する。
【００３４】
《ｃ１：接続構成》
図２は、本実施の形態に係るメイン処理装置２における接続構成を示す模式図である。なお、リモートＩＯ装置３における接続構成についてもメイン処理装置２と同様である。以下の説明において、ＣＰＵユニット１０について説明している部分は、マスターユニット４０に置き換えることができる。
【００３５】
図２を参照して、メイン処理装置２では、ＣＰＵユニット１０および１つ以上のＩＯユニット２０−１，２０−２，２０−３（以下「ＩＯユニット２０」と総称する場合もある。）が通信ラインである内部バス５（ダウンリンク５１およびアップリンク５２）を介して互いにデータ通信可能に接続されている。また、ＣＰＵユニット１０および１つ以上のＩＯユニット２０は、ＩＲＱバス６を介しても接続されている。
【００３６】
ＩＲＱバス６は、いずれかのＩＯユニット２０に入力された割込信号をＣＰＵユニット１０へ伝送するための割込ラインである。ＩＲＱバス６においては、所定のプロトコルに従って割込信号の入力を通知するようにしてもよいが、本実施の形態においては、ＯＮ／ＯＦＦを示す信号変化のみを伝搬するような構成にしている。つまり、ＩＲＱバス６としては、ワイヤード（wired）な配線構成を採用している。
【００３７】
ＩＯユニット２０の各々は、割込信号の入力を検出すると、それを通知するための信号をＩＲＱバス６を介して次段へ送出する。また、ＩＯユニット２０の各々は、後段に配置された他のＩＯユニット２０からＩＲＱバス６を介して割込信号の入力通知を受けると、その割込信号を次段へ再送出（フォワード）する。このとき、ＩＯユニット２０は、自局においても割込信号が入力されていれば、その信号を重畳した上で、次段へ出力する。ＩＯユニット２０の各々は、割込信号の入力の通知を順次転送するための割込通知回路２５０を含む。この割込通知回路２５０の詳細については、後述する。
【００３８】
一方、内部バス５としては、マスター制御部（ＣＰＵユニット１０）とＩＯユニット２０との間でデータを遣り取りできれば、どのような構成を採用してもよい。本実施の形態においては、一例として、データの伝送方向の別に独立したリンクを設けた、デジチェーン接続を採用している。より具体的には、内部バス５は、マスター／スレーブ構成になっており、マスター制御部からスレーブ制御部へデータを送信するダウンリンク（Down  Link：以下「ＤＬ」とも記す。）５１と、スレーブ制御部からマスター制御部へデータを送信するアップリンク（Up  Link：以下「ＵＬ」とも記す。）５２とが対になった通信チャネルで構成されている。なお、通信チャネルは、１回線（一対）であってもよいし、さらに多くの回線が用意されていてもよい。
【００３９】
一例として、ダウンリンク５１およびアップリンク５２では、シリアル通信が採用されており、対象のデータは、時系列に一列に並べられた形で伝送する。すなわち、ダウンリンク５１では、マスター制御部（ＣＰＵユニット１０）からスレーブ制御部（ＩＯユニット２０）へ向けて、一方向にデータが送信される。一方、アップリンク５２では、いずれかのスレーブ制御部（ＩＯユニット２０）からマスター制御部（ＣＰＵユニット１０）へ向けて、アップリンク５２を介して一方向にデータが送信される。
【００４０】
ＩＯユニット２０の各々は、ダウンリンク５１またはアップリンク５２を伝送する信号列を受信すると、その信号列を復号した上で、必要な処理を実行する。そして、ＩＯユニット２０の各々は、信号列を再生成した上で、次段へ再送出（フォワード）する。このようなデータの順次転送を実現するために、各ＩＯユニット２０は、ダウンリンク５１に関して、受信部（以下「ＲＸ」とも記す。）２１０ａおよび送信部（以下「ＴＸ」とも記す。）２１０ｂを含むとともに、アップリンク５２に関して、受信部２２０ａおよび送信部２２０ｂを含む。
【００４１】
《ｃ２：ＣＰＵユニット１０のハードウェア構成》
次に、ＣＰＵユニット１０のハードウェア構成について説明する。
【００４２】
図２を参照して、ＣＰＵユニット１０は、主制御部１００と、フィールドバス制御部１１０と、受信部１１２と、送信部１１４と、内部バス制御部１３０とを含む。ＣＰＵユニット１０は、内部バス５（ダウンリンク５１およびアップリンク５２）ならびにＩＲＱバス６と接続されるだけではなく、受信部１１２および送信部１１４を介して、フィールドバス４とも接続される。
【００４３】
フィールドバス制御部１１０は、フィールドバス４を介したデータ通信を管理し、内部バス制御部１３０は、内部バス５およびＩＲＱバス６を介したデータ通信を管理する。主制御部１００は、フィールドバス制御部１１０および内部バス制御部１３０との間でデータを遣り取りしながら、制御プログラム（ユーザプログラムやシステムプログラムなどを含む）を実行する。
【００４４】
次に、図３を参照してＣＰＵユニット１０のハードウェア構成の詳細について説明する。図３は、本実施の形態に係るメイン処理装置２を構成するＣＰＵユニット１０のハードウェア構成を示す模式図である。
【００４５】
ＣＰＵユニット１０のフィールドバス制御部１１０は、受信部１１２および送信部１１４と協働して、フィールドバス４を介して予め定められた制御周期毎に他の装置との間でデータを送受信する。より具体的には、フィールドバス制御部１１０は、フィールドバス通信コントローラ１２０と、メモリコントローラ１２２と、ＦＩＦＯ（First  In  First  Out）メモリ１２４と、受信バッファ１２６と、送信バッファ１２８とを含む。
【００４６】
フィールドバス通信コントローラ１２０は、フィールドバス４を介して送信されるコマンドなどを解釈して、フィールドバス４を介した通信を実現するために必要な処理を実行する。フィールドバス通信コントローラ１２０は、ＦＩＦＯメモリ１２４に順次格納される上位通信フレームからのデータコピー、および上位通信フレームに対するデータ書込みの処理を行う。
【００４７】
メモリコントローラ１２２は、ＤＭＡ（Direct  Memory  Access）などの機能を実現する制御回路であり、ＦＩＦＯメモリ１２４、受信バッファ１２６および送信バッファ１２８などへのデータの書込み／読出しを制御する。
【００４８】
ＦＩＦＯメモリ１２４は、フィールドバス４を介して受信された上位通信フレームを一時的に格納するとともに、その格納された順序に従って上位通信フレームを順次出力する。受信バッファ１２６は、ＦＩＦＯメモリ１２４に順次格納される上位通信フレームに含まれるデータのうち、自装置に接続されているＩＯユニット２０の出力部から出力すべき状態値を示すデータ（以下「ＯＵＴデータ」とも称す。）を抽出して一時的に格納する。また、送信バッファ１２８は、ＩＯユニット２０の入力部で検出された状態値を示すプロセスデータであって、ＦＩＦＯメモリ１２４に順次格納される上位通信フレームの所定領域に書込むべきデータ（以下「ＩＮデータ」とも称す。）を一時的に格納する。
【００４９】
主制御部１００は、プロセッサ１０２と、不揮発性メモリ１０４と、主メモリ１０８とを含む。プロセッサ１０２は、制御対象に応じた制御プログラムを実行する。プロセッサ１０２は、不揮発性メモリ１０４などから制御プログラム１０６を読み出すとともに、主メモリ１０８に展開して実行する。制御プログラム１０６の実行によって、ＩＯユニット２０の入力部によって検出された状態値に基づいて、ＩＯユニット２０の出力部から出力すべき状態値が順次算出される。
【００５０】
主制御部１００は、フィールドバス制御部１１０および内部バス制御部１３０に対して指示を与えるとともに、フィールドバス制御部１１０と内部バス制御部１３０との間のデータ転送などを制御する。
【００５１】
内部バス制御部１３０は、フィールドバス４における制御周期よりも短い制御周期で、内部バス５（ダウンリンク５１およびアップリンク５２）を介してＩＯユニット２０との間でデータを送受信する。内部バス制御部１３０は、内部バス通信コントローラ１３２と、割込回路１３４と、カウンタ１３６と、送信回路１４２と、受信回路１４４と、記憶部１６０とを含む。
【００５２】
内部バス通信コントローラ１３２は、内部バス５を介したデータ通信を主体的に（マスターとして）管理する。例えば、内部バス通信コントローラ１３２は、主制御部１００からの指示に従って、ＩＯユニット２０に対してＩＮデータを要求するコマンド（トリガー）を含むデータフレーム（以下「ＴＲＧ＿ｆｒａｍｅ（ＩＮ）」とも称す。）、または、ＩＯユニット２０に対して反映すべきＯＵＴデータを含むデータフレーム（以下「ＯＵＴ＿ｆｒａｍｅ」とも称す。）を内部バス５上に送出する。ＴＲＧ＿ｆｒａｍｅ（ＩＮ）に応答して、各ＩＯユニット２０は、自ユニットの入力部をリフレッシュした後、そのリフレッシュ後の状態値（ＩＮデータ）を含むデータフレーム（以下「ＩＮ＿ｆｒａｍｅ」とも称す。）を内部バス５を介して返送する。ＴＲＧ＿ｆｒａｍｅ（ＩＮ）またはＯＵＴ＿ｆｒａｍｅは、特定のＩＯユニット２０に対して送信されてもよいし、内部バス５に接続されているすべてのＩＯユニット２０に対して送信（マルチキャスト／ブロードキャスト）されてもよい。
【００５３】
割込回路１３４は、ＩＲＱバス６を介して割込信号の入力を受信すると、その割込信号の入力を内部バス通信コントローラ１３２へ通知する。
【００５４】
カウンタ１３６は、各種タイミングを測定するための計時手段の一例であり、所定周期でカウントアップを継続する。カウンタ１３６のカウント値を用いて、タイミングを取得することができる。このカウンタ１３６のカウント値は、ＩＯユニット２０に含まれるカウンタのカウント値と同期されており、いずれかのＩＯユニット２０から通知されたカウント値を用いることで、タイミングに基づく制御を実現できる。
【００５５】
送信回路１４２は、内部バス通信コントローラ１３２からの指示に従って、内部バス５のダウンリンク用のデータフレームを生成して送信する。受信回路１４４は、内部バス５のアップリンク上を流れるデータフレームを受信して、内部バス通信コントローラ１３２へ出力する。
【００５６】
記憶部１６０は、内部バス５を伝送するデータを格納するバッファメモリに相当する。より具体的には、記憶部１６０は、共有メモリ１６２と、受信メモリ１６４と、送信メモリ１６６とを含む。共有メモリ１６２は、フィールドバス制御部１１０と内部バス制御部１３０との間で遣り取りされるデータを一時的に格納する。受信メモリ１６４は、内部バス５を介してＩＯユニット２０から受信したＩＮデータを一時的に格納する。送信メモリ１６６は、フィールドバス制御部１１０で受信された上位通信フレームに含まれるＯＵＴデータを一時的に格納する。
【００５７】
《ｃ３：マスターユニット４０のハードウェア構成》
次に、マスターユニット４０のハードウェア構成について説明する。図４は、本実施の形態に係るリモートＩＯ装置３を構成するマスターユニット４０のハードウェア構成を示す模式図である。
【００５８】
図４を参照して、マスターユニット４０は、ＣＰＵユニット１０に比較して、主制御部１００に代えて主制御部１５０が設けられている点が異なっている。主制御部１５０は、制御プログラムなどは実行しないが、フィールドバス４を介したデータ通信、および、内部バス５を介したリモートＩＯ装置３との間のデータ通信を制御する。主制御部１５０は、プロセッサ１５２およびメモリ１５８を有する。
【００５９】
マスターユニット４０のデータ通信に係る基本的な構成は、上述のＣＰＵユニット１０（図３）と同様であるので、対応する部分（同一の参照符号を付している）についての説明は繰り返さない。
【００６０】
《ｃ４：ＩＯユニット２０のハードウェア構成》
次に、ＩＯユニット２０のハードウェア構成について説明する。図５は、本実施の形態に係るＰＬＣシステム１を構成するＩＯユニット２０のハードウェア構成を示す模式図である。
【００６１】
図５を参照して、ＩＯユニット２０の各々は、逆シリアル変換器（de-serializer：以下「ＤＥＳ部」とも称す。）２１２，２２２と、シリアル変換器（ＳＥＲ：serializer：以下「ＳＥＲ部」とも称す。）２１６，２２６と、リピート部２１４，２２４とを含む。
【００６２】
ＤＥＳ部２１２、リピート部２１４およびＳＥＲ部２１６は、図２に示すダウンリンク５１についての受信部２１０ａおよび送信部２１０ｂに対応する。これらの部分は、ダウンリンク５１を流れるデータ（データフレーム）の送受信に係る処理を実行する。同様に、ＤＥＳ部２２２、リピート部２２４およびＳＥＲ部２２６は、図２に示すアップリンク５２についての受信部２２０ａおよび送信部２２０ｂに対応する。
【００６３】
ＩＯユニット２０の各々は、さらに、バス２３６を介して互いに接続された、受信処理部２３０と、送信処理部２４０と、プロセッサ２００と、共有メモリ２０２と、ＩＯモジュール２０６と、不揮発性メモリ２０８と、割込通知回路２５０と、カウンタ２７０とを含む。
【００６４】
受信処理部２３０は、ダウンリンク５１およびアップリンク５２を介して送信されるデータフレームの受信に係る処理を実行する。より具体的には、受信処理部２３０は、復号部２３２と、ＣＲＣチェック部２３４とを含む。復号部２３２は、受信されたデータフレームを所定のアルゴリズムに従って復号しデータを生成する。ＣＲＣチェック部２３４は、復号されたデータに対して誤りチェック（例えば、ＣＲＣ（Cyclic  Redundancy  Check）符号）を行う。そして、誤りチェックで正常と判定されたデータは、プロセッサ２００などへ出力される。
【００６５】
送信処理部２４０は、ダウンリンク５１およびアップリンク５２を介したデータフレームの送信に係る処理を実行する。すなわち、送信処理部２４０は、リピート部２１４および２２４に接続され、プロセッサ２００などからの指示に従って、次段のＩＯユニット２０へ再送出（フォワード）するデータフレームの構成およびタイミングなどを制御する。より具体的には、送信処理部２４０は、ＣＲＣ生成部２４２と、符号化部２４４とを含む。ＣＲＣ生成部２４２は、プロセッサ２００などからのデータに対して誤り制御符号（ＣＲＣ）を算出して、当該データに付加する。符号化部２４４は、ＣＲＣ生成部２４２からのデータを符号化し、対応するリピート部へ出力する。
【００６６】
プロセッサ２００は、ＩＯユニット２０を主体的に制御する演算主体である。プロセッサ２００は、予め格納されたプログラムなどを実行することによって、受信処理部２３０を介して受信されたデータフレームを共有メモリ２０２に格納し、あるいは共有メモリ２０２から所定のデータを読み出してデータフレームを生成するために送信処理部２４０へ出力する。
【００６７】
共有メモリ２０２は、受信処理部２３０を介して受信されたデータフレームを一時的に格納するための受信バッファ２０３と、送信処理部２４０へ介して送信するためのデータフレームを一時的に格納するための送信バッファ２０４とを含む。また、共有メモリ２０２は、各種データを格納するための領域を含む。
【００６８】
ＩＯモジュール２０６は、外部のスイッチやセンサからの入力信号を受信し、その値を共有メモリ２０２に書込むとともに、共有メモリ２０２の対応する領域に書込まれた値に従って、その信号を外部のリレーやアクチュエータへ出力する。すなわち、ＩＯモジュール２０６は、外部入力される信号の状態値（ＩＮデータ）を収集する入力部、および、指定された状態値（ＯＵＴデータ）の信号を出力する出力部の少なくとも一方を含む。
【００６９】
不揮発性メモリ２０８は、各種データを不揮発的に格納する。より具体的には、不揮発性メモリ２０８は、各ＩＯユニット２０の設定値を記述する設定情報（configuration）などを保持する。
【００７０】
割込通知回路２５０は、ＩＯモジュール２０６に対して割込信号が入力されると、それを通知するための信号をＩＲＱバス６を介して次段へ送出する。また、割込通知回路２５０は、後段に配置された他のＩＯユニット２０（割込通知回路２５０）からＩＲＱバス６を介して割込信号の入力通知を受けると、その割込信号を次段へ再送出（フォワード）する。
【００７１】
カウンタ２７０は、各種タイミングを測定するための計時手段の一例であり、マスター制御部であるＣＰＵユニット１０またはマスターユニット４０のカウンタ１３６と同期されている。より具体的には、ＩＯユニット２０の各々では、カウンタ２７０のカウントアップ（インクリメント）が実行されるとともに、マスター制御部が内部バス５を介して自身のカウンタ１３６のカウント値をＩＯユニット２０へ所定周期毎に通知する。ＩＯユニット２０は、マスター制御部から通知されたカウント値に基づいて、カウンタ２７０の値を適宜更新する。
【００７２】
計時手段としては、カウンタ２７０に限られず、各種の方法を採用できる。例えば、マスター制御部が内部バス５を介して時刻データを所定周期でブロードキャスト（放送）しており、このブロードキャストされている時刻データに基づいて、何らかの割込要因が発生したタイミングを取得するようにしてもよい。
【００７３】
《ｃ５：その他》
上述の説明では、ＣＰＵユニット１０の主制御部１００、マスターユニット４０の主制御部１５０、およびリモートＩＯ装置３の各々について、プロセッサを用いて実現した構成例を示したが、これに限られない。例えば、プロセッサに代えて、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field-Programmable  Gate  Array）などのハードウェア回路を用いて実現してもよい。逆に、一部または全部のコンポーネントをソフトウェアとして実装してもよい。
【００７４】
例えば、図２に示す受信部２１０ａ，２２０ａおよび送信部２１０ｂ，２２０ｂに相当する部分のみをＡＳＩＣなどの物理的な回路を用いて実装し、その他の部分については、プロセッサがプログラムを実行することで実現してもよい。
【００７５】
さらに、複数のコンポーネントを単一の回路にまとめて実装してもよい。本明細書において説明する機能および処理が実現できれば、どのような構成で実装されてもよい。
【００７６】
＜Ｄ．割込処理の概要＞
次に、図６を参照して、本実施の形態に係るＰＬＣシステム１における割込処理の概要について説明する。図６は、本実施の形態に係るＰＬＣシステム１における割込処理を説明するための図である。
【００７７】
マスター制御部であるＣＰＵユニット１０とスレーブ制御部であるＩＯユニット２０とは、通信ラインである内部バス５および割込ラインであるＩＲＱバス６を介して互いに接続されている。ＩＯユニット２０の各々は、ＣＰＵユニット１０との間で同期された計時手段（カウンタ２７０）と、割込信号を受付ける入力部（ＩＯモジュール２０６）とを含んでいる。ＩＯユニット２０は、入力部を介して割込信号を受付けると、計時手段からタイミングを示す情報を取得するとともに、割込ラインを介して、割込信号の入力をマスター制御部へ通知する。また、ＩＯユニット２０は、マスター制御部から通信ラインを介して要求を受信すると、取得したタイミングを示す情報を通信ラインを介してマスター制御部へ送信する。
【００７８】
図６を参照して、処理手順としては、割込信号がＩＯユニット２０へ入力されると（ステップＳ１）、ＩＯユニット２０は、タイムスタンプを取得する（ステップＳ２）。つまり、何らかの割込要因が発生し、入力値がＯＦＦからＯＮ（または、ＯＮからＯＦＦ）へ変化すると、その変化したタイミングにおけるカウンタ２７０が保持しているカウント値がタイムスタンプとして取得される。なお、割込信号（割込要因）は、外部入力される信号に限られず、いずれかのユニット内で内部的に発生するような信号であってもよい。
【００７９】
取得されたタイムスタンプは、ＩＯユニット２０に一次的に格納される。このとき、割込信号が入力したＩＯユニット２０では、割込要因が発生していることを示す値に状態値が変更される。典型的には、対応する内部フラグの値が更新される。説明の便宜上、以下の説明では、割込信号が入力されたタイミングを示す情報の一例として、「タイムスタンプ」という用語を用いるが、これに限られることなく、割込信号が入力したタイミングを特定できる情報であれば、どのような情報を用いてもよい。
【００８０】
タイムスタンプの取得後、あるいは、タイムスタンプの取得と並行して、ＩＯユニット２０は、割込ラインであるＩＲＱバス６を介して、割込信号の入力をＣＰＵユニット１０へ通知する（ステップＳ３）。
【００８１】
ＣＰＵユニット１０は、いずれかのＩＯユニット２０から割込信号の入力の通知（割込要因）を受けると、割込信号が入力したＩＯユニット２０の特定、および割込信号が要因の特定などを実行する（ステップＳ４）。そして、ＣＰＵユニット１０は、割込信号が入力したタイミングの取得するために、内部バス５（ダウンリンク５１）を介して、ＩＯユニット２０に対してタイムスタンプを要求する（ステップＳ５）。この要求に応答して、割込信号が入力したＩＯユニット２０は、格納しているタイムスタンプを読出し、内部バス５（アップリンク５２）を介して、ＣＰＵユニット１０へ送信する（ステップＳ６）。
【００８２】
ＩＯユニット２０からタイムスタンプを受信したＣＰＵユニット１０は、その受信したタイムスタンプを利用して、割込処理を実行する（ステップＳ７）。
【００８３】
なお、ステップＳ４に示す、割込信号が入力したＩＯユニット２０の特定、および割込信号が要因の特定などの処理を実行するために、ＣＰＵユニット１０とＩＯユニット２０との間でデータの遣り取りが行われる場合もある。この遣り取りのバリエーションについては、後に、いくつかの例を挙げて説明する。
【００８４】
＜Ｅ．ＰＬＣシステムにおける低消費電力化＞
次に、本実施の形態に係るＰＬＣシステム１における低消費電力化について説明する。ＩＯユニット２０とＣＰＵユニット１０またはマスターユニット４０との間の伝送帯域は、十分に大きくする必要があり、内部バス５のクロック周波数を高くせざるを得ない。クロック周波数が高くなることに伴って、伝送に係るコンポーネントでの消費電力が増大する。ＰＬＣシステム１においては、データの伝送方向の別に独立したリンクを含む内部バス５を採用しており、独立したリンクの構成を利用して、低消費電力化を行うための機能を実装してもよい。この低消費電力化の機能については、本発明の本質に直接関係するものではなく、採用は任意である。
【００８５】
低消費電力化の具体的な方法としては、アップリンク／ダウンリンクからなる内部バス５の一方のリンクを非通信時には休止（非アクティブ化）する。通信時および非通信時にかかわらず、他方のリンクについては基本的にアクティブにしておき、必要に応じて、当該他方のリンクを使用して休止中の一方のリンクをアクティブにする。マスター制御部からスレーブ制御部への指令の伝達の容易性から、一例として、アップリンクをアクティブ化／非アクティブ化の対象にする。
【００８６】
図７は、本実施の形態に係るＰＬＣシステム１における低消費電力化の実現方法を説明するための図である。図７（ａ）には、ダウンリンク５１およびアップリンク５２のいずれもがアクティブである状態を示し、図７（ｂ）には、ダウンリンク５１がアクティブに維持される一方で、アップリンク５２が休止している状態を示す。可能な限り図７（ｂ）に示すような状態を維持することで、消費電力を低減する。
【００８７】
一例として、マスター制御部（ＣＰＵユニット１０またはマスターユニット４０）は、アップリンク５２を介したスレーブ制御部（ＩＯユニット２０）からのデータ送信が完了すると、アップリンク５２を非アクティブ化するための指令を、ダウンリンク５１を介してスレーブ側へ送信するとともに、スレーブ制御部からデータを取得すべき場合に、アップリンク５２をアクティブ化するための指令を、ダウンリンク５１を介してスレーブ側へ送信する。一方、スレーブ制御部（ＩＯユニット２０）は、ダウンリンク５１をアクティブに維持するとともに、アップリンク５２を介して送信されるマスター制御部からの指令に従って、アップリンク５２をアクティブ化／非アクティブ化する。つまり、ダウンリンク５１については、アクティブ状態に維持することで、アップリンク５２のアクティブ化／休止の制御を容易化する。
【００８８】
図５に示すＩＯユニット２０において、状況に応じて、ＤＥＳ部２２２、リピート部２２４およびＳＥＲ部２２６の動作が停止される。特に、内部バス５のクロック周波数が相対的に高い（例えば、数１００ＭオーダーからＧＨｚオーダー以上）ときには、これらのコンポーネントでの消費電力が相対的に大きくなるので、停止することで電力消費を抑制できる。後述するように、マスター制御部からダウンリンク５１を介して送信される指令に応答して、プロセッサ２００がこれらのコンポーネントに対して、動作および停止を指示する（active/standby指令）。すなわち、スレーブ制御部として機能するＩＯユニット２０は、アップリンク５２を伝送する信号を変換する変換回路（ＤＥＳ部２２２、リピート部２２４およびＳＥＲ部２２６）を含む。そして、アップリンク５２の非アクティブ化は、これらの変換回路への電源遮断を含む。
【００８９】
また、マスター制御部（ＣＰＵユニット１０またはマスターユニット４０）は、アップリンク５２上を流れる信号を受信するための受信回路（内部バス制御部１３０内の受信回路）を含み、アップリンク５２が非アクティブ化されている期間、当該受信回路の電源についても遮断できる。これによって、ＩＯユニット２０だけでなく、ＣＰＵユニット１０においても消費電力を低減できる。
【００９０】
このように非アクティブ化された期間は、通信に係る電力を消費しないので、低消費電力化を実現できる。
【００９１】
その後、マスター制御部（ＣＰＵユニット１０またはマスターユニット４０）は、割込ライン（ＩＲＱバス６）を介したスレーブ制御部（ＩＯユニット２０）からの割込信号の入力の通知を受信すると、アップリンク５２をアクティブ化するための指令を、ダウンリンク５１を介してスレーブ制御部へ送信する。
【００９２】
図８は、本実施の形態に係るＰＬＣシステム１における低消費電力化に係る手順の一例を示すタイムチャートである。図８（ａ）には、アップリンク５２が非アクティブ状態において、マスター制御部からスレーブ制御部に対して、スレーブ制御部（図５に示すＩＯモジュール２０６）によって収集されたデータ（以下「ＩＮデータ」とも称す。）をマスター制御部へ送信することを要求する処理例を示す。図８（ｂ）には、アップリンク５２が非アクティブ状態において、マスター制御部からスレーブ制御部に対して、スレーブ制御部（図５に示すＩＯモジュール２０６）から出力すべきデータ（以下「ＯＵＴデータ」とも称す。）を送信する処理例を示す。
【００９３】
以下の説明においては、スレーブ制御部に対するＩＮデータの要求動作を「ＩＮデータリフレッシュ」とも称し、スレーブ制御部に対するＯＵＴデータの送信動作を「ＯＵＴデータリフレッシュ」とも称す。
【００９４】
図８（ａ）を参照して、ＩＮデータリフレッシュにおいて、マスター制御部は、まずダウンリンク５１を介して、休止状態の受信部２２０ａおよび送信部２２０ｂをアクティブ化するための指令を含むデータフレーム（以下「ＷａｋｅＵＰ＿ｆｒａｍｅ」とも称す。）３０２を送信する。ＷａｋｅＵＰ＿ｆｒａｍｅ３０２を受信したスレーブ制御部は、非アクティブ状態のアップリンク５２をアクティブ状態に変更する。
【００９５】
マスター制御部は、ＷａｋｅＵＰ＿ｆｒａｍｅ３０２に続いて、ダウンリンク５１を介して、ＩＮデータリフレッシュを実行させるためのコマンド（トリガー）を含むデータフレーム（以下「ＴＲＧ＿ｆｒａｍｅ（ＩＮ）」とも称す。）３０４を送信する。ＴＲＧ＿ｆｒａｍｅ（ＩＮ）３０４に応答して、スレーブ制御部は、自局のＩＯモジュールで取得されているＩＮデータを含むＩＮ＿ｆｒａｍｅ３１４を生成し、アップリンク５２を介してマスター制御部へ送信する。
【００９６】
マスター制御部は、スレーブ制御部からのＩＮ＿ｆｒａｍｅ３１４の受信が完了すると、ダウンリンク５１を介して、アクティブ状態の受信部２２０ａおよび送信部２２０ｂを非アクティブ化するための指令を含むデータフレーム（以下「ＰｏｗｅｒＤｏｗｎ＿ｆｒａｍｅ」とも称す。）３０８を送信する。ＰｏｗｅｒＤｏｗｎ＿ｆｒａｍｅ３０８を受信したスレーブ制御部は、アクティブ状態のアップリンク５２を非アクティブ状態に変更する。
【００９７】
このように、アップリンク５２は、ＩＮデータリフレッシュを実行する期間内だけアクティブ化され、それ以外の期間は非アクティブ状態に維持される。このような手順によって、低消費電力化を実現できる。
【００９８】
図８（ｂ）を参照して、ＯＵＴデータリフレッシュにおいて、マスター制御部は、まずダウンリンク５１を介して、ＷａｋｅＵＰ＿ｆｒａｍｅ３０２を送信する。ＷａｋｅＵＰ＿ｆｒａｍｅ３０２を受信したスレーブ制御部は、非アクティブ状態のアップリンク５２をアクティブ状態に変更する。続いて、マスター制御部は、ＯＵＴデータを含むＯＵＴ＿ｆｒａｍｅ３０６を生成し、ダウンリンク５１を介してスレーブ制御部へ送信する。
【００９９】
マスター制御部からのＯＵＴ＿ｆｒａｍｅ３０６の受信が完了すると、スレーブ制御部は、アップリンク５２を介して、ＯＵＴ＿ｆｒａｍｅ３０６の受信成功を示すデータフレーム（以下「ＡＣＫ＿ｆｒａｍｅ」とも称す。）３１６を送信する。マスター制御部は、スレーブ制御部からのＡＣＫ＿ｆｒａｍｅ３１６を受信すると、ＯＵＴリフレッシュが成功したと判断し、ダウンリンク５１を介してＰｏｗｅｒＤｏｗｎ＿ｆｒａｍｅ３０８を送信する。ＰｏｗｅｒＤｏｗｎ＿ｆｒａｍｅ３０８を受信したスレーブ制御部は、アクティブ状態のアップリンク５２を非アクティブ状態に変更する。
【０１００】
このように、アップリンク５２は、ＯＵＴデータリフレッシュを実行する期間内だけアクティブ化され、それ以外の期間は非アクティブ状態に維持される。このような手順によって、低消費電力化を実現できる。
【０１０１】
なお、図８には、マスター制御部と１つのスレーブ制御部との間のデータの遣り取りについて説明したが、後段のスレーブ制御部に対しても、フレームが順次転送されて、同様の処理が実行されてもよい。すなわち、マスター制御部に接続されているすべてのスレーブ制御部に対して、一斉にデータを転送する方式（マルチキャストまたはブロードキャスト）を採用することで、すべてのスレーブ制御部に対して、同様の処理を実行させることができる。
【０１０２】
あるいは、メッセージ転送などの方法を用いて、特定のスレーブ制御部に対して必要な処理を実行させるようにしてもよい。
【０１０３】
＜Ｆ．割込信号入力時の処理手順（第１の実装例）＞
次に、本実施の形態に係るＰＬＣシステム１における割込信号が入力されたときの処理手順について説明する。
【０１０４】
図９は、本実施の形態に係るＰＬＣシステム１における割込信号が入力されたときの処理手順（第１の実装例）を示すタイムチャートである。図９を参照して、処理手順としては、割込起動、タイムスタンプ収集、アプリケーション実行、データ出力、割込要因クリアの５つのフェーズからなる。
【０１０５】
第１番目の割込起動のフェーズとして、いずれかのＩＯユニット２０がＩＯモジュール２０６を介して割込信号を受付けると（ステップＳ１００）、当該ＩＯユニット２０は、その割込信号が入力したときのタイムスタンプを取得する（ステップＳ１０２）。すなわち、ＩＯユニット２０は、計時手段からタイミングを示す情報を取得する。そして、ＩＯユニット２０は、ＩＲＱバス６（割込ライン）を介して、割込信号の入力をＣＰＵユニット１０（マスター制御部）へ通知する（ステップＳ１０４）。
【０１０６】
ＣＰＵユニット１０の内部バス制御部１３０は、ＩＲＱバス６を介した割込信号の入力の通知に応答して、割込信号が入力したＩＯユニット２０を特定するためのフレームを生成する（ステップＳ１０６）。そして、ＣＰＵユニット１０の内部バス制御部１３０は、ダウンリンク５１を介して、当該生成したフレームをＩＯユニット２０へ送信する（ステップＳ１０８）。生成されるフレームは、アクティブ状態に変更するためのＷａｋｅＵＰ＿ｆｒａｍｅ、および、割込信号の入力状態を要求するコマンド（トリガー）を含むデータフレーム（以下「ＴＲＧ＿ｆｒａｍｅ（ＩＲＱ）」とも称す。）である。この割込信号の入力を認識した時点では、ＣＰＵユニット１０の内部バス制御部１３０は、いずれのＩＯユニット２０からの割込信号であるかを判断できていない。そのため、内部バス制御部１３０は、生成したフレームをブロードキャストする。あるいは、割込信号の通知を行う可能性のあるＩＯユニット２０に対してマルチキャストしてもよい。
【０１０７】
ＴＲＧ＿ｆｒａｍｅ（ＩＲＱ）を受信した、先に割込信号を通知しているＩＯユニット２０は、自局への割込信号の入力状態を読出し（ステップＳ１１０）、ＩＲＱ＿ｆｒａｍｅとしてＣＰＵユニット１０へ送信する（ステップＳ１１２）。
【０１０８】
なお、ＴＲＧ＿ｆｒａｍｅ（ＩＲＱ）は、割込信号の入力を受付けるＩＯユニット２０に対してのみ送信される（マルチキャストされる）ことが好ましい。すなわち、マスター制御部から通信ラインを介して送信される要求（ＴＲＧ＿ｆｒａｍｅ（ＩＲＱ））を受信するスレーブ制御部を、割込信号の入力の通知が可能なスレーブ制御部に制限するように構成されることが好ましい。
【０１０９】
例えば、図９に示す例では、ＴＲＧ＿ｆｒａｍｅ（ＩＲＱ）は、＃１〜＃４のＩＯユニット２０に対してのみ転送される。このようなＴＲＧ＿ｆｒａｍｅ（ＩＲＱ）の転送範囲を制限する方法として、生成されるＴＲＧ＿ｆｒａｍｅ（ＩＲＱ）に属性（識別番号）を付与しておくとともに、各ＩＯユニット２０に対して、受信すべきフレームの属性を予め指定しておく方法を採用できる。
【０１１０】
ＣＰＵユニット１０の内部バス制御部１３０は、それぞれのＩＯユニット２０からのＩＲＱ＿ｆｒａｍｅに基づいて、割込要因を更新する。そして、ＣＰＵユニット１０の内部バス制御部１３０は、ＣＰＵユニット１０の主制御部１００に対して、割込要因の発生を通知する（ステップＳ１１４）。ＣＰＵユニット１０の主制御部１００は、割込要因の発生の通知に応答して、割込タスクを起動する（ステップＳ１１６）。
【０１１１】
割込要因は、それぞれのＩＯユニット２０における割込信号の入力状態を示すものであり、典型的には、ＩＯユニット２０別に設けられたフラグの値として保持される。ＣＰＵユニット１０の主制御部１００において実行される割込タスクは、内部バス制御部１３０から割込要因を読出し、割込信号が入力している（割込要因が発生している）ＩＯユニット２０を特定するとともに、その割込要因を読出す（ステップＳ１１８）。
【０１１２】
第２番目のタイムスタンプ収集のフェーズとして、ＣＰＵユニット１０の主制御部１００は、内部バス制御部１３０に対して、割込信号が入力したＩＯユニット２０から当該割込信号が入力したタイミングを示すタイムスタンプを収集するためのＩＮデータリフレッシュを指示する（ステップＳ１２０）。この指示に応答して、ＣＰＵユニット１０の内部バス制御部１３０は、ＴＲＧ＿ｆｒａｍｅ（ＩＮ）を生成し、ダウンリンク５１を介して送信する（ステップＳ１２２）。この時点では、割込信号が入力したＩＯユニット２０が特定されているので、ＣＰＵユニット１０の主制御部１００は、特定されたＩＯユニット２０に向けてＴＲＧ＿ｆｒａｍｅ（ＩＮ）を送信する。ＴＲＧ＿ｆｒａｍｅ（ＩＮ）を受信したＩＯユニット２０は、自局での入力値を読出し（ステップＳ１２４）、ｎワード分のＩＮデータを含むＩＮ＿ｆｒａｍｅ（ｎＷｏｒｄ）としてＣＰＵユニット１０へ送信する（ステップＳ１２６）。ＩＮ＿ｆｒａｍｅ（ｎＷｏｒｄ）は、ＩＯモジュール２０６に入力されている入力値（現在値）、割込信号の入力状態などを示す状態値、タイムスタンプの値などを含む。ＣＰＵユニット１０の内部バス制御部１３０は、ＩＯユニット２０からのＩＮ＿ｆｒａｍｅ（ｎＷｏｒｄ）をＣＰＵユニット１０の主制御部１００へ渡す（ステップＳ１２８）。
【０１１３】
第３番目のアプリケーション実行のフェーズとして、ＣＰＵユニット１０の主制御部１００は、割込要因（割込信号が入力したＩＯユニット２０およびその割込信号の種別など）に応じた割込アプリケーションを実行し（ステップＳ１３０）、その実行結果を送信するための準備を行う（ステップＳ１３２）。
【０１１４】
第４番目のデータ出力のフェーズとして、ＣＰＵユニット１０の主制御部１００は、内部バス制御部１３０に対して、実行結果に応じたＯＵＴデータの出力を行うためのＯＵＴデータリフレッシュを指示する（ステップＳ１３４）。この指示に応答して、ＣＰＵユニット１０の内部バス制御部１３０は、ＯＵＴ＿ｆｒａｍｅ（ｎＷｏｒｄ）を生成し、ダウンリンク５１を介してデータ出力を行うＩＯユニット２０へ送信する（ステップＳ１３６）。この例では、＃５のＩＯユニット２０に対してＯＵＴ＿ｆｒａｍｅ（ｎＷｏｒｄ）が送信される。
【０１１５】
ＯＵＴ＿ｆｒａｍｅ（ｎＷｏｒｄ）を受信したＩＯユニット２０は、受信したＯＵＴ＿ｆｒａｍｅ（ｎＷｏｒｄ）に従って、ＩＯモジュール２０６からＯＵＴデータを出力する（ステップＳ１３８）とともに、アップリンク５２を介して、ＯＵＴ＿ｆｒａｍｅ（ｎＷｏｒｄ）の受信成功を示すＡＣＫ＿ｆｒａｍｅをＣＰＵユニット１０へ送信する（ステップＳ１４０）。ＣＰＵユニット１０の内部バス制御部１３０は、ＩＯユニット２０からＡＣＫ＿ｆｒａｍｅを受信すると、ＯＵＴデータリフレッシュの完了をＣＰＵユニット１０の主制御部１００へ通知する（ステップＳ１４２）。
【０１１６】
なお、ＯＵＴ＿ｆｒａｍｅ（ｎＷｏｒｄ）には、出力すべきＯＵＴデータに加えて、その出力をいずれのタイミングで実行すべきかを示すタイムスタンプを含めてもよい。このようなタイムスタンプを含むＯＵＴ＿ｆｒａｍｅ（ｎＷｏｒｄ）を受信すると、ＩＯユニット２０は、その指定されたタイムスタンプに対応する時刻が到来することを契機に、ＯＵＴデータを出力する。
【０１１７】
第５番目の割込要因クリアのフェーズとして、ＣＰＵユニット１０の主制御部１００は、割込信号が入力したＩＯユニット２０に対して、割込要因のクリアを指示するための準備を行う（ステップＳ１４４）。すなわち、割込信号が入力したＩＯユニット２０が保持している状態値をクリアするための準備処理を行う。続いて、ＣＰＵユニット１０の主制御部１００は、内部バス制御部１３０に対して、ＩＯユニット２０に対する割込要因のクリアを指示する（ステップＳ１４６）。この指示に応答して、ＣＰＵユニット１０の内部バス制御部１３０は、ＯＵＴ＿ｆｒａｍｅ（１Ｗ）を生成し、ダウンリンク５１を介して、割込信号が入力したＩＯユニット２０（この例では、＃４のＩＯユニット２０）へ送信する（ステップＳ１４８）。ＯＵＴ＿ｆｒａｍｅ（１Ｗ）を受信したＩＯユニット２０は、自局が保持している割込要因を示す状態値をゼロクリアする（ステップＳ１５０）とともに、アップリンク５２を介して、ＯＵＴ＿ｆｒａｍｅ（１Ｗ）の受信成功を示すＡＣＫ＿ｆｒａｍｅをＣＰＵユニット１０へ送信する（ステップＳ１５２）。ＣＰＵユニット１０の内部バス制御部１３０は、ＩＯユニット２０からＡＣＫ＿ｆｒａｍｅを受信すると、割込要因のクリアが完了したことをＣＰＵユニット１０の主制御部１００へ通知する（ステップＳ１５４）とともに、アップリンク５２を非アクティブ化するためのＰｏｗｅｒＤｏｗｎ＿ｆｒａｍｅを生成し、ダウンリンク５１を介して、すべてのＩＯユニット２０へ送信する（ステップＳ１５６）。各ＩＯユニット２０は、ＰｏｗｅｒＤｏｗｎ＿ｆｒａｍｅの受信に応答して、アップリンクを非アクティブ化する。
【０１１８】
また、ＣＰＵユニット１０の主制御部１００は、割込要因のクリアの完了に応答して、割込タスクを終了する（ステップＳ１５８）。これによって、割込信号が入力してからの一連の割込処理の実行が完了する。
【０１１９】
＜Ｇ．割込信号入力時の処理手順（第２の実装例）＞
上述の第１の実装例の変形例（第２の実装例）として、第１番目および第２番目のフェーズを並列的に実行する処理手順について説明する。図１０は、本実施の形態に係るＰＬＣシステム１における割込信号が入力されたときの処理手順（第２の実装例）を示すタイムチャートである。
【０１２０】
図１０に示す処理手順は、図９に示す処理手順に比較して、アクティブ状態に変更するためのＷａｋｅＵＰ＿ｆｒａｍｅ、および、割込信号の入力状態を要求するコマンド（トリガー）を含むＴＲＧ＿ｆｒａｍｅ（ＩＲＱ）の送信（ステップＳ１２２）のタイミングが異なっている。すなわち、第２の実装例においては、ＣＰＵユニット１０の内部バス制御部１３０が割込信号の入力の通知を受けると、割込信号が入力したＩＯユニット２０を特定するためのフレームを生成する（ステップＳ１０６）とともに、割込信号が入力したＩＯユニット２０からタイムスタンプを収集するためのＴＲＧ＿ｆｒａｍｅ（ＩＮ）を生成する（ステップＳ１０７）。
【０１２１】
ＩＯユニット２０は、それぞれのフレームに応答して、対象のデータをＣＰＵユニット１０へ送信する（ステップＳ１１２，Ｓ１２６）。
【０１２２】
このような処理手順を採用することで、一連の割込処理の実行に要する時間を短縮できる。
【０１２３】
＜Ｈ．割込信号入力時の処理手順（第３の実装例）＞
上述の第１の実装例の変形例（第３の実装例）として、第１番目および第２番目のフェーズに必要な遣り取りを一度の手続きで実行する処理手順について説明する。図１１は、本実施の形態に係るＰＬＣシステム１における割込信号が入力されたときの処理手順（第３の実装例）を示すタイムチャートである。
【０１２４】
図１１に示す処理手順は、図１０に示す処理手順に比較して、アクティブ状態に変更するためのＷａｋｅＵＰ＿ｆｒａｍｅ、割込信号の入力状態を要求するコマンド（トリガー）を含むＴＲＧ＿ｆｒａｍｅ（ＩＲＱ）、ＩＮデータリフレッシュを実行させるためのコマンド（トリガー）を含むＴＲＧ＿ｆｒａｍｅ（ＩＮ）を同時に送信する（ステップＳ１０９）点が異なっている。すなわち、第３の実装例においては、ＣＰＵユニット１０の内部バス制御部１３０は、ＩＲＱバス６を介した割込信号の入力の通知に応答して、ＷａｋｅＵＰ＿ｆｒａｍｅ、ＴＲＧ＿ｆｒａｍｅ（ＩＲＱ）、ＴＲＧ＿ｆｒａｍｅ（ＩＮ）を含むフレームを生成し（ステップＳ１０６）、当該生成したフレームをダウンリンク５１を介して送信する。
【０１２５】
このフレームに応答して、ＩＯユニット２０は、ＩＲＱ＿ｆｒａｍｅおよびＩＮ＿ｆｒａｍｅを生成し、アップリンク５２を介してＣＰＵユニット１０へ送信する（ステップＳ１１３）。
【０１２６】
このような処理手順を採用することで、一連の割込処理に必要なＩＯユニット２０からの情報を一回の遣り取りで取得できるので、実行に要する時間をさらに短縮できる。
【０１２７】
＜Ｉ．割込信号を通知できるＩＯユニットの制限＞
上述したように、ＰＬＣシステム１は、マスター制御部から複数のスレーブ制御部に亘ってＩＲＱバス６を設ける構成を採用している。割込制御を実現する場合には、割込信号を受付けるＩＯユニット２０をＣＰＵユニット１０から近い位置に配置する。これは、割込信号の伝送に要する時間を可能な限り短くするためのである。すなわち、割込信号を受付けるＩＯユニット２０は、ＣＰＵユニット１０に近いものに限られ、それ以外のＩＯユニット２０は、割込信号を受付けない。このような構成において、ＩＲＱバス６にノイズが誤動作によって、割込信号の入力が誤って通知されることを防止することが好ましい。
【０１２８】
つまり、メイン処理装置２および／またはリモートＩＯ装置３は、割込信号の入力をマスター制御部へ通知可能なスレーブ制御部を制限するための手段を実装することが好ましい。
【０１２９】
具体的には、割込信号を受付けるＩＯユニット２０をＣＰＵユニット１０に近い順にｎ台までと制限する場合には、ｎ＋１台目以降のＩＯユニット２０からＩＲＱバス６を介して誤った通知が送信されることを防止する必要がある。このような誤った通知の送信を防止するための一例として、以下のような回路構成を有する割込通知回路２５０（図２）を採用することが好ましい。
【０１３０】
図１２は、本実施の形態に係るＰＬＣシステム１におけるＩＲＱバス６上での誤った通知の送信を防止するための回路構成例を示す模式図である。図１２を参照して、ＩＯユニット２０の割込通知回路２５０の各々は、ＡＮＤ回路２５２およびＯＲ回路２５４を含む。ＯＲ回路２５４は、ＩＲＱバス６（割込ライン）に介挿され、前段のスレーブ制御部からの割込信号の入力を通知する信号と、自身の割込信号の入力を通知する信号との論理和を新たな割込信号の入力を通知する信号として出力する論理和回路に相当する。ＡＮＤ回路２５２は、ＯＲ回路２５４（論理和回路）から出力される新たな割込信号の入力を通知する信号を後段のスレーブ制御部へ出力するか否かを切換える回路に相当する。
【０１３１】
ＯＲ回路２５４の一方の入力端には、後段に配置されたＩＯユニット２０からＩＲＱバス６が接続されており、他方の入力端には、割込要因（割込信号の入力有無）が入力されている。ＯＲ回路２５４は、後段に配置されたＩＯユニット２０からの割込信号の入力の通知、および、自局での割込要因の発生の少なくとも一方があれば、割込要因を通知する信号を出力する。
【０１３２】
ＯＲ回路２５４からの出力は、ＡＮＤ回路２５２の一方の入力端に接続されている。ＡＮＤ回路２５２の他方の入力端には、ＩＲＱバス６上の伝搬可否を制御する「ＷｉｒｅｄＩＲＱ伝搬Ｅｎａｂｌｅ」信号が入力されている。すなわち、「ＷｉｒｅｄＩＲＱ伝搬Ｅｎａｂｌｅ」信号が有効化（活性化）されていなければ、ＡＮＤ回路２５２からは有効な信号は出力されない。つまり、「ＷｉｒｅｄＩＲＱ伝搬Ｅｎａｂｌｅ」信号を無効化（非活性化）しておくことで、当該ＩＯユニット２０およびそれ以降に配置されているＩＯユニット２０からの通知を遮断できる。
【０１３３】
例えば、ｎ＋１台目以降のＩＯユニット２０からＩＲＱバス６を介して誤った通知の送信を防止する場合には、ＣＰＵユニット１０から近いｎ台のＩＯユニット２０に対して、「ＷｉｒｅｄＩＲＱ伝搬Ｅｎａｂｌｅ」信号を有効化（活性化）しておき、それ以外のＩＯユニット２０に対しては、「ＷｉｒｅｄＩＲＱ伝搬Ｅｎａｂｌｅ」信号を無効化（非活性化）しておく。このような構成および設定を採用することで、ＩＲＱバス６を介して誤った通知が送信されることを防止できる。
【０１３４】
＜Ｊ．変形構成＞
上述の実施の形態においては、ＣＰＵユニット１０とＩＯユニット２０とが通信ライン（内部バス５）および割込ライン（ＩＲＱバス６）を介して接続されている構成について例示した。但し、割込信号の入力を示す情報を、割込ラインではなく、通信ラインを介して送信するようにしてもよい。以下、このような割込信号の入力を示す情報を、通信ラインを介してメイン処理装置へ送信する構成について説明する。
【０１３５】
図１３は、本実施の別に形態に係るメイン処理装置２Ａの概略構成図である。メイン処理装置２Ａにおいては、ＣＰＵユニット１０ＡとＩＯユニット２０Ａとは、通信ライン（内部バス５）を介して接続されているが、ＩＲＱバス６は存在しない。これに伴って、ＣＰＵユニット１０ＡおよびＩＯユニット２０Ａには、ＩＲＱバス６を介する信号伝送に係る機能が存在しない。
【０１３６】
メイン処理装置２Ａにおいて、ＩＯユニット２０ＡからＣＰＵユニット１０Ａへの割込信号の入力の通知方法の一例としては、ＩＯユニット２０Ａが割込信号の入力の通知を含むデータフレーム（コマンド）を自発的に生成し、通信ライン（内部バス５）を介してＣＰＵユニット１０Ａへ送信する。ＣＰＵユニット１０Ａは、このコマンドから送信元のＩＯユニット２０Ａを特定することができ、この特定されたＩＯユニット２０Ａに対して、タイムスタンプを要求する。そして、要求を受けたＩＯユニット２０Ａは、要求されたタイムスタンプを通信ライン（内部バス５）を介してＣＰＵユニット１０Ａへ送信する。このように、スレーブ制御部（ＩＯユニット２０Ａ）は、割込信号の入力を示す情報を通信ライン（内部バス５）を介して、マスター制御部（ＣＰＵユニット１０Ａ）へ通知する。
【０１３７】
ＩＯユニット２０ＡからＣＰＵユニット１０Ａへの割込信号の入力の通知方法の別の一例として、ＣＰＵユニット１０Ａからのポーリングを用いる方法もある。より具体的には、ＣＰＵユニット１０Ａは、内部バス５を介して、ＩＯユニット２０Ａの各々へ定期的かつ循環的にポーリングを行うとともに、ＩＯユニット２０Ａの各々は、ＣＰＵユニット１０Ａからのポーリングを受信したことをトリガーとして、割込信号の入力を通知する。すなわち、ＩＯユニット２０Ａの各々は、ＣＰＵユニット１０Ａからポーリングを受信すると、前回のポーリングから今回のポーリングまでの間に割込信号を受信していれば、そのポーリングに対する応答として、割込信号の入力を通知する。このように、ポーリングを利用することで、いずれのＩＯユニット２０Ａに生じた割込信号の入力であっても、ＣＰＵユニット１０Ａで検出することができる。
【０１３８】
このように、マスター制御部（ＣＰＵユニット１０Ａ）は、通信ライン（内部バス５）を介してスレーブ制御部（ＩＯユニット２０Ａ）へ周期的に問い合わせを行うように構成されており、スレーブ制御部（ＩＯユニット２０Ａ）は、マスター制御部（ＣＰＵユニット１０Ａ）からの問い合わせを受信した際に、割込信号を受付けていれば、割込信号の入力を示す情報をマスター制御部（ＣＰＵユニット１０Ａ）へ通知する。
【０１３９】
なお、通信ライン（内部バス５）を介して割込信号の入力を通知する手段としては、上述した方法に限らず、任意の方法を採用できる。
【０１４０】
＜Ｋ．利点＞
本実施の形態によれば、割込処理において、割込要因が発生したタイミングを知ることができるので、割込処理に係る各種のプログラムの実行タイミングなどをより適切に制御することができる。例えば、割込要因が発生してから所定時間後に何らかの信号を出力するといった制御などを容易に実現できる。
【０１４１】
また、本実施の形態によれば、複数のスレーブ制御部でそれぞれ割込要因が発生した場合などであっても、各割込要因の発生タイミングなどを特定できるので、制御対象に発生した故障原因の調査などにも利用することもできる。
【０１４２】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、請求の範囲によって示され、請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０１４３】
１  ＰＬＣシステム、２  メイン処理装置、３  リモートＩＯ装置、４  フィールドバス、５  内部バス、６  ＩＲＱバス、１０  ＣＰＵユニット、１２，４２  通信モジュール、２０  ＩＯユニット、３０  電源ユニット、４０  マスターユニット、５１  ダウンリンク、５２  アップリンク、１００，１５０  主制御部、１０２，１５２，２００  プロセッサ、１０４，２０８  不揮発性メモリ、１０６  制御プログラム、１０８  主メモリ、１１０  フィールドバス制御部、１１２，２１０ａ，２２０ａ  受信部、１１４，２１０ｂ，２２０ｂ  送信部、１２０  フィールドバス通信コントローラ、１２２  メモリコントローラ、１２４  ＦＩＦＯメモリ、１２６，２０３  受信バッファ、１２８，２０４  送信バッファ、１３０  内部バス制御部、１３２  内部バス通信コントローラ、１３４  割込回路、１３６，２７０  カウンタ、１４２  送信回路、１４４  受信回路、１６０  記憶部、１６２，２０２  共有メモリ、１６４  受信メモリ、１６６  送信メモリ、２０６  モジュール、２１２，２２２  ＤＥＳ部、２１４，２２４  リピート部、２１６，２２６  ＳＥＲ部、２３０  受信処理部、２３２  復号部、２３４  チェック部、２３６  バス、２４０  送信処理部、２４２  ＣＲＣ生成部、２４４  符号化部、２５０  割込通知回路、２５２  ＡＮＤ回路、２５４  ＯＲ回路。
【図１】
0006037042.tif 000002
【図２】
0006037042.tif 000003
【図３】
0006037042.tif 000004
【図４】
0006037042.tif 000005
【図５】
0006037042.tif 000006
【図６】
0006037042.tif 000007
【図７】
0006037042.tif 000008
【図８】
0006037042.tif 000009
【図９】
0006037042.tif 000010
【図１０】
0006037042.tif 000011
【図１１】
0006037042.tif 000012
【図１２】
0006037042.tif 000013
【図１３】
0006037042.tif 000014