(57)【特許請求の範囲】
【請求項１】
複数の通信ノードと、前記通信ノード間通信を中継するスイッチとを含めて構成されるプログラマブルコントローラであって、
前記各通信ノードは、他通信ノードとの間で周期的にデータを通信し続ける周期的フローごとに、その周期的フローの周期と、その周期からの送信タイミングと、通信相手の他通信ノードとを対応づける送受信順序データを自通信ノード内の記憶手段に格納しており、その送受信順序データに従って、他通信ノードとの間で前記周期的フローを周期から前記送信タイミングだけずらした時刻に通信し、
前記スイッチは、前記周期的フローを中継するための前記スイッチの設定として、前記周期的フローの周期と、その周期からの前記送信タイミングと、前記周期的フローの送信元および送信先とを対応づける切替順序データを記憶手段に格納しており、その切替順序データに従って、前記周期的フローの送信元の前記通信ノードに接続される入力端子と、前記周期的フローの送信先の前記通信ノードに接続される出力端子とを、前記周期的フローの周期から前記送信タイミングだけずらした時刻に接続するクロスバスイッチとして動作し、
前記プログラマブルコントローラの構成制御部は、複数の前記周期的フローについて、その送信元と、送信先と、周期とが入力されると、送信元および周期の組み合わせが一致する複数の前記周期的フローと、送信先および周期の組み合わせが一致する複数の前記周期的フローとをそれぞれ衝突するフロー群として抽出し、前記衝突するフロー群における前記送信タイミングについて、互いに異なるタイミングを計算して、前記切替順序データおよび前記送受信順序データに書き出すことを特徴とする
プログラマブルコントローラ。
【請求項２】
前記スイッチは、前記周期的フローに加えて、送信回数が１回であるオンデマンドフローを前記通信ノード間通信として中継し、
前記プログラマブルコントローラの構成制御部は、前記オンデマンドフローの送信時刻と送信元と送信先とが入力されると、そのオンデマンドフローと送信元および送信時刻の組み合わせが一致する前記周期的フローと、そのオンデマンドフローと送信先および送信時刻の組み合わせが一致する前記周期的フローとを、前記切替順序データ内の前記周期的フローから抽出し、前記オンデマンドフローの送信時刻を、抽出した衝突する前記周期的フローの送信時刻よりも後にずらすことを特徴とする
請求項１に記載のプログラマブルコントローラ。
【請求項３】
前記スイッチは、前記周期的フローの送信元の前記通信ノードに接続される１つの入力端子と、前記周期的フローの送信先の複数の前記通信ノードに接続される複数の出力端子とを、前記周期的フローの周期から前記送信タイミングだけずらした時刻に接続することを特徴とする
請求項１または請求項２に記載のプログラマブルコントローラ。
【請求項４】
前記各通信ノードは、他通信ノードとの間で生存通知信号を通信し、所定時間以上、所定の前記通信ノードとの間で前記生存通知信号が通知されないことを検知すると、所定の前記通信ノードを対象とした前記周期的フローの登録データを自通信ノードの前記送受信順序データから削除することを特徴とする
請求項１ないし請求項３のいずれか１項に記載のプログラマブルコントローラ。
【請求項５】
１つ以上の前記通信ノードは、制御対象であるプラント機器と接続されており、前記プラント機器から受信した計測データ、および、前記プラント機器へ送信する前記プラント機器の制御用データを、前記周期的フローの通信データとすることを特徴とする
請求項１ないし請求項４のいずれか１項に記載のプログラマブルコントローラ。
【請求項６】
複数の通信ノードと、前記通信ノード間通信を中継するスイッチとを含めて構成されるプログラマブルコントローラによる通信制御方法であって、
前記各通信ノードは、他通信ノードとの間で周期的にデータを通信し続ける周期的フローごとに、その周期的フローの周期と、その周期からの送信タイミングと、通信相手の他通信ノードとを対応づける送受信順序データを自通信ノード内の記憶手段から読み出し、その送受信順序データに従って、他通信ノードとの間で前記周期的フローを周期から前記送信タイミングだけずらした時刻に通信し、
前記スイッチは、前記周期的フローを中継するための前記スイッチの設定として、前記周期的フローの周期と、その周期からの前記送信タイミングと、前記周期的フローの送信元および送信先とを対応づける切替順序データを記憶手段から読み出し、その切替順序データに従って、前記周期的フローの送信元の前記通信ノードに接続される入力端子と、前記周期的フローの送信先の前記通信ノードに接続される出力端子とを、前記周期的フローの周期から前記送信タイミングだけずらした時刻に接続するクロスバスイッチとして動作し、
前記プログラマブルコントローラの構成制御部は、複数の前記周期的フローについて、その送信元と、送信先と、周期とが入力されると、送信元および周期の組み合わせが一致する複数の前記周期的フローと、送信先および周期の組み合わせが一致する複数の前記周期的フローとをそれぞれ衝突するフロー群として抽出し、前記衝突するフロー群における前記送信タイミングについて、互いに異なるタイミングを計算して、前記切替順序データおよび前記送受信順序データに書き出すことを特徴とする
通信制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラマブルコントローラ、および、通信制御方法の技術に関する。
【背景技術】
【０００２】
プログラマブルコントローラは、接続される制御対象機器に対して、制御用データの読み書きを行う装置である。制御対象機器として、例えば、鉄鋼の圧延における高速に流れる鉄を圧縮する複数のローラーが挙げられる。鉄鋼の形状を高精度で作成するためには、プログラマブルコントローラの制御処理について、ミリ秒単位の高いリアルタイム性が要求される。
【０００３】
プログラマブルコントローラは、製鉄プラントの１０００点以上のセンサやアクチュエータとデータをやり取りするＩ／Ｏモジュール、制御のための計算を行うプロセッサモジュール、コンソール計算機と通信を行うネットワークモジュールなど複数のモジュールから構成されている。複雑な制御を行う場合の並列制御のためや故障時のバックアップのために、同一種類のモジュールを複数個内蔵するプログラマブルコントローラも存在する。
【０００４】
それらのモジュールは、バックボードと呼ばれる板状の装置に並べて差し込み固定することにより、相互接続される。このバックボードにはパラレルバスが敷設されており、モジュールはその同一のパラレルバスに並列に接続されることが多かった。
しかし、単一パラレルバスによる接続は、拡張性や保守性が悪い、ある２つのモジュール間で通信中は別のモジュールは通信をしたくても待たされてしまうためにリアルタイム性が低い、などの問題がある。
【０００５】
そのため、特許文献１，２にあるようなモジュールにシリアルリンクの入出力を設け、別途設けたシリアルリンクのスイッチを介してモジュールのシリアルリンクを相互接続する構成が考えられてきた。シリアルリンクはパラレルバスに比べて高速化が容易であり、線の本数も少ないので保守性がよい。また、スイッチによる相互接続によれば、ある２つのモジュール間が通信中であっても別のモジュール間での通信を並列で行うことが可能となる。
【０００６】
シリアルリンク上でリアルタイム通信を行っている例として国際標準のネットワークであるＰＲＯＦＩｎｅｔがある。これはタイムスロット制御を用いた方式である。一定の時間間隔で区切ったタイムスロットで複数のモジュール間でネットワークを共有するものである。
各モジュールについてネットワークにデータを出力してよいタイムスロットが決められており、各モジュールはそのタイムスロットになったときにのみデータを出力する。タイムスロットは一定の周期で一周するので、その周期の間にはデータが必ず送受信できるので、リアルタイム性が保証される。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１０−１５２８７２号公報
【特許文献２】特開２００８−２５７７０６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
特許文献１，２で開示されているシリアルリンクとスイッチによりモジュールが接続されたシステムでは、データを送信するときにそのデータをどのモジュールに送りたいのかという宛先情報をヘッダとして付加してパケットの形で送信する。スイッチが一度その送信されたパケットを受信し、宛先情報を見てスイッチの接続を切り替えて宛先のモジュールに対してパケットを送信する。
【０００９】
しかし、このパケット方式では、プログラマブルコントローラで扱われる制御データのデータ量（オン／オフの入出力情報ならば１ビット、アナログの情報でも２バイト）に対して、そのデータごとに付されるヘッダのデータ量が多くなってしまい、伝送効率が悪く、リアルタイム性も低くなる。
【００１０】
また、ＰＲＯＦＩｎｅｔのようにタイムスロット制御を用いてリアルタイム性を保証する方式では、定められたタイムスロットが来ないとデータの送信ができず、最大タイムスロットが一周する周期分送信が待たされる可能性があり、応答速度の低下やスループットの低下の問題がある。
【００１１】
そこで、本発明は、前記した問題を解決し、スイッチを介して制御データを伝送するときに、その伝送効率およびリアルタイム性を向上させることを、主な目的とする。
【課題を解決するための手段】
【００１２】
前記課題を解決するために、本発明は、複数の通信ノードと、前記通信ノード間通信を中継するスイッチとを含めて構成されるプログラマブルコントローラであって、
前記各通信ノードが、他通信ノードとの間で周期的にデータを通信し続ける周期的フローごとに、その周期的フローの周期と、その周期からの送信タイミングと、通信相手の他通信ノードとを対応づける送受信順序データを自通信ノード内の記憶手段に格納しており、その送受信順序データに従って、他通信ノードとの間で前記周期的フローを周期から前記送信タイミングだけずらした時刻に通信し、
前記スイッチが、前記周期的フローを中継するための前記スイッチの設定として、前記周期的フローの周期と、その周期からの前記送信タイミングと、前記周期的フローの送信元および送信先とを対応づける切替順序データを記憶手段に格納しており、その切替順序データに従って、前記周期的フローの送信元の前記通信ノードに接続される入力端子と、前記周期的フローの送信先の前記通信ノードに接続される出力端子とを、前記周期的フローの周期から前記送信タイミングだけずらした時刻に接続するクロスバスイッチとして動作し、
前記プログラマブルコントローラの構成制御部が、複数の前記周期的フローについて、その送信元と、送信先と、周期とが入力されると、送信元および周期の組み合わせが一致する複数の前記周期的フローと、送信先および周期の組み合わせが一致する複数の前記周期的フローとをそれぞれ衝突するフロー群として抽出し、前記衝突するフロー群における前記送信タイミングについて、互いに異なるタイミングを計算して、前記切替順序データおよび前記送受信順序データに書き出すことを特徴とする。
その他の手段は、後記する。
【発明の効果】
【００１３】
本発明によれば、スイッチを介して制御データを伝送するときに、その伝送効率およびリアルタイム性を向上させることができる。
【図面の簡単な説明】
【００１４】
【図１】本発明の一実施形態に関するプログラマブルコントローラを示す構成図である。
【図２】本発明の一実施形態に関するスイッチの切り替え機構（ＳＷ）を示す説明図である。
【図３】本発明の一実施形態に関するプログラマブルコントローラの内部のハードウェア構成を示す構成図である。
【図４】本発明の一実施形態に関する図３の構成処理部および送受信部の詳細を示す構成図である。
【図５】本発明の一実施形態に関する２つのフローが衝突する事例を示す説明図である。
【図６】本発明の一実施形態に関する図５の２つのフローについて、タイミングをずらすことにより衝突回避する事例を示す説明図である。
【図７】本発明の一実施形態に関する通信制御の全体処理を示すフローチャートである。
【図８】本発明の一実施形態に関するオンデマンド通信調停タスクおよび受信タスクを示すフローチャートである。
【図９】本発明の一実施形態に関する周期送信データの受信処理を示すフローチャートである。
【図１０】本発明の一実施形態に関する切替順序データの構築処理を示すフローチャートである。
【図１１】本発明の一実施形態に関する送受信順序データの配信処理を示すフローチャートである。
【図１２】本発明の一実施形態に関する周期送信タスクの生成処理により生成されるタスクを示すフローチャートである。
【図１３】本発明の一実施形態に関する生死監視タスクの生成処理により生成されるタスクを示すフローチャートである。
【図１４】本発明の一実施形態に関するスイッチ設定タスクの生成処理により生成されるタスクを示すフローチャートである。
【発明を実施するための形態】
【００１５】
以下、本発明の一実施形態を、図面を参照して詳細に説明する。
【００１６】
図１（ａ）は、プログラマブルコントローラ９を示す構成図である。プログラマブルコントローラ９は、通信装置（ノード）としての各モジュール１（ｐ０，ｐ１，ｉｏ０，ｉｏ１）が、スイッチ２に接続される構成である。各モジュール１は、自装置からスイッチ２に接続されるシリアルライン（両方向の通信対応）を介して、他のモジュール１と通信する。
なお、モジュール１ごとに、そのモジュールを特定するためのＩＤが割り当てられている。ｐから始まるモジュールＩＤはプロセッサモジュールを示し、ｉｏから始まるモジュールＩＤはＩ／Ｏ（Input／Output）モジュールを示す。Ｉ／Ｏモジュール１（ｉｏ０，ｉｏ１）には、それぞれ制御対象機器７（センサ、アクチュエータなど）が接続されている。
例えば、制御対象機器７（センサ）から取得したデータは、そのセンサに接続されるモジュール１（ｉｏ０）からスイッチ２を経由して、モジュール１（ｐ１）へと出力される（矢印を参照）。
【００１７】
図１（ｂ）は、プログラマブルコントローラ９の外観図である。スイッチ２のバックボード（基盤）上に、スイッチ２の切り替え機構（ＳＷ）と、そのＳＷへの入出力端子が接続されるシリアルリンクとが形成される。各モジュール１を各シリアルリンクのコネクタに差し込むことにより、各モジュール１とスイッチ２とを通信可能に相互接続する。
【００１８】
図２は、スイッチ２の切り替え機構（ＳＷ）を示す説明図である。この図２では、クロスバスイッチとして、上部に入力端子群を配置し、左部に出力端子群を配置している。データ信号線として、各入力端子からは縦線が示されており、各出力端子からは横線が示されており、縦線と横線とで格子状をなしている。
これらの端子群には端子名（Ａ，ｐ０など）が記載されており、１つの端子（例えば、「ｐ０」の端子）が１つのモジュール１（例えば、図１のモジュール１「ｐ０」）に対応する。なお、端子名「Ａ」は、調整信号の伝達用端子であり、どのモジュール１にも対応していない。
【００１９】
例えば、入力端子「ｉｏ０」の縦線と、出力端子「ｐ１」の横線との交点箇所を「ＯＮ」にすることにより、モジュール１「ｉｏ０」からモジュール１「ｐ１」への送信が可能になる（図１（ａ）の矢印参照）。一方、「ＯＮ」になっていない交点箇所は、送信を許可しない箇所である。
以下の説明では、スイッチの設定を「ＳＷ（入力端子ＩＤ，出力端子ＩＤ，ＯＮまたはＯＦＦ）」と表記する。例えば、前記したモジュール１「ｉｏ０」からモジュール１「ｐ１」への送信を許可する設定は、「ＳＷ（ｉｏ０，ｐ１，ＯＮ）」と表記される。
【００２０】
なお、１つの入力端子から複数の出力端子を「ＯＮ」にするときには、入力端子から入力された同じデータが複数の出力端子に出力される（同一データの冗長送信処理）。例えば、ＳＷ（ｐ１，ｉｏ０，ＯＮ）と、ＳＷ（ｐ１，ｉｏ１，ＯＮ）とが同じ時刻に設定されたときには、モジュール１「ｐ１」から入力された同じデータが、モジュール１「ｉｏ０」と、モジュール１「ｉｏ１」とにそれぞれ出力される。
【００２１】
また、複数の入力端子から１つの出力端子を「ＯＮ」にするときには、入力端子から入力された複数のデータのうちの１つのデータだけが他のデータを上書きしつつ１つの出力端子に出力される。例えば、ＳＷ（ｐ０，ｉｏ０，ＯＮ）と、ＳＷ（ｐ１，ｉｏ０，ＯＮ）とが同じ時刻に設定されたときには、出力端子に近いモジュール１「ｐ０」から入力されたデータが、出力端子から遠いモジュール１「ｐ１」から入力されたデータを上書きして、モジュール１「ｉｏ０」に出力される（同一出力へのデータ衝突）。このとき、モジュール１「ｐ１」から入力されたデータは、上書きされることにより、出力端子に出力されることなく、損失してしまう。
なお、スイッチ２の初期状態では、全てのＳＷが「ＯＮ」の状態となる。
【００２２】
図３は、プログラマブルコントローラ９の内部のハードウェア構成を示す構成図である。
【００２３】
まず、図１で示した４つのモジュール１のうち、モジュール１（ｐ０）と、モジュール１（ｉｏ０）とを図３で示している。この２つのモジュール１の内部構成の違いは、構成処理部３を有しているか（ｐ０）、有していないか（ｉｏ０）の違いである。以下、構成処理部３を有しているモジュール１（ｐ０）を「メインモジュール」と呼び、構成処理部３を有していないモジュール１（ｐ１，ｉｏ０，ｉｏ１）を「サブモジュール」と呼ぶ。なお、送受信部４は、メインモジュールにも、サブモジュールにも存在する。
【００２４】
各モジュール１は、タイマ８１ａを内蔵するＣＰＵ８１と、メモリ８２と、データ通信部８３とを有する。さらに、メインモジュールであるモジュール１（ｐ０）は、構成処理部３を動作させることで、スイッチ２との制御信号の送受信をするための通信部として、書込用通信部８４と、調停用通信部８５とを有する。一方、サブモジュールのうちのＩ／Ｏモジュール１（ｉｏ０）は、自装置から接続される制御対象機器７との間の通信を行うためのＩＯ用通信部８６を有する。
【００２５】
ＣＰＵ８１は、内蔵されたタイマ８１ａにより時刻の管理を行うとともに、設定した時間経過ごとに割り込みを発生させるなどの制御処理を行う。
メモリ８２は、ＣＰＵ８１が実行する各処理部のプログラム（構成処理部３、送受信部４など）や、各処理部がアクセスする各種データが記憶されている。
データ通信部８３は、シリアルリンクと接続されており、ＣＰＵ８１の指示に従ってデータ信号の通信を行う。
書込用通信部８４は、スイッチ設定レジスタ２２へのスイッチ設定データの書込みを行う。
調停用通信部８５は、オンデマンド通信（必要となったときに要求に応じて行う周期的ではない通信）により、スイッチ２への調停用信号を通信する。
【００２６】
スイッチ２は、モジュール１と通信するための通信部８９に加え、タイマ８１ａを内蔵するＣＰＵ８１と、メモリ８２と、設定出力部２１と、スイッチ設定レジスタ２２とを有する。
設定出力部２１は、書込用通信部８４から通信部８９を介して受信したスイッチ設定データを、スイッチ設定レジスタ２２に書き出す。
スイッチ設定レジスタ２２は、スイッチの設定データが書き込まれるレジスタ領域であり、このレジスタに値を書き込むことにより、スイッチ（ＳＷ）のＯＮ／ＯＦＦが制御される（図２参照）。
【００２７】
以上、図３では、構成処理部３を有するメインモジュールをモジュール１（ｐ０）として説明した。一方、構成処理部３を有する装置は、他のモジュール１（ｉｏ０など）としてもよいし、スイッチ２としてもよい。例えば、スイッチ２がメインモジュールとして動作する場合には、モジュール１（ｐ０）が他のモジュールと同じサブモジュールとして動作し、スイッチ２が自ら作成したスイッチ設定データをスイッチ設定レジスタ２２に設定する。
【００２８】
図４は、図３の構成処理部３および送受信部４の詳細を示す構成図である。
構成処理部３は、構成制御部３１と、スイッチ切替指示部３２と、周期送信データ３３と、二重系データ３４と、切替順序データ３５とを含めて構成される。
送受信部４は、通信制御部４１と、送受信順序データ４２と、送信データ格納部４３と、受信データ格納部４４とを含めて構成される。
【００２９】
周期送信データ３３は、各モジュール１が送信予定のフローごとに、そのフローの送信周期などの情報を定義するデータであり、管理者などによりあらかじめ入力されている。
二重系データ３４は、送信先のモジュール１を主系と従系との二重系として定義するデータであり、主系のモジュール１と従系のモジュール１とに同じデータが冗長送信される。この二重系データ３４も、管理者などによりあらかじめ入力されている。
【００３０】
構成制御部３１は、周期送信データ３３および二重系データ３４を入力として、送受信順序データ４２および切替順序データ３５を生成して出力する。
切替順序データ３５は、スイッチ２を切り替える箇所および順番の情報である。
スイッチ切替指示部３２は、切替順序データ３５が作成されると、その切替順序データ３５をスイッチ２の設定出力部２１へ送信することで、スイッチ２の切り替えを指示する。
設定出力部２１は、受信した切替順序データ３５に基づき、スイッチ設定レジスタ２２に時間の経過に応じてスイッチの切替情報を設定する。
【００３１】
送受信順序データ４２は、各モジュール１がフローの送受信を行うタイミングを定義するデータである。
通信制御部４１は、タイマ８１ａから取得した時刻情報をもとに、送受信順序データ４２のタイミングに沿って、送信データ格納部４３および受信データ格納部４４を介してフローのデータ送受信を行う。
送信データ格納部４３は、自装置から他装置へ送信するデータを格納する送信バッファである。
受信データ格納部４４は、他装置から自装置が受信したデータを格納する受信バッファである。
【００３２】
図５は、２つのフローが衝突する事例を示す説明図である。
【００３３】
図５（ａ）において、２つのフローを同じ周期４ｎごとに流す例を示す。１つめのフローは、モジュール１（ｐ０）からモジュール１（ｐ１）へデータが送信されるフローであり、送信先のモジュール１（ｐ１）と並行して、二重系の従系のモジュール１（ｉｏ１）にも、モジュール１（ｐ１）と同じデータが送信される。２つめのフローは、モジュール１（ｐ１）からモジュール１（ｉｏ１）へデータが送信されるフローである。
【００３４】
図５（ｂ）において、図５（ａ）でのスイッチ２内部を示す。１つめのフローを送信するための設定「ＳＷ（ｐ０，ｐ１＆ｉｏ１，ＯＮ）」と、２つめのフローを送信するための設定「ＳＷ（ｐ１，ｉｏ１，ＯＮ）」とでは、送信先の「ｉｏ１」が同じであるために衝突が発生する。このままでは、２つめのフローのデータは、１つめのフローのデータによって上書きされて消失してしまう。
なお、「ＳＷ（ｐ０，ｐ１＆ｉｏ１，ＯＮ）」における「ｐ０」は入力端子ＩＤを、「ｐ１＆ｉｏ１」は出力端子ＩＤを示す。
【００３５】
図６は、図５の２つのフローについて、タイミングをずらすことにより衝突回避する事例を示す説明図である。
図６（ａ）では、１つめのフロー「ＳＷ（ｐ０，ｐ１＆ｉｏ１，ＯＮ）」について、図５（ｂ）と同様に、周期４ｎごとにスイッチ設定をして流す設定を示す。ここで、周期４ｎごとのスイッチ設定から２つめのフローを図６（ｂ）に移動させることにより、衝突を回避する。
【００３６】
図６（ｂ）では、２つめのフロー「ＳＷ（ｐ１，ｉｏ１，ＯＮ）」について、周期４ｎ＋１のタイミングにずらすことにより、１つめのフローとの衝突を回避する。
つまり、１つめのフローは、周期４ｎなので、ｔ＝０，４，８，１２…のタイミングで送信されるが、２つめのフローは、周期４ｎ＋１なので、ｔ＝１，５，９，１３…のタイミングで送信されることで、同時刻に２つのフローが送信されなくなる。
【００３７】
【表１】
0005411835.tif 000002
【００３８】
表１は、図６の状態に対応するモジュール１内の各データ構造を示す。
【００３９】
周期送信データ３３は、モジュール１ごとに、そのモジュールを送信元とするフローの送信周期（４ｎの場合、ｔ＝０，４，８，１２…のタイミング）と、送信先のモジュール１と、フローのデータアドレスと、フローのデータ長とが対応づけられて構成される。フローのデータアドレスと、フローのデータ長とは、送信データ格納部４３から送信用データを取得するために用いられる。
なお、表１では周期送信データ３３として、２つのモジュール１（ｐ０，ｐ１）のものをまとめて１つの表としたが、実際には、各モジュール１内の周期送信データ３３は、自装置に該当するレコード分だけ保持すればよい。よって、周期送信データ３３内のモジュール列は、各モジュール１内に格納されるときには、省略可能である。
【００４０】
二重系データ３４は、冗長系構成の主系のモジュール１を特定する「主モジュール」と、冗長系構成の従系のモジュール１を特定する「従モジュール」とを対応づけて構成される。なお、二重系とは冗長系構成の一例であり、「従モジュール」を２つに限定せずに３つ以上とすることで、ｎ重系の冗長系構成としてもよい。
【００４１】
切替順序データ３５は、スイッチ設定レジスタ２２の設定情報である。切替順序データ３５の送信時期（周期＋タイミング）ごとに、ＳＷ（送信元，送信先，ＯＮ）によってスイッチをオンにすることで、レコードのフロー（データアドレス、データ長）が示すデータの中継を行う。タイミング列は、同じ送信先の複数のフローが同じ周期で重なったときに、通信のタイミングをずらすための時刻情報である。
なお、多重化列が「１」であるときには、切替順序データ３５の送信先列を検索キーとして、二重系データ３４の主モジュール列を検索し、検索された二重系データ３４の従モジュール列に記載されるモジュール１も、送信先に追加する。
【００４２】
送受信順序データ４２は、モジュール１ごとに、そのモジュール１が送受信するフローをリストアップしたデータである。送受信する時刻は、送受信順序データ４２の周期＋タイミング列で特定され、送受信する相手の装置および送受信方向は、相手列（多重化する場合には、多重化列も含める）と送受列で特定され、送受信するデータは、データ長により特定される。
なお、送受信順序データ４２も、周期送信データ３３と同様に、複数のモジュール１（ｐ０，ｐ１，ｉｏ１）のものをまとめて１つの表としたが、実際には、各モジュール１内の送受信順序データ４２は、自装置に該当するレコード分だけ保持すればよい。よって、送受信順序データ４２内のモジュール列は、各モジュール１内に格納されるときには、省略可能である。
【００４３】
構成制御部３１は、例えば、以下の手順により、入力データ（周期送信データ３３，二重系データ３４）から出力データ（切替順序データ３５，送受信順序データ４２）を作成する。
【００４４】
まず、切替順序データ３５は、例えば、以下のように作成される。
周期送信データ３３のモジュール列を、切替順序データ３５の送信元列とする。
周期送信データ３３の送信先列を、切替順序データ３５の送信先列とする。
周期送信データ３３の＜データアドレス、データ長＞列を、切替順序データ３５の＜データアドレス、データ長＞列とする。
周期送信データ３３の送信先列の値が、二重系データ３４の主モジュール列のいずれかの値に一致したときには、切替順序データ３５の多重化列を「１」とし、一致しないときには「０」とする。
切替順序データ３５の周期列、送信元列、および、送信先列を参照してフローの衝突判定を行い、その結果、衝突するフロー同士のタイミングを互いに異なる値（例えば、０と１）として設定する。フローの衝突判定は、以下の通りである。
・周期が同じ、かつ、送信元が同じ複数のフローを、衝突するフロー群とする。
・周期が同じ、かつ、送信先が同じ複数のフローを、衝突するフロー群とする。ここで、多重化列が「１」であるときには、送信先として二重系データ３４の従モジュールも追加する。例えば、表１の切替順序データ３５について、１行目のフローの送信先が「ｐ１」であり、２行目のフローの送信先が「ｉｏ１」であるため、このフローの送信先は一見衝突しない。しかし、１行目は多重化列が「１」であり、１行目のフローの送信先が「ｐ１」だけでなく従系の「ｉｏ１」も存在するため、２つのフローは衝突する。
【００４５】
次に、送受信順序データ４２は、例えば、以下のように作成される。
周期送信データ３３のモジュール列を、送受信順序データ４２のモジュール列とする。ここで、周期送信データ３３の１つのレコード（例えば、１行目のｐ０からｐ１へ送信する旨のレコード）を、送受信順序データ４２では２つのレコード（ｐ０からｐ１へ送信する旨のレコード，ｐ１からｐ０へ受信する旨のレコード）に分割する。
切替順序データ３５の＜周期、タイミング＞列を、送受信順序データ４２の＜周期、タイミング＞列とする。
周期送信データ３３の送信先列を、送受信順序データ４２の相手列とする。そして、前記したように、送受信順序データ４２で２つのレコードに分割したときの、相手への送信か（送）、相手からの受信か（受）を示す情報を、送受信順序データ４２の送受列に格納する。
周期送信データ３３のデータ長列を、送受信順序データ４２のデータ長列とする。
切替順序データ３５の多重化列を、送受信順序データ４２の多重化列とする。
【００４６】
さらに、各モジュール１は、他のモジュール１との間で生存通知信号を通信し、所定時間以上、所定のモジュール１との間で生存通知信号が通知されないことを検知すると、所定のモジュール１を対象とした登録データを自通信ノードの送受信順序データ４２から削除することにより、障害が発生した他のモジュール１に対して無駄な通信を行うことを抑制できる。
【００４７】
以上、図６の状態に対応するモジュール１内の各データ構造を説明した。これらのデータ構造は、スイッチ２が転送するフローのうちの周期的な（あらかじめ計画された）フローについての情報を示すものである。一方、スイッチ２は、周期的なフローだけでなく、突発的な（１回の通信だけを行う）フローも、オンデマンド通信として扱う。
【００４８】
以下に示すように、周期的なフローと、オンデマンドのフローとを併用するときには、周期的なフローの送信が、オンデマンドのフローの送信よりも優先される。例えば、送信先が同じである周期的なフローＦ１，Ｆ２は、ともに周期４ｎで送信され、送信先が同じであるオンデマンドのＦ３は、ｔ＝１２の１回だけ送信されるとする。タイミングをずらさないと、以下のように衝突が発生する。
フローＦ１：ｔ＝０，４，８，１２，１６，２０…
フローＦ２：ｔ＝０，４，８，１２，１６，２０…
フローＦ３：ｔ＝１２
【００４９】
そこで、まず周期的なフローＦ１，Ｆ２間の衝突を解消するため、フローＦ２のタイミングを１つずらす。さらに、周期的なフローと、オンデマンドのフローとの衝突を解消するため、フローＦ３の送信時刻を、他の各周期的なフローの送信時刻よりも大きく（＋２だけ）ずらす。これにより、各フローＦ１，Ｆ２，Ｆ３は、互いに衝突が発生しない。
フローＦ１：ｔ＝０，４，８，１２，１６，２０…（タイミング＋０）
フローＦ２：ｔ＝１，５，９，１３，１７，２１…（タイミング＋１）
フローＦ３：ｔ＝１４（タイミング＋２）
【００５０】
図７は、通信制御の全体処理を示すフローチャートである。以下の説明では、モジュール１（ｐ０）をメインモジュールとし、他のモジュール１（ｉｏ０など）をサブモジュールとして説明する。なお、図７では、サブモジュールとしてｉｏ０を例示したが、他のモジュールも同じ動作をする。
【００５１】
まず、図７の処理を開始する前に実行される前処理（モジュール間のタイマ８１ａの時刻同期処理）を説明する。メインモジュール１（ｐ０）は、モジュール間の時刻を同期するための信号を調停用通信部８５を介してサブモジュール１（ｉｏ０）に送信する。そして、信号を送信または受信した各モジュール１は、タイマ８１ａをリセットする。
【００５２】
以下、図７の処理について、説明する。
Ｓ１１では、メインモジュール１（ｐ０）は、オンデマンド通信調停タスクの生成を行う（図８（ａ）参照）。オンデマンド通信は周期的な通信ではなく必要となったときにモジュールから要求に応じて行われる通信である。モジュールからの要求を調停するのが、このオンデマンド調停タスクの役割である。
Ｓ１２では、各モジュール１は、受信タスクを生成する（図８（ｂ）参照）。ここでは、シリアルリンクからの受信を行うタスクが生成される。このタスクは周期的な通信もオンデマンド通信も両方の受信を受け持つ。
Ｓ１３では、メインモジュール１（ｐ０）は、切替順序データ３５を初期化する。
【００５３】
Ｓ１４ａでは、サブモジュール１（ｉｏ０）は、自装置のメモリから読み込んだ周期送信データ３３を、オンデマンド通信でメインモジュール１（ｐ０）に対して送信する。オンデマンド通信の送信手順は、以下の手順１，２の通りである。
（手順１）オンデマンド通信の送信要求を出力する。そして、出力した次のサイクルで送信許可を受信する。送信許可を受信できなかったときには送信が許可されなかったと判断して、次のサイクルで再び送信要求を出力する。
（手順２）送信が許可された場合には次のサイクルにおいてデータ送信を行う。
Ｓ１４ｂでは、メインモジュール１（ｐ０）は、Ｓ１４ａで送信された周期送信データ３３を受信する（図９参照）。全てのサブモジュール１から周期送信データ３３を受信すると、Ｓ１５へ進む。
Ｓ１５では、メインモジュール１（ｐ０）は、受信した各モジュール１の周期送信データ３３をもとに、切替順序データ３５を構築する（図１０参照）。
Ｓ１６ａでは、メインモジュール１（ｐ０）は、受信した各モジュール１の周期送信データ３３をもとに、各モジュール１用の送受信順序データ４２を作成して、各モジュール１に配信する（図１１参照）。
Ｓ１６ｂでは、サブモジュール１（ｉｏ０）は、Ｓ１６ａで送信された送受信順序データ４２をオンデマンド通信で受信する。次に、受信した送受信順序データ４２を各モジュール１の送受信順序データ４２を保持するメモリ８２内の領域に格納する。
【００５４】
Ｓ２１では、各モジュール１は、周期的な通信を行う周期送信タスクを生成する（図１２参照）。
Ｓ２２では、各モジュール１は、モジュールの故障を検出できるようにするために正常に動作していることを表す生存通知データを周期的に送信データ格納部４３に書き込む生存通知タスクを生成する。この生存通知タスクでは、まず、タイマから割り込みを待つ。次に、送信データ格納部４３中にある生存通知データの値をインクリメントして更新する。生存通知データは、周期送信データ３３に設定しておくことにより、周期的に他のモジュールに送信される。
Ｓ２３では、メインモジュール１（ｐ０）は、各モジュール１が生存通知情報を更新していることを監視する生死監視タスクを生成する（図１３参照）。
Ｓ２４では、メインモジュール１（ｐ０）は、Ｓ１５で構築した切替順序データ３５をもとに、スイッチを設定するタスクを生成する（図１４参照）。
【００５５】
図８（ａ）は、Ｓ１１で生成されるオンデマンド通信調停タスクを示すフローチャートである。
Ｓ１０１では、オンデマンド通信は、通信を行いたいモジュールが周期通信が行われていないタイミングで、調停用通信部８５に対して送信要求を送信することから始まる。よって、その送信要求が来るまで受信待ちをする。
Ｓ１０２では、メモリにある次サイクルスイッチ情報を読み出す。次サイクルスイッチ情報は、次のサイクルにスイッチ設定レジスタに設定する情報を保持している領域である。
Ｓ１０３では、受信した送信要求の送信元のスイッチが次サイクルに空いているかチェックしている。Ｓ１０３でＹｅｓならＳ１０４に進み、ＮｏならＳ１０１に戻る。
Ｓ１０４では、受信した送信要求の送信先のスイッチが次サイクルに空いているかチェックしている。Ｓ１０４でＹｅｓならＳ１０５に進み、ＮｏならＳ１０１に戻る。
Ｓ１０５では、要求元に送信許可を送信する。
Ｓ１０６では、送信元と送信先との間のスイッチが次にオンになるように次サイクルスイッチ情報を更新し、Ｓ１０１に戻る。
【００５６】
図８（ｂ）は、Ｓ１２で生成される受信タスクを示すフローチャートである。
Ｓ１１１では、モジュール１のデータ通信部８３がデータを受信し、割り込みによりＣＰＵ８１にそれを通知してくるのを待つ。
Ｓ１１２では、Ｓ１１１での受信処理がオンデマンド通信かどうか判断する。この判断は受信したデータのヘッダなどに種別を入れることによっても判断可能であるし、送受信順序データ４２に周期通信の受信として登録されているかどうか調べることによっても判断可能である。Ｓ１１２でＹｅｓならＳ１１４に進み、ＮｏならＳ１１３に進む。
Ｓ１１３では、受信データ格納部４４にデータを格納する。
Ｓ１１４では、オンデマンド通信の受信待ちをしているタスク（Ｓ１６ｂ、後記するＳ２０１など）に通知する。なお、アプリケーションプログラムでも必要に応じてオンデマンド通信が行われるので、それらのアプリケーションプログラムにも通知してもよい。
【００５７】
図９は、周期送信データ３３の受信処理（Ｓ１４ｂ）を示すフローチャートである。
【００５８】
Ｓ２０１では、オンデマンド通信で周期送信データ３３が送られてくるの待つ。
Ｓ２０２では、Ｓ２０１で受信した周期送信データ３３の各エントリを読み出す。
Ｓ２０３では、Ｓ２０１で受信した周期送信データ３３の全てのエントリを読み出しが終わったか否かを判断する。Ｓ２０３でＹｅｓなら図９の処理を終了し、ＮｏならＳ２０４に進む。
Ｓ２０４では、読み出した周期送信データ３３のエントリに対応して、切替順序データ３５に周期の短い順になるように新しくエントリを作成する。
Ｓ２０５では、作成したエントリに周期送信データ３３のエントリの情報を元に周期、送信元、送信先、データ長をライトする。
Ｓ２０６では、送信先が二重系データ３４のエントリの主系の中にあるか否かを判断する。Ｓ２０６でＹｅｓならＳ２０８に進み、ＮｏならＳ２０７に進む。
Ｓ２０７では、Ｓ２０４で作成したエントリの多重化の欄に０をライトする。
Ｓ２０８では、Ｓ２０４で作成したエントリの多重系の欄に１をライトする。
Ｓ２０９では、切替順序データ３５に二重系データ３４の従系を送信先とした同じエントリを作成する。これにより主系と従系とに同じデータが送信されるようになる。
【００５９】
図１０は、切替順序データ３５の構築処理（Ｓ１５）を示すフローチャートである。なお、切替順序データ３５のレコードは、周期送信データ３３の受信処理（Ｓ１４ｂ）の時点で既にできている。図１０の処理により、切替順序データ３５のレコードのうちの送信先が同じ通信が重ならないようにタイミング情報を生成する。
【００６０】
Ｓ３０１では、切替順序データ３５の各エントリのタイミングの欄に「−１」を書込み、初期化している。
Ｓ３０２では、切替順序データ３５のどのエントリまでタイミング情報を生成したかを表すポインタｐを１に初期化している。
Ｓ３０３では、切替順序データ３５のｐ番目のエントリを読み出しＥｐとしている。
Ｓ３０４では、全部のエントリを読み出し終わったか判断している。Ｓ３０４でＹｅｓなら図１０の処理を終了し、ＮｏならＳ３０５に進む。
Ｓ３０５では、読み出したエントリＥｐの周期、送信元、送信先をそれぞれＣｐ、Ｓｐ、Ｄｐとしている。
Ｓ３０６では、タイミング情報を計算するための変数Ｔｐを初期化している。
Ｓ３０７では、この後エントリＥｐよりも前にあるエントリと通信が競合しないかチェックする。そのために使用するエントリを指すポインタｉを１に初期化する。
Ｓ３０８では、ｉがｐまで進んだか判断している。Ｓ３０８でＹｅｓならＳ３２１に進み、ＮｏならＳ３０９に進む。
Ｓ３０９では、切替順序データ３５のｉ番目のエントリを読み出しＥｉとする。
Ｓ３１０では、Ｅｉの周期、送信元、送信先、タイミングをそれぞれＣｉ、Ｓｉ、Ｄｉ、Ｔｉとする。
Ｓ３１１では、ＥｐとＥｉのエントリの通信が競合しないか判断している。判定式「(Ti == Tp) &&((Si ==Sp) || (Di == Dp))」を満たす場合、つまり、タイミング情報ＴｉとＴｐが等しく、かつ、送信元か送信先が等しい場合には競合する。Ｓ３１１でＹｅｓならＳ３１３に進み、ＮｏならＳ３１２に進む。
Ｓ３１２では、ｉをインクリメントして次のエントリとの競合をチェックする。
Ｓ３１３では、競合する場合にはＥｐのタイミング情報Ｔｐを１増やす。
【００６１】
Ｓ３２１では、切替順序データ３５のｐ番目のタイミングをＴｐに設定する。
Ｓ３２２では、ｐをインクリメントして、次のエントリのタイミング情報の計算に進むためにＳ３０３に戻る。
【００６２】
図１１は、送受信順序データ４２の配信処理（Ｓ１６ａ）を示すフローチャートである。この図１１の処理は、各モジュール１を順番に選択し、選択されたモジュール１ごとに実行される。
【００６３】
Ｓ４０１では、送受信順序データ４２を作成するモジュール（選択されたモジュール１）の番号をｎに代入する。
Ｓ４０２では、切替順序データ３５からエントリを一つ読み出しＥに代入している。
Ｓ４０３では、エントリを最後まで読んだか否かを判定する。Ｓ４０３でＹｅｓならＳ４３１に進み、ＮｏならＳ４０４に進む。
Ｓ４０４では、エントリＥの送信元をＳ、送信先をＤに代入している。
Ｓ４１０では、送信元がｎと等しいか否かを判定している。Ｓ４１０でＹｅｓならＳ４１１に進み、ＮｏならＳ４２０に進む。
【００６４】
Ｓ４１１では、送受信順序データ４２に新しくエントリを作成する。
Ｓ４１２では、作成したエントリの送受の欄に送を設定する。
Ｓ４１３では、作成したエントリの相手の欄にＤを設定する。
Ｓ４１４では、作成したエントリにＥの周期、タイミング、データ長、多重化の内容をコピーして、Ｓ４０２に戻り、切替順序データ３５の次のエントリを処理対象のＥとする。
【００６５】
Ｓ４２０では、Ｄとｎが等しいか判断している。Ｓ４２０でＹｅｓならＳ４２１に進み、ＮｏならＳ４０２に戻る。
Ｓ４２１では、送受信順序データ４２に新しくエントリを作成する。
Ｓ４２２では、作成したエントリの送受の欄に受を設定する。
Ｓ４２３では、作成した相手の欄にＳを設定する。
【００６６】
Ｓ４３１では、ｎが自ノードか判断している。Ｓ４３１でＹｅｓならＳ４３３に進み、ＮｏならＳ４３２に進む。
Ｓ４３２では、作成した送受信順序データ４２をオンデマンド通信でノード番号ｎのモジュールに対して送信する。
Ｓ４３３では、送信する必要はないので、作成した送受信順序データ４２を自装置のメモリ８２内の領域に格納する。
【００６７】
図１２は、周期送信タスクの生成処理（Ｓ２１）により生成されるタスクを示すフローチャートである。この図１２のタスクは、タイマの周期で送受信順序データ４２に従い、フローのデータ送信を実行する。
【００６８】
Ｓ５０１では、ＣＰＵ８１のタイマ８１ａから割り込みが来るのを待つ。
Ｓ５０２では、タイマ８１ａの値を読み出しＴに代入する。
Ｓ５０３では、送受信順序データ４２からエントリを一つ読み出しＥに代入する。
Ｓ５０４では、エントリを最後まで読み出してしまったか判断している。Ｓ５０４でＹｅｓならＳ５０１に戻り、ＮｏならＳ５０４に進む。
【００６９】
Ｓ５０５では、Ｅの周期、送受、タイミングをそれぞれＣｅ、Ｓｅ、Ｔｅに代入する。
Ｓ５０６では、Ｅのデータ送信契機か否かを判定する。つまり、判定式「Se==送&&(T mod Ce)==Te」により、Ｅが表す通信が送であり、タイミングがタイマから読み出したＴの値の周期Ｃｅの剰余と一致しているか判断している。Ｓ５０６でＹｅｓならＳ５０７に進み、ＮｏならＳ５０３に戻る。
Ｓ５０７では、Ｅに対応する周期送信データ３３中のデータ送信を実行する。
【００７０】
図１３は、生死監視タスクの生成処理（Ｓ２３）により生成されるタスクを示すフローチャートである。この図１３のタスクは、各モジュールが正常に動作しているかを監視し、二重系の主系の動作の停止を検出したときには従系への切り替えを設定する。
【００７１】
Ｓ６０１では、タイマから割り込みが来るのを待つ。
Ｓ６０２では、受信データ格納部４４中の各モジュールの生存通知データが更新されているかチェックしている。各モジュールが実行する生存通知タスクと周期通信により、モジュールが正常に動作しているならば受信データ領域の生存通知データが周期的に更新される。これが更新されていないということはモジュールの動作に異常があったことを表す。
【００７２】
Ｓ６０３では、生存通知データに未変更のものがあるか調べる。Ｓ６０３でＹｅｓならＳ６０４に進み、ＮｏならＳ６０１に戻る。
Ｓ６０４では、未変更のモジュールのノード番号をｎに代入する。
【００７３】
Ｓ６０５では、ノードｎが図３中の二重系データ３４の主の欄に存在するかを調べる。Ｓ６０５でＹｅｓならＳ６０６に進み、ＮｏならＳ６０１に戻る。
Ｓ６０６では、二重系の従であるモジュールのノード番号をｍに代入している。以下、ノードｎのモジュールが故障したことを検出したのでノードｍのモジュールに切り替える処理を行う。
【００７４】
Ｓ６１１では、切替順序データ３５のエントリを順に調べていく。
Ｓ６１２では、全てのエントリを調べ終わったか判断している。Ｓ６１２でＹｅｓならＳ６２１に進み、ＮｏならＳ６１３に進む。
Ｓ６１３では、エントリの送信元がｎと等しいか調べている。Ｓ６１３でＹｅｓならＳ６１４に進み、ＮｏならＳ６１５に進む。
Ｓ６１４では、エントリの送信元の欄をｍに変更する。
Ｓ６１５では、エントリの送信先がｎか調べている。Ｓ６１５でＹｅｓならＳ６１６に進み、ＮｏならＳ６１１に戻る。
Ｓ６１６では、一致している場合にはそのエントリを削除する。
【００７５】
Ｓ６２１では、各モジュールに関して送受信順序データ４２を計算して、その情報をオンデマンド通信で送信する（Ｓ１６ａと同じ処理）。
Ｓ６２２では、全部のモジュールについて送受信順序データ４２を配信したか判断している。Ｓ６２２でＹｅｓならＳ６２３に進み、ＮｏならＳ６２１に戻る。
Ｓ６２３では、ノード番号ｎのモジュールに対してオンデマンド通信で従系から主系への切り替えを指示する。
【００７６】
図１４は、スイッチ設定タスクの生成処理（Ｓ２４）により生成されるタスクを示すフローチャートである。このタスクは、タイマ８１ａの動作に応じてスイッチ３１を切り換える役割を果たす。
【００７７】
Ｓ７０１では、１ミリ秒など設定した時間が経過するごとにタイマ８１ａが発生させる割り込みが来るのを待つ。割り込みが来るとＳ７０２に進む。本タスクはタイマ割り込みの周期ごとにスイッチ設定レジスタ２２にスイッチ情報を設定するが、前の周期のときに計算しておいたスイッチ情報を設定した後、次の周期のスイッチ情報を計算する。
Ｓ７０２では、前の周期に計算しておいた次サイクルスイッチ情報をスイッチ設定レジスタにライトしている。
Ｓ７０３では、次の周期の次サイクルスイッチ情報を計算するために、まず次サイクルスイッチ情報を初期化する。ここでも全部のスイッチがオフになるように設定する。
Ｓ７０４では、タイマ８１ａの値を読み出しＴに代入する。
【００７８】
Ｓ７０５では、切替順序データ３５からエントリを一つずつ読み出していく。読み出したエントリをＥに代入している。
Ｓ７０６では、全部のエントリを読み出し終わったか判断している。Ｓ７０６でＹｅｓならＳ７０１に戻り、ＮｏならＳ７０７に進む。
Ｓ７０７では、Ｅの周期をＣｅ、ＥのタイミングをＴｅに代入する。
【００７９】
Ｓ７０８では、次の周期であるＴ＋１がタイミングＴｅにあたるか判断するために、判定式「((T+1)mod Ce)==Te」によりＴ＋１の周期Ｃｅの剰余とＴｅを比較している。Ｓ７０８でＹｅｓならＳ７０９に進み、ＮｏならＳ７０５に戻る。
Ｓ７０９では、Ｅの送信元をＳ、送信先をＤに代入する。
Ｓ７１０では、次サイクルスイッチ情報の送信元Ｓ、送信先Ｄのスイッチを表すビットをオンにし、次のエントリに進むためにＳ７０５に戻る。
【００８０】
以上説明した本実施形態では、各モジュール１が送受信を行う必要があるデータ（送信データ格納部４３、受信データ格納部４４に格納されている）の周期送信データ３３をあらかじめ収集する構成制御部３１を設け、この構成制御部３１が切替順序データ３５や、送受信順序データ４２を作成する。
そして、スイッチ２が切替順序データ３５をもとにスイッチを切り替えることで、スイッチ２内で送信元から送信先への端子が切替順序データ３５により接続されるため、各モジュール１が送受信順序データ４２に従ってデータの送受信を行うときに、送信するデータに宛先情報を付加する必要がなくなる。
【００８１】
これにより、パケットのヘッダ処理が不要であるため、伝送効率やリアルタイム性が向上するとともに、スイッチ２のハードウェア構成をシンプルにできるため、消費電力や設置スペースの面でも効果的である。そして、本実施形態では、通信が衝突しないように複数のフローを同時に（並列に）送信できるので、ＰＲＯＦＩｎｅｔのようなタイムスロット制御に比べて、応答速度、スループットが向上する。
【００８２】
さらに、プログラマブルコントローラ９（スイッチ２）では、周期送信データ３３で規定された周期的な通信の他に、必要に応じて通信を行うオンデマンド通信もサポートする。ここで、オンデマンド通信と周期的な通信とが衝突するときには、オンデマンド通信の送信タイミングを周期的な通信からずらすことによって、衝突を回避する。
【００８３】
そして、プログラマブルコントローラ９では、高信頼化のためにモジュール１を多重化することもできる。周期的にスイッチを切替る際に、二重系データ３４で規定される多重系の関係にある従系のモジュール１に対しては、主系のモジュール１と同じデータが送信されるようにスイッチを切替ることにより、バックアップを実現する。
【符号の説明】
【００８４】
１      モジュール（通信ノード）
２      スイッチ
３      構成処理部
４      送受信部
７      制御対象機器
９      プログラマブルコントローラ
２１    設定出力部
２２    スイッチ設定レジスタ
３１    構成制御部
３２    スイッチ切替指示部
３３    周期送信データ
３４    二重系データ
３５    切替順序データ
４１    通信制御部
４２    送受信順序データ
４３    送信データ格納部
４４    受信データ格納部
８１    ＣＰＵ
８１ａ  タイマ
８２    メモリ
８３    データ通信部
８４    書込用通信部
８５    調停用通信部
８６    ＩＯ用通信部
８９    通信部
【図１】
0005411835.tif 000003
【図２】
0005411835.tif 000004
【図３】
0005411835.tif 000005
【図４】
0005411835.tif 000006
【図５】
0005411835.tif 000007
【図６】
0005411835.tif 000008
【図７】
0005411835.tif 000009
【図８】
0005411835.tif 000010
【図９】
0005411835.tif 000011
【図１０】
0005411835.tif 000012
【図１１】
0005411835.tif 000013
【図１２】
0005411835.tif 000014
【図１３】
0005411835.tif 000015
【図１４】
0005411835.tif 000016