<実施の形態1>
図1は、本発明の実施の形態1に係るコントローラシステムの全体構成を示すブロック図である。なお、後述する実施の形態4〜8に係るコントローラシステムの全体構成も、図1と同様である。
実施の形態1のコントローラシステムは、コントローラ1と、ハブ100と、複数の入出力制御装置4とを備えている。実施の形態1では図1のように、コントローラシステムが、入出力制御装置4として、入出力制御装置4−1,4−2,4−3の3つを備えるものとする。以下の説明において、入出力制御装置4−1,4−2,4−3のうちのいずれであるかを特定しない場合には、それぞれを単に「入出力制御装置4」と称すこともある。入出力制御装置4の個数は3つに限られず、2つ以上であればよい。
コントローラ1は、通信バス6およびハブ100を介して入出力制御装置4−1,4−2,4−3と接続されており、コントローラ1と入出力制御装置4−1,4−2,4−3との間での通信が可能である。つまり、コントローラ1および複数の入出力制御装置4は、ハブ100を中心にしてスター型に接続されている。
コントローラ1は、プロセッサ2および通信部3を備えている。プロセッサ2は、例えばCPUなどから構成される。通信部3は、ハブ100を介して複数の入出力制御装置4との通信を行う。
入出力制御装置4には1つ以上のセンサ機器5を接続可能である。図1の例では、入出力制御装置4−1は、センサ機器5−1,5−2と接続されている。入出力制御装置4−2は、センサ機器5−3と接続されている。入出力制御装置4−3は、センサ機器5−4,5−5,5−6と接続されている。以下の説明において、センサ機器5−1〜5−6のうちのいずれであるかを特定しない場合には、それぞれを単に「センサ機器5」と称すこともある。ここではセンサ機器5を6つ備えるコントローラシステムを示すが、センサ機器5の個数は1つ以上あればよい。
センサ機器5は、外部との間でセンサデータの入出力を行う。また、入出力制御装置4は、接続されたセンサ機器5と間でセンサデータの入出力を行う。
入出力制御装置4のそれぞれは、入出力部7と、ワンショットタイマ部8と、通信部9とを備える。すなわち、入出力制御装置4−1は、入出力部7−1と、ワンショットタイマ部8−1と、通信部9−1とを備える。同様に、入出力制御装置4−2は、入出力部7−2と、ワンショットタイマ部8−2と、通信部9−2とを備え、入出力制御装置4−3は、入出力部7−3と、ワンショットタイマ部8−3と、通信部9−3とを備える。
以下の説明において、入出力部7−1,7−2,7−3のうちのいずれであるかを特定しない場合には、それぞれを単に「入出力部7」と称すこともある。また、ワンショットタイマ部8−1,8−2,8−3のうちのいずれであるかを特定しない場合には、それぞれを単に「ワンショットタイマ部8」と称すこともある。さらに、通信部9−1,9−2,9−3のうちのいずれであるかを特定しない場合には、それぞれを単に「通信部9」と称すこともある。
入出力部7は、センサ機器5との間でセンサデータなどのデータの入出力を行う。ワンショットタイマ部8は、コントローラ1からの起動要求に応じて、割り込みを発生させる。具体的には、コントローラ1から起動要求を取得してからカウントした値が、特定の値(後述する「ワンショットタイマ起動カウント値」)と等しくなったときに、割り込みを発生させる。通信部9は、コントローラ1および他の2つの入出力制御装置4との間で、センサデータなどのデータの送受信を行う。以下の説明において、複数の入出力制御装置4のうち、着目している1つの入出力制御装置4を「自装置」と称し、自装置以外の他の入出力制御装置4を「他装置」と称すこともある。
図2は、実施の形態1に係る入出力制御装置4の構成を示すブロック図である。図2に示すように、入出力制御装置4のワンショットタイマ部8は、タイマ生成部11と、ワンショットタイマカウンタ12と、割り込み発生部13と、ワンショットタイマ制御レジスタ14と、起動カウント値算出部15とを備える。
ここで、「ワンショットタイマカウンタ」とは、起動した後に1回だけ一定幅のパルス信号を出力する回路である。また、本明細書の全体を通して、「カウント」は、機器ごとの周波数に基づいて時間をカウントした値を表している。また、ソフトウェアまたはハードウェアが比較する値または時間は、間隔または時刻を定義するものとして使用されている。
タイマ生成部11は、複数の入出力制御装置4で共通のタイマ生成用周波数を持ち、カウントをインクリメント(カウントアップ)するトリガを定期的に生成する。ワンショットタイマカウンタ12は、起動した後、タイマ生成部11が出力するトリガに基づいて定期的に「ワンショットタイマカウント」をインクリメントする。割り込み発生部13は、そのワンショットタイマカウントが、「ワンショットタイマ起動カウント値」と等しくなったときに、割り込み(以下「ワンショットタイマ割り込み」と称す)を発生させる。
ワンショットタイマ制御レジスタ14は、入出力制御装置4の動作を制御するためのパラメータを格納する。起動カウント値算出部15は、自装置および他装置の「識別情報」、「階層」、「センサ接続数」、「データ送信所要時間」および「ワンショットタイマ起動時間」に基づいて、自装置の「ワンショットタイマ起動カウント値」を算出する。なお、データ送信所要時間およびワンショットタイマ起動時間は、タイマ生成用周波数を基準にする単位に変換された値が用いられる。起動カウント値算出部15が算出したワンショットタイマ起動カウント値は、ワンショットタイマ制御レジスタ14に格納される。
ここで、ワンショットタイマカウンタ12がインクリメントするワンショットタイマカウントは、ワンショットタイマカウンタ12が起動してからタイマ生成部11がトリガを生成した回数を示す値となる。また、ワンショットタイマ起動カウント値とは、ワンショットタイマカウンタ12がパルス信号を出力するタイミングを規定するものである。具体的には、ワンショットタイマカウンタ12は、ワンショットタイマカウントとワンショットタイマ起動カウント値と比較し、両者が等しくなったときに、パルス信号を出力する。また、ワンショットタイマ起動時間は、タイマ生成用周波数に依存しない共通の間隔または時刻を示すものである。
図3は、実施の形態1に係るワンショットタイマ制御レジスタ14に格納されるパラメータを示す図である。ワンショットタイマ制御レジスタ14は、パラメータとして、「ワンショットタイマ起動カウント値」と、「センサ接続数」と、「データ送信所要時間」と、「ワンショットタイマ割り込み所要時間」と、「階層」と、「基底ワンショットタイマ起動カウント値」とを格納している。
ワンショットタイマ起動カウント値は、上述したように、ワンショットタイマカウンタ12がパルス信号を出力するか否かを判定するためにワンショットタイマカウントと比較される値である。
「センサ接続数」は、自装置がワンショットタイマカウンタ12を起動させる対象となっているセンサ機器5の数である。すなわち、「センサ接続数」は、ワンショットタイマカウントがワンショットタイマ起動カウント値と等しくなったときに、自装置がコントローラ1へセンサデータを送信する対象となっているセンサ機器5の数である。
データ送信所要時間は、センサ機器5から入出力制御装置4にデータを送信するための所要時間である。
「ワンショットタイマ割り込み所要時間」は、自装置のワンショットタイマ割り込みが発生し、ワンショットタイマの対象となっているセンサ機器5のセンサデータをコントローラ1へ通知するための所要時間である。
「階層」は、コントローラ1との間にある自装置を含む入出力制御装置4の数である。階層は、コントローラ1を基準にして、コントローラ1側を上位の階層、コントローラ1とは反対側を下位の階層とする。
「基底ワンショットタイマ起動カウント値」は、自装置のワンショットタイマ起動カウント値を算出する際に、基底となる値である。
図4は、実施の形態1に係るコントローラシステムの処理を説明するための図である。以下、図4に基づいて当該コントローラシステムの処理を説明する。なお、以下に示されるワンショットタイマ起動カウント値の算出は、入出力制御装置4−1,4−2,4−3のそれぞれの起動カウント値算出部15によって行われる。
初めに、コントローラ1は、入出力制御装置4−1,4−2,4−3のそれぞれに対し、自装置の識別情報、階層およびセンサ接続数の情報の送信を要求し、データ送信所要時間を算出する。ここでは入出力制御装置4−1,4−2,4−3のデータ送信所要時間はいずれも「100」であるものとする。
次に、終端の入出力制御装置4は、自装置のワンショットタイマ割り込み所要時間を、自装置のセンサ接続数およびデータ送信所要時間に基づいて算出する。「終端の入出力制御装置4」とは、自装置の下位の階層(コントローラ1とは反対側)に他装置が接続されていない入出力制御装置4のことであり、図4の例では、入出力制御装置4−1,4−2,4−3の全てが終端の入出力制御装置4である。
終端の入出力制御装置4のワンショットタイマ割り込み所要時間は、その入出力制御装置4のセンサ接続数とデータ送信所要時間との積として算出される。すなわち、ワンショットタイマ割り込み所要時間は、「センサ接続数×データ送信所要時間」として算出される。
よって、入出力制御装置4−1のワンショットタイマ割り込み所要時間は「200(=2×100)」となり、入出力制御装置4−2のワンショットタイマ割り込み所要時間は「100(=1×100)」となり、入出力制御装置4−3のワンショットタイマ割り込み所要時間は「300(=3×100)」となる。
入出力制御装置4は、自装置の識別情報およびワンショットタイマ割り込み所要時間を含む返送データ420を、コントローラ1またはコントローラ1側(上位の階層)に接続されている他装置に送信する。実施の形態1では、全ての終端の入出力制御装置4が、他装置を介することなく、コントローラ1と接続されているため、各入出力制御装置4が送信した返送データ420は全て、コントローラ1に受信される。
次に、コントローラ1は、ワンショットタイマ制御レジスタ14に格納するパラメータを規定するためのデータである初期化時登録データ310を、入出力制御装置4に送信する。実施の形態1に係る初期化時登録データ310は、図4に示すように、入出力制御装置4−1,4−2,4−3の識別情報、センサ接続数、データ送信所要時間、ワンショットタイマ割り込み所要時間および階層の情報を含んでいる。ここで、入出力制御装置4−1の識別情報は「41」、入出力制御装置4−2の識別情報は「42」、入出力制御装置4−3の識別情報は「43」であるものとする。
図4の初期化時登録データ310において、入出力制御装置4−1のセンサ接続数は「2」、入出力制御装置4−2のセンサ接続数は「1」、入出力制御装置4−3のセンサ接続数は「3」である。また、入出力制御装置4−1のデータ送信所要時間は「100」、入出力制御装置4−2のデータ送信所要時間は「100」、入出力制御装置4−3のデータ送信所要時間は「100」である。初期化時登録データ310の入出力制御装置4−1のワンショットタイマ割り込み所要時間は「200」、入出力制御装置4−2のワンショットタイマ割り込み所要時間は「100」、入出力制御装置4−3のワンショットタイマ割り込み所要時間は「300」である。初期化時登録データ310の入出力制御装置4−1の階層は「1」、入出力制御装置4−2の階層は「1」、入出力制御装置4−3の階層は「1」である。また、実施の形態1では、ワンショットタイマ起動カウント値を階層が「1」の入出力制御装置4の基底ワンショットタイマ起動カウント値は「0」に設定される。
続いて、入出力制御装置4は、他装置のワンショットタイマ割り込み所要時間に基づいて、自装置のワンショットタイマ起動時間を算出する。実施の形態1では、入出力制御装置4のデータ送信所要時間のうちの最小時間と、自装置よりも小さい値の識別情報を持つ階層が「1」の全ての入出力制御装置4(自装置と同じ階層の全ての他装置)のワンショットタイマ割り込み所要時間の合計との和が、ワンショットタイマ起動時間として算出される。すなわち、ワンショットタイマ起動時間は、「データ送信所要時間のうちの最小時間+自装置よりも小さい値の識別情報を持つ階層が「1」の全ての入出力制御装置4のワンショットタイマ割り込み所要時間の合計」として算出される。また、算出されたワンショットタイマ起動時間は、タイマ生成用周波数を基準にしたカウント値に換算されて、入出力制御装置4のワンショットタイマ制御レジスタ14に格納される。
ここでは、ワンショットタイマ起動時間はミリ秒で定義されており、タイマ生成用周波数が1MHzであると仮定する。この場合、タイマは1マイクロ秒ごとにカウントアップされるため、入出力制御装置4−1のワンショットタイマ起動カウント値は、「100000(=(100+0)×1000)」となる。同様に、入出力制御装置4−2のワンショットタイマ起動カウント値は、「300000(=(100+200)×1000)」となる。入出力制御装置4−3のワンショットタイマ起動カウント値は、「400000(=(100+200+100)×1000)」となる。
その結果、入出力制御装置4のワンショットタイマ制御レジスタ14には、図5に示すデータが格納されることとなる。
図6は、実施の形態1に係るコントローラシステムにおいて、入出力制御装置4が、ワンショットタイマ割り込みによって、コントローラ1へセンサデータを送信するタイミングを示すタイミングチャートである。
なお、図6における「入出力制御装置1」、「入出力制御装置2」および「入出力制御装置3」は、それぞれ入出力制御装置4−1,4−2,4−3に対応する。また、図6の「起動カウント値」は、ワンショットタイマ起動カウント値に対応する。さらに、図6の「INI」は初期化に用いられるデータを示しており、コントローラ1から入出力制御装置4へ送信される初期化時登録データ310に対応する。図6の「S1」、「S2」、「S3」、「S4」、「S5」、「S6」は、それぞれセンサ機器5−1,5−2,5−3,5−4,5−5,5−6のセンサデータを示している。このような表記は、以降のタイミングチャートにおいて同様に用いられる。
さて、図4で説明したように、コントローラ1が初期化時登録データ310を入出力制御装置4へ送信すると、入出力制御装置4のワンショットタイマ制御レジスタ14に自装置のワンショットタイマ起動カウント値が設定される。
入出力制御装置4は、自装置のワンショットタイマ起動カウント値が設定されると、自装置のワンショットタイマカウンタ12を起動させる。そして、ワンショットタイマカウンタ12のワンショットタイマカウントが自装置のワンショットタイマ起動カウント値と等しくなると、入出力制御装置4は、自装置に接続されたセンサ機器5のセンサデータを、ハブ100を介してコントローラ1へ送信する。
入出力制御装置4−1,4−2,4−3に、図5に示すワンショットタイマ起動カウント値が設定されると、図6に示すように、入出力制御装置4−1は、自装置のワンショットタイマカウンタ12のワンショットタイマカウントが「100000」になると、センサ機器5−1,5−2のセンサデータを順にコントローラ1へ送信する。また、入出力制御装置4−2は、自装置のワンショットタイマカウンタ12のワンショットタイマカウントが「300000」になると、センサ機器5−3のセンサデータをコントローラ1に送信する。また、入出力制御装置4−3は、自装置のワンショットタイマカウンタ12のワンショットタイマカウントが「400000」になると、センサ機器5−4,5−5,5−6のセンサデータを順にコントローラ1に送信する。
図7は、実施の形態1に係る入出力制御装置4における、ワンショットタイマ割り込みの発生処理を示すフローチャートである。本フローチャートの処理は、タイマ生成部11でトリガが生成されたとき、換言すればワンショットタイマカウンタ12がトリガを受信したときに実行される。
ワンショットタイマカウンタ12がトリガを受信すると、まず、割り込み発生部13が、ワンショットタイマ割り込みをオフ状態にする(ステップST1)。次に、入出力制御装置4は、現時点でワンショットタイマカウンタ12が起動しているか否かを判定する(ステップST2)。
ワンショットタイマカウンタ12が起動している場合には、ワンショットタイマカウンタ12は、ワンショットタイマカウントをインクリメントする(ステップST3)。そして、ワンショットタイマカウンタ12は、ワンショットタイマカウントがワンショットタイマ起動カウント値と等しいか否かを判定する(ステップST4)。
ワンショットタイマカウントがワンショットタイマ起動カウント値と等しければ、割り込み発生部13がワンショットタイマ割り込みをオン状態にして、ワンショットタイマ割り込みを発生させ、さらにワンショットタイマカウンタ12の動作を停止させてから(ステップST5)、図7の処理は終了する。しかし、ワンショットタイマカウントがワンショットタイマ起動カウント値と等しくなければ、ワンショットタイマ割り込みを発生させることなく、図7の処理は終了する。
なお、ステップST2において、ワンショットタイマカウンタ12が起動していない場合には、入出力制御装置4は、コントローラ1から、ワンショットタイマカウンタ12の起動要求、例えば初期化時登録データ310などを受信したか否かを判定する(ステップST6)。ワンショットタイマカウンタ12の起動要求が受信されていれば、ワンショットタイマカウンタ12が、ワンショットタイマカウントをリセットして0にして起動してから(ステップST7)、図7の処理は終了する。ワンショットタイマカウンタ12の起動要求が受信されていなければ、ワンショットタイマカウンタ12が起動することなく、図7の処理は終了する。
実施の形態1に係るコントローラシステムによれば、複数の入出力制御装置4のそれぞれの起動カウント値算出部15が、自装置の識別情報、階層およびセンサ接続数と、他装置の識別情報、階層およびデータ送信所要時間とに基づいて、自装置のワンショットタイマ起動カウント値を算出する。この構成によれば、コントローラ1がタイムイベントキューの管理、つまり割り込み発生のための時間の管理を行うことなく、コントローラ1は、時分割でデータを取得することが可能となる。このため、コントローラ1の負荷を抑制することができる。また、コントローラシステムの応答性の向上化も期待できる。
なお、本実施の形態では、割り込み発生部13は、ワンショットタイマカウントがワンショットタイマ起動カウント値と等しいときに、ワンショットタイマ割り込みを発生させた。しかしこの例に限ったものではなく、例えば割り込み発生部13は、ワンショットタイマカウントがワンショットタイマ起動カウント値を超えたときにワンショットタイマ割り込みを発生させてもよい。このことは以下の各実施の形態でも同様である。
また、本実施の形態では、ワンショットタイマカウンタ12は、定期的にワンショットタイマカウントをインクリメントした。しかしこの例に限ったものではなく、ワンショットタイマカウンタ12は、初期値が十分大きな値に設定されたワンショットタイマカウントを定期的にデクリメント(カウントダウン)してもよい。この場合、割り込み発生部13は、ワンショットタイマカウントの初期値と現在の値との差が、ワンショットタイマ起動カウント値と等しくなったとき(あるいは超えたとき)に、ワンショットタイマ割り込みを発生させてもよい。つまり、割り込み発生部13は、ワンショットタイマカウントとワンショットタイマ起動カウント値とに基づいて、ワンショットタイマ割り込みを発生させるように構成されていればよい。このことは以下の各実施の形態でも同様である。
<実施の形態2>
図8は、本発明の実施の形態2に係るコントローラシステムの全体構成を示すブロック図である。
図8のコントローラシステムは、コントローラ1と、ハブ100と、5つの入出力制御装置4−1〜4−5とを備える。以下の説明において、入出力制御装置4−1〜4−5のうちのいずれであるかを特定しない場合には、それぞれを単に「入出力制御装置4」と称すこともある。なお、入出力制御装置4の個数は5つに限られず、2つ以上であればよい。
入出力制御装置4−1,4−2,4−3は、ハブ100を介してコントローラ1に接続しており、コントローラ1との通信が可能である。入出力制御装置4−4は、入出力制御装置4−3に接続されており、入出力制御装置4−3およびハブ100を介してコントローラ1と通信可能である。入出力制御装置4−5は、入出力制御装置4−4に接続されており、入出力制御装置4−3,4−4およびハブ100を介してコントローラ1と通信可能である。
また、入出力制御装置4−1はセンサ機器5−1,5−2と接続されている。入出力制御装置4−2はセンサ機器5−3と接続されている。入出力制御装置4−3はセンサ機器5−4,5−5,5−6と接続されている。入出力制御装置4−4はセンサ機器5−7,5−8と接続されている。入出力制御装置4−5はセンサ機器5−9,5−10,5−11と接続されている。以下の説明において、センサ機器5−1〜5−11のうちのいずれであるかを特定しない場合には、それぞれを単に「センサ機器5」と称すこともある。なお、センサ機器5の個数は11個に限られず、1つ以上あればよい。
図9は、ワンショットタイマ制御レジスタ14に格納されるパラメータを示す図である。実施の形態1と同様に、ワンショットタイマ制御レジスタ14は、パラメータとして、「ワンショットタイマ起動カウント値」と、「センサ接続数」と、「データ送信所要時間」と、「ワンショットタイマ割り込み所要時間」と、「階層」と、「基底ワンショットタイマ起動カウント値」とを格納する。
図10は、実施の形態2に係るコントローラシステムの処理を説明するための図である。なお、以下に示されるワンショットタイマ起動カウント値の算出は、入出力制御装置4−1〜4−5のそれぞれの起動カウント値算出部15によって行われる。
実施の形態2では、初めに、終端の入出力制御装置4が、自装置のワンショットタイマ割り込み所要時間を、センサ接続数およびデータ送信所要時間に基づいて算出する。図10の例では、終端の入出力制御装置4は、入出力制御装置4−1,4−2,4−5である。
終端の入出力制御装置4のワンショットタイマ割り込み所要時間は、その入出力制御装置4のセンサ接続数とデータ送信所要時間との積として算出される。すなわち、ワンショットタイマ割り込み所要時間は、「センサ接続数×データ送信所要時間」として算出される。よって、入出力制御装置4−1のワンショットタイマ割り込み所要時間は「200(=2×100)」となり、入出力制御装置4−2のワンショットタイマ割り込み所要時間は「100(=1×100)」となり、入出力制御装置4−5のワンショットタイマ割り込み所要時間は「300(=3×100)」となる。
入出力制御装置4は、自装置の識別情報およびワンショットタイマ割り込み所要時間を含む返送データ420を、コントローラ1またはコントローラ1側に接続されている他装置に送信する。
次に、返送データ420を受信した入出力装置4が、自装置のワンショットタイマ割り込み所要時間を、センサ接続数とデータ送信所要時間と返送データ420のワンショットタイマ割り込み所要時間とに基づいて算出する。
返送データ420を受信した入出力制御装置4のワンショットタイマ割り込み所要時間は、自装置のセンサ接続数と自装置に接続した他装置の数との合計にデータ送信所要時間を乗じた値に、返送データ420のワンショットタイマ割り込み所要時間を加算して得られる。つまり、ワンショットタイマ割り込み所要時間は、「(センサ接続数+接続されている入出力制御装置4の数)×データ送信所要時間+返送データ420のワンショットタイマ割り込み所要時間」として算出される。
図10の例では、入出力制御装置4−4は、入出力制御装置4−5が送信した返送データ420を受信する。よって、入出力制御装置4−4の割り込み所要時間は、「600(=(2+1)×100+300)」となる。入出力制御装置4−4は、自装置の識別情報およびワンショットタイマ割り込み所要時間を含む返送データ420を、入出力制御装置4−3へと送信する。
入出力制御装置4−4が送信した返送データ420を受信した入出力制御装置4−3は、上記と同様の手法で、自装置のワンショットタイマ割り込み所要時間を算出する。入出力制御装置4−3の割り込み送信所要時間は、「1000(=(3+1)×100+600)」となる。入出力制御装置4−4は、自装置の識別情報およびワンショットタイマ割り込み所要時間を含む返送データ420を、ハブ100を介してコントローラ1へと送信する。
次に、コントローラ1は、ワンショットタイマ制御レジスタ14のパラメータを規定するためのデータである初期化時登録データ310を、各入出力制御装置4へ送信する。図10に示すように、初期化時登録データ310は、入出力制御装置4−1〜4−5の識別情報、センサ接続数、データ送信所要時間、ワンショットタイマ割り込み所要時間および階層の情報を含んでいる。
図10の初期化時登録データ310において、初期化時登録データ310の入出力制御装置4−1の識別情報は「41」、入出力制御装置4−2の識別情報は「42」、入出力制御装置4−3の識別情報は「43」、入出力制御装置4−4の識別情報は「44」、入出力制御装置4−5の識別情報は「45」である。また、入出力制御装置4−1のセンサ接続数は「2」、入出力制御装置4−2のセンサ接続数は「1」、入出力制御装置4−3のセンサ接続数は「3」、入出力制御装置4−4のセンサ接続数は「2」、入出力制御装置4−5のセンサ接続数は「3」である。入出力制御装置4−1のデータ送信所要時間は「100」、入出力制御装置4−2のデータ送信所要時間は「100」、入出力制御装置4−3のデータ送信所要時間は「100」、入出力制御装置4−4のデータ送信所要時間は「100」、入出力制御装置4−5のデータ送信所要時間は「100」である。入出力制御装置4−1の割り込み所要時間は「200」、入出力制御装置4−2の割り込み所要時間は「100」、入出力制御装置4−3の割り込み所要時間は「1000」、入出力制御装置4−4の割り込み所要時間は「600」、入出力制御装置4−5の割り込み所要時間は「300」である。入出力制御装置4−1の階層は「1」、入出力制御装置4−2の階層は「1」、入出力制御装置4−3の階層は「1」、入出力制御装置4−4の階層は「2」、入出力制御装置4−5の階層は「3」である。
次に、入出力制御装置4は、他装置のワンショットタイマ割り込み所要時間に基づいて、自装置のワンショットタイマ起動時間を算出する。実施の形態2では、階層が「1」である入出力制御装置4から、ワンショットタイマ起動カウント値を算出する。ここで、階層が「1」の入出力制御装置4の基底ワンショットタイマ起動カウント値は「0」に設定される。
階層が「1」である入出力制御装置4は、データ送信所要時間のうちの最小時間と、自装置よりも小さい値の識別情報を持つ階層が「1」の全ての入出力制御装置4のワンショットタイマ割り込み所要時間の合計との和を、自装置のワンショットタイマ起動時間として算出する。すなわち、ワンショットタイマ起動時間は「データ送信所要時間のうちの最小時間+自装置よりも小さい値の識別情報を持つ階層が「1」の全ての入出力制御装置4のワンショットタイマ割り込み所要時間の合計」として算出される。さらに、入出力制御装置4は、算出されたワンショットタイマ起動時間を、タイマ生成用周波数を基準とするワンショットタイマ起動カウント値に換算し、ワンショットタイマ制御レジスタ14に格納する。
ここでも、ワンショットタイマ起動時間はミリ秒で定義されており、タイマ生成用周波数が1MHzであると仮定する。この場合、タイマは1マイクロ秒ごとにカウントアップされるため、入出力制御装置4−1のワンショットタイマ起動カウント値は、「100000(=(100+0)×1000)」となる。同様に、入出力制御装置4−2のワンショットタイマ起動カウント値は、「300000((=100+200)×1000)」となる。入出力制御装置4−3のワンショットタイマ起動カウント値は、「400000((=100+200+100)×1000)」となる。
次に、階層が「2」の入出力制御装置4が、自装置のワンショットタイマ起動カウント値を算出する。階層が「2」である入出力制御装置4のワンショットタイマ起動カウント値は、識別情報と基底ワンショットタイマ起動カウント値と他装置のワンショットタイマ割り込み所要時間とに基づいて算出される。
基底ワンショットタイマ起動カウント値は、コントローラ1側に接続されている入出力制御装置4のワンショットタイマ起動カウント値に、センサ接続数とデータ送信所要時間との積を加算した値として算出される。すなわち、基底ワンショットタイマ起動カウント値は、「コントローラ1側に接続されている入出力制御装置4のワンショットタイマ起動カウント値+センサ接続数×データ送信所要時間」として算出される。図10の例では、階層が「2」である入出力制御装置4−4の基底ワンショットタイマ起動カウント値は、「700000(=(400+3×100)×1000)」であり、入出力制御装置4−4のワンショットタイマ起動カウント値は「700000」となる。
次に、階層が「3」の入出力制御装置4が、自装置のワンショットタイマ起動カウント値を算出する。階層が「3」の入出力制御装置4は、階層が「2」の入出力制御装置4と同様に、基底ワンショットタイマ起動カウント値に基づいて、ワンショットタイマ起動カウント値を算出する。図10の例では、階層が「3」である入出力制御装置4−5の基底ワンショットタイマ起動カウント値は、「900000(=(700+2×100)×1000)」あり、入出力制御装置4−5のワンショットタイマ起動カウント値は、「900000」となる。
その結果、入出力制御装置4のワンショットタイマ制御レジスタ14には、図11に示すデータが格納されることとなる。
図12は、実施の形態2に係るコントローラシステムにおいて、入出力制御装置4が、ワンショットタイマ割り込みによって、コントローラ1へセンサデータを送信するタイミングを示すタイミングチャートである。
図10で説明したように、コントローラ1からの初期化時登録データ310が、入出力制御装置4に送信されることによって、入出力制御装置4のワンショットタイマ制御レジスタ14にワンショットタイマ起動カウント値が設定される。
入出力制御装置4は、自装置のワンショットタイマ起動カウント値が設定されると、自装置のワンショットタイマカウンタ12を起動させる。そして、ワンショットタイマカウンタ12のワンショットタイマカウントが自装置のワンショットタイマ起動カウント値と等しくなると、入出力制御装置4は、自装置に接続されたセンサ機器5のセンサデータを、ハブ100を介してコントローラ1へ送信する。
入出力制御装置4−1は、自装置のワンショットタイマ起動カウント値が設定された後、ワンショットタイマカウントが「100000」と等しくなると、センサ機器5−1,5−2のセンサデータを順にコントローラ1へ送信する。入出力制御装置4−2は、自装置のワンショットタイマ起動カウント値が設定された後、ワンショットタイマカウントが「300000」と等しくなると、センサ機器5−3のセンサデータをコントローラ1へ送信する。入出力制御装置4−3は、自装置のワンショットタイマ起動カウント値が設定された後、ワンショットタイマカウントが「400000」と等しくなると、センサ機器5−4,5−5,5−6のセンサデータを順にコントローラ1に送信する。入出力制御装置4−4は、自装置のワンショットタイマ起動カウント値が設定された後、ワンショットタイマカウントが「700000」と等しくなると、センサ機器5−7,5−8のセンサデータを順にコントローラ1へ送信する。入出力制御装置4−5は、自装置のワンショットタイマ起動カウント値が設定された後、ワンショットタイマカウントが「900000」と等しくなると、センサ機器5−9,5−10,5−11のセンサデータを順にコントローラ1に送信する。
実施の形態2に係るコントローラシステムによれば、複数の入出力制御装置4のそれぞれの起動カウント値算出部15が、センサ接続数に基づいて、ワンショットタイマ起動カウント値を算出する。この構成によれば、コントローラ1がタイムイベントキューの管理、つまり割り込み発生のための時間の管理を行うことなく、コントローラ1は、時分割でデータを取得することが可能となる。このため、コントローラ1の負荷を抑制することができる。また、コントローラシステムの応答性の向上化も期待できる。
<実施の形態3>
図13は、本発明の実施の形態3に係るコントローラシステムの全体構成を示すブロック図である。
図13のコントローラシステムは、コントローラ1と、ハブ100と、5つの入出力制御装置4−1〜4−5とを備える。以下の説明において、入出力制御装置4−1〜4−5のうちのいずれであるかを特定しない場合には、それぞれを単に「入出力制御装置4」と称すこともある。入出力制御装置4の個数は5つに限られず、2つ以上あればよい。
入出力制御装置4−1,4−2,4−3は、ハブ100を介してコントローラ1に接続されており、コントローラ1との通信が可能である。入出力制御装置4−4,4−5は、ハブ200を介して入出力制御装置4−3に接続されており、ハブ200および入出力制御装置4−3を介してコントローラ1と通信可能である。
また、入出力制御装置4−1はセンサ機器5−1,5−2と接続されている。入出力制御装置4−2はセンサ機器5−3と接続されている。入出力制御装置4−4はセンサ機器5−4,5−5と接続されている。入出力制御装置4−5はセンサ機器5−6,5−7,5−8と接続されている。以下の説明において、センサ機器5−1〜5−8のうちのいずれであるかを特定しない場合には、それぞれを単に「センサ機器5」と称すこともある。なお、センサ機器5の個数は8つに限られず、1つ以上あればよい。
図14は、実施の形態3に係るワンショットタイマ制御レジスタ14に格納されるパラメータを示す図である。実施の形態1と同様に、ワンショットタイマ制御レジスタ14は、パラメータとして、「ワンショットタイマ起動カウント値」と、「センサ接続数」と、「データ送信所要時間」と、「ワンショットタイマ割り込み所要時間」と、「階層」と、「基底ワンショットタイマ起動カウント値」とを格納する。
図15は、実施の形態3に係るコントローラシステムの処理を説明するための図である。なお、下記のワンショットタイマ起動カウント値の算出は、入出力制御装置4−1〜4−5のそれぞれの起動カウント値算出部15によって行われる。
実施の形態3では、初めに、終端の入出力制御装置4が、自装置のワンショットタイマ割り込み所要時間をセンサ接続数およびデータ送信所要時間に基づいて算出する。図15の例では、終端の入出力制御装置4は、入出力制御装置4−1,4−2,4−4,4−5である。
終端の入出力制御装置4は、自装置のワンショットタイマ割り込み所要時間を、自装置のセンサ接続数とデータ送信所要時間との積として算出する。すなわち、ワンショットタイマ割り込み所要時間は、「センサ接続数×データ送信所要時間」として算出される。よって、入出力制御装置4−1のワンショットタイマ割り込み所要時間は、「200(=2×100)」である。入出力制御装置4−2のワンショットタイマ割り込み所要時間は、「100(=1×100)」である。入出力制御装置4−4のワンショットタイマ割り込み所要時間は、「200(=2×100)」である。入出力制御装置4−5のワンショットタイマ割り込み所要時間は、「300(=3×100)」である。
終端の入出力制御装置4は、自装置の識別情報およびワンショットタイマ割り込み所要時間を含む返送データ420を、コントローラ1またはコントローラ1側に接続されている他装置へ送信する。
次に、返送データ420を受信した入出力制御装置4は、自装置のワンショットタイマ割り込み所要時間を、センサ接続数とデータ送信所要時間と返送データ420のワンショットタイマ割り込み所要時間に基づいて算出する。具体的には、返送データ420を受信した入出力制御装置4のワンショットタイマ割り込み所要時間は、センサ接続数と自装置に接続されている入出力制御装置4の数との合計にデータ送信所要時間を乗じた値に、受信した返送データ420のワンショットタイマ割り込み所要時間の合計との和として算出される。すなわち、ワンショットタイマ割り込み所要時間は、「(センサ接続数+自装置に接続されている入出力制御装置4の数)×データ送信所要時間+返送データ420のワンショットタイマ割り込み所要時間の合計」として算出される。
図15の例では、返送データ420を受け取る入出力制御装置4は入出力制御装置4−3のみである。入出力制御装置4−3は、自装置のワンショットタイマ割り込み所要時間を、(センサ接続数+接続されている入出力制御装置4の数)×データ送信所要時間+入出力制御装置4−4のワンショットタイマ割り込み所要時間+入出力制御装置4−5のワンショットタイマ割り込み所要時間として算出する。よって、入出力制御装置4−3のワンショットタイマ割り込み所要時間は、「700(=((0+2)×100)+200+300)」となる。
入出力制御装置4−3は、自装置の識別情報およびワンショットタイマ割り込み所要時間を含む返送データ420を、コントローラ1へ送信する。
コントローラ1は、ワンショットタイマ制御レジスタ14のパラメータを規定するためのデータである初期化時登録データ310を、入出力制御装置4に送信する。実施の形態3の初期化時登録データ310は、入出力制御装置4−1〜4−5の識別情報、センサ接続数、データ送信所要時間、ワンショットタイマ割り込み所要時間および階層の情報を含んでいる。
図15の例では、初期化時登録データ310の入出力制御装置4−1の識別情報は「41」、入出力制御装置4−2の識別情報は「42」、入出力制御装置4−3の識別情報は「43」、入出力制御装置4−4の識別情報は「44」、入出力制御装置4−5の識別情報は「45」である。入出力制御装置4−1のセンサ接続数は「2」、入出力制御装置4−2のセンサ接続数は「1」、入出力制御装置4−3のセンサ接続数は「0」、入出力制御装置4−4のセンサ接続数は「2」、入出力制御装置4−5のセンサ接続数は「3」である。入出力制御装置4−1のデータ送信所要時間は「100」、入出力制御装置4−2のデータ送信所要時間は「100」、入出力制御装置4−3のデータ送信所要時間は「100」、入出力制御装置4−4のデータ送信所要時間は「100」、入出力制御装置4−5のデータ送信所要時間は「100」である。入出力制御装置4−1のワンショットタイマ割り込み所要時間は「200」、入出力制御装置4−2のワンショットタイマ割り込み所要時間は「100」、入出力制御装置4−3のワンショットタイマ割り込み所要時間は「700」、入出力制御装置4−4のワンショットタイマ割り込み所要時間は「200」、入出力制御装置4−5のワンショットタイマ割り込み所要時間は「300」である。入出力制御装置4−1の階層は「1」、入出力制御装置4−2の階層は「1」、入出力制御装置4−3の階層は「1」、入出力制御装置4−4の階層は「2」、入出力制御装置4−5の階層は「2」である。
次に、入出力制御装置4は、他装置のワンショットタイマ割り込み所要時間に基づいて、自装置のワンショットタイマ起動時間を算出する。実施の形態3では、ワンショットタイマ起動カウント値の算出を、階層が「1」である入出力制御装置4から行う。また、階層が「1」の入出力制御装置4の基底ワンショットタイマ起動カウント値は「0」となる。
階層が「1」である入出力制御装置4は、入出力制御装置4のデータ送信所要時間のうちの最小時間と、自装置よりも小さい値の識別情報を持つ階層が「1」の全ての入出力制御装置4のワンショットタイマ割り込み所要時間の合計との和を、ワンショットタイマ起動時間として算出する。すなわち、ワンショットタイマ起動時間は、「データ送信所要時間のうちの最小時間+自装置よりも小さい値の識別情報を持つ階層が「1」の全ての入出力制御装置4のワンショットタイマ割り込み所要時間の合計」として算出される。さらに、入出力制御装置4は、算出されたワンショットタイマ起動時間を、タイマ生成用周波数に基づいてワンショットタイマ起動カウント値に換算し、ワンショットタイマ制御レジスタ14に格納する。
ここでも、ワンショットタイマ起動時間はミリ秒で定義されており、タイマ生成用周波数が1MHzであると仮定する。この場合、タイマは1マイクロ秒ごとにカウントアップされるため、入出力制御装置4−1のワンショットタイマ起動カウント値は、「100000(=(100+0)×1000)」となる。同様に、入出力制御装置4−2のワンショットタイマ起動カウント値は、「300000((=100+200)×1000)」となる。出力制御装置4−3のワンショットタイマ起動カウント値は、「400000((=100+200+100)×1000)」となる。
次に、階層が「2」の入出力制御装置4が、自装置のワンショットタイマ起動カウント値を算出する。階層が「2」である入出力制御装置4のワンショットタイマ起動カウント値は、識別情報と基底ワンショットタイマ起動カウント値と他装置のワンショットタイマ割り込み所要時間に基づいて算出される。
基底ワンショットタイマ起動カウント値は、実施の形態2と同様に、「コントローラ1側に接続されている入出力制御装置4のワンショットタイマ起動カウント値+センサ接続数×データ送信所要時間」として算出される。図15の例では、階層が「2」の入出力制御装置4−4,4−5の基底ワンショットタイマ起動カウント値は、「400000(=(400+0×100)×1000)」となる。
階層が「2」である入出力制御装置4のワンショットタイマ起動カウント値は、識別情報と基底ワンショットタイマ起動カウント値と他装置のワンショットタイマ割り込み所要時間に基づいて算出される。具体的には、階層が「2」である入出力制御装置4は、基底ワンショットタイマ起動カウント値と、自装置に接続され自装置よりも小さい識別情報を持つ階層が「2」の全ての入出力制御装置4のワンショットタイマ割り込み所要時間の合計との和を、ワンショットタイマ起動時間として算出する。すなわち、ワンショットタイマ起動時間は、「基底ワンショットタイマ起動カウント値+自装置に接続され自装置よりも小さい識別情報を持つ階層が「2」の全ての入出力制御装置4のワンショットタイマ割り込み所要時間の合計」として算出される。また、入出力制御装置4は、算出されたワンショットタイマ起動時間を、タイマ生成用周波数を基準にしたカウント値に変換して、ワンショットタイマ制御レジスタ14に格納する。
図15の例では、入出力制御装置4−4のワンショットタイマ起動カウント値は、「400000(=(400+0)×1000)」となる。また、入出力制御装置4−5のワンショットタイマ起動カウント値は、「600000(=(400+200)×1000)」となる。
その結果、入出力制御装置4のワンショットタイマ制御レジスタ14には、図16に示すデータが格納されることとなる。
図17は、実施の形態3に係るコントローラシステムにおいて、入出力制御装置4が、ワンショットタイマ割り込みによって、コントローラ1へセンサデータを送信するタイミングを示すタイミングチャートである。
さて、図15で説明したように、コントローラ1からの初期化時登録データ310が、入出力制御装置4に送信されることによって、入出力制御装置4のワンショットタイマ制御レジスタ14にワンショットタイマ起動カウント値が設定される。
入出力制御装置4は、自装置のワンショットタイマ起動カウント値が設定されると、ワンショットタイマカウンタ12を起動させる。そして、ワンショットタイマカウントが自装置のワンショットタイマ起動カウント値と等しくなると、入出力制御装置4は、自装置に接続されたセンサ機器5のセンサデータを順に、ハブ100,200あるいはコントローラ1側に接続された他装置を介してコントローラ1へ送信する。
入出力制御装置4−1は、自装置のワンショットタイマ起動カウント値が設定された後、ワンショットタイマカウントが「100000」と等しくなると、センサ機器5−1,5−2のセンサデータを順に、ハブ100を介してコントローラ1に送信する。また、入出力制御装置4−2は、自装置のワンショットタイマ起動カウント値が設定された後、ワンショットタイマカウントが「300000」と等しくなると、センサ機器5−3のセンサデータをコントローラ1に送信する。入出力制御装置4−4は、自装置のワンショットタイマ起動カウント値が設定された後、ワンショットタイマカウントが「400000」と等しくなると、センサ機器5−4,5−5のセンサデータを順にコントローラ1に送信する。入出力制御装置4−5は、自装置のワンショットタイマ起動カウント値が設定された後、ワンショットタイマカウントが「600000」と等しくなると、センサ機器5−6,5−7,5−8のセンサデータをコントローラ1に送信する。
なお、入出力制御装置4−3は、自装置のワンショットタイマ起動カウント値が設定された後、ワンショットタイマカウントが「400000」と等しくなると、センサデータをコントローラ1に送信することができるが、入出力制御装置4−3に接続されたセンサ機器5は存在しないため、入出力制御装置4−3はコントローラ1へ何も送信しない。
実施の形態3に係るコントローラシステムによれば、複数の入出力制御装置4のそれぞれの起動カウント値算出部15が、自装置の識別情報と階層と他装置の識別情報と階層とワンショットタイマ割り込み所要時間とセンサ接続数に基づいて、ワンショットタイマ起動カウント値を算出する。このような構成によれば、コントローラ1内にタイマを設けて、コントローラ1が、タイムイベントキューの管理、つまり割り込み発生のための時間の管理を行わなくても、コントローラ1は、時分割でデータを取得することが可能となる。このため、コントローラ1の負荷を抑制することができる。また、コントローラシステムの応答性の向上化も期待できる。
<実施の形態4>
図18は、本発明の実施の形態4に係る入出力制御装置4の構成を示すブロック図である。図18のワンショットタイマ部8は、実施の形態1のワンショットタイマ部8の構成(図2)に、ワンショットタイマ起動間隔異常管理部16と、規定起動間隔算出部17とを追加した構成となっている。なお、実施の形態4のコントローラシステムの全体構成は、実施の形態1(図1)と同様であるものとする。
ワンショットタイマ起動間隔異常管理部16は、ワンショットタイマカウンタ12が前回起動された時刻とその次に起動される時刻との間隔、つまりワンショットタイマカウンタ12の起動間隔を検出し、その間隔が規定値(以下「規定起動間隔」という)以上である場合に異常(以下「ワンショットタイマ起動間隔異常」と称す)が生じたと判断し、その異常の発生をコントローラ1へ通知する。
規定起動間隔算出部17は、複数の入出力制御装置4に接続された全てのセンサ機器5のうち、ワンショットタイマカウンタ12を起動させる対象となっているセンサ機器5の合計数に基づいて、「規定起動間隔カウント値」を算出する。この「規定起動間隔カウント値」は、上記の規定起動間隔を、タイマ生成用周波数を基準にしたカウント値に換算した値である。規定起動間隔算出部17が算出した規定起動間隔カウント値は、ワンショットタイマ制御レジスタ14に格納される。なお、規定起動間隔算出部17は、複数の入出力制御装置4のそれぞれに設けられる必要はなく、複数の入出力制御装置4の少なくともいずれか1つに備えられればよい。
図19は、実施の形態4に係るワンショットタイマ制御レジスタ14に格納されるパラメータを示す図である。実施の形態4のワンショットタイマ制御レジスタ14には、図3に示したパラメータに加えて、「規定起動間隔カウント値」と「総センサ接続数」とが格納される。
上記したように、規定起動間隔カウント値は、ワンショットタイマカウンタ12の起動の間隔が異常か否かを判定基準となる間隔(規定起動間隔)を表すカウント値である。総センサ接続数は、入出力制御装置4に接続された全てのセンサ機器5のうち、ワンショットタイマカウンタ12を起動させる対象となっているセンサ機器5の合計数である。つまり、総センサ接続数は、コントローラシステムに接続されている全てのセンサ機器5のうち、ワンショットタイマカウンタ12を起動させる対象となっているセンサ機器5の合計数である。本実施の形態では、入出力制御装置4−1〜4−3に接続されたセンサ機器5−1〜5−6の全てがワンショットタイマカウンタ12を起動させる対象となっているものとする。
図20は、実施の形態4に係るコントローラシステムの処理を説明するための図である。コントローラ1は、実施の形態1と同様に、初期化時登録データ310を入出力制御装置4に送信する。ただし、実施の形態4における初期化時登録データ310は、実施の形態1の初期化時登録データ310の内容(図3)に加えて、「基本起動間隔カウント値」の情報をさらに含んでいる。ここでは、基本起動間隔カウント値が「2000000」として設定されている。
規定起動間隔算出部17は、総センサ接続数に基づいて、規定起動間隔カウント値を算出する。具体的には、規定起動間隔算出部17は、基本起動間隔カウント値と総センサ接続数との積を、規定起動間隔カウント値として算出する。すなわち、規定起動間隔カウント値は、「基本起動間隔カウント値×総センサ接続数」として算出される。図20の例では、総センサ接続数は、全ての入出力制御装置4のセンサ接続数の合計である「6」となる。よって、規定起動間隔カウント値は、「12000000(=2000000×6)」となる。
上記したように、規定起動間隔算出部17は、複数の入出力制御装置4の少なくともいずれか1つに備えられればよい。実施の形態4では、入出力制御装置4−1,4−2,4−3がいずれも規定起動間隔算出部17を有しているが、そのうち識別情報の値が最も大きい入出力制御装置4−3の規定起動間隔算出部17のみが規定起動間隔カウント値を算出するものとする。
この場合、入出力制御装置4−3のワンショットタイマ制御レジスタ14に、規定起動間隔算出部17が算出した規定起動間隔カウント値が格納される。また、入出力制御装置4−3は、総センサ接続数および規定起動間隔カウント値を含む初期化時返送データ410を、コントローラ1および他の入出力制御装置4−1,4−2へ送信する。入出力制御装置4−1,4−2それぞれのワンショットタイマ制御レジスタ14は、入出力制御装置4−3から受信した初期化時返送データ410の規定起動間隔カウント値を格納する。
その結果、入出力制御装置4のワンショットタイマ制御レジスタ14には、図21に示すデータが格納されることとなる。
その後、入出力制御装置4のワンショットタイマ起動間隔異常管理部16は、ワンショットタイマカウントが規定起動間隔カウント値以上になると、コントローラ1にワンショットタイマ起動間隔異常を通知する。
図22は、実施の形態4に係る入出力制御装置4における、総センサ接続数および規定起動間隔カウント値の算出処理を示すフローチャートである。
入出力制御装置4が初期化時登録データ310を受信すると、入出力制御装置4は、自装置の識別情報の値が最も大きいか否か(他装置のいずれの識別情報よりも大きいか否か)を判定する(ステップST11)。
自装置の識別情報が最も大きければ、規定起動間隔算出部17が、基本起動間隔カウント値と総センサ接続数との乗算を行い、その結果が規定起動間隔カウント値として自装置のワンショットタイマ制御レジスタ14に格納される(ステップST12)。そして、入出力制御装置4は、総センサ接続数および規定起動間隔カウント値を含む初期化時返送データ410を他装置およびコントローラ1へ送信し(ステップST13)、図22の処理が終了する。
なお、ステップST11で、自装置の識別情報が最も大きくなかった場合には、規定起動間隔算出部17が起動することなく、図22の処理が終了する。
実施の形態4に係るコントローラシステムによれば、コントローラシステムの総センサ接続数に基づいて、規定起動間隔カウント値が算出される。このような構成によれば、総センサ接続数の増減が生じた場合であっても、規定起動間隔カウント値を適切に変更することができる。これにより、ワンショットタイマ起動間隔異常を適切に検出することができる。
<実施の形態5>
実施の形態4では、ワンショットタイマカウンタ12が1回の起動するごとの間隔に基づいて、ワンショットタイマ起動間隔異常を検出したが、実施の形態5では、ワンショットタイマカウンタ12が一定回数起動するごとの間隔、すなわち、起動回数が一定回数に達する間隔に基づいてワンショットタイマ起動間隔異常が検出する。
実施の形態5に係る入出力制御装置4の構成は、実施の形態4の入出力制御装置4の構成(図18)と同様である。また、実施の形態5のコントローラシステムの全体構成も、実施の形態1(図1)と同様であるものとする。
実施の形態5に係るワンショットタイマ起動間隔異常管理部16は、ワンショットタイマカウンタ12の起動回数が一定回数に達する間隔が規定起動間隔以上であるか否かを判断し、その間隔が規定起動間隔カウント値以上である場合に、ワンショットタイマカウンタ起動間隔異常をコントローラ1に通知する。
また、規定起動間隔算出部17は、上記の「一定回数」の値と、基本起動間隔カウント値と、ワンショットタイマカウンタ12を起動させる対象となっているセンサ機器5の合計数(総センサ接続数)とに基づいて、規定起動間隔カウント値を算出する。
図23は、実施の形態5に係るワンショットタイマ制御レジスタ14に格納されるパラメータを示す図である。実施の形態5のワンショットタイマ制御レジスタ14には、図19に示したパラメータに加えて、「起動間隔数」を格納している。「起動間隔数」は、上記の「一定回数」の値である。
図24は、実施の形態5に係るコントローラシステムの処理を説明するための図である。コントローラ1は、実施の形態4と同様に、初期化時登録データ310を全ての入出力制御装置4に送信する。ただし、実施の形態5の初期化時登録データ310は、実施の形態4の初期化時登録データ310の内容(図19)に加えて、起動間隔数の情報をさらに含んでいる。なお、図24の例では、初期化時登録データ310の起動間隔数は「2」に設定されている。
実施の形態5でも、識別情報の値が最も大きい入出力制御装置4−3の規定起動間隔算出部17のみが規定起動間隔カウント値を算出するものとする。入出力制御装置4−3の規定起動間隔算出部17は、基本起動間隔カウント値と総センサ接続数と起動間隔数との積を、規定起動間隔カウント値を算出する。すなわち、規定起動間隔カウント値は、「基本起動間隔カウント値×総センサ接続数×起動間隔数」として算出される。図24の例では、規定起動間隔カウント値は「24000000(=2000000×6×2)」となる。
入出力制御装置4−3のワンショットタイマ制御レジスタ14には、規定起動間隔算出部17が算出した規定起動間隔カウント値が格納される。また、入出力制御装置4−3は、総センサ接続数および規定起動間隔カウント値を含む初期化時返送データ410を、コントローラ1および他の入出力制御装置4−1,4−2へ送信する。入出力制御装置4−1,4−2それぞれのワンショットタイマ制御レジスタ14は、入出力制御装置4−3から受信した初期化時返送データ410の規定起動間隔カウント値を格納する。
その結果、入出力制御装置4のワンショットタイマ制御レジスタ14には、図25に示すデータが格納されることとなる。
図26は、実施の形態4のワンショットタイマ起動間隔異常管理部がワンショットタイマ起動間隔異常を検出する間隔と、実施の形態5のワンショットタイマ起動間隔異常管理部16がワンショットタイマ起動間隔異常を検出する間隔とを比較するタイミングチャートである。図26では、入出力制御装置4−1の例を示しているが、入出力制御装置4−2,4−3についても同様である。
図26の起動間隔数がないときの監視区間は、正確には起動間隔数が1であるときの監視区間を意味し、実施の形態4におけるワンショットタイマ起動間隔異常の検出間隔に対応する。実施の形態4におけるワンショットタイマ起動間隔異常の検出間隔は、ワンショットタイマカウンタ12の1回分の起動の間隔に対応している。
一方、起動間隔数が2のときの監視区間は、実施の形態5におけるワンショットタイマ起動間隔異常の検出間隔に対応する。実施の形態5におけるワンショットタイマ起動間隔異常の検出間隔は、ワンショットタイマカウンタ12の2回分の起動の間隔、つまり起動間隔数に相当する回数だけ起動する間隔に対応している。
図27は、実施の形態5に係る入出力制御装置4における、ワンショットタイマ起動間隔異常の検出処理を示すフローチャートである。以下、タイマ生成部11が発生したトリガがワンショットタイマカウンタ12に受信されて、割り込みハンドラがすでに起動されていることを前提にして説明する。
入出力制御装置4において、ワンショットタイマ起動間隔異常管理部16が、タイマ生成部11が生成したトリガを受信すると、起動間隔タイマカウンタ(不図示)が「起動間隔タイマカウント」をインクリメントする(ステップST21)。次に、ワンショットタイマ起動間隔異常管理部16は、起動間隔タイマカウントが規定起動間隔カウント値と一致するか否かを判定する(ステップST22)。
起動間隔タイマカウントが規定起動間隔カウント値と一致した場合、ワンショットタイマ起動間隔異常管理部16は、割り込み発生部13に割り込みを発生させ、コントローラ1へワンショットタイマ起動間隔異常を通知する(ステップST23)。その後、図17の処理は終了する。
起動間隔タイマカウントが規定起動間隔カウント値と一致しない場合、ワンショットタイマ起動間隔異常管理部16は、コントローラ1から、ワンショットタイマカウンタ12の起動要求、例えば初期化時登録データ310などを取得したか否かを判定する(ステップST24)。
起動要求を取得した場合には、ワンショットタイマ起動間隔異常管理部16は、起動カウントをインクリメントして(ステップST25)、起動カウントが起動間隔数と一致するか否かを判定する(ステップST26)。起動要求を取得していない場合には、ワンショットタイマ起動間隔異常管理部16は、起動カウントをインクリメントせずに、起動カウントが起動間隔数と一致するか否かを判定する(ステップST26)。
起動カウントが起動間隔数と一致すれば、ワンショットタイマ起動間隔異常管理部16は、起動カウントおよび起動間隔タイマカウントをリセットして0にし、その後、図17の処理は終了する。起動カウントが起動間隔数と一致しなければ、起動カウントおよび起動間隔タイマカウントがリセットされることなく、図17の処理が終了する。
実施の形態5に係るコントローラシステムによれば、総センサ接続数と起動間隔数と基本起動間隔カウント値に基づいて、規定起動間隔カウント値が算出され、実施の形態4と同様の効果を得ることができる。また、起動間隔数のワンショットタイマカウンタ12の起動が、規定起動間隔内に行われなかった場合に、ワンショットタイマ起動間隔異常を検出することができる。
<実施の形態6>
実施の形態6に係る入出力制御装置4の構成は、実施の形態4の入出力制御装置4の構成(図18)と同様である。また、実施の形態5のコントローラシステムの全体構成も、実施の形態1(図1)と同様であるものとする。
実施の形態6に係るワンショットタイマ起動間隔異常管理部16は、2つの動作モードを有している。第1モードは、ワンショットタイマ起動間隔異常管理部16が、ワンショットタイマカウンタ12の1回の起動を監視区間の起点(ワンショットタイマカウンタ12の起動間隔の起点)としてワンショットタイマ起動間隔異常の検出を行う動作モードである。第2モードは、ワンショットタイマ起動間隔異常管理部16が、ワンショットタイマカウンタ12が起動間隔数に相当する回数だけ起動したときを監視区間の起点としてワンショットタイマ起動間隔異常の検出を行う動作モードである。ワンショットタイマ起動間隔異常管理部16は、第1モードと第2モードとを選択的に実施する。以下、第1モードを「重ねモード」と称し、第2モードを「通常モード」と称す。
図28は、実施の形態6に係るワンショットタイマ制御レジスタ14に格納されるパラメータを示す図である。実施の形態6に係るワンショットタイマ制御レジスタ14は、図23のパラメータに加えて、「動作モード」を格納している。動作モードは、ワンショットタイマカウンタ12の起動間隔の監視の制御方式が、通常モードおよび重ねモードのいずれであるかを示す。ここでは、動作モードの値が「0」であれば制御方式が通常モードであることを表し、動作モードが「1」であれば制御方式が重ねモードであることを表すものとする。
図29は、実施の形態6に係るコントローラシステムの処理を説明するための図である。コントローラ1は、実施の形態5と同様に、初期化時登録データ310を入出力制御装置4−1,4−2,4−3に送信する。ただし、実施の形態6の初期化時登録データ310は、実施の形態5の初期化時登録データ310の内容(図23)に加えて、動作モードの情報をさらに含んでいる。
図29の例では、初期化時登録データ310における動作モードは重ねモードである。この場合、初期化時登録データ310を受信した入出力制御装置4−1,4−2,4−3のワンショットタイマ起動間隔異常管理部16は重ねモードで動作するようになる。
また、初期化時登録データ310における動作モードの内容は、ワンショットタイマ制御レジスタ14に格納される。その結果、入出力制御装置4のワンショットタイマ制御レジスタ14には、図30に示すデータが格納されることとなる。
図31は、実施の形態4に係るコントローラシステムにおける、ワンショットタイマ起動間隔異常を検出する間隔を示すタイミングチャートである。なお、図31では、入出力制御装置4−1について示しているが、入出力制御装置4−2,4−3についても同様である。また、ここでも起動間隔数は「2」に設定されている。
図31に示される「通常モード、且つ、起動間隔数が2のときの監視区間」は、ワンショットタイマカウンタ12の2回分の起動の間隔に対応している。通常モード時には、起動間隔数に相当する間隔の起動ごとに、ワンショットタイマカウンタ12の起動間隔の監視が開始され、ワンショットタイマ起動間隔異常の検出が行われる。
一方、図31に示される「重ねモード、且つ、起動間隔数が2のときの監視区間」は、ワンショットタイマカウンタ12の1回の起動の間隔に対応している。重ねモード時では、ワンショットタイマカウンタ12の1回ごとの起動を起点として、ワンショットタイマカウンタ12の起動間隔の監視が開始され、ワンショットタイマ起動間隔異常の検出が行われる。ワンショットタイマカウンタ12の起動間隔を監視する期間の長さは起動間隔数に相当するため、ワンショットタイマカウンタ12の起動間隔を監視する期間同士が部分的に重なるようになる。
また、入出力制御装置4のワンショットタイマ起動間隔異常管理部16は、重ねモードでワンショットタイマカウンタ12の起動間隔を管理するための情報を記録する「重ねモード起動間隔管理テーブル」を格納する。図32は、重ねモード起動間隔管理テーブルの例を示す図である。
重ねモード起動間隔管理テーブルは、起動間隔数と同じ数のレコードを持つ。「タイマ番号」は、レコードのIDを示す番号であり、0,1,2,…の順に数字が付与される。起動間隔タイマカウントは、ワンショットタイマカウンタ12の起動間隔を監視するためにカウントアップされる。「リセットトリガ」は、何回目の起動要求がきたときに起動間隔タイマカウントをリセットするかを決めるためのデータであり、処理が進むと変更される変数である。規定起動間隔カウント値は上記したとおりである。「起動要求数」は、入出力制御装置4に設けられた起動間隔タイマカウンタ(不図示)が現時点までに起動された回数であり、処理が進むと変更される変数である。
図33は、実施の形態4に係る入出力制御装置4において、重ねモードを適用したときの起動間隔異常の検出処理を示すフローチャートである。なお、タイマ生成部11のトリガが受信されて、割り込みハンドラがすでに起動されていることを前提にして、以下説明する。
図33に示すステップST31〜ST38のフローは、起動間隔数と同じ数、もしくはタイマ番号の個数と同じ数だけ繰り返し実行される。また、ステップST31で比較されるタイマ番号(n)は、ステップST31〜ST38のフローが繰り返されるごとに、0,1,2,…と順に大きくなるように変更される。
入出力制御装置4において、ワンショットタイマ起動間隔異常管理部16がタイマ生成部11の生成したトリガを受信すると、入出力制御装置4は起動要求数がタイマ番号よりも大きいか否かを判定する(ステップST31)。
起動要求数がタイマ番号以下であれば、以下のステップST32〜TS38の処理はスキップされ、実質的に図33の処理は終了する。これにより、起動要求を受けた場合にのみ、各タイマは異常検出をすることになる。起動要求数がタイマ番号よりも大きければ、入出力制御装置4の起動間隔タイマカウンタ(不図示)が起動間隔タイマカウントをインクリメントする(ステップST32)。
続いて、ワンショットタイマ起動間隔異常管理部16は、起動間隔タイマカウントが規定起動間隔カウント値と一致するか否かを判定する(ステップST33)。起動間隔タイマカウントが規定起動間隔カウント値と一致すれば、ワンショットタイマ起動間隔異常管理部16は、割り込み発生部13に割り込みを発生させ、コントローラ1へワンショットタイマ起動間隔異常を通知する(ステップST34)。
一方、起動間隔タイマカウントが規定起動間隔カウント値と一致しない場合には、ワンショットタイマ起動間隔異常管理部16は、コントローラ1から、ワンショットタイマカウンタ12の起動要求、例えば「初期化時登録データ」31などを取得したか否かを判定する(ステップST35)。
ステップST35において、ワンショットタイマカウンタ12の起動要求を取得したと判断された場合、ワンショットタイマ起動間隔異常管理部16が起動要求数をインクリメントし(ステップST36)、起動要求数がリセットトリガの値と一致するか否かを判定する(ステップST37)。一方、ワンショットタイマカウンタ12の起動要求を取得していないと判定された場合には、ワンショットタイマ起動間隔異常管理部16が、起動要求数をインクリメントせずに、起動要求数がリセットトリガの値と一致するか否かを判定する(ステップST37)。
ステップST37において、起動要求数がリセットトリガの値と一致した場合、起動間隔タイマカウントをリセットして0にするとともに、リセットトリガの値を起動要求数だけ増やす(ステップST38)。
以上の処理が行われた後、ステップST31〜ST38のフローを繰り返した回数が確認され、その回数が起動間隔数に達していなければステップST31に戻り、達していれば図23の処理が終了する。
実施の形態6に係るコントローラシステムによれば、ワンショットタイマカウンタ12の1回の起動ごとにワンショットタイマ起動間隔異常の検出を行うことが可能な重ねモードと、起動間隔数に相当する回数のワンショットタイマカウンタ12の起動ごとにワンショットタイマ起動間隔異常の検出を行うことが可能な通常モードとが、選択的に実施される。通常モードは、重ねモードよりもワンショットタイマ起動間隔異常の検出能力が下がるが、消費電力の低減に寄与できる。必要に応じて通常モードと重ねモードとを切り替えることで、入出力制御装置4の消費電力の低減を図ることができる。
<実施の形態7>
図34は、本発明の実施の形態7に係る入出力制御装置4の構成を示すブロック図である。以下、実施の形態7で説明する構成要素のうち、実施の形態6と同じまたは類似する構成要素については同じ参照符号を付し、異なる構成要素について主に説明する。なお、実施の形態7のコントローラシステムの全体構成は、実施の形態1(図1)と同様であるものとする。
図34のワンショットタイマ部8は、実施の形態4のワンショットタイマ部8(図18)の構成に、ワンショットタイマ禁止制御部18を追加したものとなっている。
ワンショットタイマ禁止制御部18は、ワンショットタイマカウンタ12の動作の許可および禁止(開始および停止)を制御する。具体的には、ワンショットタイマ禁止制御部18は、ワンショットタイマカウンタ12が行うワンショットタイマカウントのインクリメントの許可および禁止を制御する。なお、ワンショットタイマカウンタ12がワンショットタイマカウントデクリメントを行う構成では、ワンショットタイマ禁止制御部18は、そのデクリメントの許可および禁止を制御する。
また、実施の形態7の入出力制御装置4は、自装置に接続されたセンサ機器5の全てが、ワンショットタイマカウンタ12を起動させる対象となっていない場合に、ワンショットタイマ起動間隔異常の検出を禁止する。
図35は、実施の形態7に係るワンショットタイマ制御レジスタ14に格納されるパラメータを示す図である。実施の形態7に係るワンショットタイマ制御レジスタ14は、図28のパラメータに加えて、「タイマイネーブル」を格納する。タイマイネーブルは、入出力制御装置4ごとのワンショットタイマカウンタ12のインクリメントの許可および禁止を示す。ここでは、タイマイネーブルの値が「0」であれば、ワンショットタイマカウンタ12の起動およびインクリメントが禁止されていることを示し、タイマイネーブルの値が「1」であれば、ワンショットタイマカウンタ12の起動およびインクリメントが許可されていることを示す。
図36は、実施の形態7に係るコントローラシステムの処理を説明するための図である。コントローラ1は、実施の形態6と同様に、初期化時登録データ310を全ての入出力制御装置4に送信する。ただし、実施の形態7の初期化時登録データ310には、実施の形態6の初期化時登録データ310の内容(図29)に加えて、タイマイネーブルのデータを含んでいる。図36の例では、初期化時登録データ310のタイマイネーブルの値には、入出力制御装置4−1のワンショットタイマカウンタ12の起動を許可する「1」と、入出力制御装置4−2のワンショットタイマカウンタ12の起動を禁止する「0」と、入出力制御装置4−3のワンショットタイマカウンタ12の起動を許可する「1」とを含んでいる。
入出力制御装置4は、他装置のデータ送信所要時間とセンサ接続数とタイマイネーブルの値に基づいて、自装置のワンショットタイマ起動カウント値を算出する。実施の形態7では、入出力制御装置4は、「(データ送信所要時間のうちの最小時間+(自装置よりも小さい識別情報を持つ全ての他装置のセンサ接続数の合計×データ送信所要時間×タイマイネーブル))×自装置のタイマイネーブル」によって得られる値を、ワンショットタイマ起動時間として算出する。また、入出力制御装置4は、算出されたワンショットタイマ起動時間を、タイマ生成用周波数を基準にしたワンショットタイマ起動カウント値に換算して、ワンショットタイマ制御レジスタ14に格納する。
ここでも、ワンショットタイマ起動時間はミリ秒で定義されており、タイマ生成用周波数が1MHzであると仮定する。この場合、タイマは1マイクロ秒ごとにカウントアップされるため、入出力制御装置4−1のワンショットタイマ起動カウント値は、「100000(=((100+0)×1×1000)」となる。同様に、入出力制御装置4−2のワンショットタイマ起動カウント値は、「100000(=(100+(100×2×1)×0)×1000)」となる。また、入出力制御装置4−3のワンショットタイマ起動カウント値は、「300000(=((100+(100×2×1)+(100×1×0))×1)×1000)」となる。
また、実施の形態4と同様に、入出力制御装置4のうち最も大きい値の識別情報を持つ入出力制御装置4−3は、タイマイネーブルの値が「1」である入出力制御装置4と接続されているセンサ接続数の合計を、初期化時返送データ410として送信する。
その結果、入出力制御装置4のワンショットタイマ制御レジスタ14には、図37に示すデータが格納されることとなる。
図38は、実施の形態7に係るコントローラシステムにおいて、入出力制御装置4が、ワンショットタイマ割り込みによって、コントローラ1へデータを送信するタイミングを示すタイミングチャートである。なお、図38のうち、図17に記載されていない「INI」は、図36の初期化時返送データ410に対応する。
入出力制御装置4−2のタイマイネーブルの値は「0」であるため、入出力制御装置4−2は、自装置に接続されているセンサ機器5−3に対してワンショットタイマカウンタ12の起動を許可しない。このため、センサ機器5−3のセンサデータは、コントローラ1に送信されない。
図39は、実施の形態7に係る入出力制御装置4における、ワンショットタイマ割り込みの発生処理を示すフローチャートである。本フローチャートの処理は、タイマ生成部11でトリガが生成された場合、換言すれば、ワンショットタイマカウンタ12がトリガを受信したときに実行される。なお、図39のフローは、図7のフローにおいて、ステップST41を追加し、ステップST5をステップST42に置き換えたものである。このため、図39の処理のうちステップST41およびST42以外の処理については適宜説明を省略する。
ワンショットタイマカウンタ12がトリガを受信すると、まず、ワンショットタイマ禁止制御部18が、タイマイネーブルの値が「1」であるか否か、つまりワンショットタイマカウンタ12の起動およびインクリメントが許可されているか否かを判定する(ステップST41)。タイマイネーブルの値が「1」であると判定された場合にはステップST1に進み、タイマイネーブルの値が「0」であると判定された場合には図39の処理は終了する。
ステップST1からステップST2,ST3を経てステップST4へ進み、ワンショットタイマカウントがワンショットタイマ起動時間と等しいと判定された場合には、ステップST42に進む。
ステップST42では、割り込み発生部13が、ワンショットタイマ割り込みをオン状態にして、ワンショットタイマ割り込みを発生させる。また、入出力制御装置4は、ワンショットタイマカウンタ12を停止させるとともに、ワンショットタイマカウントをリセットして0にする。その後、図39の処理が終了する。
図40は、実施の形態7に係る入出力制御装置4における、ワンショットタイマ起動間隔異常の検出処理を示すフローチャートである。なお、図40のフローは、重ねモードを用いる実施の形態6の図33のフローに対し、ステップST51を追加したものである。このため、図40の処理のうちステップST51以外の処理については適宜説明を省略する。
入出力制御装置4において、ワンショットタイマ起動間隔異常管理部16がタイマ生成部11の生成したトリガを受信すると、まず、入出力制御装置4が、タイマイネーブルの値が「1」であるか否か、つまりワンショットタイマカウンタ12の起動およびインクリメントが許可されているか否かを判定する(ステップST51)。タイマイネーブルの値が「1」である場合には、タイマ生成部11のトリガが受信されて、割り込みハンドラが起動された後に、処理がステップST31に進む。その後、実施の形態6で説明した図33のフローと同様の処理が行われる。一方、タイマイネーブルの値が「0」であった場合には、図40の処理が終了する。
実施の形態7に係るコントローラシステムによれば、各ワンショットタイマカウンタ12の起動および停止が制御されるため、必要な入出力制御装置4のみのワンショットタイマカウンタ12を起動することができる。不要なセンサデータの収集および送信を行わなくて済むことから、コントローラ1の負荷を抑制することができる。
また、実施の形態7に係るコントローラシステムによれば、ワンショットタイマカウンタ12を起動させる対象となっていないセンサ機器5については、ワンショットタイマ起動間隔異常の検出が禁止される。この結果、不要なワンショットタイマ起動間隔異常の検出および通知が防止され、それによってもコントローラ1の負荷を抑制することができる。
<実施の形態8>
実施の形態8に係る入出力制御装置4の構成は、実施の形態7の入出力制御装置4の構成(図34)と同様である。また、実施の形態8のコントローラシステムの全体構成は、実施の形態1(図1)と同様であるものとする。
実施の形態8に係る入出力制御装置4は、自装置に接続されたセンサ機器5が、ワンショットタイマカウンタ12を起動させる対象となっている場合に、ワンショットタイマ起動間隔異常の検出の許可および禁止を制御可能となっている。
図41は、実施の形態8に係るワンショットタイマ制御レジスタ14に格納されるパラメータを示す図である。実施の形態8に係るワンショットタイマ制御レジスタ14は、図35のパラメータに加えて、「起動間隔イネーブル」を格納する。「起動間隔イネーブル」は、ワンショットタイマ起動間隔異常の検出の許可および禁止、ひいてはコントローラ1へのワンショットタイマ起動間隔異常の通知および非通知を示す。ここでは、起動間隔イネーブルが「0」であれば、ワンショットタイマ起動間隔異常の検出が禁止されていることを示し、起動間隔イネーブルが「1」であれば、ワンショットタイマ起動間隔異常の検出が許可されていることを示すものとする。
図42は、実施の形態8に係るコントローラシステムの処理を説明するための図である。コントローラ1は、実施の形態7と同様に、初期化時登録データ310を全ての入出力制御装置4に送信する。ただし、実施の形態8に係る初期化時登録データ310は、実施の形態7の初期化時登録データ310の内容(図36)に加えて、起動間隔イネーブルを含んでいる。
図42の例では、初期化時登録データ310の起動間隔イネーブルは、入出力制御装置4−1のワンショットタイマ起動間隔異常の検出を禁止する「0」と、入出力制御装置4−2のワンショットタイマ起動間隔異常の検出を許可する「1」と、入出力制御装置4−3のワンショットタイマ起動間隔異常の検出を許可する「1」とを含んでいる。
この場合、コントローラ1からの初期化時登録データ310が、入出力制御装置4−1,4−2,4−3に送信されることによって、入出力制御装置4−1のワンショットタイマ制御レジスタ14に、起動間隔イネーブルとして「0」が設定され、入出力制御装置4−2,4−3のワンショットタイマ制御レジスタ14に、起動間隔イネーブルとして「1」が設定される。
その結果、入出力制御装置4のワンショットタイマ制御レジスタ14には、図43に示すデータが格納されることとなる。
この結果、入出力制御装置4−1は、起動間隔イネーブルによってワンショットタイマ起動間隔異常の検出が禁止される。入出力制御装置4−2は、起動間隔イネーブルによってワンショットタイマ起動間隔異常の検出が許可されるが、タイマイネーブルによってワンショットタイマカウンタ12の起動そのものが禁止されているので、ワンショットタイマ起動間隔異常の検出は行わない。入出力制御装置4−3は、起動間隔イネーブルによってワンショットタイマ起動間隔異常の検出が許可され、且つ、タイマイネーブルによってワンショットタイマカウンタ12の起動が許可されているので、ワンショットタイマ起動間隔異常の検出を行う。
図44は、実施の形態8に係る入出力制御装置4における、ワンショットタイマ起動間隔異常の検出処理を示すフローチャートである。なお、図46のフローは、重ねモードを用いる実施の形態6の図33のフローに対し、ステップST51およびステップST61を追加したものである。このため、図44の処理のうちステップST51,ST61以外の処理については適宜説明を省略する。
入出力制御装置4において、ワンショットタイマ起動間隔異常管理部16がタイマ生成部11の生成したトリガを受信すると、まず、入出力制御装置4が、タイマイネーブルの値が「1」であるか否か、つまりワンショットタイマカウンタ12の起動およびインクリメントが許可されているか否かを判定する(ステップST51)。タイマイネーブルの値が「1」であった場合には、ステップST61に進み、タイマイネーブルの値が「0」であった場合には、図44の処理が終了する。
ステップST61では、入出力制御装置4が、起動間隔イネーブルが「1」であるか否か、つまりワンショットタイマ起動間隔異常の検出が許可されているか否かを判定する。起動間隔イネーブルが「1」であった場合には、タイマ生成部11のトリガが受信されて、割り込みハンドラが起動された後に、ステップST31に進む。その後、実施の形態6で説明した図33の処理と同様の処理が行われる。一方、起動間隔イネーブルが「0」であった場合には、図44の処理が終了する。
実施の形態8に係るコントローラシステムによれば、センサ機器5がワンショットタイマカウンタ12を起動させる対象となっていても、ワンショットタイマ起動間隔異常の検出の許可および禁止を制御するので、必要な入出力制御装置4のみのワンショットタイマ起動間隔異常の検出を行うことができる。この結果、不要なワンショットタイマ起動間隔異常の検出および送信を防止できるという効果をさらに高めることができ、コントローラ1の負荷を抑制することができる。
<実施の形態9>
図45は、本発明の実施の形態9に係るコントローラシステムの全体構成を示すブロック図である。
図45のコントローラシステムは、コントローラ1と、3つの入出力制御装置4−1〜4−3とを備える。以下の説明において、入出力制御装置4−1〜4−3のうちのいずれであるかを特定しない場合には、それぞれを単に「入出力制御装置4」と称すこともある。なお、入出力制御装置4の個数は3つに限られず、複数であればよい。
入出力制御装置4−1,4−3は、それぞれ異なる通信バス6を介してコントローラ1に接続している。入出力制御装置4−2は、通信バス6を介して出力制御装置4−1に接続すると共に、別の通信バス6を介して入出力制御装置4−3にも接続している。つまり、入出力制御装置4−2は、入出力制御装置4−1を通してコントローラ1に接続するとともに、入出力制御装置4−3を通してもコントローラ1に接続する。このように、図45のコントローラシステムでは、複数の入出力制御装置4が、コントローラ1と通信可能にリング型に接続されている。
また、入出力制御装置4−1はセンサ機器5−1,5−2と接続されている。入出力制御装置4−2はセンサ機器5−3と接続されている。入出力制御装置4−3はセンサ機器5−4,5−5,5−6と接続されている。以下の説明において、センサ機器5−1〜5−6のうちのいずれであるかを特定しない場合には、それぞれを単に「センサ機器5」と称すこともある。なお、センサ機器5の個数は6つに限られず、1つ以上あればよい。
コントローラ1、入出力制御装置4、センサ機器5および通信バス6の基本的な構成は、実施の形態1〜8で説明したものと同様でよい。
図46は、実施の形態9に係るワンショットタイマ制御レジスタ14に格納されるパラメータを示す図である。実施の形態1と同様に、ワンショットタイマ制御レジスタ14は、パラメータとして、「ワンショットタイマ起動カウント値」と、「センサ接続数」と、「データ送信所要時間」と、「ワンショットタイマ割り込み所要時間」と、「階層」と、「基底ワンショットタイマ起動カウント値」とを格納している。
実施の形態9では、コントローラ1からデータを受信する入出力制御装置4−1の階層を「1」、入出力制御装置4−1からデータを受信する入出力制御装置4−2の階層を「2」、入出力制御装置4−2からデータを受信する入出力制御装置4−3の階層を「3」と定義する。
図47は、実施の形態9に係るコントローラシステムの処理を説明するための図である。なお、以下に示すワンショットタイマ起動カウント値の算出は、入出力制御装置4−1,4−2,4−3のそれぞれの起動カウント値算出部15によって行われる。
実施の形態9では、階層の値の大きい入出力制御装置4から、自装置のワンショットタイマ割り込み所要時間の算出を行う。入出力制御装置4は、自装置のワンショットタイマ割り込み所要時間を、センサ接続数とデータ送信所要時間との積として算出する。すなわち、ワンショットタイマ割り込み所要時間は、「センサ接続数×データ送信所要時間」として算出される。
まず、階層の値が最も大きい入出力制御装置4−3がワンショットタイマ割り込み所要時間を算出する。入出力制御装置4−2のワンショットタイマ割り込み所要時間は、「300(=3×100)」となる。入出力制御装置4−3は、自装置の識別情報とワンショットタイマ割り込み所要時間を含む返送データ420を、自装置の次に階層の値が大きい入出力制御装置4−2に送信する。
続いて、返送データ420を受信した入出力制御装置4−2がワンショットタイマ割り込み所要時間を算出する。入出力制御装置4−2のワンショットタイマ割り込み所要時間は、「100(=1×100)」となる。入出力制御装置4−2は、自装置の識別情報とワンショットタイマ割り込み所要時間を含む返送データ420を、自装置の次に階層が大きい入出力制御装置4−1に送信する。
続いて、返送データ420を受信した入出力制御装置4−1がワンショットタイマ割り込み所要時間を算出する。入出力制御装置4−1のワンショットタイマ割り込み所要時間は、「200(=2×100)」となる。
その後、コントローラ1は、ワンショットタイマ制御レジスタ14のパラメータを規定するためのデータである初期化時登録データ310を、入出力制御装置4に送信する。実施の形態9の初期化時登録データ310は、入出力制御装置4−1,4−2,4−3の識別情報、センサ接続数、データ送信所要時間、ワンショットタイマ割り込み所要時間、階層、および基底ワンショットタイマ起動カウント値を含んでいる。
図47の例では、初期化時登録データ310において、入出力制御装置4−1の識別情報は「41」、入出力制御装置4−2の識別情報は「42」、入出力制御装置4−3の識別情報は「43」である。入出力制御装置4−1のセンサ接続数は「2」、入出力制御装置4−2のセンサ接続数は「1」、入出力制御装置4−3のセンサ接続数は「3」である。入出力制御装置4−1のデータ送信所要時間は「100」、入出力制御装置4−2のデータ送信所要時間は「100」、入出力制御装置4−3のデータ送信所要時間は「100」である。入出力制御装置4−1のワンショットタイマ割り込み所要時間は「200」、入出力制御装置4−2のワンショットタイマ割り込み所要時間は「100」、入出力制御装置4−3のワンショットタイマ割り込み所要時間は「300」である。入出力制御装置4−1の階層は「1」、入出力制御装置4−2の階層は「2」、入出力制御装置4−3の階層は「3」である。
実施の形態9では、階層が「1」である入出力制御装置4から、自装置のワンショットタイマ起動カウント値を算出する。また、実施の形態9では、基底ワンショットタイマ起動カウント値は「0」である。
入出力制御装置4は、他装置のワンショットタイマ割り込み所要時間に基づいてワンショットタイマ起動時間を算出する。具体的には、入出力制御装置4は、ワンショットタイマ起動時間を、入出力制御装置4のデータ送信所要時間のうちの最小時間と、自装置よりも小さい値の階層を持つ全ての他装置のワンショットタイマ割り込み所要時間の合計との和として算出する。そして、入出力制御装置4は、ワンショットタイマ割り込み所要時間を、タイマ生成用周波数を基準にするワンショットタイマ起動カウント値に換算して、ワンショットタイマ制御レジスタ14に格納する。
ここでも、ワンショットタイマ起動時間はミリ秒で定義されており、タイマ生成用周波数が1MHzであると仮定する。この場合、タイマは1マイクロ秒ごとにカウントアップされるため、入出力制御装置4−1のワンショットタイマ起動カウント値は、「100000(=(100+0)×1000)」となる。また、入出力制御装置4−2のワンショットタイマ起動カウント値は、「300000(=(100+200)×1000)」となる。さらに、入出力制御装置4−3のワンショットタイマ起動カウント値は、「400000(=(100+200+100)×1000」となる。
その結果、入出力制御装置4のワンショットタイマ制御レジスタ14には、図48に示すデータが格納されることとなる。
図49は、実施の形態1に係るコントローラシステムにおいて、ワンショットタイマ割り込みによって、コントローラ1へセンサデータを送信するタイミングを示すタイミングチャートである。
図47で説明したように、コントローラ1からの初期化時登録データ310が、入出力制御装置4に送信されることによって、入出力制御装置4のワンショットタイマ制御レジスタ14にてワンショットタイマ起動カウント値が設定される。
入出力制御装置4は、自装置のワンショットタイマ起動カウント値が設定されると、自装置のワンショットタイマカウンタ12を起動させる。そして、ワンショットタイマカウンタ12のワンショットタイマカウントが自装置のワンショットタイマ起動カウント値と等しくなると、入出力制御装置4は、自装置に接続されたセンサ機器5のセンサデータをコントローラ1へ送信する。
入出力制御装置4−1は、自装置のワンショットタイマ起動カウント値が設定された後、ワンショットタイマカウントが「100000」と等しくなると、センサ機器5−1,5−2のセンサデータを順にコントローラ1へ送信する。入出力制御装置4−2は、自装置のワンショットタイマ起動カウント値が設定された後、ワンショットタイマカウントが「300000」と等しくなると、センサ機器5−3のセンサデータを、入出力制御装置4−1を介してコントローラ1に送信する。入出力制御装置4−3は、自装置のワンショットタイマ起動カウント値が設定された後、ワンショットタイマカウントが「400000」と等しくなると、センサ機器5−4,5−5,5−6のセンサデータを順に、入出力制御装置4−1,4−2を介してコントローラ1に送信する。
実施の形態9に係るコントローラシステムによれば、複数の入出力制御装置4のそれぞれの起動カウント値算出部15が、センサ接続数に基づいて、ワンショットタイマ起動カウント値を算出する。このような構成によれば、コントローラ1内にタイマを設けて、コントローラ1が、タイムイベントキューの管理、つまり割り込み発生のための時間の管理を行わなくても、コントローラ1は、時分割でデータを取得することが可能となる。このため、コントローラ1の負荷を抑制することができる。また、コントローラシステムの応答性の向上化も期待できる。
なお、本発明は、その発明の範囲内において、各実施の形態を自由に組み合わせたり、各実施の形態を適宜、変形、省略することが可能である。
この発明は詳細に説明されたが、上記した説明は、すべての局面において、例示であって、この発明がそれに限定されるものではない。例示されていない無数の変形例が、この発明の範囲から外れることなく想定され得るものと解される。