説明

シーケンス監視自動プログラミング装置、自動プログラミング方法、およびプログラム

【課題】必要とするシーケンス監視機能を各モジュールに誤りなく自動的に組み込むことが可能な自動プログラミング装置を提供する。
【解決手段】プログラムのソースコードを入力するソースコード入力部1と、該ソースコードから監視対象となるモジュールを検出する対象モジュール検出部2と、監視対象となるモジュールとその識別コード、先行モジュール識別コードを定義したシーケンス監視テーブルを参照して処理に必要な情報を取得する監視テーブル参照部3と、該シーケンス監視テーブルへの参照で得た情報に従って前記検出した監視対象となるモジュールに対して監視用コードを生成する監視用コード生成部4と、生成した監視用コードを各モジュールのソースコードに挿入してソースコードを出力する監視用コード挿入・ソースコード出力部5と、該ソースコードを実行する際に参照するシーケンス監視実装テーブルを出力する監視実装テーブル出力部6とで構成されている。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、マイクロプロセッサを使用した組込機器におけるプログラム実行状態を監視するシーケンス監視自動プログラミング装置、自動プログラミング方法、およびプログラムに関する。
【背景技術】
【0002】
従来、組込機器のプログラム実行状態を監視する技術について幾つかの提案が見受けられるが、監視機能を実行プログラムに組み入れる技術に関しては、ほとんど、作業員が監視対象となる各モジュールのソースコードに個別に監視機能を組み入れるようにしているのが現状である。
【0003】
そんな中にあって下記の特許文献1は、記憶部から読み出したプログラムの関数が監視対象の関数である場合には、監視対象の関数に対して監視処理が施されるように当該プログラムに監視コードを挿入し、プログラム実行部が監視コードの挿入された関数を実行することでプログラムの実行状態を監視する技術を開示している。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2004−287869号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
上記した従来の技術では、モジュール個別に作業員が監視機能を組み入れる必要があるため以下に示す課題があった。すなわち、
作業員による手作業のためプログラミング誤りが発生する可能性がある。また組み入れる記述内容がモジュール毎に異なるため、プログラミング誤りが発生する可能性がある。さらに簡単な実行シーケンスの場合は、組み入れる監視機能も簡素であるが、監視対象となるモジュールの数が多くなり、構成が複雑になると、組み入れる監視機能の誤り、抜けなどが発生する可能性が高くなる。また作業員による作業工数も増大する。その結果、必要とする監視シーケンスと実際に各モジュールに組み込まれている監視機能の整合が取れているかどうか確認する必要があり、モジュールの構成、監視シーケンスが複雑になるほど確認の漏れ、誤りが発生する可能性が高くなる。そのうえ監視内容が変更になった場合、各モジュール本体の修正も必要となり、作業員による作業量がさらに増大する。
【0006】
また上記特許文献1に係る従来技術は、プログラム実行時に監視用コードを埋め込む方式を提供するもので、製品に複雑な処理機構を実装する必要があり、ROMベースで動作する簡素な組込機器製品には適用できないという課題があった。
【0007】
そこで本発明は、上記の諸課題を解決し、必要とするシーケンス監視機能を各モジュールに誤りなく自動的に組み込むことが可能なシーケンス監視自動プログラミング装置、自動プログラミング方法、およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【0008】
上記課題を解決するために本発明のシーケンス監視自動プログラミング装置、自動プログラミング方法、およびプログラムでは、シーケンス監視の対象となるモジュールに対するシーケンス監視を定義したテーブルを参照してその情報から監視処理のコードを自動的
に生成し、シーケンスを監視する監視機能としてシーケンス監視の対象となる各モジュールのソースコードに自動的に埋め込むと共に実行コード生成時に参照するシーケンス監視実装テーブルを出力するようにしたものである。
【発明の効果】
【0009】
本発明によれば、シーケンス監視及び時間監視の処理の内容を、各モジュールのプログラミングとは別個に定義し、それらの監視機能を挿入したソースコードを自動的に出力するため、作業員によるプログラミング誤りを無くし且つ作業工数の削減を図ることができる。
【図面の簡単な説明】
【0010】
【図1】本発明の実施形態に係るシーケンス監視自動プログラミング装置の構成概要を示すブロック図である。
【図2】本発明の実施例1に係るシーケンス監視自動プログラミング装置の制御及びデータの流れを示す図である。
【図3】モジュールシーケンスが正常な場合における実行状態を示す図である。
【図4】本発明の実施形態に係るシーケンス監視自動プログラミング装置の処理フローを示す図である。
【図5】図4に示した初期化処理「initial」の内容を示す図である。
【図6】図4に示したシーケンス監視処理「check」の内容を示す図である。
【図7】本発明の実施例2に係るシーケンス監視自動プログラミング装置の制御及びデータの流れを示す図である。
【図8】図7に示した実行時間監視処理「timecheck」の内容を示す図である。
【発明を実施するための形態】
【0011】
以下、本発明の実施の形態について、詳細に説明する。
図1は、本発明の実施形態に係るシーケンス監視自動プログラミング装置の構成概要を示すブロック図である。図1において本発明の実施形態に係るシーケンス監視自動プログラミング装置(以下、自動プログラミング装置と略称する)は、プログラムのソースコードを入力するソースコード入力部1と、入力されたソースコードから監視対象となるモジュールを検出する対象モジュール検出部2と、監視対象となるモジュールとその識別コード、先行モジュール識別コードを定義したシーケンス監視テーブル(図2,図7参照)を参照し、定義されている情報の中から処理に必要な情報を取得する監視テーブル参照部3と、該シーケンス監視テーブルへの参照で得た情報に従って前記検出した監視対象となるモジュールに対して監視用コードを生成する監視用コード生成部4と、生成した監視用コードを各モジュールのソースコードに挿入(編集)してソースコードを出力する監視用コード挿入・ソースコード出力部5と、出力されたソースコードを実行する際に参照するシーケンス監視実装テーブル(図2,図7参照)を出力する監視実装テーブル出力部6とで構成されている。
【0012】
上記した自動プログラミング装置の機能ブロックを実現するハードウェア構成は、当業者によく知られているパソコン(personal computer)レベルのコンピュータで構成されているもので、キーボード,マウス,ポインティングデバイス等を有する入力装置、処理結果を出力する装置の外、入力中又は処理中の内容を確認するためディプレイに表示することが可能な出力装置、メモリに記憶されたプログラムに従って処理を実行するための中央処理装置(CPU)、プログラム及びデータ等を記憶するためのメモリ(ROM(read
only memory),RAM(random access memory),HDD(Hard Disk Device),USB(universal serial bus)メモリ等)、HDD等の記憶媒体を駆動するための記録媒体駆動装置、および、入出力装置へのインタフェースや外部の各種装置とデータ授受を行うためのインタフェース(IF)、等を備えている。また上記コンピュータは、インターネット
等のネットワークに接続する機能を備えていても良い。
【0013】
上記においてソースコード入力部1は、上記コンピュータの入力装置の指示のもと、プログラムに基づいて処理を実行するCPUおよびインタフェース(IF)を介して、外部のソースコードが記憶された記憶媒体にアクセスして該記憶媒体からソースコードをコンピュータ内のメモリに取り込むことで実現可能である。また、対象モジュール検出部2、監視テーブル参照部3、および、監視用コード生成部4は、上記コンピュータのCPUが予め用意されたシーケンス監視テーブル(図2,図7参照)を参照しながらプログラムに基づいて処理を実行し、処理結果をコンピュータ内のメモリに格納することで上記の各機能を実現可能である。なお詳細については後述する。また、監視用コード挿入・ソースコード出力部5および監視実装テーブル出力部6は、上記コンピュータのCPUがメモリに格納された処理結果を出力装置に出力することで実現可能である。なお出力装置に出力する際には必要に応じてインタフェース(IF)を使用することができる。
【実施例1】
【0014】
図2は、本発明の実施例1に係るシーケンス監視自動プログラミング装置の制御及びデータの流れを示す図である。図2に示す実施例1に係る自動プログラミング装置10は、まずソースコードが記述された入力ファイル20からモジュール別にソースコードが含まれた入力モジュール21〜23の内容を読み取る。次に自動プログラミング装置10は、シーケンス監視テーブル30を参照し、その内容に従い、読み取った入力モジュール21〜23に含まれるソースコードを編集し、各モジュール別にソースコードにシーケンス監視機能、例えばinitial処理、check処理などのソフトウェア処理機能、が挿入された出力モジュール41〜43を出力ファイル40として出力する。また、出力されシーケンス監視機能がソースコードに挿入された出力モジュール41〜43のソースコードから実行コードを生成する時に参照するためのシーケンス監視実装テーブル50を出力する。シーケンス監視実装テーブル50では、シーケンス監視テーブル30と同様に、識別コード及び先行モジュール識別コードの各欄にデータが記述される。
【0015】
以上で自動プログラミング装置10の処理は終了するが、以降、出力ファイル40に出力されたシーケンス監視機能がソースコードに挿入された出力モジュール41〜43を用いて、ユーザ(作業員)は通常の開発環境におけるのと同様に出力モジュール41〜43のソースコードに対してコンパイル、ビルドを行うことにより実行コードを生成し、生成した実行コードをマイクロプロセッサ内蔵の組込機器(図示せず)に実装することとなる。このように本発明の実施例1に係る自動プログラミング装置は、監視機能が挿入されたソースコードを自動的に出力するため、作業員によるプログラミング誤りを無くし且つ作業工数の削減を図ることができる。
【0016】
なお上述したシーケンス監視テーブル30は、各モジュールについて、そのモジュール名称31、シーケンススタックの初期化有無32、モジュールの識別コード33および先行モジュール識別コード34を保持する形式で作成される。このシーケンス監視テーブル30は、一般的にはテキストファイル形式で作成することを想定するが、その作成方法、物理的なフォーマットは任意である。
【0017】
また図2に示したシーケンス監視実装テーブル50は、図3に示すモジュールの実行状態を定義したものになる。図3は組込機器(図示せず)における各モジュールの実行順番を示したものであり、module_A、module_Bおよびmodule_Cは一つの実行サイクルの中でこの順番で実行されると正常なシーケンスの実行が行われたものとみなされる例を示したもので、このような実行状態が正常に行われているかを後述するシーケンス監視により自動的に監視する。すなわち、module_Aは実行サイクルの中で最初に実行されるモジュールであり、その処理の中では監視用のシーケンススタック(図示せず)を初期化することが必要であ
り、初期化後にシーケンススタックにmodule_Aを実施したことを示す識別子”A”を格納する。その内容をシーケンス監視実装テーブル30のmodule_Aの部分に記載する。識別子の”A”はここでは文字コードのAを示す。これは例であり、module_Aを一意に特定できるものであれば、任意の数値、他のコード系などを使用できる。
【0018】
そしてmodule_Bはmodule_Aの次に実行されるべきものであり、module_Bに挿入される監視機能としては、実行前にmodule_Aが実行されているかどうかを監視することになる。この内容がシーケンス監視テーブル30のmodule_Bの先行モジュール識別コード34に記載される。
【0019】
またmodule_Cでは、実行前にmodule_A, Bがこの順で実行されている必要があり、この内容がシーケンス監視テーブル30のmodule_Cの先行モジュール識別コード34に記載される。
【0020】
図4は、本発明の実施形態に係るシーケンス監視自動プログラミング装置の処理フローを示す図である。図4において、最初に、まずシーケンス監視テーブル30を参照する環境を作るために初期化する(ステップS41)。これによりこの後はシーケンス監視テーブル30を順に参照しながら処理を行うことができる。次に自動プログラミング装置10は、シーケンス監視テーブル30に記載のモジュール名が含まれたソースコードファイル20を検索する(ステップS42)。そして、シーケンス監視テーブル30の初期化有無32を参照し(ステップS43)、初期化ありであれば(ステップS43:Yes)、ソースコードに初期化の処理(call initial (引数))を挿入する(ステップS44)。初期化の処理の名前はここでは例としてinitialとしてある。処理に渡す引数は、シーケンス監視テーブル30に記載の識別コード33とする。一方、初期化ありでなければ(ステップS43:No)、ソースコードに監視の処理(call check (引数))を挿入する(ステップS45)。監視の処理の名前はここでは例としてcheckとしてある。処理に渡す引数は、上記した初期化ありの場合と同様に、シーケンス監視テーブル30にある識別コード33とする。これらのいずれかの処理が終了した場合には、編集した、つまり監視機能が挿入された、ソースコードを出力する(ステップS46)。これでシーケンス監視テーブル30に記載の一つのモジュールについての処理を終了するので、以下、この処理をシーケンス監視テーブル30に記載があるモジュール分だけ繰り返す(ステップS47)。繰り返しの処理を終了したら、シーケンス監視実装テーブル50を出力して(ステップS48)、自動プログラミング装置の処理を終了する。
【0021】
これにより、シーケンス監視の順番や対象となるモジュールを、本来のモジュールの処理とは独立に定義することで自動的にシーケンスの監視処理が必要なモジュールにだけ組み込むことができる。
【0022】
図5は、図4に示したシーケンス監視の初期化処理(initial(“ ”))の内容を示す図である。図5において、まず監視用のシーケンススタック(図示せず)を初期化する(ステップS51)。しかる後、引数で渡された識別コード33をシーケンススタックに格納する(ステップS52)。こうしてシーケンス監視の初期化処理(initial (“ ”))を終了する。
【0023】
図6は、図4に示したシーケンス監視処理(check(“ ”))の内容を示す図である。図6において、まず引数の識別コード53に対応するモジュールの先行モジュール識別コード52をシーケンス監視実装テーブル50から抽出する(ステップS61)。次にシーケンススタック(図示せず)に格納されている識別コードがシーケンス監視実装テーブル50に記載されている先行モジュール識別コード52の内容と同じ順番に格納されているか確認する(ステップS62)。順番通りに格納されていれば(ステップS62:Yes)、シーケンスが正常であり、引数で渡された識別コード53をシーケンススタックに格納する(ステップS63)。一方、順番通りに格納されていない場合は(ステップS62:No)、異常処理(サブルーチン)を呼
び出す(ステップS64)。異常処理の内容は組込機器固有に記述する内容が含まれており、それにしたがって異常処理(サブルーチン)が実行される。異常処理の内容としては、一般的には、外部に異常発生を表示したり又は外部に警告を発する、さらに、異常が発生したことをしかるべき部署に通知する、或いは、処理を停止または処理を遷移する、などが適宜実施される。本例の場合、異常処理(サブルーチン)が終了したら、通常の処理ルートに戻り、引数で渡された識別コードをシーケンススタックに格納する(ステップS63)。こうしてシーケンス監視処理(check (“ ”))を終了する。
【実施例2】
【0024】
図7は、本発明の実施例2に係るシーケンス監視自動プログラミング装置の制御及びデータの流れを示す図である。図2に示した本発明の実施例1に係るシーケンス監視自動プログラミング装置の制御及びデータの流れとの違いは、自動プログラミング装置10が、ソースコードが記述された入力ファイル20からモジュール別にソースコードが含まれた入力モジュール21〜23の内容を読み取り、次いでシーケンス監視テーブル30を参照し、その内容に従い、読み取った入力モジュール21〜23に含まれるソースコードを編集し、シーケンス監視実装テーブル50とソースコードに監視機能が挿入された出力モジュール41’〜43’を出力する際に、実施例1における処理に加えて、モジュールの実行状況監視項目として、各モジュールの実行監視時間を加えたことである。すなわち、出力されシーケンス監視機能がソースコードに挿入された出力モジュール41’〜43’には各モジュールに実行時間の監視処理、ここではcall timecheck (“ ”)に係るソフトウェア処理、が監視機能として新たに挿入・追加されたことである。また、実行時に参照される実行監視時間が図7に示すシーケンス監視実装テーブル50の実行監視時間53に新たに挿入・追加されたことである。
【0025】
図8は、図7に示した実行時間監視処理(timecheck(“ ”))の内容を示す図である。図8において、まず引数の識別コード53に対応するモジュールの先行モジュール識別コード52をシーケンス監視実装テーブル50から抽出する(ステップS81)。そして実行時間を計算する(ステップS82)。この実行時間の計算は、自動プログラミング装置10内に設けられるソフトウェアタイマを使用する。すなわち当該モジュール処理の開始にあたりタイマカウンタ(図示せず)をリセットし、そのあとで所定周期で生成されるクロック(図示せず)をタイマカウンタに印加してカウントアップさせ、当該モジュール処理の終了時点でタイマカウンタの値を読込み、そのカウント値にクロック周期を乗算して当該モジュール処理に要した実行時間を計算する。次に、計算により求められた実行時間がシーケンス監視実装テーブル50に記載された実行監視時間53以内か否かを判定する(ステップS83)。判定の結果、シーケンス監視実装テーブル50に記載された実行監視時間53以内であれば(ステップS83:Yes)、正常処理として実行時間監視処理を終了する。また、実行監視時間53以内でなければ(ステップS83:No)、異常処理(サブルーチン)を呼び出して、異常処理を実行(ステップS84)し、その異常処理の終了で実行時間監視処理(timecheck (“ ”))を終了する。異常処理の内容は、上述した図6における異常処理の内容と同様、組込機器固有に記述する内容を含み、その内容にしたがって異常処理(サブルーチン)が実行される。本例の場合、異常処理(サブルーチン)が終了したら、実行時間監視処理(timecheck (“ ”))を終了するようにしている。
【符号の説明】
【0026】
1 ソースコード入力部
2 対象モジュール検出部
3 監視テーブル参照部
4 監視用コード生成部
5 監視用コード挿入・ソースコード出力部
6 監視実装テーブル出力部
10 シーケンス監視自動プログラミング装置
20 入力ソースコードファイル
21 ソースコード内容1が含まれた入力モジュール
22 ソースコード内容2が含まれた入力モジュール
23 ソースコード内容3が含まれた入力モジュール
30 シーケンス監視テーブル
31 モジュール名称
32 初期化有無
33 識別コード
34 先行モジュール識別コード
35 実行監視時間
40 監視機能が挿入された出力ソースコードファイル
41,41’ ソースコードに監視機能1が挿入された出力モジュール
42,42’ ソースコードに監視機能2が挿入された出力モジュール
43,43’ ソースコードに監視機能3が挿入された出力モジュール
50 シーケンス監視実装テーブル
51 識別コード
52 先行モジュール識別コード
53 実行監視時間

【特許請求の範囲】
【請求項1】
プログラムのソースコードを入力する手段と、
入力されたソースコードから監視対象となるモジュールを検出する手段と、
前記監視対象となるモジュールとその識別コード、先行モジュール識別コードについて定義した情報を取得するためにシーケンス監視テーブルを参照する手段と、
該シーケンス監視テーブルへの参照で得た情報に従って前記検出した監視対象となるモジュールに対して監視用コードを生成する手段と、
生成した前記監視用コードを各モジュールのソースコードに挿入して出力する手段と、
実行コード生成時の参照のためにシーケンス監視実装テーブルを出力する手段と、
を具備したことを特徴とするシーケンス監視自動プログラミング装置。
【請求項2】
前記シーケンス監視テーブルに定義されたモジュールの実行監視時間に関する情報を参照する手段と、
該参照した各モジュールの実行監視時間から実行時間監視用のコードを生成する手段と、
生成した前記実行時間監視用のコードを各モジュールのソースコードに挿入して出力する手段と、
実行監視時間が定義されたシーケンス監視実装テーブルを出力する手段と、
を更に具備したことを特徴とする請求項1に記載のシーケンス監視自動プログラミング装置。
【請求項3】
プログラムのソースコードを入力する過程、
入力されたソースコードから監視対象となるモジュールを検出する過程、
前記監視対象となるモジュールとその識別コード、先行モジュール識別コードについて定義した情報を取得するためにシーケンス監視テーブルを参照する過程、
該シーケンス監視テーブルへの参照で得た情報に従って前記検出した監視対象となるモジュールに対して監視用コードを生成する過程、
生成した前記監視用コードを各モジュールのソースコードに挿入して出力する過程、および、
実行コード生成時の参照のためにシーケンス監視実装テーブルを出力する過程、
を含むことを特徴とするシーケンス監視自動プログラミング方法。
【請求項4】
前記シーケンス監視テーブルに定義されたモジュールの実行監視時間に関する情報を参照する過程、
該参照した各モジュールの実行監視時間から実行時間監視用のコードを生成する過程、
生成した前記実行時間監視用のコードを各モジュールのソースコードに挿入して出力する過程、および、
実行監視時間が定義されたシーケンス監視実装テーブルを出力する過程、
を更に含むことを特徴とする請求項3に記載のシーケンス監視自動プログラミング方法。
【請求項5】
シーケンス監視処理を定義したシーケンス監視テーブルを参照する手段を有する情報処理装置において監視用コードを挿入したソースコードを自動的に生成し出力するためのプログラムであって、
コンピュータに、
プログラムのソースコードを入力する機能、
入力されたソースコードから監視対象となるモジュールを検出する機能、
前記監視対象となるモジュールとその識別コード、先行モジュール識別コードについて定義した情報を取得するためにシーケンス監視テーブルを参照する機能、
該シーケンス監視テーブルへの参照で得た情報に従って前記検出した監視対象となるモジュールに対して監視用コードを生成する機能、
生成した前記監視用コードを各モジュールのソースコードに挿入して出力する機能、および、
実行コード生成時の参照のためにシーケンス監視実装テーブルを出力する機能、
を実現させるためのプログラム。
【請求項6】
前記コンピュータに、
前記シーケンス監視テーブルに定義されたモジュールの実行監視時間に関する情報を参照する機能、
該参照した各モジュールの実行監視時間から実行時間監視用のコードを生成する機能、
生成した前記実行時間監視用のコードを各モジュールのソースコードに挿入して出力する機能、および、
実行監視時間が定義されたシーケンス監視実装テーブルを出力する機能、
を更に実現させるための請求項5に記載のプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2011−159115(P2011−159115A)
【公開日】平成23年8月18日(2011.8.18)
【国際特許分類】
【出願番号】特願2010−20379(P2010−20379)
【出願日】平成22年2月1日(2010.2.1)
【出願人】(000005234)富士電機株式会社 (3,146)
【Fターム(参考)】