JP2008015826A - ラダープログラム実行装置 - Google Patents
ラダープログラム実行装置 Download PDFInfo
- Publication number
- JP2008015826A JP2008015826A JP2006186931A JP2006186931A JP2008015826A JP 2008015826 A JP2008015826 A JP 2008015826A JP 2006186931 A JP2006186931 A JP 2006186931A JP 2006186931 A JP2006186931 A JP 2006186931A JP 2008015826 A JP2008015826 A JP 2008015826A
- Authority
- JP
- Japan
- Prior art keywords
- execution
- instruction
- program
- determination data
- code
- 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.)
- Pending
Links
Images
Landscapes
- Devices For Executing Special Programs (AREA)
- Programmable Controllers (AREA)
Abstract
【課題】スループットの向上を図ることのできるラダープログラム実行装置を得る。
【解決手段】プログラム変換手段1により、ラダープログラム101から実行コード102を生成し、かつ、その命令の演算結果がどのような値であった場合に後続の命令を非実行とするかを示す非実行判定フラグと非実行とする命令数とを示す非実行判定データを実行コード102に付与する。非実行判定手段6は、命令を実行する場合、実行コード102の非実行判定データに基づいて命令の実行・非実行判定を行う。
【選択図】図1
【解決手段】プログラム変換手段1により、ラダープログラム101から実行コード102を生成し、かつ、その命令の演算結果がどのような値であった場合に後続の命令を非実行とするかを示す非実行判定フラグと非実行とする命令数とを示す非実行判定データを実行コード102に付与する。非実行判定手段6は、命令を実行する場合、実行コード102の非実行判定データに基づいて命令の実行・非実行判定を行う。
【選択図】図1
Description
この発明は、ラダープログラムを実行するプログラマブルコントローラ等のラダープログラム実行装置に関するものである。
プログラマブルコントローラは、小規模な機械の制御から大規模な生産設備の制御まで幅広く用いられている。このようなプログラマブルコントローラは、入力されたラダープログラムを実行して各種装置の制御を行っている。従来、このようなプログラマブルコントローラとして、ラダープログラムの処理単位である回路毎に実行/非実行を制御するようにしたものがあった(例えば、特許文献1参照)。このようなプログラマブルコントローラは、各回路に、実行/非実行を指定する回路情報コードを付加し、実行時に、この回路情報コードをチェックし、回路情報コードで非実行が指定されているときにはこの回路の処理をスキップするようにしたものである。
しかしながら、上記従来のプログラマブルコントローラでは、回路毎に実行/非実行を指定しているだけであるため、必ずしも、非実行となる命令を除くということができる訳ではなく、ラダープログラム実行装置のスループット向上の観点からは、不十分であった。
この発明は上記のような課題を解決するためになされたもので、スループットの向上を図ることのできるラダープログラム実行装置を得ることを目的とする。
この発明に係るラダープログラム実行装置は、ラダープログラムから複数の命令で構成される実行コードを生成する共に、前記命令の演算結果に対して後続の命令を非実行とするかを示す非実行判定フラグ及び非実行とする命令数からなる非実行判定データを前記実行コードの前記命令に付与するプログラム変換手段と、前記実行コードを実行する場合、前記命令に付与された前記非実行判定データに基づいて当該命令に後続する命令の実行・非実行判定を行う非実行判定手段とを備えたものである。
この発明のラダープログラム実行装置は、ラダープログラムから実行コードを生成する際に、命令の演算結果がどのような値であった場合に後続の何命令を非実行とするかを示す非実行判定データを付与するようにしたので、スループットの向上を図ることができる。
実施の形態1.
図1は、この発明の実施の形態1によるラダープログラム実行装置を示す構成図である。
図示の構成は、プログラマブルコントローラ内の構成を示しており、プログラム変換手段1、プログラムメモリ2、入力手段3、解析手段4、実行手段5、非実行判定手段6を備えている。プログラム変換手段1は、ラダープログラム101から実行コード102に変換すると共に、この実行コード102に対して、その命令の演算結果がどのような値であった場合に後続の命令を非実行とするかを示す非実行判定フラグと非実行とする命令数(非実行命令数)とを示す非実行判定データを付与して出力する機能を有している。プログラムメモリ2は、プログラム変換手段1で変換された実行コード102を格納するためのメモリである。入力手段3は、プログラムメモリ2から命令データを取得(フェッチ)する手段である。解析手段4は、入力手段3が取得した命令データをデコードする手段である。実行手段5は、解析手段4でデコードされた命令を実行する手段である。非実行判定手段6は、実行手段5で実行した命令に非実行判定データがあった場合は、後続の命令を破棄するかを判定し、破棄条件が成立した場合は、入力手段3,解析手段4及び実行手段5のいずれかに対して後続の命令を破棄するよう指示する手段である。
図1は、この発明の実施の形態1によるラダープログラム実行装置を示す構成図である。
図示の構成は、プログラマブルコントローラ内の構成を示しており、プログラム変換手段1、プログラムメモリ2、入力手段3、解析手段4、実行手段5、非実行判定手段6を備えている。プログラム変換手段1は、ラダープログラム101から実行コード102に変換すると共に、この実行コード102に対して、その命令の演算結果がどのような値であった場合に後続の命令を非実行とするかを示す非実行判定フラグと非実行とする命令数(非実行命令数)とを示す非実行判定データを付与して出力する機能を有している。プログラムメモリ2は、プログラム変換手段1で変換された実行コード102を格納するためのメモリである。入力手段3は、プログラムメモリ2から命令データを取得(フェッチ)する手段である。解析手段4は、入力手段3が取得した命令データをデコードする手段である。実行手段5は、解析手段4でデコードされた命令を実行する手段である。非実行判定手段6は、実行手段5で実行した命令に非実行判定データがあった場合は、後続の命令を破棄するかを判定し、破棄条件が成立した場合は、入力手段3,解析手段4及び実行手段5のいずれかに対して後続の命令を破棄するよう指示する手段である。
次に、実施の形態1のラダープログラム実行装置の動作について説明する。
図2は、実施の形態1の動作を示すフローチャートである。
先ず、プログラム変換手段1は、ラダープログラム101を非実行判定データ付きの実行コードに変換する(ステップST1)。
図3は、ラダープログラム101と実行コード102の一例を示す説明図である。尚、図3では、(c)においてプロファイル103a,103bを示しているが、これについては実施の形態2で説明する。
図3(a)に示すように、ラダープログラム101は、2本のラングを一例として示している。ここで、第1のラングは(b)に示す命令0〜9、第2のラングは命令10〜18に対応している。以下、プログラム変換手段1により、このようなラダープログラム101に対する非実行判定データ付きの実行コード102への変換処理を説明する。
図2は、実施の形態1の動作を示すフローチャートである。
先ず、プログラム変換手段1は、ラダープログラム101を非実行判定データ付きの実行コードに変換する(ステップST1)。
図3は、ラダープログラム101と実行コード102の一例を示す説明図である。尚、図3では、(c)においてプロファイル103a,103bを示しているが、これについては実施の形態2で説明する。
図3(a)に示すように、ラダープログラム101は、2本のラングを一例として示している。ここで、第1のラングは(b)に示す命令0〜9、第2のラングは命令10〜18に対応している。以下、プログラム変換手段1により、このようなラダープログラム101に対する非実行判定データ付きの実行コード102への変換処理を説明する。
図4は、非実行判定データの挿入処理を示すフローチャートである。
先ず、対象とする命令が最後の命令かを判定し(ステップST11)、そうでない場合は接点命令かを判定する(ステップST12)。ステップST12において接点命令であった場合、次に、その接点命令が、その後何命令に影響するかをチェックする(ステップST13)。また、後続命令が非実行になるのは接点が0か1かをチェックする(ステップST14)。尚、これらのチェックは、実行コードを構文解析することで自動的に行えるものである。以上の判断に基づいて非実行判定データを挿入し(ステップST15)、ステップST11に戻り、これらステップST11〜ステップST15の処理を、ステップST11において最後の命令となるまで繰り返し行う。尚、上記ステップST13において、その後影響する命令数が所定の値以下であった場合は、スループット向上が望めないため非実行判定データの付与対象とはせず、このような場合はステップST11に戻るようにしてもよい。
先ず、対象とする命令が最後の命令かを判定し(ステップST11)、そうでない場合は接点命令かを判定する(ステップST12)。ステップST12において接点命令であった場合、次に、その接点命令が、その後何命令に影響するかをチェックする(ステップST13)。また、後続命令が非実行になるのは接点が0か1かをチェックする(ステップST14)。尚、これらのチェックは、実行コードを構文解析することで自動的に行えるものである。以上の判断に基づいて非実行判定データを挿入し(ステップST15)、ステップST11に戻り、これらステップST11〜ステップST15の処理を、ステップST11において最後の命令となるまで繰り返し行う。尚、上記ステップST13において、その後影響する命令数が所定の値以下であった場合は、スループット向上が望めないため非実行判定データの付与対象とはせず、このような場合はステップST11に戻るようにしてもよい。
図3の例において、このようなステップST11〜ステップST15の処理としては次のようになる。
(1)接点X0が0である場合、X1〜X4および+D0 D1 D2の処理を行う必要がないため、命令番号1〜9までの9命令を削除可能である。即ち、命令番号0から命令番号10に分岐するイメージである。
(2)接点X1が0である場合、X2の処理に関わらずX1&X2=0であるため、命令番号2を削除可能であるが、削除する命令が1命令のみであり、スループット向上が望めないため非実行判定データを削除したものとする。
(3)接点X1&X2=1である場合、X3,X4の処理に関わらずORB=1であるため、命令番号3〜5までを削除可能である。
(4)接点X5が1である場合、X6〜X9の処理を行う必要がないため、命令番号11〜15までの5命令を削除可能である。
(5)接点X6が0である場合、X6&X7&X8&X9=0であるため、命令番号12〜15までを削除可能である。
(1)接点X0が0である場合、X1〜X4および+D0 D1 D2の処理を行う必要がないため、命令番号1〜9までの9命令を削除可能である。即ち、命令番号0から命令番号10に分岐するイメージである。
(2)接点X1が0である場合、X2の処理に関わらずX1&X2=0であるため、命令番号2を削除可能であるが、削除する命令が1命令のみであり、スループット向上が望めないため非実行判定データを削除したものとする。
(3)接点X1&X2=1である場合、X3,X4の処理に関わらずORB=1であるため、命令番号3〜5までを削除可能である。
(4)接点X5が1である場合、X6〜X9の処理を行う必要がないため、命令番号11〜15までの5命令を削除可能である。
(5)接点X6が0である場合、X6&X7&X8&X9=0であるため、命令番号12〜15までを削除可能である。
尚、上述したように、ステップST13およびST14の処理は、実行コードの命令を構文解析することで自動的に算出が可能であるが、このような算出結果に対してユーザが非実行判定データの挿入の有無を指定できるよう構成してもよい。
このようなチェックを行って生成した実行コード102は、図3(b)に示すようになる。例えば、命令番号0の「LD_C X0 0 9」における“_C”は非実行判定命令を示し、“X0”は接点、次の“0”は接点演算結果が0,1のいずれの場合に削除するかを示す非実行判定フラグ、“9”は削除命令数(非実行命令数)を示している。
次に、作成された非実行判定データ付きの実行コード102はプログラムメモリ2に格納され(図2におけるステップST2)、入力手段3〜実行手段5は、非実行判定手段6の判定結果に基づいて、プログラムメモリ2に格納された実行コード102を実行する(ステップST3)。
図5は、プログラム実行の詳細を示す説明図である。
図中、プログラム実行エンジン11は、入力手段3〜非実行判定手段6における処理内容を示している。
先ず、入力手段3はプログラムメモリ2から命令を取得(フェッチ)する。次に、解析手段4は取得した命令をデコードし、実行手段5は、命令を実行して接点の値を取得する。ここで、非実行判定手段6は、非実行判定処理により、接点の値が非実行判定フラグと同じであれば、削除命令数分の命令を破棄する。具体的には、フェッチ要求を出した後の命令は実行ステージで命令キューに挿入する前に破棄し、フェッチ要求が出る前の命令はプログラムメモリ2へ出すアドレスを削除命令数後のアドレスに変更して(プログラムカウンタを再設定して)フェッチさせない。
図中、プログラム実行エンジン11は、入力手段3〜非実行判定手段6における処理内容を示している。
先ず、入力手段3はプログラムメモリ2から命令を取得(フェッチ)する。次に、解析手段4は取得した命令をデコードし、実行手段5は、命令を実行して接点の値を取得する。ここで、非実行判定手段6は、非実行判定処理により、接点の値が非実行判定フラグと同じであれば、削除命令数分の命令を破棄する。具体的には、フェッチ要求を出した後の命令は実行ステージで命令キューに挿入する前に破棄し、フェッチ要求が出る前の命令はプログラムメモリ2へ出すアドレスを削除命令数後のアドレスに変更して(プログラムカウンタを再設定して)フェッチさせない。
以上のように、実施の形態1のラダープログラム実行装置によれば、ラダープログラムから複数の命令で構成される実行コードを生成すると共に、命令の演算結果に対して後続の命令を非実行とする条件を示す非実行判定フラグ及び非実行とする命令数からなる非実行判定データを実行コードの命令に付与するプログラム変換手段と、実行コードを実行する場合、命令に付与された非実行判定データに基づいて命令に後続する命令の実行・非実行判定を行う非実行判定手段とを備えたので、ラダープログラム実行装置として不要な命令を実行することがなく、スループットの向上を図ることができる。
実施の形態2.
上記実施の形態1では全ての設定命令に非実行判定データを設定するのに対して、実施の形態2は、不要な非実行判定データを効率的に削除するようにしたものである。
図6は、実施の形態2のラダープログラム実行装置を示す構成図である。
実施の形態2のラダープログラム実行装置は、プログラム変換手段1、プログラムメモリ2、入力手段3、解析手段4、実行手段5、非実行判定手段6a、実行モードレジスタ7、プログラム最適化手段8を備えている。ここで、非実行判定手段6a、実行モードレジスタ7およびプログラム最適化手段8以外の構成は実施の形態1と同様であるため、同様の構成についてはその説明を省略する。
上記実施の形態1では全ての設定命令に非実行判定データを設定するのに対して、実施の形態2は、不要な非実行判定データを効率的に削除するようにしたものである。
図6は、実施の形態2のラダープログラム実行装置を示す構成図である。
実施の形態2のラダープログラム実行装置は、プログラム変換手段1、プログラムメモリ2、入力手段3、解析手段4、実行手段5、非実行判定手段6a、実行モードレジスタ7、プログラム最適化手段8を備えている。ここで、非実行判定手段6a、実行モードレジスタ7およびプログラム最適化手段8以外の構成は実施の形態1と同様であるため、同様の構成についてはその説明を省略する。
非実行判定手段6aは、実施の形態1における非実行判定手段6の機能を有すると共に、実行モードレジスタ7の値に応じてその処理結果を記録したプロファイル103を出力するよう構成されている。即ち、実行モードレジスタ7からロギング指示があった場合は、実行・非実行判定結果を蓄積し、蓄積結果であるプロファイル103として出力する。実行モードレジスタ7は、ユーザによって設定され、非実行判定手段6の処理結果をロギングするか否かを設定するためのレジスタである。また、プログラム最適化手段8は、非実行判定手段6aから出力されたプロファイル103に基づいて実行コード102内の非実行判定データを最適化する手段である。
次に、実施の形態2の動作について説明する。
実施の形態2のラダープログラム実行装置では、ロギングモードとする場合、ユーザは図示しない手段により、実行モードレジスタ7をロギングモードを示す値にセットする。これにより、非実行判定手段6aは、実行・非実行判定結果をプロファイル103に格納する。
実施の形態2のラダープログラム実行装置では、ロギングモードとする場合、ユーザは図示しない手段により、実行モードレジスタ7をロギングモードを示す値にセットする。これにより、非実行判定手段6aは、実行・非実行判定結果をプロファイル103に格納する。
図7は、実施の形態2の動作を示すフローチャートである。
図7において、ステップST3までの動作は実施の形態1と同様である。
ステップST4において、実行モードレジスタ7がオンになっている場合(ロギングモードが設定されていた場合)、非実行判定手段6aは、実行・非実行処理をプロファイリングする(ステップST5)。そして、ステップST4においてロギングモードである場合は、ステップST3〜ステップST5の処理が繰り返される。その結果、例えば図3(b)の実行コードのプロファイル103として、図3(c)に示すようなプロファイル103a,103bが得られたとする。この例は、100回の命令実行における実行回数と非実行回数とを示している。そして、このようなプロファイル103はプログラム最適化手段8に出力される。
図7において、ステップST3までの動作は実施の形態1と同様である。
ステップST4において、実行モードレジスタ7がオンになっている場合(ロギングモードが設定されていた場合)、非実行判定手段6aは、実行・非実行処理をプロファイリングする(ステップST5)。そして、ステップST4においてロギングモードである場合は、ステップST3〜ステップST5の処理が繰り返される。その結果、例えば図3(b)の実行コードのプロファイル103として、図3(c)に示すようなプロファイル103a,103bが得られたとする。この例は、100回の命令実行における実行回数と非実行回数とを示している。そして、このようなプロファイル103はプログラム最適化手段8に出力される。
次に、プロファイル103を用いたプログラム最適化手段8による実行コード102の最適化処理を説明する。
図8は、プログラム最適化手段8による実行コード102の最適化処理を示すフローチャートである。
プログラム最適化手段8は、実行コード102をオープンして(ステップST21)、最初の命令を取り出し、これが最後の命令かを判定する(ステップST22)。ここでは、最後の命令ではないためステップST23に進み、接点命令かを判定する。ステップST23において接点命令であった場合は、プロファイル103より、対応する接点命令の実行情報を取得する(ステップST24)。次に、その接点命令の実行情報と、予め定めた最適化パラメータ104と比較し(ステップST25)、非実行判定データが必要か否かを判定する(ステップST26)。尚、ステップST23において、接点命令ではなかった場合はステップST22に戻る。
図8は、プログラム最適化手段8による実行コード102の最適化処理を示すフローチャートである。
プログラム最適化手段8は、実行コード102をオープンして(ステップST21)、最初の命令を取り出し、これが最後の命令かを判定する(ステップST22)。ここでは、最後の命令ではないためステップST23に進み、接点命令かを判定する。ステップST23において接点命令であった場合は、プロファイル103より、対応する接点命令の実行情報を取得する(ステップST24)。次に、その接点命令の実行情報と、予め定めた最適化パラメータ104と比較し(ステップST25)、非実行判定データが必要か否かを判定する(ステップST26)。尚、ステップST23において、接点命令ではなかった場合はステップST22に戻る。
ここで、最適化パラメータ104は、非実行判定データを実行コードの命令から削除する条件として、例えば、「その命令で削除する命令数がx命令以下」「その命令の実行率がy%以上」といったパラメータであり、これは次のような観点によって定められている。例えば図3(c)のプロファイル103a,103bを例に取ると、次の通りである。
(1)図3(c)のプロファイル103aにおいて、命令番号0は、実行回数が0で非実行回数が100である。このことより,命令番号1以下の9命令が実行される可能性は低い。この結果、命令番号1には非実行判定データがあると効果的である。従って、非実行判定データの削除対象とはしない。
(2)命令番号2,6は、命令番号0が常に非実行であるため、実行、非実行回数ともに0である。この箇所で非実行判定が実施されないことから、命令番号2,6に非実行判定データは不要である。従って、非実行判定データの削除対象とする。
(3)プロファイル103bにおいて、命令番号10は、実行回数が85/100回で非実行回数が15/100回であり、実行率が高いことから非実行判定データは不要である。
(4)命令番号10は、実行回数が85/100回で非実行回数が15/100回であり、その後の命令実行率が高いことから非実行判定データは不要である。
(5)命令番号11,12は、実行頻度が高いため、非実行判定データは不要である。
(6)命令番号13は非実行率が100%であるが、その後の命令を2命令しか削除できない。従って、非実行判定データの削除対象とする。
(2)命令番号2,6は、命令番号0が常に非実行であるため、実行、非実行回数ともに0である。この箇所で非実行判定が実施されないことから、命令番号2,6に非実行判定データは不要である。従って、非実行判定データの削除対象とする。
(3)プロファイル103bにおいて、命令番号10は、実行回数が85/100回で非実行回数が15/100回であり、実行率が高いことから非実行判定データは不要である。
(4)命令番号10は、実行回数が85/100回で非実行回数が15/100回であり、その後の命令実行率が高いことから非実行判定データは不要である。
(5)命令番号11,12は、実行頻度が高いため、非実行判定データは不要である。
(6)命令番号13は非実行率が100%であるが、その後の命令を2命令しか削除できない。従って、非実行判定データの削除対象とする。
プログラム最適化手段8は、最適化パラメータ104の条件と一致した命令に対しては非実行判定データは不要と判断して(ステップST26)、非実行判定データを削除し(ステップST27)、ステップST22に戻る。また、ステップST26において非判定データは必要と判断した場合は、そのままステップST22に戻る。そして、以上の処理をステップST22で最後の命令と判定するまで繰り返し行う。
尚、ユーザに対してプロファイル103の内容を表示するための出力手段や、ユーザからの選択入力を受け付けるための入力手段をプログラム最適化手段8に設け、上記ステップST26において非実行判定データは不要であると判断した命令を、例えば削除候補としてユーザに提示し、ユーザが削除する非実行判定データを対話的に選択するようにしてもよい。
そして、このように最適化された実行コード102は、再度、プログラムメモリ2に格納され、図7で示した実行・非実行結果のプロファイリングが行われる。
以上のように、実施の形態2のラダープログラム実行装置によれば、非実行判定手段は、命令ごとに実行・非実行判定結果を蓄積情報として蓄積すると共に、非実行判定データが付与された前記命令に対応する前記蓄積情報が所定の条件を満たす場合、当該命令の非実行判定データを実行コードの命令から削除するプログラム最適化手段を備えたので、必要な命令のみに非実行判定データを挿入することができることから、コード量の増加を最小限に抑えて、更にスループットを向上させることができる。
また、実施の形態2のラダープログラム実行装置によれば、プログラム最適化手段は、対象となる命令が予め定めた条件を満足するか否かに基づいて、所定の非実行判定データを実行コードの命令から削除するようにしたので、自動的に最適な非実行判定データを挿入することができる。
また、実施の形態2のラダープログラム実行装置によれば、プログラム最適化手段は、非実行判定データを付与するか否かの情報が入力される入力手段を備えたので、ユーザの仕様に応じた設定を可能とすることができる。
実施の形態3.
実施の形態3は、ラダープログラム実行装置を、パーソナルコンピュータ200とプログラマブルコントローラ300とで実現するようにしたものである。
図9は、実施の形態3のラダープログラム実行装置の構成図である。
図において、パーソナルコンピュータ200は、プログラム変換手段1とプログラム最適化手段8とを備えると共に、送信手段9と受信手段10とを備えている。送信手段9は、プログラム変換手段1で生成され、また、プログラム最適化手段8で最適化された実行コード102をプログラマブルコントローラ300に対して送信する手段である。受信手段10は、プログラマブルコントローラ300における実行・非実行結果であるプロファイル103を受け取ってプログラム最適化手段8に渡すための手段である。
実施の形態3は、ラダープログラム実行装置を、パーソナルコンピュータ200とプログラマブルコントローラ300とで実現するようにしたものである。
図9は、実施の形態3のラダープログラム実行装置の構成図である。
図において、パーソナルコンピュータ200は、プログラム変換手段1とプログラム最適化手段8とを備えると共に、送信手段9と受信手段10とを備えている。送信手段9は、プログラム変換手段1で生成され、また、プログラム最適化手段8で最適化された実行コード102をプログラマブルコントローラ300に対して送信する手段である。受信手段10は、プログラマブルコントローラ300における実行・非実行結果であるプロファイル103を受け取ってプログラム最適化手段8に渡すための手段である。
また、プログラマブルコントローラ300は、プログラムメモリ2、入力手段3、解析手段4、実行手段5、非実行判定手段6a、実行モードレジスタ7を備えており、これらの構成は、実施の形態2と同様であるため、ここでの説明は省略する。
次に、実施の形態3の動作について説明する。
図10は、実施の形態3の動作を示すフローチャートである。
先ず、パーソナルコンピュータ200のプログラム変換手段1は、ラダープログラム101を非実行判定データ付きの実行コードに変換する(ステップST31)。この変換動作は実施の形態1、2におけるステップST1の処理と同様である。
図10は、実施の形態3の動作を示すフローチャートである。
先ず、パーソナルコンピュータ200のプログラム変換手段1は、ラダープログラム101を非実行判定データ付きの実行コードに変換する(ステップST31)。この変換動作は実施の形態1、2におけるステップST1の処理と同様である。
次に、作成された非実行判定データ付きの実行コード102は送信手段9によってプログラマブルコントローラ300に送信され、プログラマブルコントローラ300のプログラムメモリ2にダウンロードされる(ステップST32)。プログラマブルコントローラ300では、ダウンロード待ちの状態で実行コード102を取得すると、プログラムメモリ2に書き込み、プログラマブルコントローラ300が再起動される(ステップST33)。次に、プログラマブルコントローラ300では、プログラムメモリ2に格納された実行コード102を実行する(ステップST34)。この実行コード102の実行処理は、実施の形態1、2におけるステップST3の処理と同様である。
次に、ステップST35において、実行モードレジスタ7がオンになっている場合(ロギングモードが設定されていた場合)は、実行・非実行処理をプロファイリングする(ステップST36)。このプロファイリングは、実施の形態2におけるステップST5の処理と同様である。ステップST36のプロファイリングによって得られたプロファイル103は、パーソナルコンピュータ200の受信手段10で受信され、プログラム最適化手段8で取得される(ステップST37)。
プログラム最適化手段8は、ダウンロードしたプロファイル103に基づいて、実行コード102の最適化を行う(ステップST38)。この最適化処理は、実施の形態2で説明した図8の動作と同様である。
このように、プログラム最適化手段8で最適化された実行コード102は、送信手段9によってプログラマブルコントローラ300に送信され、以降、プログラマブルコントローラ300でロギングモードが設定されている限りは、図10のステップST32〜ステップST38の処理が繰り返される。
図11は、以上の実施の形態3の動作を模式的に示す説明図である。
図示のように、実施の形態3では、パーソナルコンピュータ200に設けられたプログラム変換手段1で、ユーザが記述したラダープログラム101を実行コード102に変換すると共に、非実行判定データを付与する。この実行コード102は、プログラマブルコントローラ300内のROMからなるプログラムメモリ2にダウンロードされる。プログラマブルコントローラ300では実行モードレジスタ7でロギングモードがオンに設定されていた場合は、RAM301内に、実行・非実行結果をプロファイル103としてロギングする。ロギングするデータは例えば図12に示す通りである。
図示のように、実施の形態3では、パーソナルコンピュータ200に設けられたプログラム変換手段1で、ユーザが記述したラダープログラム101を実行コード102に変換すると共に、非実行判定データを付与する。この実行コード102は、プログラマブルコントローラ300内のROMからなるプログラムメモリ2にダウンロードされる。プログラマブルコントローラ300では実行モードレジスタ7でロギングモードがオンに設定されていた場合は、RAM301内に、実行・非実行結果をプロファイル103としてロギングする。ロギングするデータは例えば図12に示す通りである。
そして、プログラムをロギングモードで実行すると、図12に示すテーブルが更新され、これがプロファイル103としてパーソナルコンピュータ200にダウンロードされる。プログラム最適化手段8は、このプロファイル103を用いて実行コード102を最適化する。例えば、図12に示す実行・非実行結果では、命令番号11、34、44、63、67のように、実行可能性が高いものは非実行判定データが不要と判断され、命令の非実行判定データを削除し、実行コード102の最適化が行われる。
以上のように、実施の形態3のラダープログラム実行装置によれば、パーソナルコンピュータにプログラム変換手段とプログラム最適化手段とを設け、プログラマブルコントローラに実行コードを与えると共に、プログラマブルコントローラのプロファイルを受け取り、このプロファイルに基づいて実行コードを最適化するようにしたので、プログラマブルコントローラの構成を簡素化することができると共に、実行コードの生成や最適化をより柔軟に行うことができる。
実施の形態4.
実施の形態4はプログラム変換手段1において、ハードウェア仕様により高速化できない場合に非実行判定データを付与しないようにしたものである。図面上の構成は、図1、図6、図9のいずれかと同一であるため、これらの図を援用して説明する。
実施の形態4はプログラム変換手段1において、ハードウェア仕様により高速化できない場合に非実行判定データを付与しないようにしたものである。図面上の構成は、図1、図6、図9のいずれかと同一であるため、これらの図を援用して説明する。
実施の形態4のプログラム変換手段1は、ハードウェア仕様によりスループットを向上させる可能性がない高速化不可命令に対しては非実行判定データを実行コード102に付与しないよう構成されている。これ以外の構成は実施の形態1〜3のいずれかの構成と同様であるため、その説明は省略する。
図13は、実施の形態4におけるプログラム変換手段1の動作を示すフローチャートである。
先ず、対象とする命令が最後の命令かを判定し(ステップST41)、そうでない場合は接点命令かを判定する(ステップST42)。ステップST42において接点命令であった場合、次に、その接点命令が高速化不可命令かを判定する(ステップST43)。例えば、このような高速化不可能な場合として、パイプラインアーキテクチャ採用時にフェッチ済みの命令をフラッシュするオーバヘッドが発生する場合は、非実行判定データの付与対象から外し、ステップST41に戻る。
先ず、対象とする命令が最後の命令かを判定し(ステップST41)、そうでない場合は接点命令かを判定する(ステップST42)。ステップST42において接点命令であった場合、次に、その接点命令が高速化不可命令かを判定する(ステップST43)。例えば、このような高速化不可能な場合として、パイプラインアーキテクチャ採用時にフェッチ済みの命令をフラッシュするオーバヘッドが発生する場合は、非実行判定データの付与対象から外し、ステップST41に戻る。
ここで、パイプラインアーキテクチャ採用時にフェッチ済みの命令をフラッシュするオーバヘッドが発生する場合とは次のような場合である。例えば、1クロックに2命令をフェッチできる場合、パイプラインの依存性を解析するステージで非実行命令を解析しているときには、既にフェッチ済みの命令がデコード、フェッチ(例えば、依存性解析ステージが第3ステージ目だとする)メモリへのフェッチ中の各ステージにあり(合計6命令)、この6命令をフラッシュする可能性がある。フェッチするアドレス自体が変わらないため、6命令以上非実行にできないものはオーバヘッドが発生する場合と考える。即ち、非実行判定データを付与しない命令は、非実行命令数が、既にフェッチ開始後(同時フェッチ数×ステージ数)の命令数よりも少ない非実行判定対象命令である。
尚、上記のようなフェッチ済みの命令をフラッシュするオーバヘッドが発生する場合は、例えばパイプラインの段数、及び、命令処理サイクルがデバイス毎に決まっており、非実行判定ステージ以前にフェッチ可能な命令数が判明するため、自動処理が可能である。
ステップST43において高速化不可命令ではなかった場合、それ以降の処理は実施の形態1と同様に、その接点命令が、その後いくつの命令に影響するかをチェックし(ステップST44)、更に、後続命令が非実行になるのは接点が0か1かをチェックして(ステップST45)、非実行判定データを挿入する(ステップST46)。一方、ステップST43において、高速化不可命令であった場合はステップST41に戻る。そして、これらステップST41〜ステップST46の処理を、ステップST41において最後の命令となるまで繰り返し行う。
以上のように、実施の形態4のラダープログラム実行装置によれば、プログラム変換手段は、高速化不可命令に対しては非実行判定データを実行コードに付与しないようにしたので、不要な非実行判定データを付与しないことでコード量の増加を抑えることができる。
また、実施の形態4のラダープログラム実行装置によれば、高速化不可命令は、ハードウェア仕様がパイプラインアーキテクチャである場合に、その命令の実行時、フラッシュする可能性のある命令数より非実行命令数が少ない命令としたので、パイプラインアーキテクチャ採用時においても、よりスループットの向上を図ることができる。
1 プログラム変換手段、2 プログラムメモリ、6,6a 非実行判定手段、8 プログラム最適化手段、101 ラダープログラム、102 実行コード、103,103a,103b プロファイル、104 最適化パラメータ、200 パーソナルコンピュータ、300 プログラマブルコントローラ。
Claims (5)
- ラダープログラムから複数の命令で構成される実行コードを生成すると共に、前記命令の演算結果に対して後続の命令を非実行とする条件を示す非実行判定フラグ及び前記非実行とする命令数からなる非実行判定データを前記実行コードの前記命令に付与するプログラム変換手段と、
前記実行コードを実行する場合、前記命令に付与された前記非実行判定データに基づいて当該命令に後続する命令の実行・非実行判定を行う非実行判定手段とを備えたラダープログラム実行装置。 - プログラム変換手段は、ハードウェア仕様によりスループットを向上させる可能性がない高速化不可命令に対しては非実行判定データを実行コードの前記命令に付与しないことを特徴とする請求項1記載のラダープログラム実行装置。
- 高速化不可命令は、ハードウェア仕様がパイプラインアーキテクチャである場合に、当該命令の実行時、フラッシュする可能性のある命令数より非実行命令数が少ない命令であることを特徴とする請求項2記載のラダープログラム実行装置。
- 非実行判定手段は、命令ごとに実行・非実行判定結果を蓄積情報として蓄積すると共に、
非実行判定データが付与された前記命令に対応する前記蓄積情報が所定の条件を満たす場合、当該命令の非実行判定データを実行コードの命令から削除するプログラム最適化手段を備えたことを特徴とする請求項1から請求項3のうちいずれか1項記載のラダープログラム実行装置。 - プログラム最適化手段は、非実行判定データを付与するか否かの情報が入力される入力手段を備えたことを特徴とする請求項4記載のラダープログラム実行装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006186931A JP2008015826A (ja) | 2006-07-06 | 2006-07-06 | ラダープログラム実行装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006186931A JP2008015826A (ja) | 2006-07-06 | 2006-07-06 | ラダープログラム実行装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2008015826A true JP2008015826A (ja) | 2008-01-24 |
Family
ID=39072769
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006186931A Pending JP2008015826A (ja) | 2006-07-06 | 2006-07-06 | ラダープログラム実行装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2008015826A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014052673A (ja) * | 2012-09-04 | 2014-03-20 | Keyence Corp | プログラマブルコントローラ、プログラム作成支援装置及びプログラム |
JP7403732B1 (ja) | 2023-07-20 | 2023-12-22 | 三菱電機株式会社 | 翻訳プログラム、翻訳装置及び翻訳方法 |
-
2006
- 2006-07-06 JP JP2006186931A patent/JP2008015826A/ja active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014052673A (ja) * | 2012-09-04 | 2014-03-20 | Keyence Corp | プログラマブルコントローラ、プログラム作成支援装置及びプログラム |
JP7403732B1 (ja) | 2023-07-20 | 2023-12-22 | 三菱電機株式会社 | 翻訳プログラム、翻訳装置及び翻訳方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPWO2008072334A1 (ja) | コンパイル方法及びコンパイラ | |
JP2009048252A (ja) | プログラム変換装置及びコンパイラプログラム | |
JP2007272353A (ja) | プロセッサ装置及び複合条件処理方法 | |
KR20100092230A (ko) | 파이프라인 프로세서를 위한 정적 분기 예측 방법과 이를 위한 컴파일 방법 | |
EP0840209B1 (en) | Instruction prefetching apparatus and instruction prefetching method | |
US7228528B2 (en) | Building inter-block streams from a dynamic execution trace for a program | |
JP2008015826A (ja) | ラダープログラム実行装置 | |
JP2006301989A (ja) | 計算機言語によるプログラムをブロック図から自動生成する方法と装置とプログラム | |
JP2007104194A (ja) | 復号化システム | |
JP2003296123A (ja) | 電力制御情報を付与する命令変換装置及び命令変換方法、命令変換を実現するプログラム及び回路、変換された命令を実行するマイクロプロセッサ | |
JP2017045144A (ja) | 情報処理装置及びその制御方法 | |
JP2008250838A (ja) | ソフトウェア生成装置、方法、およびプログラム | |
KR102210997B1 (ko) | Vliw 명령어를 처리하는 방법 및 장치와 vliw 명령어를 처리하기 위한 명령어를 생성하는 방법 및 장치 | |
JPH0756745A (ja) | 言語処理プログラムのコンパイラ処理方式 | |
JP6175306B2 (ja) | 制御プログラム分割装置、制御プログラム分割方法及びその記録媒体 | |
KR102179385B1 (ko) | 명령어를 실행하는 방법 및 프로세서, 명령어를 부호화하는 방법 및 장치 및 기록매체 | |
JP2002268877A (ja) | クロック制御方法及び当該クロック制御方法を用いた情報処理装置 | |
JP2006126977A (ja) | プログラム変換装置及び方法 | |
US20040268100A1 (en) | Apparatus to implement mesocode | |
JP2007141153A (ja) | インタプリタ | |
JP2007188366A (ja) | コンパイル装置 | |
US20040268326A1 (en) | Multiple instruction set architecture code format | |
JP6398456B2 (ja) | ソフトウェア生成装置 | |
JP4563669B2 (ja) | 命令模擬装置 | |
JP2009064207A (ja) | コンパイル装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20080701 |