(57)【要約】【課題】入出力動作の同時性を確保し、データ化けによる誤出力を防止する。【解決手段】第一マイコン、第一マイコンと非同期で動作する第二マイコン、第一マイコンと第二マイコンのそれぞれから逐次出力される送信データを更新して書込み、書き込まれたデータを逐次読み出すための二重化された送信バッファ、送信データでのデータ化けの有無を検出する比較器３４、および、二重化された送信バッファそれぞれにおける送信データの更新状態が一致したときに、比較器３４で比較させるデータを二重化された送信バッファのそれぞれから読み出させる読出データ同期制御機構、を備えるように構成した。【選択図】図２
2020184184.tif 000002
【特許請求の範囲】
【請求項１】
通信接続により上位制御装置と制御対象機器との間に介在し、前記上位制御装置と前記制御対象機器との間の入出力制御を担うＩ／Ｏ制御装置であって、
ＣＰＵコアと、前記ＣＰＵコアによる演算処理用のデータを格納するメモリとを有する第一マイコン、
前記第一マイコンと同じプログラムがインストールされ、前記第一マイコンと非同期で動作する第二マイコン、
前記インストールされたプログラムの実行により、前記第一マイコンと前記第二マイコンのそれぞれから逐次出力される送信データを更新して書込み、書き込まれたデータを前記上位制御装置または前記制御対象機器への送信データとして逐次読み出すための二重化された送信バッファ、
前記二重化された送信バッファのそれぞれから逐次読み出されたデータを比較し、前記送信データでのデータ化けの有無を検出する比較器、および、
前記二重化された送信バッファそれぞれにおける前記送信データの更新状態が一致したときに、前記比較器で比較させるデータを前記二重化された送信バッファのそれぞれから読み出させる読出データ同期制御機構、
を備えたことを特徴とするＩ／Ｏ制御装置。
【請求項２】
前記二重化された送信バッファは、書込用と読出用とを切り換えて用いる対のバッファを二重化して構成され、
前記読出データ同期制御機構は、前記更新状態が一致したときに、前記対のバッファのうちの一方を書込用に、他方を読出用として切り替えることを特徴とする請求項１に記載のＩ／Ｏ制御装置。
【請求項３】
前記上位制御装置、または前記制御対象機器から逐次受信した受信データを更新して書込み、前記第一マイコンと前記第二マイコンそれぞれが受信データとして逐次読み出すための、書込用と読出用とを切り換えて用いる対のバッファを二重化して構成された二重化された受信バッファ、および、
前記二重化された受信バッファそれぞれにおける前記受信データの読出し状態が一致したときに、前記対のバッファのうちの一方を書込用に、他方を読出用として切り替える受信バッファ切替機構、
を備えたことを特徴とする請求項１または２に記載のＩ／Ｏ制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、Ｉ／Ｏ制御装置に関するものである。
【背景技術】
【０００２】
演算処理装置の信頼性を向上させる技術として、二重化したＣＰＵのそれぞれに同じプログラムを走らせ、それぞれのＣＰＵからの出力を比較する技術が開示されている。その際、電子計算機、あるいはコントローラのような分野では、自機でタイミングを制御することができる。そのため、同期用のクロック回路の設置、あるいは、プログラムを実行した後に同期を取ってＩ／Ｏリフレッシュを行うタイミングを設ける、等の構成を用いることが可能である（例えば、特許文献１または２参照。）。
【０００３】
一方、上位制御装置と制御対象機器との間の入出力制御をつかさどるＩ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）制御機器の分野においては、自機でタイミングを制御することが困難であり、かつ、入出力制御における時間遅れが許されない。そのため、物理的にＣＰＵを二重化させることなく、ひとつのマイコン（ＣＰＵ）を仮想的に二重化させることで、データ化けによる誤出力を防止するようにしていた（例えば、特許文献３参照。）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平４−７１０３７号公報（第三頁右下欄〜第四頁右上欄、第１図）
【特許文献２】特開２００２−３５８１０６号公報（段落００２１〜００２９、図１、段落００４５、図６）
【特許文献３】特開２０１６−４４０９号公報（段落００１７〜００２２、図２、段落００３０〜００３２、図３）
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、マイコンを仮想的に二重化させた場合には、並列処理ができないため、処理時間が長く、メモリの使用領域も大きくなり、入出力動作が遅くなる。つまり、Ｉ／Ｏ制御装置においては、入出力動作の同時性の確保とデータ化けによる誤出力防止を両立させることが困難であった。
【０００６】
本願は、上記のような課題を解決するための技術を開示するものであり、入出力動作の同時性を確保し、データ化けによる誤出力を防止できるＩ／Ｏ制御装置の提供を目的としている。
【課題を解決するための手段】
【０００７】
本願に開示されるＩ／Ｏ制御装置は、  通信接続により上位制御装置と制御対象機器との間に介在し、前記上位制御装置と前記制御対象機器との間の入出力制御を担うＩ／Ｏ制御装置であって、ＣＰＵコアと、前記ＣＰＵコアによる演算処理用のデータを格納するメモリとを有する第一マイコン、前記第一マイコンと同じプログラムがインストールされ、前記第一マイコンと非同期で動作する第二マイコン、前記インストールされたプログラムの実行により、前記第一マイコンと前記第二マイコンのそれぞれから逐次出力される送信データを更新して書込み、書き込まれたデータを前記上位制御装置または前記制御対象機器への送信データとして逐次読み出すための二重化された送信バッファ、前記二重化された送信バッファのそれぞれから逐次読み出されたデータを比較し、前記送信データでのデータ化けの有無を検出する比較器、および、前記二重化された送信バッファそれぞれにおける前記送信データの更新状態が一致したときに、前記比較器で比較させるデータを前記二重化された送信バッファのそれぞれから読み出させる読出データ同期制御機構、を備えたことを特徴とする。
【発明の効果】
【０００８】
本願に開示されるＩ／Ｏ制御装置によれば、バッファからの読出しのタイミングを調整することで、非同期のマイコンを並列処理させるようにしたので、入出力動作の同時性を確保し、データ化けによる誤出力を防止できる。
【図面の簡単な説明】
【０００９】
【図１】実施の形態１にかかるＩ／Ｏ制御装置の構成を説明するためのブロック図である。
【図２】実施の形態１にかかるＩ／Ｏ制御装置に設けられたアナログ出力回路の構成を説明するためのブロック図である。
【図３】実施の形態１にかかるＩ／Ｏ制御装置に設けられたアナログ入力回路の構成を説明するためのブロック図である。
【図４】実施の形態１にかかるＩ／Ｏ制御装置に設けられた通信入出力回路の構成を説明するためのブロック図である。
【図５】実施の形態１にかかるＩ／Ｏ制御装置を構成するアナログ出力回路に対するマイコンＡの制御処理動作を説明するためのフローチャートである。
【図６】実施の形態１にかかるＩ／Ｏ制御装置を構成するアナログ出力回路に対するマイコンＢの制御処理動作を説明するためのフローチャートである。
【図７】実施の形態１にかかるＩ／Ｏ制御装置を構成するアナログ入力回路に対するマイコンＡの制御処理動作を説明するためのフローチャートである。
【図８】実施の形態１にかかるＩ／Ｏ制御装置を構成するアナログ入力回路に対するマイコンＢの制御処理動作を説明するためのフローチャートである。
【図９】実施の形態１にかかるＩ／Ｏ制御装置を構成する通信入出力回路に対するマイコンＡの制御処理動作を説明するためのフローチャートである。
【図１０】実施の形態１にかかるＩ／Ｏ制御装置を構成する通信入出力回路に対するマイコンＢの制御処理動作を説明するためのフローチャートである。
【発明を実施するための形態】
【００１０】
実施の形態１．
図１〜図１０は、実施の形態１にかかるＩ／Ｏ制御装置の構成、および動作について説明するためのものであり、図１はＩ／Ｏ制御装置の構成について、入出力制御対象である上位制御機器と制御対象機器とのつながりを含めたシステム全体のブロック図、図２はアナログ出力回路のハードウェア（Ｈ／Ｗ）構成を説明するためのブロック図、図３はアナログ入力回路のＨ／Ｗ構成を説明するためのブロック図、そして、図４は通信入出力回路のＨ／Ｗ構成を説明するためのブロック図である。
【００１１】
また、図５と図６は、アナログ出力回路に対する、マイコンＡの制御処理動作とマイコンＢの制御処理動作のそれぞれを説明するためのフローチャート、図７と図８は、アナログ入力回路に対する、マイコンＡの制御処理動作とマイコンＢの制御処理動作のそれぞれを説明するためのフローチャート、図９と図１０は、通信入出力回路に対する、マイコンＡの制御処理動作とマイコンＢの制御処理動作のそれぞれを説明するためのフローチャートである。
【００１２】
Ｉ／Ｏ制御装置は、例えば発電プラントシステムなどに適用されるものであって、目標値を演算する上位制御装置と、制御対象となるポンプ、バルブ等の各種の制御対象機器との間にあって、上位制御装置と制御対象機器間の入出力制御をつかさどるものである。そして、本願のＩ／Ｏ制御装置１は、図１に示すように、上位制御装置８の演算処理の負荷軽減のための２つのマイコン１２Ａ、１２Ｂを備えるとともに、アナログ出力回路１３、アナログ入力回路１４、および通信入出力回路１５を備えている。
【００１３】
そして、通信入出力回路１５が上位制御装置８とデジタルの通信ラインを介して接続され、アナログ出力回路１３とアナログ入力回路１４がアナログの制御信号線を介して制御対象機器９に接続される。これにより、Ｉ／Ｏ制御装置１は、上位制御装置８からの指令に基づいた制御対象機器９への出力信号の制御、および、制御対象機器９からの出力信号の状態に応じた上位制御装置８への出力機能をつかさどることができる。
【００１４】
＜二重化マイコン＞
マイコン１２Ａは、ＣＰＵコア２１Ａと、ＣＰＵコア２１Ａによる演算制御用のプログラム（プログラムＡ）を格納するＥＥＰＲＯＭ２３Ａと、ＣＰＵコア２１ＡとプログラムＡが使用するＲＡＭ２２Ａと、で構成している。また、マイコン１２Ｂも、ＣＰＵコア２１Ｂと、ＣＰＵコア２１Ｂによる演算制御用のプログラム（プログラムＢ）を格納するＥＥＰＲＯＭ２３Ｂと、ＣＰＵコア２１Ｂとプログラムが使用するＲＡＭ２２Ｂと、で構成し、マイコン１２Ａと二重化している。そして、マイコン１２Ａ、１２Ｂは、同一仕様のデバイスであり、かつ同一動作となるように設計している。なお、マイコン１２Ａ、１２Ｂについては、説明の際、それぞれ、マイコンＡ、マイコンＢと称することとする。
【００１５】
プログラムＡとプログラムＢは完全に同一データであり、データ化けが無い限り実質的には内容が同一のプログラムＡとプログラムＢが、マイコンＡとマイコンＢに、別々にインストールされている。また、動作中のマイコンＡ内部のＲＡＭ２２ＡとＥＥＰＲＯＭ２３Ａ、および動作中のマイコンＢ内部のＲＡＭ２２ＢとＥＥＰＲＯＭ２３Ｂのそれぞれには、データ化けが無い限り実質的に同じデータが格納される。
【００１６】
マイコンＡ、マイコンＢのそれぞれは、上位制御装置８から通信ラインを介して送信される指令に従って制御対象機器９への出力信号を制御し、また、制御対象機器９からの入力信号の状態を読取り、通信ラインを介して上位制御装置８にデータを送信する。そして、それぞれ別々にインストールされたプログラムＡとプログラムＢに基づいて、後述するアナログ出力回路１３、アナログ入力回路１４に入出力するデータと、通信入出力回路１５との間で入出力するデータの演算処理を別々に実行する。別々に実行した演算処理の不一致の有無によりデータ化けを検出することで、不正なアナログ出力と通信時の不正な送信を防止することが目的となる。
【００１７】
＜アナログ出力回路＞
アナログ出力回路１３は、図２に示すように、データ入力端として、プログラムＡのデジタル出力データを格納する送信バッファを２バンクで構成しており、送信バッファ（バンク０）３０Ａと、送信バッファ（バンク１）３１Ａを設けている。同様に、プログラムＢのデジタル出力データを格納する送信バッファも２バンクで構成しており、送信バッファ（バンク０）３０Ｂと、送信バッファ（バンク１）３１Ｂを設けている。これら４つの送信バッファ３０Ａ、３１Ａ、３０Ｂ、３１Ｂの内、送信バッファ３０Ａと３０Ｂ、あるいは送信バッファ３１Ａと３１Ｂが、二重化された送信バッファとして機能する。
【００１８】
プログラムＡにより処理されたデータを格納する２つの送信バッファ３０Ａ、３１Ａと、プログラムＢにより処理されたデータを格納する２つの送信バッファ３０Ｂ、３１Ｂの出力端には、それぞれ個別に選択器３３Ａ、３３Ｂが設けられている。各選択器３３Ａ、３３Ｂは、後述の動作中バンクレジスタ３７からの送信バンク切替信号に応じて、いずれか一方の送信バッファを選択する。例えば、送信バンク切替信号が「０」ならば、プログラムＡに関する一方の送信バッファ３０ＡとプログラムＢに関する一方の送信バッファ３０Ｂを共に選択する。一方、送信バンク切替信号が「１」ならばプログラムＡに関する他方の送信バッファ３１ＡとプログラムＢに関する他方の送信バッファ３１Ｂを共に選択するように構成している。
【００１９】
比較器３４は、各選択器３３Ａ、３３Ｂの出力端に接続され、選択器３３Ａ、３３Ｂで選択された送信バッファ３０Ａ、３０Ｂ、または３１Ａ、３１Ｂから読出された送信データを比較する。両送信データの値が一致すると、後述のＤＡＣアクセスコントローラ３８に送信データを出力する。両送信データの値が一致しないときには、データ化けが生じているものと判断してエラー修復処理に移行する。
【００２０】
ＤＡＣアクセスコントローラ３８(ＤＡＣ：Digital to Analog Converter)は、比較器３４からのデジタル出力データをアナログ出力に変換し、変換したアナログ出力を装置制御信号として、制御対象機器９に出力する。この、ＤＡＣアクセスコントローラには、プログラムＡとプログラムＢが参照するための、バンク０とバンク１の内、プログラム読出用に使用中のバンクを示す動作中バンクレジスタ３７が接続されている。動作中バンクレジスタ３７は、ＤＡＣアクセスコントローラ３８からのバンク切替要求を受けると、選択器３３Ａ、３３Ｂに対してバンク０と１を切り替える送信バンク切替信号を生成するとともに、生成した送信バンク切替信号の値を登録する。
【００２１】
ここで、プログラムＡとプログラムＢは非同期で動作するため、選択器３３Ａ、３３Ｂのそれぞれから出力されるデータの同時性を実現しなければ、比較器３４で不一致を誤検出してしまう。この問題を解決するため、本願では、同期処理が不要な仮想マイコンを用いた特許文献３のＩ／Ｏ制御装置におけるアナログ出力回路に対して、以下の構成を変更した。
【００２２】
バンク切替レジスタの代わりに、入力信号に応じて登録値を変える送信バッファ更新フラグレジスタを設け、比較器の代わりに、ＡＮＤ回路を設けるようにした。具体的には、送信バッファ更新フラグレジスタ３５Ａと３５Ｂの出力端に、値が「１」のときのみ出力するＡＮＤ回路３９を接続し、ＤＡＣアクセスコントローラ３８からの送信バッファ更新フラグリセット信号を送信バッファ更新フラグレジスタ３５Ａと３５Ｂに出力するように構成した。
【００２３】
このように構成することで、例えば、送信バッファ更新フラグレジスタ３５Ａは、プログラムＡが後述する送信バンク切替信号により選択されるバンクに対して送信データを更新すると、プログラムＡによって値「１」が登録される。そして、ＤＡＣアクセスコントローラ３８から送信バンク切替完了の通知である送信バッファ更新フラグリセット信号を受けると値「０」が登録される。同様に、送信バッファ更新フラグレジスタ３５Ｂは、プログラムＢが送信バンク切替信号により選択されるバンクに対して送信データを更新すると、プログラムＢによって、値「１」が登録される。そして、ＤＡＣアクセスコントローラ３８から送信バンク切替完了の通知を受けると値「０」が登録される。
【００２４】
ＡＮＤ回路３９の出力端はＤＡＣアクセスコントローラ３８に接続され、送信バッファ更新フラグレジスタ３５Ａと３５Ｂの値がともに値「１」となると、ＤＡＣアクセスコントローラ３８に対して、送信バンクの切り替えを要求する。そして、ＤＡＣアクセスコントローラ３８は、ＡＮＤ回路３９からの送信バンク切替要求を受けると、バンク切替結果を動作中バンクレジスタ３７に通知し、送信バンク切替完了を送信バッファ更新フラグレジスタ３５Ａ、３５Ｂに通知する。これらが、個々のマイコンの送信データの同時性を実現するための送信バンク切替手段として機能する。
【００２５】
＜アナログ入力回路＞
アナログ入力回路１４は、図３に示すように、入力端として、制御対象機器９から出力されたアナログ信号をデータ値に変換し、選択器４３を介して受信バッファに受信データを送信するＡＤＣアクセスコントローラ４８(ＡＤＣ：Analog to Digital Converter)が設けられている。プログラムＡが読出し可能なアナログ入力変換データを格納する受信バッファとしては、２バンクで構成しており、受信バッファ（バンク０）４０Ａと、受信バッファ（バンク１）４１Ａを設けている。同様に、プログラムＢが読出し可能なアナログ入力変換データを格納する受信バッファとしても２バンクで構成しており、受信バッファ（バンク０）４０Ｂと、受信バッファ（バンク１）４１Ｂを設けている。
【００２６】
また、ＡＤＣアクセスコントローラ４８には、プログラムＡとプログラムＢが参照するバンクを選択器４３が切り替えるための、受信バンク切替信号を出力するとともに、使用中のバンクを示す動作中バンクレジスタ４７が接続されている。これにより、選択器４３は、動作中バンクレジスタ４７からの受信バンク切替信号に応じて、いずれか一方のバンクを選択する。例えば、受信バンク切替信号が「０」ならば、プログラムＡの受信バッファ４０ＡとプログラムＢの受信バッファ４０Ｂを選択する。一方、受信バンク切替信号が「１」ならば、プログラムＡの受信バッファ４１ＡとプログラムＢの受信バッファ４１Ｂを選択するように構成している。
【００２７】
ここで、プログラムＡとプログラムＢは非同期で動作するため、マイコンＡ、Ｂ個々の受信データを一致させるには、プログラムＡとプログラムＢの両方が、受信バッファからデータを読出した後に、選択器４３を切り替える必要がある。この問題を解決するため、本願では、同期処理が不要な仮想マイコンを用いた特許文献３のＩ／Ｏ制御装置におけるアナログ入力回路に対して、以下の構成を変更した。受信バンク切替レジスタに代えて、バンクからのデータ読出しの完了状態に応じてフラグを変える２つの受信バッファ読出完了フラグレジスタと、２つの受信バッファ読出完了フラグレジスタの出力端に接続するＡＮＤ回路を設けるように構成した。
【００２８】
具体的には、ＡＤＣアクセスコントローラ４８からの受信バッファ読出完了フラグリセット信号が、受信バッファ読出完了フラグレジスタ４５Ａと４５Ｂに出力されるようにした。そして、受信バッファ読出完了フラグレジスタ４５Ａと４５Ｂからの出力をＡＮＤ回路４９に接続し、フラグが一致したときに、ＡＮＤ回路４９からＡＤＣアクセスコントローラ４８に受信バンク切替要求が出されるように構成した。
【００２９】
例えば、受信バッファ読出完了フラグレジスタ４５Ａは、プログラムＡが受信バンク切替信号により選択されるバンクから受信データの読出しが完了すると、プログラムＡによって値「１」が登録される。一方、ＡＤＣアクセスコントローラ４８から受信バンク切替完了の通知を受けると値「０」が登録される。同様に、受信バッファ読出完了フラグレジスタ４５Ｂは、プログラムＢが受信バンク切替信号により選択されるバンクから受信データの読出しが完了すると、プログラムＢによって値「１」が登録される。一方、ＡＤＣアクセスコントローラ４８から受信バンク切替完了の通知を受けると値「０」が登録される。
【００３０】
ＡＮＤ回路４９は、受信バッファ読出完了フラグレジスタ４５Ａ、４５Ｂの値がともに値１となると、ＡＤＣアクセスコントローラ４８に対して、受信バンクの切り替えを要求する。そして、ＡＤＣアクセスコントローラ４８は、ＡＮＤ回路４９からの受信バンク切替要求を受けると、バンク切替結果を動作中バンクレジスタ４７に通知し、受信バンク切替完了を受信バッファ読出完了フラグレジスタ４５Ａ、４５Ｂに通知する。これらが、個々のマイコンの受信データの同時性を実現するための受信バンク切替手段として機能する。
【００３１】
＜通信入出力回路＞
通信入出力回路１５は、上位制御装置８との通信処理として送信、受信処理を行うためのもので、図４に示すように、図２で説明したアナログ出力回路１３と、図３で説明したアナログ入力回路１４とを組み合わせた構成となっている。具体的には、通信コントローラ５８と、動作中バンクレジスタ５７を除き、図２における符号の十位を「３」から「５」に代えた構成と、図３における符号の十位を「４」から「６」に代えた構成を有している。そして、ＤＡＣアクセスコントローラ３８とＡＤＣアクセスコントローラ４８を一体化させた通信コントローラ５８と、動作中バンクレジスタ３７と４７を共通化した動作中バンクレジスタ５７を備えるようにした。各構成要素のつながり、および動作については図２、図３で説明したのと同様であり、説明を省略する。
【００３２】
ここで、動作説明をはじめる前に、上述した構成における主要部分の機能について説明する。マイコンＡとマイコンＢは、同一仕様のデバイスであり、かつ同一動作となるように設計し、それぞれのＥＥＰＲＯＭ２３Ａ、２３Ｂに実装するプログラムＡとプログラムＢは完全に同一のプログラムである。また、マイコンＡにインストールされたソフトウェア（Ｓ／Ｗ）であるプログラムＡは、アナログ出力回路１３に出力するデータと通信入出力回路１５への出力データを演算処理する。同様に、マイコンＢのＳ／ＷであるプログラムＢも、アナログ出力回路１３に出力するデータと通信入出力回路１５への出力データを演算処理する。
【００３３】
アナログ出力回路１３では、プログラムＡとプログラムＢが出力データを書込む送信バッファをそれぞれ２バンクで構成しており、一方をプログラム書込用に、他方をＤＡＣアクセスコントローラ３８の読出用に使用する。これは信号の出力周期と、プログラムの演算周期が非同期のためであり、ＤＡＣアクセスコントローラ３８がデータを読出しているときに、プログラムが送信データを書込めるようにすることでデータ送信処理速度を向上させる効果がある。
【００３４】
また、送信バッファ更新フラグレジスタ３５Ａと送信バッファ更新フラグレジスタ３５Ｂは、送信バンク切替信号によってプログラム書込用に設定された送信バンクに対して、送信データを更新したことを示す。そして、両プログラムが送信データを更新完了すると、ＡＮＤ回路３９は、ＤＡＣアクセスコントローラ３８に送信バンク切替要求を出力する。
【００３５】
そして、比較器３４で送信データが一致したか否かを判定することで、マイコンＡとマイコンＢそれぞれが内蔵するＥＥＰＲＯＭ２３Ａと２３ＢもしくはＲＡＭ２２Ａと２２Ｂのデータ化けを検出できる。しかし、上述したように、同期化していないマイコンＡとマイコンＢのそれぞれで、実行されるプログラムＡとＢの演算結果の同時性を確保しなければ、比較器３４で送信データの不一致を誤検出してしまう。それに対して、プログラムＡ、プログラムＢを以下のように処理することで、両プログラムによる送信データの同時性を確保が可能となる。
【００３６】
アナログ出力回路１３に対するマイコンＡの制御処理（プログラムＡ）について、図５を用いて説明する。まず、プログラムＡは、送信バッファ更新フラグレジスタ３５Ａに現在登録されている値を読込み（ステップＳ１１Ａ）、送信バンクが切り替わっているか否かを判断する（ステップＳ１２Ａ）。値が「１」であれば、送信バンクは切り替わっていないと判断し、ステップＳ１１Ａに戻る。
【００３７】
値が「０」であれば、プログラムＡ、Ｂともに送信データの更新を完了し、送信バンクが切り替わった状態である。そのため、動作中バンクレジスタ３７に登録されている値を読込み（ステップＳ１３Ａ）、各選択器３３Ａ、３３Ｂがバンク０とバンク１のうちのいずれを選択している状態かを判断する（ステップＳ１４Ａ）。
【００３８】
リード値がバンク０を示す値であれば、ＤＡＣアクセスコントローラ３８の読出用にバンク０が使用されている状態であるので、プログラムＡは送信バッファ（バンク１）３１Ａに送信データを書込む（ステップＳ１５Ａ）。そして、送信バッファ（バンク１）への送信データ書込みが完了すると、送信バッファ更新フラグレジスタ（３５Ａ）に対してデータ書込完了を示す値「１」をセットする（ステップＳ１７Ａ）。
【００３９】
リード値がバンク１を示す値であれば、ＤＡＣアクセスコントローラ３８の読出用にバンク１が使用されている状態であるので、プログラムＡは送信バッファ（バンク０）３０Ａに送信データを書込む（ステップＳ１６Ａ）。そして、送信バッファ（バンク０）への送信データ書込みが完了すると、送信バッファ更新フラグレジスタ（３５Ａ）に対してデータ書込み完了を示す値「１」をセットする（ステップＳ１７Ａ）。
【００４０】
プログラムＢについては、図６に示すように、図５におけるステップ番号の末尾「Ａ」を「Ｂ」に置き換えた以外は同じフローであり、プログラムＡと同一の動作を実施する。そのためプログラムＡ、Ｂともにデータ書込みが完了したときのみ、ＡＮＤ回路３９がＤＡＣアクセスコントローラ３８に送信バンク切替要求を出力する。ＤＡＣアクセスコントローラ３８は、比較器３４からの送信データ読出し中でなければ、動作中バンクレジスタ３７のバンクを切り替えて、送信バッファ更新フラグレジスタ３５Ａ、３５Ｂに送信バンク切替完了通知を出力する。
【００４１】
これにより、選択器３３Ａ、３３Ｂは、プログラムＡ、Ｂともに書込み済みのバンクが選択されるため、プログラムＡとプログラムＢの送信データの同時性が確保される。比較器３４で送信データを比較した結果、両送信データの値が一致すると、データ化けは無いと判断して、ＤＡＣアクセスコントローラ３８に送信データを出力する。これに対して、両送信データの値が一致しないときには、データ化けが発生しているものと判断し、不正な送信データを出力せずに、エラー修復処理に移行する。
【００４２】
なお、上記動作を実現させる構成は、特許文献２に開示された構成と対して変更点が無いようにも見える。しかし、特許文献２においては、もともとプログラムＡとプログラムＢをシリーズで走らせることを前提としており、同期させるという概念は無かった。それに対して、本願では、更新完了の状態が一致したとき（値「１」）のみ、機能を切り換えるようにし、フラグをリセットするように構成して、送信バッファ３０Ａと３０Ｂ、および送信バッファ３１Ａと３１Ｂの動作を同期化した。
【００４３】
つまり、マイコン自体の動作ではなく、データの書込み、読出しに用いるバッファの機能切替を同期化させることで、非同期のマイコンＡとマイコンＢそれぞれで実行されるプログラムＡとプログラムＢを同期して並行処理できることを見出した。つまり、ＣＰＵのクロック同期を必要とせず、上述した単純な構成で、非同期のマイコン動作を実質的に同期化させることができた。これは、以下のアナログ入力回路１４についても同様である。
【００４４】
アナログ入力回路１４では、アナログ出力回路１３でのデータの流れが逆になるだけで、ステップ単位の基本動作は、アナログ出力回路１３と同一である。アナログ入力回路１４に対するマイコンＡの制御処理（プログラムＡ）について、図７を用いて説明する。まず、プログラムＡは受信バッファ読出完了フラグレジスタ４５Ａに現在登録されている値を読込み（ステップＳ２１Ａ）、受信バンクが切り替わっているか否かを判断する（ステップＳ２２Ａ）。値が「１」であれば、受信バンクは切り替わっていないと判断し、ステップＳ２１Ａに戻る。値が０であれば、プログラムＡ、Ｂともに受信データの読出しが完了し、受信バンクが切り替わった状態である。そのため、動作中バンクレジスタ４７に登録されている値を読込み（ステップＳ２３Ａ）、選択器４３がバンク０とバンク１のいずれを選択している状態かを判断する（ステップＳ２４Ａ）。
【００４５】
リード値がバンク０を示す値であれば、ＡＤＣアクセスコントローラ４８はバンク０に受信データを書込んでいる状態であるので、プログラムＡは受信バッファ（バンク１）４１Ａから受信データを読出す（ステップＳ２５Ａ）。そして、受信バッファ（バンク１）の受信データ読出しが完了すると、受信バッファ読出完了フラグレジスタ４５Ａに対してデータ読出完了を示す値「１」をセットする（ステップＳ２７Ａ）。
【００４６】
一方、リード値がバンク１を示す値であれば、ＡＤＣアクセスコントローラ４８の書込み用にバンク１が使用されている状態であるので、プログラムＡは受信バッファ（バンク０）４０Ａから受信データを読込む（ステップＳ２６Ａ）。そして、受信バッファ（バンク０）からの受信データ読出しが完了すると、受信バッファ更新フラグレジスタ（４５Ａ）に対してデータ読出完了を示す値「１」をセットする（ステップＳ２７Ａ）。
【００４７】
プログラムＢについては、図８に示すように、図７におけるステップ番号の末尾「Ａ」を「Ｂ」に置き換えた以外は同じフローであり、プログラムＡと同一の動作を実施する。そのためプログラムＡ、Ｂともに受信データ読出しが完了すると、ＡＮＤ回路４９がＡＤＣアクセスコントローラ４８に受信バンク切替要求を出力する。ＡＤＣアクセスコントローラ４８は、受信バッファへの受信データ書込み中でなければ、動作中バンクレジスタ４７のバンクを切り替えて、受信バッファ読出完了フラグレジスタ４５Ａ、４５Ｂに受信バンク切替完了通知を出力する。
【００４８】
これにより、選択器４３は、プログラムＡ、Ｂともに読出し済みのバンクが選択されるため、プログラムＡとプログラムＢの受信データの同時性が確保される。
【００４９】
通信入出力回路１５では、上位制御装置８との通信送受信処理を行う。通信方法としては、上位制御装置８が常にマスターとなり、通信入出力回路１５は常にスレーブとして動作し、通信入出力回路１５は、上位制御装置８からの受信処理を実行した後に、上位制御装置８に対して送信処理を実行する。
【００５０】
通信入出力回路１５に対するマイコンＡの制御処理（プログラムＡ）について、図９を用いて説明する。上位制御装置８からの受信処理については、図７を用いて説明したアナログ入力回路１４に対するマイコンＡの制御処理（プログラムＡ）と同じであり、ステップ番号の十位の値が５で、一位の値が図７のステップ番号と同じステップは、基本的に同じ動作となる。つまり、通信が有効になると（ステップＳ５０Ａ）、図７と同様の処理を実行する（ステップＳ５１Ａ、Ｓ５２Ａ、Ｓ５３Ａ、Ｓ５４Ａ、Ｓ５５Ａ、Ｓ５６Ａ、Ｓ５７Ａ）。
【００５１】
上位制御装置８に対する送信処理については、図５を用いて説明したアナログ出力回路１３に対するマイコンＡの制御処理（プログラムＡ）と同じであり、ステップ番号の十位の値が６で、一位の値が図５のステップ番号と同じステップは、基本的に同じ動作となる。つまり、ステップＳ５７Ａに続いて、図５と同様の処理を実行する（ステップＳ６１Ａ、Ｓ６２Ａ、Ｓ６３Ａ、Ｓ６４Ａ、Ｓ６５Ａ、Ｓ６６Ａ、Ｓ６７Ａ）。
【００５２】
プログラムＢについては、図１０に示すように、図９におけるステップ番号の末尾「Ａ」を「Ｂ」に置き換えた以外は同じフローであり、プログラムＡと同一の動作を実施する。これにより、非同期で動作するプログラムＡとプログラムＢの受信データ、送信データの同時性を確保しつつ、比較器５４で送信データの比較を行うことで、データ化けの有無を検出できるので、不正な送信データを送信するのを事前に防ぐことができる。
【００５３】
つまり、二重化されたバッファの更新完了、あるいは読出完了の状態が一致したとき（値「１」）のみ機能を切り換え、かつ、完了通知を出してフラグをリセットするというバッファの機能切替を同期化させることで、マイコンを実質的に同期化させた。その結果、非同期のマイコンＡとマイコンＢそれぞれを並行処理し、演算処理を高速化させて入出力動作の同時性を確保し、データ化けによる誤出力を防止することができるようになった。
【００５４】
なお、本願は、例示的な実施の形態が記載されているが、実施の形態に記載された様々な特徴、態様、および機能は特定の実施の形態の適用に限られるのではなく、単独で、または様々な組み合わせで実施の形態に適用可能である。従って、例示されていない無数の変形例が、本願明細書に開示される技術の範囲内において想定される。例えば、少なくとも１つの構成要素を変形する場合、追加する場合または省略する場合が含まれるものとする。具体的には、書込みと読出しを同時に行うために、対のバンクを二重化させる例について説明したが、例えば、マイコンＡ用の一つのバンク、マイコンＢ用の１つのバンクのそれぞれの機能を順次切替えるようにしてもよい。この場合、対のバンクを用いる場合よりも処理速度は劣るが、構成を簡略化させて、マイコンＡとマイコンＢの並列処理を実現できる。
【００５５】
以上のように、各実施の形態にかかるＩ／Ｏ制御装置１によれば、通信接続により上位制御装置８と制御対象機器９との間に介在し、上位制御装置８と制御対象機器９との間の入出力制御と、上位制御装置８の演算処理の負荷軽減を担うＩ／Ｏ制御装置１であって、ＣＰＵコア２１Ａと、ＣＰＵコア２１Ａによる演算処理用のデータを格納するメモリ（ＲＡＭ２２Ａ、ＥＥＰＲＯＭ２３Ａ）とを有する第一マイコン（マイコン１２Ａ：マイコンＡ）、第一マイコンと構成が同じで、第一マイコンと同じプログラムがインストールされ、第一マイコンと非同期で動作する第二マイコン（マイコン１２Ｂ：マイコンＢ）、上記インストールされたプログラムの実行により、マイコンＡマイコンとマイコンＢのそれぞれから逐次出力される送信データを更新して書込み、書き込まれたデータを上位制御装置８または制御対象機器９への送信データとして逐次読み出すための二重化された送信バッファ（送信バッファ３０Ａと送信バッファ３０Ｂ、および送信バッファ３１Ａと送信バッファ３１Ｂ）、二重化された送信バッファのそれぞれから逐次読み出されたデータを比較し、送信データでのデータ化けの有無を検出する比較器３４、および、二重化された送信バッファそれぞれにおける送信データの更新状態が一致したときに、比較器３４で比較させるデータを二重化された送信バッファのそれぞれから読み出させる読出データ同期制御機構（送信バッファ更新フラグレジスタ３５Ａ、３５Ｂ、選択器３３Ａ、３３Ｂ、動作中バンクレジスタ３７、ＤＡＣアクセスコントローラ３８、ＡＮＤ回路３９）、を備えるように構成したので、マイコンＡ、マイコンＢそれぞれから出力される送信データの書込み、および読出しを行うバッファの動作が同期化される。つまり、バッファからの読出しのタイミングを調整することで、非同期のマイコンＡ、マイコンＢ自体の動作を同期化させなくても、実質的に同期化し、演算処理を高速化させて、入出力動作の同時性を確保し、データ化けによる誤出力を防止できる。
【００５６】
とくに、二重化された送信バッファは、書込用と読出用とを切り換えて用いる対のバッファ（送信バッファ３０Ａと送信バッファ３１Ａの対、および送信バッファ３０Ｂと送信バッファ３１Ｂの対）を二重化して構成され、前記読出データ同期制御機構（とくに、選択器３３Ａ、３３Ｂ）は、更新状態が一致したときに、対のバッファのうちの一方を書込用に、他方を読出用として切り替えるように構成すれば、マイコンごとのデータ読出しとデータ書込みを同時に行えるので、さらに処理速度を高めることができる。
【００５７】
また、上位制御装置８、または制御対象機器９から逐次受信した受信データを更新して書込み、マイコンＡとマイコンＢそれぞれが受信データとして逐次読み出すための、書込用と読出用とを切り換えて用いる対のバッファを二重化して構成された二重化された受信バッファ（受信バッファ４０Ａと受信バッファ４０Ｂ、および受信バッファ４１Ａと受信バッファ４１Ｂ）、および、二重化された受信バッファそれぞれにおける受信データの読出し状態が一致したときに、対のバッファのうちの一方を書込用に、他方を読出用として切り替える受信バッファ切替機構（受信バッファ読出完了フラグレジスタ４５Ａ、４５Ｂ、選択器４３、動作中バンクレジスタ４７、ＡＤＣアクセスコントローラ４８、ＡＮＤ回路４９）、を備えるように構成すれば、マイコンごとのデータ読出しとデータ書込みを同時に行えるので、さらに処理速度を高めることができる。
【符号の説明】
【００５８】
１：Ｉ／Ｏ制御装置、  ８：上位制御装置、  ９：制御対象機器、  １２Ａ：マイコン（第一マイコン）、  １２Ｂ：マイコン（第二マイコン）、  ２１Ａ、２１Ｂ：ＣＰＵコア、  ２２Ａ、２２Ｂ：ＲＡＭ（メモリ）、  ２３Ａ、２３Ｂ：ＥＥＰＲＯＭ（メモリ）、  ３０Ａ、３０Ｂ、３１Ａ、３１Ｂ：送信バッファ、  ３３Ａ、３３Ｂ：選択器（読出データ同期制御機構）、  ３４：比較器、  ３５Ａ、３５Ｂ：送信バッファ更新フラグレジスタ、  ３７：動作中バンクレジスタ（読出データ同期制御機構）、  ３８：ＤＡＣアクセスコントローラ（読出データ同期制御機構）、  ３９：ＡＮＤ回路（読出データ同期制御機構）、  ４０Ａ、４０Ｂ、４１Ａ、４１Ｂ：受信バッファ、  ４５Ａ、４５Ｂ：受信バッファ読出完了フラグレジスタ、  ４３：選択器（受信バッファ切替機構）、  ４７：動作中バンクレジスタ（受信バッファ切替機構）、  ４８：ＡＤＣアクセスコントローラ（受信バッファ切替機構）、  ４９：ＡＮＤ回路（受信バッファ切替機構）。
【図１】
2020184184.tif 000003
【図２】
2020184184.tif 000004
【図３】
2020184184.tif 000005
【図４】
2020184184.tif 000006
【図５】
2020184184.tif 000007
【図６】
2020184184.tif 000008
【図７】
2020184184.tif 000009
【図８】
2020184184.tif 000010
【図９】
2020184184.tif 000011
【図１０】
2020184184.tif 000012