JP2005332030A - コントローラ - Google Patents

コントローラ Download PDF

Info

Publication number
JP2005332030A
JP2005332030A JP2004147534A JP2004147534A JP2005332030A JP 2005332030 A JP2005332030 A JP 2005332030A JP 2004147534 A JP2004147534 A JP 2004147534A JP 2004147534 A JP2004147534 A JP 2004147534A JP 2005332030 A JP2005332030 A JP 2005332030A
Authority
JP
Japan
Prior art keywords
program
information
error
trace
storage unit
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.)
Granted
Application number
JP2004147534A
Other languages
English (en)
Other versions
JP4558376B2 (ja
Inventor
Naoyuki Kudo
直之 工藤
Kenichi Yonemoto
賢一 米本
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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2004147534A priority Critical patent/JP4558376B2/ja
Publication of JP2005332030A publication Critical patent/JP2005332030A/ja
Application granted granted Critical
Publication of JP4558376B2 publication Critical patent/JP4558376B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Testing And Monitoring For Control Systems (AREA)
  • Debugging And Monitoring (AREA)

Abstract

【課題】プログラムに不具合が発生した際、簡易な装置構成で不具合の調査を短時間で行うことが可能なコントローラを得ること。
【解決手段】OSを実行するシステムプログラムによって自らの動作制御を行うとともに、高級言語プログラムによって作成されたユーザプログラムによって外部機器を動作させるユニットの制御を行なうコントローラ10において、システムプログラムが格納される領域に関するプログラム領域情報、ユーザプログラムの実行中の動作情報およびユーザプログラムの実行中に発生したエラーに関するエラー情報を取得し、システムプログラムが、プログラム領域情報、動作情報およびエラー情報に基づいて、ユーザプログラムのエラー解析を行う。
【選択図】 図2

Description

本発明は、高級言語で作成されたプログラムのトレースを実行するコントローラに関するものである。
プログラマブルコントローラ等の組み込み機器のプログラム開発(組込み型のプログラムの開発)は、クロス開発環境で行われる。クロス開発環境は、プログラムを組み込んで動作させる装置である開発ターゲットと組み込むプログラムを開発する開発ホストシステムをRS−232C(Recommended Standard 232 version C)等によって通信させた状態で開発を行っている。
クロス開発環境においてデバッグを行う場合、デバッグ時に必要となるデータを開発ホストシステムに保有しておき、開発ターゲット側のシンボル情報や変数に格納されている値などの情報は通信によって開発ターゲットに渡している。この場合、開発ターゲットに対応した専用の通信が必要となり、クロス開発環境時には開発ホストシステムに専用のデバッグツールが必要となる。
また、開発ターゲットにOS(オペレーティングシステム)となるシステムプログラムが存在しない場合にデバッグを行う手段として、開発ターゲットのマイクロプロセッサをエミュレートするICEとその専用ツールを使用する方法がある。この方法では、デバッグ情報をICEに保有し、クロス開発環境であるホスト・ターゲットとICEの間の通信を確立したうえでデバッグ情報を収集する。
特許文献1に記載のマイクロコンピュータ用プログラムのデバッグ方法は、ICEに対し高級言語コンパイラで生成されてプログラムメモリに記憶されたプログラムにデバッグモジュールを埋め込み、このデバッグモジュールを評価用CPUで実行することにより、関数に渡された引数の値、又は特定の引数の値が許容範囲を越えている場合にトレースメモリ装置に記録している。このICEにより、プログラムの実行をブレークさせることなく、関数へ渡される引数の値、又は許容範囲を越える引数を渡したモジュール又は引数に関するエラー処理を評価している。
特開平10−124350号公報
しかしながら、上記従来の技術では、デバッグを行うためにICEが必要とるため、デバッグを行うための装置構成が複雑になるといった問題があった。また、デバッグを行うために動作させるICEにおいて、クロック等に制限が課されるといった問題があった。また、PLC(Programmable Logic Controller)等の長時間動作させて制御を行うようなコントローラにおいて不具合が発生した場合、発生時点でデバッグ情報を収集していなければデバッグを行うことができない。このような場合、不具合が再発生する環境を整えた後に、デバッグツールを使用して動作情報を確認しながら不具合箇所を探さなければならないため、デバッグ情報の収集に多大な時間を要するという問題点があった。また、PLC等の生産ラインに組込まれて長時間動作を行うようなコントローラにおいては、常にデバッグ情報を取得するためにホスト・ターゲット通信を行うことは、経由するサーバのダウンや回線の切断などの恐れがあるためデバッグ情報を取得することが困難になるといった問題があった。
本発明は、上記に鑑みてなされたものであって、プログラムに不具合が発生した際、簡易な装置構成で不具合の調査を短時間で行うことが可能なコントローラを得ることを目的とする。
上述した課題を解決し、目的を達成するために、本発明は、オペレーティングシステムを実行するシステムプログラムによって自らの動作制御を行うとともに、高級言語プログラムによって作成されたユーザプログラムによって外部機器を動作させるユニットの制御を行なうコントローラにおいて、前記システムプログラムおよび前記ユーザプログラムを実行する際に、前記システムプログラムおよび前記ユーザプログラムが格納されるデータ格納部と、前記データ格納部内で前記システムプログラムが格納される領域に関するプログラム領域情報、前記ユーザプログラムの実行中の動作情報および前記ユーザプログラムの実行中に発生したエラーに関するエラー情報を取得するプログラム情報取得部と、前記システムプログラムが、前記プログラム情報取得部によって取得されたプログラム領域情報、動作情報およびエラー情報に基づいて、前記ユーザプログラムのエラー解析を行うプログラム解析部と、を備えることを特徴とする。
この発明によれば、データ格納部内でシステムプログラムが格納される領域に関するプログラム領域情報、ユーザプログラムの実行中の動作情報およびユーザプログラムの実行中に発生したエラーに関するエラー情報を取得し、システムプログラムがプログラム領域情報、動作情報およびエラー情報に基づいて、ユーザプログラムのエラー解析を行うので、ユーザプログラムの動作状況のトレースおよびユーザプログラムのエラー時の要因判別を容易に確認することが可能になる。
この発明によれば、コントローラが組み込み型の高級言語プログラムによって作成されたユーザプログラムを動作させながらユーザプログラムの動作状況のトレースおよびユーザプログラムのエラー時の要因判別を容易に確認することが可能になる。したがって、コントローラにおいてユーザプログラムの不具合発生時のデータを確認することができるため、デバッグの再発生を防止する環境を整える時間を短縮することが可能になるという効果を奏する。
以下に、本発明にかかるコントローラの実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
実施の形態1.
図1は、本発明の実施の形態1に係るコントローラを備えたデバッグシステムのシステム構成図である。デバッグシステムは、C言語等の高級言語で記述されたプログラム(以下、高級言語プログラムという)の不具合を一時診断するシステムである。図1に示すように、デバッグシステムは生産ライン内の装置の実行等を行う生産システム3と、生産システム3にインターネット2などの通信ネットワークによって接続されたネットワーク機器1からなる。
生産システム3は、PLC(Programmable Logic Controller)バス45に接続された、電源41、コントローラ10、複数のユニット42からなる。コントローラ10は、PLCバス45を介して各ユニット42の制御を行う。
ネットワーク機器1は、液晶ディスプレイ等の表示機能を備えており、例えばパーソナルコンピュータ等からなる。ネットワーク機器1は、生産システム3内のコントローラ10において取得した、高級言語プログラムの動作情報や高級言語プログラムのエラー要因(エラー要因の候補)等を取得する。
図2は、実施の形態1に係るコントローラの構成を示すブロック図である。コントローラ10は、PLCバス45に接続されたユニット42を制御するとともに、組み込み型の高級言語プログラムで作成されたユニット42を制御するためのユーザプログラムの不具合を一時診断する。
コントローラ10は、例えばPLC(Programmable Logic Controller)等の生産システムの制御装置であり、パーソナルコンピュータ等からなる。コントローラ10は、CPU(Central Processing Unit)バス9、CPU11、周辺機器接続部12、送受信部13、データ格納部14、トレース情報記憶部15、プログラム記憶部16、データ変換部18、記憶媒体接続部19を備える。
CPUバス9は、CPU11と送受信部13、データ格納部14、トレース情報記憶部15、プログラム記憶部16、データ変換部18、記憶媒体接続部19を接続するバス(データのやり取りを行う伝送路)である。CPU11は、プログラムを実行するマイクロプロセッサである。
周辺機器接続部12は、例えばRS−232C(Recommended Standard 232 version C)等を備えて構成され、プリンタ、モデム、スキャナ等の外部装置とシリアル通信を行う。周辺機器接続部12は、コントローラ10のOS(Operating System)(オペレーティングシステム)となるシステムプログラム等によって取得された後述するエラー発生要因判別ファイルやトレースデータファイルを、必要に応じてプリンタ等の周辺機器に送信する。
送受信部13は、100Base−TX/100Base−Tによって接続を行うPHYチップ等を備え、Ethernet(登録商標)等によって外部機器と接続し、情報の送受信を行う。送受信部13はネットワーク機器1からの要求に対してエラー発生要因判別ファイルやトレースデータファイルをインターネット2を介して送信する。また、送受信部13は必要に応じてエラー発生要因判別ファイルやトレースデータファイルを、例えば液晶モニタ等の表示機能を備えた外部機器(図示せず)に送信する。
データ格納部14は、ワークRAM(Random Access Memory)等を備え、CPU11が実行するプログラム(ユーザプログラム、システムプログラム)やこのプログラムが使用するデータを格納する。プログラム記憶部16に格納してあるシステムプログラムやユーザプログラムをデータ格納部14に展開することによってCPU11はシステムプログラムやユーザプログラムを実行する。ここでは、システムプログラムをデータ格納部14に展開することによってCPU11がシステムプログラムを実行する処理が、特許請求の範囲に記載のプログラム情報取得部の処理に対応する。
トレース情報記憶部15は、SRAM(Static RAM)等の内部電源を備えたバックアップRAM等からなり、コントローラ10のリセット後もデータを保持することが可能な記憶機能を備えている。
データ変換部18は、PLCバス45用のASIC(Application Specific Integrated Circuit)等を備え、PLCバス45を介してユニット42にアクセスする際のデータを変換する。記憶媒体接続部19は、CF(Compact Flash)カードやフレキシブルディスク等の記憶媒体等と接続を行う。
プログラム記憶部16は、FLASHメモリ等のROM(Read Only Memory)等を備え、コントローラ10のOSとなるシステムプログラム、C言語等の高級言語で作成したユーザプログラム、後述のエラー発生要因候補D6等を記憶(保存)する。本実施の形態1においては、OSとなるシステムプログラムがユーザプログラムの不具合を一時診断(エラー解析)する。
ここで、コントローラ10のOSとなるシステムプログラムについて説明する。図3は、実施の形態1に係るシステムプログラムの機能ブロックの一例を示す図である。システムプログラムは、記憶媒体I/F機能ブロック20、スクリプト機能ブロック21、エラー要因診断機能ブロック22、サーバ機能ブロック23、トレース機能ブロック24、システムエリア記憶機能ブロック25、外部機器I/F機能ブロック27を備えている。
スクリプト機能ブロック21は、ユーザプログラムを起動するためファイルに記述された内容を実行する機能ブロックである。エラー要因診断機能ブロック22は、ユーザプログラムのエラーが発生した際にユーザプログラムのトレースに関する情報(後述するトレース情報100)からエラー要因を判別する機能ブロックである。エラー要因診断機能ブロック22は、エラー発生時に保有するトレース情報100を使用してエラー発生箇所からのバックトレースやタスク情報のチェックを行うことにより、エラー発生箇所の要因となりえる候補を列挙してファイルに保存する。
サーバ機能ブロック23は、コントローラ10が取得したトレースに関する情報の取得要求情報を外部機器から受け付けるとともに、トレースに関する情報の取得要求情報に対する応答情報を外部機器(ネットワーク機器1)に送信する機能ブロックである。トレース機能ブロック24は、ユーザプログラムの動作をリアルタイムトレースし、トレースした情報をトレース情報100としてトレース情報記憶部15に格納させる機能ブロックである。システムエリア記憶機能ブロック25は、システムプログラムが使用するデータ格納部14の領域を記憶させる機能ブロックである。
また、記憶媒体I/F機能ブロック20は記憶媒体接続部19に装着した記憶可能な記憶媒体にアクセスする機能ブロックである。外部機器I/F機能ブロック27は、インターネット、シリアル、モデム、PLCバス45と接続できるI/Fドライバ機能を有する機能ブロックである。サーバ機能ブロック23が、トレースに関する情報の取得要求情報を外部機器から受け付けた場合、外部機器I/F機能ブロック27がインターネット2などを介してトレースに関する情報を外部機器に送信する。
CPU11は、システムプログラムをデータ格納部14に展開して動作させることによって、これらの記憶媒体I/F機能、スクリプト機能、エラー要因診断機能、サーバ機能、トレース機能、システムエリア記憶機能、外部機器I/F機能を達成する。本実施の形態1においては、CPU11がシステムプログラムをデータ格納部14に展開して動作させることによって特許請求の範囲に記載のプログラム解析部の処理を行う。
つぎに、コントローラ10の動作について説明する。図4−1は、コントローラの動作手順を示すフローチャートであり、図4−2はエラーアドレスを登録する手順を示すフローチャートである。
プログラム記憶部16に記憶しているOSとなるシステムプログラムやユーザプログラムを、コントローラ10の起動時にデータ格納部14に展開してシステムプログラムやユーザプログラム(高級言語プログラム)に基づく所定の動作を開始する。システムプログラムを起動すると、システムプログラムのトレース機能は、トレース情報記憶部15へのトレース情報100の格納を開始する
図5は、トレース情報記憶部に記憶するトレース情報の構成を示す図である。トレース情報100には、エラーが発生したアドレスを格納したエラー発生アドレスD1、トレース機能によりコントローラ10が動作している間常に収集されているアクセスアドレス、アクセスデータ、プログラムカウンタを格納したS/W(ソフトウェア)トレース情報D2、OSとなるシステムプログラムを含む高級言語プログラムの関数コールの履歴(プログラムカウンタ、関数名、引数)を格納した関数コール履歴情報D3、OSとなるシステムプログラムが使用しているデータ格納部14のRAM領域を記憶したシステムプログラム使用エリア情報D4の各エリアに格納されている情報が含まれている。
エラー発生アドレスD1は特許請求の範囲に記載のエラー情報に対応し、S/Wトレース情報D2、関数コール履歴情報D3は特許請求の範囲に記載の動作情報に対応し、システムプログラム使用エリア情報D4は、特許請求の範囲に記載のプログラム領域情報に対応する。これらエラー発生アドレスD1、S/Wトレース情報D2、関数コール履歴情報D3、システムプログラム使用エリア情報D4は、トレース情報100としてトレース情報記憶部15に格納される。トレース情報100は、エラー要因の候補をシステムプログラムによって自動的にリストアップする際に用いられる。
ここで、S/Wトレース情報D2、関数コール履歴情報D3、システムプログラム使用エリア情報D4について説明する。図6−1は、S/Wトレース情報を説明するための図であり、図6−2は、関数コール履歴情報を説明するための図であり、図6−3は、システムプログラム使用エリア情報を説明するための図である。
図6−1に示すように、S/Wトレース情報D2は、1つのプログラムカウンタ(PrgCounter)、1つのアクセスアドレス(Address)、1つのアクセスデータ(Data)からなる1つのフレームを複数個含んでおり、各フレームにはフレームNo.が含まれている。S/Wトレース情報D2は、データ格納部14とCPU11の間でやりとりされる情報に基づいてシステムプログラムのトレース機能によって取得される。
図6−2に示すように、関数コール履歴情報D3は、1つのプログラムカウンタ、関数名(シンボル情報(Symbol))、第1引数(Data「0」)〜第n(nは自然数)引数(Data「n−1」)からなる1つの関数コールデータを複数含んでいる。関数コール履歴情報D3は、ユーザプログラムの関数コール時にプログラムカウンタ、関数名、関数に渡された引数がシステムプログラムによって収集される。
関数コール履歴情報D3は、データ登録時にスタックに格納できるデータが一杯(満杯)である場合は最も古いデータから削除して新しいデータを登録し(FIFO(Fast In Fast Out))、データ参照時には最も新しいデータをスタックから取り出して参照する(FILO(Fast In Last Out))。
図6−3に示すように、システムプログラム使用エリア情報D4のデータ構造は、システムプログラムが使用しているシステム使用エリア数と、システムプログラムが使用しているデータ格納部14のRAM領域を示す情報としてシステム使用エリアデータを含んでいる。システム使用エリアデータは、1つの先頭アドレス(StartAddr)と1つの最終アドレス(EndAddr)からなるアドレスに関する情報を複数組含んでいる。
CPU11がシステムプログラムを起動すると、ユーザプログラムが開始される前に、システムプログラムが使用しているデータ格納部14のRAM領域に関する情報を、データ格納部14から取得し、システムプログラム使用エリア情報D4へ格納する。
CPU11がユーザプログラムによる処理を開始すると、コントローラ10が動作している間、アクセスアドレス、アクセスデータ、プログラムカウンタをS/Wトレース情報D2として収集する。また、CPU11がユーザプログラムによる処理を開始すると、コントローラ10が動作している間、高級言語プログラムの関数コールの履歴を収集する。そして、収集されたS/Wトレース情報D2と関数コール履歴情報D3は、トレース情報100としてトレース情報記憶部15に格納する。
CPU11によってプログラム処理が実行されている時に、アドレスの不正アクセス(アドレスエラー)やシステムWDT(Watch dog timer)発生などのエラーが発生すると、システムプログラムがこのアドレスの不正アクセスやシステムWDT発生などのエラーをシステムプログラムが正常に動作しなくなる可能性のある致命的なエラーとして検出する。このとき、アドレスの不正アクセスやシステムWDT発生などが発生するとイベントを発生させ、このイベントをシステムプログラムが検出することによってエラーを検出する。そして、エラーが発生したアドレスをエラー発生アドレスD1としてトレース情報記憶部15のトレース情報100に格納する。
この後、アドレスの不正アクセス等の発生によってイベントが発生してトレース情報記憶部15のトレース情報100が更新されると、エラー要因の判別を正確に行えなくなる。このため、一旦イベントが発生するとトレース情報記憶部15へのトレース情報100の更新を停止(トレース情報100の収集を終了)させるために、システムプログラムはプログラム記憶部16に記憶しているトレース実行フラグをOFFに設定する(ステップS100)。これにより、システムプログラムによるトレース情報100の収集が一旦終了(停止)し、トレース情報100が更新されることがなくなる。
ここで、プログラム記憶部16内の構成およびデータ格納部14の構成について説明する。図7−1は実施の形態1に係るプログラム記憶部のメモリマップを示す図であり、図7−2は実施の形態1に係るデータ格納部のメモリマップを示す図である。
プログラム記憶部16は、システムプログラムを格納するエリア(システムプログラム格納エリア28)、ユーザプログラムを格納するエリア(ユーザプログラム格納エリア30)、トレース実行フラグを格納するエリア(トレース実行フラグ39)を含んで構成されている。
システムプログラム格納エリア28、ユーザプログラム格納エリア30は、標準ROM37のエリアに記憶され、トレース実行フラグ39は標準ROM37以外のエリアに記憶されている。
トレース実行フラグ39は、トレース情報100の収集を行うか否かを示す情報であり、OSであるシステムプログラムの実行時にONする。トレース実行フラグがONに設定されている場合は、CPU11はデータ格納部14のシステムプログラムによってトレース情報100の収集を行い、トレース実行フラグがOFFに設定されている場合は、データ格納部14のシステムプログラムによるトレース情報の収集を行わない。
図7−2に示すように、データ格納部14は、システムプログラムの実行に使用するデータを格納するエリアであるシステムプログラムデータエリア32、システムプログラム格納エリア33、ユーザプログラム使用エリア34、システムメモリ/スタック確保エリア36を含んで構成されている。
システムプログラムデータエリア32、システムプログラム格納エリア33、ユーザプログラムの使用エリア34、システムメモリ/スタック確保エリア36はデータ格納部14のワークRAM38のエリアに記憶されている。
システムメモリ/スタック確保エリアは、システムプログラムの動作時に使用されるエリアである。システムプログラムは起動時にワークRAM38に展開され、システムプログラムデータエリア32、システムプログラム格納エリア33、システムメモリ/スタック確保エリア36を使用して動作する。
イベントの発生がRAM領域のデータの破壊によるエラーに基づくものである場合は、アドレスエラーが発生している場合が多いため、データ格納部14のシステムプログラムは不正なアクセスを行ったアドレスを格納したトレース情報記憶部15内のエリアのエラー発生アドレスD1から値を取得する。そして、システムプログラムは、エラー発生アドレスD1に0x00000000(NULL)以外のアドレスが格納されているか否かに基づいて、アドレスエラーが発生しているかを判別する(ステップS110)。
システムプログラムが、アドレスエラーが発生していると判断した場合には(ステップS110、Yes)、エラーアドレスの登録処理を行う(ステップS120)。
ここで、図4−2のフローチャートに従ってエラーアドレスの登録処理の手順について説明する。CPU11は、システムプログラムに基づいてトレース情報記憶部15のエラー発生アドレスD1からエラーが発生したアクセスアドレスを取得するとともに、S/Wトレース情報D2からエラー発生アドレスと同一のアクセスアドレスを持つ最新の情報(データ)を取得する(ステップS300)。このS/Wトレース情報D2から取得したデータ(アクセスアドレス、アクセスデータ、プログラムカウンタ)がアドレスエラー発生時のデータとなり、デバッグ時に参照される。アドレスエラー発生時のデータを取得すると、過去のアドレスエラー発生場所へのアクセスを記憶するための過去アクセスアドレス情報D5に格納する。過去アクセスアドレス情報D5は、例えばデータ格納部14に格納しておく。システムプログラムは、エラーが発生したアドレスと同一アドレスへのアクセスがエラー発生前に存在するか否かを調べる(ステップS310)。
S/Wトレース情報D2に格納されている各情報のアクセスアドレスを検索し、エラーが発生したアドレスと同一アドレスへのアクセスがエラー発生前に存在する場合(ステップS310、Yes)、エラー発生アドレスD1に格納されているアドレスと同一のアドレスを持つデータをそれぞれ過去アクセスアドレス情報D5に追加していく(ステップS320)。
S/Wトレース情報D2に存在するアクセスアドレスを全てチェックしたか否かを確認する(ステップ330)。そして、S/Wトレース情報D2に存在するアクセスアドレスを全てチェックしていないと判断すると(S/Wトレース情報D2に格納されている各情報のアクセスアドレスが最後のものでないと判断すると)(ステップS330、No)、ステップ310およびステップS320の処理を繰り返す。
一方、S/Wトレース情報D2に存在するアクセスアドレスを全てチェックしたと判断すると(ステップS330、Yes)、トレース情報記憶部15に登録した過去アクセスアドレス情報D5のデータのプログラムカウンタからS/Wトレース情報D2に基づいてバックトレースを行う。そして、エラーが発生したアドレスに移動(エラーアドレスへ移動)した、関数名とタスク名を取得する。すなわち、まず過去アクセスアドレス情報D5に登録されているプログラムカウンタを取得し、このプログラムカウンタ以前のプログラムカウンタを示す動作情報(アクセスアドレス、アクセスデータ、プログラムデータ)をS/Wトレース情報D2から取得する(ステップS340)。
システムプログラムは、S/Wトレース情報D2から取得したプログラムカウンタと同一のプログラムカウンタをトレース情報記憶部15の関数コール履歴情報D3から検索する。そして、関数コール履歴情報D3にS/Wトレース情報D2から取得したプログラムカウンタと同一のプログラムカウンタがある場合、検索したプログラムカウンタに対応するタスク名と関数名を関数コール履歴情報D3から取得する(ステップS350)。
システムプログラムは、関数コール履歴情報D3から関数情報(プログラムカウンタ、関数名、引数)を取得できたか否かの判断を行う(ステップS360)。システムプログラムが、関数コール履歴情報D3から関数情報を取得できたと判断した(エラーの発生した関数を発見した)場合(ステップS360、Yes)、アクセスアドレスの情報に関数情報を付加したものを取得情報として、エラー要因を識別するための情報(アドレスエラー)とともにトレース情報記憶部15のエラー発生要因候補D6に登録する(ステップS370)。ステップS370においてエラー要因を登録する際には、新しい動作ほどエラーに対する直接の原因になりやすいと考えられるため、動作が新しい順にエラー発生要因候補D6の上位に位置付けて登録する。
一方、システムプログラムが、関数コール履歴情報D3から関数情報を取得できなかったと判断した場合(ステップS360、No)、エラー発生要因候補D6への登録は行わない。
S/Wトレース情報D2から取得したプログラムカウンタと同一のプログラムカウンタを関数コール履歴情報D3から発見するか、又はS/Wトレース情報D2に格納された最古のデータをチェックするまでプログラムカウンタの検索を実施する(プログラムカウンタの検索を繰り返す)。すなわち、S/Wトレース情報D2から取得したプログラムカウンタと同一のプログラムカウンタを関数コール履歴情報D3から発見できない場合は、S/Wトレース情報D2に存在するアクセスアドレスを全てチェックしたか否かを確認する(ステップ380)。そして、S/Wトレース情報D2に存在するアクセスアドレスを全てチェックしていないと判断すると(S/Wトレース情報D2に格納されている各情報のアクセスアドレスが最後のものでないと判断すると)(ステップS380、No)、ステップ350〜ステップS370の処理を繰り返す。
一方、S/Wトレース情報D2に存在するアクセスアドレスを全てチェックしたと判断すると(ステップS380、Yes)、過去アクセスアドレス情報D5に登録されている全てのプログラムカウンタに対し、このプログラムカウンタ以前のプログラムカウンタを示す動作情報をS/Wトレース情報D2からチェックしたか否かを確認する(ステップS390)。そして、過去アクセスアドレス情報D5に登録されている全てのプログラムカウンタに対して動作情報をチェックしていないと判断すると(過去アクセスアドレス情報D5に登録されているプログラムカウンタが最後のものでないと判断すると)(ステップS390、No)、ステップ340〜ステップS380の処理を繰り返す。過去アクセスアドレス情報D5に登録されているプログラムカウンタを全てチェックしたと判断すると(ステップS390、Yes)、エラーアドレスの登録処理を終了する。
図4−1のステップS110において、システムプログラムによってアドレスエラーが発生していないと判断された場合(ステップS110、No)、またはエラーアドレスの登録処理(ステップS120)が終了すると、動作中のシステムプログラムから現存する全タスクのスタック情報を取得し、スタックオーバフローが発生していないかをチェックする。このスタックオーバフローによりRAM領域のデータを破壊しているか否かを調べる。
スタックオーバフローが発生している場合は、スタックオーバフローによってRAM領域のデータを破壊したことがエラー要因であると明確であるので、エラー発生要因候補D6の最上位に位置付けて、システムプログラムが取得したタスク名、最終実行関数名を記憶する(ステップS130)。
そして、スタックオーバフローが発生していないかのチェックをシステムプログラムの全タスクに対して行ったか否かを確認する(ステップS140)。スタックオーバフローを全てのタスクに対してチェックしていない場合は、ステップS130の処理を繰り返す。一方、スタックオーバフローを全てのタスクに対してチェックした場合は、スタックオーバフローが発生しているタスクが存在するか否かを確認する(ステップS150)。
スタックオーバフローのチェックを行った結果、スタックオーバフローが発生しているタスクが存在しないと判断された場合(ステップS150、No)、無限ループしているタスクが存在するという原因でWDTエラーなどが発生している場合があるので、サスペンド(一時停止)しているタスクがあるか否かの確認を行う(ステップS160)。
サスペンドしているタスクがあるか否かの確認を行うため、OSであるシステムプログラムからタスク情報を取得し、サスペンド状態となっているタスクが存在するかを判断する。そして、サスペンド状態のタスクが存在すると判断された場合には(ステップS160、Yes)、無限ループが発生している可能性があるので、無限ループが発生している箇所がないかを調べる。
具体的には、OSであるシステムプログラムからサスペンド状態のタスクのプライオリティ(優先度)を取得(サスペンド状態のタスクが複数存在する場合は一番高いプライオリティを取得)し、取得したプライオリティ以上で動作しているタスクの中で一番プライオリティの低いタスクで無限ループが発生している可能性が高いため、OSであるシステムプログラムによって例えばこのプライオリティの低いタスクの現在の実行位置を取得する。
無限ループしている可能性のあるタスク実行位置を取得した後、S/Wトレース情報D2のプログラムカウンタから無限ループしている可能性のあるタスク実行位置と同一の値が存在するか否かを調べる。S/Wトレース情報D2に同一の値のプログラムカウンタが多数(例えば100以上)存在する場合は無限ループが発生していると判断し、エラー要因(サスペンド)、タスク名およびプログラムカウンタをエラー発生要因候補D6に登録する(ステップS170)。
ここでは、エラー発生の要因(サスペンド)が明確であり、アドレスエラーやスタックオーバフローが検出されていない時にのみ検出すると考えられるため、エラー発生要因候補D6の最上位に位置付けて記憶する。
エラー発生要因候補D6に記憶した全情報のアクセスアドレス、プログラムカウンタに対して、トレース情報のシステムプログラム使用エリア情報D4の範囲内であるかを判別する。そして、アクセスアドレスやプログラムカウンタが、システムプログラム使用エリア情報D4の範囲内である場合は、エラー発生要因がシステムプログラムであると判断し、システムプログラム使用エリア情報D4の範囲外である場合は、エラー発生要因がユーザプログラムであると判断する。
エラー発生原因の各項目に対するエラー発生要因がシステムプログラムか、ユーザプログラムであるかの判断結果は、各エラー発生要因候補D6に追加して記憶する(ステップS180)。
プログラム記憶部(標準ROM)16または記憶媒体接続部19に装着した記憶媒体(CFカード等)に、エラー要因の候補としてリストアップされたエラー発生要因候補D6を記憶したファイルであるエラー発生要因判別ファイルとトレース情報(D1〜D4)を記憶したファイルであるトレースデータファイルを保存する(ステップS190)。
プログラム記憶部16によって記憶されたエラー発生要因判別ファイルやトレースデータファイルは、例えばWEB(ウェブ)ページとして記憶しておく。そして、コントローラ10とインターネット2に接続されたネットワーク機器1からの要求に応じてWEBページの情報をネットワーク機器1に送受信部13から送信する。コントローラ10に対して遠隔地のネットワーク機器1は、インターネット2を介してエラー発生要因判別ファイルやトレースデータファイルを取得することが可能となる。
これにより、エラー発生要因判別ファイルやトレースデータファイルに基づいてユーザプログラム(高級言語プログラム)の動作状況のトレースおよびエラー時の要因判別を容易に確認することが可能となる。
また、アクセスアドレスやプログラムカウンタが、システムプログラム使用エリア情報D4の範囲内であるか否かに基づいてエラー発生要因がシステムプログラムか、ユーザプログラムであるかの情報をエラー発生要因候補D6に登録するので、不具合の発生箇所がOSであるシステムプログラムであるかユーザプログラムであるかを簡易に判断することが可能となる。
このように実施の形態1によれば、コントローラ10がクロス開発環境下にない状態で組み込み型の高級言語プログラムを動作させて動作状況のトレースおよびエラー時の要因判別を容易に確認することが可能となる。また、コントローラ10がC言語等の高級言語プログラムの不具合発生箇所の絞り込み(特定)を行うので、デバッグ時の不具合箇所特定に要する時間を短縮することが可能となる。また、コントローラ10において不具合発生時のデータを確認することができるため、デバッグの再発生を防止する環境を整える時間を短縮することが可能となる。
実施の形態2.
図4−1、図4−2、図6−1および図8に従って実施の形態2に係るコントローラを説明する。実施の形態2においては、コントローラ10がトレース回路(動作情報取得回路)40を備え、トレース回路40がS/Wによるトレースを補助する。
図8は、実施の形態2に係るコントローラの構成を示すブロック図である。図8の各構成要素のうち図2に示す実施の形態1のコントローラと同一の機能をする構成要素については同一番号を付しており、重複する説明は省略する。
図8に示すように、本実施の形態2におけるコントローラ10は、トレース回路40を備える。トレース回路40は、データ格納部14からCPU11への命令やデータなどのプログラム動作情報をトレース情報記憶部15に書き込む。すなわち、トレース回路40は、CPU11がユーザプログラムによる処理を開始すると、コントローラ10が動作している間、アクセスアドレス、アクセスデータ、プログラムカウンタを収集してH/Wトレース情報D7(図示せず)に格納する。
実施の形態1にいてはシステムプログラムによってS/Wトレース情報D2をトレース情報記憶部15に記憶させたが、本実施の形態2においてはトレース回路40によって
H/W(ハードウェア)トレース情報D7をトレース情報記憶部15に記憶させる。H/Wトレース情報D7は、図6−1に示した実施の形態1のS/Wトレース情報D2と同様の情報(アクセスアドレス、アクセスデータ、プログラムカウンタ)を含んでいる。
本実施の形態2のコントローラ10も図4−1や図4−2で説明した実施の形態1のコントローラと同様の動作手順によってエラーの判別処理を行う。すなわち、システムプログラムの起動時に、システムプログラムによってシステムプログラム使用エリア情報D4をトレース情報記憶部15のトレース情報100に記憶しておく。そして、ユーザプログラムの実行時にはトレース回路40によってデータのトレースを行い、この情報をH/Wトレース情報D7としてトレース情報記憶部15のトレース情報100に記憶する。また、システムプログラムのトレース機能によって関数コール履歴情報D3を取得し、トレース情報記憶部15のトレース情報100に記憶する。ユーザプログラムの実行において、エラーが発生すると、エラー発生アドレスD1、システムプログラム使用エリア情報D4、H/Wトレース情報D7、関数コール履歴情報D3に基づいてエラー要因の判別処理等を行い、エラー発生要因判別ファイル、トレースデータファイルとしてプログラム記憶部16等に保存する。このトレース回路40(ハードウェア)によるトレース処理によってCPU11の負荷を減少させることが可能となり、制御装置としての性能の劣化を防止できる。
このように実施の形態2によれば、トレースの情報量が多いアクセスアドレス、アクセスデータ、プログラムカウンタをH/Wトレース情報D7としてトレース回路40が取得するので、システムプログラム(ソフトウェア)によって収集するトレース情報を減少させることが可能となる。したがって、コントローラ10によるプログラムの実行時にCPU11にかかるトレース情報収集時の負荷を軽減させた状態で、トレースおよびエラー時の要因判別(高級言語プログラムの不具合発生箇所の特定)を効率的に行うことが可能となる。
実施の形態3.
図2、図4−2および図9−1〜図11−2に従って実施の形態3に係るコントローラを説明する。実施の形態3においては、OSとなるシステムプログラム(後述するメインOS)が動作しなくなるエラーが発生した際に、エラー時でも動作可能なOS(後述するサブOS)に切替えて、エラー解析等を行う。
実施の形態3においては、図2に示した実施の形態1に係るコントローラ10または図8に示した実施の形態2に係るコントローラ10によってトレースやエラーの要因判別を行う。
コントローラ10は、プログラム記憶部16に、通常時にOSとして動作するシステムプログラム(以下、メインOSという)、エラー時にOSとして動作するシステムプログラム(以下、サブOSという)を記憶している。
メインOSはシステムプログラムの起動時にデータ格納部14のワークRAMに展開され、ワークRAMの該当エリアとシステムメモリ/スタック確保エリア36を使用して動作する。
図9−1は、実施の形態3に係るメインOSの機能ブロックの一例を示す図であり、図9−2は、実施の形態3に係るサブOSの機能ブロックの一例を示す図である。図9−1および図9−2の各構成要素のうち図3に示す実施の形態1のシステムプログラムと同一の機能を達成する構成要素については同一番号を付しており、重複する説明は省略する。
図9−1に示すように、メインOSは、記憶媒体I/F機能ブロック20、スクリプト機能ブロック21、エラー要因診断機能ブロック22、サーバ機能ブロック23、トレース機能ブロック24、システムエリア記憶機能ブロック25、外部機器I/F機能ブロック27に加えてOS切替機能ブロック26を備えている。
OS切替機能ブロック26は、メインOSが機能しなくなるようなエラーが発生した際に、エラー要因診断機能を安定して動作させるため、OSをメインOSからサブOSに切替える機能ブロックである。
図9−2に示すように、サブOSは、記憶媒体I/F機能ブロック20、エラー要因診断機能ブロック22、サーバ機能ブロック23、外部機器I/F機能ブロック27を備えている。サブOSはエラー情報分析のためのOSであるので、トレース情報を収集する機能(トレース機能ブロック24、システムエリア記憶機能ブロック25)を備えていない。サブOSは、スクリプト機能ブロック21、トレース機能ブロック24、システムエリア記憶機能ブロック25を備えていないため、システムプログラムが動作しなくなるエラーが発生した場合であっても、安定した状態でのエラー要因の判別を行なうことが可能となる。
つぎに、図4−2および図10に従ってコントローラ10の動作を説明する。図10は、実施の形態3に係るコントローラの動作手順を示すフローチャートである。なお、図10に示す動作手順のうち、図4−1に示す実施の形態1に係るコントローラの動作と同様の動作を行う動作処理については詳細な説明は省略する。
コントローラ10を起動するとプログラム記憶部16に格納しているメインOSをデータ格納部14に展開する。また、ユーザプログラムを起動するとプログラム記憶部16に格納しているメインOSをデータ格納部14に展開する。
CPU11がシステムプログラム(メインOS)を起動すると、ユーザプログラムが開始される前に、メインOSが使用しているデータ格納部14のRAM領域に関する情報を、データ格納部14から取得し、システムプログラム使用エリア情報D4へ格納する。
また、CPU11がユーザプログラムによる処理を開始すると、コントローラ10が動作している間、S/Wトレース情報D2と関数コール履歴情報D3を収集してトレース情報100としてトレース情報記憶部15に格納する。
CPU11によってプログラム処理が実行されている時に、メインOSが機能しなくなるようなエラーが発生するとメインOSが完全に停止する前にエラーが発生したアドレスをエラー発生アドレスD1としてトレース情報記憶部15のトレース情報100に格納する。
OS切替機能によってメインOSからサブOSに切り替わった場合にも、このトレース情報100を参照するため、エラー発生アドレスD1、H/Wトレース情報D2、関数コール履歴情報D3、システムプログラム使用エリア情報D4はそれぞれ固定の領域を使用して格納しておく。メインOSはエラーの発生後、メインOSが完全に停止する前にプログラム記憶部16の後述するサブOS起動信号31をONにし、OSのリブートを実行する。
ここで、本実施の形態3に係るプログラム記憶部16内の構成およびデータ格納部14の構成について説明する。図11−1は実施の形態3に係るプログラム記憶部のメモリマップを示す図であり、図11−2は実施の形態3に係るデータ格納部のメモリマップを示す図である。図11−1の各構成要素のうち図7−1に示す実施の形態1のプログラム記憶部のメモリマップと同一の機能をする構成要素については同一番号を付しており、重複する説明は省略する。また、図11−2の各構成要素のうち図7−2に示す実施の形態1のデータ格納部のメモリマップと同一の機能をする構成要素については同一番号を付しており、重複する説明は省略する。
プログラム記憶部16は、メインOSを格納するエリア(メインOS格納エリア58)、サブOSを格納するエリア(サブOS格納エリア59)、ユーザプログラム格納エリア30、サブOS起動信号を格納するエリア(サブOS起動信号31)、トレース実行フラグを格納するエリア(トレース実行フラグ39)を含んで構成されている。
メインOS格納エリア58、サブOS格納エリア59、ユーザプログラム格納エリア30は、標準ROMのエリア37に記憶され、サブOS起動信号31、トレース実行フラグ39は標準ROM以外のエリアに記憶されている。
サブOS起動信号31は、メインOSからサブOSへの変更を行うか否かを決定する情報である。サブOS起動信号31がONのとき、サブOSによってユーザプログラムの実行を行い、サブOS起動信号31がOFFのとき、メインOSによってユーザプログラムの実行を行う。
図11−2に示すように、データ格納部14は、メインOSの実行に使用するデータを格納するエリアであるメインOSデータエリア52、メインOS格納エリア53、ユーザプログラム使用エリア34、サブOSの実行に使用するデータを格納するエリアであるサブOSデータエリア35、システムメモリ/スタック確保エリア36を含んで構成されている。
メインOSデータエリア52、メインOS格納エリア53、ユーザプログラムの使用エリア34、サブOSデータエリア35、システムメモリ/スタック確保エリア36はデータ格納部14のワークRAM38のエリアに記憶されている。
サブOS起動信号31がONした状態でリブートされると、起動プログラムは前回のエラー状態を保持するためRAMエリアを初期化せずに、プログラム記憶部16の標準ROM37上のサブOSの先頭アドレスにジャンプする。
ここでのサブOSはROM常駐型で動作するプログラムの形式をとる。すなわち、サブOSは、サブOSの動作に必要となるデータのみをデータ格納部14のRAM領域に確保し、サブOSのデータ以外の部分はプログラム記憶部16を参照してプログラムを実行する。
サブOSの実行時は、トレース実行フラグ39がOFFになり、トレース情報の収集が終了する(ステップS100)。そして、サブOSはOS起動後に実施の形態1で説明した処理を関数コールして、高級言語プログラムのエラー要因の判別を実施する。すなわち、イベントの発生がRAM領域のデータの破壊によるエラーに基づくものである場合、データ格納部14のメインOSは不正なアクセスを行ったアドレスを格納したトレース情報記憶部15内のエリアのエラー発生アドレスD1から値を取得しアドレスエラーが発生しているかを判別する(ステップS110)。
サブOSが、アドレスエラーが発生していると判断した場合には、エラーアドレスの登録処理を行う(ステップS120)。エラーアドレスの登録処理は、図4−2に示した実施の形態1と同様の処理によって行なう。エラーアドレスの登録処理は、本実施の形態3においてはサブOSに基づいて行なう。これにより、アクセスアドレスの情報に関数情報を付加したもの(取得情報)がエラー要因(アドレスエラー)とともにトレース情報記憶部15のエラー発生要因候補D6に登録される(ステップS370)。
サブOSによってアドレスエラーが発生していないと判断された場合(ステップS110、No)、またはエラーアドレスの登録処理(ステップS120)が終了すると、エラー発生要因候補D6に記憶した全情報のアクセスアドレス、プログラムカウンタに対して、トレース情報のシステムプログラム使用エリア情報D4の範囲内であるかを判別する。そして、アクセスアドレスやプログラムカウンタが、システムプログラム使用エリア情報D4の範囲内である場合は、エラー発生要因がシステムプログラム(メインOS)であると判断し、システムプログラム使用エリア情報D4の範囲外である場合は、エラー発生要因がユーザプログラムであると判断する。
エラー発生原因の各項目に対するエラー発生要因がシステムプログラムか、ユーザプログラムであるかの情報は、各エラー発生要因候補D6に追加する(ステップS180)。プログラム記憶部(標準ROM)16または記憶媒体接続部19に装着した記憶媒体(CFカード等)に、エラー要因の候補としてリストアップされたエラー発生要因候補D6とトレース情報(D1〜D4)を、エラー発生要因候補D6を保存したファイルであるエラー発生要因判別ファイル、トレース情報を保存したファイルであるトレースデータファイルとして保存する(ステップS190)。
このようにエラー発生時は、ユーザプログラムを登録するスクリプト機能ブロック21を備えないサブOSによって、エラー要因の判別を行なっているため、ユーザプログラムの登録などシステムプログラムが予期しない外部要因を取り除いた状態の安定したコントローラ10の動作を保証している。
なお、本実施の形態3においては、メインOSが正常に動作できなくなるようなエラーを検出した際に、サブOS起動信号をONにしてリブートを実行することとしたが、
メインOSのリブート処理が実行される場合やシステムWDTが発生した場合にサブOS起動信号をONにしてリブートを実行してもよい。
メインOSがシステムWDTを検出した場合は割込みベクタに登録されているプログラムからサブOS起動信号をONしてOSのリブートを実行する。また、サーバ機能、エラー要因診断機能について機能別にWDTを設けておき、メインOSはこれらの機能の動作が正常であるかを監視するとともに、WDTが発生した場合にサブOS起動信号をONしてOSのリブートを実行するようにしてもよい。
このように実施の形態3によれば、メインOSが機能しなくなるようなプログラムエラーが発生した場合であっても、安定した状態で動作可能なサブOSに切替えてプログラムの一時診断を行なうことが可能となる。
以上のように、本発明にかかるコントローラは、高級言語プログラムのトレースに適している。
実施の形態1に係るコントローラを備えたデバッグシステムのシステム構成図である。 実施の形態1に係るコントローラの構成を示すブロック図である。 実施の形態1に係るシステムプログラムの機能ブロックを示す図である。 コントローラの動作手順を示すフローチャートである。 エラーアドレスを登録する手順を示すフローチャートである。 トレース情報の構成を示す図である。 S/Wトレース情報を説明するための図である。 関数コール履歴情報を説明するための図である。 システムプログラム使用エリア情報を説明するための図である。 実施の形態1に係るプログラム記憶部のメモリマップを示す図である。 実施の形態1に係るデータ格納部のメモリマップを示す図である。 実施の形態2に係るコントローラの構成を示すブロック図である。 実施の形態3に係るメインOSの機能ブロックを示す図である。 実施の形態3に係るサブOSの機能ブロックを示す図である。 実施の形態3に係るコントローラの動作手順を示すフローチャートである。 実施の形態3に係るプログラム記憶部のメモリマップを示す図である。 実施の形態3に係るデータ格納部のメモリマップを示す図である。
符号の説明
1 ネットワーク機器
2 インターネット
3 生産システム
9 CPUバス
10 コントローラ
11 CPU
12 周辺機器接続部
13 送受信部
14 データ格納部
15 トレース情報記憶部
16 プログラム記憶部
18 データ変換部
19 記憶媒体接続部
20 記憶媒体I/F機能ブロック
21 スクリプト機能ブロック
22 エラー要因診断機能ブロック
23 サーバ機能ブロック
24 トレース機能ブロック
25 システムエリア記憶機能ブロック
26 切替機能ブロック
27 外部機器I/F機能ブロック
28 システムプログラム格納エリア
30 ユーザプログラム格納エリア
31 サブOS起動信号
32 システムプログラムデータエリア
33 システムプログラム格納エリア
34 ユーザプログラム使用エリア
35 サブOSデータエリア
36 システムメモリ/スタック確保エリア
37 標準ROMエリア
38 ワークRAM
39 トレース実行フラグ
40 トレース回路
41 電源
42 ユニット
45 PLCバス
52 メインOSデータエリア
53 メインOS格納エリア
58 メインOS格納エリア
59 サブOS格納エリア
100 トレース情報

Claims (10)

  1. オペレーティングシステムを実行するシステムプログラムによって自らの動作制御を行うとともに、高級言語プログラムによって作成されたユーザプログラムによって外部機器を動作させるユニットの制御を行なうコントローラにおいて、
    前記システムプログラムおよび前記ユーザプログラムを実行する際に、前記システムプログラムおよび前記ユーザプログラムが格納されるデータ格納部と、
    前記データ格納部内で前記システムプログラムが格納される領域に関するプログラム領域情報、前記ユーザプログラムの実行中の動作情報および前記ユーザプログラムの実行中に発生したエラーに関するエラー情報を取得するプログラム情報取得部と、
    前記システムプログラムが、前記プログラム情報取得部によって取得されたプログラム領域情報、動作情報およびエラー情報に基づいて、前記ユーザプログラムのエラー解析を行うプログラム解析部と、
    を備えることを特徴とするコントローラ。
  2. 前記プログラム情報取得部は、前記システムプログラムに基づいて前記プログラム領域情報、前記動作情報および前記エラー情報を取得することを特徴とする請求項1に記載のコントローラ。
  3. 前記プログラム情報取得部は、前記動作情報を取得するため動作情報取得回路を備えることを特徴とする請求項1または2に記載のコントローラ。
  4. 前記プログラム解析部は、前記エラー情報および前記動作情報に基づいて前記ユーザプログラムのアドレスエラー発生時の前記ユーザプログラムに関する情報を抽出することを特徴とする請求項1〜3のいずれか1つに記載のコントローラ。
  5. 前記プログラム解析部は、動作中の前記システムプログラムによって取得された前記ユーザプログラムにおいて、スタックオーバフローしたタスクを抽出することを特徴とする請求項1〜4のいずれか1つに記載のコントローラ。
  6. 前記プログラム解析部は、動作中の前記システムプログラムによって取得された前記ユーザプログラムにおいて無限ループ処理している可能性のあるタスクに関する情報と前記動作情報に含まれる前記ユーザプログラムのタスクに関する情報とに基づいて、無限ループ処理しているタスクの抽出を行なうことを特徴とする請求項1〜5のいずれか1つに記載のコントローラ。
  7. 前記オペレーティングシステムは、前記ユーザプログラムを実行するとともに前記プログラム解析部の制御を行なうメインオペレーティングシステムと、前記プログラム解析部の制御を行なうサブオペレーティングシステムとからなり、
    プログラム情報取得部は、前記メインオペレーティングシステムを実行するシステムプログラムに基づいて動作し、
    前記ユーザプログラムの実行中にエラーが発生すると前記プログラム解析部は、前記サブオペレーティングシステムを実行するシステムプログラムに基づいて動作することを特徴とする請求項1〜4のいずれか1つに記載のコントローラ。
  8. 前記プログラム解析部は、前記プログラム領域情報に基づいて、前記ユーザプログラムの実行中に発生したエラーが、ユーザプログラムまたはシステムプログラムのいずれによるものであるかを判別することを特徴とする請求項1〜7のいずれか1つに記載のコントローラ。
  9. 前記プログラム解析部によってエラー解析された前記ユーザプログラムのエラー解析結果とともに前記ユーザプログラムの実行中に発生したエラーの要因を識別するための情報を記憶する解析結果記憶部を備えることを特徴とする請求項1〜8のいずれか1つに記載のコントローラ。
  10. 前記解析結果記憶部は、前記プログラム解析部によってエラー解析された前記ユーザプログラムのエラー解析結果をウェブページとして格納し、
    前記解析結果記憶部に格納するウェブページ上の情報を外部機器に送信する送信部を備えることを特徴とする請求項1〜9のいずれか1つに記載のコントローラ。




JP2004147534A 2004-05-18 2004-05-18 コントローラ Expired - Fee Related JP4558376B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004147534A JP4558376B2 (ja) 2004-05-18 2004-05-18 コントローラ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004147534A JP4558376B2 (ja) 2004-05-18 2004-05-18 コントローラ

Publications (2)

Publication Number Publication Date
JP2005332030A true JP2005332030A (ja) 2005-12-02
JP4558376B2 JP4558376B2 (ja) 2010-10-06

Family

ID=35486676

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004147534A Expired - Fee Related JP4558376B2 (ja) 2004-05-18 2004-05-18 コントローラ

Country Status (1)

Country Link
JP (1) JP4558376B2 (ja)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010049407A (ja) * 2008-08-20 2010-03-04 Fuji Xerox Co Ltd データ処理装置、情報処理装置、画像形成装置、およびデータ処理プログラム
JP2010134747A (ja) * 2008-12-05 2010-06-17 Fuji Xerox Co Ltd 画像処理装置
JP2010134748A (ja) * 2008-12-05 2010-06-17 Fuji Xerox Co Ltd 画像処理装置
JP2011008473A (ja) * 2009-06-25 2011-01-13 Yokogawa Electric Corp プログラマブルコントローラ
JP2014228889A (ja) * 2013-05-17 2014-12-08 富士通株式会社 性能情報収集プログラム、情報処理装置及び性能情報収集方法
US9336114B2 (en) 2012-07-24 2016-05-10 Samsung Electronics Co., Ltd. Apparatus and method for detecting error
JP2017010306A (ja) * 2015-06-23 2017-01-12 ファナック株式会社 データ取得機能を有する数値制御装置

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115698885A (zh) * 2020-06-30 2023-02-03 日本电产株式会社 错误分析装置

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02280201A (ja) * 1989-04-21 1990-11-16 Citizen Watch Co Ltd ディジタル制御方法およびその装置
JPH07295862A (ja) * 1994-04-28 1995-11-10 Mitsubishi Electric Corp エラートレースによるシステム制御管理方法
JP2000112788A (ja) * 1998-09-30 2000-04-21 Nec Corp 障害復旧補助方法及びその装置並びにプログラムを記録した機械読み取り可能な記録媒体
JP2001005699A (ja) * 1999-06-25 2001-01-12 Toshiba Corp 計算機システムおよび障害情報採取方法
JP2001216557A (ja) * 2000-01-31 2001-08-10 Shizuo Ichikawa インターネットサポートシステム
JP2001236237A (ja) * 2000-02-23 2001-08-31 Hitachi Ltd マルチos構成方法
JP2002082816A (ja) * 2000-09-07 2002-03-22 Hitachi Ltd 障害監視システム

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02280201A (ja) * 1989-04-21 1990-11-16 Citizen Watch Co Ltd ディジタル制御方法およびその装置
JPH07295862A (ja) * 1994-04-28 1995-11-10 Mitsubishi Electric Corp エラートレースによるシステム制御管理方法
JP2000112788A (ja) * 1998-09-30 2000-04-21 Nec Corp 障害復旧補助方法及びその装置並びにプログラムを記録した機械読み取り可能な記録媒体
JP2001005699A (ja) * 1999-06-25 2001-01-12 Toshiba Corp 計算機システムおよび障害情報採取方法
JP2001216557A (ja) * 2000-01-31 2001-08-10 Shizuo Ichikawa インターネットサポートシステム
JP2001236237A (ja) * 2000-02-23 2001-08-31 Hitachi Ltd マルチos構成方法
JP2002082816A (ja) * 2000-09-07 2002-03-22 Hitachi Ltd 障害監視システム

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010049407A (ja) * 2008-08-20 2010-03-04 Fuji Xerox Co Ltd データ処理装置、情報処理装置、画像形成装置、およびデータ処理プログラム
JP2010134747A (ja) * 2008-12-05 2010-06-17 Fuji Xerox Co Ltd 画像処理装置
JP2010134748A (ja) * 2008-12-05 2010-06-17 Fuji Xerox Co Ltd 画像処理装置
JP2011008473A (ja) * 2009-06-25 2011-01-13 Yokogawa Electric Corp プログラマブルコントローラ
US9336114B2 (en) 2012-07-24 2016-05-10 Samsung Electronics Co., Ltd. Apparatus and method for detecting error
JP2014228889A (ja) * 2013-05-17 2014-12-08 富士通株式会社 性能情報収集プログラム、情報処理装置及び性能情報収集方法
JP2017010306A (ja) * 2015-06-23 2017-01-12 ファナック株式会社 データ取得機能を有する数値制御装置
US10191481B2 (en) 2015-06-23 2019-01-29 Fanuc Corporation Numerical controller and numerical control system in which the controller is connected by network

Also Published As

Publication number Publication date
JP4558376B2 (ja) 2010-10-06

Similar Documents

Publication Publication Date Title
US7669078B2 (en) Method and apparatus for debugging a program on a limited resource processor
JP4222370B2 (ja) デバッグ支援装置及びデバッグ処理方法をコンピュータに実行させるためのプログラム
TWI470420B (zh) 除錯方法及電腦系統
JP2005339561A (ja) 関連アプリケーションに対するトラック・データ・クロスリファレンスを保存する方法及び装置
CN101901177B (zh) 多核微处理器及其除错方法
JP2004259258A (ja) 改良された診断実行器およびその方法
CN111274059B (zh) 一种从设备的软件异常处理方法及装置
JP2005032247A (ja) 発明者JohnW.Curryによる、オペレーティングシステムと共に使用される改良された診断モニタおよびその方法
JP4558376B2 (ja) コントローラ
JP2006338445A (ja) 異常情報格納装置
US20050033952A1 (en) Dynamic scheduling of diagnostic tests to be performed during a system boot process
JP2004302731A (ja) 情報処理装置および障害診断方法
TWI324304B (en) Method for reading data of input/output port
CN115756935A (zh) 嵌入式软件系统的异常故障定位方法、装置及设备
JP2004013714A (ja) 通信端末装置、デバッグ情報通知システム及びコンピュータ・プログラム
JP2009223714A (ja) 演算回路及び演算回路の異常解析方法
CN100369009C (zh) 使用系统管理中断信号的监控系统及方法
JPH10254738A (ja) エミュレータ装置及びエミュレーション方法
JP2014182676A (ja) ログ採取装置、演算装置、およびログ採取方法
JP2007172096A (ja) 情報処理装置、および、その起動制御方法
JP4633553B2 (ja) デバッグシステム、デバッグ方法およびプログラム
JP4576433B2 (ja) 情報処理装置、演算処理装置、情報処理装置の制御方法及びプログラム
JP2002182951A (ja) 情報処理装置のメンテナンス方法および情報処理装置
CN118467340A (zh) Uefi bios的即时调试方法、系统、存储介质及设备
JP2010102441A (ja) 情報処理装置、情報処理プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20061110

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090302

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090929

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091127

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091222

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100215

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20100323

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100617

A911 Transfer of reconsideration by examiner before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20100701

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: 20100720

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100721

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130730

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees