(57)【要約】      （修正有）【課題】多重化されたＩ／Ｏボードを有するサイクリック伝送装置の信頼性を向上する。【解決手段】サイクリック伝送装置１は、外部装置から入力信号を受信する第１のＩ／Ｏボード２ａおよび第２のＩ／Ｏボード２ｂと、第１のＩ／Ｏボードおよび第２のＩ／Ｏボードと接続可能な通信ボード２ｄと、通信ボードと接続するメインボード１０とを備える。第１のＩ／Ｏボード、第２のＩ／Ｏボード、および通信ボードの各々は、コモンメモリ２５ａ、２５ｂ、２５ｃ、２５ｄを備える。コモンメモリの各々は、第１の入力情報を記憶するための記憶領域と、第２の入力情報を記憶するための記憶領域と、偏差情報を記憶するための記憶領域とを有する。メインボードは、第１の入力情報と第２の入力情報との差分を算出する。通信ボードは、メインボードから取得した偏差情報を第１のＩ／Ｏボードおよび第２のＩ／Ｏボードに伝送する。【選択図】図３
2020129318.tif 000002
【特許請求の範囲】
【請求項１】
外部装置から入力信号を受信する第１のＩ／Ｏボードおよび第２のＩ／Ｏボードと、
前記第１のＩ／Ｏボードおよび前記第２のＩ／Ｏボードと伝送線で接続可能な通信ボードと、
前記通信ボードと接続するメインボードと、を備え、
前記第１のＩ／Ｏボード、前記第２のＩ／Ｏボード、および前記通信ボードの各々は、コモンメモリを備え、
前記コモンメモリの各々は、前記第１のＩ／Ｏボードが前記外部装置から受信した前記入力信号を示す第１の入力情報を記憶するための記憶領域と、前記第２のＩ／Ｏボードが前記外部装置から受信した前記入力信号を示す第２の入力情報を記憶するための記憶領域と、前記第１の入力情報と前記第２の入力情報との差分を示す偏差情報を記憶するための記憶領域とを有し、
前記メインボードは、
前記通信ボードから前記第１の入力情報と、前記第２の入力情報とを取得する第１の取得部と、
前記第１の入力情報と、前記第２の入力情報との差分を算出する演算部と、
前記差分を示す前記偏差情報を前記通信ボードに送信する第１の送信部と、を備え、
前記第１のＩ／Ｏボードは、
前記第１のＩ／Ｏボードの前記コモンメモリに保存された前記第１の入力情報を、サイクリック伝送によって前記第２のＩ／Ｏボードおよび前記通信ボードに伝送する第１の伝送部を備え、
前記第２のＩ／Ｏボードは、
前記第２のＩ／Ｏボードの前記コモンメモリに保存された前記第２の入力情報を、サイクリック伝送によって前記第１のＩ／Ｏボードおよび前記通信ボードに伝送する第２の伝送部を備え、
前記通信ボードは、
前記メインボードに前記第１の入力情報と、前記第２の入力情報とを送信する第２の送信部と、
前記メインボードから前記偏差情報を取得し、取得した前記偏差情報を前記通信ボードの前記コモンメモリに保存する第２の取得部と、
前記通信ボードの前記コモンメモリに保存された前記偏差情報を、サイクリック伝送によって前記第１のＩ／Ｏボードおよび前記第２のＩ／Ｏボードに伝送する第３の伝送部と、を備える、
サイクリック伝送装置。
【請求項２】
前記入力信号は、パルス信号であり、
前記第１の入力情報は、前記第１のＩ／Ｏボードが前記外部装置から受信したパルス信号の累計値であり、
前記第２の入力情報は、前記第２のＩ／Ｏボードが前記外部装置から受信したパルス信号の累計値であり、
前記第１のＩ／Ｏボードは、
前記外部装置から受信した前記パルス信号を計数する第１の計数部を備え、
前記第２のＩ／Ｏボードは、
前記外部装置から受信した前記パルス信号を計数する第２の計数部と、
前記通信ボードから伝送された前記偏差情報を受信する受信部と、
伝送された前記偏差情報に基づいて、前記第２の入力情報を補正し、補正した前記第２の入力情報を前記コモンメモリに保存する第１の補正部と、を備える、
請求項１に記載のサイクリック伝送装置。
【請求項３】
前記入力信号は、パルス信号であり、
前記第１の入力情報は、前記第１のＩ／Ｏボードが前記外部装置から受信したパルス信号の累計値であり、
前記第２の入力情報は、前記第２のＩ／Ｏボードが前記外部装置から受信したパルス信号の累計値であり、
前記第１のＩ／Ｏボードは、
前記外部装置から受信した前記パルス信号を計数する第１の計数部を備え、
前記第２のＩ／Ｏボードは、
前記外部装置から受信した前記パルス信号を計数する第２の計数部を備え、
前記メインボードは、
前記第１の入力情報と、前記第２の入力情報とを記憶する記憶部を備え、
前記演算部は、さらに、前記偏差情報に基づいて、前記記憶部に記憶された前記第２の入力情報を補正する、
請求項１に記載のサイクリック伝送装置。
【請求項４】
前記外部装置から前記入力信号を受信する第３のＩ／Ｏボードをさらに備え、
前記演算部は、さらに、前記第１の入力情報と、前記第３のＩ／Ｏボードが前記外部装置から受信した前記入力信号を示す第３の入力情報との差分を算出し、
前記第１の送信部は、前記第１の入力情報と前記第２の入力情報との差分を示す第１の偏差情報と、前記第１の入力情報と前記第３の入力情報との差分を示す第２の偏差情報と、を前記通信ボードに送信する、
請求項１から３のいずれか１項に記載のサイクリック伝送装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、サイクリック伝送装置に関する。
【背景技術】
【０００２】
従来から、産業プラント（以下、プラントという）等を制御する装置において、ネットワークに接続された複数のＩ／Ｏ（Input／Output）ボードが周期的にサイクリック伝送を行う構成が知られている。
【０００３】
また、このようなＩ／Ｏボードを多重化することにより、当該装置の信頼性を向上させる技術も知られている。例えば、複数のＩ／Ｏボードが同一の外部装置から入力信号を受信することによって、いずれかのＩ／Ｏボードが動作を停止した場合に、他のＩ／Ｏボードが受信した入力信号に基づいて処理を継続する技術が知られている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００２−１１１６９１号公報
【特許文献２】特開２００７−２２６４４５号公報
【特許文献３】特開２００７−３２３４５７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、複数のＩ／Ｏボードに対して同一の外部装置から入力信号が入力される場合に、複数のＩ／Ｏボード間で入力値の差異が生じる場合がある。このため、従来技術においては、サイクリック伝送装置のＩ／Ｏボードを多重化した場合であっても、複数のＩ／Ｏボードのいずれかが動作を停止した場合に、処理をスムーズに継続することが困難な場合があった。このため、多重化されたＩ／Ｏボードを有するサイクリック伝送装置の信頼性の向上が望まれていた。
【課題を解決するための手段】
【０００６】
実施形態のサイクリック伝送装置は、外部装置から入力信号を受信する第１のＩ／Ｏボードおよび第２のＩ／Ｏボードと、第１のＩ／Ｏボードおよび第２のＩ／Ｏボードと伝送線で接続可能な通信ボードと、通信ボードと接続するメインボードと、を備える。第１のＩ／Ｏボード、第２のＩ／Ｏボード、および通信ボードの各々は、コモンメモリを備える。コモンメモリの各々は、第１のＩ／Ｏボードが外部装置から受信した入力信号を示す第１の入力情報を記憶するための記憶領域と、第２のＩ／Ｏボードが外部装置から受信した入力信号を示す第２の入力情報を記憶するための記憶領域と、第１の入力情報と第２の入力情報との差分を示す偏差情報を記憶するための記憶領域とを有する。メインボードは、通信ボードから第１の入力情報と、第２の入力情報とを取得する第１の取得部と、第１の入力情報と、第２の入力情報との差分を算出する演算部と、差分を示す偏差情報を通信ボードに送信する第１の送信部と、を備える。第１のＩ／Ｏボードは、第１のＩ／Ｏボードのコモンメモリに保存された第１の入力情報を、サイクリック伝送によって第２のＩ／Ｏボードおよび通信ボードに伝送する第１の伝送部を備える。第２のＩ／Ｏボードは、第２のＩ／Ｏボードのコモンメモリに保存された第２の入力情報を、サイクリック伝送によって第１のＩ／Ｏボードおよび通信ボードに伝送する第２の伝送部を備える。通信ボードは、メインボードに第１の入力情報と、第２の入力情報とを送信する第２の送信部と、メインボードから偏差情報を取得し、取得した偏差情報を通信ボードのコモンメモリに保存する第２の取得部と、通信ボードのコモンメモリに保存された偏差情報を、サイクリック伝送によって第１のＩ／Ｏボードおよび第２のＩ／Ｏボードに伝送する第３の伝送部と、を備える。
【図面の簡単な説明】
【０００７】
【図１】図１は、第１の実施形態にかかるコントローラの全体構成の一例を示す図である。
【図２】図２は、第１の実施形態にかかるサイクリック伝送による各ステーション間のデータ共有について説明するための図である。
【図３】図３は、第１の実施形態にかかるサイクリック伝送を実行するステーションおよびメインボードの機能的構成の一例を示すブロック図である。
【図４】図４は、第１の実施形態にかかる第１のＩ／Ｏボードで実行される処理の流れの一例を示すフローチャートである。
【図５】図５は、第１の実施形態にかかる第２のＩ／Ｏボードで実行される処理の流れの一例を示すフローチャートである。
【図６】図６は、第１の実施形態にかかる偏差情報の算出処理の流れの一例を示すフローチャートである。
【図７】図７は、第１の実施形態にかかる入力情報の切り替え処理の流れの一例を示すフローチャートである。
【図８】図８は、第２の実施形態にかかるサイクリック伝送を実行するステーションおよびメインボードの機能的構成の一例を示すブロック図である。
【図９】図９は、第２の実施形態にかかる偏差情報の算出および第２の入力情報の補正の処理の流れの一例を示すフローチャートである。
【図１０】図１０は、第３の実施形態にかかるサイクリック伝送を実行するステーションおよびメインボードの機能的構成の一例を示すブロック図である。
【発明を実施するための形態】
【０００８】
（第１の実施形態）
図１は、本実施形態にかかるコントローラ１の全体構成の一例を示す図である。図１に示すように、コントローラ１は、メインボード１０と、第１のＩ／Ｏ（Input／Output）ボード２ａと、第２のＩ／Ｏボード２ｂと、第３のＩ／Ｏボード２ｃと、通信ボード２ｄとを備える。コントローラ１は、本実施形態におけるサイクリック伝送装置の一例である。
【０００９】
メインボード１０は、コントローラ１全体を制御する回路基板であり、ＣＰＵ等のプロセッサと、メモリとを備える。メモリは、例えばＲＯＭ、ＲＡＭ、フラッシュメモリ等である。メインボード１０は、通信ボード２ｄと内部バス１１を介して接続している。
【００１０】
第１のＩ／Ｏボード２ａと、第２のＩ／Ｏボード２ｂと、第３のＩ／Ｏボード２ｃと、通信ボード２ｄとは、一例として、それぞれイーサネット（登録商標）コントローラと、マイクロコントローラ(マイコン)と、メモリとを備える回路基板である。また、第１のＩ／Ｏボード２ａと、第２のＩ／Ｏボード２ｂと、第３のＩ／Ｏボード２ｃと、通信ボード２ｄとは、伝送路５を介して接続している。以下、第１のＩ／Ｏボード２ａ、第２のＩ／Ｏボード２ｂ、第３のＩ／Ｏボード２ｃ、および通信ボード２ｄが備えるメモリを、コモンメモリという。伝送路５は、例えば(Local  Area  Network)ケーブルである。以下、第１のＩ／Ｏボード２ａと、第２のＩ／Ｏボード２ｂと、第３のＩ／Ｏボード２ｃとを総称する場合は、Ｉ／Ｏボード２という。
【００１１】
第１のＩ／Ｏボード２ａと、第２のＩ／Ｏボード２ｂと、第３のＩ／Ｏボード２ｃとは、外部装置との間で信号の入出力をする回路基板である。本実施形態においては、第１のＩ／Ｏボード２ａと、第２のＩ／Ｏボード２ｂとは、センサ４ａからパルス信号を受信する。また、第３のＩ／Ｏボード２ｃは、センサ４ｂからパルス信号を受信する。パルス信号は本実施形態における入力信号の一例である。
【００１２】
センサ４ａは、例えば、モータの回転を検出するエンコーダであり、検出結果をパルス信号として第１のＩ／Ｏボード２ａと、第２のＩ／Ｏボード２ｂとに入力する。センサ４ａは、本実施形態における外部装置の一例である。また、センサ４ｂは、センサ４ａとは検出対象が異なるセンサであり、検出結果をパルス信号として第３のＩ／Ｏボード２ｃに入力する。
【００１３】
通信ボード２ｄは、第１のＩ／Ｏボード２ａ、第２のＩ／Ｏボード２ｂ、および第３のＩ／Ｏボード２ｃと伝送線で接続可能である。本実施形態においては、通信ボード２ｄは、第１のＩ／Ｏボード２ａ、第２のＩ／Ｏボード２ｂ、および第３のＩ／Ｏボード２ｃがセンサ４ａまたはセンサ４ｂから受信した入力信号を示す入力情報を、伝送路５を介して受信する。また、通信ボード２ｄは、受信した入力情報を、内部バス１１を介してメインボード１０に送信する。伝送路５は、本実施形態における伝送線の一例である。
【００１４】
第１のＩ／Ｏボード２ａと、第２のＩ／Ｏボード２ｂと、第３のＩ／Ｏボード２ｃと、通信ボード２ｄとは、伝送路５を介して周期的にデータをサイクリック伝送する。ここで、サイクリック伝送を行う機器である第１のＩ／Ｏボード２ａと、第２のＩ／Ｏボード２ｂと、第３のＩ／Ｏボード２ｃと、通信ボード２ｄとを、ステーションという。
【００１５】
サイクリック伝送においては、各ステーション（第１のＩ／Ｏボード２ａ、第２のＩ／Ｏボード２ｂ、第３のＩ／Ｏボード２ｃ、および通信ボード２ｄ）の送信権はトークンパッシング方式によって決定される。つまり、サイクリック伝送を行う各ステーションのうち、伝送路５を介してトークンを受信したステーションがデータの送信権を有する。データの送信権を取得したステーションは、同報通信（ブロードキャスト）によって、他の全てのステーションに対してデータを送信する。本実施形態においては、トークンは、アクセスアドレスの順に巡回するものとする。具体的には、第１のＩ／Ｏボード２ａ、第２のＩ／Ｏボード２ｂ、第３のＩ／Ｏボード２ｃ、通信ボード２ｄの順に、ブロードキャストを実行する。
【００１６】
図２は、本実施形態にかかるサイクリック伝送による各ステーション間のデータ共有について説明するための図である。第１のＩ／Ｏボード２ａ、第２のＩ／Ｏボード２ｂ、第３のＩ／Ｏボード２ｃ、および通信ボード２ｄの各々は、コモンメモリ２５ａ〜２５ｄを備える。以下、コモンメモリ２５ａ〜２５ｄを特に区別しない場合は、単にコモンメモリ２５という。各コモンメモリ２５の容量は同一であるものとする。
【００１７】
各コモンメモリ２５のメモリ空間は、送信用データを格納する記憶領域と、他のステーションからブロードキャストされたデータを保存する記憶領域とに分かれている。各データの格納先の記憶領域は、予め定められているものとする。
【００１８】
例えば、図２に示すように、第１のＩ／Ｏボード２ａから送信されたデータは、第２のＩ／Ｏボード２ｂ、第３のＩ／Ｏボード２ｃ、および通信ボード２ｄのコモンメモリ２５ｂ〜２５ｄの予め定められた記憶領域に保存される。同様に、第２のＩ／Ｏボード２ｂ、第３のＩ／Ｏボード２ｃ、および通信ボード２ｄから送信されたデータも、他のステーションのコモンメモリ２５の予め定められた記憶領域にそれぞれ保存される。
【００１９】
次に、このようなサイクリック伝送を行うコントローラ１において、Ｉ／Ｏボード２を多重化する構成について説明する。本実施形態においては、複数のＩ／Ｏボード２が、同一の外部装置から入力信号を受信することを、Ｉ／Ｏボード２の多重化という。
【００２０】
図３は、本実施形態にかかるサイクリック伝送を実行するステーションおよびメインボード１０の機能的構成の一例を示すブロック図である。図３に示すように、第１のＩ／Ｏボード２ａと、第２のＩ／Ｏボード２ｂとは、センサ４ａからパルス信号を受信する。すなわち、本実施形態においては、第１のＩ／Ｏボード２ａと、第２のＩ／Ｏボード２ｂとが多重化（本実施形態の例では二重化）されている。また、第１のＩ／Ｏボード２ａおよび第２のＩ／Ｏボード２ｂは、センサ４ａから受信した入力信号を示す入力情報を、サイクリック伝送によって他のステーションに伝送する。
【００２１】
このように、コントローラ１がＩ／Ｏボード２が多重化された構成を備えることによって、例えば、第１のＩ／Ｏボード２ａと第２のＩ／Ｏボード２ｂとのいずれか一方でエラーが発生しても、他方が稼働を継続していれば、他のステーションへの入力情報の伝送を継続することができる。
【００２２】
本実施形態においては、第１のＩ／Ｏボード２ａがセンサ４ａから受信した入力信号を示す入力情報を、第１の入力情報という。また、第２のＩ／Ｏボード２ｂがセンサ４ａから受信した入力信号を示す入力情報を、第２の入力情報という。より具体的には、第１の入力情報は、第１のＩ／Ｏボード２ａが、センサ４ａから受信したパルス信号を計数した累計値である。また、第２の入力情報は、第２のＩ／Ｏボード２ｂが、センサ４ａから受信したパルス信号を計数した累計値である。各Ｉ／Ｏボード２における計数処理については後述する。なお、累計値はカウント値ともいう。
【００２３】
本実施形態においては、第１のＩ／Ｏボード２ａと第２のＩ／Ｏボード２ｂの両方が正常に稼働している場合には、メインボード１０は、第１の入力情報を処理に利用する。また、第１のＩ／Ｏボード２ａでエラーが発生した場合には、メインボード１０は、第２の入力情報を処理に利用するものとする。メインボード１０が第１の入力情報と第２の入力情報のいずれを優先的に使用するかは、予め定められているものとする。
【００２４】
まず、メインボード１０の機能的構成について説明する。
図３に示すように、メインボード１０は、第１の取得部１０１と、演算部１０２と、第１の送信部１０３と、制御部１０４と、記憶部１０５とを備える。第１の取得部１０１と、演算部１０２と、第１の送信部１０３と、制御部１０４とは、メインボード１０のプロセッサがメモリからプログラムを読み出して実行することにより実現される機能である。
【００２５】
第１の取得部１０１は、通信ボード２ｄから、通信ボード２ｄのコモンメモリ２５ｄに保存された第１の入力情報と、第２の入力情報とを取得する。通信ボード２ｄのコモンメモリ２５ｄに保存された第１の入力情報と、第２の入力情報とは、サイクリック伝送により、第１のＩ／Ｏボード２ａと第２のＩ／Ｏボード２ｂからそれぞれ伝送されたデータである。第１の取得部１０１は、取得した第１の入力情報と、第２の入力情報とを記憶部１０５に保存する。また、第１の取得部１０１は、第１の入力情報と第２の入力情報だけではなく、通信ボード２ｄのコモンメモリ２５ｄに保存された全てのデータを取得し、取得したデータを記憶部１０５に保存するものとしても良い。
【００２６】
ここで、第１のＩ／Ｏボード２ａと第２のＩ／Ｏボード２ｂは、共に、センサ４ａからパルス信号の入力を受けているが、第１の入力情報と、第２の入力情報とに差異が生じる場合がある。このような差異は、例えば、センサ４ａから第１のＩ／Ｏボード２ａへパルス信号が入力されるタイミングと、センサ４ａから第２のＩ／Ｏボード２ｂへパルス信号が入力されるタイミングとに差異がある場合、または、第１のＩ／Ｏボード２ａと第２のＩ／Ｏボード２ｂの起動タイミングが異なる場合などに発生する。パルス信号が入力されるタイミングの差異は、例えば、センサ４ａから第１のＩ／Ｏボード２ａへの伝送路の長さと、センサ４ａから第２のＩ／Ｏボード２ｂへの伝送路の長さとが異なる場合に発生する場合がある。
【００２７】
そこで、演算部１０２は、第１の入力情報と、第２の入力情報との差分（偏差）を算出する。第１の入力情報と第２の入力情報との差分を示す情報を、偏差情報という。本実施形態においては、偏差情報は、演算部１０２が、第１の入力情報の値から第２の入力情報の値を減算した値であるものとする。例えば、第１の入力情報が“１００”、第２の入力情報が“９８”の場合、偏差情報は“＋２”となる。また、第１の入力情報が“１００”、第２の入力情報が“１０２”の場合、偏差情報は“−２”となる。演算部１０２は、算出した偏差情報を、記憶部１０５に保存する。
【００２８】
また、制御部１０４は、記憶部１０５に保存された各種の情報に基づいて、コントローラ１の全体を制御する。制御部１０４は、記憶部１０５に保存された第１の入力情報と第２の入力情報とのうち、通常は第１の入力情報を処理に用いるものとする。また、制御部１０４は、第１のＩ／Ｏボード２ａが故障等によって第１の入力情報の伝送を停止した場合には、第２の入力情報を用いて処理を継続する。
【００２９】
第１の送信部１０３は、演算部１０２によって算出された偏差情報を記憶部１０５から読み出す。第１の送信部１０３は、読み出した偏差情報を通信ボード２ｄに送信する。
【００３０】
記憶部１０５は、第１の取得部１０１が通信ボード２ｄから取得した各種のデータと、演算部１０２によって算出された偏差情報とを記憶する。また、記憶部１０５の記憶容量は、コモンメモリ２５よりも大きくても良い。例えば、記憶部１０５は、通信ボード２ｄのコモンメモリ２５ｄに保存されたデータに加えて、メインボード１０での処理で用いられる各種のデータを記憶するものとしても良い。記憶部１０５は、例えばＲＡＭやフラッシュメモリ等である。
【００３１】
次に、サイクリック伝送を実行する第１のＩ／Ｏボード２ａ、第２のＩ／Ｏボード２ｂ、第３のＩ／Ｏボード２ｃ、通信ボード２ｄの機能的構成について説明する。
【００３２】
第１のＩ／Ｏボード２ａは、第１のカウンタ２１ａと、コモンメモリ２５ａと、第１の伝送部２２ａと、第１の受信部２３ａとを備える。
【００３３】
第１のカウンタ２１ａは、センサ４ａから受信したパルス信号を計数（カウント）する。第１のカウンタ２１ａは、パルス信号の累計値を、コモンメモリ２５ａの送信用データの格納領域に保存する。当該累計値は、第１のＩ／Ｏボード２ａがセンサ４ａから受信した入力信号を示す第１の入力情報である。第１のカウンタ２１ａは、本実施形態における第１の計数部の一例である。
【００３４】
第１の伝送部２２ａは、コモンメモリ２５ａの送信用データを記憶するための所定の記憶領域に保存された第１の入力情報をサイクリック伝送する。より詳細には、第１の伝送部２２ａは、トークンを取得した場合に、第１の入力情報をブロードキャストする。また、第１の伝送部２２ａは、第１のＩ／Ｏボード２ａでエラーが発生した場合には、第１の入力情報のブロードキャストを停止する。
【００３５】
第１の受信部２３ａは、他のステーションからサイクリック伝送されたデータを受信する。第１の受信部２３ａは、受信したデータをコモンメモリ２５ａに保存する。具体的には、第１の受信部２３ａは、第２のＩ／Ｏボード２ｂによってサイクリック伝送された第２の入力情報と、第３のＩ／Ｏボード２ｃによってサイクリック伝送された第３の入力情報と、通信ボード２ｄによってサイクリック伝送された偏差情報と、をコモンメモリ２５ａの予め定められた記憶領域にそれぞれ保存する。
【００３６】
また、第１の受信部２３ａは、他のステーションのうちのいずれかが、送信権を有しているにも関わらずデータを送信しない場合に、当該ステーションでエラーが発生したと判断する。この場合、第１の受信部２３ａは、コモンメモリ２５ａの記憶領域のうち、当該ステーションから送信されたデータを格納するための記憶領域に、当該ステーションがデータ送信を停止していることを示す停止フラグを立てる。
【００３７】
また、第２のＩ／Ｏボード２ｂは、第２のカウンタ２１ｂと、コモンメモリ２５ｂと、第２の伝送部２２ｂと、第２の受信部２３ｂと、補正部２４とを備える。
【００３８】
第２のカウンタ２１ｂは、センサ４ａから受信したパルス信号を計数する。また、第２のカウンタ２１ｂは、パルス信号の累計値を、補正部２４に送出する。当該累計値は、第２のＩ／Ｏボード２ｂがセンサ４ａから受信した入力信号を示す第２の入力情報である。第２のカウンタ２１ｂは、本実施形態における第２の計数部の一例である。
【００３９】
補正部２４は、コモンメモリ２５ｂに保存された偏差情報に基づいて、第２のカウンタ２１ｂによるパルス信号の累計値（第２の入力情報）を補正する。例えば、偏差情報が“＋２”の場合、補正部２４は、第２の入力情報に“２”を加算する。また、偏差情報が“−２”の場合、補正部２４は、第２の入力情報から“２”を減算する。補正部２４は、補正した累計値（第２の入力情報）をコモンメモリ２５ｂの予め定められた記憶領域に保存する。補正部２４は、本実施形態における第１の補正部の一例である。
【００４０】
また、補正部２４は、偏差情報がコモンメモリ２５ｂに保存されていない場合は、第２のカウンタ２１ｂによるパルス信号の累計値（第２の入力情報）を、変更せずに、コモンメモリ２５ｂに保存する。
【００４１】
第２の伝送部２２ｂは、コモンメモリ２５ｂの送信用データを記憶するための所定の記憶領域に保存された第２の入力情報をサイクリック伝送する。より詳細には、第２の伝送部２２ｂは、トークンを取得した場合に、第２の入力情報をブロードキャストする。また、第２の伝送部２２ｂは、第２のＩ／Ｏボード２ｂでエラーが発生した場合には、第２の入力情報のブロードキャストを停止する。
【００４２】
第２の受信部２３ｂは、他のステーションからサイクリック伝送されたデータを受信し、受信したデータをコモンメモリ２５ｂに保存する。具体的には、第２の受信部２３ｂは、第１のＩ／Ｏボード２ａによってサイクリック伝送された第１の入力情報と、第３のＩ／Ｏボード２ｃによってサイクリック伝送された第３の入力情報と、通信ボード２ｄによってサイクリック伝送された偏差情報と、をコモンメモリ２５ａの予め定められた記憶領域にそれぞれ保存する。
【００４３】
また、第２の受信部２３ｂは、他のステーションのうちのいずれかが、送信権を有しているにも関わらずデータを送信しない場合に、コモンメモリ２５ｂの記憶領域のうち、当該ステーションから送信されたデータを格納するための記憶領域に、当該ステーションがデータ送信を停止していることを示す停止フラグを立てる。
【００４４】
第３のＩ／Ｏボード２ｃは、第３のカウンタ２１ｃと、第４の伝送部２２ｃと、第４の受信部２３ｃと、コモンメモリ２５ｃとを備える。第３のカウンタ２１ｃは、センサ４ｂから受信したパルス信号を計数し、累計値を、コモンメモリ２５ｃの送信用データを格納するための記憶領域に保存する。当該累計値を、第３の入力情報とする。また、第４の伝送部２２ｃはコモンメモリ２５ｃの送信用データを格納するための記憶領域に保存された第３の入力情報をサイクリック伝送する。
【００４５】
第４の受信部２３ｃは、他のステーションからサイクリック伝送されたデータを受信し、受信したデータをコモンメモリ２５ｃの予め定められた記憶領域に保存する。また、第４の受信部２３ｃは、他のステーションのうちのいずれかが、送信権を有しているにも関わらずデータを送信しない場合に、コモンメモリ２５ｃの記憶領域のうち、当該ステーションから送信されたデータを格納するための記憶領域に、当該ステーションがデータ送信を停止していることを示す停止フラグを立てる。
【００４６】
通信ボード２ｄは、第２の取得部２６と、第２の送信部２７と、第３の伝送部２２ｄと、第３の受信部２３ｄと、コモンメモリ２５ｄとを備える。
【００４７】
第２の送信部２７は、メインボード１０にコモンメモリ２５ｄに記憶された第１の入力情報と、第２の入力情報と、第３の入力情報とをメインボード１０に送信する。
【００４８】
第２の取得部２６は、メインボード１０から偏差情報を取得する。第２の取得部２６は、偏差情報をコモンメモリ２５ｄの送信用データを記憶するための所定の記憶領域に保存する。
【００４９】
第３の伝送部２２ｄは、コモンメモリ２５ｄに保存された偏差情報を、第１のＩ／Ｏボード２ａと、第２のＩ／Ｏボード２ｂと、第３のＩ／Ｏボード２ｃとにサイクリック伝送する。
【００５０】
また、第３の受信部２３ｄは、他のステーションからサイクリック伝送されたデータを受信し、受信したデータをコモンメモリ２５ｄの予め定められた記憶領域に保存する。また、第３の受信部２３ｄは、他のステーションのうちのいずれかが、送信権を有しているにも関わらずデータを送信しない場合に、コモンメモリ２５ｄの記憶領域のうち、当該ステーションから送信されたデータを格納するための記憶領域に、当該ステーションがデータ送信を停止していることを示す停止フラグを立てる。
【００５１】
以下、第１の伝送部２２ａと、第２の伝送部２２ｂと、第３の伝送部２２ｄと、第４の伝送部２２ｃとを特に区別しない場合は、単に伝送部２２という。また、第１の受信部２３ａと、第２の受信部２３ｂと、第３の受信部２３ｄと、第４の受信部２３ｃとを特に区別しない場合は、単に受信部２３という。伝送部２２と、受信部２３とは、例えば、イーサネット（登録商標）コントローラによって実現される。あるいは、伝送部２２と、受信部２３とは、マイクロコントローラによって実現されても良い。
【００５２】
次に、以上のように構成された本実施形態のコントローラ１で実行される処理の流れについて説明する。
【００５３】
図４は、本実施形態にかかる第１のＩ／Ｏボード２ａで実行される処理の流れの一例を示すフローチャートである。まず、第１のカウンタ２１ａは、センサ４ａからパルス信号を受信すると、当該パルス信号を計数する（Ｓ１）。そして、第１のカウンタ２１ａは、パルス信号の累計値（第１の入力情報）を、コモンメモリ２５ａに保存する（Ｓ２）。
【００５４】
そして、第１の伝送部２２ａは、自装置（第１のＩ／Ｏボード２ａ）宛のトークンを受信したか否かに基づいて、送信権を獲得したか否かを判断する（Ｓ３）。第１の伝送部２２ａは、送信権を獲得したと判断した場合に（Ｓ３“Ｙｅｓ”）、第１の入力情報を、他のステーションに対してブロードキャストする（Ｓ４）。
【００５５】
また、第１の伝送部２２ａは、送信権を獲得していないと判断した場合には（Ｓ３“Ｙｅｓ”）、他のステーションからデータを受信したか否かを判断する（Ｓ５）。第１の伝送部２２ａは、他のステーションからデータを受信した場合（Ｓ５“Ｙｅｓ”）、当該データをコモンメモリ２５ａに保存する（Ｓ６）。その後は、Ｓ１の処理に戻るものとする。
【００５６】
また、第１の伝送部２２ａは、他のステーションからデータを受信していない場合（Ｓ５“Ｎｏ”）、現時点で送信権を有しているステーションが送信権を獲得してから、所定の時間が経過したか否かを判断する（Ｓ７）。第１の伝送部２２ａは、伝送路５内で各ステーション間を転送されているトークンフレームに登録された情報から、他のステーションのうちのいずれが送信権を有しているかを判断できるものとする。
【００５７】
第１の伝送部２２ａは、現時点で送信権を有しているステーションが送信権を獲得してから、所定の時間が経過していないと判断した場合（Ｓ７“Ｎｏ”）、Ｓ７の処理を繰り返す。また、第１の伝送部２２ａは、現時点で送信権を有しているステーションが送信権を獲得してから、所定の時間が経過したと判断した場合（Ｓ７“Ｙｅｓ）、コモンメモリ２５ａの記憶領域のうち、当該ステーションの送信データを格納するための所定の記憶領域に、当該ステーションがデータ送信を停止していることを示す停止フラグを設定する（Ｓ８）。その後は、Ｓ１の処理に戻るものとする。
【００５８】
このフローチャートの処理は、第１のＩ／Ｏボード２ａが起動している間は繰り返し実行されるものとする。
【００５９】
次に、第２のＩ／Ｏボード２ｂで実行される処理について説明する。
図５は、本実施形態にかかる第２のＩ／Ｏボード２ｂで実行される処理の流れの一例を示すフローチャートである。
【００６０】
まず、第２のカウンタ２１ｂは、センサ４ａからパルス信号を受信すると、当該パルス信号を計数する（Ｓ１１）。第２のカウンタ２１ｂは、累計値を補正部２４に送出する。
【００６１】
次に、補正部２４は、コモンメモリ２５ｂに偏差情報が既に保存されているか否かを判断する（Ｓ１２）。メインボード１０によって算出された偏差情報が、通信ボード２ｄによって既に各ステーションにブロードキャストされている場合、コモンメモリ２５ｂには偏差情報が保存されている。
【００６２】
補正部２４は、コモンメモリ２５ｂに偏差情報が保存されていると判断した場合（Ｓ１２“Ｙｅｓ”）、第２のカウンタ２１ｂによって計数された累計値（第２の入力情報）を、偏差情報で補正する。そして、補正部２４は、補正後の第２の入力情報を、コモンメモリ２５ｂに保存する（Ｓ１３）。
【００６３】
また、メインボード１０がまだ偏差情報の算出をしていない場合、コモンメモリ２５ｂにはまだ偏差情報が保存されていない。補正部２４は、コモンメモリ２５ｂに偏差情報が保存されていないと判断した場合（Ｓ１２“Ｎｏ”）、第２のカウンタ２１ｂによって計数された累計値（第２の入力情報）を、補正せずに、コモンメモリ２５ｂに保存する（Ｓ１４）。
【００６４】
そして、第２の伝送部２２ｂは、自装置（第２のＩ／Ｏボード２ｂ）宛のトークンを受信したか否かに基づいて、送信権を獲得したか否かを判断する（Ｓ１５）。第２の伝送部２２ｂは、送信権を獲得したと判断した場合に（Ｓ１５“Ｙｅｓ”）、第２の入力情報を、他のステーションに対してブロードキャストする（Ｓ１６）。
【００６５】
また、第２の伝送部２２ｂは、送信権を獲得していないと判断した場合には（Ｓ１５“Ｙｅｓ”）、他のステーションからデータを受信したか否かを判断する（Ｓ１７）。例えば、この時点で送信権を有しているステーションが通信ボード２ｄである場合、第２の伝送部２２ｂは、通信ボード２ｄから偏差情報を受信したか否かを判断する。
【００６６】
第２の伝送部２２ｂは、他のステーションからデータを受信した場合（Ｓ１７“Ｙｅｓ”）、当該データをコモンメモリ２５ｂに保存する（Ｓ１８）。例えば、第２の伝送部２２ｂは、通信ボード２ｄから偏差情報を受信した場合、受信した偏差情報を、コモンメモリ２５ｂの記憶領域のうち、通信ボード２ｄから送信されたデータを格納するための記憶領域に保存する。コモンメモリ２５ｂに保存された偏差情報は、このフローチャートの処理が次回実行される際に、Ｓ１３の第２の入力情報の補正処理において、補正部２４によって使用される。その後は、Ｓ１１の処理に戻るものとする。
【００６７】
また、Ｓ１９の所定の時間の経過の有無の判断から、Ｓ２０の停止フラグの設定までは、図４で説明したＳ７からＳ８の処理と同様の処理である。このフローチャートの処理は、第２のＩ／Ｏボード２ｂが起動している間は繰り返し実行されるものとする。
【００６８】
次に、メインボード１０で実行される処理について説明する。
図６は、本実施形態にかかる偏差情報の算出処理の流れの一例を示すフローチャートである。このフローチャートの処理は、所定の時間間隔で繰り返し実行されるものとしても良いし、第１のＩ／Ｏボード２ａおよび第２のＩ／Ｏボード２ｂが処理を開始してから所定の時間が経過した後に１度実行されるものとしても良い。また、ユーザの設定等による任意のタイミングでこのフローチャートの処理が実行されるものとしても良い。
【００６９】
まず、メインボード１０の第１の取得部１０１は、通信ボード２ｄから、通信ボード２ｄのコモンメモリ２５ｄに保存された第１の入力情報と、第２の入力情報とを取得する（Ｓ３１）。第１の取得部１０１は、取得した第１の入力情報と、第２の入力情報とを記憶部１０５に保存する。また、第１の取得部１０１は、さらに、通信ボード２ｄから、コモンメモリ２５ｄに保存された第３の入力情報を取得し、取得した第３の入力情報を記憶部１０５に保存しても良い。
【００７０】
次に、演算部１０２は、第１の入力情報と、第２の入力情報との差分を算出する（Ｓ３２）。本実施形態においては、演算部１０２は、第１の入力情報の値から第２の入力情報の値を減算する。演算部１０２は、算出した差分を、偏差情報として記憶部１０５に保存する。
【００７１】
そして、第１の送信部１０３は、演算部１０２によって算出された差分（偏差情報）を、通信ボード２ｄに送信する（Ｓ３３）。
【００７２】
また、通信ボード２ｄの第２の取得部２６は、Ｓ３３の処理でメインボード１０から送信された偏差情報を取得し、取得した偏差情報を、コモンメモリ２５ｄの送信データ用を記憶するための所定の記憶領域に保存する。また、通信ボード２ｄの第３の伝送部２２ｄは、コモンメモリ２５ｄに保存された偏差情報を、サイクリック伝送によって他のステーションに伝送する。
【００７３】
次に、第１のＩ／Ｏボード２ａおよび第２のＩ／Ｏボード２ｂのいずれかが処理を停止した場合に、メインボード１０で実行される処理について説明する。
【００７４】
図７は、本実施形態にかかる入力情報の切り替え処理の流れの一例を示すフローチャートである。メインボード１０の第１の取得部１０１は、通信ボード２ｄのコモンメモリ２５ｄに記憶された情報を取得し、取得した情報を記憶部１０５の所定の記憶領域にそれぞれ保存する（Ｓ４１）。
【００７５】
次に、メインボード１０の制御部１０４は、第１のＩ／Ｏボード２ａが停止状態であるか否かを判断する（Ｓ４２）。例えば、制御部１０４は、記憶部１０５に第１の入力情報が保存されるための記憶領域に、第１の入力情報ではなく停止フラグが保存されている場合に、第１のＩ／Ｏボード２ａが停止状態であると判断する。
【００７６】
制御部１０４は、第１のＩ／Ｏボード２ａが停止状態ではないと判断した場合（Ｓ４２“Ｎｏ”）、第１の入力情報を使用して処理を実行する（Ｓ４３）。つまり、通常時においては、制御部１０４は、第１の入力情報を用いるものとする。
【００７７】
また、制御部１０４は、第１のＩ／Ｏボード２ａが停止状態であると判断した場合（Ｓ４２“Ｙｅｓ”）、第２の入力情報を使用して処理を実行する（Ｓ４４）。本実施形態においては、第２のＩ／Ｏボード２ｂの補正部２４が、偏差情報に基づいて第２の入力情報を補正しているため、制御部１０４は、第１の入力情報から第２の入力情報に切り替えた場合にも、スムーズに処理を継続することができる。なお、本実施形態においては、制御部１０４は、停止フラグに基づいて第１のＩ／Ｏボード２ａが停止状態であるか否かを判断するものとしたが、判断の手法はこれに限定されるものではない。
【００７８】
上述のように、多重化された複数のＩ／Ｏボードに対して同一の外部装置から入力信号が入力される場合に、複数の機器間で入力値の差異が生じる場合がある。このため、従来技術においては、多重化された複数のＩ／Ｏボードのいずれかが動作を停止した場合に、他のＩ／Ｏボードの入力値によって処理をスムーズに継続することが困難な場合があった。また、従来技術においては、このような入力値の差異を低減するために、複数のＩ／Ｏボード間の入力値を等値化するための回路等を設ける場合があったが、当該回路の故障等による信頼性の低下の可能性があった。
【００７９】
また、他の従来技術の例としては、多重化された複数の機器間で入力信号の取り込み（入力）のタイミングを揃えることで、入力値の差異を低減する技術がある。一例として、多重化された複数の機器のいずれかが、他の機器に同期信号を送信することによって入力信号の取り込み（入力）のタイミングを揃える技術がある。しかしながら、このような従来技術では、同期信号を送信する機器の取込タイミングに比べて、同期信号を受信する機器の取込タイミングが遅延するため、複数の機器間の入力値のタイミングを一致させることが困難な場合があった。また、他の従来技術の例としては、偏差情報を送受信するために、サイクリック伝送用の伝送路と異なる他の伝送路を設ける場合があったが、送受信のための処理の負荷が増加する場合があった。
【００８０】
これに対して、本実施形態のコントローラ１は、センサ４ａからパルス信号を受信する第１のＩ／Ｏボード２ａおよび第２のＩ／Ｏボード２ｂと、第１のＩ／Ｏボード２ａおよび第２のＩ／Ｏボード２ｂと伝送線で接続可能な通信ボード２ｄと、通信ボード２ｄと接続するメインボード１０と、を備える。メインボード１０は、第１の入力情報と、第２の入力情報との差分を算出し、当該差分を示す偏差情報を通信ボード２ｄに送信する。第１のＩ／Ｏボード２ａのコモンメモリ２５ａと、第２のＩ／Ｏボード２ｂのコモンメモリ２５ｂと、通信ボード２ｄのコモンメモリ２５は、第１の入力情報を記憶する記憶領域と、第２の入力情報を記憶する記憶領域と、偏差情報を記憶する記憶領域とを有し、第１のＩ／Ｏボード２ａと、第２のＩ／Ｏボード２ｂと、通信ボード２ｄとは、各コモンメモリに記憶された第１の入力情報と、第２の入力情報と、偏差情報とをサイクリック伝送する。このため、本実施形態のコントローラ１によれば、例えば、第１のＩ／Ｏボード２ａが動作を停止した場合に、偏差情報と第２の入力情報とに基づいて、処理を継続することが可能である。また、本実施形態のコントローラ１によれば、偏差情報をサイクリック伝送によって伝送することで、偏差情報を送受信するための別の伝送路または等値化用の専用回路等を設けることなく、第１の入力情報と第２の入力情報の偏差情報をステーション間で共有することが可能である。このため、いずれかのステーションが動作を停止しても、他のステーションが偏差情報を保存しているため、容易にデータを復旧することができる。このため、本実施形態のコントローラ１によれば、コントローラ１の信頼性を向上することができる。
【００８１】
また、本実施形態のコントローラ１の第２のＩ／Ｏボード２ｂは、通信ボード２ｄから伝送された偏差情報に基づいて、第２の入力情報を補正し、補正した第２の入力情報をコモンメモリ２５ｂに保存する。このため、本実施形態のコントローラ１によれば、補正後の第２の入力情報が各ステーションにサイクリック伝送されるため、各ステーションおよびメインボード１０は、信頼性の高い入力情報を参照することができる。
【００８２】
また、本実施形態においては、センサ４ａから第１のＩ／Ｏボード２ａおよび第２のＩ／Ｏボード２ｂに入力される入力信号は、パルス信号である。また、第１の入力情報は、第１のＩ／Ｏボード２ａがセンサ４ａから受信したパルス信号の累計値であり、第２の入力情報は、第２のＩ／Ｏボード２ｂがセンサ４ａから受信したパルス信号の累計値である。本実施形態のコントローラ１によれば、第１のＩ／Ｏボード２ａと第２のＩ／Ｏボード２ｂにおける累計値に差異が生じた場合であっても、第１のＩ／Ｏボード２ａの累計値に合わせて、第２のＩ／Ｏボード２ｂの累計値を補正するため、第１のＩ／Ｏボード２ａが停止状態となった場合でも、第２のＩ／Ｏボード２ｂによって計数された累計値を用いて処理を継続することができる。
【００８３】
なお、本実施形態においては、メインボード１０が偏差情報を算出するものとしたが、サイクリック伝送を行うステーションのいずれか（例えば通信ボード２ｄ）が偏差情報を算出するものとしてもよい。
【００８４】
また、本実施形態においては、サイクリック伝送を行うＩ／Ｏボード２の数を３つとしたが、これは一例であり、Ｉ／Ｏボード２の数はこれに限定されるものではない。また、本実施形態においては、第３のＩ／Ｏボード２ｃは多重化されていないものとしたが、第３のＩ／Ｏボード２ｃも他のＩ／Ｏボード２と多重化されてもよい。
【００８５】
また、本実施形態においては、メインボード１０と、第１のＩ／Ｏボード２ａと、第２のＩ／Ｏボード２ｂと、第３のＩ／Ｏボード２ｃと、通信ボード２ｄは、コントローラ１に含まれるものとしたが、サイクリック伝送装置の構成はこれに限定されるものではない。例えば、メインボード１０と、第１のＩ／Ｏボード２ａと、第２のＩ／Ｏボード２ｂと、第３のＩ／Ｏボード２ｃと、通信ボード２ｄとが、それぞれ別個の装置として独立して設けられても良い。また、コントローラ１はメインボード１０と通信ボード２ｄとを備え、他の装置が第１のＩ／Ｏボード２ａと第２のＩ／Ｏボード２ｂとを備え、さらに他の装置が第３のＩ／Ｏボード２ｃを備えるものとしても良い。
【００８６】
また、本実施形態では、第１のＩ／Ｏボード２ａ、第２のＩ／Ｏボード２ｂ、および第３のＩ／Ｏボード２ｃには、センサ４ａまたはセンサ４ｂからパルス信号が入力されるものとしたが、各Ｉ／Ｏボード２に入力される入力信号はこれに限定されるものではない。また、第１のＩ／Ｏボード２ａ、第２のＩ／Ｏボード２ｂ、および第３のＩ／Ｏボード２ｃは、累計値ではなく、入力された値を入力情報として伝送するものとしても良い。また、外部装置はセンサ４ａに限定されるものではない。
【００８７】
（第２の実施形態）
上述の第１の実施形態では、第２のＩ／Ｏボード２ｂが、第２の入力情報を補正していたが、他の構成が第２の入力情報を補正するものとしても良い。本実施形態では、メインボード１０が第２の入力情報を補正するものとする。
【００８８】
本実施形態のコントローラ１のハードウェア構成は、第１の実施形態と同様である。
【００８９】
図８は、本実施形態にかかるサイクリック伝送を実行するステーションおよびメインボード１０の機能的構成の一例を示すブロック図である。第１のＩ／Ｏボード２ａと、第３のＩ／Ｏボード２ｃと、通信ボード２ｄとは、第１の実施形態と同様の機能を備える。
【００９０】
本実施形態のメインボード１０は、第１の取得部１０１と、演算部１１０２と、第１の送信部１０３と、制御部１０４と、記憶部１０５とを備える。第１の取得部１０１と、第１の送信部１０３と、制御部１０４と、記憶部１０５とは、第１の実施形態と同様の機能を備える。
【００９１】
本実施形態の演算部１１０２は、第１の実施形態の機能を備えた上で、さらに、偏差情報に基づいて、記憶部１０５に記憶された第２の入力情報を補正する。また、演算部１１０２は、補正した第２の入力情報を記憶部１０５に保存する。演算部１１０２は、補正前の第２の入力情報を記憶する記憶領域とは別の記憶領域に補正後の第２の入力情報を保存しても良いし、補正前の第２の入力情報を削除した上で、補正前の第２の入力情報が記憶されていた記憶領域に補正後の第２の入力情報を保存しても良い。
【００９２】
また、本実施形態の第１の送信部１０３は第１の実施形態と同様の機能を備えるため、第１の送信部１０３は、演算部１１０２によって算出された偏差情報を通信ボード２ｄに送信する。このため、本実施形態においても、偏差情報はサイクリック伝送によって各ステーションに伝送され、各ステーションのコモンメモリ２５でバックアップされる。
【００９３】
本実施形態の第２のＩ／Ｏボード２ｂは、第２のカウンタ１０２１ｂと、コモンメモリ２５ｂと、第２の伝送部２２ｂと、第２の受信部２３ｂとを備える。コモンメモリ２５ｂと、第２の伝送部２２ｂと、第２の受信部２３ｂとは、第１の実施形態と同様の機能を備える。
【００９４】
第２のカウンタ１０２１ｂは、センサ４ａから受信したパルス信号を計数し、累計値を、コモンメモリ２５ｂの所定の記憶領域に保存する。
【００９５】
次に、本実施形態における第２の入力情報の補正の処理の流れについて説明する。
図９は、本実施形態にかかる偏差情報の算出および第２の入力情報の補正の処理の流れの一例を示すフローチャートである。このフローチャートの処理は、メインボード１０で実行される。
【００９６】
Ｓ１３１の第１の入力情報と第２の入力情報の取得の処理から、Ｓ１３２の第１の入力情報と第２の入力情報との差分を算出する処理までは、図６で説明した第１の実施形態のＳ３１からＳ３２の処理と同様である。
【００９７】
次に、本実施形態の演算部１１０２は、Ｓ１３２の処理で算出した差分（偏差情報）に基づいて、第２の入力情報を補正する（Ｓ１３３）。例えば、偏差情報が“＋２”の場合、演算部１１０２は、記憶部１０５に保存された第２の入力情報に“２”を加算し、加算後の第２の入力情報を記憶部１０５に保存する。また、偏差情報が“−２”の場合、演算部１１０２は、記憶部１０５に保存された第２の入力情報から“２”を減算し、減算後の第２の入力情報を記憶部１０５に保存する。
【００９８】
Ｓ１３４の偏差情報を通信ボード２ｄに送信する処理は、図６で説明した第１の実施形態のＳ３３の処理と同様である。ここで、このフローチャートの処理は終了する。
【００９９】
このように、本実施形態のコントローラ１では、メインボード１０が、偏差情報に基づいて、第２の入力情報を補正するため、第１の実施形態の効果に加えて、Ｉ／Ｏボード２側の処理を削減することができる。
【０１００】
（第３の実施形態）
上述の第１の実施形態および第２の実施形態では、Ｉ／Ｏボード２を二重化していた。本実施形態においては、Ｉ／Ｏボード２を三重化する場合の構成について説明する。
【０１０１】
本実施形態のコントローラ１のハードウェア構成は、第１の実施形態と同様である。
【０１０２】
図１０は、本実施形態にかかるサイクリック伝送を実行するステーションおよびメインボード１０の機能的構成の一例を示すブロック図である。図１０に示すように、本実施形態においては、第１のＩ／Ｏボード２ａと、第２のＩ／Ｏボード２ｂと、第３のＩ／Ｏボード２ｃとがセンサ４ａからパルス信号を受信する。つまり、本実施形態においては、Ｉ／Ｏボード２が三重化されている。
【０１０３】
本実施形態のメインボード１０は、第１の取得部１０１と、演算部２１０２と、第１の送信部１１０３と、制御部１１０４と、記憶部１０５とを備える。第１の取得部１０１は、第１の実施形態と同様の機能を備える。
【０１０４】
本実施形態の制御部１１０４は、第１の実施形態と同様に、第１の入力情報を優先的に使用して処理を実行する。また、制御部１１０４は、第１のＩ／Ｏボード２ａが停止状態となったと判断した場合には、第１の入力情報の替わりに第２の入力情報を使用して処理を実行する。さらに、制御部１１０４は、さらに、第１のＩ／Ｏボード２ａと第２のＩ／Ｏボード２ｂの両方が停止状態となったと判断した場合には、第１の入力情報および第２の入力情報の替わりに第３の入力情報を使用して処理を実行する。第１の入力情報、第２の入力情報、第３の入力情報の優先順は、予め定められているものとする。
【０１０５】
本実施形態の演算部２１０２は、第１の実施形態の機能を備えた上で、さらに、第１の入力情報と、第３の入力情報との差分（偏差）を算出する。本実施形態においては、第１の入力情報と第２の入力情報との差分を示す情報を、第１の偏差情報という。また、第１の入力情報と第３の入力情報との差分を示す情報を、第２の偏差情報という。本実施形態においては、第１の偏差情報と第２の偏差情報とは、それぞれ、第１の偏差情報と第２の偏差情報とを識別可能な識別情報を含むものとする。例えば、第１の偏差情報は、第１の偏差情報を示す識別情報“Ａ”と、第１の入力情報と第２の入力情報との差分の値とが対応付けられたものとする。また、第２の偏差情報は、第２の偏差情報を示す識別情報“Ｂ”と、第１の入力情報と第２の入力情報との差分の値とが対応付けられたものとする。上述の識別情報の内容は一例であり、これに限定されるものではない。
【０１０６】
演算部２１０２は、第１の偏差情報および第２の偏差情報を、記憶部１０５に保存する。
【０１０７】
本実施形態の第１の送信部１１０３は、第１の実施形態の機能を備えた上で、演算部１０２によって算出された第１の偏差情報と第２の偏差情報とを記憶部１０５から読み出す。第１の送信部１１０３は、読み出した第１の偏差情報と第２の偏差情報とを通信ボード２ｄに送信する。
【０１０８】
本実施形態の通信ボード２ｄは、第２の取得部１０２６と、第２の送信部２７と、第３の伝送部１０２２ｄと、第３の受信部２３ｄと、コモンメモリ２５ｄとを備える。第２の送信部２７と、第３の受信部２３ｄと、コモンメモリ２５ｄとは、第１の実施形態と同様の機能を備える。
【０１０９】
第２の取得部１０２６は、第１の実施形態の機能を備えた上で、メインボード１０から第１の偏差情報と第２の偏差情報とを取得する。第２の取得部２６は、第１の偏差情報と第２の偏差情報とをコモンメモリ２５ｄの送信用データを記憶するための所定の記憶領域に保存する。
【０１１０】
第３の伝送部１０２２ｄは、第１の実施形態の機能を備えた上で、コモンメモリ２５ｄに保存された第１の偏差情報と第２の偏差情報とを、第１のＩ／Ｏボード２ａと、第２のＩ／Ｏボード２ｂと、第３のＩ／Ｏボード２ｃにサイクリック伝送する。
【０１１１】
本実施形態の各ステーション（第１のＩ／Ｏボード２ａ、第２のＩ／Ｏボード２ｂ、第３のＩ／Ｏボード２ｃ、および通信ボード２ｄ）のコモンメモリ２５には、第１の偏差情報と第２の偏差情報とを格納するための記憶領域が予め定められているものとする。
【０１１２】
また、本実施形態の第１のＩ／Ｏボード２ａは、第１の実施形態と同様の機能を備える。
【０１１３】
本実施形態の第２のＩ／Ｏボード２ｂは、第２のカウンタ２１ｂと、コモンメモリ２５ｂと、第２の伝送部２２ｂと、第２の受信部２３ｂと、第１の補正部１０２４ａとを備える。第２のＩ／Ｏボード２ｂは、第２のカウンタ２１ｂと、コモンメモリ２５ｂと、第２の伝送部２２ｂと、第２の受信部２３ｂとは、第１の実施形態と同様の機能を備える。
【０１１４】
第１の補正部１０２４ａは、第１の実施形態の補正部２４と同様の機能を備えた上で、コモンメモリ２５ｂに保存された第１の偏差情報に基づいて、第２のカウンタ２１ｂによるパルス信号の累計値（第２の入力情報）を補正する。第１の補正部１０２４ａは、第１の偏差情報と第２の偏差情報とに含まれる識別情報に基づいて、第１の偏差情報を識別するものとする。
【０１１５】
本実施形態の第３のＩ／Ｏボード２ｃは、第３のカウンタ２１ｃと、第２の補正部１０２４ｂと、第４の伝送部２２ｃと、第４の受信部２３ｃと、コモンメモリ２５ｃとを備える。第３のカウンタ２１ｃと、第４の伝送部２２ｃと、第４の受信部２３ｃと、コモンメモリ２５ｃとは、第１の実施形態と同様の機能を備える。
【０１１６】
第２の補正部１０２４ｂは、第１の実施形態の補正部２４と同様の機能を備えた上で、コモンメモリ２５ｃに保存された第２の偏差情報に基づいて、第３のカウンタ２１ｃによるパルス信号の累計値（第３の入力情報）を補正する。第２の補正部１０２４ｂは、第１の偏差情報と第２の偏差情報とに含まれる識別情報に基づいて、第２の偏差情報を識別するものとする。
【０１１７】
このように、本実施形態のコントローラ１では、Ｉ／Ｏボード２を三重化することによって冗長性が高くなり、コントローラ１の信頼性をより向上させることができる。
【０１１８】
なお、コントローラ１は、多重化するＩ／Ｏボード２の数をさらに増加させ、四重化以上の構成を採用しても良い。
【０１１９】
また、本実施形態においては、第２のＩ／Ｏボード２ｂと第３のＩ／Ｏボード２ｃとでそれぞれ第２の入力情報と第３の入力情報とを補正するものとしたが、第２の実施形態と同様に、メインボード１０で第２の入力情報と第３の入力情報とを補正する構成を採用しても良い。
【０１２０】
（変形例）
上述の第１から第３の実施形態では、各ステーション間でサイクリック伝送されるデータの伝送速度については特に限定していないが、各ステーションは、データの伝送速度を変更可能であるものとしても良い。例えば、各ステーションの伝送部２２は、伝送するデータごとに、高速、中速、低速のいずれかの伝送速度を選択可能であるものとする。
【０１２１】
当該構成を備える場合、伝送部２２は、偏差情報を、入力情報を伝送する速度よりも遅い速度で伝送しても良い。具体的には、第１のＩ／Ｏボード２ａの第１の伝送部２２ａが、第１の入力情報を他のステーションに「高速」の伝送速度で伝送する場合に、通信ボード２ｄの第３の伝送部２２ｄは、「中速」または「低速」で伝送するものとする。また、第２のＩ／Ｏボード２ｂの第２の伝送部２２ｂと、第３のＩ／Ｏボード２ｃの第４の伝送部２２ｃとは、第２の入力情報または第３の入力情報を「高速」の伝送速度で他のステーションに伝送するものとする。
【０１２２】
このような構成を備えることにより、本変形例のコントローラ１によれば、センサ４ａまたはセンサ４ｂからの入力データについては迅速にメインボード１０に送信されるとともに、「高速」の伝送速度で伝送するデータ量の増大を抑制することができる。なお、伝送速度の種類は上述の３種類に限定されるものではない。
【０１２３】
以上説明したとおり、第１から第３の実施形態によれば、多重化されたＩ／Ｏボード２を有するサイクリック伝送装置の信頼性を向上することができる。
【０１２４】
なお、第１から第３の実施形態のメインボード１０で実行されるプログラムは、ＲＯＭ等に予め組み込まれて提供される。第１から第３の実施形態のメインボード１０で実行されるプログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ、ＤＶＤ（Digital  Versatile  Disk）等のコンピュータで読み取り可能な記録媒体に記録して提供するように構成してもよい。
【０１２５】
さらに、第１から第３の実施形態のメインボード１０で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、第１から第３の実施形態のメインボード１０で実行されるプログラムをインターネット等のネットワーク経由で提供または配布するように構成しても良い。
【０１２６】
第１から第３の実施形態のメインボード１０で実行されるプログラムは、上述した各部（第１の取得部、演算部、第１の送信部、制御部）を含むモジュール構成となっており、実際のハードウェアとしてはＣＰＵ（プロセッサ）が上記ＲＯＭからプログラムを読み出して実行することにより上記各部が主記憶装置上にロードされ、第１の取得部、演算部、第１の送信部、制御部が主記憶装置上に生成されるようになっている。
【０１２７】
また、第１から第３の実施形態の各ステーション（第１のＩ／Ｏボード２ａ、第２のＩ／Ｏボード２ｂ、第３のＩ／Ｏボード２ｃ、通信ボード２ｄ）で実行されるプログラムは、ＲＯＭ等に予め組み込まれて提供される。第１から第３の実施形態の各ステーションで実行されるプログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ、ＤＶＤ（Digital  Versatile  Disk）等のコンピュータで読み取り可能な記録媒体に記録して提供するように構成してもよい。
【０１２８】
さらに、第１から第３の実施形態の各ステーションで実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、第１から第３の実施形態の各ステーションで実行されるプログラムをインターネット等のネットワーク経由で提供または配布するように構成しても良い。
【０１２９】
第１から第３の実施形態の各ステーションで実行されるプログラムは、上述した各部（第１のカウンタ、第１の伝送部、第１の受信部、第２のカウンタ、第２の伝送部、第２の受信部、第１の補正部（補正部）、第３のカウンタ、第４の伝送部、第４の受信部、第２の補正部、第２の取得部、第２の送信部、制御部、第３の伝送部、第３の受信部）を含むモジュール構成となっており、実際のハードウェアとしてはＣＰＵ（プロセッサ）が上記ＲＯＭからプログラムを読み出して実行することにより上記各部が主記憶装置上にロードされ、第１のカウンタ、第１の伝送部、第１の受信部、第２のカウンタ、第２の伝送部、第２の受信部、第１の補正部（補正部）、第３のカウンタ、第４の伝送部、第４の受信部、第２の補正部、第２の取得部、第２の送信部、制御部、第３の伝送部、第３の受信部が主記憶装置上に生成されるようになっている。
【０１３０】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１３１】
１  コントローラ
２ａ  第１のＩ／Ｏボード
２ｂ  第２のＩ／Ｏボード
２ｃ  第３のＩ／Ｏボード
２ｄ  通信ボード
４ａ，４ｂ  センサ
５  伝送路
１０  メインボード
２１ａ  第１のカウンタ
２１ｂ，１０２１ｂ  第２のカウンタ
２１ｃ  第３のカウンタ
２２ａ  第１の伝送部
２２ｂ  第２の伝送部
２２ｃ  第４の伝送部
２２ｄ，１０２２ｄ  第３の伝送部
２３ａ  第１の受信部
２３ｂ  第２の受信部
２３ｃ  第４の受信部
２３ｄ  第３の受信部
２４  補正部
２５，２５ａ〜２５ｄ  コモンメモリ
２６，１０２６  第２の取得部
２７  第２の送信部
１０１  第１の取得部
１０２，１１０２，２１０２  演算部
１０３，１１０３  第１の送信部
１０４，１１０４  制御部
１０５  記憶部
１０２４ａ  第１の補正部
１０２４ｂ  第２の補正部
【図１】
2020129318.tif 000003
【図２】
2020129318.tif 000004
【図３】
2020129318.tif 000005
【図４】
2020129318.tif 000006
【図５】
2020129318.tif 000007
【図６】
2020129318.tif 000008
【図７】
2020129318.tif 000009
【図８】
2020129318.tif 000010
【図９】
2020129318.tif 000011
【図１０】
2020129318.tif 000012