JP7379875B2 - 制御装置およびその保守支援装置 - Google Patents

制御装置およびその保守支援装置 Download PDF

Info

Publication number
JP7379875B2
JP7379875B2 JP2019111527A JP2019111527A JP7379875B2 JP 7379875 B2 JP7379875 B2 JP 7379875B2 JP 2019111527 A JP2019111527 A JP 2019111527A JP 2019111527 A JP2019111527 A JP 2019111527A JP 7379875 B2 JP7379875 B2 JP 7379875B2
Authority
JP
Japan
Prior art keywords
execution
cycle
function
definition table
control device
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2019111527A
Other languages
English (en)
Other versions
JP2020204844A (ja
Inventor
孝雄 澤田
章弘 小高
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fuji Electric Co Ltd
Original Assignee
Fuji Electric Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fuji Electric Co Ltd filed Critical Fuji Electric Co Ltd
Priority to JP2019111527A priority Critical patent/JP7379875B2/ja
Publication of JP2020204844A publication Critical patent/JP2020204844A/ja
Application granted granted Critical
Publication of JP7379875B2 publication Critical patent/JP7379875B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Description

本発明は、OSを使用しない定周期割り込みのプログラムを実行する制御装置およびその保守支援装置に係り、特に複数のプログラムの実行シーケンスが正常か否かを監視することのできる制御装置およびその保守支援装置に関する。
一般に、車載機器(モータ駆動装置)などの制御装置では、OSは使用されず、異なる優先順位の定周期割込みで動作するプログラムが複数実装される。このような制御装置のプログラムの実行監視には、ウォッチドッグタイマ(WDT)が用いられることが多い。このとき、ハードウェアのウォッチドッグタイマは通常は装置に1個のみであるため、複数の定周期割込みプログラムの実行監視には、各プログラムに対応してソフトウェアカウンタが設けられる。そして、各定周期割り込みプログラムの実行時に、対応するソフトウェアカウンタを更新し、このソフトウェアカウンタが定期的に更新されているか否かを確認することで監視を行う。
この場合、各定周期割込み処理が監視時間内に動作しているか否かの確認はできるものの、実行シーケンスの監視、即ち各定周期が正しい順序で動作しているか否かの監視はできない。実行シーケンスの監視に関しては下記の先行技術がある。
特許文献1では、プログラム内のモジュールの予想経路と実際に動作した経路を比較して実行経路を検証する方法が提案されている。特許文献2では、プログラム内のモジュールのシーケンス番号と処理時間を対応付けて管理を行い、予めシーケンス番号と処理時間を対応付けた情報をテーブルに格納しておき、実際に動作したモジュールのシーケンス(順番)が予め格納した順番と一致するかどうか、および処理時間が所定時間以内であるかを検証する方法が提案されている。また、特許文献3では、関数の実行履歴をメモリに記録しておき、例えば、正常動作時(過去)とエラー発生時(今回)の関数の実行履歴を比較することで、プログラムの動作の差異を発見することを可能とするプログラム動作比較方法が提案されている。
特開昭63-244239号公報 特許第5493929号公報 特開2009-244969号公報
しかしながら、特許文献1、2では、制御装置のプログラム構成全体を考慮したものではなく、例えば、制御装置のプログラムが、複数の優先順位の異なる定周期割込みのプログラムから構成されている場合については開示されていない。特許文献3では、プログラムの過去の実行履歴と現在の実行履歴を比較して検証を行う方式であり、実行履歴同士を比較するものである。このため、単に実行履歴の違いを検出できるに留まり、過去の実行履歴が正しいという保証は無い。また、特許文献3の技術によると、実行履歴の記録対象の関数がプログラム実行中に呼び出される全ての関数となるため、実行履歴記録用のメモリ領域が大量に必要になる。また、関数の実行履歴の記録有無、および比較対象とする実行履歴の範囲は外部ツールからの指示(例えば、デバッガからの指示)による制御が必要と考えられる。従って、デバッガと組み合わせて実現するような用途には適しているものの、制御装置内で動作しているプログラムで常時実行シーケンスの監視を行うような場合には上記のメモリ領域やデバッガの問題を解決する必要がある。
本発明は、上述のかかる事情に鑑みてなされたものであり、定周期処理プログラムの処理時間の監視を行うのみならず、シーケンス通りに実行されていることを効率よく監視することのできる制御装置およびその保守支援装置を提供することを目的とする。
上記の目的を達成するため、本発明では主に次の(1)~(10)の特徴的な構成および処理によって、実行シーケンスの監視を行う。
(1)実行シーケンスをチェックする対象関数を定義するテーブル(定義テーブル)を用意し、予め当該テーブルに対象関数の情報(関数のシンボル名、先頭アドレス、終了アドレス等)を登録する。
(2)定義テーブルを作成する際は、作業を効率化するために、支援ツールを用意する。例えば、コンパイル・リンク時に出力されるMAPファイルを自動参照して、関数リストを表示し、選択した関数情報を定義テーブルに登録する手段を設ける。
(3)定義テーブルは周期別に作成できるようにする。そして、周期ごとに属性情報(動作周期、優先順位、実行間隔時間の許容値)の設定を行う。
(4)作成した定義テーブルを制御装置のメモリに書き込む手段を設ける。
(5)実行履歴を記録する処理は、コンパイラの機能を利用して制御装置内のプログラム動作時に呼び出される関数のreturn文実行時に呼び出すように置き換える。
(6)実行履歴を記録する処理は、定義テーブルを参照して、登録されている関数であれば実行履歴(関数の識別情報、タイムスタンプ等)をメモリに保存する。
(7)定義テーブルに登録されている関数の順番と実行履歴とを比較して、実行シーケンス通りに実行されていることを監視する実行シーケンス監視手段(監視手段)を設ける。
(8)前記監視手段は、さらに実行関数の周期処理の優先順位を参照して、周期処理間の実行シーケンスが正しいことを監視する。
(9)前記監視手段は、さらに実行履歴のタイムスタンプより、各周期の時間内で処理が終了していることを監視する。
(10)前記監視手段は、実行シーケンス異常と判断した場合は、エラーであることを通知(表示)する手段を設ける。
具体的には、本発明に係る制御装置は、
複数の定周期処理プログラムを実行する制御装置であって、
前記定周期処理プログラムの実行周期ごとに、各実行周期に属する監視対象の定周期処理プログラムの識別情報を実行順序識別可能に登録した定義テーブルと、
前記定周期処理プログラムの実行履歴をメモリに記録する記録手段と、
前記実行履歴に基づいて、複数の前記定周期処理プログラムが前記定義テーブルに定めた実行順序で動作しているか否かを実行周期ごとに監視して異常を検知する監視手段と、
を備え
前記定義テーブルは、実行周期ごとに、該実行周期で動作する定周期処理プログラムの実行間隔に関する第1の閾値を含み、
前記監視手段は、前記実行履歴に基づいて、所定の実行順位の定周期処理プログラムの前回実行時刻と今回実行時刻との差が前記第1の閾値以上になると異常を検知することを特徴とする。
本発明では、OSを使用せず、複数の優先順位の異なる定周期処理プログラムを実行する制御装置において、制御装置内のプログラムの実行履歴を記録する一方、当該実行履歴と予め実行シーケンスを定義した内容とを比較することで、正しい実行シーケンスで動作しているか否かを監視する。実行シーケンス(順番)通りに動作していることを確認することで、制御装置の安全性が向上する。
また、定義テーブルに登録した定周期処理プログラム(関数)のみを監視対象とし、メモリ内の実行履歴を記録する領域をリングバッファで構成することによって、実行履歴を記録するメモリ領域を節約することができる。
さらに、監視手段が異常を検知したときにエラーを通知する手段を設けることで、エラー発生時に安全対策を実施することが可能となり、安全を担保することができる。
なお、定義テーブルには、実行周期ごとに定められた優先順位も登録しておき、監視手段は、実行履歴に基づいて、複数の定周期処理プログラムが定義テーブルに定められた優先順位で実行されているか否かを監視して異常を検知するのが好ましい。
好ましくは、前記定義テーブルは、実行周期ごとに、該実行周期で動作する定周期処理プログラムのうち、実行順序が最終の定周期処理プログラムが動作してから、実行順序が最先の定周期プログラムが動作するまでの実行間隔に関する第2の閾値を含み、
前記監視手段は、前記実行履歴に基づいて、所定の実行順位の定周期処理プログラムの前回実行時刻と今回実行時刻の差が前記第2の閾値以下になると異常を検知するという構成にするのが良い。
実行シーケンス(順番)通りかつ規定時間内で動作していることを確認することで、制御装置の安全性をさらに向上させることができる。
なお、前記記録手段は、前記定周期処理プログラムの特定の命令文が実行されることにより起動することにより、効率的に実行履歴の記録処理を行うことができる。
好ましくは、前記定周期処理プログラムは、前記特定の命令文をreturn文にするのがよい。これにより、プログラムコードに実行履歴を記録する処理の呼び出しを直接記述する必要がなくなり、保守性の向上や柔軟な対応が可能となる。
また、本発明に係る保守支援装置は、
上記の制御装置と通信可能な保守支援装置であって、
前記定周期処理プログラムコンパイル時のMAPファイルと登録画面を通して入力された情報から前記定義テーブルを生成する手段と、
生成した前記定義テーブルを前記制御装置へ転送する手段と、
を備えたことを特徴とする。
これにより、実行シーケンスを変更する際に、プログラムコードの変更をする必要が無く、柔軟な対応が可能となる。
本発明によれば、実行周期に基づいて割り込み優先順を定め、保守支援装置側で実行周期ごとに定周期処理プログラムの実行順序を規定した定義テーブルを生成し、この定義テーブルを制御装置へ転送する。制御装置は、定周期プログラムの実行履歴を保存する一方、実行履歴と定義テーブルの内容とを比較することにより、実行シーケンスの監視を効率よく行うことができる。
また、定義テーブルおよび実行履歴に時間情報を追加することにより、実行シーケンスに加え、定周期処理プログラムの処理時間や実行間隔の監視を行うことができる。さらに、予め実行シーケンスを定義したプログラムのみ実行履歴を記録することにより、メモリの使用量を節約できる。このため、限られたメモリ資源の制御装置においても、その運用中に常時監視が可能となり、制御装置の安全性が担保される。
本発明の実施の形態による制御装置およびその保守支援装置の機能ブロック図である。 図1の実行シーケンス監視対象関数定義テーブルのデータ構成図である。 図1の実行履歴記録領域に保存される関数実行履歴情報のデータ構成図である。 図1の関数実行履歴記録処理の手順を示すフローチャートである。 図2の実行シーケンス監視対象関数定義テーブルのデータに基づくプログラム実行シーケンス例を示す説明図である。 図5の実行シーケンスの実行履歴情報例を示す図である。 図1の実行シーケンス監視処理の手順を示すフローチャートである。 図7のステップS206で検出される実行シーケンスの異常パターンの例を示す説明図である。 図7のステップS206で検出される実行シーケンスの異常パターンの他の例を示す説明図である。 図7のステップS207で検出される実行シーケンスの異常パターンの例を示す説明図である。 図9の実行シーケンスの関数実行履歴情報の例を示す説明図である。 図7のステップS208で検出される実行シーケンスの異常パターンの例を示す説明図である。 図11の実行シーケンスの関数実行履歴情報の例を示す説明図である。 図7のステップS215~S217で検出される実行シーケンスの異常パターンの例を示す説明図である。 図13の実行シーケンスの関数実行履歴情報の例を示す説明図である。
以下、本発明の実施の形態について図面を参照しながら説明する。制御装置として、リアルタイム性の要求される車載機器を例にする。車載機器用のプログラムは、例えばC言語を用いた複数の関数で構築することができる。
図1に示すように、本実施の形態では、車載機器1の保守や開発支援を行う保守支援装置5において、実行シーケンスの監視に必要な情報を登録した実行シーケンス監視対象関数定義テーブル(以下、「定義テーブル」という。)21を作成し、これを車載機器1へ転送する。車載機器1は、この定義テーブル21を参照しながら、車載機器1上で動作する複数の定周期処理プログラムの実行シーケンス監視を行う。
保守支援装置5は、汎用のコンピュータ装置(以下、単に「PC」という。)で実現することができる。車載機器1と保守支援装置5との間は、CAN(Controller Area Network)等のシリアル通信I/Fを用いてデータの送受信を行う。
車載機器1のプログラムは定周期処理を実行する複数のプログラム(以下、本実施の形態において「関数」ともいう。)11~13、実行シーケンス監視処理プログラム14、および関数実行履歴記録処理プログラム15から構成される。本実施形態では、定周期処理として、A周期処理、B周期処理、C周期処理(例えば、A周期=1ms、B周期=2ms、C周期=3ms)の3種類として説明するが、周期の数や長さはこれに限られない。ここで、A周期処理11は、A周期で実行される関数である。B周期処理、C周期処理についても同様である。
車載機器1のメモリ空間は、データ(ROM)領域20、データ(RAM)領域30、プログラム(ROM)領域10に割り付けられる。データ(ROM)領域20には定義テーブル21が保存される。データ(RAM)領域30には、定周期処理プログラム(関数)の実行履歴が記録される領域である実行履歴記録領域31が配置される。またプログラム(ROM)領域10には、車載機器の機能を実現する各定周期処理プログラム(関数)、定周期プログラム(関数)の実行履歴を実行履歴記録領域31に保存する関数実行履歴記録処理プログラム15、および定義テーブル21の内容と実行履歴とを比較して監視を行う実行シーケンス監視処理プログラム14が格納される。
(定義テーブル21の作成方法)
次に、保守支援装置5側での定義テーブル21の作成方法について説明する。
図1に示すように、定義テーブル21を作成は、保守支援装置5のディスプレイに表示される実行シーケンス監視登録画面51を通して行われる。ユーザは、この画面を通して、定義テーブル21の作成に必要な情報を登録する。実行シーケンス監視登録画面51は、周期毎に関数を登録する画面領域54を有し、定義テーブル21に対する読出しおよび書込みを行うためのボタン52,53が設けられている。
また、保守支援装置5は制御装置1で実行される関数のMAPファイル61を備えている。このMAPファイル61は一般にプログラムコードのコンパイル・リンク時に生成・出力されるファイルであり、例えば関数シンボル名、エントリアドレス、サイズ等の情報を含んでいる。このMAPファイル61の内容を参照することにより、効率的に定義テーブル21に関数情報を登録することができる。
図2に定義テーブル21の構成例を示す。
当該定義テーブル21は周期別のテーブル21a~21cで構成される。図2にはA周期用テーブル21a、B周期用テーブル21b、C周期用テーブル21cの3種類のテーブルが示されている。
以下、定義テーブル21(21a~21c)の項目例について簡単に説明する。
1)登録数:当該周期内で実行シーケンスの監視対象として登録した関数の数
2)周期:当該周期の時間
3)優先順位:当該周期処理の動作優先順位(優先レベル)。図2では最小の番号(優先順位:1)の優先順位が最も高いことを示す。
4)前回先頭~今回先頭関数許容最長実行間隔:当該周期テーブル内の最初に登録した関数(最初に実行される関数)の前回の実行時刻と今回の実行時刻の差(実行間隔)の閾値。後述する実行シーケンス監視処理手順により、実行間隔がこの閾値を超えた場合は実行シーケンス異常と判定される。
5)前回最後~今回先頭関数許容最短実行間隔:当該周期テーブル内の最後に登録した関数(最後に実行される関数)の前回周期での実行時刻と、最初に登録した関数(最初に実行される関数)の今回周期での実行時刻の差の閾値。実行履歴に基づいて実際の間隔がこの閾値以下の場合は実行シーケンス異常と判定される。
6)関数シンボル名:当該周期内で実行シーケンスの監視対象とする関数名
7)関数先頭アドレス:当該周期内で実行シーケンスの監視対象とする関数の先頭アドレス
8)関数終端アドレス:当該周期内で実行シーケンスの監視対象とする関数の終端アドレス
9)識別番号(実行番号):当該周期内で実行シーケンスの監視対象とする関数の識別番号。識別番号は実行順の番号とし、登録順に連番とする。保守支援装置5の実行シーケンス監視登録画面を通して、全ての周期テーブルでユニークな番号が付される。
保守支援装置5で作成された定義テーブル21は、通信I/F経由から車載機器1へ転送され、車載機器1のデータ(ROM)領域20に書き込まれる。
各定周期処理(A周期処理、B周期処理、C周期処理)は、定義テーブル21に登録されている関数実行時に当該実行情報を実行履歴記録領域31に記録する。実行シーケンス監視処理プログラム14は、後述する手順により、定義テーブル21と実行履歴記録領域31の内容を比較し、実行シーケンスの正常/異常を判断する。
図3は、車載機器1の実行履歴記録領域31に記録される関数実行履歴情報の例である。実行される関数ごとに、関数シンボル名、識別番号、優先順位、およびタイムスタンプが互いに関連付けられて意保存される。
以下、各項目について簡単に説明する。
1)関数シンボル名:実行関数のシンボル名
2)識別番号:実行シーケンス監視対象関数定義テーブルに設定されている、当該実行関数の識別番号(実行番号)
3)優先順位:実行シーケンス監視対象関数定義テーブルに設定されている、当該周期処理の動作優先順位
4)タイムスタンプ:定義テーブル21に設定されている、当該関数が実行された時のタイムスタンプ(時間情報)。(ここでは単位は規定しない)
(関数実行履歴記録処理)
関数実行履歴記録処理プログラム15は、関数が実行されたときに、図3に示す関数実行履歴情報(関数シンボル名、識別番号、優先順位、タイムスタンプ)を実行履歴記録領域31へ記録する。実行履歴記録領域31の構造はリングバッファとするのが好ましい。当該領域31のサイズは各周期処理での実行履歴記録数と実行シーケンス監視を行うタイミングを考慮して、オーバーフローしないサイズを確保する。
関数実行履歴記録処理プログラム15の呼び出し(起動)タイミングは、関数の特定のコードを読み出したときである。例えば、プログラムコードがC言語で記述される場合、対象関数のreturn文が実行されるタイミングで呼ばれる構成とすることができる。この場合、C言語コンパイラのプリプロセッサ機能を利用して、return文を関数実行履歴記録処理プログラム15を呼び出すマクロに置き換えることができる。マクロ置換の具体例を下記に示す。この方法により、制御処理のプログラムコードでは関数実行履歴記録処理プログラム15の呼び出しを記述する必要がなくなる。
マクロ置換の具体例:#define return trace_func(); return
ここで、trace_func()は関数実行履歴記録処理プログラム15の関数である。
次に、図4を用いて関数実行履歴記録処理プログラム15の手順を説明する。
図4において、関数実行履歴記録処理は起動されると、まず実行履歴記録領域の格納ポインタをセットする(ステップS101)。そして、タイムスタンプと関数復帰アドレスを取得する(ステップS102,S103)。その後、関数復帰アドレスをもとに以下に述べる定義テーブル21の検索処理を実行する(ステップS104)。
まず、定義テーブル21に当該関数の登録が有るか否かを判定し(ステップS105)、登録がある場合は、実行履歴記録領域31へ関数シンボル名、関数識別番号、優先順位、タイムスタンプを記録する(ステップS106~S109)。そして実行履歴記録領域31の格納ポインタを更新する。なお、格納ポインタは所定の値に到達すると初期値にリセットされる。
上記の処理手順により、定周期プログラムが起動されるごとに、return文の実行タイミングで関数実行履歴記録処理も実行され、監視対象の関数の実行履歴のみが実行履歴記録領域31に保存される。
図2の定義テーブル21に基づいたブログラム実行シーケンスの例を図5に示す。
図2において、各関数群は、A周期処理(1ms)、B周期処理(2ms)、C周期処理(3ms)の定周期処理で、動作優先順位はA周期処理>B周期処理>C周期処理に設定されている。同時に動作可能状態となった場合は、優先順位の高い処理が動作する。例えば、図5の(a)時点でA周期処理、B周期処理、C周期処理が動作可能な場合、優先順位の最も高いA周期処理が先に動作する。そして、A周期処理の終了後に、次に優先順位の高いB周期処理が遅延して動作を開始する。B周期処理終了後、(b)時点では、C周期処理は待ち状態にあるものの、A周期の実行タイミングも到来しているので、優先順位の高いA周期処理が再び動作状態となるため、A周期処理の終了後にC周期処理が遅延して動作する。なお、実行シーケンスの安定動作のためには、実行周期の短い処理に高い優先順位を割り付けるのが効果的である。
上述した関数実行履歴記録処理プログラム15により、図5の実行シーケンスに示す実行順番に関数の実行履歴が実行履歴記録領域31に記録される。このときの実行履歴記録領域31のデータ例を図6に示す。
(実行シーケンス監視処理)
次に、車載機器1で実行される実行シーケンス監視処理プログラム14の手順について説明する。
図7は、実行シーケンス監視処理プログラム14の手順を示すフローチャートである。以下に処理手順の概要を説明する。
実行シーケンス監視処理プログラム14は、一定の周期で起動されると、まず実行履歴記録領域31から関数実行履歴情報を読出し(ステップS201)、データ(RAM)領域30に、周期別に履歴情報を一時的に保存する領域を設ける(ステップS202)。そして、当該周期の履歴一時領域に実行番号、優先順位を保存し、保存個数を更新する(ステップS203)。
その後、周期別の履歴保存個数が定義テーブル21の当該周期処理の関数登録数と同じであれば、履歴一時領域と定義テーブル21の内容同士を比較する(ステップS204~S205)。
ステップS205の比較結果が一致、即ち実行順番が定義テーブル21の登録内容(順番)と同じであれば(ステップS206で「YES」)、次に当該周期処理が定義テーブル21に設定されている規定時間を満たしているか否かを判定する(ステップS207~S208)。ここで、ステップS207は、周期別に先頭関数のタイムスタンプの前回値と今回値の差分が設定値(関数許容最長実行間隔)以下か否かを判定することにより、周期性が維持されているかどうかを監視する。ステップS208は、周期別に前回最後の関数のタイムスタンプと今回先頭の関数のタイムスタンプとの差分が設定値(関数の許容最短実行間隔)よりも長いか否かを判定することによって、処理が渋滞傾向にあるかどうかを監視する。
ステップS206~S208の判定処理において条件を満たしていれば、実行シーケンスは正常とみなし、今回の先頭の関数実行番号,最後の関数実行番号,および優先順位を前回値として保存する(ステップS209)。そして、当該周期の履歴一時領域と保存個数をクリアする(ステップS210)。
ステップS210の後、エラー有無を判断し(ステップS212)、エラーが無ければ、実行履歴情報ポインタを更新し(ステップS213)、実行履歴情報が残っている場合は(ステップS214で「NO」)、ステップS201に戻って処理を繰り返す。一方、ステップS214で実行履歴情報が残っていない場合は処理を終了する。
ステップS206で比較結果が一致しない場合、即ち実行順番が定義テーブル21の登録内容と異なる場合、またはステップS207,S208で規定時間を満たさない場合は、実行シーケンス異常と判定し、エラー情報を設定して終了する(ステップS211~S12)。
ステップS204で周期別の履歴一時領域の保存個数が定義テーブル21の登録数と一致しない場合は、直前の実行関数の優先順位や実行番号をもとに優先順位通りに実行されているか否かの判定を行う(ステップS215~S217)。
具体的には、ステップS215では実行履歴にある直前の関数の優先順位と現在の関数の優先順位とが同一である場合は同一優先順位内での関数が連続して実行されているとみなし、正常と判断する。同一でない場合は、実行シーケンス異常の可能性があるとみなし、ステップS216へ移行する。ステップS216では実行履歴の直前の関数が現在の関数の優先順位より低い場合は正常とみなす。高い場合は、実行シーケンス異常の可能性があるとみなしてステップS217へ移行する。ステップS217では実行履歴の直前の関数の実行番号が最後である場合は正常とみなす。最後でない場合は、優先順位の低い関数が優先順位の高い最後の関数が実行される前に優先的に実行されているため、実行シーケンス異常とみなす。
ステップS215~S217において、それぞれ正常であると判断した場合は、実行シーケンスは正常とみなして、現在の実行番号と優先順位を直前の値として保存した後、実行履歴情報ポインタを更新する(ステップS219,S220)。そして、実行履歴情報が残っている場合は(ステップS221で「NO」)、ステップS201に戻って処理を繰り返し、残っていない場合は終了する。
ステップS215~S217の判定処理のいずれの条件も満たさなかった場合は、実行シーケンス異常(優先順位通りに実行されていない)と判定して、エラー情報を設定して処理を終了する(ステップS218,S212)。
実行シーケンス監視処理プログラム14は、以上の処理手順によって実行シーケンス異常を検出する。
(実行シーケンス異常検出の具体例)
実行シーケンス監視処理プログラム14で、異常と判定する実行シーケンスの例を図8A、図8B、図9~図13に示す。
まず、図8A(a)は、B周期処理の先頭の番号(識別番号4)が抜けているケースである。図8A(b)は、B周期処理の最後の番号(識別番号8)が抜けているケースである。図8B(c)は、B周期処理の間の番号(識別番号6)が抜けているケースである。図8B(d)は、B周期処理の番号がB周期用テーブル21bに登録した順番どおりでないケースである。これら図8A(a)(b)、図8B(c)(d)に示す各実行シーケンス例はB周期処理の関数実行順番が定義テーブル21(B周期用テーブル21b)の登録内容と異なるため、図7のステップS206で「NO」の判定となり、実行シーケンス異常が検出される。
次に、図9,図11,図13の実施例に示す実行シーケンスに対応する関数実行履歴情報をそれぞれ図10,図12,図14に示す。なお、本実施例において、時間間隔関連の設定は以下とする。
タイムスタンプの単位:1count=2.5us
A周期用の前回先頭~今回先頭関数許容最長実行間隔の設定値:1.5ms(600count)
A周期用の前回最後~今回先頭関数許容最短実行間隔の設定値:0.1ms(40count)
B周期用の前回先頭~今回先頭関数許容最長実行間隔の設定値:3ms(1200count)
B周期用の前回最後~今回先頭関数許容最短実行間隔の設定値:0.5ms(200count)
C周期用の前回先頭~今回先頭関数許容最長実行間隔の設定値:4.5ms(1800count)
C周期用の前回最後~今回先頭関数許容最短実行間隔の設定値:0.5ms(200count)
まず、図9、図10に示す実行シーケンス例はB周期処理の前回と今回の先頭関数の実行間隔が規定値を超える。すなわち、識別番号4の関数に着目すると、図10の関数実行履歴情報において、NO.4とNO.18の履歴のタイムスタンプの差分T1(1250)が、図2のB周期用テーブル21bの前回先頭~今回先頭関数許容最長実行間隔の設定値(3ms:1200)よりも大きくなる。このため図7のステップS207で「NO」の判定となり、実行シーケンス異常が検出される。
図11、図12に示す実行シーケンス例はC周期処理の前回の最後の関数と今回の先頭の関数の実行間隔が規定値より短い。すなわち、識別番号13と識別番号9の関数に着目すると、図12の関数実行履歴情報において、NO.27とNO.28の履歴のタイムスタンプの差分T2(50)が、図2のC周期用テーブル21cの前回最後~今回先頭関数許容最短実行間隔の設定値(0.5ms:200)以下になる。このため、図7のステップS208で「NO」の判定となり、実行シーケンス異常が検出される。
図13、図14に示す実行シーケンス例はB周期処理の実行途中でB周期処理よりも優先順位の低いC周期処理が実行されている。すなわち、識別番号5と識別番号13の関数に着目すると図14のNO.20とNO.21の履歴で、NO.21のC周期用関数の直前のNO.20のB周期用関数が登録関数の最後ではなく、B周期よりも優先順位の低いC周期用の関数が途中で実行されている。このため、図7のステップS215~S217ですべて「NO」の判定となり、実行シーケンス異常が検出される。
以上、本実施の形態によれば、実行周期に基づいて割り込み優先順を定め、保守支援装置側で実行周期ごとに定周期処理プログラム(関数)の実行順序を規定した定義テーブルを生成し、この定義テーブルを制御装置へ転送する。制御装置は、定周期プログラム(関数)の実行履歴を保存する一方、実行履歴と定義テーブルの内容とを比較することにより、実行シーケンスの監視を効率よく行うことができる。
また、定義テーブルおよび実行履歴に時間情報を追加することにより、実行シーケンスに加え、定周期処理プログラム(関数)の処理時間や実行間隔の監視を行うことができる。さらに、予め実行シーケンスを定義したプログラムのみ実行履歴を記録することにより、メモリの使用量を節約できる。このため、限られたメモリ資源の制御装置においても、その運用中に常時監視が可能となり、制御装置の安全性が担保される。
1 制御装置(車載機器)
5 保守支援装置
10 プログラム(ROM)領域
11~13 定周期処理プログラム(関数)
14 実行シーケンス監視処理プログラム(監視手段)
15 関数実行履歴記録処理プログラム(記録手段)
20 データ(ROM)領域
21 実行シーケンス監視対象関数定義テーブル(定義テーブル)
21a A周期用テーブル
21b B周期用テーブル
21c C周期用テーブル
30 データ(RAM)領域
31 実行履歴記録領域
51 実行シーケンス監視登録画面
61 MAPファイル

Claims (7)

  1. 複数の定周期処理プログラムを実行する制御装置であって、
    前記定周期処理プログラムの実行周期ごとに、各実行周期に属する監視対象の定周期処理プログラムの識別情報を実行順序識別可能に登録した定義テーブルと、
    前記定周期処理プログラムの実行履歴をメモリに記録する記録手段と、
    前記実行履歴に基づいて、複数の前記定周期処理プログラムが前記定義テーブルに定めた実行順序で動作しているか否かを実行周期ごとに監視して異常を検知する監視手段と、
    を備え
    前記定義テーブルは、実行周期ごとに、該実行周期で動作する定周期処理プログラムの実行間隔に関する第1の閾値を含み、
    前記監視手段は、前記実行履歴に基づいて、所定の実行順位の定周期処理プログラムの前回実行時刻と今回実行時刻との差が前記第1の閾値以上になると異常を検知することを特徴とする制御装置。
  2. 前記定義テーブルは、前記実行周期ごとに定められた優先順位を含み、
    前記監視手段は、前記実行履歴に基づいて、複数の前記定周期処理プログラムが前記定義テーブルに定められた優先順位で実行されているか否かを監視して異常を検知することを特徴とする請求項1に記載の制御装置。
  3. 前記定義テーブルは、実行周期ごとに、該実行周期で動作する定周期処理プログラムのうち、実行順序が最終の定周期処理プログラムが動作してから、実行順序が最先の定周期プログラムが動作するまでの実行間隔に関する第2の閾値を含み、
    前記監視手段は、前記実行履歴に基づいて、所定の実行順位の定周期処理プログラムの前回実行時刻と今回実行時刻の差が前記第2の閾値以下になると異常を検知することを特徴とする請求項1又は2に記載の制御装置。
  4. 前記記録手段は、前記定周期処理プログラムの特定の命令文が実行されることにより起動することを特徴とする請求項1~のいずれか一項に記載の制御装置。
  5. 前記特定の命令文はreturn文であることを特徴とする請求項に記載の制御装置。
  6. 前記メモリ内の前記実行履歴を記録する領域はリングバッファで構成されていることを特徴とする請求項1~のいずれか一項に記載の制御装置。
  7. 請求項1~のいずれか一項に記載の制御装置と通信可能な保守支援装置であって、
    前記定周期処理プログラムコンパイル時のMAPファイルと登録画面を通して入力された情報から前記定義テーブルを生成する手段と、
    生成した前記定義テーブルを前記制御装置へ転送する手段と、
    を備えたことを特徴とする保守支援装置。
JP2019111527A 2019-06-14 2019-06-14 制御装置およびその保守支援装置 Active JP7379875B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2019111527A JP7379875B2 (ja) 2019-06-14 2019-06-14 制御装置およびその保守支援装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019111527A JP7379875B2 (ja) 2019-06-14 2019-06-14 制御装置およびその保守支援装置

Publications (2)

Publication Number Publication Date
JP2020204844A JP2020204844A (ja) 2020-12-24
JP7379875B2 true JP7379875B2 (ja) 2023-11-15

Family

ID=73838401

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019111527A Active JP7379875B2 (ja) 2019-06-14 2019-06-14 制御装置およびその保守支援装置

Country Status (1)

Country Link
JP (1) JP7379875B2 (ja)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009113618A (ja) 2007-11-06 2009-05-28 Nsk Ltd 電動パワーステアリング装置
JP2014059846A (ja) 2012-09-19 2014-04-03 Fuji Electric Co Ltd プログラム異常検出装置、そのプログラム
JP2014206821A (ja) 2013-04-11 2014-10-30 富士電機株式会社 安全関連装置、そのプログラム
JP2017224304A (ja) 2014-09-25 2017-12-21 日本精工株式会社 車載用電子機器の制御装置及び制御方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0322040A (ja) * 1989-06-19 1991-01-30 Fuji Electric Co Ltd プログラムデバッグ支援方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009113618A (ja) 2007-11-06 2009-05-28 Nsk Ltd 電動パワーステアリング装置
JP2014059846A (ja) 2012-09-19 2014-04-03 Fuji Electric Co Ltd プログラム異常検出装置、そのプログラム
JP2014206821A (ja) 2013-04-11 2014-10-30 富士電機株式会社 安全関連装置、そのプログラム
JP2017224304A (ja) 2014-09-25 2017-12-21 日本精工株式会社 車載用電子機器の制御装置及び制御方法

Also Published As

Publication number Publication date
JP2020204844A (ja) 2020-12-24

Similar Documents

Publication Publication Date Title
JP5093259B2 (ja) Biosとbmcとの間の通信パス強化方法、その装置及びそのプログラム
JP2007157131A (ja) ガベージ・コレクション対応の仮想マシンにおいて、将来のメモリ不足例外を自動予測する方法、コンピュータ読み取り可能な媒体、及びコンピューティング・デバイス
CN111026601A (zh) Java应用系统的监控方法、装置、电子设备及存储介质
CN110109741B (zh) 循环任务的管理方法、装置、电子设备及存储介质
CN114328102A (zh) 设备状态监控方法、装置、设备及计算机可读存储介质
CN107179982B (zh) 一种跨进程调试方法和装置
US20140136570A1 (en) Controller and program
JP7379875B2 (ja) 制御装置およびその保守支援装置
JP2010102454A (ja) 情報処理装置、情報処理プログラム
CN116126832A (zh) 数据库切换方法、切换装置、电子设备及存储介质
CN113342376B (zh) 一种针对物联网设备的操作系统进行升级的方法及装置
JP2009048358A (ja) 情報処理装置及びスケジューリング方法
JP5627414B2 (ja) 動作ログ収集システム及びプログラム
JP2022093876A (ja) 制御装置およびその保守支援装置
CN114168389A (zh) Cad文件的恢复方法、装置、存储介质及处理器
CN114661432A (zh) 任务调度方法、装置、设备及存储介质
CN111221701A (zh) 一种芯片及其电路逻辑重构系统
CN111563000A (zh) 一种文件生成方法、智能终端及存储介质
JP2004185345A (ja) デバッグ方法およびシステム
JP2008090699A (ja) トレースロギング方法、装置及びプログラム
KR102497257B1 (ko) 오토사 플랫폼의 메인 기능과 태스크의 매핑 방법
KR102102599B1 (ko) 사물인터넷 디바이스의 제어 소프트웨어 검증 장치 및 그 방법
JP4941309B2 (ja) システム管理プログラムおよびシステム管理装置
CN114625601A (zh) 任务监控方法、记录介质以及计算机装置
JP2009123108A (ja) 情報処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220516

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230222

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230418

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230615

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20231003

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20231016

R150 Certificate of patent or registration of utility model

Ref document number: 7379875

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150