(57)【要約】【課題】出力制御用の通信を２重化した場合と同等の安全性を担保するとともに通信経路のブラックチャネル対応に要する工数を軽減する。【解決手段】バス変換ＩＣ９は、ＣＲＣ［１］を演算する第１ＣＲＣ演算部１３と、ＣＲＣ［２］を演算する第２ＣＲＣ演算部１４とを備え、出力データにＣＲＣ［１］およびＣＲＣ［２］を付加した通信データをＭＣＵ１０に送信する。ＭＣＵ１０は、第１ＣＲＣ演算部１３と同様の演算機能だけを有する第１ＣＲＣ演算部１５と、第１ＣＲＣ演算部１５による演算結果を用いて出力データの誤りを検出する通信パケット検証部１６とを備え、バス変換ＩＣ９から送信された通信データをＭＣＵ１１に送信する。ＭＣＵ１１は、第２ＣＲＣ演算部１４と同様の演算機能を有する第２ＣＲＣ演算部１８と、第２ＣＲＣ演算部１８による演算結果を用いて出力データの誤りを検出する通信パケット検証部１９とを備える。【選択図】図２
2020154757.tif 000002
【特許請求の範囲】
【請求項１】
外部機器に接続される出力端子と前記外部機器用の電源が与えられる電源端子との間の開閉を制御する出力制御装置であって、
前記電源端子および前記出力端子の間に直列接続され且つ互いに同様にオンオフされる第１スイッチング素子および第２スイッチング素子と、
外部から与えられる制御指令に基づいて前記第１スイッチング素子および前記第２スイッチング素子をオンオフするための出力データを生成するデータ生成部と、
前記第１スイッチング素子の駆動を制御する第１制御部と、
前記第２スイッチング素子の駆動を制御する第２制御部と、
を備え、
前記データ生成部は、前記出力データを含む所定の変換元データに基づいて前記出力データの誤りを検出するための符号である第１符号データを演算する第１生成側演算部と、前記出力データを含む所定の変換元データに基づいて前記出力データの誤りを検出するための符号であり且つ前記第１符号データとは異なる第２符号データを演算する第２生成側演算部と、を備え、前記出力データに前記第１符号データおよび前記第２符号データを付加した通信データをシリアル通信により前記第１制御部に送信し、
前記第１制御部は、前記第１生成側演算部と同様の演算機能および前記第２生成側演算部と同様の演算機能のうち前者の演算機能だけを有する第１制御側演算部と、前記第１制御側演算部による演算結果を用いて前記通信データに含まれる前記出力データの誤りを検出する第１誤り検出部と、前記第１誤り検出部により前記出力データの誤りが検出されないことを条件として前記出力データに基づいて前記第１スイッチング素子を駆動する第１駆動部と、を備え、前記データ生成部から送信された前記通信データをシリアル通信により前記第２制御部に送信し、
前記第２制御部は、前記第２生成側演算部と同様の演算機能を有する第２制御側演算部と、前記第２制御側演算部による演算結果を用いて前記通信データに含まれる前記出力データの誤りを検出する第２誤り検出部と、前記第２誤り検出部により前記出力データの誤りが検出されないことを条件として前記出力データに基づいて前記第２スイッチング素子を駆動する第２駆動部と、を備える出力制御装置。
【請求項２】
前記第１生成側演算部および前記第２生成側演算部は、互いに異なる前記変換元データに基づいて、それぞれ前記第１符号データおよび前記第２符号データを生成するようになっている請求項１に記載の出力制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、外部機器に接続される出力端子と外部機器用の電源が与えられる電源端子との間の開閉を制御する出力制御装置に関する。
【背景技術】
【０００２】
例えばプログラマブルロジックコントローラなどの制御装置では、安全の観点から、その出力モジュールによる制御を２重化する要求がある（例えば特許文献１参照）。なお、本明細書では、プログラマブルロジックコントローラのことをＰＬＣと省略することがある。出力モジュールによる制御（出力制御）としては、例えば負荷などの外部機器が接続される出力端子に対する直流電圧などの電源電圧の印加制御を挙げることができる。
【０００３】
このような出力制御の２重化を実現するため、ＰＬＣの出力モジュールとして、直流電圧が供給される電源端子から出力端子へと至る通電経路を開閉する２つのスイッチング素子と、それらスイッチング素子の駆動をそれぞれ制御する２つのMicro Controller Unitと、外部のバス通信ラインを介して与えられるデータをシリアル通信に対応した出力データに変換して２つのMicro Controller Unitに与えるバス変換ＩＣと、を含む構成を採用することが考えられる。なお、本明細書では、Micro Controller UnitのことをＭＣＵと省略することがある。
【０００４】
この場合、バス変換ＩＣと２つのＭＣＵとの間では、それぞれシリアル通信が行われる。また、この場合、２つのＭＣＵの間でもシリアル通信が行われるようになっており、これにより、各ＭＣＵ間での相互監視が実現されている。具体的には、各ＭＣＵは、バス変換ＩＣから送信されたデータと、そのデータに基づいて生成したスイッチング素子の駆動を制御するための制御信号と、を互いに提示し合い、それぞれが一致すれば正常に動作していると判断する、といった具合に相互監視を行うようになっている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１６−１１９１１７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ネットワーク機器の機能安全設計の複雑度を下げる手法として、ブラックチャネル・アプローチがある。ブラックチャネルとして認められた通信経路は、通信エラーを比較的高い確率で検出できる。その結果、通信経路の故障率が無視できるほど小さくなるため、モジュール結合の自由度が向上する。ブラックチャネルに対応させるためには、通信エラーをアプリケーション側で確実に検出できる仕組みを設けるとともに、その証明が必要となる。このような証明（認証）の手間（工数）を軽減するためには、ブラックチャネルに対応させる通信経路は極力少ないほうがよい。
【０００７】
上記した構成では、出力モジュール内の通信経路として、バス変換ＩＣと一方のＭＣＵとの間の経路、バス変換ＩＣと他方のＭＣＵとの間の経路および２つのＭＣＵ間の経路という３つの通信経路が存在する。そのため、上記構成において通信のブラックチャネル化を図るためには、これら３つの通信経路毎にブラックチャネルの認証が必要となる。そこで、上記構成において、ブラックチャネルに関する認証の手間を軽減するため、バス変換ＩＣと他方のＭＣＵとの間の通信経路を削除し、バス変換ＩＣから一方のＭＣＵを経由して他方のＭＣＵに出力データを与えるような構成に変更することが考えられる。
【０００８】
しかし、このような変更後の構成では、一方のＭＣＵが故障した場合、その故障に起因して他方のＭＣＵに誤った出力データが与えられる可能性がある。つまり、上記構成では、一方のＭＣＵを経由する経路が２重化されているとは言えない。そのため、最悪の場合、本来、スイッチング素子のオフを指示するような出力データがバス変換ＩＣから出力されているにもかかわらず、一方のＭＣＵの故障により、他方のＭＣＵが受信する出力データがスイッチング素子のオンを指示するような内容に化けてしまい、誤った出力制御が実施されるおそれがある。
【０００９】
本発明は上記事情に鑑みてなされたものであり、その目的は、出力制御用の通信を２重化した場合と同等の安全性を担保するとともに通信経路のブラックチャネル対応に要する工数を軽減することができる出力制御装置を提供することにある。
【課題を解決するための手段】
【００１０】
請求項１に記載の出力制御装置は、外部機器に接続される出力端子と外部機器用の電源が与えられる電源端子との間の開閉を制御する出力制御装置である。出力制御装置は、電源端子および出力端子の間に直列接続され且つ互いに同様にオンオフされる第１スイッチング素子および第２スイッチング素子を備えており、その出力段の構成が２重化されている。また、出力制御装置は、外部から与えられる制御指令に基づいて第１スイッチング素子および第２スイッチング素子をオンオフするための出力データを生成するデータ生成部と、第１スイッチング素子の駆動を制御する第１制御部と、第２スイッチング素子の駆動を制御する第２制御部と、を備える。
【００１１】
この場合、データ生成部は、生成した出力データを含む通信データをシリアル通信により第１制御部に送信し、第１制御部は、データ生成部から送信された通信データをシリアル通信により第２制御部に送信する。つまり、この場合、データ生成部から第１制御部を介して第２制御部へと至る通信経路が２重化されていない。このように、上記構成では、出力制御装置内における通信経路は、物理的には２重化されていない。しかしながら、上記構成では、各部が次のような機能を備えることにより、物理的な２重化と同等の機能を実現する意味的な２重化が図られている。
【００１２】
すなわち、データ生成部は、出力データを含む所定の変換元データに基づいて出力データの誤りを検出するための符号である第１符号データを演算する第１生成側演算部と、出力データを含む所定の変換元データに基づいて出力データの誤りを検出するための符号であり且つ第１符号データとは異なる第２符号データを演算する第２生成側演算部と、を備える。また、データ生成部は、出力データに第１符号データおよび第２符号データを付加した通信データをシリアル通信により第１制御部に送信する。
【００１３】
第１制御部は、第１生成側演算部と同様の演算機能を有する第１制御側演算部と、第１制御側演算部による演算結果を用いて通信データに含まれる出力データの誤りを検出する第１誤り検出部と、第１誤り検出部により出力データの誤りが検出されないことを条件として出力データに基づいて第１スイッチング素子を駆動する第１駆動部と、を備える。第２制御部は、第２生成側演算部と同様の演算機能を有する第２制御側演算部と、第２制御側演算部による演算結果を用いて通信データに含まれる出力データの誤りを検出する第２誤り検出部と、第２誤り検出部により出力データの誤りが検出されないことを条件として出力データに基づいて第２スイッチング素子を駆動する第２駆動部と、を備える。
【００１４】
このような構成によれば、データ生成部から第１制御部へと送信される段階において通信データにデータ化けが生じた場合、第１制御部の第１誤り検出部および第２制御部の第２誤り検出部の一方または双方において出力データの誤り（通信エラー）が検出される。そのため、誤った出力データに基づいて第１スイッチング素子および第２スイッチング素子の駆動が制御されることが防止され、その結果、電源端子と出力端子の間が誤った開閉状態に制御される事態が発生することが防止される。
【００１５】
また、上記構成では、第１制御部に故障が発生した場合、その故障に起因して第１制御部から第２制御部へと送信される通信データに含まれる出力データにデータ化けが生じる可能性がある。ただし、この場合、第１制御部の第１制御側演算部は、第２生成側演算部と同様の演算機能を有していない。そのため、第１制御部では、第２制御部に送信する通信データに含まれる第２符号データを加工（変更）することはできない。したがって、第１制御部の故障による連鎖反応として通信データが改ざんされる可能性は極めて低い。そのため、第２制御部に送信される通信データに含まれる第２符号データは、データ生成部において生成された真のデータのままとなる。
【００１６】
これにより、第２制御部に送信される通信データに含まれる出力データにデータ化けが生じていたとしても、第２制御部の第２誤り検出部により出力データの誤り（通信エラー）が検出される。そのため、誤った出力データに基づいて第２スイッチング素子の駆動が制御されることが防止され、その結果、電源端子と出力端子の間が誤った開閉状態に制御される事態が発生することが防止される。
【００１７】
このように、上記構成によれば、出力制御装置内における通信経路を物理的に２重化した構成と同様の機能、具体的には、通信エラーの検出および通信エラー発生時の対応を実現することができる。さらに、上記構成では、出力制御装置内の通信経路としては、データ生成部と第１制御部との間の経路および第１制御部と第２制御部との間の経路という２つの通信経路だけが存在する。つまり、上記構成によれば、物理的に２重化した構成に比べ、通信経路を３つから２つに削減することができ、その分だけブラックチャネルに対応させるための認証の手間（工数）が軽減される。したがって、上記構成によれば、出力制御用の通信を２重化した場合と同等の安全性を担保するとともに通信経路のブラックチャネル対応に要する工数を軽減することができるという優れた効果が得られる。
【００１８】
請求項２に記載の出力制御装置において、第１生成側演算部および第２生成側演算部は、互いに異なる変換元データに基づいて、それぞれ第１符号データおよび第２符号データを演算するようになっている。そのため、この場合、第１符号データと第２符号データとは、それらの演算手法が異なるだけでなく、それらの元となるデータも異なることになる。このようにすれば、第１生成側演算部と同様の演算機能だけを有する第１制御側演算部が、第２符号データを演算することは、より一層困難なものとなる。したがって、上記構成によれば、第１制御部が故障した場合、その故障による連鎖反応として通信データに含まれる第２符号データが改ざんされる可能性を一層低く抑えることができる。
【図面の簡単な説明】
【００１９】
【図１】一実施形態に係る出力モジュールの構成を模式的に示す図
【図２】一実施形態に係る出力モジュールの具体的な構成例を模式的に示す図
【図３】一実施形態に係る通信データの構造の一例を模式的に示す図
【図４】一実施形態に係る第１ＭＣＵにおけるソフトウェア処理の内容を説明するための図
【図５】一実施形態に係る第２ＭＣＵにおけるソフトウェア処理の内容を説明するための図
【図６】一実施形態に係るバス変換ＩＣから第１ＭＣＵに送信される通信データのデータ化けを説明するための図
【図７】一実施形態に係る第１ＭＣＵによるフェールセーフ制御の概要を説明するための図
【図８】一実施形態に係る第２ＭＣＵによるフェールセーフ制御の概要を説明するための図
【図９】一実施形態に係る第１ＭＣＵの故障に起因する通信データのデータ化けを説明するための図
【発明を実施するための形態】
【００２０】
以下、本発明の一実施形態について図面を参照して説明する。
＜全体構成＞
図１に示すように、出力制御装置に相当する出力モジュール１は、外部機器用の電源に相当する直流電圧ＤＣ＋が与えられる電源端子２と、外部機器に相当する負荷３に接続される出力端子４と、を備えている。出力モジュール１は、図示しない他の出力モジュール、コントローラなどとともに、ＰＬＣを構成している。直流電圧ＤＣ＋は、例えば出力モジュール１、ひいてはＰＬＣの外部に設けられた負荷用電源６により生成される。
【００２１】
出力モジュール１は、電源端子２と出力端子４との間の開閉を制御するものであり、第１スイッチング素子７、第２スイッチング素子８、バス変換ＩＣ９、第１ＭＣＵ１０および第２ＭＣＵ１１を備えている。なお、以下の説明では、第１スイッチング素子７および第２スイッチング素子８のことをスイッチング素子７、８と省略するとともに、第１ＭＣＵ１０および第２ＭＣＵ１１のことをＭＣＵ１０、１１と省略することとする。
【００２２】
スイッチング素子７、８は、いずれも電子開閉器のＦＥＴであり、電源端子２および出力端子４の間に直列接続されている。具体的には、スイッチング素子７の一方の主端子は、電源端子２に接続され、その他方の主端子はスイッチング素子８の一方の主端子に接続されている。スイッチング素子８の他方の主端子は、出力端子４に接続されている。スイッチング素子７の開閉制御端子には、ＭＣＵ１０から出力される制御信号Ｓａが与えられている。スイッチング素子８の開閉制御端子には、ＭＣＵ１１から出力される制御信号Ｓｂが与えられている。
【００２３】
このような構成により、スイッチング素子７の駆動がＭＣＵ１０により制御されるとともに、スイッチング素子８の駆動がＭＣＵ１１により制御されるようになっている。ＭＣＵ１０およびＭＣＵ１１から出力される各制御信号ＳａおよびＳｂは、通信エラーなどが生じていない正常時においては、同様の信号となる。したがって、正常時、スイッチング素子７、８は、一方がオンされれば他方もオンされるとともに、一方がオフされれば他方もオフされる。つまり、正常時、スイッチング素子７、８は、互いに同様にオンオフされる。
【００２４】
バス変換ＩＣ９には、出力モジュール１の外部からバス通信ラインを介してスイッチング素子７、８をオンオフするための制御指令を含むデータが与えられている。なお、本実施形態では、上記バス通信ラインを介した通信は、例えばEthernet/IP，EtherCAT，PROFINETなどの産業ネットワーク規格による通信となっている。バス変換ＩＣ９は、そのデータをシリアル通信に対応した出力データに変換する。つまり、バス変換ＩＣ９は、外部から与えられる制御指令に基づいてスイッチング素子７、８をオンオフするための出力データを生成するものであり、データ生成部に相当する。バス変換ＩＣ９は、生成した出力データを含む通信データをシリアル通信によりＭＣＵ１０に送信する。
【００２５】
ＭＣＵ１０は、詳細は後述するが、バス変換ＩＣ９から送信された通信データに基づいてスイッチング素子７の駆動を制御する。また、ＭＣＵ１０は、バス変換ＩＣ９から送信された通信データと同じデータを生成し、その生成した通信データをシリアル通信によりＭＣＵ１１に送信する。ＭＣＵ１１は、詳細は後述するが、ＭＣＵ１０から送信された通信データに基づいてスイッチング素子８の駆動を制御する。
【００２６】
ＭＣＵ１０、１１の間では、シリアル通信が行われるようになっており、これにより、ＭＣＵ１０、１１間での相互監視が実現されている。具体的には、ＭＣＵ１０、１１は、バス変換ＩＣ９から送信された通信データに含まれる出力データと、その出力データに基づいて生成した制御信号Ｓａ、Ｓｂと、を互いに提示し合い、それぞれが一致すれば正常に動作していると判断する、といった具合に相互監視を行うようになっている。
＜出力モジュール１の具体的構成＞
【００２７】
出力モジュール１のうち、バス変換ＩＣ９、ＭＣＵ１０、１１の具体的な構成は、例えば図２に示すような構成となっている。図２に示すように、バス変換ＩＣ９は、通信パケット生成部１２、第１ＣＲＣ演算部１３および第２ＣＲＣ演算部１４を備えている。なお、これら各部は、ソフトウェア処理により実現されている。通信パケット生成部１２は、ＭＣＵ１０に送信するための通信データを生成する。
【００２８】
この場合、通信データの構造（通信パケット）は、図３に示すようになっている。図３に示すように、通信パケット生成部１２により生成される通信データには、ヘッダーおよび出力データと、ＣＲＣ［２］と、ＣＲＣ［１］と、が含まれる。ＣＲＣ［１］は、出力データの誤りを検出するための符号である第１符号データに相当するものであり、第１ＣＲＣ演算部１３により演算される。
【００２９】
ＣＲＣ［２］は、出力データの誤りを検出するための符号であり且つ第１符号データとは異なる第２符号データに相当するものであり、第２ＣＲＣ演算部１４により演算される。バス変換ＩＣ９は、上述したようなデータ構造を有する通信データをＭＣＵ１０に送信する。つまり、バス変換ＩＣ９は、出力データにＣＲＣ［１］およびＣＲＣ［２］を付加した通信データをシリアル通信によりＭＣＵ１０に送信する。
【００３０】
第１ＣＲＣ演算部１３は、例えばＣＲＣ（Cyclic Redundancy Checking）などの高度演算（図３におけるＣＲＣ演算［１］）により”ヘッダー＋出力データ”のシグネチャであるＣＲＣ［１］を生成する。すなわち、第１ＣＲＣ演算部１３は、出力データを含む所定の変換元データに基づいてＣＲＣ［１］を演算するものであり、第１生成側演算部に相当する。この場合、変換元データは、”ヘッダー＋出力データ”およびＣＲＣ［２］となっている。
【００３１】
第２ＣＲＣ演算部１４は、ＣＲＣなどの高度演算（図３におけるＣＲＣ演算［２］）により”ヘッダー＋出力データ”のシグネチャであるＣＲＣ［２］を生成する。すなわち、第２ＣＲＣ演算部１４は、出力データを含む所定の変換元データに基づいてＣＲＣ［２］を演算するものであり、第２生成側演算部に相当する。この場合、変換元データは、”ヘッダー＋出力データ”となっている。
【００３２】
ＭＣＵ１０は、第１ＣＲＣ演算部１５、通信パケット検証部１６および第１駆動部１７を備えている。なお、第１ＣＲＣ演算部１５および通信パケット検証部１６は、ソフトウェア処理により実現されている。第１ＣＲＣ演算部１５は、バス変換ＩＣ９が備える第１ＣＲＣ演算部１３と同様の演算を行うことができる。具体的には、図４に示すように、第１ＣＲＣ演算部１５は、通信データに含まれる”ヘッダー＋出力データ”およびＣＲＣ［２］に基づいてＣＲＣ［１］を演算するＣＲＣ演算［１］を行うことができる。ただし、第１ＣＲＣ演算部１５は、バス変換ＩＣ９が備える第２ＣＲＣ演算部１４と同様の演算、つまりＣＲＣ演算［２］を行うことはできない。
【００３３】
このように、ＭＣＵ１０は、バス変換ＩＣ９が備える第１ＣＲＣ演算部１３と同様の演算機能を有するものの、第２ＣＲＣ演算部１４と同様の演算機能は有してない。すなわち、ＭＣＵ１０には、ＣＲＣ［１］を計算するためのＣＲＣ演算［１］のソフトウェアは実装されているものの、ＣＲＣ［２］を計算するためのＣＲＣ演算［２］のソフトウェアは実装されていない。このように、本実施形態では、ＭＣＵ１０に対し、敢えて、ＣＲＣ［２］を計算するための能力を持たせないようにしている。このようにする理由については後述する。
【００３４】
通信パケット検証部１６は、第１ＣＲＣ演算部１５による演算結果を用いて、バス変換ＩＣ９から送信される通信データを検証し、その通信データに含まれる出力データの誤りを検出するものであり、第１誤り検出部に相当する。具体的には、図４に示すように、第１ＣＲＣ演算部１５は、バス変換ＩＣ９から送信された通信データについて前述したＣＲＣ演算［１］を行い、ＣＲＣ［１］を求める。
【００３５】
通信パケット検証部１６は、通信データに含まれるＣＲＣ［１］と第１ＣＲＣ演算部１５により演算されたＣＲＣ［１］との一致比較を行う。通信パケット検証部１６は、一致比較の結果がＯＫである場合、つまり上記２つのＣＲＣ［１］が同一データである場合、出力データが正常である（出力データの誤りが検出されない）と判断する。また、通信パケット検証部１６は、一致比較の結果がＮＧである場合、つまり上記２つのＣＲＣ［１］が異なるデータである場合、出力データが異常である（出力データの誤りが検出された）と判断する。
【００３６】
第１駆動部１７は、通信パケット検証部１６により出力データの誤りが検出されないことを条件として出力データに基づいてスイッチング素子７を駆動する。具体的には、第１駆動部１７は、通信パケット検証部１６による一致比較の結果がＯＫである場合、バス変換ＩＣ９から送信された通信データに含まれる出力データが表す制御指令の内容に基づいて制御信号Ｓａを生成して出力する。これにより、スイッチング素子７は、外部から与えられる制御指令に基づいたオンオフ状態に制御される。
【００３７】
また、第１駆動部１７は、通信パケット検証部１６による一致比較の結果がＮＧである場合、バス変換ＩＣ９から送信された通信データに含まれる出力データが表す制御指令の内容にかかわらず、スイッチング素子７をオフさせるための制御信号Ｓａを生成して出力する。これにより、スイッチング素子７は、外部から与えられる制御指令に関係なく、強制的にオフ制御される。ＭＣＵ１０は、通信エラーの検出時、このようにしてフェールセーフ制御を行うようになっている。
【００３８】
ＭＣＵ１１は、第２ＣＲＣ演算部１８、通信パケット検証部１９および第２駆動部２０を備えている。なお、第２ＣＲＣ演算部１８および通信パケット検証部１９は、ソフトウェア処理により実現されている。第２ＣＲＣ演算部１８は、バス変換ＩＣ９が備える第２ＣＲＣ演算部１４と同様の演算を行うことができる。具体的には、図５に示すように、第２ＣＲＣ演算部１８は、通信データに含まれる”ヘッダー＋出力データ”に基づいてＣＲＣ［２］を演算するＣＲＣ演算［２］を行うことができる。ただし、第２ＣＲＣ演算部１８は、バス変換ＩＣ９が備える第１ＣＲＣ演算部１３と同様の演算を行うことはできない。
【００３９】
このように、ＭＣＵ１１は、バス変換ＩＣ９が備える第２ＣＲＣ演算部１４と同様の演算機能を有するものの、第１ＣＲＣ演算部１３と同様の演算機能は有してない。すなわち、本実施形態では、ＭＣＵ１１には、ＣＲＣ［２］を計算するためのＣＲＣ演算［２］のソフトウェアは実装されているものの、ＣＲＣ［１］を計算するためのＣＲＣ演算［１］のソフトウェアは実装されていない。なお、ＭＣＵ１１にＣＲＣ演算［１］のソフトウェアが実装されていてもよい。
【００４０】
通信パケット検証部１９は、第２ＣＲＣ演算部１８による演算結果を用いて、ＭＣＵ１０から送信される通信データを検証し、その通信データに含まれる出力データの誤りを検出するものであり、第２誤り検出部に相当する。具体的には、図５に示すように、第２ＣＲＣ演算部１８は、ＭＣＵ１０から送信された通信データについて前述したＣＲＣ演算［２］を行い、ＣＲＣ［２］を求める。
【００４１】
通信パケット検証部１９は、通信データに含まれるＣＲＣ［２］と第２ＣＲＣ演算部１８により演算されたＣＲＣ［２］との一致比較を行う。通信パケット検証部１９は、一致比較の結果がＯＫである場合、つまり上記２つのＣＲＣ［２］が同一データである場合、出力データが正常である（出力データの誤りが検出されない）と判断する。また、通信パケット検証部１９は、一致比較の結果がＮＧである場合、つまり上記２つのＣＲＣ［２］が異なるデータである場合、出力データが異常である（出力データの誤りが検出された）と判断する。
【００４２】
第２駆動部２０は、通信パケット検証部１９により出力データの誤りが検出されないことを条件として出力データに基づいてスイッチング素子８を駆動する。具体的には、第２駆動部２０は、通信パケット検証部１９による一致比較の結果がＯＫである場合、ＭＣＵ１０から送信された通信データに含まれる出力データが表す制御指令の内容に基づいて制御信号Ｓｂを生成して出力する。これにより、スイッチング素子８は、外部から与えられる制御指令に基づいたオンオフ状態に制御される。
【００４３】
また、第２駆動部２０は、通信パケット検証部１９による一致比較の結果がＮＧである場合、ＭＣＵ１０から送信された通信データに含まれる出力データが表す制御指令の内容にかかわらず、スイッチング素子８をオフさせるための制御信号Ｓｂを生成して出力する。これにより、スイッチング素子８は、外部から与えられる制御指令に関係なく、強制的にオフ制御される。ＭＣＵ１１は、通信エラーの検出時、このようにしてフェールセーフ制御を行うようになっている。
【００４４】
次に、本実施形態の作用について説明する。
［１］正常動作パターン
バス変換ＩＣ９からＭＣＵ１０へと送信される段階およびＭＣＵ１０からＭＣＵ１１へと送信される段階のいずれにおいても通信データにデータ化けが生じていないとき、つまり正常時におけるＭＣＵ１０、１１の動作は、次のようなものとなる。
【００４５】
ＭＣＵ１０の第１ＣＲＣ演算部１５は、ＣＲＣ演算［１］を行うことによりＣＲＣ［１］を求める。そして、ＭＣＵ１０の通信パケット検証部１６は、通信データに含まれるＣＲＣ［１］と第１ＣＲＣ演算部１５により求められたＣＲＣ［１］との一致比較を行う。この場合、通信データにデータ化けが生じていないため、一致比較の結果はＯＫとなる。そのため、ＭＣＵ１０の第１駆動部１７は、出力データが表す制御指令の内容に基づいて制御信号Ｓａを生成して出力する。
【００４６】
ＭＣＵ１１の第２ＣＲＣ演算部１８は、ＣＲＣ演算［２］を行うことによりＣＲＣ［２］を求める。そして、ＭＣＵ１１の通信パケット検証部１９は、通信データに含まれるＣＲＣ［２］と第２ＣＲＣ演算部１８により求められたＣＲＣ［２］との一致比較を行う。この場合、通信データにデータ化けが生じていないため、一致比較の結果はＯＫとなる。そのため、ＭＣＵ１１の第２駆動部２０は、出力データが表す制御指令の内容に基づいて制御信号Ｓｂを生成して出力する。このような動作により、正常時、スイッチング素子７、８は、外部から与えられる制御指令に従い、互いに同様にオンオフされる。
【００４７】
［２］通信故障検出パターンその１
図６に示すように、バス変換ＩＣ９からＭＣＵ１０へと送信される段階において通信データにデータ化けが生じた場合におけるＭＣＵ１０、１１の動作は、次のようなものとなる。図７に示すように、この場合も、正常動作パターンと同様、ＭＣＵ１０の第１ＣＲＣ演算部１５は、ＣＲＣ演算［１］を行うことによりＣＲＣ［１］を求める。そして、ＭＣＵ１０の通信パケット検証部１６は、通信データに含まれるＣＲＣ［１］と第１ＣＲＣ演算部１５により求められたＣＲＣ［１］との一致比較を行う。
【００４８】
この場合、バス変換ＩＣ９から送信された通信データ（”ヘッダー＋出力データ”）にデータ化けが生じている。そのため、第１ＣＲＣ演算部１５により求められたＣＲＣ［１］が通信データに含まれるＣＲＣ［１］と異なるものとなり、一致比較の結果がＮＧとなる。そのため、ＭＣＵ１０の第１駆動部１７は、出力データが表す制御指令の内容にかかわらずスイッチング素子７をオフさせるための制御信号Ｓａを生成して出力する（フェールセーフ制御）。
【００４９】
図８に示すように、この場合も、正常動作パターンと同様、ＭＣＵ１１の第２ＣＲＣ演算部１８は、ＣＲＣ演算［２］を行うことによりＣＲＣ［２］を求める。そして、ＭＣＵ１１の通信パケット検証部１９は、通信データに含まれるＣＲＣ［２］と第２ＣＲＣ演算部１８により求められたＣＲＣ［２］との一致比較を行う。
【００５０】
この場合、ＭＣＵ１０から送信された通信データ（”ヘッダー＋出力データ”）にデータ化けが生じている。そのため、第２ＣＲＣ演算部１８により求められたＣＲＣ［２］が通信データに含まれるＣＲＣ［２］と異なるものとなり、一致比較の結果がＮＧとなる。そのため、ＭＣＵ１１の第２駆動部２０は、出力データが表す制御指令の内容にかかわらずスイッチング素子８をオフさせるための制御信号Ｓｂを生成して出力する（フェールセーフ制御）。
【００５１】
［３］通信故障検出パターンその２
図９に示すように、ＭＣＵ１０に故障が発生した場合、その故障に起因してＭＣＵ１０からＭＣＵ１１へと送信される段階において通信データにデータ化けが生じる可能性がある。このような場合におけるＭＣＵ１０、１１の動作は、次のようなものとなる。この場合、ＭＣＵ１０は、故障しているため、設計上想定され得る動作を行うとは限らず、未知の動作となるおそれがある。したがって、ＭＣＵ１０は、外部から与えられる制御指令がスイッチング素子７のオフを指令する内容であるにもかかわらず、スイッチング素子７をオン制御する動作を行ってしまう可能性がある。
【００５２】
ただし、この場合、ＭＣＵ１０は、ＣＲＣ演算［２］を行うための演算機能を有していないため、通信データに含まれるＣＲＣ［２］を加工することはできない。そのため、ＭＣＵ１０の故障による連鎖反応として通信データに含まれるＣＲＣ［２］が改ざんされる可能性は極めて低い。したがって、ＭＣＵ１０からＭＣＵ１１に送信される通信データに含まれるＣＲＣ［２］は、バス変換ＩＣ９において生成された真のデータのままとなる。
【００５３】
図８に示したように、この場合も、正常動作パターンと同様、ＭＣＵ１１の第２ＣＲＣ演算部１８は、ＣＲＣ演算［２］を行うことによりＣＲＣ［２］を求める。そして、ＭＣＵ１１の通信パケット検証部１９は、通信データに含まれるＣＲＣ［２］と第２ＣＲＣ演算部１８により求められたＣＲＣ［２］との一致比較を行う。
【００５４】
この場合、ＭＣＵ１０から送信された通信データ（”ヘッダー＋出力データ”）にデータ化けが生じている。そのため、第２ＣＲＣ演算部１８により求められたＣＲＣ［２］が通信データに含まれるＣＲＣ［２］と異なるものとなり、一致比較の結果がＮＧとなる。そのため、ＭＣＵ１１の第２駆動部２０は、出力データが表す制御指令の内容にかかわらずスイッチング素子８をオフさせるための制御信号Ｓｂを生成して出力する（フェールセーフ制御）。
【００５５】
以上説明したように、本実施形態によれば次のような効果が得られる。
本実施形態の出力モジュール１は、電源端子２および出力端子４の間に直列接続され且つ互いに同様にオンオフされるスイッチング素子７、８を備えており、その出力段の構成が２重化されている。ただし、この場合、バス変換ＩＣ９からＭＣＵ１０を介してＭＣＵ１１へと至る通信経路が２重化されていない。このように、上記構成では、出力モジュール１内における通信経路は、物理的には２重化されていない。
【００５６】
しかしながら、各部が次のような機能を備えることにより、物理的な２重化と同等の機能を実現する意味的な２重化が図られている。すなわち、バス変換ＩＣ９は、ＣＲＣ［１］を演算する第１ＣＲＣ演算部１３と、ＣＲＣ［１］とは異なるＣＲＣ［２］を演算する第２ＣＲＣ演算部１４とを備え、出力データにＣＲＣ［１］およびＣＲＣ［２］を付加した通信データをシリアル通信によりＭＣＵ１０に送信する。
【００５７】
ＭＣＵ１０は、第１ＣＲＣ演算部１３と同様の演算機能を有する第１ＣＲＣ演算部１５と、第１ＣＲＣ演算部１５による演算結果を用いて出力データの誤りを検出する通信パケット検証部１６と、通信パケット検証部１６により出力データの誤りが検出されないことを条件として出力データに基づいてスイッチング素子７を駆動する第１駆動部１７とを備える。ＭＣＵ１１は、第２ＣＲＣ演算部１４と同様の演算機能を有する第２ＣＲＣ演算部１８と、第２ＣＲＣ演算部１８による演算結果を用いて出力データの誤りを検出する通信パケット検証部１９と、通信パケット検証部１９により出力データの誤りが検出されないことを条件として出力データに基づいてスイッチング素子８を駆動する第２駆動部２０とを備える。
【００５８】
このような構成によれば、バス変換ＩＣ９からＭＣＵ１０へと送信される段階において通信データにデータ化けが生じた場合、ＭＣＵ１０の通信パケット検証部１６およびＭＣＵ１１の通信パケット検証部１９の一方または双方において出力データの誤り（通信エラー）が検出される。そのため、誤った出力データに基づいてスイッチング素子７、８の駆動が制御されることが防止され、その結果、電源端子２と出力端子４の間が誤った開閉状態に制御される事態が発生することが防止される。
【００５９】
また、上記構成では、ＭＣＵ１０に故障が発生した場合、その故障に起因してＭＣＵ１０からＭＣＵ１１へと送信される通信データに含まれる出力データにデータ化けが生じる可能性がある。ただし、この場合、ＭＣＵ１０の第１ＣＲＣ演算部１５は、バス変換ＩＣ９の第２ＣＲＣ演算部１４と同様の演算機能を有していない。そのため、ＭＣＵ１０では、ＭＣＵ１１に送信する通信データに含まれるＣＲＣ［２］を加工（変更）することはできない。
【００６０】
したがって、ＭＣＵ１０の故障による連鎖反応として通信データが改ざんされる可能性は極めて低い。そのため、ＭＣＵ１０からＭＣＵ１１に送信される通信データに含まれるＣＲＣ［２］は、バス変換ＩＣ９において生成された真のデータのままとなる。なお、上述した「通信データの改ざん」には、通信データに含まれる出力データにデータ化けが生じているにもかかわらず、同じ通信データに含まれるＣＲＣ［２］が変更されることによって、あたかも出力データにデータ化けが生じておらず正しいデータであるように見える状態にされてしまう、といった意味が含まれている。
【００６１】
このようなことから、ＭＣＵ１１に送信される通信データに含まれる出力データにデータ化けが生じていたとしても、ＭＣＵ１１の通信パケット検証部１９は、ＭＣＵ１０の故障の影響を受けることなく、出力データの誤り（通信エラー）を確実に検出することができる。そのため、誤った出力データに基づいてスイッチング素子８の駆動が制御されることが防止され、その結果、電源端子２と出力端子４の間が誤った開閉状態に制御される事態が発生することが防止される。
【００６２】
このように、上記構成によれば、出力モジュール１内における通信経路を物理的に２重化した構成と同様の機能、具体的には、通信エラーの検出および通信エラー発生時の対応を実現することができる。さらに、上記構成では、出力モジュール１内の通信経路としては、バス変換ＩＣ９とＭＣＵ１０との間の経路およびＭＣＵ１０とＭＣＵ１１との間の経路という２つの通信経路だけが存在する。つまり、上記構成によれば、物理的に２重化した構成に比べ、通信経路を３つから２つに削減することができ、その分だけブラックチャネルに対応させるための認証の手間（工数）が軽減される。したがって、上記構成によれば、出力制御用の通信を２重化した場合と同等の安全性を担保するとともに通信経路のブラックチャネル対応に要する工数を軽減することができるという優れた効果が得られる。
【００６３】
上述したように、出力モジュール１は、ＣＲＣ［１］およびＣＲＣ［２］を用いて通信エラー（データ化け）を検出するための構成（第１ＣＲＣ演算部１３、第２ＣＲＣ演算部１４、第１ＣＲＣ演算部１５、通信パケット検証部１６、第２ＣＲＣ演算部１８、通信パケット検証部１９など）を備えている。したがって、上記構成によれば、ブラックチャネルに対応させるための仕組み（通信エラーをアプリケーション側で確実に検出できる仕組み）が既に実現されているため、そのような仕組みを別途設ける必要がない。
【００６４】
本実施形態では、第１ＣＲＣ演算部１３（ＣＲＣ演算［１］）および第２ＣＲＣ演算部１４（ＣＲＣ演算［２］）は、互いに異なる変換元データに基づいて、それぞれＣＲＣ［１］およびＣＲＣ［２］を演算するようになっている。そのため、この場合、ＣＲＣ［１］とＣＲＣ［２］とは、それらの演算手法が異なるだけでなく、それらの元となるデータも異なることになる。
【００６５】
このようにすれば、第１ＣＲＣ演算部１３と同様の演算機能だけを有するＭＣＵ１０において、ＣＲＣ［２］を演算することは、より一層困難なものとなる。したがって、上記構成によれば、ＭＣＵ１０が故障した場合、その故障による連鎖反応として通信データに含まれるＣＲＣ［２］が改ざんされる可能性を一層低く抑えることができ、その結果、一層確実にＭＣＵ１１側においてフェールセーフ制御を実行することが可能となる。
【００６６】
（その他の実施形態）
なお、本発明は上記し且つ図面に記載した実施形態に限定されるものではなく、その要旨を逸脱しない範囲で任意に変形、組み合わせ、あるいは拡張することができる。
上記実施形態で示した数値などは例示であり、それに限定されるものではない。
出力データの誤りを検出するための符号を求めるための演算としては、ＣＲＣに限らず、ある程度複雑な演算（ある程度高度な演算）であればよい。
【００６７】
第１ＣＲＣ演算部１３（ＣＲＣ演算［１］）および第２ＣＲＣ演算部１４（ＣＲＣ演算［２］）は、互いに同一の変換元データに基づいて、それぞれＣＲＣ［１］およびＣＲＣ［２］を演算するようにしてもよい。このようにした場合でも、ＣＲＣ［１］とＣＲＣ［２］とは、それらの演算手法が異なるため、第１ＣＲＣ演算部１３と同様の演算機能だけを有するＭＣＵ１０において、ＣＲＣ［２］を演算することが困難となる。
【符号の説明】
【００６８】
１…出力モジュール、２…電源端子、３…負荷、４…出力端子、７…第１スイッチング素子、８…第２スイッチング素子、９…バス変換ＩＣ、１０…第１ＭＣＵ、１１…第２ＭＣＵ、１３…第１ＣＲＣ演算部、１４…第２ＣＲＣ演算部、１５…第１ＣＲＣ演算部、１６…通信パケット検証部、１７…第１駆動部、１８…第２ＣＲＣ演算部、１９…通信パケット検証部、２０…第２駆動部。
【図１】
2020154757.tif 000003
【図２】
2020154757.tif 000004
【図３】
2020154757.tif 000005
【図４】
2020154757.tif 000006
【図５】
2020154757.tif 000007
【図６】
2020154757.tif 000008
【図７】
2020154757.tif 000009
【図８】
2020154757.tif 000010
【図９】
2020154757.tif 000011