(57)【要約】【課題】スループットの向上を図ることのできるラダープログラム実行装置を得る。【解決手段】プログラム変換手段１により、ラダープログラム１０１から実行コード１０２を生成し、かつ、その命令の演算結果がどのような値であった場合に後続の命令を非実行とするかを示す非実行判定フラグと非実行とする命令数とを示す非実行判定データを実行コード１０２に付与する。非実行判定手段６は、命令を実行する場合、実行コード１０２の非実行判定データに基づいて命令の実行・非実行判定を行う。【選択図】図１
2008015826.tif 000002
【特許請求の範囲】
【請求項１】
ラダープログラムから複数の命令で構成される実行コードを生成すると共に、前記命令の演算結果に対して後続の命令を非実行とする条件を示す非実行判定フラグ及び前記非実行とする命令数からなる非実行判定データを前記実行コードの前記命令に付与するプログラム変換手段と、
前記実行コードを実行する場合、前記命令に付与された前記非実行判定データに基づいて当該命令に後続する命令の実行・非実行判定を行う非実行判定手段とを備えたラダープログラム実行装置。
【請求項２】
プログラム変換手段は、ハードウェア仕様によりスループットを向上させる可能性がない高速化不可命令に対しては非実行判定データを実行コードの前記命令に付与しないことを特徴とする請求項１記載のラダープログラム実行装置。
【請求項３】
高速化不可命令は、ハードウェア仕様がパイプラインアーキテクチャである場合に、当該命令の実行時、フラッシュする可能性のある命令数より非実行命令数が少ない命令であることを特徴とする請求項２記載のラダープログラム実行装置。
【請求項４】
非実行判定手段は、命令ごとに実行・非実行判定結果を蓄積情報として蓄積すると共に、
非実行判定データが付与された前記命令に対応する前記蓄積情報が所定の条件を満たす場合、当該命令の非実行判定データを実行コードの命令から削除するプログラム最適化手段を備えたことを特徴とする請求項１から請求項３のうちいずれか１項記載のラダープログラム実行装置。
【請求項５】
プログラム最適化手段は、非実行判定データを付与するか否かの情報が入力される入力手段を備えたことを特徴とする請求項４記載のラダープログラム実行装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ラダープログラムを実行するプログラマブルコントローラ等のラダープログラム実行装置に関するものである。
【背景技術】
【０００２】
プログラマブルコントローラは、小規模な機械の制御から大規模な生産設備の制御まで幅広く用いられている。このようなプログラマブルコントローラは、入力されたラダープログラムを実行して各種装置の制御を行っている。従来、このようなプログラマブルコントローラとして、ラダープログラムの処理単位である回路毎に実行／非実行を制御するようにしたものがあった（例えば、特許文献１参照）。このようなプログラマブルコントローラは、各回路に、実行／非実行を指定する回路情報コードを付加し、実行時に、この回路情報コードをチェックし、回路情報コードで非実行が指定されているときにはこの回路の処理をスキップするようにしたものである。
【０００３】
【特許文献１】特開平９−１６０６１１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記従来のプログラマブルコントローラでは、回路毎に実行／非実行を指定しているだけであるため、必ずしも、非実行となる命令を除くということができる訳ではなく、ラダープログラム実行装置のスループット向上の観点からは、不十分であった。
【０００５】
この発明は上記のような課題を解決するためになされたもので、スループットの向上を図ることのできるラダープログラム実行装置を得ることを目的とする。
【課題を解決するための手段】
【０００６】
この発明に係るラダープログラム実行装置は、ラダープログラムから複数の命令で構成される実行コードを生成する共に、前記命令の演算結果に対して後続の命令を非実行とするかを示す非実行判定フラグ及び非実行とする命令数からなる非実行判定データを前記実行コードの前記命令に付与するプログラム変換手段と、前記実行コードを実行する場合、前記命令に付与された前記非実行判定データに基づいて当該命令に後続する命令の実行・非実行判定を行う非実行判定手段とを備えたものである。
【発明の効果】
【０００７】
この発明のラダープログラム実行装置は、ラダープログラムから実行コードを生成する際に、命令の演算結果がどのような値であった場合に後続の何命令を非実行とするかを示す非実行判定データを付与するようにしたので、スループットの向上を図ることができる。
【発明を実施するための最良の形態】
【０００８】
実施の形態１．
図１は、この発明の実施の形態１によるラダープログラム実行装置を示す構成図である。
図示の構成は、プログラマブルコントローラ内の構成を示しており、プログラム変換手段１、プログラムメモリ２、入力手段３、解析手段４、実行手段５、非実行判定手段６を備えている。プログラム変換手段１は、ラダープログラム１０１から実行コード１０２に変換すると共に、この実行コード１０２に対して、その命令の演算結果がどのような値であった場合に後続の命令を非実行とするかを示す非実行判定フラグと非実行とする命令数（非実行命令数)とを示す非実行判定データを付与して出力する機能を有している。プログラムメモリ２は、プログラム変換手段１で変換された実行コード１０２を格納するためのメモリである。入力手段３は、プログラムメモリ２から命令データを取得（フェッチ）する手段である。解析手段４は、入力手段３が取得した命令データをデコードする手段である。実行手段５は、解析手段４でデコードされた命令を実行する手段である。非実行判定手段６は、実行手段５で実行した命令に非実行判定データがあった場合は、後続の命令を破棄するかを判定し、破棄条件が成立した場合は、入力手段３，解析手段４及び実行手段５のいずれかに対して後続の命令を破棄するよう指示する手段である。
【０００９】
次に、実施の形態１のラダープログラム実行装置の動作について説明する。
図２は、実施の形態１の動作を示すフローチャートである。
先ず、プログラム変換手段１は、ラダープログラム１０１を非実行判定データ付きの実行コードに変換する（ステップＳＴ１）。
図３は、ラダープログラム１０１と実行コード１０２の一例を示す説明図である。尚、図３では、（ｃ）においてプロファイル１０３ａ，１０３ｂを示しているが、これについては実施の形態２で説明する。
図３（ａ）に示すように、ラダープログラム１０１は、２本のラングを一例として示している。ここで、第１のラングは（ｂ）に示す命令０〜９、第２のラングは命令１０〜１８に対応している。以下、プログラム変換手段１により、このようなラダープログラム１０１に対する非実行判定データ付きの実行コード１０２への変換処理を説明する。
【００１０】
図４は、非実行判定データの挿入処理を示すフローチャートである。
先ず、対象とする命令が最後の命令かを判定し（ステップＳＴ１１）、そうでない場合は接点命令かを判定する（ステップＳＴ１２）。ステップＳＴ１２において接点命令であった場合、次に、その接点命令が、その後何命令に影響するかをチェックする（ステップＳＴ１３）。また、後続命令が非実行になるのは接点が０か１かをチェックする（ステップＳＴ１４）。尚、これらのチェックは、実行コードを構文解析することで自動的に行えるものである。以上の判断に基づいて非実行判定データを挿入し（ステップＳＴ１５）、ステップＳＴ１１に戻り、これらステップＳＴ１１〜ステップＳＴ１５の処理を、ステップＳＴ１１において最後の命令となるまで繰り返し行う。尚、上記ステップＳＴ１３において、その後影響する命令数が所定の値以下であった場合は、スループット向上が望めないため非実行判定データの付与対象とはせず、このような場合はステップＳＴ１１に戻るようにしてもよい。
【００１１】
図３の例において、このようなステップＳＴ１１〜ステップＳＴ１５の処理としては次のようになる。
（１）接点Ｘ０が０である場合、Ｘ１〜Ｘ４および＋Ｄ０  Ｄ１  Ｄ２の処理を行う必要がないため、命令番号１〜９までの９命令を削除可能である。即ち、命令番号０から命令番号１０に分岐するイメージである。
（２）接点Ｘ１が０である場合、Ｘ２の処理に関わらずＸ１＆Ｘ２＝０であるため、命令番号２を削除可能であるが、削除する命令が１命令のみであり、スループット向上が望めないため非実行判定データを削除したものとする。
（３）接点Ｘ１＆Ｘ２＝１である場合、Ｘ３，Ｘ４の処理に関わらずＯＲＢ＝１であるため、命令番号３〜５までを削除可能である。
（４）接点Ｘ５が１である場合、Ｘ６〜Ｘ９の処理を行う必要がないため、命令番号１１〜１５までの５命令を削除可能である。
（５）接点Ｘ６が０である場合、Ｘ６＆Ｘ７＆Ｘ８＆Ｘ９＝０であるため、命令番号１２〜１５までを削除可能である。
【００１２】
尚、上述したように、ステップＳＴ１３およびＳＴ１４の処理は、実行コードの命令を構文解析することで自動的に算出が可能であるが、このような算出結果に対してユーザが非実行判定データの挿入の有無を指定できるよう構成してもよい。
【００１３】
このようなチェックを行って生成した実行コード１０２は、図３（ｂ）に示すようになる。例えば、命令番号０の「ＬＤ＿Ｃ  Ｘ０  ０  ９」における“＿Ｃ”は非実行判定命令を示し、“Ｘ０”は接点、次の“０”は接点演算結果が０，１のいずれの場合に削除するかを示す非実行判定フラグ、“９”は削除命令数（非実行命令数）を示している。
【００１４】
次に、作成された非実行判定データ付きの実行コード１０２はプログラムメモリ２に格納され（図２におけるステップＳＴ２）、入力手段３〜実行手段５は、非実行判定手段６の判定結果に基づいて、プログラムメモリ２に格納された実行コード１０２を実行する（ステップＳＴ３）。
【００１５】
図５は、プログラム実行の詳細を示す説明図である。
図中、プログラム実行エンジン１１は、入力手段３〜非実行判定手段６における処理内容を示している。
先ず、入力手段３はプログラムメモリ２から命令を取得（フェッチ）する。次に、解析手段４は取得した命令をデコードし、実行手段５は、命令を実行して接点の値を取得する。ここで、非実行判定手段６は、非実行判定処理により、接点の値が非実行判定フラグと同じであれば、削除命令数分の命令を破棄する。具体的には、フェッチ要求を出した後の命令は実行ステージで命令キューに挿入する前に破棄し、フェッチ要求が出る前の命令はプログラムメモリ２へ出すアドレスを削除命令数後のアドレスに変更して（プログラムカウンタを再設定して）フェッチさせない。
【００１６】
以上のように、実施の形態１のラダープログラム実行装置によれば、ラダープログラムから複数の命令で構成される実行コードを生成すると共に、命令の演算結果に対して後続の命令を非実行とする条件を示す非実行判定フラグ及び非実行とする命令数からなる非実行判定データを実行コードの命令に付与するプログラム変換手段と、実行コードを実行する場合、命令に付与された非実行判定データに基づいて命令に後続する命令の実行・非実行判定を行う非実行判定手段とを備えたので、ラダープログラム実行装置として不要な命令を実行することがなく、スループットの向上を図ることができる。
【００１７】
実施の形態２．
上記実施の形態１では全ての設定命令に非実行判定データを設定するのに対して、実施の形態２は、不要な非実行判定データを効率的に削除するようにしたものである。
図６は、実施の形態２のラダープログラム実行装置を示す構成図である。
実施の形態２のラダープログラム実行装置は、プログラム変換手段１、プログラムメモリ２、入力手段３、解析手段４、実行手段５、非実行判定手段６ａ、実行モードレジスタ７、プログラム最適化手段８を備えている。ここで、非実行判定手段６ａ、実行モードレジスタ７およびプログラム最適化手段８以外の構成は実施の形態１と同様であるため、同様の構成についてはその説明を省略する。
【００１８】
非実行判定手段６ａは、実施の形態１における非実行判定手段６の機能を有すると共に、実行モードレジスタ７の値に応じてその処理結果を記録したプロファイル１０３を出力するよう構成されている。即ち、実行モードレジスタ７からロギング指示があった場合は、実行・非実行判定結果を蓄積し、蓄積結果であるプロファイル１０３として出力する。実行モードレジスタ７は、ユーザによって設定され、非実行判定手段６の処理結果をロギングするか否かを設定するためのレジスタである。また、プログラム最適化手段８は、非実行判定手段６ａから出力されたプロファイル１０３に基づいて実行コード１０２内の非実行判定データを最適化する手段である。
【００１９】
次に、実施の形態２の動作について説明する。
実施の形態２のラダープログラム実行装置では、ロギングモードとする場合、ユーザは図示しない手段により、実行モードレジスタ７をロギングモードを示す値にセットする。これにより、非実行判定手段６ａは、実行・非実行判定結果をプロファイル１０３に格納する。
【００２０】
図７は、実施の形態２の動作を示すフローチャートである。
図７において、ステップＳＴ３までの動作は実施の形態１と同様である。
ステップＳＴ４において、実行モードレジスタ７がオンになっている場合（ロギングモードが設定されていた場合）、非実行判定手段６ａは、実行・非実行処理をプロファイリングする（ステップＳＴ５）。そして、ステップＳＴ４においてロギングモードである場合は、ステップＳＴ３〜ステップＳＴ５の処理が繰り返される。その結果、例えば図３（ｂ）の実行コードのプロファイル１０３として、図３（ｃ）に示すようなプロファイル１０３ａ，１０３ｂが得られたとする。この例は、１００回の命令実行における実行回数と非実行回数とを示している。そして、このようなプロファイル１０３はプログラム最適化手段８に出力される。
【００２１】
次に、プロファイル１０３を用いたプログラム最適化手段８による実行コード１０２の最適化処理を説明する。
図８は、プログラム最適化手段８による実行コード１０２の最適化処理を示すフローチャートである。
プログラム最適化手段８は、実行コード１０２をオープンして（ステップＳＴ２１）、最初の命令を取り出し、これが最後の命令かを判定する（ステップＳＴ２２）。ここでは、最後の命令ではないためステップＳＴ２３に進み、接点命令かを判定する。ステップＳＴ２３において接点命令であった場合は、プロファイル１０３より、対応する接点命令の実行情報を取得する（ステップＳＴ２４）。次に、その接点命令の実行情報と、予め定めた最適化パラメータ１０４と比較し（ステップＳＴ２５）、非実行判定データが必要か否かを判定する（ステップＳＴ２６）。尚、ステップＳＴ２３において、接点命令ではなかった場合はステップＳＴ２２に戻る。
【００２２】
ここで、最適化パラメータ１０４は、非実行判定データを実行コードの命令から削除する条件として、例えば、「その命令で削除する命令数がｘ命令以下」「その命令の実行率がｙ％以上」といったパラメータであり、これは次のような観点によって定められている。例えば図３（ｃ）のプロファイル１０３ａ，１０３ｂを例に取ると、次の通りである。
【００２３】
（１）図３（ｃ）のプロファイル１０３ａにおいて、命令番号０は、実行回数が０で非実行回数が１００である。このことより，命令番号１以下の９命令が実行される可能性は低い。この結果、命令番号１には非実行判定データがあると効果的である。従って、非実行判定データの削除対象とはしない。
（２）命令番号２，６は、命令番号０が常に非実行であるため、実行、非実行回数ともに０である。この箇所で非実行判定が実施されないことから、命令番号２，６に非実行判定データは不要である。従って、非実行判定データの削除対象とする。
（３）プロファイル１０３ｂにおいて、命令番号１０は、実行回数が８５／１００回で非実行回数が１５／１００回であり、実行率が高いことから非実行判定データは不要である。
（４）命令番号１０は、実行回数が８５／１００回で非実行回数が１５／１００回であり、その後の命令実行率が高いことから非実行判定データは不要である。
（５）命令番号１１，１２は、実行頻度が高いため、非実行判定データは不要である。
（６）命令番号１３は非実行率が１００％であるが、その後の命令を２命令しか削除できない。従って、非実行判定データの削除対象とする。
【００２４】
プログラム最適化手段８は、最適化パラメータ１０４の条件と一致した命令に対しては非実行判定データは不要と判断して（ステップＳＴ２６）、非実行判定データを削除し（ステップＳＴ２７）、ステップＳＴ２２に戻る。また、ステップＳＴ２６において非判定データは必要と判断した場合は、そのままステップＳＴ２２に戻る。そして、以上の処理をステップＳＴ２２で最後の命令と判定するまで繰り返し行う。
【００２５】
尚、ユーザに対してプロファイル１０３の内容を表示するための出力手段や、ユーザからの選択入力を受け付けるための入力手段をプログラム最適化手段８に設け、上記ステップＳＴ２６において非実行判定データは不要であると判断した命令を、例えば削除候補としてユーザに提示し、ユーザが削除する非実行判定データを対話的に選択するようにしてもよい。
【００２６】
そして、このように最適化された実行コード１０２は、再度、プログラムメモリ２に格納され、図７で示した実行・非実行結果のプロファイリングが行われる。
【００２７】
以上のように、実施の形態２のラダープログラム実行装置によれば、非実行判定手段は、命令ごとに実行・非実行判定結果を蓄積情報として蓄積すると共に、非実行判定データが付与された前記命令に対応する前記蓄積情報が所定の条件を満たす場合、当該命令の非実行判定データを実行コードの命令から削除するプログラム最適化手段を備えたので、必要な命令のみに非実行判定データを挿入することができることから、コード量の増加を最小限に抑えて、更にスループットを向上させることができる。
【００２８】
また、実施の形態２のラダープログラム実行装置によれば、プログラム最適化手段は、対象となる命令が予め定めた条件を満足するか否かに基づいて、所定の非実行判定データを実行コードの命令から削除するようにしたので、自動的に最適な非実行判定データを挿入することができる。
【００２９】
また、実施の形態２のラダープログラム実行装置によれば、プログラム最適化手段は、非実行判定データを付与するか否かの情報が入力される入力手段を備えたので、ユーザの仕様に応じた設定を可能とすることができる。
【００３０】
実施の形態３．
実施の形態３は、ラダープログラム実行装置を、パーソナルコンピュータ２００とプログラマブルコントローラ３００とで実現するようにしたものである。
図９は、実施の形態３のラダープログラム実行装置の構成図である。
図において、パーソナルコンピュータ２００は、プログラム変換手段１とプログラム最適化手段８とを備えると共に、送信手段９と受信手段１０とを備えている。送信手段９は、プログラム変換手段１で生成され、また、プログラム最適化手段８で最適化された実行コード１０２をプログラマブルコントローラ３００に対して送信する手段である。受信手段１０は、プログラマブルコントローラ３００における実行・非実行結果であるプロファイル１０３を受け取ってプログラム最適化手段８に渡すための手段である。
【００３１】
また、プログラマブルコントローラ３００は、プログラムメモリ２、入力手段３、解析手段４、実行手段５、非実行判定手段６ａ、実行モードレジスタ７を備えており、これらの構成は、実施の形態２と同様であるため、ここでの説明は省略する。
【００３２】
次に、実施の形態３の動作について説明する。
図１０は、実施の形態３の動作を示すフローチャートである。
先ず、パーソナルコンピュータ２００のプログラム変換手段１は、ラダープログラム１０１を非実行判定データ付きの実行コードに変換する（ステップＳＴ３１）。この変換動作は実施の形態１、２におけるステップＳＴ１の処理と同様である。
【００３３】
次に、作成された非実行判定データ付きの実行コード１０２は送信手段９によってプログラマブルコントローラ３００に送信され、プログラマブルコントローラ３００のプログラムメモリ２にダウンロードされる（ステップＳＴ３２）。プログラマブルコントローラ３００では、ダウンロード待ちの状態で実行コード１０２を取得すると、プログラムメモリ２に書き込み、プログラマブルコントローラ３００が再起動される（ステップＳＴ３３）。次に、プログラマブルコントローラ３００では、プログラムメモリ２に格納された実行コード１０２を実行する（ステップＳＴ３４）。この実行コード１０２の実行処理は、実施の形態１、２におけるステップＳＴ３の処理と同様である。
【００３４】
次に、ステップＳＴ３５において、実行モードレジスタ７がオンになっている場合（ロギングモードが設定されていた場合）は、実行・非実行処理をプロファイリングする（ステップＳＴ３６）。このプロファイリングは、実施の形態２におけるステップＳＴ５の処理と同様である。ステップＳＴ３６のプロファイリングによって得られたプロファイル１０３は、パーソナルコンピュータ２００の受信手段１０で受信され、プログラム最適化手段８で取得される（ステップＳＴ３７）。
【００３５】
プログラム最適化手段８は、ダウンロードしたプロファイル１０３に基づいて、実行コード１０２の最適化を行う（ステップＳＴ３８）。この最適化処理は、実施の形態２で説明した図８の動作と同様である。
【００３６】
このように、プログラム最適化手段８で最適化された実行コード１０２は、送信手段９によってプログラマブルコントローラ３００に送信され、以降、プログラマブルコントローラ３００でロギングモードが設定されている限りは、図１０のステップＳＴ３２〜ステップＳＴ３８の処理が繰り返される。
【００３７】
図１１は、以上の実施の形態３の動作を模式的に示す説明図である。
図示のように、実施の形態３では、パーソナルコンピュータ２００に設けられたプログラム変換手段１で、ユーザが記述したラダープログラム１０１を実行コード１０２に変換すると共に、非実行判定データを付与する。この実行コード１０２は、プログラマブルコントローラ３００内のＲＯＭからなるプログラムメモリ２にダウンロードされる。プログラマブルコントローラ３００では実行モードレジスタ７でロギングモードがオンに設定されていた場合は、ＲＡＭ３０１内に、実行・非実行結果をプロファイル１０３としてロギングする。ロギングするデータは例えば図１２に示す通りである。
【００３８】
そして、プログラムをロギングモードで実行すると、図１２に示すテーブルが更新され、これがプロファイル１０３としてパーソナルコンピュータ２００にダウンロードされる。プログラム最適化手段８は、このプロファイル１０３を用いて実行コード１０２を最適化する。例えば、図１２に示す実行・非実行結果では、命令番号１１、３４、４４、６３、６７のように、実行可能性が高いものは非実行判定データが不要と判断され、命令の非実行判定データを削除し、実行コード１０２の最適化が行われる。
【００３９】
以上のように、実施の形態３のラダープログラム実行装置によれば、パーソナルコンピュータにプログラム変換手段とプログラム最適化手段とを設け、プログラマブルコントローラに実行コードを与えると共に、プログラマブルコントローラのプロファイルを受け取り、このプロファイルに基づいて実行コードを最適化するようにしたので、プログラマブルコントローラの構成を簡素化することができると共に、実行コードの生成や最適化をより柔軟に行うことができる。
【００４０】
実施の形態４．
実施の形態４はプログラム変換手段１において、ハードウェア仕様により高速化できない場合に非実行判定データを付与しないようにしたものである。図面上の構成は、図１、図６、図９のいずれかと同一であるため、これらの図を援用して説明する。
【００４１】
実施の形態４のプログラム変換手段１は、ハードウェア仕様によりスループットを向上させる可能性がない高速化不可命令に対しては非実行判定データを実行コード１０２に付与しないよう構成されている。これ以外の構成は実施の形態１〜３のいずれかの構成と同様であるため、その説明は省略する。
【００４２】
図１３は、実施の形態４におけるプログラム変換手段１の動作を示すフローチャートである。
先ず、対象とする命令が最後の命令かを判定し（ステップＳＴ４１）、そうでない場合は接点命令かを判定する（ステップＳＴ４２）。ステップＳＴ４２において接点命令であった場合、次に、その接点命令が高速化不可命令かを判定する（ステップＳＴ４３）。例えば、このような高速化不可能な場合として、パイプラインアーキテクチャ採用時にフェッチ済みの命令をフラッシュするオーバヘッドが発生する場合は、非実行判定データの付与対象から外し、ステップＳＴ４１に戻る。
【００４３】
ここで、パイプラインアーキテクチャ採用時にフェッチ済みの命令をフラッシュするオーバヘッドが発生する場合とは次のような場合である。例えば、１クロックに２命令をフェッチできる場合、パイプラインの依存性を解析するステージで非実行命令を解析しているときには、既にフェッチ済みの命令がデコード、フェッチ（例えば、依存性解析ステージが第３ステージ目だとする）メモリへのフェッチ中の各ステージにあり（合計６命令）、この６命令をフラッシュする可能性がある。フェッチするアドレス自体が変わらないため、６命令以上非実行にできないものはオーバヘッドが発生する場合と考える。即ち、非実行判定データを付与しない命令は、非実行命令数が、既にフェッチ開始後（同時フェッチ数×ステージ数）の命令数よりも少ない非実行判定対象命令である。
【００４４】
尚、上記のようなフェッチ済みの命令をフラッシュするオーバヘッドが発生する場合は、例えばパイプラインの段数、及び、命令処理サイクルがデバイス毎に決まっており、非実行判定ステージ以前にフェッチ可能な命令数が判明するため、自動処理が可能である。
【００４５】
ステップＳＴ４３において高速化不可命令ではなかった場合、それ以降の処理は実施の形態１と同様に、その接点命令が、その後いくつの命令に影響するかをチェックし（ステップＳＴ４４）、更に、後続命令が非実行になるのは接点が０か１かをチェックして（ステップＳＴ４５）、非実行判定データを挿入する（ステップＳＴ４６）。一方、ステップＳＴ４３において、高速化不可命令であった場合はステップＳＴ４１に戻る。そして、これらステップＳＴ４１〜ステップＳＴ４６の処理を、ステップＳＴ４１において最後の命令となるまで繰り返し行う。
【００４６】
以上のように、実施の形態４のラダープログラム実行装置によれば、プログラム変換手段は、高速化不可命令に対しては非実行判定データを実行コードに付与しないようにしたので、不要な非実行判定データを付与しないことでコード量の増加を抑えることができる。
【００４７】
また、実施の形態４のラダープログラム実行装置によれば、高速化不可命令は、ハードウェア仕様がパイプラインアーキテクチャである場合に、その命令の実行時、フラッシュする可能性のある命令数より非実行命令数が少ない命令としたので、パイプラインアーキテクチャ採用時においても、よりスループットの向上を図ることができる。
【図面の簡単な説明】
【００４８】
【図１】この発明の実施の形態１によるラダープログラム実行装置を示す構成図である。
【図２】この発明の実施の形態１によるラダープログラム実行装置の動作を示すフローチャートである。
【図３】この発明におけるラダープログラムと実行コードとプロファイルの一例を示す説明図である。
【図４】この発明の実施の形態１によるラダープログラム実行装置の非実行判定データの挿入処理を示すフローチャートである。
【図５】この発明の実施の形態１によるラダープログラム実行装置のプログラム実行の詳細を示す説明図である。
【図６】この発明の実施の形態２によるラダープログラム実行装置を示す構成図である。
【図７】この発明の実施の形態２によるラダープログラム実行装置の動作を示すフローチャートである。
【図８】この発明の実施の形態２によるラダープログラム実行装置の実行コードの最適化処理を示すフローチャートである。
【図９】この発明の実施の形態３によるラダープログラム実行装置を示す構成図である。
【図１０】この発明の実施の形態３によるラダープログラム実行装置の動作を示すフローチャートである。
【図１１】この発明の実施の形態３によるラダープログラム実行装置の動作を模式的に示す説明図である。
【図１２】この発明の実施の形態３によるラダープログラム実行装置のプロファイルの一例を示す説明図である。
【図１３】この発明の実施の形態４によるプログラム変換手段の動作を示すフローチャートである。
【符号の説明】
【００４９】
１  プログラム変換手段、２  プログラムメモリ、６，６ａ  非実行判定手段、８  プログラム最適化手段、１０１  ラダープログラム、１０２  実行コード、１０３，１０３ａ，１０３ｂ  プロファイル、１０４  最適化パラメータ、２００  パーソナルコンピュータ、３００  プログラマブルコントローラ。
【図１】
2008015826.tif 000003
【図２】
2008015826.tif 000004
【図３】
2008015826.tif 000005
【図４】
2008015826.tif 000006
【図５】
2008015826.tif 000007
【図６】
2008015826.tif 000008
【図７】
2008015826.tif 000009
【図８】
2008015826.tif 000010
【図９】
2008015826.tif 000011
【図１０】
2008015826.tif 000012
【図１１】
2008015826.tif 000013
【図１２】
2008015826.tif 000014
【図１３】
2008015826.tif 000015