(57)【要約】【課題】マイコンに内蔵されているＲＡＭ，ＥＥＰＲＯＭなどのメモリについて、データ化けによる誤出力を未然に防止してシステムへの悪影響を防ぐことができるＩ／Ｏ制御装置を提供する。【解決手段】マイコン１はＣＰＵ２１と演算処理用のデータを格納する内蔵のメモリ２２、２３を備え、メモリ２２、２３はデータ化けが無い限り実質的に同じデータを格納する２つのバンク２２Ａ、２２Ｂ、２３Ａ、２３Ｂを有する一方、各バンク２２Ａ、２２Ｂ、２３Ａ、２３Ｂから読み出されるデータをそれぞれ送信データとして格納する二重化された送信バッファ３０Ａと３０Ｂまたは３１Ａと３１Ｂ、および制御機器３に対するデータ送信時に各送信バッファ３０Ａと３０Ｂまたは３１Ａと３１Ｂに格納されている送信データを比較する比較器３４を備える。【選択図】図２
2016004409.tif 000002
【特許請求の範囲】
【請求項１】
制御目標値を演算する上位制御装置と、制御対象となる制御機器との間にあって、これらの装置との間の入出力制御を司るものであり、かつ、上記上位制御装置の演算処理の負荷軽減のためにマイクロコンピュータが搭載されているＩ／Ｏ制御装置において、
上記マイクロコンピュータは、ＣＰＵと、このＣＰＵによる演算処理用のデータを格納する内蔵のメモリとを備え、上記メモリはデータ化けが無い限り実質的に同じデータを格納する２つのバンクを有する一方、各々の上記バンクから読み出されるデータをそれぞれ送信データとして格納する二重化された送信バッファと、上記制御機器へのデータ送信時、または上記上位制御装置へのデータ送信時に各々の上記送信バッファに格納されている上記送信データを読み出して比較する比較器と、を備えたことを特徴とするＩ／Ｏ制御装置。
【請求項２】
上記制御機器または上記上位制御装置から受信された受信データを格納する二重化された受信バッファと、これらの上記受信バッファの一方をデータ書込用に、他方を上記ＣＰＵへのデータ読出用として選択する選択器と、
この選択器でデータ書込用として選択されたいずれか一方の上記受信バッファに上記受信データが格納された時点で、この受信バッファを上記ＣＰＵへのデータ読出用に、他方の上記受信バッファを上記データ書込用に強制的に切り替える受信バンク切替信号を出力するバンク切替手段と、を備えたことを特徴とする請求項１に記載のＩ／Ｏ制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、制御目標値を演算する上位制御装置と、制御対象となる制御機器との間にあって、これらの装置との間の入出力制御を司るものであり、かつ、上位制御装置の演算処理の負荷軽減のためにマイクロコンピュータ（以下、単にマイコンと称する）が搭載されているＩ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）制御装置に係り、特には、マイコンが備えるＲＡＭ，ＥＥＰＲＯＭ等のメモリに格納されるデータのデータ化けの検出を強化して、データ化けによる誤出力を未然に防止するための技術に関するものである。
【背景技術】
【０００２】
マイコンに設けられたメモリに格納されるデータがノイズなどの影響により変質する、いわゆるデータ化けによる誤出力を未然に防止する上で、従来技術では、ＣＰＵの外部バスを介してメモリが外付けして接続されている場合、この外付けされたメモリに対して予めエラー検出用の２つのバンクを予め設定しておき、各バンクに同じデータを格納した後、各々の上記バンクからデータを読み出し、両データを比較することでメモリのデータ化けの有無を検出している（例えば、下記の特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平１−２９１３４６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上記の特許文献１記載のような従来のマイコン周辺に配備されたメモリのエラー検出においては、エラー検出対象となるメモリがマイコンの外部に搭載されていることが条件となる。
【０００５】
近年のマイコンにおいては、集積度向上によりマイコン内部にＲＡＭ，ＥＥＰＲＯＭなどのメモリが搭載され、高機能化／高速化を目的にＲＡＭを使用した一時的なバッファが至るところに実装されている。これらのメモリに格納されたデータのエラー検出においては、従来技術のように、マイコン外部にエラー検出用の回路を設けるだけでは十分に対処できない問題点があった。
【０００６】
この発明は、上記のような課題を解決するためになされたもので、マイコン外部に搭載されたＲＡＭ，ＥＥＰＲＯＭなどのメモリだけに限らず、マイコンに内蔵されているＲＡＭ，ＥＥＰＲＯＭなどのメモリについても、エラー検出を可能とすることで、ＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｏｎ  Ｃｏｎｔｒｏｌ）等のエラー検出機能を備えた特殊なマイコンを使用しなくても、高いエラー検出が可能で、データ化けによる誤出力を未然に防止してシステムへの悪影響を防ぐことができるＩ／Ｏ制御装置の提供を目的としている。
【課題を解決するための手段】
【０００７】
この発明は、上記の課題を解決するためになされたもので、制御目標値を演算する上位制御装置と、制御対象となる制御機器との間にあって、これらの装置との間の入出力制御を司るものであり、かつ、上記上位制御装置の演算処理の負荷軽減のためにマイクロコンピュータが搭載されているＩ／Ｏ制御装置において、次の構成を採用している。
【０００８】
すなわち、この発明では、上記マイクロコンピュータは、ＣＰＵと、このＣＰＵによる演算処理用のデータを格納する内蔵のメモリとを備え、上記メモリはデータ化けが無い限り実質的に同じデータを格納する２つのバンクを有する一方、各々の上記バンクから読み出されるデータをそれぞれ送信データとして格納する二重化された送信バッファと、上記制御機器へのデータ送信時、または上記上位制御装置へのデータ送信時に各々の上記送信バッファに格納されている上記送信データを読み出して比較する比較器と、を備えたことを特徴としている。
【発明の効果】
【０００９】
この発明によれば、マイコンにＲＡＭ，ＥＥＰＲＯＭなどのメモリが内蔵されている場合であっても、メモリに確保された２つのバンクに格納されているデータを二重化された送信バッファのそれぞれに転送し、両送信バッファに格納されたデータ同士を比較器で比較し、両データの一致／不一致を判定することでデータ化けの有無を検出することができる。このため、ＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｏｎ  Ｃｏｎｔｒｏｌ）等のエラー検出機能を備えた特殊なマイコンを使用しなくても、高いエラー検出が可能であり、データ化けによる不正なデータが出力されるのを未然に防止してシステムへの悪影響を防ぐことが可能となる。
【図面の簡単な説明】
【００１０】
【図１】この発明の実施の形態１におけるＩ／Ｏ制御装置を備えたシステム全体の構成を示すブロック図である。
【図２】Ｉ／Ｏ制御装置が備えるアナログ出力回路の構成の詳細を示すブロック図である。
【図３】Ｉ／Ｏ制御装置が備えるアナログ入力回路の構成の詳細を示すブロック図である。
【図４】Ｉ／Ｏ制御装置が備える通信入出力回路の構成の詳細を示すブロック図である。
【図５】図２のアナログ出力回路に対するＣＰＵの制御処理を示すフローチャートである。
【図６】図３のアナログ入力回路に対するＣＰＵの制御処理を示すフローチャートである。
【図７】図４の通信入出力回路に対するＣＰＵの制御処理を示すフローチャートである。
【発明を実施するための形態】
【００１１】
実施の形態１．
図１は、この発明の実施の形態１におけるＩ／Ｏ制御装置を備えたシステム全体の構成を示すブロック図である。
【００１２】
この実施の形態１のＩ／Ｏ制御装置１は、例えば発電プラントシステムなどに適用されるものであって、制御目標値を演算する上位制御装置２と、制御対象となるポンプやバルブ等の各種の制御機器３との間にあって、これらの装置２、３との間の入出力制御を司るものであり、上位制御装置２の演算処理の負荷軽減のためにマイコン１２を備えるとともに、アナログ出力回路１３、アナログ入力回路１４、および通信入出力回路１５が設けられている。
【００１３】
そして、通信入出力回路１５が上位制御装置２とデジタルの通信ラインを介して接続され、また、アナログ出力回路１３とアナログ入力回路１４がアナログの制御信号線を介して制御機器３に接続されている。マイコン１２は、上位制御装置２から通信ラインを介して送信される指令に従って制御機器３への出力信号を制御し、また、制御機器３からの入力信号の状態を読み取り、通信ラインを介して上位制御装置２にデータを送信する。
【００１４】
マイコン１２は、ＣＰＵ２１と、このＣＰＵ２１による演算処理用のデータを格納するＲＡＭ２２と、演算制御用のプログラムを格納するＥＥＰＲＯＭ２３から構成されている。そして、マイコン１２内部のＲＡＭ２２とＥＥＰＲＯＭ２３のデータ化けを検出するために、各メモリ２２、２３は、データ化けが無い限り実質的に同じデータを格納する２つのバンクを有する。
【００１５】
すなわち、ＥＥＰＲＯＭ２３には、２のバンク２３Ａ、２３Ｂが確保されており、各バンク２３Ａ、２３Ｂには、データ化けが無い限り実質的には内容が同一のプログラムＡとプログラムＢとが別々にインストールされている。そして、ＣＰＵ２１は、ＥＥＰＲＯＭ２３の各バンク２３Ａ、２３Ｂに別々にインストールされたプログラムＡとプログラムＢに基づいて、アナログ出力回路１３やアナログ入力回路１４に入出力するデータと、通信入出力回路１５に入出力するデータを別々に演算処理する。
【００１６】
また、ＲＡＭ２２には、ＣＰＵ２１がプログラムＡとプログラムＢに基づいて演算処理するデータをそれぞれ格納する２つのバンク２２Ａ、２２Ｂが確保されており、各バンク２２Ａ、２２Ｂは、アドレスにより区分けして使用し、同じアドレスをプログラムＡとプログラムＢに基づいて処理されたデータの双方が共用しないように設定している。
【００１７】
図２は、Ｉ／Ｏ制御装置１が備えるアナログ出力回路１３の構成の詳細を示すブロック図である。
【００１８】
このアナログ出力回路１３は、プログラムＡにより処理されたデータを送信データとして格納する２つの送信バッファ３０Ａ、３１Ａ、およびプログラムＢにより処理されたデータを送信データとして格納する２つの送信バッファ３０Ｂ、３１Ｂを備えている。
【００１９】
プログラムＡ、Ｂに関してそれぞれ２つの送信バッファ３０Ａ、３１Ａ、および３０Ｂ、３１Ｂを設けているのは、例えば一方の送信バッファ３０Ａ、３０Ｂから送信データを読み出しているときには、他方の送信バッファ３１Ａ、３１ＢにＣＰＵ２１で処理された送信データを書き込むようにして、データ送信処理速度およびデータのエラー検出処理速度を高めるためである。
【００２０】
なお、上記の４つの送信バッファ３０Ａ、３１Ａ、３０Ｂ、３１Ｂの内、送信バッファ３０Ａと３０Ｂ、あるいは送信バッファ３１Ａと３１Ｂが特許請求の範囲における二重化された送信バッファに対応している。
【００２１】
プログラムＡにより処理されたデータを格納する２つの送信バッファ３０Ａ、３１Ａと、プログラムＢにより処理されたデータを格納する２つの送信バッファ３０Ｂ、３１Ｂには、それぞれ個別に選択器３３Ａ、３３Ｂが設けられている。
【００２２】
各選択器３３Ａ、３３Ｂは、後述の動作中バンクレジスタ３７からの送信バンク切替信号Ｒに応じて、いずれか一方の送信バッファを選択する。すなわち、ここでは、送信バンク切替信号ＲがＲ＝０ならば、プログラムＡに関する一方の送信バッファ３０ＡとプログラムＢに関する一方の送信バッファ３０Ｂを共に選択し、また、送信バンク切替信号ＲがＲ＝１ならばプログラムＡに関する他方の送信バッファ３１ＡとプログラムＢに関する他方の送信バッファ３１Ｂを共に選択する。
【００２３】
比較器３４は、後述のＤＡＣ（Ｄｉｇｉｔａｌ  ｔｏ  Ａｎａｌｏｇ  Ｃｏｎｖｅｒｔｅｒ）アクセスコントローラ３８からの要求により、送信データの読み取りが要求されると、これに応じて選択器３３Ａ、３３Ｂで選択された送信バッファ３０Ａ、３０Ｂ、または３１Ａ、３１Ｂから読み出された送信データを比較する。両送信データの値が一致すると、ＤＡＣアクセスコントローラ３８に送信データを出力する。両送信データの値が一致しないときには、データ化けが生じているものと判断してエラー修復処理に移行する。
【００２４】
また、このアナログ出力回路１３には、プログラムＡに関する送信バンク切替レジスタ３５Ａ、プログラムＢに関する送信バンク切替レジスタ３５Ｂ、およびこれらの両レジスタ３５Ａ、３５Ｂの値を比較する比較器３６が設けられている。
【００２５】
各送信バンク切替レジスタ３５Ａ、３５Ｂは、プログラムＡ、Ｂに基づくＣＰＵ２１からの指示により各々の送信バッファ３０Ａ、３１Ａ、および３０Ｂ、３１Ｂへの送信データの格納終了を示す情報（フラグＦ）を登録する。
【００２６】
すなわち、プログラムＡに関する送信バンク切替レジスタ３５Ａは、プログラムＡに関する２つの送信バッファ３０Ａ、３１Ａの内、一方の送信バッファ３０Ａへの送信データの書き込みが終了したときに、その旨を示すフラグＦ＝０を、また他方の送信バッファ３１Ａへの送信データの書き込みが終了したときにその旨を示すフラグＦ＝１を登録する。同様に、プログラムＢに関する送信バンク切替レジスタ３５Ｂは、プログラムＢに関する２つの送信バッファ３０Ｂ、３１Ｂの内、一方の送信バッファ３０Ｂへの送信データの書き込みが終了したときに、その旨を示すフラグＦ＝０を、また他方の送信バッファ３１Ｂへの送信データの書き込みが終了したときにその旨を示すフラグＦ＝１を登録する。
【００２７】
比較器３６は、両送信バンク切替レジスタ３５Ａ、３５Ｂに登録されたフラグＦの値が一致したときには、ＤＡＣアクセスコントローラ３８に対して、選択器３３Ａ、３３Ｂの選択切り替えを要求する送信バンク切替要求を出力する。
【００２８】
ＤＡＣアクセスコントローラ３８は、比較器３４から出力される送信データをアナログ信号出力に変換し、また、比較器３６からの送信バンク切替要求を受けると、これに応じて、このバンク切替要求を動作中バンクレジスタ３７に通知する。
【００２９】
動作中バンクレジスタ３７は、ＤＡＣアクセスコントローラ３８からのバンク切替要求を受けると、選択器３３Ａ、３３Ｂに対して選択器３３Ａ、３３Ｂを切り替える送信バンク切替信号Ｒを生成するとともに、その送信バンク切替信号Ｒの値を登録する。
【００３０】
図３は、Ｉ／Ｏ制御装置１が備えるアナログ入力回路１４の構成の詳細を示すブロック図である。
【００３１】
このアナログ入力回路１４は、後述のＡＤＣ（Ａｎａｌｏｇ  ｔｏ  Ｄｉｇｉｔａｌ  Ｃｏｎｖｅｒｔｅｒ）アクセスコントローラ４６からの受信データを格納する２つの受信バッファ４０、４１を備えており、プログラムＡおよびプログラムＢに基づくＣＰＵ２１の制御により、各々の受信バッファ４０、４１からそれぞれ受信データを読み出すことが可能である。
【００３２】
なお、２つの受信バッファ４０、４１を設けているのは、次の理由による。すなわち、制御機器３からアナログ入力回路１４に入力されるアナログ信号の受信周期と、ＣＰＵ２１がプログラムＡ、Ｂで処理する演算周期とは非同期である。したがって、例えば、一方の受信バッファ４０にＡＤＣアクセスコントローラ４６からの受信データを書き込んでいるときには、プログラムＡおよびプログラムＢに基づくＣＰＵ２１の制御により他方の受信バッファ４１から受信データを読み出すようにして、データ受信処理速度、およびデータのエラー検出処理速度を高めるためである。
【００３３】
選択器４３は、後述の動作中バンクレジスタ４４からの受信バンク切替信号Ｌに応じて、いずれか一方の受信バッファ４０または４１を選択する。この場合、受信バンク切替信号ＬがＬ＝０ならば、選択器４３は一方の受信バッファ４０を選択し、受信バンク切替信号ＬがＬ＝１ならば、選択器４３は他方の受信バッファ４１を選択する。
【００３４】
受信バンク切替レジスタ４５は、いずれか一方の受信バッファへの受信データの格納が終了した時点で、当該受信バッファから最新の受信データを読み出すために、プログラムＡに基づいてＣＰＵ２１から与えられる受信バンク切替要求（フラグＭ）を登録するとともに、その受信バンク切替要求ＭをＡＤＣアクセスコントローラ４６に送出する。
【００３５】
ＡＤＣアクセスコントローラ４６は、制御機器３から送られてくるアナログ信号を受信データとしてデジタル変換し、また、受信バンク切替レジスタ４５からの送信バンク切替要求Ｍを受けると、これに応じて、この受信バンク切替要求Ｍを動作中バンクレジスタ４４に通知する。
【００３６】
動作中バンクレジスタ４４は、ＡＤＣアクセスコントローラ４６からの受信バンク切替要求Ｍを受けると、選択器４３に対して受信バッファ４０、４１の選択を切り替える受信バンク切替信号Ｌを生成するとともに、その受信バンク切替信号Ｌの値を登録する。
【００３７】
なお、上記の受信バンク切替レジスタ４５と動作中バンクレジスタ４４とが特許請求の範囲（請求項２）におけるバンク切替手段に対応している。
【００３８】
図４は、Ｉ／Ｏ制御装置が備える通信入出力回路１５の構成の詳細を示すブロック図である。
【００３９】
通信入出力回路１５の通信コントローラ５８は、上位制御装置２との通信処理として送信／受信処理を行うものであり、その構成については、図３に示したアナログ出力回路１３と、図４に示したアナログ入力回路１４とを組み合わせた構成となっているので、ここでは詳しい説明は省略する。
【００４０】
次に動作について説明する。
先ず、図２のアナログ出力回路１３に対するＣＰＵ２１の制御処理について、図５に示すフローチャートを参照して説明する。なお、以下において、符号Ｓは各処理ステップを意味する。
【００４１】
ＣＰＵ２１は、ここではプログラムＡに基づく制御処理と、プログラムＢに基づく制御処理を同時に並列処理できる構成ではないので、プログラムＡに基づく制御処理を実行した後に、プログラムＢに基づく制御処理を実行する。
【００４２】
そこで、先ず、プログラムＡに基づく処理として、動作中バンクレジスタ３７に現在登録されている送信バンク切替信号Ｒの値を読み込み（Ｓ１１）、各選択器３３Ａ、３３Ｂが送信バッファ３０Ａ、３１Ａ、３０Ｂ、３１Ｂのいずれを選択している状態かを判断する（Ｓ１２）。
【００４３】
ここで、送信バンク切替信号Ｒの値がＲ＝０ならば、各選択器３３Ａ、３３Ｂが送信バッファ３０Ａ、３０Ｂを選択している。したがって、送信バッファ３０ＡからプログラムＡで演算処理された送信データが読み出されている状態なので、ＣＰＵ２１は、他方の送信バッファ３１ＡにプログラムＡで演算処理したデータを送信データとして書き込む（Ｓ１３）。そして、送信バッファ３１Ａへの送信データの書き込みが終了すると、プログラムＡに関する送信バンク切替レジスタ３５Ａに対してデータ書き込み終了を示すフラグＦ＝１を登録する（Ｓ１４）。
【００４４】
一方、先のＳ１２で送信バンク切替信号Ｒの値がＲ＝１ならば、各選択器３３Ａ、３３Ｂが送信バッファ３１Ａ、３１Ｂを選択している。したがって、送信バッファ３１ＡからプログラムＡで演算処理された送信データが読み出されている状態なので、ＣＰＵ２１は、他方の送信バッファ３０ＡにプログラムＡで演算処理したデータを送信データとして書き込む（Ｓ１５）。そして、送信バッファ３０Ａへの送信データの書き込みが終了すると、プログラムＡに関する送信バンク切替レジスタ３５Ａに対してデータ書き込み終了を示すフラグＦ＝０を登録する（Ｓ１６）。
【００４５】
こうして、プログラムＡに基づく送信バッファ３１Ａまたは３０Ａへの送信データの書き込み処理が終了すると、ＣＰＵ２１は、次にプログラムＢに基づく処理に移行する。
【００４６】
このプログラムＢに基づく処理も、プログラムＡに基づく処理と基本的に同じであり、ＣＰＵ２１は、動作中バンクレジスタ３７に現在登録されている送信バンク切替信号Ｒの値を読み込み（Ｓ１７）、各選択器３３Ａ、３３Ｂが送信バッファ３０Ａ、３１Ａ、３０Ｂ、３１Ｂのいずれを選択している状態かを判断する（Ｓ１８）。
【００４７】
ここで、送信バンク切替信号Ｒの値がＲ＝０ならば、各選択器３３Ａ、３３Ｂが送信バッファ３０Ａ、３０Ｂを選択しており、送信バッファ３０Ｂから送信データが読み出されている状態なので、ＣＰＵ２１は、他方の送信バッファ３１ＢにプログラムＢで演算処理したデータを送信データとして書き込む（Ｓ１９）。そして、送信バッファ３１Ｂへの送信データの書き込みが終了すると、プログラムＢに関する送信バンク切替レジスタ３５Ｂに対してデータ書き込み終了を示すフラグＦ＝１を登録する（Ｓ２０）。
【００４８】
一方、先のＳ１８で送信バンク切替信号Ｒの値がＲ＝１ならば、各選択器３３Ａ、３３Ｂが送信バッファ３１Ａ、３１Ｂを選択しており、送信バッファ３１Ｂから送信データが読み出されている状態なので、ＣＰＵ２１は、他方の送信バッファ３０ＢにプログラムＢで演算処理したデータを送信データとして書き込む（Ｓ２１）。そして、送信バッファ３０Ｂへの送信データの書き込みが終了すると、プログラムＢに関する送信バンク切替レジスタ３５Ｂに対してデータ書き込み終了を示すフラグＦ＝０を登録する（Ｓ２２）。
【００４９】
比較器３６は、送信バンク切替レジスタ３５Ａ、３５Ｂに登録された各々のフラグＦが一致しているかどうかを判定する。
【００５０】
ここで、フラグＦが共にＦ＝１で一致する場合には、プログラムＡとプログラムＢに基づく各々の送信データの送信バッファ３１Ａ、３１Ｂへの書き込みが共に終了したことを示しているので、各送信バッファ３１Ａ、３１Ｂに書き込まれた送信データを共に読み出して比較すべく、比較器３６は、ＤＡＣアクセスコントローラ３８に対して送信バンク切替要求を出力する。これに応じて、ＤＡＣアクセスコントローラ３８は、送信バンク切替要求を動作中バンクレジスタ３７に通知するので、動作中バンクレジスタ３７は、送信バンク切替信号Ｒの値を切り替える。すなわち、現在の送信バンク切替信号Ｒの値がＲ＝０である場合は、送信バンク切替要求に応じてＲ＝１に切り替える。また、動作中バンクレジスタ３７は、この切り換わった送信バンク切替信号Ｒ＝１を登録する。
【００５１】
これにより、選択器３３Ａ、３３Ｂで送信バッファ３１Ａ、３１Ｂが選択されるため、各送信バッファ３１Ａ、３１Ｂに書き込まれた送信データが共に読み出されて比較器３４で比較される。この比較の結果、両送信データの値が一致すると、データ化けは無いと判断して、ＤＡＣアクセスコントローラ３８に送信データを出力する。これに対して、両送信データの値が一致しないときには、データ化けが発生しているものと判断し、不正な送信データを出力せずに、エラー修復処理に移行する。
【００５２】
一方、送信バンク切替レジスタ３５Ａ、３５Ｂに登録されたフラグＦが共にＦ＝０で一致する場合には、プログラムＡとプログラムＢに基づく各送信データの送信バッファ３０Ａ、３０Ｂへの書き込みが共に終了したことを示しているので、比較器３６は、ＤＡＣアクセスコントローラ３８に対して、送信バンク切替要求を出力する。これに応じて、ＤＡＣアクセスコントローラ３８は、この送信バンク切替要求を動作中バンクレジスタ３７に通知するので、動作中バンクレジスタ３７は、送信バンク切替信号Ｒの値を切り替える。すなわち、現在の送信バンク切替信号Ｒの値がＲ＝１である場合にはＲ＝０に切り替える。また、動作中バンクレジスタ３７は、この切り換わった送信バンク切替信号Ｒの値（Ｒ＝０）を登録する。
【００５３】
これにより、選択器３３Ａ、３３Ｂで送信バッファ３０Ａ、３０Ｂが選択されるため、各送信バッファ３０Ａ、３０Ｂに書き込まれた送信データが共に読み出されて比較器３４で比較される。この比較の結果、両送信データの値が一致すると、データ化けは無いと判断して、ＤＡＣアクセスコントローラ３８に送信データを出力する。これに対して、両送信データの値が一致しないときには、データ化けが発生しているものと判断し、不正な送信データを出力せずに、エラー修復処理に移行する。
【００５４】
このように、ＲＡＭ２２のバンク２２Ａ、２２Ｂ、もしくはＥＥＰＲＯＭ２３のバンク２３Ａ、２３Ｂに記憶されているデータやプログラムにデータ化けが発生している場合、比較器３４で比較される両送信データの値が一致しなくなるので、ＤＡＣアクセスコントローラ３８が不正なデータをアナログに変換して制御機器３に出力という不具合を事前に防ぐことができる。
【００５５】
次に、図３のアナログ入力回路１４に対するＣＰＵ２１の制御処理について、図６に示すフローチャートを参照して説明する。
【００５６】
図５について説明した場合と同様、ＣＰＵ２１は、プログラムＡに基づく制御処理を実行した後に、プログラムＢに基づく制御処理を実行する。
【００５７】
そこで、先ず、プログラムＡに基づく処理として、動作中バンクレジスタ４４に現在登録されている受信バンク切替信号Ｌの値を読み込み（Ｓ３１）、選択器４３が受信バッファ４０、４１のいずれを選択している状態かを判断する（Ｓ３２）。
【００５８】
ここで、受信バンク切替信号ＬがＬ＝０の場合には、選択器４３が受信バッファ４０を選択しており、この受信バッファ４０が受信データの書き込み可能状態に、他方の受信バッファ４１が受信データの読み出し可能状態になっている。
【００５９】
そこで、ＣＰＵ２１は、受信バッファ４０へのデータ書き込みが終了した時点でこの最新の受信データをプログラムＡに基づいて読み出すべく、他方の受信バッファ４１を書き込み状態にするための受信バンク切替要求（フラグＭ＝１）を受信バンク切替レジスタ４５に与える（Ｓ３３）。これに応じて、受信バンク切替レジスタ４５は、この受信バンク切替要求（フラグＭ＝１）を登録するとともに、ＡＤＣアクセスコントローラ４６に転送する。これに応じて、ＡＤＣアクセスコントローラ４６は、この受信バンク切替要求（フラグＭ＝１）を動作中バンクレジスタ３７に通知する。
【００６０】
また、ＣＰＵ２１は、動作中バンクレジスタ４４に登録されている受信バンク切替信号Ｌの値を読み（Ｓ３４）、この受信バンク切替信号Ｌの値がＬ＝０ならば受信バッファ４０への受信データの書き込みが未だ終了していないので、受信データの書き込みを継続する（Ｓ３５）。
【００６１】
受信バッファ４０への受信データの書き込みが終了すれば、ＣＰＵ２１は、動作中バンクレジスタ４４に対して、ＡＤＣアクセスコントローラ４６からの受信バンク切替要求（フラグＭ＝１）を受け入れるように指令するので、動作中バンクレジスタ４４は、受信バンク切替信号Ｌの値をＬ＝０からＬ＝１に切り替える。また、動作中バンクレジスタ４４は、この受信バンク切替信号の値Ｌ＝１を登録する。
【００６２】
これにより、選択器４３によって他方の受信バッファ４１が選択されるので、この時点で、この受信バッファ４１が受信データの書き込み可能状態に、他方の受信バッファ４０が受信データの読み出し可能状態に切り替わるため、ＣＰＵ２１は、プログラムＡに基づいて他方の受信バッファ４０から受信データを読み出す（Ｓ３６）。
【００６３】
先のＳ３２で受信バンク切替信号Ｌの値がＬ＝１ならば、選択器４３が受信バッファ４１を選択しており、この受信バッファ４１が受信データの書き込み可能状態に、他方の受信バッファ４０が受信データの読み出し可能状態になっている。
【００６４】
そこで、ＣＰＵ２１は、受信バッファ４１へのデータ書き込みが終了した時点で、この最新の受信データをプログラムＡに基づいて読み出すべく、一方の受信バッファ４０を書き込み状態にするための受信バンク切替要求（フラグＭ＝０）を受信バンク切替レジスタ４５に与える（Ｓ３７）。これに応じて、受信バンク切替レジスタ４５は、この受信バンク切替要求（フラグＭ＝０）を登録するとともに、ＡＤＣアクセスコントローラ４６に転送する。これに応じて、ＡＤＣアクセスコントローラ４６は、この受信バンク切替要求（フラグＭ＝０）を動作中バンクレジスタ３７に通知する。
【００６５】
また、ＣＰＵ２１は、動作中バンクレジスタ４４に登録されている受信バンク切替信号Ｌの値を読み（Ｓ３８）、この受信バンク切替信号Ｌの値がＬ＝１ならば受信バッファ４１への受信データの書き込みが未だ終了していないので、受信データの書き込みを継続する（Ｓ３９）。
【００６６】
受信バッファ４１への受信データの書き込みが終了すれば、ＣＰＵ２１は、動作中バンクレジスタ４４に対して、ＡＤＣアクセスコントローラ４６からの受信バンク切替要求（フラグＭ＝０）を受け入れるように指令するので、動作中バンクレジスタ４４は、受信バンク切替信号Ｌの値をＬ＝１からＬ＝０に切り替える。また、動作中バンクレジスタ４４は、この受信バンク切替信号Ｌ＝０を登録する。
【００６７】
これにより、選択器４３によって一方の受信バッファ４０が選択されるので、この時点で、この受信バッファ４０が受信データの書き込み可能状態に、他方の受信バッファ４１が受信データの読み出し可能状態に切り替わるため、ＣＰＵ２１は、プログラムＡに基づいて他方の受信バッファ４１から受信データを読み出す（Ｓ４０）。
【００６８】
このようにして、プログラムＡに基づく受信バッファ４０または４１からの受信データの読み出し処理が終了すると、ＣＰＵ２１は、次にプログラムＢに基づく処理に移行する。
【００６９】
このプログラムＢに基づく処理において、ＣＰＵ２１は、動作中バンクレジスタ４４に現在登録されている受信バンク切替信号Ｌの値を読み込み（Ｓ４１）、選択器４３が受信バッファ４０、４１のいずれを選択している状態かを判断する（Ｓ４２）。
【００７０】
このとき、先のプログラムＡに基づくＳ３３〜Ｓ３５の処理によって、既に受信バンク切替信号ＬがＬ＝１となっている場合には、選択器４３が受信バッファ４１を選択している。したがって、この受信バッファ４１が受信データの書き込み可能状態に、他方の受信バッファ４０が受信データの読み出し可能状態になっているので、ＣＰＵ２１は、プログラムＢに基づいて他方の受信バッファ４０から最新の受信データを読み出す（Ｓ４３）。
【００７１】
また、先のプログラムＡに基づくＳ３７〜Ｓ３９の処理によって、既に受信バンク切替信号ＬがＬ＝０となっている場合には、選択器４３が受信バッファ４０を選択している。したがって、この受信バッファ４０が受信データの書き込み可能状態に、他方の受信バッファ４１が受信データの読み出し可能状態になっているので、ＣＰＵ２１は、プログラムＢに基づいて他方の受信バッファ４１から最新の受信データを読み出す（Ｓ４４）。
【００７２】
こうして、ＣＰＵ２１は、同一の受信バッファ４０または４１から読み出した受信データについてプログラムＡおよびプログラムＢに基づいて演算処理を行うが、このとき、受信データのいずれかにデータ化けが生じていた場合、あるいはＥＥＰＲＯＭ２３のバンク２３Ａ、２３Ｂに記憶されているプログラムＡ、Ｂのいずれかにデータ化けが生じていた場合には、ＲＡＭ２２のバンク２２Ａ、２２Ｂに記憶されるデータもデータ化けしたデータとなるので、アナログ出力回路１３の比較器３４で比較される際に、送信データが不一致となる。したがって、ＣＰＵ２１が不正な受信データやプログラムに基づいて演算処理を行って、その結果を制御機器３にアナログ出力するのを事前に防ぐことができる。
【００７３】
次に、図４の通信入出力回路１５に対するＣＰＵ２１の制御処理について、図７に示すフローチャートを参照して説明する。
【００７４】
上位制御装置２に対する送信処理については、アナログ出力回路１３による制御機器３への送信処理と基本的に同じであり、プログラムＡに基づく制御処理を実行した後に、プログラムＢに基づく制御処理を実行する（Ｓ５１〜Ｓ５７、Ｓ６０〜Ｓ６３、Ｓ６６〜Ｓ６８、Ｓ７１、Ｓ７２）。
【００７５】
したがって、ＲＡＭ２２もしくはＥＥＰＲＯＭ２３のデータ化けが発生したことにより通信出力演算結果に影響が発生するような場合には、比較器５４がプログラムＡとプログラムＢの通信出力データの不一致を検出することにより、データ化けを事前に検出することができるので、通信コントローラ５８が不正なデータを上位制御装置２に送信するのを未然に防止することができる。
【００７６】
上位制御装置２に対する受信処理については、アナログ入力回路１４による制御機器３からの受信処理と基本的に同じであり、この場合もプログラムＡに基づく制御処理を実行した後に、プログラムＢに基づく制御処理を実行する（Ｓ５１、Ｓ５８、Ｓ５９、Ｓ６４、Ｓ６５、Ｓ６６、Ｓ６９、Ｓ７０、Ｓ７２、Ｓ７３）。
【００７７】
したがって、ＣＰＵ２１は、同一の受信バッファ６０または６１から読み出した受信データについてプログラムＡおよびプログラムＢに基づいて演算処理を行うが、このとき、受信データのいずれかにデータ化けが生じていた場合、あるいはＥＥＰＲＯＭ２３のバンク２３Ａ、２３Ｂに記憶されているプログラムＡ、Ｂのいずれかにデータ化けが生じていた場合には、ＲＡＭ２２のバンク２２Ａ、２２Ｂに記憶されるデータもデータ化けしたデータとなるので、比較器５４で比較される際に、送信データが不一致となる。したがって、通信コントローラ５８が不正なデータを上位制御装置２との間で受信したり送信したりするのを事前に防ぐことができる。
【００７８】
なお、この発明は、上記の実施の形態１の構成のみに限定されるものではなく、この発明の趣旨を逸脱しない範囲内において、実施の形態１の構成の一部に変形を加えたり、一部の構成を省略することが可能である。
【符号の説明】
【００７９】
１  Ｉ／Ｏ制御装置、２  上位制御装置、３  制御機器、１２  マイコン、
１３  アナログ出力回路、１４  アナログ入力回路、１５  通信入出力回路、
２１  ＣＰＵ、２２  ＲＡＭ、２３  ＥＥＰＲＯＭ、
３０Ａ，３０Ｂ，３１Ａ，３１Ｂ  送信バッファ、３３Ａ，３３Ｂ  選択器、
３４  比較器、３５Ａ，３５Ｂ  送信バンク切替レジスタ、３６  比較器、
３７  動作中バンクレジスタ、３８  ＤＡＣアクセスコントローラ、
４０，４１  受信バッファ、４３  選択器、４４  動作中バンクレジスタ、
４５  受信バンク切替レジスタ、４６  ＡＤＣアクセスコントローラ、
５０Ａ，５０Ｂ，５１Ａ，５１Ｂ  送信バッファ、５３Ａ，５３Ｂ  選択器、
５４  比較器、５５Ａ，５５Ｂ  送信バンク切替レジスタ、５６  比較器、
５７  動作中バンクレジスタ、５８  通信コントローラ、６０，６１  受信バッファ、
６２  選択器、６３  受信バンク切替レジスタ。
【図１】
2016004409.tif 000003
【図２】
2016004409.tif 000004
【図３】
2016004409.tif 000005
【図４】
2016004409.tif 000006
【図５】
2016004409.tif 000007
【図６】
2016004409.tif 000008
【図７】
2016004409.tif 000009