IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社デンソーウェーブの特許一覧

<>
  • 特許-プログラマブルロジックコントローラ 図1
  • 特許-プログラマブルロジックコントローラ 図2
  • 特許-プログラマブルロジックコントローラ 図3
  • 特許-プログラマブルロジックコントローラ 図4
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-11-12
(45)【発行日】2024-11-20
(54)【発明の名称】プログラマブルロジックコントローラ
(51)【国際特許分類】
   G05B 19/05 20060101AFI20241113BHJP
【FI】
G05B19/05 S
G05B19/05 N
【請求項の数】 2
(21)【出願番号】P 2021048729
(22)【出願日】2021-03-23
(65)【公開番号】P2022147474
(43)【公開日】2022-10-06
【審査請求日】2023-07-24
(73)【特許権者】
【識別番号】501428545
【氏名又は名称】株式会社デンソーウェーブ
(74)【代理人】
【識別番号】100121821
【弁理士】
【氏名又は名称】山田 強
(74)【代理人】
【識別番号】100125575
【弁理士】
【氏名又は名称】松田 洋
(72)【発明者】
【氏名】裏川 杜彦
【審査官】岩▲崎▼ 優
(56)【参考文献】
【文献】特開2000-082052(JP,A)
【文献】特開平04-295955(JP,A)
【文献】特開2009-259134(JP,A)
【文献】特開2014-215656(JP,A)
【文献】特開2013-242708(JP,A)
【文献】特開2020-135046(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G05B 19/04ー 19/05
(57)【特許請求の範囲】
【請求項1】
不揮発性のメモリ、及び前記メモリからプログラムを読み出して演算を行う第1CPUを有する第1マイコンと、
不揮発性のメモリ、及び第2CPUを有する第2マイコンと、を備えるプログラマブルロジックコントローラにおいて、
前記プログラムには、前記第1CPU及び前記第2CPUの少なくとも一方に異常が発生しているか否かを診断する診断ルーチンが含まれており、
前記第1CPUにより前記診断ルーチンの実行が開始されることにより、
前記第1CPUは、
オペコードに基づく処理をオペランドに施す第1演算を実行し、
前記第1演算で用いたオペコード及びオペランドを前記第2CPUに対して送信し、
前記第2CPUは、
受信したオペコードに基づく処理を、受信したオペランドに施す第2演算を実行し、
前記第2演算の演算結果を前記第1CPUに対して送信し、
前記第1CPUは、
前記第1演算の演算結果と、受信した前記第2演算の演算結果とを比較することにより、前記異常が発生しているか否かを診断し、
前記異常が発生していないと診断した場合、今回の前記第1演算で用いたオペコードに対するインクリメント又はデクリメントを実行することにより生成されたオペコードを、次回の前記第1演算で用いるオペコードとし、
前記第2マイコンのメモリには、前記診断ルーチンが記憶されていない、プログラマブルロジックコントローラ。
【請求項2】
前記第1CPUは、診断対象となる各オペコードに対する前記第1演算が完了するとの条件が成立するまで、前記インクリメント又は前記デクリメントを繰り返し実行する、請求項1に記載のプログラマブルロジックコントローラ。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、産業用機器等の分野で用いられるプログラマブルロジックコントローラに関する。
【背景技術】
【0002】
この種のプログラマブルロジックコントローラ(以下、PLC)としては、例えば特許文献1に見られるように、不揮発性のメモリと、メモリからプログラムを読み出して演算を行うCPUとを有するマイコンを備えるものが知られている。CPUは、算術演算又は論理演算等の演算機能を有している。
【先行技術文献】
【特許文献】
【0003】
【文献】特開2016-45712号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
PLCに対する機能安全を実現するための構成として、マイコンを複数備えるPLCがある。このPLCを構成するCPUの演算機能に異常が発生し得る。このため、CPUに異常が発生しているか否かを定期的に診断することが要求される。この異常診断方法としては、以下に説明するものがある。
【0005】
各マイコンにおいて、特定の演算を実行した場合における演算結果の期待値がメモリに記憶されている。各マイコンにおいて、CPUは、特定の演算を実行する。そして、各マイコンにおいて、CPUは、演算結果と期待値とを比較することにより、異常が発生しているか否かを診断する。
【0006】
ここで、マイコンにおける演算の種類は多数存在する。この場合、多数の演算それぞれを実行した場合における演算結果の期待値をメモリに記憶させる必要がある。その結果、異常診断に用いられるメモリ容量が増加してしまう。マイコンが複数備えられるPLCにおいては、各マイコンのメモリ容量が増加してしまうため、異常診断に用いられるメモリ容量の増加が顕著になってしまう。例えば、異常診断の実行頻度が低い場合、異常診断に用いられるメモリ容量が顕著に増加するのは好ましくない。メモリ容量が増加すると、メモリのコストが増加し、ひいてはPLCのコストが増加してしまう。
【0007】
本発明は、上記事情に鑑みてなされたものであり、異常診断に用いられるメモリ容量を削減しつつ、CPUの異常診断を適正に行うことができるプログラマブルロジックコントローラを提供することを主たる目的とするものである。
【課題を解決するための手段】
【0008】
第1の発明は、不揮発性のメモリ、及び前記メモリからプログラムを読み出して演算を行う第1CPUを有する第1マイコンと、
第2CPUを有する第2マイコンと、を備えるプログラマブルロジックコントローラにおいて、
前記プログラムには、前記第1CPU及び前記第2CPUの少なくとも一方に異常が発生しているか否かを診断する診断ルーチンが含まれており、
前記第1CPUにより前記診断ルーチンの実行が開始されることにより、
前記第1CPUは、
オペコードに基づく処理をオペランドに施す第1演算を実行し、
前記第1演算で用いたオペコードを前記第2CPUに対して送信し、
前記第2CPUは、
受信したオペコードに基づく処理をオペランドに施す第2演算を実行し、
前記第2演算の演算結果を前記第1CPUに対して送信し、
前記第1CPUは、
前記第1演算の演算結果と、受信した前記第2演算の演算結果とを比較することにより、前記異常が発生しているか否かを診断し、
前記異常が発生していないと診断した場合、今回の前記第1演算で用いたオペコードに対するインクリメント又はデクリメントを実行することにより生成されたオペコードを、次回の前記第1演算で用いるオペコードとする。
【0009】
第1の発明では、PLCに対する機能安全を実現するための構成として、PLCは、第1,第2マイコンを備えている。第1マイコンを構成するメモリにはプログラムが記憶されており、プログラムには、第1CPU及び第2CPUの少なくとも一方に異常が発生しているか否かを診断する診断ルーチンが含まれている。第1マイコンを構成する第1CPUにより診断ルーチンの実行が開始されると、以下の処理が行われる。
【0010】
第1CPUは、オペコードに基づく処理をオペランドに施す第1演算を実行し、第1演算で用いたオペコードを、第2マイコンを構成する第2CPUに対して送信する。第2CPUは、受信したオペコードに基づく処理をオペランドに施す第2演算を実行し、第2演算の演算結果を第1CPUに対して送信する。
【0011】
第1CPUは、第1演算の演算結果と、受信した第2演算の演算結果とを比較することにより、第1CPU及び第2CPUの少なくとも一方に異常が発生しているか否かを診断する。この場合、複数のオペコードそれぞれに対応する演算結果の期待値をメモリに記憶させておく必要がないため、異常診断に用いられるメモリ容量を削減することができる。
【0012】
ここで、機械語としてのオペコードは、2以上のビット列からなる2進数データで表される。オペコードを構成するビット列のうち、対象となるインクリメントビット(例えば、最下位のビット)にインクリメントを実行する、又は対象となるデクリメントビットにデクリメントを実行することにより新たに生成されたオペコードは、インクリメント又はデクリメント前のオペコードとは異なる演算を規定するものとなる。つまり、ベースとなるオペコードにインクリメント又はデクリメントを実行するといった処理により、診断対象となる別のオペコードを生成することができる。この場合、診断ルーチンにおけるプログラムの行数を短くできる等、診断ルーチンの規模を小さくできる。
【0013】
この点に鑑み、第1CPUは、異常が発生していないと判定した場合、今回の第1演算で用いたオペコードに対するインクリメント又はデクリメントを実行することにより生成されたオペコードを、次回の第1演算で用いるオペコードとする。これにより、診断対象となる演算それぞれを実行した場合における演算結果の期待値をメモリに記憶させる構成や、診断対象となる複数のオペコードのリストデータをメモリに記憶させる構成と比較して、異常診断に用いられるメモリ容量を好適に削減することができる。
【0014】
このように、第1の発明によれば、異常診断に用いられるメモリ容量を削減しつつ、CPUの異常診断を適正に行うことができる。
【0015】
ちなみに、PLCが備えるマイコンは、2つであってもよいし、3つ以上であってもよい。マイコンが3つ以上の場合、例えば、各マイコンのうち1つを第1マイコンとし、残りを第2マイコンとして第1の発明が適用されればよい。
【0016】
ここで、第1の発明は、例えば第2の発明のように具体化することができる。第2の発明では、前記第1CPUは、診断対象となる各オペコードに対する前記第1演算が完了するとの条件が成立するまで、前記インクリメント又は前記デクリメントを繰り返し実行する。
【0017】
第3の発明は、第1又は第2の発明において、前記第1CPUは、前記第1演算で用いたオペコード及びオペランドを前記第2CPUに対して送信し、
前記第2CPUは、前記第2演算として、受信したオペコードに基づく処理を、受信したオペランドに施す演算を実行する。
【0018】
第3の発明によれば、第1演算及び第2演算で用いられるオペランドを共通化することができ、CPUの異常診断精度を高めることができる。
【0019】
第4の発明は、第3の発明において、前記第2マイコンは、不揮発性のメモリを有し、
前記第2マイコンのメモリには、前記診断ルーチンが記憶されていない。
【0020】
第4の発明では、第1,第2マイコンのうち第1マイコンのメモリにのみ診断ルーチンが記憶される。このため、第2マイコンのメモリ容量を削減でき、ひいてはPLCのメモリ容量を好適に削減することができる。
【図面の簡単な説明】
【0021】
図1】一実施形態に係る制御システムの全体構成図。
図2】CPUの異常診断処理の手順を示すフローチャート。
図3】診断対象となる演算を規定するオペコードの一例を示す図。
図4】その他の実施形態に係る診断対象となる演算を規定するオペコードの一例を示す図。
【発明を実施するための形態】
【0022】
以下、本発明に係るPLCを具体化した一実施形態について、図面を参照しつつ説明する。本実施形態のPLCは、ロボットやベルトコンベア等の産業用機器の制御システムを構成する。
【0023】
図1に示すように、PLC100は、第1マイコン10と、第2マイコン20とを備えている。各マイコン10,20は、PLC100が備える筐体に収容されている。
【0024】
制御システムは、入力側機器110と、制御対象機器120とを備えている。制御対象機器120は、例えば、多関節ロボット等の工作機械、及びベルトコンベアを含む。入力側機器110は、例えば、制御対象機器120の状態(例えば、電流、電圧、回転速度)を検出するセンサ、及び制御対象機器120の動作を停止させる非常スイッチを含む。第1マイコン10及び第2マイコン20は、制御対象機器120の制御を行う。
【0025】
第1マイコン10は、第1CPU11、第1RAM12、不揮発性のメモリである第1ROM13、及びインターフェース部として機能する第1通信部14を備えている。第1CPU11は、ALU(Arithmetic Logic Unit)と、内部レジスタとを備えている。本実施形態において、第1ROM13は、フラッシュメモリである。
【0026】
第1ROM13には、第1CPU11により実行されるプログラム等が記憶されている。第1RAM12は、第1CPU11によりプログラムが実行される場合に使用される作業用のメモリである。
【0027】
第2マイコン20は、第2CPU21、第2RAM22、不揮発性のメモリである第2ROM23、及びインターフェース部として機能する第2通信部24を備えている。第2CPU21は、ALUと、内部レジスタとを備えている。本実施形態において、第2ROM23は、フラッシュメモリである。
【0028】
第1マイコン10と第2マイコン20とは、第1通信部14及び第2通信部24を介して、例えばシリアル通信により、相互に通信が可能とされている。
【0029】
本実施形態では、第1ROM13及び第2ROM23のうち第1ROM13のみに、第1CPU11及び第2CPU21のうち少なくとも一方の演算機能に異常が発生しているか否かを診断するための診断ルーチンが記憶されている。第1CPU11により診断ルーチンの実行が開始された場合に異常診断処理が実行される(図2参照)。この処理は、例えば、1時間に1回等、定期的に実行される。
【0030】
診断対象となる演算には、算術演算命令及び論理演算命令等が含まれる。算術演算命令には、加減算命令、乗除算命令、シフト演算命令及び比較命令が含まれる。例えば、加算命令は、第1オペランドと第2オペランドとの間で加算を行う命令である。
【0031】
図3に、本実施形態に係る診断対象となる複数(15個を例示)の演算機能を示す。図3には、演算機能を示す各オペコードに対応するニーモニック、整数演算,浮動小数点演算の場合の演算の意味、及びコンディションフラグを示す。本実施形態において、診断対象となるオペコードは4ビット列からなる2進数データで表され、オペランドは2進数データで表される。ただし、オペコードは、4ビット列に限らず、例えば、3ビット列であってもよいし、5以上のビット列であってもよい。
【0032】
図2に示すように、ステップS10では、第1CPU11は、第1ROM13に記憶されているプログラムのうち診断ルーチンを第1RAM12に書き込み、診断ルーチンを実行する。これにより、異常診断処理が開始される。
【0033】
ステップS11では、第1CPU11は、診断対象となる演算機能を規定する最初のオペコードに基づく処理をオペランドに施す第1演算を実行する。図3を参照すると、最初のオペコードは「0000」である。
【0034】
ステップS12では、第1CPU11は、ステップS11の第1演算で用いたオペコード及びオペランドを、第1通信部14及び第2通信部24を介して第2CPU21に対して送信する。
【0035】
ステップS21では、第2CPU21は、ステップS12の処理により第1CPU11から送信されたオペコード及びオペランドを受信したか否かを判定する。第2CPU21は、受信していないと判定した場合、ステップS20に移行する。
【0036】
第2CPU21は、オペコード及びオペランドを受信したと判定した場合、ステップS22に進む。第2CPU21は、受信したオペコードに基づく処理を、受信したオペランドに施す第2演算を実行する。
【0037】
ステップS23では、第2CPU21は、ステップS22における第2演算の演算結果を、第2通信部24及び第1通信部14を介して第1CPU11に対して送信する。
【0038】
ステップS13において、第1CPU11は、ステップS22における第2演算の演算結果を受信するまで待機する。第1CPU11は、第2演算の演算結果を受信したと判定した場合、ステップS14に進み、ステップS11における第1演算の演算結果と、受信した第2演算の演算結果とを比較する。第1CPU11は、第1演算の演算結果と第2演算の演算結果とが一致していると判定した場合、第1CPU11及び第2CPU21の双方の演算機能が正常であると判定する。一方、第1CPU11は、第1演算の演算結果と第2演算の演算結果とが一致しないと判定した場合、第1CPU11及び第2CPU21のうち少なくとも一方の演算機能に異常が発生していると判定する。
【0039】
具体的には、第1CPU11は、第1演算の演算結果(演算値)と第2演算の演算結果(演算値)との差の絶対値が閾値以下であると判定した場合、演算結果が一致していると判定し、絶対値が閾値よりも大きいと判定した場合、演算結果が一致していないと判定する。閾値は、例えば、ステップS11,S22の演算において発生し得る誤差の最大値に設定されていればよい。
【0040】
第1CPU11は、正常であると判定した場合、ステップS15に進み、対象となる全てのオペコードに対する異常診断が完了したか否かを判定する。図3を参照すると、第1CPU11は、今回のステップS11の第1演算で用いたオペコードが「1110」であると判定した場合、異常診断が完了したと判定する。
【0041】
第1CPU11は、異常診断が完了したと判定した場合、ステップS16に進み、第1通信部14及び第2通信部24を介して第2CPU21に対して診断完了を通知する。その後、第1CPU11は、図2に示す一連の処理を一旦終了する。
【0042】
第2CPU21は、ステップS16の処理により送信された診断完了通知を受信したか否かを判定する。第2CPU21は、診断完了通知を受信していないと判定した場合、ステップS21に進む。一方、第2CPU21は、診断完了通知を受信したと判定した場合、図2に示す一連の処理を一旦終了する。
【0043】
ステップS15において、第1CPU11は、異常診断が完了していないと判定した場合、ステップS17に進み、今回のステップS11の第1演算で用いたオペコードに対するインクリメントを実行する。具体的には、第1CPU11は、オペコードの最下位のビットをインクリメントビットとし、そのインクリメントビットに対する「b0001」のインクリメントを実行する。なお、「b」は2進数であることを示す表記である。その後、第1CPU11は、ステップS11に移行する。これにより、次回のステップS11の第1演算において、インクリメントが実行されたオペコードが用いられる。例えば、今回の第1演算で用いられたオペコードが「0000」である場合、ステップS17の処理により新たに生成されたオペコードは「0001」となり、このオペコードが次回の第1演算に用いられる。
【0044】
一方、第1CPU11は、ステップS14において異常が発生していると判定した場合には、ステップS18に進む。ステップS18では、第1CPU11は、異常が発生した旨を、PLC100に対して上位の制御装置(不図示)に通知する。
【0045】
続くステップS19では、第1CPU11は、第1通信部14及び第2通信部24を介して第2CPU21に対して、診断終了を通知する。
【0046】
ステップS20では、第2CPU21は、ステップS19の処理により送信された診断終了通知を受信したか否かを判定する。第2CPU21は、診断終了通知を受信していないと判定した場合、ステップS21に進む。一方、第2CPU21は、診断終了通知を受信したと判定した場合、図2に示す一連の処理を一旦終了する。つまり、診断対象となる複数の演算機能のうち、途中の診断対象において異常が発生していると判定された場合、異常診断処理が強制的に中断されることとなる。
【0047】
以上説明した本実施形態によれば、以下の効果が得られるようになる。
【0048】
第1CPU11は、ステップS14において異常が発生していないと判定した場合、ステップS15において診断が完了するとの条件が成立するまで、ステップS17において、第1演算で用いたオペコードに対するインクリメントを実行する。第1CPU11は、インクリメントの実行により生成されたオペコードを、次回の第1演算で用いるオペコードとする。これにより、診断対象となる演算それぞれを実行した場合における演算結果の期待値を第1ROM13に記憶させる構成や、診断対象となる複数のオペコードのリストデータを第1ROM13に記憶させる構成と比較して、異常診断に用いられるメモリ容量を好適に削減することができる。これにより、例えば、各マイコン10,20に対して外付けされる不揮発性メモリを備える必要がなくなるため、PLC100の筐体を小型化でき、ひいてはPLC100を小型化することができる。
【0049】
第1CPU11は、ステップS12において、第1演算で用いたオペコード及びオペランドを第2CPUに対して送信する。第2CPUは、ステップS22において、受信したオペコードに基づく処理を、受信したオペランドに施す演算を実行する。これにより、ステップS11の第1演算及びステップS22の第2演算で用いられるオペランドを共通化することができ、CPUの異常診断精度を高めることができる。
【0050】
第1ROM13及び第2ROM23のうち第1ROM13のみに診断ルーチンが記憶されている。これにより、第2マイコン20が備えるべきメモリ容量を削減することができる。
【0051】
<その他の実施形態>
なお、上記実施形態は、以下のように変更して実施してもよい。
【0052】
・第1ROM13に記憶されている複数の演算機能が複数のグループに分けられ、各グループに対して図2に示す異常診断処理が実行されてもよい。図4に、5ビットのオペコードの一例を示す。図4に示す演算機能は、No.1~3の第1グループと、No.4~7の第2グループと、No.8~11の第3グループとに分けられている。
【0053】
第1グループについて異常診断処理が実行される場合、第1CPU11は、図2のステップS17において、オペコードの最下位から3番目のビットをインクリメントビットとし、そのインクリメントビットに対する「b00100」のインクリメントを実行する。
【0054】
第2グループについて異常診断処理が実行される場合、第1CPU11は、ステップS17において、インクリメントビットを第1グループの場合におけるインクリメントビットから変更する。詳しくは、第1CPU11は、オペコードの最下位のビットをインクリメントビットとし、そのインクリメントビットに対する「b00001」のインクリメントを実行する。
【0055】
第3グループについて異常診断処理が実行される場合、第1CPU11は、ステップS17において、オペコードの最下位から3番目のビットをインクリメントビットとし、そのインクリメントビットに対する「b00100」のインクリメントを実行する。
【0056】
・第2ROM23にも上述した診断ルーチンが記憶されていてもよい。この場合、図2に示した第1CPU11側の処理が第2CPU21により実行され、図2に示した第2CPU21側の処理が第1CPU11により実行される。この場合、第2CPU21が第1演算を実行し、第1CPU11が第2演算を実行し、第2CPU21が異常の有無を判定する。
【0057】
・第1CPU11は、図2のステップS17において、今回の第1演算で用いたオペコードの最下位のビットをデクリメントビットとし、そのデクリメントビットに対するデクリメントを実行してもよい。この場合、第1CPU11は、異常診断処理が開始されてからの最初のステップS11において、ベースとなる最初のオペコードを、例えば図3の「1110」とすればよい。
【0058】
・第1マイコン及び第2マイコンを備え、制御対象機器の制御処理及び上述した異常診断処理を行う電子装置としては、プログラマブルロジックコントローラに限らない。
【符号の説明】
【0059】
10,20…第1,第2マイコン、11,21…第1,第2CPU、13,23…第1,第2ROM、100…PLC。
図1
図2
図3
図4