(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-09-12
(45)【発行日】2022-09-21
(54)【発明の名称】出力制御装置
(51)【国際特許分類】
G05B 19/05 20060101AFI20220913BHJP
G05B 9/03 20060101ALI20220913BHJP
【FI】
G05B19/05 L
G05B9/03
(21)【出願番号】P 2019052851
(22)【出願日】2019-03-20
【審査請求日】2021-10-01
(73)【特許権者】
【識別番号】501428545
【氏名又は名称】株式会社デンソーウェーブ
(74)【代理人】
【識別番号】110000567
【氏名又は名称】弁理士法人サトー
(72)【発明者】
【氏名】花井 喬
(72)【発明者】
【氏名】前川 貴昭
【審査官】藤崎 詔夫
(56)【参考文献】
【文献】特開2008-9794(JP,A)
【文献】特開2008-310534(JP,A)
【文献】特開2007-26010(JP,A)
【文献】特開2014-7695(JP,A)
【文献】特開平10-243054(JP,A)
【文献】国際公開第2010/097889(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G05B 19/05
G05B 9/03
(57)【特許請求の範囲】
【請求項1】
外部機器に接続される出力端子と前記外部機器用の電源が与えられる電源端子との間の開閉を制御する出力制御装置であって、
前記電源端子および前記出力端子の間に直列接続され且つ互いに同様にオンオフされる第1スイッチング素子および第2スイッチング素子と、
外部から与えられる制御指令に基づいて前記第1スイッチング素子および前記第2スイッチング素子をオンオフするための出力データを生成するデータ生成部と、
前記第1スイッチング素子の駆動を制御する第1制御部と、
前記第2スイッチング素子の駆動を制御する第2制御部と、
を備え、
前記データ生成部は、前記出力データを含む所定の変換元データに基づいて前記出力データの誤りを検出するための符号である第1符号データを演算する第1生成側演算部と、前記出力データを含む所定の変換元データに基づいて前記出力データの誤りを検出するための符号であり且つ前記第1符号データとは異なる第2符号データを演算する第2生成側演算部と、を備え、前記出力データに前記第1符号データおよび前記第2符号データを付加した通信データをシリアル通信により前記第1制御部に送信し、
前記第1制御部は、前記第1生成側演算部と同様の演算機能および前記第2生成側演算部と同様の演算機能のうち前者の演算機能だけを有する第1制御側演算部と、前記第1制御側演算部による演算結果を用いて前記通信データに含まれる前記出力データの誤りを検出する第1誤り検出部と、前記第1誤り検出部により前記出力データの誤りが検出されないことを条件として前記出力データに基づいて前記第1スイッチング素子を駆動する第1駆動部と、を備え、前記データ生成部から送信された前記通信データをシリアル通信により前記第2制御部に送信し、
前記第2制御部は、前記第2生成側演算部と同様の演算機能を有する第2制御側演算部と、前記第2制御側演算部による演算結果を用いて前記通信データに含まれる前記出力データの誤りを検出する第2誤り検出部と、前記第2誤り検出部により前記出力データの誤りが検出されないことを条件として前記出力データに基づいて前記第2スイッチング素子を駆動する第2駆動部と、を備える出力制御装置。
【請求項2】
前記第1生成側演算部および前記第2生成側演算部は、互いに異なる前記変換元データに基づいて、それぞれ前記第1符号データおよび前記第2符号データを生成するようになっている請求項1に記載の出力制御装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、外部機器に接続される出力端子と外部機器用の電源が与えられる電源端子との間の開閉を制御する出力制御装置に関する。
【背景技術】
【0002】
例えばプログラマブルロジックコントローラなどの制御装置では、安全の観点から、その出力モジュールによる制御を2重化する要求がある(例えば特許文献1参照)。なお、本明細書では、プログラマブルロジックコントローラのことをPLCと省略することがある。出力モジュールによる制御(出力制御)としては、例えば負荷などの外部機器が接続される出力端子に対する直流電圧などの電源電圧の印加制御を挙げることができる。
【0003】
このような出力制御の2重化を実現するため、PLCの出力モジュールとして、直流電圧が供給される電源端子から出力端子へと至る通電経路を開閉する2つのスイッチング素子と、それらスイッチング素子の駆動をそれぞれ制御する2つのMicro Controller Unitと、外部のバス通信ラインを介して与えられるデータをシリアル通信に対応した出力データに変換して2つのMicro Controller Unitに与えるバス変換ICと、を含む構成を採用することが考えられる。なお、本明細書では、Micro Controller UnitのことをMCUと省略することがある。
【0004】
この場合、バス変換ICと2つのMCUとの間では、それぞれシリアル通信が行われる。また、この場合、2つのMCUの間でもシリアル通信が行われるようになっており、これにより、各MCU間での相互監視が実現されている。具体的には、各MCUは、バス変換ICから送信されたデータと、そのデータに基づいて生成したスイッチング素子の駆動を制御するための制御信号と、を互いに提示し合い、それぞれが一致すれば正常に動作していると判断する、といった具合に相互監視を行うようになっている。
【先行技術文献】
【特許文献】
【0005】
【発明の概要】
【発明が解決しようとする課題】
【0006】
ネットワーク機器の機能安全設計の複雑度を下げる手法として、ブラックチャネル・アプローチがある。ブラックチャネルとして認められた通信経路は、通信エラーを比較的高い確率で検出できる。その結果、通信経路の故障率が無視できるほど小さくなるため、モジュール結合の自由度が向上する。ブラックチャネルに対応させるためには、通信エラーをアプリケーション側で確実に検出できる仕組みを設けるとともに、その証明が必要となる。このような証明(認証)の手間(工数)を軽減するためには、ブラックチャネルに対応させる通信経路は極力少ないほうがよい。
【0007】
上記した構成では、出力モジュール内の通信経路として、バス変換ICと一方のMCUとの間の経路、バス変換ICと他方のMCUとの間の経路および2つのMCU間の経路という3つの通信経路が存在する。そのため、上記構成において通信のブラックチャネル化を図るためには、これら3つの通信経路毎にブラックチャネルの認証が必要となる。そこで、上記構成において、ブラックチャネルに関する認証の手間を軽減するため、バス変換ICと他方のMCUとの間の通信経路を削除し、バス変換ICから一方のMCUを経由して他方のMCUに出力データを与えるような構成に変更することが考えられる。
【0008】
しかし、このような変更後の構成では、一方のMCUが故障した場合、その故障に起因して他方のMCUに誤った出力データが与えられる可能性がある。つまり、上記構成では、一方のMCUを経由する経路が2重化されているとは言えない。そのため、最悪の場合、本来、スイッチング素子のオフを指示するような出力データがバス変換ICから出力されているにもかかわらず、一方のMCUの故障により、他方のMCUが受信する出力データがスイッチング素子のオンを指示するような内容に化けてしまい、誤った出力制御が実施されるおそれがある。
【0009】
本発明は上記事情に鑑みてなされたものであり、その目的は、出力制御用の通信を2重化した場合と同等の安全性を担保するとともに通信経路のブラックチャネル対応に要する工数を軽減することができる出力制御装置を提供することにある。
【課題を解決するための手段】
【0010】
請求項1に記載の出力制御装置は、外部機器に接続される出力端子と外部機器用の電源が与えられる電源端子との間の開閉を制御する出力制御装置である。出力制御装置は、電源端子および出力端子の間に直列接続され且つ互いに同様にオンオフされる第1スイッチング素子および第2スイッチング素子を備えており、その出力段の構成が2重化されている。また、出力制御装置は、外部から与えられる制御指令に基づいて第1スイッチング素子および第2スイッチング素子をオンオフするための出力データを生成するデータ生成部と、第1スイッチング素子の駆動を制御する第1制御部と、第2スイッチング素子の駆動を制御する第2制御部と、を備える。
【0011】
この場合、データ生成部は、生成した出力データを含む通信データをシリアル通信により第1制御部に送信し、第1制御部は、データ生成部から送信された通信データをシリアル通信により第2制御部に送信する。つまり、この場合、データ生成部から第1制御部を介して第2制御部へと至る通信経路が2重化されていない。このように、上記構成では、出力制御装置内における通信経路は、物理的には2重化されていない。しかしながら、上記構成では、各部が次のような機能を備えることにより、物理的な2重化と同等の機能を実現する意味的な2重化が図られている。
【0012】
すなわち、データ生成部は、出力データを含む所定の変換元データに基づいて出力データの誤りを検出するための符号である第1符号データを演算する第1生成側演算部と、出力データを含む所定の変換元データに基づいて出力データの誤りを検出するための符号であり且つ第1符号データとは異なる第2符号データを演算する第2生成側演算部と、を備える。また、データ生成部は、出力データに第1符号データおよび第2符号データを付加した通信データをシリアル通信により第1制御部に送信する。
【0013】
第1制御部は、第1生成側演算部と同様の演算機能を有する第1制御側演算部と、第1制御側演算部による演算結果を用いて通信データに含まれる出力データの誤りを検出する第1誤り検出部と、第1誤り検出部により出力データの誤りが検出されないことを条件として出力データに基づいて第1スイッチング素子を駆動する第1駆動部と、を備える。第2制御部は、第2生成側演算部と同様の演算機能を有する第2制御側演算部と、第2制御側演算部による演算結果を用いて通信データに含まれる出力データの誤りを検出する第2誤り検出部と、第2誤り検出部により出力データの誤りが検出されないことを条件として出力データに基づいて第2スイッチング素子を駆動する第2駆動部と、を備える。
【0014】
このような構成によれば、データ生成部から第1制御部へと送信される段階において通信データにデータ化けが生じた場合、第1制御部の第1誤り検出部および第2制御部の第2誤り検出部の一方または双方において出力データの誤り(通信エラー)が検出される。そのため、誤った出力データに基づいて第1スイッチング素子および第2スイッチング素子の駆動が制御されることが防止され、その結果、電源端子と出力端子の間が誤った開閉状態に制御される事態が発生することが防止される。
【0015】
また、上記構成では、第1制御部に故障が発生した場合、その故障に起因して第1制御部から第2制御部へと送信される通信データに含まれる出力データにデータ化けが生じる可能性がある。ただし、この場合、第1制御部の第1制御側演算部は、第2生成側演算部と同様の演算機能を有していない。そのため、第1制御部では、第2制御部に送信する通信データに含まれる第2符号データを加工(変更)することはできない。したがって、第1制御部の故障による連鎖反応として通信データが改ざんされる可能性は極めて低い。そのため、第2制御部に送信される通信データに含まれる第2符号データは、データ生成部において生成された真のデータのままとなる。
【0016】
これにより、第2制御部に送信される通信データに含まれる出力データにデータ化けが生じていたとしても、第2制御部の第2誤り検出部により出力データの誤り(通信エラー)が検出される。そのため、誤った出力データに基づいて第2スイッチング素子の駆動が制御されることが防止され、その結果、電源端子と出力端子の間が誤った開閉状態に制御される事態が発生することが防止される。
【0017】
このように、上記構成によれば、出力制御装置内における通信経路を物理的に2重化した構成と同様の機能、具体的には、通信エラーの検出および通信エラー発生時の対応を実現することができる。さらに、上記構成では、出力制御装置内の通信経路としては、データ生成部と第1制御部との間の経路および第1制御部と第2制御部との間の経路という2つの通信経路だけが存在する。つまり、上記構成によれば、物理的に2重化した構成に比べ、通信経路を3つから2つに削減することができ、その分だけブラックチャネルに対応させるための認証の手間(工数)が軽減される。したがって、上記構成によれば、出力制御用の通信を2重化した場合と同等の安全性を担保するとともに通信経路のブラックチャネル対応に要する工数を軽減することができるという優れた効果が得られる。
【0018】
請求項2に記載の出力制御装置において、第1生成側演算部および第2生成側演算部は、互いに異なる変換元データに基づいて、それぞれ第1符号データおよび第2符号データを演算するようになっている。そのため、この場合、第1符号データと第2符号データとは、それらの演算手法が異なるだけでなく、それらの元となるデータも異なることになる。このようにすれば、第1生成側演算部と同様の演算機能だけを有する第1制御側演算部が、第2符号データを演算することは、より一層困難なものとなる。したがって、上記構成によれば、第1制御部が故障した場合、その故障による連鎖反応として通信データに含まれる第2符号データが改ざんされる可能性を一層低く抑えることができる。
【図面の簡単な説明】
【0019】
【
図1】一実施形態に係る出力モジュールの構成を模式的に示す図
【
図2】一実施形態に係る出力モジュールの具体的な構成例を模式的に示す図
【
図3】一実施形態に係る通信データの構造の一例を模式的に示す図
【
図4】一実施形態に係る第1MCUにおけるソフトウェア処理の内容を説明するための図
【
図5】一実施形態に係る第2MCUにおけるソフトウェア処理の内容を説明するための図
【
図6】一実施形態に係るバス変換ICから第1MCUに送信される通信データのデータ化けを説明するための図
【
図7】一実施形態に係る第1MCUによるフェールセーフ制御の概要を説明するための図
【
図8】一実施形態に係る第2MCUによるフェールセーフ制御の概要を説明するための図
【
図9】一実施形態に係る第1MCUの故障に起因する通信データのデータ化けを説明するための図
【発明を実施するための形態】
【0020】
以下、本発明の一実施形態について図面を参照して説明する。
<全体構成>
図1に示すように、出力制御装置に相当する出力モジュール1は、外部機器用の電源に相当する直流電圧DC+が与えられる電源端子2と、外部機器に相当する負荷3に接続される出力端子4と、を備えている。出力モジュール1は、図示しない他の出力モジュール、コントローラなどとともに、PLCを構成している。直流電圧DC+は、例えば出力モジュール1、ひいてはPLCの外部に設けられた負荷用電源6により生成される。
【0021】
出力モジュール1は、電源端子2と出力端子4との間の開閉を制御するものであり、第1スイッチング素子7、第2スイッチング素子8、バス変換IC9、第1MCU10および第2MCU11を備えている。なお、以下の説明では、第1スイッチング素子7および第2スイッチング素子8のことをスイッチング素子7、8と省略するとともに、第1MCU10および第2MCU11のことをMCU10、11と省略することとする。
【0022】
スイッチング素子7、8は、いずれも電子開閉器のFETであり、電源端子2および出力端子4の間に直列接続されている。具体的には、スイッチング素子7の一方の主端子は、電源端子2に接続され、その他方の主端子はスイッチング素子8の一方の主端子に接続されている。スイッチング素子8の他方の主端子は、出力端子4に接続されている。スイッチング素子7の開閉制御端子には、MCU10から出力される制御信号Saが与えられている。スイッチング素子8の開閉制御端子には、MCU11から出力される制御信号Sbが与えられている。
【0023】
このような構成により、スイッチング素子7の駆動がMCU10により制御されるとともに、スイッチング素子8の駆動がMCU11により制御されるようになっている。MCU10およびMCU11から出力される各制御信号SaおよびSbは、通信エラーなどが生じていない正常時においては、同様の信号となる。したがって、正常時、スイッチング素子7、8は、一方がオンされれば他方もオンされるとともに、一方がオフされれば他方もオフされる。つまり、正常時、スイッチング素子7、8は、互いに同様にオンオフされる。
【0024】
バス変換IC9には、出力モジュール1の外部からバス通信ラインを介してスイッチング素子7、8をオンオフするための制御指令を含むデータが与えられている。なお、本実施形態では、上記バス通信ラインを介した通信は、例えばEthernet/IP,EtherCAT,PROFINETなどの産業ネットワーク規格による通信となっている。バス変換IC9は、そのデータをシリアル通信に対応した出力データに変換する。つまり、バス変換IC9は、外部から与えられる制御指令に基づいてスイッチング素子7、8をオンオフするための出力データを生成するものであり、データ生成部に相当する。バス変換IC9は、生成した出力データを含む通信データをシリアル通信によりMCU10に送信する。
【0025】
MCU10は、詳細は後述するが、バス変換IC9から送信された通信データに基づいてスイッチング素子7の駆動を制御する。また、MCU10は、バス変換IC9から送信された通信データと同じデータを生成し、その生成した通信データをシリアル通信によりMCU11に送信する。MCU11は、詳細は後述するが、MCU10から送信された通信データに基づいてスイッチング素子8の駆動を制御する。
【0026】
MCU10、11の間では、シリアル通信が行われるようになっており、これにより、MCU10、11間での相互監視が実現されている。具体的には、MCU10、11は、バス変換IC9から送信された通信データに含まれる出力データと、その出力データに基づいて生成した制御信号Sa、Sbと、を互いに提示し合い、それぞれが一致すれば正常に動作していると判断する、といった具合に相互監視を行うようになっている。
<出力モジュール1の具体的構成>
【0027】
出力モジュール1のうち、バス変換IC9、MCU10、11の具体的な構成は、例えば
図2に示すような構成となっている。
図2に示すように、バス変換IC9は、通信パケット生成部12、第1CRC演算部13および第2CRC演算部14を備えている。なお、これら各部は、ソフトウェア処理により実現されている。通信パケット生成部12は、MCU10に送信するための通信データを生成する。
【0028】
この場合、通信データの構造(通信パケット)は、
図3に示すようになっている。
図3に示すように、通信パケット生成部12により生成される通信データには、ヘッダーおよび出力データと、CRC[2]と、CRC[1]と、が含まれる。CRC[1]は、出力データの誤りを検出するための符号である第1符号データに相当するものであり、第1CRC演算部13により演算される。
【0029】
CRC[2]は、出力データの誤りを検出するための符号であり且つ第1符号データとは異なる第2符号データに相当するものであり、第2CRC演算部14により演算される。バス変換IC9は、上述したようなデータ構造を有する通信データをMCU10に送信する。つまり、バス変換IC9は、出力データにCRC[1]およびCRC[2]を付加した通信データをシリアル通信によりMCU10に送信する。
【0030】
第1CRC演算部13は、例えばCRC(Cyclic Redundancy Checking)などの高度演算(
図3におけるCRC演算[1])により”ヘッダー+出力データ”のシグネチャであるCRC[1]を生成する。すなわち、第1CRC演算部13は、出力データを含む所定の変換元データに基づいてCRC[1]を演算するものであり、第1生成側演算部に相当する。この場合、変換元データは、”ヘッダー+出力データ”およびCRC[2]となっている。
【0031】
第2CRC演算部14は、CRCなどの高度演算(
図3におけるCRC演算[2])により”ヘッダー+出力データ”のシグネチャであるCRC[2]を生成する。すなわち、第2CRC演算部14は、出力データを含む所定の変換元データに基づいてCRC[2]を演算するものであり、第2生成側演算部に相当する。この場合、変換元データは、”ヘッダー+出力データ”となっている。
【0032】
MCU10は、第1CRC演算部15、通信パケット検証部16および第1駆動部17を備えている。なお、第1CRC演算部15および通信パケット検証部16は、ソフトウェア処理により実現されている。第1CRC演算部15は、バス変換IC9が備える第1CRC演算部13と同様の演算を行うことができる。具体的には、
図4に示すように、第1CRC演算部15は、通信データに含まれる”ヘッダー+出力データ”およびCRC[2]に基づいてCRC[1]を演算するCRC演算[1]を行うことができる。ただし、第1CRC演算部15は、バス変換IC9が備える第2CRC演算部14と同様の演算、つまりCRC演算[2]を行うことはできない。
【0033】
このように、MCU10は、バス変換IC9が備える第1CRC演算部13と同様の演算機能を有するものの、第2CRC演算部14と同様の演算機能は有してない。すなわち、MCU10には、CRC[1]を計算するためのCRC演算[1]のソフトウェアは実装されているものの、CRC[2]を計算するためのCRC演算[2]のソフトウェアは実装されていない。このように、本実施形態では、MCU10に対し、敢えて、CRC[2]を計算するための能力を持たせないようにしている。このようにする理由については後述する。
【0034】
通信パケット検証部16は、第1CRC演算部15による演算結果を用いて、バス変換IC9から送信される通信データを検証し、その通信データに含まれる出力データの誤りを検出するものであり、第1誤り検出部に相当する。具体的には、
図4に示すように、第1CRC演算部15は、バス変換IC9から送信された通信データについて前述したCRC演算[1]を行い、CRC[1]を求める。
【0035】
通信パケット検証部16は、通信データに含まれるCRC[1]と第1CRC演算部15により演算されたCRC[1]との一致比較を行う。通信パケット検証部16は、一致比較の結果がOKである場合、つまり上記2つのCRC[1]が同一データである場合、出力データが正常である(出力データの誤りが検出されない)と判断する。また、通信パケット検証部16は、一致比較の結果がNGである場合、つまり上記2つのCRC[1]が異なるデータである場合、出力データが異常である(出力データの誤りが検出された)と判断する。
【0036】
第1駆動部17は、通信パケット検証部16により出力データの誤りが検出されないことを条件として出力データに基づいてスイッチング素子7を駆動する。具体的には、第1駆動部17は、通信パケット検証部16による一致比較の結果がOKである場合、バス変換IC9から送信された通信データに含まれる出力データが表す制御指令の内容に基づいて制御信号Saを生成して出力する。これにより、スイッチング素子7は、外部から与えられる制御指令に基づいたオンオフ状態に制御される。
【0037】
また、第1駆動部17は、通信パケット検証部16による一致比較の結果がNGである場合、バス変換IC9から送信された通信データに含まれる出力データが表す制御指令の内容にかかわらず、スイッチング素子7をオフさせるための制御信号Saを生成して出力する。これにより、スイッチング素子7は、外部から与えられる制御指令に関係なく、強制的にオフ制御される。MCU10は、通信エラーの検出時、このようにしてフェールセーフ制御を行うようになっている。
【0038】
MCU11は、第2CRC演算部18、通信パケット検証部19および第2駆動部20を備えている。なお、第2CRC演算部18および通信パケット検証部19は、ソフトウェア処理により実現されている。第2CRC演算部18は、バス変換IC9が備える第2CRC演算部14と同様の演算を行うことができる。具体的には、
図5に示すように、第2CRC演算部18は、通信データに含まれる”ヘッダー+出力データ”に基づいてCRC[2]を演算するCRC演算[2]を行うことができる。ただし、第2CRC演算部18は、バス変換IC9が備える第1CRC演算部13と同様の演算を行うことはできない。
【0039】
このように、MCU11は、バス変換IC9が備える第2CRC演算部14と同様の演算機能を有するものの、第1CRC演算部13と同様の演算機能は有してない。すなわち、本実施形態では、MCU11には、CRC[2]を計算するためのCRC演算[2]のソフトウェアは実装されているものの、CRC[1]を計算するためのCRC演算[1]のソフトウェアは実装されていない。なお、MCU11にCRC演算[1]のソフトウェアが実装されていてもよい。
【0040】
通信パケット検証部19は、第2CRC演算部18による演算結果を用いて、MCU10から送信される通信データを検証し、その通信データに含まれる出力データの誤りを検出するものであり、第2誤り検出部に相当する。具体的には、
図5に示すように、第2CRC演算部18は、MCU10から送信された通信データについて前述したCRC演算[2]を行い、CRC[2]を求める。
【0041】
通信パケット検証部19は、通信データに含まれるCRC[2]と第2CRC演算部18により演算されたCRC[2]との一致比較を行う。通信パケット検証部19は、一致比較の結果がOKである場合、つまり上記2つのCRC[2]が同一データである場合、出力データが正常である(出力データの誤りが検出されない)と判断する。また、通信パケット検証部19は、一致比較の結果がNGである場合、つまり上記2つのCRC[2]が異なるデータである場合、出力データが異常である(出力データの誤りが検出された)と判断する。
【0042】
第2駆動部20は、通信パケット検証部19により出力データの誤りが検出されないことを条件として出力データに基づいてスイッチング素子8を駆動する。具体的には、第2駆動部20は、通信パケット検証部19による一致比較の結果がOKである場合、MCU10から送信された通信データに含まれる出力データが表す制御指令の内容に基づいて制御信号Sbを生成して出力する。これにより、スイッチング素子8は、外部から与えられる制御指令に基づいたオンオフ状態に制御される。
【0043】
また、第2駆動部20は、通信パケット検証部19による一致比較の結果がNGである場合、MCU10から送信された通信データに含まれる出力データが表す制御指令の内容にかかわらず、スイッチング素子8をオフさせるための制御信号Sbを生成して出力する。これにより、スイッチング素子8は、外部から与えられる制御指令に関係なく、強制的にオフ制御される。MCU11は、通信エラーの検出時、このようにしてフェールセーフ制御を行うようになっている。
【0044】
次に、本実施形態の作用について説明する。
[1]正常動作パターン
バス変換IC9からMCU10へと送信される段階およびMCU10からMCU11へと送信される段階のいずれにおいても通信データにデータ化けが生じていないとき、つまり正常時におけるMCU10、11の動作は、次のようなものとなる。
【0045】
MCU10の第1CRC演算部15は、CRC演算[1]を行うことによりCRC[1]を求める。そして、MCU10の通信パケット検証部16は、通信データに含まれるCRC[1]と第1CRC演算部15により求められたCRC[1]との一致比較を行う。この場合、通信データにデータ化けが生じていないため、一致比較の結果はOKとなる。そのため、MCU10の第1駆動部17は、出力データが表す制御指令の内容に基づいて制御信号Saを生成して出力する。
【0046】
MCU11の第2CRC演算部18は、CRC演算[2]を行うことによりCRC[2]を求める。そして、MCU11の通信パケット検証部19は、通信データに含まれるCRC[2]と第2CRC演算部18により求められたCRC[2]との一致比較を行う。この場合、通信データにデータ化けが生じていないため、一致比較の結果はOKとなる。そのため、MCU11の第2駆動部20は、出力データが表す制御指令の内容に基づいて制御信号Sbを生成して出力する。このような動作により、正常時、スイッチング素子7、8は、外部から与えられる制御指令に従い、互いに同様にオンオフされる。
【0047】
[2]通信故障検出パターンその1
図6に示すように、バス変換IC9からMCU10へと送信される段階において通信データにデータ化けが生じた場合におけるMCU10、11の動作は、次のようなものとなる。
図7に示すように、この場合も、正常動作パターンと同様、MCU10の第1CRC演算部15は、CRC演算[1]を行うことによりCRC[1]を求める。そして、MCU10の通信パケット検証部16は、通信データに含まれるCRC[1]と第1CRC演算部15により求められたCRC[1]との一致比較を行う。
【0048】
この場合、バス変換IC9から送信された通信データ(”ヘッダー+出力データ”)にデータ化けが生じている。そのため、第1CRC演算部15により求められたCRC[1]が通信データに含まれるCRC[1]と異なるものとなり、一致比較の結果がNGとなる。そのため、MCU10の第1駆動部17は、出力データが表す制御指令の内容にかかわらずスイッチング素子7をオフさせるための制御信号Saを生成して出力する(フェールセーフ制御)。
【0049】
図8に示すように、この場合も、正常動作パターンと同様、MCU11の第2CRC演算部18は、CRC演算[2]を行うことによりCRC[2]を求める。そして、MCU11の通信パケット検証部19は、通信データに含まれるCRC[2]と第2CRC演算部18により求められたCRC[2]との一致比較を行う。
【0050】
この場合、MCU10から送信された通信データ(”ヘッダー+出力データ”)にデータ化けが生じている。そのため、第2CRC演算部18により求められたCRC[2]が通信データに含まれるCRC[2]と異なるものとなり、一致比較の結果がNGとなる。そのため、MCU11の第2駆動部20は、出力データが表す制御指令の内容にかかわらずスイッチング素子8をオフさせるための制御信号Sbを生成して出力する(フェールセーフ制御)。
【0051】
[3]通信故障検出パターンその2
図9に示すように、MCU10に故障が発生した場合、その故障に起因してMCU10からMCU11へと送信される段階において通信データにデータ化けが生じる可能性がある。このような場合におけるMCU10、11の動作は、次のようなものとなる。この場合、MCU10は、故障しているため、設計上想定され得る動作を行うとは限らず、未知の動作となるおそれがある。したがって、MCU10は、外部から与えられる制御指令がスイッチング素子7のオフを指令する内容であるにもかかわらず、スイッチング素子7をオン制御する動作を行ってしまう可能性がある。
【0052】
ただし、この場合、MCU10は、CRC演算[2]を行うための演算機能を有していないため、通信データに含まれるCRC[2]を加工することはできない。そのため、MCU10の故障による連鎖反応として通信データに含まれるCRC[2]が改ざんされる可能性は極めて低い。したがって、MCU10からMCU11に送信される通信データに含まれるCRC[2]は、バス変換IC9において生成された真のデータのままとなる。
【0053】
図8に示したように、この場合も、正常動作パターンと同様、MCU11の第2CRC演算部18は、CRC演算[2]を行うことによりCRC[2]を求める。そして、MCU11の通信パケット検証部19は、通信データに含まれるCRC[2]と第2CRC演算部18により求められたCRC[2]との一致比較を行う。
【0054】
この場合、MCU10から送信された通信データ(”ヘッダー+出力データ”)にデータ化けが生じている。そのため、第2CRC演算部18により求められたCRC[2]が通信データに含まれるCRC[2]と異なるものとなり、一致比較の結果がNGとなる。そのため、MCU11の第2駆動部20は、出力データが表す制御指令の内容にかかわらずスイッチング素子8をオフさせるための制御信号Sbを生成して出力する(フェールセーフ制御)。
【0055】
以上説明したように、本実施形態によれば次のような効果が得られる。
本実施形態の出力モジュール1は、電源端子2および出力端子4の間に直列接続され且つ互いに同様にオンオフされるスイッチング素子7、8を備えており、その出力段の構成が2重化されている。ただし、この場合、バス変換IC9からMCU10を介してMCU11へと至る通信経路が2重化されていない。このように、上記構成では、出力モジュール1内における通信経路は、物理的には2重化されていない。
【0056】
しかしながら、各部が次のような機能を備えることにより、物理的な2重化と同等の機能を実現する意味的な2重化が図られている。すなわち、バス変換IC9は、CRC[1]を演算する第1CRC演算部13と、CRC[1]とは異なるCRC[2]を演算する第2CRC演算部14とを備え、出力データにCRC[1]およびCRC[2]を付加した通信データをシリアル通信によりMCU10に送信する。
【0057】
MCU10は、第1CRC演算部13と同様の演算機能を有する第1CRC演算部15と、第1CRC演算部15による演算結果を用いて出力データの誤りを検出する通信パケット検証部16と、通信パケット検証部16により出力データの誤りが検出されないことを条件として出力データに基づいてスイッチング素子7を駆動する第1駆動部17とを備える。MCU11は、第2CRC演算部14と同様の演算機能を有する第2CRC演算部18と、第2CRC演算部18による演算結果を用いて出力データの誤りを検出する通信パケット検証部19と、通信パケット検証部19により出力データの誤りが検出されないことを条件として出力データに基づいてスイッチング素子8を駆動する第2駆動部20とを備える。
【0058】
このような構成によれば、バス変換IC9からMCU10へと送信される段階において通信データにデータ化けが生じた場合、MCU10の通信パケット検証部16およびMCU11の通信パケット検証部19の一方または双方において出力データの誤り(通信エラー)が検出される。そのため、誤った出力データに基づいてスイッチング素子7、8の駆動が制御されることが防止され、その結果、電源端子2と出力端子4の間が誤った開閉状態に制御される事態が発生することが防止される。
【0059】
また、上記構成では、MCU10に故障が発生した場合、その故障に起因してMCU10からMCU11へと送信される通信データに含まれる出力データにデータ化けが生じる可能性がある。ただし、この場合、MCU10の第1CRC演算部15は、バス変換IC9の第2CRC演算部14と同様の演算機能を有していない。そのため、MCU10では、MCU11に送信する通信データに含まれるCRC[2]を加工(変更)することはできない。
【0060】
したがって、MCU10の故障による連鎖反応として通信データが改ざんされる可能性は極めて低い。そのため、MCU10からMCU11に送信される通信データに含まれるCRC[2]は、バス変換IC9において生成された真のデータのままとなる。なお、上述した「通信データの改ざん」には、通信データに含まれる出力データにデータ化けが生じているにもかかわらず、同じ通信データに含まれるCRC[2]が変更されることによって、あたかも出力データにデータ化けが生じておらず正しいデータであるように見える状態にされてしまう、といった意味が含まれている。
【0061】
このようなことから、MCU11に送信される通信データに含まれる出力データにデータ化けが生じていたとしても、MCU11の通信パケット検証部19は、MCU10の故障の影響を受けることなく、出力データの誤り(通信エラー)を確実に検出することができる。そのため、誤った出力データに基づいてスイッチング素子8の駆動が制御されることが防止され、その結果、電源端子2と出力端子4の間が誤った開閉状態に制御される事態が発生することが防止される。
【0062】
このように、上記構成によれば、出力モジュール1内における通信経路を物理的に2重化した構成と同様の機能、具体的には、通信エラーの検出および通信エラー発生時の対応を実現することができる。さらに、上記構成では、出力モジュール1内の通信経路としては、バス変換IC9とMCU10との間の経路およびMCU10とMCU11との間の経路という2つの通信経路だけが存在する。つまり、上記構成によれば、物理的に2重化した構成に比べ、通信経路を3つから2つに削減することができ、その分だけブラックチャネルに対応させるための認証の手間(工数)が軽減される。したがって、上記構成によれば、出力制御用の通信を2重化した場合と同等の安全性を担保するとともに通信経路のブラックチャネル対応に要する工数を軽減することができるという優れた効果が得られる。
【0063】
上述したように、出力モジュール1は、CRC[1]およびCRC[2]を用いて通信エラー(データ化け)を検出するための構成(第1CRC演算部13、第2CRC演算部14、第1CRC演算部15、通信パケット検証部16、第2CRC演算部18、通信パケット検証部19など)を備えている。したがって、上記構成によれば、ブラックチャネルに対応させるための仕組み(通信エラーをアプリケーション側で確実に検出できる仕組み)が既に実現されているため、そのような仕組みを別途設ける必要がない。
【0064】
本実施形態では、第1CRC演算部13(CRC演算[1])および第2CRC演算部14(CRC演算[2])は、互いに異なる変換元データに基づいて、それぞれCRC[1]およびCRC[2]を演算するようになっている。そのため、この場合、CRC[1]とCRC[2]とは、それらの演算手法が異なるだけでなく、それらの元となるデータも異なることになる。
【0065】
このようにすれば、第1CRC演算部13と同様の演算機能だけを有するMCU10において、CRC[2]を演算することは、より一層困難なものとなる。したがって、上記構成によれば、MCU10が故障した場合、その故障による連鎖反応として通信データに含まれるCRC[2]が改ざんされる可能性を一層低く抑えることができ、その結果、一層確実にMCU11側においてフェールセーフ制御を実行することが可能となる。
【0066】
(その他の実施形態)
なお、本発明は上記し且つ図面に記載した実施形態に限定されるものではなく、その要旨を逸脱しない範囲で任意に変形、組み合わせ、あるいは拡張することができる。
上記実施形態で示した数値などは例示であり、それに限定されるものではない。
出力データの誤りを検出するための符号を求めるための演算としては、CRCに限らず、ある程度複雑な演算(ある程度高度な演算)であればよい。
【0067】
第1CRC演算部13(CRC演算[1])および第2CRC演算部14(CRC演算[2])は、互いに同一の変換元データに基づいて、それぞれCRC[1]およびCRC[2]を演算するようにしてもよい。このようにした場合でも、CRC[1]とCRC[2]とは、それらの演算手法が異なるため、第1CRC演算部13と同様の演算機能だけを有するMCU10において、CRC[2]を演算することが困難となる。
【符号の説明】
【0068】
1…出力モジュール、2…電源端子、3…負荷、4…出力端子、7…第1スイッチング素子、8…第2スイッチング素子、9…バス変換IC、10…第1MCU、11…第2MCU、13…第1CRC演算部、14…第2CRC演算部、15…第1CRC演算部、16…通信パケット検証部、17…第1駆動部、18…第2CRC演算部、19…通信パケット検証部、20…第2駆動部。