JP5636783B2 - プログラマブルコントローラ、およびプログラマブルコントローラのデバッグ方法 - Google Patents

プログラマブルコントローラ、およびプログラマブルコントローラのデバッグ方法 Download PDF

Info

Publication number
JP5636783B2
JP5636783B2 JP2010164736A JP2010164736A JP5636783B2 JP 5636783 B2 JP5636783 B2 JP 5636783B2 JP 2010164736 A JP2010164736 A JP 2010164736A JP 2010164736 A JP2010164736 A JP 2010164736A JP 5636783 B2 JP5636783 B2 JP 5636783B2
Authority
JP
Japan
Prior art keywords
machine language
language object
optimized machine
optimized
programmable controller
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
JP2010164736A
Other languages
English (en)
Other versions
JP2012027639A (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 JP2010164736A priority Critical patent/JP5636783B2/ja
Publication of JP2012027639A publication Critical patent/JP2012027639A/ja
Application granted granted Critical
Publication of JP5636783B2 publication Critical patent/JP5636783B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Debugging And Monitoring (AREA)
  • Programmable Controllers (AREA)

Description

本発明は、プログラマブルコントローラのデバッグ方法に関する。
プログラムを高速に処理するため、プログラムのコンパイル時に最適化を行なう方法が提案されている。しかし、最適化された機械語オブジェクト(以降、最適化機械語オブジェクトと称す)はプログラムの実行順序の変更や不用変数の削除等が行われた可能性があるため、ソースコード上でデバックすることが困難になる。
そこで、従来、最適化機械語オブジェクトを入力し、この最適化機械語オブジェクトを逆コンパイルしてソースコードでデバッグするためのデバッグ用ソースコードを生成し、このデバッグ用ソースコードとシンボル情報などを用いてソースコード上でデバッグするようにしたソースコードレベルデバッグ装置が提案されている(例えば、特許文献1参照)。
特開平6−242942号公報
しかしながら、上記特許文献1に記載の従来例にあっては、デバッグの都度、最適化機械語オブジェクトを逆コンパイルしてデバッグ用のソースコードを生成する必要があり、このため作業が煩雑になり、デバッグの効率がよくないという問題がある。
本発明は、上記のような問題に着目して考案されたものであり、デバッグ時にソースコード上でデバッグできるとともに、デバッグプロセスを簡単に実装することが可能なプログラマブルコントローラを提供することにある。
上記のような課題を解決する方法として、本発明は以下のように構成される。
発明は、機器を制御するプログラマブルコントローラであって、機器を制御する最適化機械語オブジェクトを保持する第一の記憶領域と、機器を制御する非最適化機械語オブジェクトを保持する第二の記憶領域と、最適化機械語オブジェクトの先頭アドレスまたは非最適化機械語オブジェクトの先頭アドレスを登録するテーブルと、このテーブルに登録されたいずれかの先頭アドレスを指定して最適化機械語オブジェクトまたは非最適化機械語オブジェクトを実行するプログラム実行部と、外部からのデバッグ指示に基づき非最適化機械語オブジェクトの先頭アドレスをテーブルに登録してプログラム実行部に非最適化機械語オブジェクト実行させるデバッグ制御部とを備えるように構成し、デバッグ制御部は、機器を制御する制御周期に同期してテーブルに非最適化機械語オブジェクトの先頭アドレスを登録し、デバッグの終了指示に基づき、前記機器を制御する制御周期に同期して前記テーブルに前記最適化機械語オブジェクトの先頭アドレスを登録する
また、本発明において、最適化機械語オブジェクトおよび非最適化機械語オブジェクトは該プログラマブルコントローラに接続されるプログラミング装置によりコンパイルされてそれぞれ送信され、該プログラマブルコントローラは、最適化機械語オブジェクトおよび非最適化機械語オブジェクトを受信の際、最適化機械語オブジェクトを第一の記憶領域に転送し、非最適化機械語オブジェクトを第二の記憶領域に転送するとともに、第一の記憶領域に転送された最適化機械語オブジェクトの先頭アドレスをテーブルに登録するオブジェクト転送部をさらに備えるよう構成する。
また、本発明において、デバッグ制御部は、機械語オブジェクトの実行の停止位置を示すブレーク位置情報が外部から通知されると、ブレーク位置情報に基づき非最適化機械語オブジェクトの所定箇所に機械語オブジェクトの実行を停止するためのブレーク命令を挿入し、プログラム実行部はブレーク命令の実行に伴い、非最適化機械語オブジェクトの実行を停止し、この停止状態を外部に送信するよう構成する。
また、本発明において、プログラミング装置は、IEC言語で記述されたソースコードを最適化機械語オブジェクトと非最適化機械語オブジェクトとに同時に変換するコンパイル機能を具備するよう構成する。
また、本発明のプログラマブルコントローラのデバッグ方法は、テーブルに登録されたアドレスデータを指定して機械語オブジェクトを実行するプログラマブルコントローラのデバッグ方法であって、
最適化機械語オブジェクトを保持する第一の記憶領域と、非最適化機械語オブジェクトを保持する第二の記憶領域と、を備え、
通常の運用状態では第一の記憶領域に保持された最適化機械語オブジェクトの先頭アドレスを指すようにテーブルにアドレスデータを登録して最適化機械語オブジェクトを実行し、
ユーザによって設定されたブレーク位置情報を含むデバッグ指示を外部から受信すると、ブレーク位置情報に基づき非最適化機械語オブジェクトの所定箇所にプログラムの実行を停止するためのブレーク命令を挿入し、デバッグ指示に基づき第二の記憶領域に保持された非最適化機械語オブジェクトの先頭アドレスを指すようにテーブルにアドレスデータを前記プログラマブルコントローラが機器を制御する制御周期に同期して登録して非最適化機械語オブジェクトを実行し、ブレーク命令の実行に伴い非最適化機械語オブジェクトの実行を停止し、この停止状態をプログラミング装置に送信してユーザに通知する、一方、デバッグの終了指示を受信すると、前記プログラマブルコントローラが前記機器を制御する制御周期に同期して前記テーブルに前記最適化機械語オブジェクトの先頭アドレスを登録するよう構成する。
本発明によれば、ソースコードをコンパイルして最適化機械語オブジェクトとデバッグ可能な非最適化機械語オブジェクトとを生成し、生成された最適化機械語オブジェクトと非最適化機械語オブジェクトとをプログラマブルコントローラに転送するようプログラミング装置を構成する。
また、本発明によれば、所定のテーブルを参照してテーブルに登録されたアドレスデータを間接アドレス指定してプログラムを実行するようプログラマブルコントローラを構成するとともに、プログラミング装置から転送された最適化機械語オブジェクトと非最適化機械語オブジェクトとをそれぞれプログラムメモリに転送し、通常時(運用時)では最適化機械語オブジェクトの先頭アドレスを指すようにテーブルのアドレスデータを登録するので、プログラマブルコントローラは通常時において最適化機械語オブジェクトを高速に実行できる。
また、プログラマブルコントローラは、デバッグ指示をプログラミング装置から受信すると、このデバッグ指示に基づき非最適化機械語オブジェクトの先頭アドレスを指すようにテーブルにアドレスデータを登録する。このようにすることにより、プログラマブルコントローラは、デバッグのとき非最適化機械語オブジェクトを実行するので、ユーザは最適化機械語オブジェクトを逆コンパイルして転送するなど貧雑な作業が軽減され簡単にリアルタイムにデバッグすることができる。
さらに、本発明に係るプログラマブルコントローラは、ユーザがソースプログラムで設定したブレーク位置情報がプログラミング装置から通知されると、非最適化機械語オブジェクトにプログラムの実行を停止するためのブレーク命令を挿入し、このブレーク命令の実行に伴い非最適化機械語オブジェクトの実行を停止するので、ユーザはソースプログラムの任意の箇所でプログラマブルコントローラを停止させることができる。
よって、デバッグの際の解析が容易に進められ、効率的にデバッグすることができるプログラマブルコントローラシステムが提供される。
本発明に係るプログラマブルコントローラシステムの一実施形態を示すシステム構成図 本発明に係るプログラマブルコントローラのブロック図 本発明に係るプログラマブルコントローラシステムの機能構成図 図1に係るプログラミング装置の支援処理の一例を示すフローチャート メニュー画面を示す説明図 本発明に係るプログラマブルコントローラのオブジェクト展開処理手順の一例を示すフローチャート 本発明に係るプログラマブルコントローラのデバッグ制御処理手順の一例を示すフローチャート 送信される機械語オブジェクトの構成を示す説明図 デバッグ時に送信されるデバッグ情報を示す説明図 機械語オブジェクトとアドレステーブルの展開を説明するための説明図 デバッグ時のアドレステーブルの展開状態を示す説明図
以下、本発明の一実施形態について、図面を参照しながら説明する。以降の説明においてアドレス表記は16進数である。
図1は、本発明に係るプログラマブルコントローラシステムの一実施形態を説明する構成図である。図1に示すように、このシステムは、プログラミング装置100がプログラマブルコントローラ(以下、PLC(プログラマブルロジックコントローラ)という)200と信号線110により接続されており、PLC200は制御機器300に接続されている。PLC200はシーケンス制御プログラムを実行して制御機器300を制御する。
プログラミング装置100は、中央演算処理装置(CPU)101、内部メモリ104、記憶装置105、マウスやキーボード等からなる入力装置102、表示器103、入出力インターフェイス(I/O)106などから構成され、これらが共通バス107に接続されている。
記憶装置105には各種のデータが記憶されている。入力装置102は、オペレータによって外部から操作されるマウスやキーボード等からの入力イベントをCPU101に通知する。
表示器103は、例えば液晶ディスプレイからなり、入力イベントに応じて、各種データや画像を表示する。I/O106は、信号線110を介してPLC200と接続されており、プログラミング装置100とPLC200とのデータを授受する。
CPU101は、入力装置102に入力される入力イベントと、内部メモリ104から読み出したプログラムに従って、記憶装置105から各種のデータを読み出しながら、或いは記憶装置105に各種のデータを書き込みながら、各部の動作を制御する。さらに、CPU101はパラメータなどPLC200に対する動作指示を、I/O106を介してPLC200に送出したり、PLC200が実行するためのシーケンス制御プログラムをI/O106を介してPLC200にダウンロードすることができる。
このように構成されたプログラミング装置100は、ユーザによってプログラミングされたソースプログラムをコンパイルして、後述する図2のCPU211が直接実行可能な実行コード(機械語)を生成する機能を有している。そして、実行コードが、信号線110を介してCPUモジュール210にダウンロードされることにより、CPUモジュール210は、システムプログラムメモリ212などに保持されたシーケンス制御プログラムを、ダウンロードされた実行コードに更新する(プログラム更新手段)ことができる。
図2はPLC200の内部構成図である。
PLC200はCPU(Central Processing Unit)モジュール210を有する。このCPUモジュール210はCPU211、ドライバ/レシーバ217、PLC固有バスインターフェース214、システムプログラムメモリ(FLASH)212、システムワークメモリ(RAM(Random Access Memory))216、ユーザプログラムメモリ(RAM)213、ユーザデータメモリ(RAM)215などを有し、それらがバス218により接続されている。また、CPUモジュール210はPLC固有バスインターフェース214を通して入出力モジュール222と接続される。
また、PLC200はパワーオンまたはリセットスタート後、システムの初期化を経てシステムプログラムメモリ212に保持されたシーケンス制御プログラムをサイクリックに実行して、所定の制御周期で制御を行うよう構成されている。
図3は、本発明の一実施形態であるプログラム開発システムの機能構成図である。図中、プログラミング装置100(プログラミングローダ)はユーザによって作成されたソースコード(ソースプログラム)を機械語オブジェクトに変換するコンパイル機能を備える。このプログラミング装置100によってコンパイルされた機械語オブジェクトはPLC200などのターゲットにダウンロードされる。
ユーザは、ユーザインタフェース部11でIEC(International Electrotechnical Commission)言語のプログラムを記述してソースコードを作成する。
ユーザインタフェース部11は、作成されたソースコードをコンパイラ12に与える。コンパイラ12は与えられたソースコードをコンパイルして最適化機械語オブジェクト13を出力するとともに、非最適化機械語オブジェクト15を出力し、図示しない記憶領域に格納する。これら最適化機械語オブジェクト13および非最適化機械語オブジェクト15はそれぞれデータ通信部14を介してPLC200にダウンロードされる。
ダウンロードされる機械語オブジェクトは図8のように、識別番号41、種別42、そして、機械語オブジェクト(オブジェクト本体)43で構成される。識別番号41はコンパイル後の最適化機械語オブジェクトおよび非最適化機械語オブジェクトに付与される番号であり、ソースコードに対して一意に識別するための識別子である。種別42は機械語オブジェクト43が最適化されたものか、デバッグ可能な非最適化のものかを示す種別コードであり、本発明の実施形態では「1」を最適化された機械語オブジェクト、「2」を非最適化の機械語オブジェクトと定義している。
PLC200はオブジェクト展開部25を有し、該オブジェクト展開部25はデータ通信部21を通じてプログラミング装置100から入力される最適化機械語オブジェクト13を最適化機械語オブジェクト22としてユーザプログラムメモリ213に転送する。また、オブジェクト展開部25はプログラミング装置100から入力される非最適化機械語オブジェクト15を非最適化機械語オブジェクト23としてユーザプログラムメモリ213に転送する。そして、これら転送の際に、オブジェクト展開部25は最適化機械語オブジェクト22の転送先のアドレスをアドレステーブル24に書き込む(詳細は後述)する。
続いて、PLC200は、機械語オブジェクトを順次実行するプログラム実行部27を有し、このプログラム実行部27はアドレステーブル24に保持されたアドレスデータを参照し、該アドレスデータを間接アドレス指定して、そのアドレス先に保持された機械語オブジェクトを実行するよう構成されている。
プログラム実行部27は、不図示のプログラム実行管理部により所定の周期毎に呼び出され(コールされ)、前述のようにサイクリックに制御を実行する。
通常時(PLC運用時)、アドレステーブル24には最適化機械語オブジェクト22の先頭アドレスが書き込まれているため、プログラム実行部27は最適化機械語オブジェクト22を実行する。
一方、デバッグ時には、プログラミング装置100からデバッグ開始通知が送信される。このデバッグ開始通知を受信したPLC200は、デバッグ制御部26によってアドレステーブル24のアドレスデータを非最適化機械語オブジェクト23の先頭アドレスに書き換える。このように書き換えられたアドレステーブル24のアドレスデータはプログラム実行部27によって参照され、この結果、プログラム実行部27はデバッグ時において非最適化機械語オブジェクト23を実行することになる。
そして、デバッグの終了時にはプログラミング装置100からデバッグ完了通知が送信される。デバッグ完了通知を受信したPLC200は、デバッグ制御部26によってアドレステーブル24を最適化機械語オブジェクト22の先頭アドレスに書き換える。
このようにして、PLC200は通常時に実行する機械語オブジェクトとデバッグ時に実行する機械語オブジェクトを切り替えて実行する。
すなわち、通常時は最適化機械語オブジェクト22の先頭アドレスをアドレステーブル24に登録し、デバッグ時には非最適化機械語オブジェクト23の先頭アドレスをアドレステーブル24に登録することにより、通常時とデバッグ時とで機械語オブジェクトを切り替えて実行することができるので、最適化機械語オブジェクトを実行するPLCのデバッグ作業が極めて容易になる。
ここで、プログラミング装置100の具体的な処理の一例を説明する。図4は、プログラミング装置100の支援処理手順の一例を示している。この支援処理は、先ず、ステップS1で、処理メニューを表示する。この処理メニューとしては図5に示すように、コンパイル開始ボタン31、デバッグ開始ボタン32、デバッグ終了ボタン34、終了ボタン33が少なくとも設定されており、これらボタン31〜34のうちの所望のメニュー上に例えばマウス、キーボード等の入力装置102によってカーソルを移動させ、この状態で例えばマウスをクリックすることにより、メニューを選択することができる。
続いて、支援処理はステップS2に移行して、コンパイル開始ボタン31が選択されたか否かを判定し、コンパイル開始ボタン31が選択されていないときには、後述するステップS6に移行し、コンパイル開始ボタン31が選択されたときには、ステップS3に移行する。ステップS3に移行した支援処理は、ソースコードを最適化コンパイルして最適化機械語オブジェクト13に変換する。
続いて、ステップS4に移行し、支援処理はソースコードを最適化せずにコンパイルして、デバッグ可能な非最適化機械語オブジェクト15を生成し、続いてステップS5に移行して最適化機械語オブジェクト13および非最適化機械語オブジェクト15を、データ通信部14を介してPLC200にダウンロードし、ステップS6に移行する。
プログラミング装置100には、最適化用のコンパイラと非最適化用のコンパイラが搭載されている。上述ステップS3でソースコードを最適化するための最適化コンパイラが機能し、上述ステップS4でソースコードを最適化しない非最適化コンパイラが機能する。
もしくは、1つのコンパイラにパラメータを与え、最適化するモードと最適化しないモードとを切り替えて最適化機械語オブジェクト13と非最適化機械語オブジェクト15を生成するようにしても良い。この場合、ステップS3で最適化モードのパラメータをコンパイラに与え、ステップS4で非最適化モードのパラメータをコンパイラに与えるように、パラメータをコンパイラに自動的に与えるようプログラミング装置を構成すれば良い。
上述のように、2つのコンパイラもしくは1つのコンパイラをモードを切り替えてコンパイルすることにより、最適化機械語オブジェクト13および非最適化機械語オブジェクト15は、同時に生成される。
なお、最適化機械語オブジェクト13および非最適化機械語オブジェクト15には、ソースコードに対して一意に識別するための識別番号が付与され、この識別番号とソースコードとの対応が容易に管理されるよう所定の対応表がコンパイル時に作成される。
続いて、ステップS6において、支援処理はデバッグ開始ボタン32が選択されたか否かを判定し、デバッグ開始ボタン32が選択されていないときにはステップS13に移行して、支援処理を終了するか否かを判定する。この判定は、図5に示す処理メニューに表示されている終了ボタン33が選択されているか否かを判定し、終了ボタン33が選択されたら、支援処理を終了し、終了ボタン33が選択されていないときにはステップS1に戻る。
また、ステップS6の判定の結果、デバッグ開始ボタン32が選択されているとき、ステップS7に移行して、デバッグ時にPLCの処理を停止させるブレークポイントを設定し、続いてステップS8に移行して、PLC200に対してデバッグ開始通知を送信する。なお、ブレークポイントの設定については後述するが、ブレークポイントとはソースコードにおける任意の位置に相当する箇所で、プログラム実行を中止させる為の一種のマーカー(識別子)であって、その実現方法はどのような形式でも構わない。以降の説明では、一例として、ブレークポイント処理コード(ブレーク命令)を挿入する方法を用いるものとする。
続いて、ステップS9に移行して、支援処理はPLC200から、後述するブレークポイント処理コードの挿入処理が完了したこと意味する処理完了通知を受信したか否かを判定し、処理完了通知を受信していないときには処理完了通知を受信するまで待機し、処理完了通知を受信したときにはステップS10に移行する。
ステップS10で支援処理は、PLC200の状態を表示して(例えばPLC200がブレークしたときのステータス表示など)のデバッグ処理を実行し、続いて、ステップS11に移行して、デバッグ終了ボタン34が選択されたか否かを判定してデバッグ処理の終了を判定し、デバッグ処理が終了していないときにはこれが終了するまで待機し、デバッグ処理が終了したときにはステップS12に移行して、デバッグ終了通知をデータ通信部14を介してPLC200に送信してから前述ステップS13に移行する。
ここで、PLC200の具体的な処理の一例を説明する。
図6は、オブジェクト展開部25のオブジェクト展開処理を説明するフロー図である。オブジェクト展開部25はプログラミング装置100から受信した機械語オブジェクトをユーザプログラムメモリ213などに転送する。
先ず、オブジェクト展開処理はステップS20で、プログラミング装置100から受信した機械語オブジェクトが最適化されたものか否かを、図8の種別42を参照して判定する。判定した結果、機械語オブジェクトが最適化されたものでなければ(種別42が「2」のとき)ステップS23に移行し、最適化されたものであれば(種別42が「1」のとき)ステップS21に移行する。
ステップS21に移行したオブジェクト展開処理は図8の機械語オブジェクト43をユーザプログラムメモリ213の最適化機械語オブジェクト保存領域(不図示)に転送するとともに、識別番号41の情報と機械語オブジェクトの転送先のアドレスを対応付けて不図示のバックアップ領域にバックアップする。
続いて、処理はステップS22に移行し、オブジェクト展開処理は最適化機械語オブジェクト13の保存先のアドレスをアドレステーブル24に書き込み、オブジェクト展開処理を終了する。
前述ステップS20で機械語オブジェクトが最適化されたものでないと判定された場合、処理はステップS23に移行する。ステップS23に移行したオブジェクト展開処理は、機械語オブジェクト43をユーザプログラムメモリ213の非最適化機械語オブジェクト保存領域に転送するとともに、識別番号41の情報と機械語オブジェクトの転送先アドレスを対応付けて不図示のバックアップ領域にバックアップする。そして、オブジェクト展開処理を終了する。
図7は、デバッグ制御部26のデバッグ制御処理を説明するフロー図である。デバッグ制御部26はプログラミング装置100から図9に示すデバッグ情報(詳細は後述)を受信すると、該デバッグ情報を基に、非最適化機械語オブジェクト23の先頭アドレスをアドレステーブル24に書き込むことにより、プログラム実行部27に非最適化機械語オブジェクト23を実行させる。
図7において、デバッグ制御処理は、プログラミング装置100から図9に示すデバッグ情報を受信すると、ステップS30で前述不図示のバックアップ領域を参照し、識別番号51に対応する非最適化機械語オブジェクトの先頭アドレスを抽出する。そして、抽出されたアドレスをアドレステーブル24に書き込むことにより、非最適化機械語オブジェクトの格納先をプログラム実行部に与える。
処理はS31に移行し、デバッグ制御処理はブレーク位置52を参照してブレークポイントの位置を認識し、該当位置にブレークポイント処理コードを挿入してからステップS32に移行し、ブレークポイント処理コードの挿入処理が全て終了したか否かを判定し、ブレークポイント処理コードの挿入処理が終了していないときには前述ステップS31に戻り、ブレークポイント処理コードの挿入処理が全て終了したときにはステップS33に移行して、処理完了通知を、データ通信部21を介してプログラミング装置100に送信してからステップS34に移行する。
続いて、ステップS34においてデバッグ制御処理は、プログラミング装置100からデバッグ完了通知を受信したか否かを判定し、デバッグ完了通知を受信していないときにはこれを受信するまで待機し、デバッグ完了通知を受信したときにはステップS35に移行して、アドレステーブル24を最適化機械語オブジェクト22用のアドレスに切換えてからデバッグ制御処理を終了する。
次に、上記実施形態の動作を説明する。
プログラミング装置100を使用してPLC200に機械語オブジェクトをダウンロードするには、ユーザは先ず、プログラミング装置100のユーザインタフェース部11でプログラムをIEC言語で記述したソースコードを作成する。そして、このソースコードを作成した状態で、プログラミング装置100で、表示器103に表示された処理メニューからコンパイル開始ボタン31を選択する。このコンパイル開始ボタン31が選択されることによって、コンパイラ12はソースコードをコンパイルして最適化機械語オブジェクト13を生成し、これを不図示の記憶領域に格納する。
最適化機械語オブジェクト13は、ソースコードの実行順序の変更、レジスタの有効活用等が行われて、コードサイズが縮小された最適化された機械語オブジェクトである。最適化機械語オブジェクト13は、POU(Program Organization Unit)毎に生成される。このPOUとは、プログラム構成単位であり、PLC200の言語要素である。なお、POUの種類には、アプリケーションプログラム、ファンクションブロックなどがあり、C言語の関数に相当するものである。
また、コンパイラ12は、上述コンパイルの際、非最適化機械語オブジェクト15を生成し不図示の記憶領域に格納する。非最適化機械語オブジェクトとは、上述のような最適化が行われていない機械語オブジェクトである。非最適化機械語オブジェクトもPOU毎に生成される。
コンパイルが終了するとプログラミング装置100は、データ通信部14を介して最適化機械語オブジェクト13と非最適化機械語オブジェクト15とをPLC200にダウンロードする。
このとき、送信されるそれぞれの機械語オブジェクト(POU)は、図8に示すように、識別番号41および判別情報42が、機械語オブジェクト(本体)43に付加されてPLC200にダウンロードされる。判別情報42は機械語オブジェクト(本体)43が最適化機械語オブジェクトであるか、それとも非最適化機械語オブジェクトであるかを示すものである。
PLC200はプログラミング装置100から図8に示す識別番号41及び判別情報42が付加された機械語オブジェクトを受信すると、機械語オブジェクト43をユーザプログラムメモリ213に転送する。この転送の際、機械語オブジェクト43の転送先アドレスをアドレステーブルに登録する。
例えば、図10に示すように、PLC200は4つの機械語オブジェクト(61a、61b、61c、61d)をプログラミング装置100から受信したとする。機械語オブジェクト61aおよび61bは、その種別が最適化なので、ユーザプログラムメモリ213の最適化機械語オブジェクト格納領域(0番地〜7FFF番地)に識別番号順にそれぞれ格納され、アドレステーブル24の識別番号1用アドレス欄には、ユーザプログラムメモリ213に格納された機械語オブジェクト61aの先頭アドレス「0000」が書き込まれる。同様、アドレステーブル24の識別番号2用アドレス欄には、ユーザプログラムメモリ213に保持された機械語オブジェクト61bの先頭アドレス「1000」が書き込まれる。そして、それぞれの先頭アドレスは識別番号と対応付けされて不図示のバックアップ領域にバックアップされる。
すなわち、PLC200は複数の機械語オブジェクトそれぞれを、最適化機械語オブジェクトと非最適化機械語オブジェクトとに分類した上で、識別番号順にユーザプログラムメモリ213に展開する。この際、各最適化機械語オブジェクトが格納されたそれぞれの先頭アドレスをアドレステーブル24に登録する。
一方、機械語オブジェクト61cおよび61dは、その種別が非最適化なので、プログラムメモリ213の非最適化機械語オブジェクト格納領域(8000番地〜)に識別番号順にそれぞれ格納される。この際、機械語オブジェクト61cの格納先の先頭アドレス番地「8000」および機械語オブジェクト61dの格納先の先頭アドレス番地「9000」など、それぞれの先頭アドレスは、機械語オブジェクトの識別番号とその格納先の先頭アドレスが対応付けされて不図示のバックアップ領域にバックアップされる。
PLC200はアドレステーブル24を参照して、該アドレステーブル24のアドレスデータを間接アドレス指定して機械語オブジェクトを実行する。通常時、上述のようにアドレステーブル24には最適化機械語オブジェクト22の先頭アドレスが保持されているので、PLC200は最適化機械語オブジェクト22を実行し、高速化が図られている。
そして、デバッグを行うには、プログラミング装置100のメニュー画面で、ユーザはデバッグ開始ボタン32を選択し、デバッグ処理を開始する。ユーザは、先ず、所望のソースコードにブレークポイントを設定する。プログラミング装置100は、ソースコードをコンパイルした際にソースコード名と機械語オブジェクトの識別番号とを対応付けるテーブルを不図示の記憶領域に保持しており、ユーザによって開かれているソースコード名を基に、該テーブルを参照してソースコードに対応するオブジェクト識別番号を獲得する。
また、プログラミング装置100は、ユーザによって指定されたブレークポイントの位置(行など)を認識し、識別番号とソースコードの行を指定する図9に示すデバッグ情報を作成する。このようにして、ユーザは所望のソースコードを開いてブレークポイントを設定し、プログラミング装置100はデバッグ情報を作成してPLC200にダウンロードする。例えば、図11のデバッグ情報は、識別番号が「2」であり、そのオブジェクトの2行目にブレークポイントが設定された例である。
図11のデバッグ情報を受信したPLC2は、デバッグ情報の識別番号「2」を認識し、アドレステーブル24の識別番号2用アドレス欄に保持されたアドレス「1000」を、非最適化機械語オブジェクト61dが格納されたアドレスを指すように「9000」に更新する。このアドレスは、前述のように機械語オブジェクトをユーザプログラムメモリに転送した際にバックアップし情報を参照することにより獲得される。
このようにして識別番号2用のアドレスを更新することにより、PLC200はユーザプログラムメモリ213の9000番地を先頭番地として保持された識別番号2の非最適化機械語オブジェクト61dを実行する。
さらに、PLC200はデバッグ情報のブレーク位置情報に基づいて、非最適化機械語オブジェクトの該当行にブレークポイント処理コードを挿入する。例えば、図11に示すデバッグ情報は、識別番号が「2」であり、そのオブジェクトの2行目にブレークポイントが設定された例なので、PLC200は識別番号「2」の非最適化機械語オブジェクトの2行目に、ブレークポイント処理コードを挿入する。
続いて、PLC200は処理完了通知をプログラミング装置100に送信して、識別番号「2」の非最適化機械語オブジェクトの2行目に挿入されたブレークポイント処理コードを実行した時点で、識別番号「2」の機械語オブジェクトの実行を停止し待機状態になる。そして、プログラムをブレークしたこと、およびPLC200のCPU211のレジスタの値や入出力モジュール222の入出力データなどをプログラミング装置100に送信する。
プログラミング装置100は、PLC200から前述処理完了通知を受信すると、例えば、上述PLC200のブレークを待ち、PLC200がブレークしたときに送信される前述レジスタの値や入出力データなどを、表示器103を使って表示してユーザにブレーク状態を通知する(デバッグ処理)。そして、ユーザにより解析が行われデバッグ終了ボタン34が押されると、デバッグ終了通知をPLC200に送信する。
デバッグ終了通知を受信したPLC200は、アドレステーブル24をデバッグ用アドレスから最適化用アドレスに切換えるとともに、非最適化機械語オブジェクト23に挿入されたブレークポイント処理コードを削除する。このようにして、PLC200はデバッグ状態から運用状態(通常時)に復帰し、最適化機械語オブジェクト22の実行を再開する。
尚、PLC200は複数のPOUが実装され、これらPOUが連携し動作することで所定のアプリケーションが実行されるように構成されているため、運用状態からデバッグへの切り替えの際のアドレステーブル24のアドレスデータの登録や、デバッグ状態から運用状態(通常時)に復帰する際のアドレステーブル24へのアドレスデータの登録は、前述、PLC200が制御機器300を制御するための制御周期に同期して実行すると良い。
また、上記実施例において、ユーザプログラムメモリはRAMなどの揮発性メモリに限定することはなく、フラッシュメモリなどの書き換え可能な不揮発性メモリで構成してもよい。
また、プログラミング装置100とPLC200とは、必ずしも信号線110により接続される必要はなく、両者一体型として内部のバスにて接続する構成としても良い。
100…プログラミング装置、200…プログラマブルコントローラ、300…制御機器
11…ユーザインタフェース部、12…コンパイラ、13…最適化機械語オブジェクト、14…通信部、15…非最適化機械語オブジェクト
21…通信部、22…最適化機械語オブジェクト、23…非最適化機械語オブジェクト、24…アドレステーブル、25…オブジェクト展開部、26…デバッグ制御部、27…プログラム実行部
41…識別番号、42…種別、43…機械語オブジェクト
51…識別番号、52…ブレーク位置
61…機械語オブジェクト
61a,61b…最適化機械語オブジェクト
61c,61d…非最適化機械語オブジェクト


Claims (5)

  1. 機器を制御するプログラマブルコントローラであって、
    前記機器を制御する最適化機械語オブジェクトを保持する第一の記憶領域と、
    前記機器を制御する非最適化機械語オブジェクトを保持する第二の記憶領域と、
    前記最適化機械語オブジェクトの先頭アドレスまたは前記非最適化機械語オブジェクトの先頭アドレスを登録するテーブルと、
    このテーブルに登録されたいずれかの前記先頭アドレスを指定して前記最適化機械語オブジェクトまたは前記非最適化機械語オブジェクトを実行するプログラム実行部と、
    外部からのデバッグ指示に基づき前記非最適化機械語オブジェクトの先頭アドレスを前記テーブルに登録して前記プログラム実行部に前記非最適化機械語オブジェクト実行させるデバッグ制御部と、を備え、
    前記デバッグ制御部は前記機器を制御する制御周期に同期して前記テーブルに前記非最適化機械語オブジェクトの先頭アドレスを登録し、デバッグの終了指示に基づき、前記機器を制御する制御周期に同期して前記テーブルに前記最適化機械語オブジェクトの先頭アドレスを登録することを特徴とするプログラマブルコントローラ。
  2. 請求項1に記載のプログラマブルコントローラにおいて、
    前記最適化機械語オブジェクトおよび前記非最適化機械語オブジェクトは該プログラマブルコントローラに接続されるプログラミング装置によりコンパイルされてそれぞれ送信され、
    該プログラマブルコントローラは、前記最適化機械語オブジェクトおよび前記非最適化機械語オブジェクトを受信の際、前記最適化機械語オブジェクトを前記第一の記憶領域に転送し、前記非最適化機械語オブジェクトを前記第二の記憶領域に転送するとともに、前記第一の記憶領域に転送された前記最適化機械語オブジェクトの先頭アドレスを前記テーブルに登録するオブジェクト転送部をさらに備えること特徴とするプログラマブルコントローラ。
  3. 請求項1に記載のプログラマブルコントローラにおいて、
    前記デバッグ制御部は、機械語オブジェクトの実行の停止位置を示すブレーク位置情報が外部から通知されると、前記ブレーク位置情報に基づき前記非最適化機械語オブジェクトの所定箇所に機械語オブジェクトの実行を停止するためのブレーク命令を挿入し、
    前記プログラム実行部は前記ブレーク命令の実行に伴い、前記非最適化機械語オブジェクトの実行を停止し、
    この停止状態を外部に送信することを特徴とするプログラマブルコントローラ。
  4. 請求項に記載されたプログラマブルコントローラにおいて、
    前記プログラミング装置は、IEC言語で記述されたソースコードを前記最適化機械語オブジェクトと前記非最適化機械語オブジェクトとに同時に変換するコンパイル機能を具備することを特徴とするプログラマブルコントローラ。
  5. テーブルに登録されたアドレスデータを指定して機械語オブジェクトを実行するプログラマブルコントローラのデバッグ方法であって、
    最適化機械語オブジェクトを保持する第一の記憶領域と、
    非最適化機械語オブジェクトを保持する第二の記憶領域と、を備え、
    通常の運用状態では前記第一の記憶領域に保持された最適化機械語オブジェクトの先頭アドレスを指すように前記テーブルにアドレスデータを登録して前記最適化機械語オブジェクトを実行し、
    ユーザによって設定されたブレーク位置情報を含むデバッグ指示を外部から受信すると、前記ブレーク位置情報に基づき前記非最適化機械語オブジェクトの所定箇所にプログラムの実行を停止するためのブレーク命令を挿入し、前記デバッグ指示に基づき前記第二の記憶領域に保持された前記非最適化機械語オブジェクトの先頭アドレスを指すように前記テーブルにアドレスデータを前記プログラマブルコントローラが機器を制御する制御周期に同期して登録して前記非最適化機械語オブジェクトを実行し、前記ブレーク命令の実行に伴い前記非最適化機械語オブジェクトの実行を停止し、この停止状態を前記プログラミング装置に送信してユーザに通知する、一方、デバッグの終了指示を受信すると、前記プログラマブルコントローラが前記機器を制御する制御周期に同期して前記テーブルに前記最適化機械語オブジェクトの先頭アドレスを登録することを特徴とするプログラマブルコントローラのデバッグ方法。
JP2010164736A 2010-07-22 2010-07-22 プログラマブルコントローラ、およびプログラマブルコントローラのデバッグ方法 Active JP5636783B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010164736A JP5636783B2 (ja) 2010-07-22 2010-07-22 プログラマブルコントローラ、およびプログラマブルコントローラのデバッグ方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010164736A JP5636783B2 (ja) 2010-07-22 2010-07-22 プログラマブルコントローラ、およびプログラマブルコントローラのデバッグ方法

Publications (2)

Publication Number Publication Date
JP2012027639A JP2012027639A (ja) 2012-02-09
JP5636783B2 true JP5636783B2 (ja) 2014-12-10

Family

ID=45780507

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010164736A Active JP5636783B2 (ja) 2010-07-22 2010-07-22 プログラマブルコントローラ、およびプログラマブルコントローラのデバッグ方法

Country Status (1)

Country Link
JP (1) JP5636783B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9940218B2 (en) 2016-02-15 2018-04-10 International Business Machines Corporation Debugging optimized code using fat binary

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5957936B2 (ja) * 2012-02-15 2016-07-27 富士電機株式会社 プログラマブルコントローラシステム、その支援装置、プログラム
JP5484641B1 (ja) * 2013-05-08 2014-05-07 三菱電機株式会社 プログラマブル表示器
JP5859173B1 (ja) * 2014-05-08 2016-02-10 三菱電機株式会社 エンジニアリングツール、プログラム編集装置およびプログラム編集システム
WO2024069730A1 (ja) * 2022-09-27 2024-04-04 三菱電機株式会社 デバッグ装置及びデバッグ方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05204698A (ja) * 1992-01-30 1993-08-13 Nec Ic Microcomput Syst Ltd デバッガ処理方式
JP2001014185A (ja) * 1999-07-01 2001-01-19 Nec Ic Microcomput Syst Ltd コンパイルおよびデバッグ方法
JP2006202233A (ja) * 2005-01-24 2006-08-03 Fuji Electric Fa Components & Systems Co Ltd コントローラ、そのプログラム
JP2006227681A (ja) * 2005-02-15 2006-08-31 Matsushita Electric Ind Co Ltd デバッグ装置、デバッグ方法およびプログラム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9940218B2 (en) 2016-02-15 2018-04-10 International Business Machines Corporation Debugging optimized code using fat binary
US10133652B2 (en) 2016-02-15 2018-11-20 International Business Machines Corporation Debugging optimized code using FAT binary

Also Published As

Publication number Publication date
JP2012027639A (ja) 2012-02-09

Similar Documents

Publication Publication Date Title
CN100555218C (zh) 用于改善片上仿真系统中高级语言的仿真速度的装置和方法
JP5636783B2 (ja) プログラマブルコントローラ、およびプログラマブルコントローラのデバッグ方法
KR101558832B1 (ko) 시퀀스 프로그램 디버그 지원 장치
JP5039428B2 (ja) プログラマブルコントローラ及びplcシステム
JP2008293138A (ja) ソフトウェア開発支援プログラム、ソフトウェア開発支援方法
JP2015141539A (ja) 故障注入プログラム
JP5800135B2 (ja) プログラマブルコントローラ
US20160147638A1 (en) Engineering tool, program editing device, and program editing system
JP2009146229A (ja) プログラマブルコントローラシステム
JP6866663B2 (ja) プログラマブルコントローラシステム、プログラマブルコントローラ、支援装置、hci装置、二重化プログラマブルコントローラシステム
JP5849592B2 (ja) プログラマブルコントローラシステム、そのプログラミング装置、プログラマブルコントローラ、プログラム、デバッグ方法
JP2016224557A (ja) プログラム作成支援装置、プログラムおよび判別方法
US20150277413A1 (en) System construction support apparatus
JP2011107866A (ja) 接続機器シミュレータのシーケンス制御装置、方法、及びプログラム
JP6362821B2 (ja) 制御装置、制御方法および命令セット
US20220326673A1 (en) Support device and storage medium
KR101447846B1 (ko) 모션 sfc 프로그램 부품 작성 장치
JP5589670B2 (ja) デバッグ方法
JP2008135008A (ja) プログラムモジュール検証方式
JP2007179112A (ja) プログラマブル表示器、制御プログラムおよびそのプログラムを記録した記録媒体
CN110471675A (zh) 一种程序烧录方法、系统、装置及计算机可读存储介质
JP6403919B1 (ja) 作画ソフトウェア、記憶媒体および作画装置
JP2016224559A (ja) プログラム作成支援装置、制御方法およびプログラム
JP6119452B2 (ja) プログラマブルコントローラシステム、その支援装置、プログラマブルコントローラ、プログラム
JP5141095B2 (ja) プラントコントローラシステム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130614

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140312

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140401

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140515

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141007

R150 Certificate of patent or registration of utility model

Ref document number: 5636783

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250