(57)【要約】【課題】転送装置にてビットのシフト操作が不要なデータ収集システムを得ること。【解決手段】転送装置２０は、入出力装置５０ｑ（ｑ＝Ａ、Ｂ、Ｃ）から受信したビット列１４ｑに対しビットシフト操作を施すことなく論理演算のみの操作によってビット列１４ｑを所定の順序に配列したビット列１３を生成しコントローラ１０に送信する手段と、ビット列１３におけるビット位置とビット列１４ｑにおけるビット位置との対応関係を示すテンプレート情報４５ａ、４５ｂ、４５ｃを対応する入出力装置５０ｑに対して送信する手段とを備える。入出力装置５０ｑは、転送装置２０から受信したテンプレート情報４５ａ、４５ｂ、４５ｃを記憶する手段と、入力の状態と記憶されたテンプレート情報とに基づき転送装置２０に送信するビット列１４ｑを生成する手段とを備える。【選択図】        図１
2005174105.tif 000002
【特許請求の範囲】
【請求項１】
１台のコントローラが転送装置を介して１以上の入力装置の入力状態を収集するデータ収集システムにおいて、
前記転送装置は、
前記１以上の入力装置から受信した個別データに対しビットシフト操作を施すことなく論理演算のみの操作によって前記個別データを所定の順序に配列したビット列を生成し前記コントローラに送信する手段と、
前記ビット列におけるビット位置と前記個別データとの対応関係を示すテンプレート情報を対応する入力装置に対して送信する手段とを備え、
前記入力装置は、
前記転送装置から受信したテンプレート情報を記憶する手段と、
入力状態と前記記憶されたテンプレート情報とに基づき前記転送装置に送信する個別データを生成する手段とを備える
ことを特徴とするデータ収集システム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、制御の分野で用いられるデータ収集システムに関するものである。
【背景技術】
【０００２】
制御の分野では、１台のコントローラが数ｍから数１００ｍ離れた場所に配置した１以上の入出力装置の入力状態を監視するためにネットワーク経由で１以上の入出力装置からデータ収集を行うシステムや、その出力状態を制御するためにネットワーク経由で制御データを１以上の入出力装置に分配するシステムが広く採用されている。
【０００３】
ところで、入出力装置１台当りの入出力点数（１点は１ビット）は、当初は、８点〜６４点であったが、近年になって、利用者の要求の多様化により、１台当りの入出力点数が１点〜８点の入出力装置も使われるようになってきた。そして、市場での成立の経緯と入出力装置の入出力点数の違いから、用いるネットワークは、前者の場合はフィールドネットワークと呼ばれ、後者の場合はセンサ・アクチュエータネットワークと呼ばれることがある。このフィールドネットワークとセンサ・アクチュエータネットワークについては、政府系機関や民間機関から規格が公開されている（非特許文献１〜６）。
【０００４】
すなわち、このシステムでは、コントローラは、フィールドネットワークないしはセンサ・アクチュエータネットワーク経由で数１０点〜数１０００点に及ぶ入出力情報を扱うことになる。そこで、近年では、数１００点〜数１０００点の入力を数１０点の小さなグループに分割し、コントローラと各グループとの間ではフィールドネットワークを介してデータ伝送を行い、各グループ内部でのデータ伝送をセンサ・アクチュエータネットワークで行ういわゆるネットワークの階層化が行われるようになってきた。その概要を図９を参照して説明する。なお、この明細書では、入出力装置の入出力点数が８点以上のネットワークをフィールドネットワークと呼び、入出力点数が８点以下のネットワークをセンサ・アクチュエータネットワークと呼ぶことにする。
【０００５】
図９は、フィールドネットワークとセンサ・アクチュエータネットワークを階層化する場合の概念図である。図９において、コントローラ１１０には長さが数１０ｍ〜数１０００ｍのフィールドネットワーク１１１が接続され、フィールドネットワーク１１１にはｍ個（ｍ＝１〜Ｍ）のグループが接続される。グループｍでは、フィールドネットワーク１１１に接続される転送装置１２１ｍが配置される。この転送装置１２１ｍには、複数の入出力装置１２２ｍｎ（ｎ＝１〜Ｎ）が長さ数ｍ〜数１００ｍのセンサ・アクチュエータネットワーク１１２ｍを介して接続される。すなわち、転送装置１２１ｍは、自グループに属する複数の入出力装置１２２ｍｎから受け取った入力状態データをコントローラ１１０に送信し、またコントローラ１１０から受け取った制御データを自グループに属する複数の入出力装置１２２ｍｎに分配するようになっている。
【０００６】
以下、図１０〜図２１を参照して、コントローラが１以上の入出力装置から入力状態を示すデータを収集する場合について説明する。図１０は、図９に示す一つのグループにおける入出力装置からのデータ収集を説明する図である。図１０では、グループｍの入出力装置１２２ｍｎが入力状態データを含めた送信フレーム１２３ｍｎを生成してセンサ・アクチュエータネットワーク１１２ｍ上に送信し、グループｍの転送装置１２１ｍがセンサ・アクチュエータネットワーク１１２ｍから取り込んだ送信フレーム１２３ｍｎからコントローラ１１０宛の送信フレーム１２３ｍを生成してフィールドネットワーク１１１上に送信する場合が示されている。
【０００７】
ここで、送信フレーム１２３ｍｎは、ヘッダフィールド７１とデータフィールド７２とチェックフィールド７３とからなるビット列である。また、送信フレーム１２３ｍは、ヘッダフィールド７５とデータフィールド７６とチェックフィールド７７とからなるビット列である。このような送信フレームの構成は、シリアル通信において一般に用いられ、非特許文献１〜６においても同様の構成を用いている。また、このデータフィールドのビット配置と入出力装置の入出力ポートとの対応関係は、最下位ビット（ＬＳＢ）が０番の入出力ポートの状態を表すというように、固定的に定められている。
【０００８】
なお、非特許文献１、２、５にて規定される送信フレームでのデータフィールド７６の１単位は１バイトである。非特許文献４にて規定される送信フレームでのデータフィールド７６の１単位は４バイトまたは２バイトである。非特許文献３にて規定される送信フレームでのデータフィールド７２の１単位は０．５バイト（４ビット固定）である。非特許文献６にて規定される送信フレームでのデータフィールド７２の１単位は０．５バイト、１バイトまたは２バイトである。
【０００９】
そこで、図１０では、入出力装置１２２ｍｎがセンサ・アクチュエータネットワーク１１２ｍに送出する送信フレーム１２３ｍｎのデータフィールド７２の１単位は１バイトとしている。すなわち、送信フレーム１２３ｍｎのデータフィールド７２は、ビットｂ０〜ビットｂ７の８ビットで構成される。ヘッダフィールド７１側の第１ビットｂ０が最下位ビット（ＬＳＢ）であり、チェックフィールド７３側の第８ビットｂ７が最上位ビット（ＭＳＢ）である。そして、データフィールド７２のビット位置と入出力ポートとの対応関係は、１対１の関係で固定的に定められている。
【００１０】
また、転送装置１２１ｍがフィールドネットワーク１１１上に送出する送信フレーム１２３ｍでのデータフィールド７６の１単位は１バイトとしている。データフィールド７６に格納されるビット列１１３ｍは、２×Ｎビット（Ｎは４の倍数）で構成され、ヘッダフィールド７５側の第１ビットが最下位ビット（ＬＳＢ）であり、チェックフィールド７７側の最終ビットが最上位ビット（ＭＳＢ）である。図１０では、入出力装置１２２ｍｎが２つの入力ポートｍｎＰ０，ｍｎＰ１を持つとしているので、このデータフィールド７６には各入出力装置１２２ｍｎからのデータ２ビットが格納されるとしている。すなわち、第１ビットと第２ビットは、入出力装置１２２ｍ１からのデータであり、第３ビットと第４ビットは、入出力装置１２２ｍ２からのデータである。
【００１１】
さて、入出力装置１２２ｍｎは、入力１２５ｍｎｋ（図示例では、ｋ＝０、１）が接続される入力ポートｍｎＰｋと、入力ポートｍｎＰｋの状態を示すデータ片１２６ｍｎを記憶する記憶部と、データ片１２６ｍｎを送信フレーム１２３ｍｎのデータフィールド７２に格納してセンサ・アクチュエータネットワーク１１２ｍに送信する送信部１２７ｍｎとを備えている。データ片１２６ｍｎでは、ビットｂ０に入力ポートｍｎＰ０の値（“０”または “１”）が格納され、ビットｂ１に入力ポートｍｎＰ１の値が格納される。ビットｂ２〜ビットｂ７には、対応する入力ポートがないので、値０が格納される。
【００１２】
入出力装置１２２ｍｎでは、入力ポートｍｎＰｋが入力１２５ｍｎｋ（ｋ＝０、１）の入力状態を観測する。入力ポートｍｎＰｋは、入力１２５ｍｎｋの入力状態がＯＮの場合には値１をデータ片１２６ｍｎに出力し、入力１２５ｍｎｋの入力状態がＯＦＦの場合には値０をデータ片１２６ｍｎに出力する。図示例では、入力１２５ｍｎ０の入力状態はＯＮであり、入力１２５ｍｎ１の入力状態はＯＦＦであるので、データ片１２６ｍｎは、ビットｂ０〜ビットｂ７に“１０００００００”と格納される。送信部１２７ｍｎは、データ片１２６ｍｎを送信フレーム１２３ｍｎのデータフィールド７２に格納し、転送装置１２１ｍ宛に送信する。
【００１３】
送信フレーム１２３ｍｎを受信した転送装置１２１ｍは、送信フレーム１２３ｍｎ（ｎ＝１〜Ｎ）のデータフィールド７２にそれぞれ格納されている入力ポートｍｎＰｋ由来のデータをそれぞれビット列１１３ｍの（２×（ｍ−１）＋１）ビット目〜（２×ｍ）ビット目に格納して送信フレーム１２３ｍを作成し、コントローラ１１０宛に送信する。
【００１４】
ここで、図１１、図１２を参照して転送装置１２１ｍが入出力装置１２２ｍｎから受け取った送信フレーム１２３ｍｎからコントローラ宛の送信フレーム１２３ｍを生成する処理内容を具体的に説明する。なお、図１１では、転送装置１２１ｍが８ビットのマイコンを用いて、入力点数が２点の入出力装置１２２ｍｎの６４台分〈局数ｎ＝６４）の送信フレーム１２３ｍｎから各データを抜き取り、送信フレーム１２３ｍのビット列１１３ｍにおける該当ビット位置に埋め込む処理内容が示されている。図１２は、図１１に示すａ部に関する処理内容の詳細を説明する図である。
【００１５】
図１１において、転送装置１２１ｍは、定数定義部にて定数を定め、変数定義部にて変数を宣言した後に、ｇｅｔ＿ｓｅｎｓｏｒ＿ａｃｔｕａｔｏｒ＿ｎｅｔｗｏｒｋ＿ｄａｔａ（）関数にて送信フレーム１２３ｍｎのデータフィールド７２の値を配列変数ｄ１２３ｍｎに取得する。そして、局番が１の入出力装置１２２ｍ１の入力ポート１２５ｍ１ｋ（ｋ＝０、１）からのデータが格納されている配列変数ｄ１２３ｍｎ［０］の値を変数ｄ０に格納する。また、局番が２の入出力装置１２２ｍ２の入力ポート１２５ｍ２ｋ（ｋ＝０、１〜３）からのデータが格納されている配列変数ｄ１２３ｍｎ［１］の値を変数ｄ１に格納する。次いで、変数ｄ１の値を局番ｎ＝２に基づいて２ビット左方向にシフトした上で変数ｄ０に論理和し、局番が３の入出力装置１２２ｍ３の入力ポート１２５ｍ３ｋ（ｋ＝０、１〜３）からのデータが格納されている配列変数ｄ１２３ｍｎ［２］の値を変数ｄ１に格納し、変数ｄ１の値を局番ｎ＝３に基づいて４ビット左方向にシフトした上で変数ｄ０に論理和する。
【００１６】
そして、局番が４の入出力装置１２２ｍ４の入力ポート１２５ｍ４ｋ由来のデータが格納されている配列変数ｄ１２３ｍｎ［３］の値を変数ｄ１に格納し、変数ｄ１の値を局番ｎ＝４に基づいて６ビット左方向にシフトした上で、変数ｄ１と変数ｄ０の論理和を配列変数ｄ１２３ｍ［０］に格納する。以下同様に、４局分のデータｄ１２３ｍｎ［ｉ＋０〜３］（ｉは４の倍数）をｄ１２３ｍ［ｉ］に収合する処理をｉ＝Ｎ−４になるまで行ってデータｄ１２３ｍの生成を完了し、ｓｅｔ＿ｆｉｅｌｄ＿ｎｅｔｗｏｒｋ＿ｄａｔａ（）関数にて配列変数ｄ１２３ｍに格納されたデータをコントローラ１１０に送信する。
【００１７】
図１２では、欄（イ）に図１１に示すａ部での処理を示され、欄（ロ）に実際にマイコンが行う処理動作が示され、欄（ハ）に所要クロック数が示されている。欄（ハ）に示すように、マイコンが命令を実行する際に必要となる所要クロック数は、全て命令１つ当たり１クロックとすれば、計６４台の入出力装置のデータを収合する場合、図１１に示すａ部での１６行の処理には、計２１７６クロックを要し、ビットのシフト処理には２３２０クロックのおよそ４５％に当る９７６クロックを要することになる。
【００１８】
また、図１３〜図１５を参照して、入出力装置１２２ｍｎが入力１２５ｍｎｋからデータ片１２６ｍｎを決定する処理内容を具体的に説明する。なお、図１３と図１４では、入出力装置１２２ｍｎが８ビットのマイコンを用いて、入力１２５ｍｎｋからデータ片１２６ｍを決定する処理内容が示されている。図１３は、入力ポートが同一アドレスの場合であり、図１４は、入力ポートが異なるアドレスの場合である。また、図１５は、図１４に示すｂ部に関する処理内容の詳細を説明する図である。
【００１９】
図１３と図１４において、入出力装置１２２ｍｎでは、定数定義部にて定数を定め、変数定義部にて変数を宣言した後に、ｇｅｔ＿ｐｏｒｔ＿ｓｔａｔｕｓ（）関数にて入力１２５ｍｎｋを入力ポートｍｎＰｋ（ｋ＝０、１）から変数ｍｎＰｋに取り込み、変数ｄ１２３ｍに変数ｍｎＰｋをそれぞれ論理和した後、ｓｅｔ＿ｓｅｎｓｏｒ＿ａｃｔｕａｔｏｒ＿ｎｅｔｗｏｒｋ＿ｄａｔａ（）関数にてデータ片１２６ｍｎに値を格納する。
【００２０】
図１０では、入力１２５ｍｎ０がＯＮであり、入力１２５ｍｎ１がＯＦＦであるとしている。この場合の処理内容の詳細が図１５に示されている。図１５では、欄（イ）に図１４に示すｂ部での処理を示され、欄（ロ）に実際にマイコンが行う処理動作が示され、欄（ハ）に所要クロック数が示されている。
【００２１】
図１５の欄（ロ）において、手順（１）では、値０ｘ００（１６進数の００）を変数ｄ１２３ｍｎに格納する。手順（２）では、入力１２５ｍｎ０に由来する変数ｍｎＰ０の値をレジスタａに格納する。今の例では、入力１２５ｍｎ０がＯＮであるので、レジスタａに値０ｘ０１が格納される。手順（３）では、レジスタａの値が０ｘ０１であるので、手順（４）に遷移する。手順（４）では、変数ｄ１２３ｍｎの値をレジスタａに格納する。手順（５）では、変数ｍｎＰ０ｏｎの値０ｘ０１をレジスタｂに格納する。手順（６）では、レジスタｂの値をレジスタａに論理和してレジスタａの値を０ｘ０１に変化させる。手順（７）では、レジスタａの値を変数ｄ１２３ｍｎに格納する。今の例では、変数ｄ１２３ｍに値０ｘ０１が格納される。手順（８）では、入力１２５ｍｎ１に由来する変数ｍｎＰ１の値をレジスタａに格納する。今の例では入力１２５ｍｎ１がＯＦＦであるので、レジスタａに値０ｘ００が格納される。手順（９）では、レジスタａの値が０ｘ００であるので、図１４に示すｂ部の処理が完了し、手順（１３）の後に続く命令に処理が移り、変数ｄ１２３ｍｎの値０ｘ０１が以降の処理に渡る。
【００２２】
図１５の欄（ハ）に示すように、マイコンが命令を実行する際に必要となる所要クロック数は、全て命令１つ当たり１クロックとすれば図１４に示すｂ部での３行の処理には、計９クロックを要することになる。
【００２３】
次に、図１６は、従来の階層化されたデータ収集システムの構成と転送装置の処理内容を説明する図である。図１６では、システム全体を制御するコントローラ１１０が転送装置２１１を介して３台の入出力装置２５０ｑ（ｑ＝Ａ、Ｂ、Ｃ）から入力状態データを収集し制御対象の状態を観測するシステムが示されている。転送装置２１１は、コントローラ１１０とはフィールドネットワーク１１１を介して接続され、入出力装置２５０ｑとはセンサ・アクチュエータネットワーク１１２ｍを介して接続されている。なお、図１６に示す入出力装置２５０ｑの構成と処理内容は、図１７〜図１９に示してある。
【００２４】
図１６において、転送装置２１１は、３台の入出力装置２５０ｑ（ｑ＝Ａ、Ｂ、Ｃ）からビット列１１４ｑを受け取る受信部２２４と、受信部２２４からデータ片１３２ｑを受ける演算部２２３と、演算部２２３が生成したデータ片２２８ａ、２２８ｂを下位データ片２２２ａ、上位データ片２２２ｂとして保持する送信バッファ２２２と、送信バッファ２２２が保持する下位データ片２２２ａ、上位データ片２２２ｂをビット列１１３に格納してコントローラ１１０に送信する送信部２２１とを備えている。
【００２５】
図１６では、ビット列１１３は、１６ビットで構成されている。なお、ビット列１１３におけるＬＳＢとＭＳＢの位置は、図１０にて説明したのとは逆に表示され、右端側がＬＳＢである。ビット列１１３では、最下位側の第１ビットと第２ビットが入出力装置２５０ｑ（ｑ＝Ａ）が送信したデータ１４１Ａである。第３ビット〜第６ビットが入出力装置２５０ｑ（ｑ＝Ｂ）が送信したデータ１４１Ｂである。第７ビット〜第１０ビットが入出力装置２５０ｑ（ｑ＝Ｃ）が送信したデータ１４１Ｃである。第１１ビット〜最上位の第１６ビットは不使用となっている。
【００２６】
ここに、演算部２２３では、受信部２２４から受け取るデータ片１３２Ａをデータ片１３１Ａとしてレジスタ２２３ａに格納する。また、受信部２２４から受け取るデータ片１３２Ｂをシフトレジスタ２２３ｂにてＭＳＢ方向である左向きに２ビットシフトしてデータ片１３１Ｂを取得し、それをレジスタ２２３ｃに格納する。また、受信部２２４から受け取るデータ片１３２Ｃを２つのシフトレジスタ２２３ｄ、２２３ｆに与える。シフトレジスタ２２３ｄでは、データ片１３２Ｃを左向きに６ビットシフトしてデータ片１３１Ｃａを生成し、それをレジスタ２２３ｅに格納する。一方、シフトレジスタ２２３ｆでは、データ片１３２Ｃを右向きに２ビットシフトしてデータ片１３１Ｃｂを生成し、それをデータ片２２８ｂとする。また、レジスタ２２３ａ、２２３ｃ、２２３ｅの各保持データ片は論理和が取られ、データ片２２８ａが生成される。
【００２７】
また、送信バッファ２２２では、データ片２２８ａを下位データ片２２２ａとして保持され、データ片２２８ｂを上位データ片２２２ｂとして保持される。送信部２２１は、このような下位データ片２２２ａと上位データ片２２２ｂとをビット列１１３に格納する。したがって、ビット列１１３では、ＬＳＢからＭＳＢに向かって、入出力装置２５０ｑ（ｑ＝Ａ）が送信した２ビットのデータ１４１Ａと、入出力装置２５０ｑ（ｑ＝Ｂ）が送信した４ビットのデータ１４１Ｂと、入出力装置２５０ｑ（ｑ＝Ｃ）が送信した４ビットのデータ１４１Ｃとが隙間無く並べられる。
【００２８】
次に、入出力装置２５０ｑは、図１７〜図１９に示すように、入力１５４ｑｋ（ｋ＝０〜３）からデータ片１５８ｑｋを生成するデータ生成部２５３ｑｋと、データ片１５８ｑｋからデータ片１５７ｑを生成するデータ片生成部２５６ｑと、データ片１５７ｑを記憶するデータ片記憶部２５２ｑと、データ片１５７ｑをビット列１１４ｑとして転送装置２１１に送信する送信部２５１ｑとを備えている。
【００２９】
ここに、データ生成部２５３ｑｋは、入力１５４ｑｋがＯＮのときは、データ片１５８ｑｋのＬＳＢからｋ＋１ビット目のビットの値を“１”にし、入力１５４ｑｋがＯＦＦのときは、データ片１５８ｑｋのＬＳＢからｋ＋１ビット目のビットの値を“０”にする。データ片生成部２５６ｑは、ｑを同じくする全てのデータ片１５８ｑｋの論理和を取ってデータ片１５７ｑを生成する。
【００３０】
次に、以上のように構成される従来のデータ収集システムの動作について説明する。図１７に示す入出力装置２５０Ａでは、データ生成部２５３Ａ０は、入力１５４Ａ０がＯＮであるので、８ビットの全てが“１”であるデータ“１１１１１１１１”を生成し、それとＬＳＢから１ビット目が“１”でそれ以外のビットが“０”である８ビット長の定数“０００００００１”との論理積を取って、ＬＳＢから１ビット目が“１”でそれ以外のビットが“０”である８ビット長のデータ片１５８Ａ０（“０００００００１”）を生成する。
【００３１】
データ生成部２５３Ａ１は、入力１５４Ａ１がＯＦＦであるので、８ビットの全てが“０”であるデータ“００００００００”を生成し、それとＬＳＢから２ビット目が“１”でそれ以外のビットが“０”である８ビット長の定数“００００００１０”との論理積を取ってＬＳＢから２ビット目が“０”でそれ以外のビットも“０”である８ビット長のデータ片１５８Ａ１（“００００００００”）を生成する。
【００３２】
これによって、データ片生成部２５６Ａは、データ片１５８Ａ０とデータ片１５８Ａ１との論理和を取って“０００００００１”なるデータ片１５７Ａを生成しデータ片記憶部２５２Ａに格納する。そして、送信部２５１Ａは、データ片記憶部２５２Ａからデータ片１５７Ａを取り出し、それをビット列１１４Ａとして転送装置２１１に送信する。ビット列１１４Ａの下位２ビットは、コントローラ１１０に送信するデータ１４１Ａ（“０１”）である。
【００３３】
図１８に示す入出力装置２５０Ｂでは、データ生成部２５３Ｂ０は、入力１５４Ｂ０がＯＮであるので、８ビットの全てが“１”であるデータ“１１１１１１１１”を生成し、それとＬＳＢから１ビット目が“１”でそれ以外のビットが“０”である８ビット長の定数“０００００００１”との論理積を取って、ＬＳＢから１ビット目が“１”でそれ以外のビットが“０”である８ビット長のデータ片１５８Ｂ０（“０００００００１”）を生成する。
【００３４】
データ生成部２５３Ｂ１は、入力１５４Ｂ１がＯＦＦであるので、８ビットの全てが“０”であるデータ“００００００００”を生成し、それとＬＳＢから２ビット目が“１”でそれ以外のビットが“０”である８ビット長の定数“００００００１０”との論理積を取って、ＬＳＢから２ビット目が“０”でそれ以外のビットも“０”である８ビット長のデータ片１５８Ｂ１（“００００００００”）を生成する。
【００３５】
データ生成部２５３Ｂ２は、入力１５４Ｂ２がＯＮであるので、８ビットの全てが“１”であるデータ“１１１１１１１１”を生成し、それとＬＳＢから３ビット目が“１”でそれ以外のビットが“０”である８ビット長の定数“０００００１００”との論理積を取って、ＬＳＢから３ビット目が“１”でそれ以外のビットが“０”である８ビット長のデータ片１５８Ｂ２（“０００００１００”）を生成する。
【００３６】
データ生成部２５３Ｂ３は、入力１５４Ｂ３がＯＮであるので、８ビットの全てが“１”であるデータ“１１１１１１１１”を生成し、それとＬＳＢから４ビット目が“１”でそれ以外のビットが“０”である８ビット長の定数“００００１０００”との論理積を取って、ＬＳＢから４ビット目が“１”でそれ以外のビットが“０”である８ビット長のデータ片１５８Ｂ３（“００００１０００”）を生成する。
【００３７】
これによって、データ片生成部２５６Ｂは、データ片１５８Ｂ０とデータ片１５８Ｂ１とデータ片１５８Ｂ２とデータ片１５８Ｂ３の論理和を取って“００００１１０１”なるデータ片１５７Ｂを生成しデータ片記憶部２５２Ｂに格納する。そして、送信部２５１Ｂは、データ片記憶部２５２Ｂからデータ片１５７Ｂを取り出し、それをビット列１１４Ｂとして転送装置２１１に送信する。ビット列１１４Ｂの下位４ビットは、コントローラ１１０に送信するデータ１４１Ｂ（“１１０１”）である。
【００３８】
図１９に示す入出力装置２５０Ｃでは、データ生成部２５３Ｃ０は、入力１５４Ｃ０がＯＮであるので、８ビットの全てが“１”であるデータ“１１１１１１１１”を生成し、それとＬＳＢから１ビット目が“１”でそれ以外のビットが“０”である８ビット長の定数“０００００００１”との論理積を取って、ＬＳＢから１ビット目が“１”でそれ以外のビットが“０”である８ビット長のデータ片１５８Ｃ０（“０００００００１”）を生成する。
【００３９】
データ生成部２５３Ｃ１は、入力１５４Ｃ１がＯＦＦであるので、８ビットの全てが“０”であるデータ“００００００００”を生成し、それとＬＳＢから２ビット目が“１”でそれ以外のビットが“０”である８ビット長の定数“００００００１０”との論理積を取って、ＬＳＢから２ビット目が“０”でそれ以外のビットも“０”である８ビット長のデータ片１５８Ｃ１（“００００００００”）を生成する。
【００４０】
データ生成部２５３Ｃ２は、入力１５４Ｃ２がＯＮであるので、８ビットの全てが“１”であるデータ“１１１１１１１１”を生成し、それとＬＳＢから３ビット目が“１”でそれ以外のビットが“０”である８ビット長の定数“０００００１００”との論理積を取って、ＬＳＢから３ビット目が“１”でそれ以外のビットが“０”である８ビット長のデータ片１５８Ｃ２（“０００００１００”）を生成する。
【００４１】
データ生成部２５３Ｃ３は、入力１５４Ｃ３がＯＮであるので、８ビットの全てが“１”であるデータを生成し、それとＬＳＢから４ビット目が“１”でそれ以外のビットが“０”である８ビット長の定数“００００１０００”との論理積を取って、ＬＳＢから４ビット目が“１”でそれ以外のビットが“０”である８ビット長のデータ片１５８Ｃ３（“００００１０００”）を生成する。
【００４２】
これによって、データ片生成部２５６Ｃは、データ片１５８Ｃ０とデータ片１５８Ｃ１とデータ片１５８Ｃ２とデータ片１５８Ｃ３の論理和を取って、“００００１１０１”なるデータ片１５７Ｃを生成しデータ片記憶部２５２Ｃに格納する。そして、送信部２５１Ｃは、データ片記憶部２５２Ｃからデータ片１５７Ｃを取り出し、それをビット列１１４Ｃとして転送装置２１１に送信する。ビット列１１４Ｃの下位４ビットは、コントローラ１１０に送信するデータ１４１Ｃ（“１１０１”）である。
【００４３】
図１６において、転送装置２１１では、受信部２２４は、受信したビット列１１４Ａをデータ片１３２Ａとして演算部２２３に渡し、受信したビット列１１４Ｂをデータ片１３２Ｂとして演算部２２３に渡し、受信したビット列１１４Ｃをデータ片１３２Ｃとして演算部２２３に渡す。演算部２２３では、受け取ったデータ片１３２Ａに含まれるデータ１４１Ａ（“０１”）は、全てビット列１１３の下位８ビットに１対１の対応関係で格納できるので、そのデータ片１３２Ａをそのままデータ片１３１Ａとしてレジスタ２２３ａに格納する。
【００４４】
また、演算部２２３では、受け取ったデータ片１３２Ｂに含まれるデータ１４１Ｂ（“１１０１”）は、全てビット列１１３の下位８ビットに格納できるが、ビット位置が２ビットずれているので、受け取ったデータ片１３２Ｂをシフトレジスタ２２３ｂに与えて左向きに２ビットシフト操作し、得られた“００１１０１００”なるデータ片１３１Ｂをレジスタ２２３ｃに格納する。
【００４５】
一方、演算部２２３では、受け取ったデータ片１３２Ｃに含まれるデータ１４１Ｃ（“１１０１”）は、ビット列１１３の上位８ビットと下位８ビットの境界を跨いでいるので、それらを分離しビット位置を合わせるため、受け取ったデータ片１３２Ｃをシフトレジスタ２２３ｄ、２２３ｆに与える。
【００４６】
シフトレジスタ２２３ｄでは、データ片１３２Ｃのデータ“００００１１０１”を左向きに６ビットシフト操作し、得られた“０１００００００”なるデータ片１３１Ｃａをレジスタ２２３ｅに格納する。また、シフトレジスタ２２３ｆでは、データ片１３２Ｃのデータ“００００１１０１”を右向きに２ビットシフト操作し、得られた“００００００１１”なるデータ片１３１Ｃｂをデータ片２２８ｂとする。
【００４７】
そして、演算部２２３では、レジスタ２２３ａに格納したデータ片１３１Ａとレジスタ２２３ｃに格納したデータ片１３１Ｂとレジスタ２２３ｅに格納したデータ片１３１Ｃａとの論理和を取って“０１１１０１０１”なるデータ片２２８ａを生成し、それを下位データ片２２２ａとして送信バッファ２２２に格納する。また、演算部２２３では、シフトレジスタ２２３ｆにて生成されたデータ片２２８ｂを上位データ片２２２ｂとして送信バッファ２２２に格納する。これによって、送信部２２１は、送信バッファ２２２に格納されている下位データ片２２２ａと上位データ片２２２ｂとを連続したビット列１１３としてコントローラ１１０に送信する。
【００４８】
ここで、図２０と図２１を参照して、転送装置２１１がビット列１１４ｑ（ｑ＝Ａ〜Ｃ）からビット列１１３を作成する処理内容を具体的に説明する。なお、図２０では、転送装置２１１が８ビットのマイコンを用いて処理を実行する場合が示されている。また、図２１は、図２０に示すｃ部に関する処理内容の詳細を説明する図である。
【００４９】
図２０において、転送装置２１１は、定数定義部にて定数を定め、変数定義部にて変数を宣言し、変数の初期化を行った後、配列変数ｄ１１３に０ｘ００を格納した上で、ｇｅｔ＿ｓｅｎｓｏｒ＿ａｃｔｕａｔｏｒ＿ｎｅｔｗｏｒｋ＿ｄａｔａ（）関数にてビット列１１４ｑの値を配列変数ｄ１１４に取得する。そして、局番が１の入出力装置２５０Ａの入力ポート１５４Ａｋ（ｋ＝０、１）からのデータが格納されている変数ｄ１１４［０］の値を変数ｄ０に格納し、変数ｄ１１３［０］に変数ｄ０の値を論理和する。また、局番が２の入出力装置２１Ｂの入力ポート１５４Ｂｋ（ｋ＝０〜３）からのデータが格納されている変数ｄ１１４[１]の値を変数ｄ０に格納し、次いで、変数ｄ０の値を左に２ビットシフトした上で、変数ｄ１１３［０］に変数ｄ０の値を論理和する。
【００５０】
また、局番が４の入出力装置２１Ｃの入力ポート１５４Ｃｋ（ｋ＝０〜３）からのデータが格納されている変数ｄ１１４［２］の値を変数ｄ０に格納する。そして、変数ｄ０の値を左に６ビットシフトした上で、変数ｄ１１３［０］に変数ｄ０の値を論理和する。次いで、変数ｄ１１４［２］の値を変数ｄ０に格納し、変数ｄ０の値を右に２ビットシフトした上で、変数ｄ０の値を変数ｄ１１３［１］に格納する。これによって配列変数ｄ１１３へのデータの格納を完了し、ｓｅｔ＿ｆｉｅｌｄ＿ｎｅｔｗｏｒｋ＿ｄａｔａ（）関数にて配列変数ｄ１１３に格納されたデータをコントローラ１１０に送信する。
【００５１】
図２１では、欄（イ）に図２０に示すｃ部での処理が示され、欄（ロ）に実際にマイコンが行う処理動作が示され、欄（ハ）に所要クロック数を示されている。欄（ハ）では、マイコンが一行分の処理を行うに要するクロック数を１とし、条件判断の結果実行されない行のクロック数を０とし、実行される行のクロック数を１として表し、最下段にクロック数の合計が示されている。
【００５２】
図２１の欄（ロ）において、手順（１）から手順（４）では、変数ｐ２５０ｑ［０］に格納されている値０ｘ００を変数ｐ０に格納する。手順（５）から手順（１１）では、値０ｘ０１が格納されている変数ｄ０にｐ０の値が０ｘ００のためシフト演算を施さない。手順（１２）から手順（１８）では、変数ｄ０の値を変数ｄ１１３［０］に論理和して変数ｄ１１３［０］の値を０ｘ０１に変化させる。手順（１９）から手順（２３）では、変数ｐ０の値が０ｘ０６ではないので変数ｐ１１３の値を変化させない。手順（２４）から手順（２８）では、変数ｆｌａｇ＿ｏｆ＿ｓｅｐａｒａｔｅ［０］の値が０ｘ００であるので、ｑ＝＝０の処理を終了し、ｑ＝＝１の処理に遷移する。手順（４１）から手順（４４）では、変数ｐ２５０ｑ［１］に格納されている値０ｘ０２を変数ｐ０に格納する。手順（４５）から手順（５１）では、値０ｘ０Ｄが格納されているｄ０の値をｐ０の値が０ｘ０２のため左向きに２ビットシフトする演算を施した結果である値０ｘ３４を変数ｄ０に格納する。
【００５３】
手順（５２）から手順（５８）では、変数ｄ０の値を変数ｄ１１３［０］に論理和して変数ｄ１１３［０］の値を０ｘ３５に変化させる。手順（５９）から手順（６３）では、変数ｐ０の値が０ｘ０６ではないので変数ｐ１１３の値を変化させない。手順（６４）から手順（６８）では、変数ｆｌａｇ＿ｏｆ＿ｓｅｐａｒａｔｅ［１］の値が０ｘ００であるので、ｑ＝＝１の処理を終了し、ｑ＝＝２の処理に遷移する。手順（８１）から手順（８４）では、変数ｐ２５０ｑ［３］に格納されている値０ｘ０６を変数ｐ０に格納する。手順（８５）から手順（９１）では、値０ｘ０Ｄが格納されているｄ０の値をｐ０の値が０ｘ０６のため左向きに６ビットシフトする演算を施した結果である値０ｘ４０を変数ｄ０に格納する。手順（９２）から手順（９８）では、変数ｄ０の値を変数ｄ１１３［０］に論理和して変数ｄ１１３［０］の値を０ｘ７５に変化させる。
【００５４】
手順（９９）から手順（１０３）では、変数ｐ０の値が０ｘ０６であるので変数ｐ１１３の値に１を加える。手順（１０４）から手順（１２０）では、変数ｆｌａｇ＿ｏｆ＿ｓｅｐａｒａｔｅ［３］の値が０ｘ００でないので、変数ｄ０に変数ｄ１１４［２］の値を格納する。そして、変数ｄ０の値を右向きに２ビットシフト演算した結果を変数ｄ１１３［１］に格納して、変数ｄ１１３［１］の値を０ｘ０３に変化させる。これによって、配列変数ｄ１１３にビット列１４１ｑを格納する処理が完了する。以上の処理によって、命令一つ当たりの所要クロック数が全て１クロックである場合には、図２１の欄（ハ）に示すように、図２０に示すｃ部の処理には、計１１６クロックを要することになる。
【００５５】
【非特許文献１】ＪＩＳＢ３５１１規格ＯＰＣＮ−１（政府系機関から公開されているフィールドネットワークの規格）
【非特許文献２】ＥＮ５０１７０規格ＰＲＯＦＩＢＵＳ（政府系機関から公開されているフィールドネットワークの規格）
【非特許文献３】ＩＥＣ６２０２６−２規格ＡＳ−Ｉｎｔｅｒｆａｃｅ（政府系機関から公開されているセンサ・アクチュエータネットワークの規格）
【非特許文献４】ＣＣ−Ｌｉｎｋ協会のＣＣ−Ｌｉｎｋ（民間機関から公開されているフィールドネットワークの規格）
【非特許文献５】ＯＤＶＡのＤｅｖｉｃｅＮｅｔ（民間機関から公開されているフィールドネットワークの規格）
【非特許文献６】ＣＣ−Ｌｉｎｋ協会のＣＣ−Ｌｉｎｋ／ＬＴ（民間機関から公開されているセンサ・アクチュエータネットワークの規格）
【発明の開示】
【発明が解決しようとする課題】
【００５６】
しかしながら、従来の処理方法では、上記の通り転送装置がコントローラにデータを転送する際にビットのシフト操作が必要であるので、コントローラ宛の送信フレームを生成する処理に時間が掛るという問題がある。
【００５７】
そして、転送装置は、センサ・アクチュエータネットワークにて全ての入出力装置からデータを収集するので、全ての入出力装置からデータを収集する処理が完了するまでの時間は、一台当たりの処理時間に入出力装置の台数を乗じた値となる。したがって、上記したシフト処理による処理の遅れが収集処理の性能低下を招くという問題がある。
【００５８】
この発明は、上記に鑑みてなされたものであり、転送装置にてビットのシフト操作が不要なデータ収集システムを得ることを目的とする。
【課題を解決するための手段】
【００５９】
上述した目的を達成するため、この発明は、１台のコントローラが転送装置を介して１以上の入力装置の入力状態を収集するデータ収集システムにおいて、前記転送装置は、前記１以上の入力装置から受信した個別データに対しビットシフト操作を施すことなく論理演算のみの操作によって前記個別データを所定の順序に配列したビット列を生成し前記コントローラに送信する手段と、前記ビット列におけるビット位置と前記個別データとの対応関係を示すテンプレート情報を対応する入力装置に対して送信する手段とを備え、前記入力装置は、前記転送装置から受信したテンプレート情報を記憶する手段と、入力状態と前記記憶されたテンプレート情報とに基づき前記転送装置に送信する個別データを生成する手段とを備えることを特徴とする。
【００６０】
この発明によれば、転送装置にてビットのシフト操作が不要になるので、コントローラ宛に送信するビット列を短時間に生成することができる。したがって、収集処理の性能を向上することができる。
【発明の効果】
【００６１】
この発明によれば、１台のコントローラが１以上の入出力装置からデータを収集する処理性能を向上することができるという効果を奏する。
【発明を実施するための最良の形態】
【００６２】
以下に、この発明にかかるデータ収集システムの好適な実施の形態を図面を参照して詳細に説明する。
【００６３】
図１は、この発明の一実施の形態であるデータ収集システムの構成と転送装置の処理内容を説明する図である。図１では、システム全体を制御するコントローラ１０が転送装置２０を介して３台の入出力装置５０ｑ（ｑ＝Ａ、Ｂ、Ｃ）から入力状態データを収集し制御対象の状態を観測するシステムが示されている。転送装置２０は、コントローラ１０とはフィールドネットワーク１２を介して接続され、入出力装置５０ｑとはセンサ・アクチュエータネットワーク１７を介して接続されている。なお、入出力装置５０ｑの構成と処理内容は、図２〜図４に示してある。
【００６４】
図１において、転送装置２０は、３台の入出力装置５０ｑ（ｑ＝Ａ、Ｂ、Ｃ）に対してテンプレート情報４５ａ、４５ｂ、４５ｃを送信するとともに、３台の入出力装置５０ｑ（ｑ＝Ａ、Ｂ、Ｃ）からビット列１４ｑを受け取る送受信部２４と、送受信部２４からデータ片３２ｑを受ける演算部２３と、演算部２３が生成したデータ片２８ａ、２８ｂを下位データ片２２ａ、上位データ片２２ｂとして保持する送信バッファ２２と、送信バッファ２２が保持する下位データ片２２ａ、上位データ片２２ｂをビット列１３に格納してコントローラ１０に送信する送信部２１とを備えている。
【００６５】
図１では、ビット列１３は、１６ビットで構成されている。そして、ビット列１３におけるＬＳＢの位置は、右端側であり、ＭＳＢの位置は、左端側であるとしている。ビット列１３では、最下位側の第１ビットと第２ビットが入出力装置５０ｑ（ｑ＝Ａ）が送信したデータ４１Ａである。第３ビット〜第６ビットが入出力装置５０ｑ（ｑ＝Ｂ）が送信したデータ４１Ｂである。第７ビット〜第１０ビットが入出力装置５０ｑ（ｑ＝Ｃ）が送信したデータ４１Ｃである。第１１ビット〜最上位の第１６ビットは不使用となっている。      
【００６６】
ここに、演算部２３では、送受信部２４から受け取るデータ片３２Ａをデータ片３１Ａとしてレジスタ２３ａに格納する。また、送受信部２４から受け取るデータ片３２Ｂをデータ片３１Ｂとしてレジスタ２３ｂに格納する。また、送受信部２４から受け取るデータ片３２Ｃを２つの論理積回路２３ｃ、２３ｄに与える。論理積回路２３ｃでは、データ片３２Ｃと１６進数の値“Ｃ０”との論理積を取ってデータ片３１Ｃａを生成し、それをレジスタ２３ｅに格納する。一方、論理積回路２３ｄでは、データ片３２Ｃと１６進数の値“０３”との論理積を取ってデータ片３１Ｃｂを生成し、それをデータ片２８ｂとする。また、レジスタ２３ａ、２３ｂ、２３ｅの各保持データ片は論理和が取られ、データ片２８ａが生成される。
【００６７】
また、送信バッファ２２では、演算部２３から受け取ったデータ片２８ａを下位データ片２２ａとして保持し、演算部２３から受け取ったデータ片２８ｂを上位データ片２２ｂとして保持する。送信部２１は、送信バッファ２２が保持するこのような下位データ片２２ａと上位データ片２２ｂとをビット列１３に格納する。ビット列１３では、ＬＳＢからＭＳＢに向かって入出力装置５０ｑ（ｑ＝Ａ）が送信した２ビットのデータ４１Ａと、入出力装置５０ｑ（ｑ＝Ｂ）が送信した４ビットのデータ４１Ｂと、入出力装置５０ｑ（ｑ＝Ｃ）が送信した４ビットのデータ４１Ｃとが隙間無く並べられる。
【００６８】
また、転送装置２０では、機能ブロックは明示してないが、ビット列１３におけるビット位置と入出力装置５０ｑから収集したデータ４１Ａ、４１Ｂ、４１Ｃの各ビット位置との対応関係を示す情報（テンプレート情報４５ａ、４５ｂ、４５ｃ）をデータ収集動作の開始前にコントローラ１０の指示を受けて生成し、送受信部２４から対応する入出力装置５０ｑに対して送信するようになっている。
【００６９】
次に、入出力装置５０ｑは、図２〜図４に示すように、テンプレート情報を記憶するテンプレート記憶部５５ｑｋ（ｋ＝０〜３）と、入力５４ｑｋからデータ片５８ｑｋを生成するデータ生成部５３ｑｋと、データ片５８ｑｋからデータ片５７ｑを生成するデータ片生成部５６ｑと、データ片５７ｑを記憶するデータ片記憶部５２ｑと、データ片５７ｑをビット列１４ｑとして転送装置２０に送信するとともに、転送装置２０からのテンプレート情報をテンプレート記憶部５５ｑｋに送り込む送受信部５１ｑとを備えている。
【００７０】
ここに、データ生成部５３ｑｋは、入力５４ｑｋがＯＮのときは、８ビットが全て“１”であるデータ“１１１１１１１１”とテンプレート記憶部５５ｑｋに記憶されるテンプレート情報との論理積を取って、また入力５４ｑｋがＯＦＦのときは、８ビットが全て“０”であるデータ“００００００００”とテンプレート記憶部５５ｑｋに記憶されるテンプレート情報との論理積を取って、データ片５８ｑｋを生成する。そして、データ片生成部５６ｑは、ｑを同じくする全てのデータ片５８ｑｋの論理和を取ってデータ片５７ｑを生成する。
【００７１】
次に、以上のように構成されるこの実施の形態によるデータ収集システムの動作について説明する。図１において、転送装置２０は、入出力装置５０ｑからデータ収集処理を開始する前にコントローラ１０から指示を受けて、テンプレート情報４５ａ、４５ｂ、４５ｃを生成し、各入出力装置５０ｑに対し送信する。テンプレート情報４５ａは、入出力装置５０Ａの入力５４Ａ０用と入力５４Ａ１用とからなる。テンプレート情報４５ｂは、入出力装置５０Ｂの入力５４Ｂ０用と入力５４Ｂ１用と入力５４Ｂ２用と入力５４Ｂ３用とからなる。テンプレート情報４５ｃは、入出力装置５０Ｃの入力５４Ｃ０用と入力５４Ｃ１用と入力５４Ｃ２用と入力５４Ｃ３用とからなる。
【００７２】
これらのテンプレート情報は、この実施の形態では、８ビットで構成されるが、ビット列１３でのビット位置を考慮して入力５４ｑｋに割り当てられたビット位置に“１”を設定し、その他のビット位置に“０”を設定することで生成される。
【００７３】
具体的には、ビット列１３では、データ４１Ａは、下位８ビットにおける下位２ビットに格納されるので、テンプレート情報４５ａは、８ビット長の第１ビットに“１”が設定されたテンプレート情報“０００００００１”と、８ビット長の第２ビットに“１”が設定されたテンプレート情報“００００００１０”とからなる。
【００７４】
また、データ４１Ｂは、ビット列１３の下位８ビットにおける中間４ビットに格納されるので、テンプレート情報４５ｂは、８ビット長の第３ビットに“１”が設定されたテンプレート情報“０００００１００”と、８ビット長の第４ビットに“１”が設定されたテンプレート情報“００００１０００”と、８ビット長の第５ビットに“１”が設定されたテンプレート情報“０００１００００”と、８ビット長の第６ビットに“１”が設定されたテンプレート情報“００１０００００”とからなる。
【００７５】
また、データ４１Ｃは、ビット列１３の下位８ビットにおける上位２ビットと上位８ビットにおける下位２ビットとに格納されるので、テンプレート情報４５ｃは、８ビット長の第７ビットに“１”が設定されたテンプレート情報“０１００００００”と、８ビット長の第８ビットに“１”が設定されたテンプレート情報“１０００００００”と、８ビット長の第１ビットに“１”が設定されたテンプレート情報“０００００００１”と、８ビット長の第２ビットに“１”が設定されたテンプレート情報“００００００１０”とからなる。
【００７６】
これによって、入出力装置５０ｑでは、テンプレート記憶部５５ｑｋにテンプレート情報が保持される。すなわち、図２に示す入出力装置５０Ａでは、テンプレート情報４５ａを受けて、テンプレート記憶部５５Ａ０にテンプレート情報“０００００００１”が保持され、テンプレート記憶部５５Ａ１にテンプレート情報“００００００１０”が保持される。
【００７７】
また、図３に示す入出力装置５０Ｂでは、テンプレート情報４５ｂを受けて、テンプレート記憶部５５Ｂ０にテンプレート情報“０００００１００”が保持され、テンプレート記憶部５５Ｂ１にテンプレート情報“００００１０００”が保持され、テンプレート記憶部５５Ｂ２にテンプレート情報“０００１００００”が保持され、テンプレート記憶部５５Ｂ３にテンプレート情報“００１０００００”が保持される。
【００７８】
また、図４に示す入出力装置５０Ｃでは、テンプレート情報４５ｃを受けて、テンプレート記憶部５５Ｃ０にテンプレート情報“０１００００００”が保持され、テンプレート記憶部５５Ｃ１にテンプレート情報“１０００００００”が保持され、テンプレート記憶部５５Ｃ２にテンプレート情報“０００００００１”が保持され、テンプレート記憶部５５Ｃ３にテンプレート情報“００００００１０”が保持される。
【００７９】
入出力装置５０ｑでは、以上のようにテンプレート情報が格納されると、入力５４ｑｋの状態を転送装置２０に送信する処理を開始する。すなわち、図２に示す入出力装置５０Ａでは、データ生成部５３Ａ０は、入力５４Ａ０がＯＮであるので、８ビットの全てが“１”であるデータ“１１１１１１１１”を生成し、それとテンプレート記憶部５５Ａ０に記憶されるテンプレート情報“０００００００１”との論理積を取って“０００００００１”なるデータ片５８Ａ０を生成する。データ生成部５３Ａ１は、入力５４Ａ１がＯＦＦであるので、８ビットの全てが“０”であるデータ“００００００００”を生成し、それとテンプレート記憶部５５Ａ１に記憶されるテンプレート情報“００００００１０”との論理積を取って“００００００００”なるデータ片５８Ａ１を生成する。
【００８０】
これによって、データ片生成部５６Ａは、データ片５８Ａ０とデータ片５８Ａ１との論理和を取って“０００００００１”なるデータ片５７Ａを生成しデータ片記憶部５２Ａに格納する。そして、送受信部５１Ａは、データ片記憶部５２Ａからデータ片５７Ａを取り出し、それをビット列１４Ａとして転送装置２０に送信する。ビット列１４Ａの下位２ビットは、コントローラ１０に送信するデータ４１Ａ（“０１”）である。
【００８１】
図３に示す入出力装置５０Ｂでは、データ生成部５３Ｂ０は、入力５４Ｂ０がＯＮであるので、８ビットの全てが“１”であるデータ“１１１１１１１１”を生成し、それとテンプレート記憶部５５Ｂ０に記憶されるテンプレート情報“０００００１００”との論理積を取って“０００００１００”なるデータ片５８Ｂ０を生成する。データ生成部５３Ｂ１は、入力５４Ｂ１がＯＦＦであるので、８ビットの全てが“０”であるデータ“００００００００”を生成し、それとテンプレート記憶部５５Ｂ１に記憶されるテンプレート情報“００００１０００”との論理積を取って“００００００００”なるデータ片５８Ｂ１を生成する。データ生成部５３Ｂ２は、入力５４Ｂ２がＯＮであるので、８ビットの全てが“１”であるデータ“１１１１１１１１”を生成し、それとテンプレート記憶部５５Ｂ２に記憶されるテンプレート情報“０００１００００”との論理積を取って“０００１００００”なるデータ片５８Ｂ２を生成する。データ生成部５３Ｂ３は、入力５４Ｂ３がＯＮであるので、８ビットの全てが“１”であるデータ“１１１１１１１１”を生成し、それとテンプレート記憶部５５Ｂ３に記憶されるテンプレート情報“００１０００００”との論理積を取って“００１０００００”なるデータ片５８Ｂ３を生成する。
【００８２】
これによって、データ片生成部５６Ｂは、データ片５８Ｂ０とデータ片５８Ｂ１とデータ片５８Ｂ２とデータ片５８Ｂ３との論理和を取って“００１１０１００”なるデータ片５７Ｂを生成しデータ片記憶部５２Ｂに格納する。そして、送受信部５１Ｂは、データ片記憶部５２Ｂからデータ片５７Ｂを取り出し、それをビット列１４Ｂとして転送装置２０に送信する。ビット列１４Ｂの中間４ビットは、コントローラ１０に送信するデータ４１Ｂ（“１１０１”）である。
【００８３】
図４に示す入出力装置５０Ｃでは、データ生成部５３Ｃ０は、入力５４Ｃ０がＯＮであるので、８ビットの全てが“１”であるデータ“１１１１１１１１”を生成し、それとテンプレート記憶部５５Ｃ０に記憶されるテンプレート情報“０１００００００”との論理積を取って“０１００００００”なるデータ片５８Ｃ０を生成する。データ生成部５３Ｃ１は、入力５４Ｃ１がＯＦＦであるので、８ビットの全てが“０”であるデータ“００００００００”を生成し、それとテンプレート記憶部５５Ｃ１に記憶されるテンプレート情報“１０００００００”との論理積を取って“００００００００”なるデータ片５８Ｃ１を生成する。データ生成部５３Ｃ２は、入力５４Ｃ２がＯＮであるので、８ビットの全てが“１”であるデータ“１１１１１１１１”を生成し、それとテンプレート記憶部５５Ｃ２に記憶されるテンプレート情報“０００００００１”との論理積を取って“０００００００１”なるデータ片５８Ｃ２を生成する。データ生成部５３Ｃ３は、入力５４Ｃ３がＯＮであるので、８ビットの全てが“１”であるデータ“１１１１１１１１”を生成し、それとテンプレート記憶部５５Ｃ３に記憶されるテンプレート情報“００００００１０”との論理積を取って“００００００１０”なるデータ片５８Ｃ３を生成する。
【００８４】
これによって、データ片生成部５６Ｃは、データ片５８Ｃ０とデータ片５８Ｃ１とデータ片５８Ｃ２とデータ片５８Ｃ３との論理和を取って“０１００００１１”なるデータ片５７Ｃを生成しデータ片記憶部５２Ｃに格納する。そして、送受信部５１Ｃは、データ片記憶部５２Ｃからデータ片５７Ｃを取り出し、それをビット列１４Ｃとして転送装置２０に送信する。ビット列１４Ｃの上位２ビットは、コントローラ１０に送信するデータ４１Ｃ（“１１０１”）の下位２ビット（“０１”）であり、ビット列１４Ｃの下位２ビットは、コントローラ１０に送信するデータ４１Ｃ（“１１０１”）の上位２ビット（“１１”）である。これは、データ４１Ｃがビット列１３の上位８ビットと下位８ビットの境界を跨いでいることを示している。
【００８５】
図１において、転送装置２０では、送受信部２４は、受信したビット列１４Ａをデータ片３２Ａとして演算部２３に渡し、受信したビット列１４Ｂをデータ片３２Ｂとして演算部２３に渡し、受信したビット列１４Ｃをデータ片３２Ｃとして演算部２３に渡す。
【００８６】
演算部２３では、受け取ったデータ片３２Ａに含まれるデータ４１Ａ（“０１”）と３２Ｂに含まれるデータ４１Ｂ（“１１０１”）とは、全てビット列１３の下位８ビットに１対１の対応関係で格納できるので、データ片３２Ａをそのままデータ片３１Ａとしてレジスタ２３ａに格納し、データ片３２Ｂをそのままデータ片３１Ｂとしてレジスタ２３ｂに格納する。
【００８７】
一方、演算部２３では、受け取ったデータ片３２Ｃに含まれるデータ４１Ｃ（“０１”“１１”）は、上位２ビットと下位２ビットに別れているので、それらを分離しビット位置を合わせるため、受け取ったデータ片３２Ｃを論理積回路２３ｃ、２３ｄに与える。
【００８８】
論理積回路２３ｃでは、データ片３２Ｃのデータ“０１００００１１”と１６進数で「Ｃ０」と表記される定数“１１００００００”との論理積を取って“０１００００００”なるデータ片３１Ｃａを生成し、それをレジスタ２３ｅに格納する。また、論理積回路２３ｄでは、データ片３２Ｃのデータ“０１００００１１”と１６進数で「０３」と表記される定数“００００００１１”との論理積を取って“００００００１１”なるデータ片３１Ｃｂを生成し、それをデータ片２８ｂとする。
【００８９】
そして、演算部２３では、レジスタ２３ａに格納したデータ片３１Ａとレジスタ２３ｂに格納したデータ片３１Ｂとレジスタ２３ｅに格納したデータ片３１Ｃａとの論理和を取って“０１１１０１０１”なるデータ片２８ａを生成し、それを下位データ片２２ａとして送信バッファ２２に格納する。また、演算部２３では、論理積回路２３ｄにて生成されたデータ片２８ｂを上位データ片２２ｂとして送信バッファ２２に格納する。これによって、送信部２１は、送信バッファ２２に格納されている下位データ片２２ａと上位データ片２２ｂとを連続したビット列１３としてコントローラ１０に送信する。
【００９０】
ここで、図５と図６を参照して、転送装置２０がビット列１４ｑからビット列１３を作成する処理内容を具体的に説明する。なお、図５では、転送装置２０が８ビットのマイコンを用いて処理を実行する場合が示されている。また、図６は、図５に示すｄ部に関する処理内容の詳細を説明する図である。
【００９１】
図５において、転送処理では、定数定義部にて定数を定め、変数定義部にて変数を宣言し、変数の初期化部にて変数の初期値を定めた後、ｇｅｔ＿ｓｅｎｓｏｒ＿ａｃｔｕａｔｏｒ＿ｎｅｔｗｏｒｋ＿ｄａｔａ（）関数にてビット列１４ｑの値を配列変数ｄ１４に格納し、続くｆｏｒループにて、ビット列１４ｑを配列変数ｄ１３に収合して、ｓｅｔ＿ｆｉｅｌｄ＿ｎｅｔｗｏｒｋ＿ｄａｔａ（）関数にてビット列１３として配列変数ｄ１３をコントローラ１０に送信する処理が行われる。
【００９２】
図６において、欄（イ）は図５に示すｄ部での処理を示し、欄（ロ）は実際にマイコンが行う処理動作を示し、欄（ハ）は所要クロック数を示している。欄（ハ）では、マイコンが一行分の処理を行うのに要するクロック数を１とし、条件判断の結果実行されない行のクロック数を０とし、実行される行のクロック数を１として表し、最下段にクロック数の合計が示されている。
【００９３】
図６の欄（ロ）において、手順（１）から手順（５）では、変数ｆｌａｇ＿ｏｆ＿ｓｅｐａｒａｔｅ［０］が０ｘ００であるので手順（６）に遷移する。手順（６）から手順（１２）では、予め０ｘ００が格納されている変数ｄ１３［０］に０ｘ０１が格納されている変数ｄ０の値を論理和して、変数ｄ１３［０］の値を０ｘ０１に変化させる。手順（１３）から手順（２１）では、変数ｐ５０ｑ［０］に０ｘ００が格納されているので、ｑ＝＝０の処理を完了し、ｑ＝＝１の処理に遷移する。手順（４１）から手順（４５）では、変数ｆｌａｇ＿ｏｆ＿ｓｅｐａｒａｔｅ［１］が０ｘ００であるので、手順（４６）に遷移する。手順（４６）から手順（５２）では、０ｘ３４が格納されている変数ｄ０を変数ｄ１３［０］に論理和して、変数ｄ１３［０］の値を０ｘ３５に変化させる。手順（５３）から手順（６１）では、変数ｐ５０ｑ［１］に０ｘ０２が格納されているので、ｑ＝＝１の処理を完了し、ｑ＝＝２の処理に遷移する。
【００９４】
手順（８１）から手順（８５）では、変数ｆｌａｇ＿ｏｆ＿ｓｅｐａｒａｔｅ［３］が０ｘ０１であるので手順（１０２）に分岐する。手順（１０２）から手順（１２０）では、０ｘ４３が格納されている変数ｄ０に値０ｘＣ０を論理積した結果と変数ｄ１３［０］の論理和の結果を変数ｄ１３［０］に格納して変数ｄ１３［０］の値を０ｘ７５に変化させる。また、変数ｄ０の値に値０ｘ０３を論理積した結果を変数ｄ１３［１］に格納して変数ｄ１３［１］の値を０ｘ０３に変化させる。これによって、配列変数ｄ１３にビット列１４ｑを格納する処理が完了する。
【００９５】
以上の処理によって、命令一つ当たりの所要クロック数が全て１クロックの場合に図５に示すｄ部の処理を実行するには、図６の欄（ハ）に示すように、計６０クロックを要することが分る。これに対して、従来例（図２１）では、データ転送の処理に１１６クロックを要していた。すなわち、この実施の形態によれば、従来例（図２１）の約半分以下のクロック数で転送処理を完了することができるので、転送装置の処理時間を大幅に短縮する効果を奏することが分る。
【００９６】
次に、図７と図８は、入出力装置５０ｑが入力５４ｑｋから転送装置２０に送信するビット列１４ｑを決定する処理内容を具体的に説明する図である。なお、図７では、入出力装置５０ｑが８ビットのマイコンを用いて処理を実行する場合が示されている。また、図８では、図７に示すｅ部に関する処理内容の詳細が示されている。
【００９７】
図７において、入出力装置５０ｑでは、定数定義部にて定数を定め、変数定義部にて変数を宣言し、それを入出力装置５０ｑ毎に適用した後に、ｇｅｔ＿ｐｏｒｔ＿ｓｔａｔｕｓ（）関数にて入力５４ｑｋ（ｋ＝０〜３）の値を変数ｄ５４ｑｋに格納し、変数ｄ５２ｑに値０ｘ００を格納した後、変数ｄ５４ｑｋの値が０ｘ００ではない場合には変数ｔ５５ｑｋの値を変数ｄ５２ｑに論理和して入力５４ｑｋの状態を変数ｄ５２ｑに格納し、ｓｅｔ＿ｓｅｎｓｏｒ＿ａｃｔｕａｔｏｒ＿ｎｅｔｗｏｒｋ＿ｄａｔａ（）関数にてビット列１４ｑとして変数ｄ５２ｑを転送装置２０に送信する処理が行われる。
【００９８】
図８において、欄（イ）は図７に示すｅ部での処理を示し、欄（ロ）は実際にマイコンが行う処理動作を示し、欄（ハ）は所要クロック数を示している。欄（ハ）では、マイコンが一行分の処理を行うのに要するクロック数を１とし、条件判断の結果実行されない行のクロック数を０とし、実行される行のクロック数を１として表し、最下段にクロック数の合計が示されている。
【００９９】
図８の欄（ロ）において、入出力装置５０Ａでのマイコンは、手順（１）では、変数ｄ５２ｑに値０ｘ００を格納する。手順（２）から手順（７）では、入力５４Ａ０がＯＮであるので、変数ｄ５４ｑ０には値０ｘ０１が格納されている。つまり、ｄ５４ｑ０の値が値０ｘ００と異なるので、変数ｄ５２ｑに変数ｔ５５ｑ０の値０ｘ０１が論理和され、変数ｄ５２ｑに値０ｘ０１が格納される。手順（８）から手順（１３）では、入力５４Ａ１がＯＦＦであるので、変数ｄ５４ｑ１には値０ｘ００が格納されている。つまり、ｄ５４ｑ１の値が値０ｘ００であるので、変数ｄ５２ｑには演算は施さず、変数ｄ５２ｑに入力５４Ａ０および入力５４Ａ１の状態を格納し、処理を完了する。
【０１００】
以上の処理によって、命令一つ当たりの所要クロック数が全て１クロックの場合に図７に示すｅ部の処理を実行するには、図８の欄（ハ）に示すように、計９クロックを要することが分る。これに対し、従来例（図１５）では、処理の実行に要したクロック数は９クロックであった。すなわち、この実施の形態によれば、入出力装置の処理時間を維持したまま、転送装置の処理時間を大幅に短縮できるようになっている。
【産業上の利用可能性】
【０１０１】
以上のように、この発明にかかるデータ収集システムは、１台のコントローラが１以上の入力装置から個別にデータを収集する処理の性能を向上するのに有用である。
【図面の簡単な説明】
【０１０２】
【図１】この発明の一実施の形態であるデータ収集システムの構成と転送装置の処理内容を説明する図である。
【図２】図１に示す入出力装置の構成と処理内容を説明する図である。
【図３】図１に示す入出力装置の構成と処理内容を説明する図である。
【図４】図１に示す入出力装置の構成と処理内容を説明する図である。
【図５】図１に示す転送装置が各入出力装置から受信したビット列に基づきコントローラに転送するビット列を作成する処理内容を具体的に説明する図である。
【図６】図５に示すｄ部に関する処理内容の詳細を説明する図である。
【図７】図１に示す入出力装置が入力状態に基づき転送装置に送信するビット列を決定する処理内容を具体的に説明する図である。
【図８】図７に示すｅ部に関する処理内容の詳細を説明する図である。
【図９】フィールドネットワークとセンサ・アクチュエータネットワークを階層化する場合の概念図である。
【図１０】図９に示す一つのグループにおける入出力装置からのデータ収集を説明する図である。
【図１１】図１０に示す転送装置が入出力装置から受け取った送信フレームからコントローラ宛の送信フレームを生成する処理内容を具体的に説明する図である。
【図１２】図１１に示すａ部に関する処理内容の詳細を説明する図である。
【図１３】図１０に示す入出力装置が入力状態から転送装置に送信するデータ片を決定する処理内容を具体的に説明する図である（入力ポートが同一アドレスの場合）。
【図１４】図１０に示す入出力装置が入力状態から転送装置に送信するデータ片を決定する処理内容を具体的に説明する図である（入力ポートが異なるアドレスの場合）。
【図１５】図１４に示すｂ部に関する処理内容の詳細を説明する図である。
【図１６】従来の階層化されたデータ収集システムの構成と転送装置の処理内容を説明する図である。
【図１７】図１６に示す従来のデータ収集システムにおける入出力装置の構成と処理内容を説明する図である。
【図１８】図１６に示す従来のデータ収集システムにおける入出力装置の構成と処理内容を説明する図である。
【図１９】図１６に示す従来のデータ収集システムにおける入出力装置の構成と処理内容を説明する図である。
【図２０】図１６に示す転送装置が各入出力装置から受信したビット列に基づきコントローラに転送するビット列を作成する処理内容を具体的に説明する図である。
【図２１】図２０に示すｃ部に関する処理内容の詳細を説明する図である。
【符号の説明】
【０１０３】
１０  コントローラ
１２  フィールドネットワーク
１３、１４Ａ、１４Ｂ、１４Ｃ  ビット列
１７  センサ・アクチュエータネットワーク
２０  転送装置
２１  送信部
２２  送信バッファ
２３  演算部
２４  送受信部
２３ａ、２３ｂ、２３ｅ  レジスタ
２３ｃ、２３ｄ  論理積回路
２８ａ、２８ｂ、３１Ａ、３１Ｂ、３１Ｃａ、３１Ｃｂ、３２Ａ、３２Ｂ、３２Ｃ  データ片
４５ａ、４５ｂ、４５ｃ  テンプレート情報
５０Ａ、５０Ｂ、５０Ｃ  入出力装置
５１Ａ、５１Ｂ、５１Ｃ  送受信部
５２Ａ、５２Ｂ、５２Ｃ  データ片記憶部
５３Ａ０、５３Ａ１、５３Ｂ０、５３Ｂ１、５３Ｂ２、５３Ｂ３０、５３Ｃ０、５３Ｃ１、５３Ｃ２、５３Ｃ３  データ生成部
５４Ａ０、５４Ａ１、５４Ｂ０〜５４Ｂ３、５４Ｃ０〜５４Ｃ３  入力
５５Ａ０、５５Ａ１、５５Ｂ０〜５５Ｂ３、５５Ｃ０〜５５Ｃ３  テンプレート記憶部
５６Ａ０、５６Ａ１、５６Ｂ０〜５６Ｂ３、５６Ｃ０〜５６Ｃ３  データ片生成部
５７Ａ、５７Ｂ、５７Ｃ、５８Ａ０、５８Ａ１、５８Ｂ０〜５８Ｂ３、５８Ｃ０〜５８Ｃ３  データ片
【図１】
2005174105.tif 000003
【図２】
2005174105.tif 000004
【図３】
2005174105.tif 000005
【図４】
2005174105.tif 000006
【図５】
2005174105.tif 000007
【図６】
2005174105.tif 000008
【図７】
2005174105.tif 000009
【図８】
2005174105.tif 000010
【図９】
2005174105.tif 000011
【図１０】
2005174105.tif 000012
【図１１】
2005174105.tif 000013
【図１２】
2005174105.tif 000014
【図１３】
2005174105.tif 000015
【図１４】
2005174105.tif 000016
【図１５】
2005174105.tif 000017
【図１６】
2005174105.tif 000018
【図１７】
2005174105.tif 000019
【図１８】
2005174105.tif 000020
【図１９】
2005174105.tif 000021
【図２０】
2005174105.tif 000022
【図２１】
2005174105.tif 000023