(57)【特許請求の範囲】
【請求項１】
ラインにおいて異なる工程を実施するための複数の動作モードを有するプログラムを実行するプログラム実行装置であって、
前記複数の動作モードのそれぞれで前記プログラムを実行する試運転処理を実行する実行手段と、
前記複数の動作モードそれぞれについて、前記試運転処理において前記プログラムが実行されているときに発生する記憶装置へのアクセスの頻度を、該アクセスの対象であるファームウェアであって、ライン工程における機器の状態をリアルタイムに外部に提供するサーバとして機能する前記ファームウェア毎に計数する計数手段と、
前記プログラムの動作モードの指定と、指定した動作モードで前記プログラムを実行することの指示と、を受け付ける受付手段と、
前記受付手段によって受け付けられた指定の動作モードにおいて、前記計数手段によって計数された前記頻度が高い順に前記ファームウェアをキャッシュに格納する格納手段と、を備え、
前記実行手段は、前記受付手段によって前記指示が受け付けられると、前記格納手段によって前記キャッシュに格納された前記ファームウェアを参照して前記指定の動作モードで前記プログラムを実行する、
プログラム実行装置。
【請求項２】
ラインにおいて異なる工程を実施するための複数の動作モードを有するプログラムを実行するプログラム実行装置であって、
前記複数の動作モードのそれぞれで前記プログラムを実行する試運転処理を実行する実行手段と、
前記試運転処理において前記プログラムが前記複数の動作モードで実行されているときに発生する記憶装置へのアクセスの頻度を、該アクセスの対象であるファームウェアであって、ライン工程における機器の状態をリアルタイムに外部に提供するサーバとして機能する前記ファームウェア毎に計数する計数手段と、
前記プログラムの動作モードの指定と、指定した動作モードで前記プログラムを実行することの指示と、を受け付ける受付手段と、
前記受付手段によって受け付けられた指定の動作モードにおいて、前記計数手段によって計数された前記頻度が高い順に前記ファームウェアをキャッシュに格納する格納手段と、を備え、
前記実行手段は、前記受付手段によって前記指示が受け付けられると、前記格納手段によって前記キャッシュに格納された前記ファームウェアを参照して前記指定の動作モードで前記プログラムを実行する、
プログラム実行装置。
【請求項３】
前記計数手段は、前記複数の動作モードそれぞれについて、前記頻度を該アクセスの対象であって数値又は文字列であるデバイスデータ毎に計数し、
前記格納手段は、前記指定の動作モードにおいて前記頻度が高い順に前記デバイスデータを前記キャッシュに格納し、
前記実行手段は、前記受付手段によって前記指示が受け付けられると、前記格納手段によって前記キャッシュに格納された前記デバイスデータを参照して前記指定の動作モードで前記プログラムを実行する、
請求項１又は２に記載のプログラム実行装置。
【請求項４】
前記計数手段は、前記複数の動作モードそれぞれについて、前記頻度を該アクセスの対象である命令コード毎に計数し、
前記格納手段は、前記指定の動作モードにおいて前記頻度が高い順に前記命令コードを前記キャッシュに格納し、
前記実行手段は、前記受付手段によって前記指示が受け付けられると、前記格納手段によって前記キャッシュに格納された前記命令コードを参照して前記指定の動作モードで前記プログラムを実行する、
請求項１から３のいずれか一項に記載のプログラム実行装置。
【請求項５】
前記格納手段は、前記指定の動作モードにおいて、予め定められた個数まで前記ファームウェアを前記キャッシュに格納する、
請求項１から４のいずれか一項に記載のプログラム実行装置。
【請求項６】
複数の動作モードを有するプログラムを実行するプログラム実行装置によるプログラム実行方法であって、
実行手段が、前記複数の動作モードのそれぞれで前記プログラムを実行する試運転処理を実行する試運転処理ステップと、
計数手段が、前記複数の動作モードそれぞれについて、前記試運転処理において前記プログラムが実行されているときに発生する記憶装置へのアクセスの頻度を、該アクセスの対象であるファームウェアであって、ライン工程における機器の状態をリアルタイムに外部に提供するサーバとして機能する前記ファームウェア毎に計数する計数ステップと、
受付手段が、前記プログラムの動作モードの指定と、指定した動作モードで前記プログラムを実行することの指示と、を受け付ける受付ステップと、
格納手段が、前記受付ステップにおいて受け付けられた指定の動作モードにおいて、前記計数ステップにおいて計数された前記頻度が高い順に前記ファームウェアをキャッシュに格納する格納ステップと、
前記実行手段が、前記受付ステップにおいて前記指示が受け付けられると、前記格納ステップにおいて前記キャッシュに格納された前記ファームウェアを参照して前記指定の動作モードで前記プログラムを実行する実行ステップと、
を含むプログラム実行方法。
【請求項７】
複数の動作モードを有するプログラムを実行するプログラム実行装置によるプログラム実行方法であって、
実行手段が、前記複数の動作モードのそれぞれで前記プログラムを実行する試運転処理を実行する試運転処理ステップと、
計数手段が、前記試運転処理において前記プログラムが前記複数の動作モードで実行されているときに発生する記憶装置へのアクセスの頻度を、該アクセスの対象であるファームウェアであって、ライン工程における機器の状態をリアルタイムに外部に提供するサーバとして機能する前記ファームウェア毎に計数する計数ステップと、
受付手段が、前記プログラムの動作モードの指定と、指定した動作モードで前記プログラムを実行することの指示と、を受け付ける受付ステップと、
格納手段が、前記受付ステップにおいて受け付けられた指定の動作モードにおいて、前記計数ステップにおいて計数された前記頻度が高い順に前記ファームウェアをキャッシュに格納する格納ステップと、
前記実行手段が、前記受付ステップにおいて前記指示が受け付けられると、前記格納ステップにおいて前記キャッシュに格納された前記ファームウェアを参照して前記指定の動作モードで前記プログラムを実行する実行ステップと、
を含むプログラム実行方法。
【請求項８】
複数の動作モードを有する実行プログラムを実行するコンピュータを、
前記複数の動作モードのそれぞれで前記実行プログラムを実行する試運転処理を実行する実行手段、
前記複数の動作モードそれぞれについて、前記試運転処理において前記実行プログラムが実行されているときに発生する記憶装置へのアクセスの頻度を該アクセスの対象であるファームウェアであって、ライン工程における機器の状態をリアルタイムに外部に提供するサーバとして機能する前記ファームウェア毎に計数する計数手段、
前記実行プログラムの動作モードの指定と、指定した動作モードで前記実行プログラムを実行することの指示と、を受け付ける受付手段、
前記受付手段によって受け付けられた指定の動作モードにおいて、前記計数手段によって計数された前記頻度が高い順に前記ファームウェアをキャッシュに格納する格納手段、として機能させ、
前記実行手段は、前記受付手段によって前記指示が受け付けられると、前記格納手段によって前記キャッシュに格納された前記ファームウェアを参照して前記指定の動作モードで前記実行プログラムを実行する、
コンピュータプログラム。
【請求項９】
複数の動作モードを有する実行プログラムを実行するコンピュータを、
前記複数の動作モードのそれぞれで前記実行プログラムを実行する試運転処理を実行する実行手段、
前記試運転処理において前記実行プログラムが前記複数の動作モードで実行されているときに発生する記憶装置へのアクセスの頻度を該アクセスの対象であるファームウェアであって、ライン工程における機器の状態をリアルタイムに外部に提供するサーバとして機能する前記ファームウェア毎に計数する計数手段、
前記実行プログラムの動作モードの指定と、指定した動作モードで前記実行プログラムを実行することの指示と、を受け付ける受付手段、
前記受付手段によって受け付けられた指定の動作モードにおいて、前記計数手段によって計数された前記頻度が高い順に前記ファームウェアをキャッシュに格納する格納手段、として機能させ、
前記実行手段は、前記受付手段によって前記指示が受け付けられると、前記格納手段によって前記キャッシュに格納された前記ファームウェアを参照して前記指定の動作モードで前記実行プログラムを実行する、
コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、プログラム実行装置、プログラム実行方法及びコンピュータプログラムに関する。
【背景技術】
【０００２】
ＦＡ（Factory Automation）の現場では、プロセッサによる高速な演算処理を実現するために、キャッシュを備えるＰＬＣ（Programmable Logic Controller）が利用されることがある。キャッシュは、他のメモリより高速なデータの読み出し及び書き込みが可能な記憶装置である。このため、演算処理に必要なデータがキャッシュから読み出される場合には、当該データがＲＡＭ（Random Access Memory）に代表されるメモリから読み出される場合よりも演算処理を高速に実行することが可能になる。同様に、データがキャッシュに書き込まれる場合には、演算処理を高速に実行することが可能になる。【０００３】
一般的に、キャッシュの容量が小さいため、必要なデータがキャッシュに存在しない場合には、キャッシュより容量が大きく低速なメモリのデータが利用され、演算処理に遅延が生じてしまう。このため、必要なデータへのアクセス先がキャッシュである割合を示すキャッシュヒット率は、高いことが望ましい。そこで、ＰＬＣに相当する制御装置のキャッシュヒット率を向上させるための技術が提案されている（例えば、特許文献１を参照）。【０００４】
特許文献１には、ユーザの作成したプログラムを命令コードにコンパイルする際に、命令コードに含まれるデバイスの使用頻度を分類して、使用頻度の高いデバイスの状態を表すデバイスデータを、高速に処理が可能なプロセッサの内蔵メモリに格納し、使用頻度の低いデバイスの状態を表すデバイスデータをデータ用メモリに格納するプログラマブルコントローラについて記載されている。このプログラマブルコントローラによれば、演算処理の高速化を図ることができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１０−１２８６１２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
制御装置が利用される現場では、１つのプログラムにより実現される複数の異なる工程のうち、いずれか１つの工程が実施されることがある。例えば、ユーザがスイッチを押下することにより、プログラムにより規定される動作モードを変更して、実施すべき工程を切り替える場合がある。このような場合には、プログラム全体が機能することなく、スイッチの状態に応じて当該プログラムの一部が機能することとなる。【０００７】
特許文献１に記載の技術では、プログラムをコンパイルする際に命令コードを実行する上で使用頻度の高いデバイスと低いデバイスとが分類される。しかしながら、コンパイル時に観測されるデバイスの使用頻度は、上述のようなスイッチの入力状態に応じて使用されるデバイスの使用頻度とは異なる。このため、実際の運用においては使用頻度が低いデバイス又は使用されないデバイスが、キャッシュに相当する内蔵メモリに格納されてしまい、使用頻度が高いデバイスが他のメモリに格納される結果、演算処理に遅延が発生するおそれがある。したがって、ライン工程に合わせて、実行する動作モードを切り替えて複数の異なる工程を実施可能なプログラムをより高速に実行する余地がある。【０００８】
本開示は、ライン工程に合わせて、実行する動作モードを切り替えて複数の異なる工程を実施可能なプログラムをより高速に実行することを目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するため、本開示のプログラム実行装置は、ラインにおいて異なる工程を実施するための複数の動作モードを有するプログラムを実行するプログラム実行装置であって、複数の動作モードのそれぞれでプログラムを実行する試運転処理を実行する実行手段と、複数の動作モードそれぞれについて、試運転処理においてプログラムが実行されているときに発生する記憶装置へのアクセスの頻度を該アクセスの対象であるファームウェアであって、ライン工程における機器の状態をリアルタイムに外部に提供するサーバとして機能するファームウェア毎に計数する計数手段と、プログラムの動作モードの指定と、指定した動作モードでプログラムを実行することの指示と、を受け付ける受付手段と、受付手段によって受け付けられた指定の動作モードにおいて、計数手段によって計数された頻度が高い順にファームウェアをキャッシュに格納する格納手段と、を備え、実行手段は、受付手段によって指示が受け付けられると、格納手段によってキャッシュに格納されたファームウェアを参照して指定の動作モードでプログラムを実行する。
【発明の効果】
【００１０】
本開示によれば、計数手段が、動作モードそれぞれについて、プログラムが実行されているときに発生する記憶装置へのアクセスの頻度をデータ毎に計数する。そして、格納手段は、指定の動作モードにおいてアクセスの頻度が高い順にアクセスの対象であるデータをキャッシュに格納する。これにより、実行手段がキャッシュに格納されたデータをプログラム実行時に参照する可能性が高くなる。このため、動作モードに合わせてキャッシュの状態が最適化された状態でプログラムが実行される。したがって、ライン工程に合わせて実行する動作モードを切り替えて複数の異なる工程を実施可能なプログラムをより高速に実行することができる。
【図面の簡単な説明】
【００１１】
【図１】実施の形態１に係る制御システムの構成を示す図
【図２】実施の形態１に係る動作モードとライン工程との対応を示す図
【図３】実施の形態１に係るプログラム実行装置のハードウェア構成を示す図
【図４】実施の形態１に係るプログラム実行装置の機能的な構成を示す図
【図５】実施の形態１に係るラダープログラムの一例を示す図
【図６】実施の形態１に係る動作モード設定情報の一例を示す図
【図７】実施の形態１に係るラダープログラムの実行時にアクセスされる記憶装置内のデータについて説明するための図
【図８】実施の形態１に係る運転処理を示すフローチャート
【図９】実施の形態１に係る試運転処理を示すフローチャート
【図１０】実施の形態１に係るデータ頻度記憶部に記憶される情報の一例を示す図
【図１１】実施の形態１に係る命令頻度記憶部に記憶される情報の一例を示す図
【図１２】実施の形態１に係るファームウェア頻度記憶部に記憶される情報の一例を示す図
【図１３】実施の形態１に係る通常運転処理を示すフローチャート
【図１４】実施の形態２に係るファームウェア頻度記憶部に記憶される情報の一例を示す図
【図１５】変形例に係る制御システムの構成を示す図
【発明を実施するための形態】
【００１２】
以下、本開示の実施の形態に係るプログラム実行装置１００について、図面を参照しつつ詳細に説明する。
【００１３】
実施の形態１．
図１には、本実施の形態に係るプログラム実行装置１００を含む制御システム１０００の構成が示されている。制御システム１０００は、工場において形成されるシステムであって、予め設定された製造ラインに従ってワークを加工及び検査して製品を製造するためのＦＡシステムである。制御システム１０００は、ラダープログラムＰ１を実行することにより機器３０，３１を制御して製造ラインを稼働させるプログラム実行装置１００と、プログラム実行装置１００による制御内容を設定するための端末２０と、製造ラインに設置された機器３０，３１と、を有する。制御システム１０００においては、複数の動作モードを有するラダープログラムＰ１が、端末２０からプログラム実行装置１００に提供され、プログラム実行装置１００によって動作モード毎にキャッシュが最適化された状態で効率よく実行される。
【００１４】
プログラム実行装置１００と端末２０とは、ＵＳＢ（Universal Serial Bus）ケーブル及びＬＡＮケーブルに代表される通信線により接続され、互いに信号を送受信することにより通信する。また、プログラム実行装置１００と機器３０，３１とは、ＦＡネットワーク又は産業用ネットワークを介して接続され、互いに信号を送受信することにより通信する。なお、プログラム実行装置１００、端末２０及び機器３０，３１による通信の形態はこれに限定されず、任意に変更してもよい。
【００１５】
機器３０は、例えば圧力又は温度を計測するセンサを有し、このセンサによる計測結果を示す信号を定期的にプログラム実行装置１００に通知するセンサ装置である。計測結果が通知される周期は、例えば１秒間隔又は１分間隔である。機器３０から通知される計測結果は、プログラム実行装置１００によって制御内容を決定するために利用される。機器３１は、例えばアクチュエータ又はロボットであって、機器３０による計測結果に基づくプログラム実行装置１００からの指令に従って動作する。機器３０，３１によれば、プログラム実行装置１００は、製造ラインにおける計測の結果に応じてワークを処理することができる。例えば、ベルトコンベア上を通過するワークを機器３０が検知したタイミングで、プログラム実行装置１００は、塗装ロボットである機器３１に塗料を噴射させる。なお、図１では、２つの機器３０，３１が代表的に示されているが、３つ以上の機器が制御システム１０００を構成してもよい。また、機器３０，３１は、センサ、アクチュエータ及びロボットとは異なる他の機器であってもよい。
【００１６】
端末２０は、ＩＰＣ（Industrial Personal Computer）又はプログラム実行装置１００のユーザインタフェースとして用いられるＧＵＩ（Graphical User Interface）端末である。端末２０は、ユーザ２１が端末２０を操作することで作成されたラダープログラムＰ１をコンパイルして、オブジェクト形式のラダープログラムＰ１をユーザ２１の指示に従ってプログラム実行装置１００に送信する。
【００１７】
ラダープログラムＰ１は、ラダー言語で記述されたプログラムであって、ユーザ２１が要望するライン工程を実現するために作成される。ラダープログラムＰ１は、製造ラインにおいて異なる工程を実施するための複数の動作モードを有し、この複数の動作モードのうちユーザ２１から指定されたいずれか一の動作モードで実行される。図２には、ラダープログラムＰ１が有する３つの動作モードと、各モードで実行される工程と、の例が示されている。図２の例では、ラダープログラムＰ１が第１モードＭ１で実行されるときには、製造ラインにおいて「白色塗装」の工程が実施され、第２モードＭ２で実行されるときには、製造ラインにおいて「黒色塗装」の工程が実施され、第３モードＭ３で実行されるときには、製造ラインにおいて「塗装なし」の工程が実施される。このようなラダープログラムＰ１によれば、製造工程の種別を切り替えることが可能になる。
【００１８】
プログラム実行装置１００は、ＰＬＣに代表される制御装置である。図３には、プログラム実行装置１００のハードウェア構成が模式的に示されている。図３に示されるように、プログラム実行装置１００は、プロセッサ１１と、主記憶部１２と、補助記憶部１３と、入力部１４と、出力部１５と、通信部１６と、を有する。主記憶部１２、補助記憶部１３、入力部１４、出力部１５及び通信部１６はいずれも、内部バス１７を介してプロセッサ１１に接続される。
【００１９】
プロセッサ１１は、キャッシュとしてのキャッシュメモリ１０１を含むＭＰＵ（Micro Processing Unit）又はＣＰＵ（Central Processing Unit）である。プロセッサ１１は、補助記憶部１３に記憶されるプログラムＰ２を実行することにより、プログラム実行装置１００の後述の機能を実現して、種々の処理を実行する。プログラムＰ２に従ってプロセッサ１１により実行される処理には、補助記憶部１３に記憶されるラダープログラムＰ１の実行により機器３０，３１を制御する処理が含まれる。ラダープログラムＰ１は、複数の動作モードを有する実行プログラムの一例に相当し、プログラムＰ２は、プログラム実行装置１００にコンピュータとしての機能を発揮させるためのコンピュータプログラムの一例に相当する。
【００２０】
キャッシュメモリ１０１は、プロセッサ１１の内蔵メモリである。プロセッサ１１は、キャッシュメモリ１０１に格納されたデータについては、主記憶部１２及び補助記憶部１３に記憶されたデータより高速に書き込み及び読み出しをする。キャッシュメモリ１０１には、後述の工程データＡ１０の一部分に相当する部分データＡ１１がロードされる。そして、キャッシュメモリ１０１は、ラダープログラムＰ１を実行するプロセッサ１１の作業領域として用いられる。
【００２１】
主記憶部１２は、キャッシュメモリ１０１より容量が大きいＲＡＭ（Random Access Memory）を含む。主記憶部１２には、補助記憶部１３からプログラムＰ２がロードされる。主記憶部１２は、プログラムＰ２を実行するプロセッサ１１の作業領域として用いられる。また、主記憶部１２には、工程データＡ１０の一部分に相当する部分データＡ１２がロードされ、主記憶部１２は、ラダープログラムＰ１を実行するプロセッサ１１の作業領域として用いられる。
【００２２】
部分データＡ１１，Ａ１２は、工程データＡ１０から分割されてキャッシュメモリ１０１と主記憶部１２それぞれに割り当てられた、互いに異なるデータである。部分データＡ１１，Ａ１２は、例えば、ラダープログラムＰ１を構成する一部である命令コード、ラダープログラムＰ１を実行する際に使用されるデバイスデータ、及び、ファームウェアモジュール、のうちの一又は複数のデータである。プロセッサ１１がラダープログラムＰ１を実行する際には、部分データＡ１１，Ａ１２が参照されて利用される。ここで、プロセッサ１１から部分データＡ１１へのアクセス数が、部分データＡ１２へのアクセス数より多いほど、プロセッサ１１が主記憶部１２にアクセスする際の遅延が発生する回数が減少し、演算処理が高速になる。なお、部分データＡ１１，Ａ１２は、一部の情報を重複して有するデータであってもよいし、部分データＡ１２が部分データＡ１１を包含してもよい。
【００２３】
補助記憶部１３は、ＥＥＰＲＯＭ（Electrically Erasable Programmable Read-Only Memory）に代表される不揮発性メモリを含む。補助記憶部１３は、プログラムＰ２と、製造ラインにおける工程を実施するための工程データＡ１０と、を記憶する。補助記憶部１３は、プロセッサ１１の指示に従って、プロセッサ１１によって利用されるデータをプロセッサ１１に供給し、プロセッサ１１から供給されたデータを記憶する。
【００２４】
工程データＡ１０は、ラダープログラムＰ１と、ラダープログラムＰ１が実行される際に利用されるファームウェアＰ３と、を含む。ラダープログラムＰ１が、ユーザの要望するライン工程を実現するために設計されるのに対して、ファームウェアＰ３は、ライン工程の設計に関わらず補助記憶部１３に予め格納されるソフトウェアである。ファームウェアＰ３は、例えば、製造ラインに関するリアルタイムの情報をユーザに提供するためのＦＴＰ（File Transfer Protocol）サーバ又はｗｅｂサーバとして機能する。なお、補助記憶部１３に予め記憶される種々のファームウェアのうち、ラダープログラムＰ１の実行に際して利用される一部のファームウェアＰ３が、工程データＡ１０を構成する。
【００２５】
入力部１４は、ユーザによって操作されるスライドスイッチ及びプッシュボタンに代表される入力デバイスを含む。入力部１４は、プログラム実行装置１００に対してユーザ２１によって入力された情報を取得して、取得した情報をプロセッサ１１に通知する。出力部１５は、ＬＥＤ（Light Emitting Diode）、ＬＣＤ（Liquid Crystal Display）及びブザーに代表される出力デバイスを含む。出力部１５は、プロセッサ１１の指示に従って、種々の情報をユーザに提示する。
【００２６】
通信部１６は、外部の装置と通信するための通信インタフェース回路を含む。通信部１６は、外部から信号を受信して、この信号により示されるデータをプロセッサ１１へ出力する。また、通信部１６は、プロセッサ１１から出力されたデータを示す信号を外部の装置へ送信する。図３には、１つの通信部１６が代表的に示されているが、プログラム実行装置１００は、複数の通信部１６を有してもよい。例えば、プログラム実行装置１００は、端末２０と通信するための第１の通信部１６と、機器３０，３１と通信するための第２の通信部１６と、を別個に有してもよい。
【００２７】
プログラム実行装置１００は、上述のハードウェア構成が協働することにより、図４に示されるように、種々の機能を発揮する。なお、図４には、プログラム実行装置１００の機能的な構成に加えて、端末２０によって実現されるプログラミングツール２００の機能が併せて示されている。プログラミングツール２００は、ユーザ２１がラダー言語でプログラミングをするためのツールとして、端末２０が特定のプログラムを実行することにより実現される。プログラミングツール２００は、ユーザ２１がＧＵＩを操作してラダープログラムＰ１を作成するためのプログラム作成部２１０と、ラダー言語で記述されたラダープログラムＰ１をプログラム作成部２１０から取得してコンパイルするコンパイラ２２０と、ラダープログラムＰ１に関してユーザ２１が種々のパラメータを設定するための設定部２３０と、を有する。設定部２３０は、ラダープログラムＰ１の動作モードと、プログラム実行装置１００に対する入力状態と、の対応関係をユーザ２１が設定するための動作モード設定部２３１を有する。
【００２８】
ここで、動作モード設定部２３１によって設定される動作モードと動作モードに合わせてＯＮとＯＦＦを切り替える接点との関係について説明する。図５には、ラダープログラムＰ１の一例が示されている。このラダープログラムＰ１は、第１モードＭ１の実行時にＯＮ状態になる接点Ｃ１１，Ｃ１２，Ｃ１３，Ｃ１４，Ｃ１５と、第２モードＭ２の実行時にＯＮ状態になる接点Ｃ２１，Ｃ２２，Ｃ２３と、第３モードＭ３の実行時にＯＮ状態になる接点Ｃ３１，Ｃ３２，Ｃ３３と、を有する。各モードでＯＮ状態になる接点はいずれも、他のモードが実行されるときにはＯＦＦ状態になる。例えば、第１モードＭ１の実行時において接点Ｃ２１〜Ｃ２３，Ｃ３１〜Ｃ３３はいずれもＯＦＦ状態になる。
【００２９】
接点Ｃ１１がＯＮ状態になると、接点Ｃ１１と接続されるように記述された「命令コードｉ１１  ＤＤ１１  ＤＤ１２」という命令が実行されるが、接点Ｃ１１がＯＦＦ状態であれば、この命令は実行されない。同様に、接点Ｃ１２がＯＮ状態であれば「命令コードｉ１２  ＤＤ１３  ＤＤ１４」という命令が実行され、接点Ｃ１３がＯＮ状態であれば「命令コードｉ１３  ＤＤ１５  ＤＤ１６」という命令が実行され、接点Ｃ１４がＯＮ状態であれば「命令コードｉ１４  ＤＤ１７」という命令が実行され、接点Ｃ１５がＯＮ状態であれば「命令コードｉ１５」という命令が実行される。一方、接点Ｃ１２〜Ｃ１５がＯＦＦ状態であれば、これらの命令は実行されない。接点Ｃ２１〜Ｃ２３，Ｃ３１〜Ｃ３３の直後に記述された命令についても、接点の状態に応じて実行の有無が決定される。このようにして、動作モードに対応して異なる演算処理が実行される。
【００３０】
図５に示されるように、ラダープログラムＰ１自体は、動作モードに関する情報を含んでいない。プログラム実行装置１００の入力状態と、この入力状態に対応する動作モードでＯＮ状態とすべき接点との対応関係は、ユーザにより設定される。図６には、ユーザにより設定される動作モード設定情報が例示されている。この動作モード設定情報は、動作モードと、この動作モードに対応する入力状態と、この動作モードにおける接点の状態と、を関連付けるテーブル形式のデータである。図６の例は、プログラム実行装置１００の入力部１４であるスライドスイッチの位置を入力状態として、接点の状態が図５に示されたように切り替えられることを示している。
【００３１】
図４に戻り、プログラム実行装置１００は、ラダープログラムＰ１の実行を各動作モードで予め試行することで、その後に、ユーザ２１から指定される動作モードにおいてデータの割り当てを最適化した上でラダープログラムＰ１を実行する機能を有する。詳細には、プログラム実行装置１００は、その機能として、ラダープログラムＰ１及び動作モード設定情報の提供をプログラミングツール２００から受け付けて、当該ラダープログラムＰ１を実行する際の動作モードの指定及び実行指示をユーザ２１から受け付ける受付部１１０と、ラダープログラムＰ１を実行する実行部１２０と、ラダープログラムＰ１の動作モードそれぞれについて、実行時における記憶装置へのアクセス頻度を計数する計数部１３０と、計数部１３０によって計数された頻度を示す情報を記憶するデータ頻度記憶部１４１、命令頻度記憶部１４２及びファームウェア頻度記憶部１４３と、計数された頻度及び指定された動作モードに基づいてデータを異なる記憶領域に割り当てて格納する格納部１５０と、比較的高速にアクセス可能なデータキャッシュメモリ１６１、命令キャッシュメモリ１６２及びファームウェアキャッシュメモリ１６３と、データキャッシュメモリ１６１、命令キャッシュメモリ１６２及びファームウェアキャッシュメモリ１６３のそれぞれに比べてアクセスに時間がかかるデータ外部メモリ１７１、命令外部メモリ１７２及びファームウェア外部メモリ１７３と、を有する。
【００３２】
以下では、データ頻度記憶部１４１、命令頻度記憶部１４２及びファームウェア頻度記憶部１４３を総称して頻度記憶部１４０と適宜表記する。また、データキャッシュメモリ１６１、命令キャッシュメモリ１６２及びファームウェアキャッシュメモリ１６３を総称してキャッシュメモリ１６０と適宜表記する。また、データ外部メモリ１７１、命令外部メモリ１７２及びファームウェア外部メモリ１７３を総称して外部メモリ１７０と適宜表記する。
【００３３】
受付部１１０は、主としてプロセッサ１１、入力部１４及び通信部１６の協働により実現される。受付部１１０は、コンパイラ２２０によって生成されたオブジェクト形式のラダープログラムＰ１と、設定部２３０により設定されたパラメータと、の提供をプログラミングツール２００から受け付ける。プログラミングツール２００から提供されるパラメータには、図６に例示された動作モード設定情報が含まれる。そして、受付部１１０は、提供されたラダープログラムＰ１及びパラメータを実行部１２０に送出する。
【００３４】
また、受付部１１０は、ユーザ２１が操作したスイッチの入力状態により示される動作モードの指定と、各動作モードに対する最適化指示と、プッシュボタンの押下により示されるラダープログラムＰ１の実行指示と、を受け付ける。最適化指示は、各動作モードについてキャッシュの最適化を実行することの指示である。例えば、第１モードＭ１の実行に際してキャッシュを最適化する一方で、第２モードＭ２の実行に際してキャッシュを最適化しない場合には、第１モードＭ１の最適化指示が入力される。以下では、すべての動作モードについて最適化指示が入力される例を中心に説明する。受付部１１０は、受け付けた指定の動作モードと実行指示とを実行部１２０に通知する。受付部１１０は、プログラム実行装置１００において、プログラムの動作モードの指定と、指定した動作モードでプログラムを実行することの指示と、を受け付ける受付ステップを実行する受付手段の一例に相当する。
【００３５】
実行部１２０は、主としてプロセッサ１１により実現される。実行部１２０は、ラダープログラムＰ１及びパラメータが受付部１１０から送出されると、動作モードそれぞれにおけるデータの使用頻度を計数するために、ラダープログラムＰ１を各動作モードで予備的に実行する。詳細には、実行部１２０は、動作モード設定情報により示される各動作モードに対応する接点をＯＮ状態とした上でラダープログラムＰ１に規定された命令を実行する。プログラム実行装置１００は、各動作モードで試運転を実行することとなる。そして、実行部１２０は、各動作モードでラダープログラムＰ１を実行する際に発生する記憶装置へのアクセス頻度のデータ毎の計数を計数部１３０に指示する。ここで、試運転のときに利用される記憶装置は、主記憶部１２のみであってもよいし、最適化されていない状態でデータが割り当てられたキャッシュメモリ１０１及び主記憶部１２であってもよい。
【００３６】
さらに、実行部１２０は、動作モードの指定及びラダープログラムＰ１の実行指示が最適化指示とともに受付部１１０から通知されると、指定モードにおけるアクセス頻度の計数結果に基づいてデータをキャッシュメモリ１６０及び外部メモリ１７０に割り当てて格納することを格納部１５０に指示する。ここで、指定モードは、ユーザ２１のスイッチ操作により指定された動作モードを意味する。そして、実行部１２０は、指定モードでラダープログラムＰ１を実行する。詳細には、実行部１２０は、動作モード設定情報において現在の入力状態に対応する指定モードを判定し、この指定モードに対応する接点をＯＮ状態とした上でラダープログラムＰ１に規定された命令を実行する。プログラム実行装置１００は、指定モードに合わせて最適化されたキャッシュメモリ１６０を利用して通常運転を実行することとなる。実行部１２０は、プログラム実行装置１００において、受付手段によってプログラムを実行する指示が受け付けられると、格納手段によってキャッシュに格納されたデータを参照して指定の動作モードでプログラムを実行する実行ステップを実行する実行手段の一例に相当する。
【００３７】
計数部１３０は、主としてプロセッサ１１によって実現される。計数部１３０は、実行部１２０からの指示に従って、各動作モードが実行されるときの記憶装置へのアクセス頻度を、アクセスの対象であるデータ毎に計数する。記憶装置へのアクセスは、通常、データの読み出し及び書き込みのいずれも該当するが、計数部１３０は、読み出し及び書き込みのいずれか一方のみのアクセス頻度を計数してもよい。すなわち、計数部１３０は、一の動作モードにてラダープログラムＰ１を実行する際に、データの読み出し及び書き込みを行うために記憶装置にアクセスした回数をデータ毎に計数することで、データ毎のアクセス頻度を計数する。計数部１３０は、この計数を、最適化指示を受けつけた動作モードについて実行する。そして、計数部１３０は、計数結果を頻度記憶部１４０に格納する。計数部１３０は、プログラム実行装置１００において、複数の動作モードそれぞれについて、実行手段によってプログラムが実行されているときに発生する記憶装置へのアクセスの頻度を該アクセスの対象であるデータ毎に計数する計数ステップを実行する計数手段の一例に相当する。
【００３８】
データ頻度記憶部１４１、命令頻度記憶部１４２及びファームウェア頻度記憶部１４３はそれぞれ、主として補助記憶部１３によって実現される。ここで、ラダープログラムＰ１の実行により発生する記憶装置へのアクセスについて、図７を参照して説明する。図７の上部には、図５に例示されたラダープログラムＰ１の一部が示されている。図７に示されるように、接点Ｃ１１がＯＮ状態のときに実行される「命令コードｉ１１  ＤＤ１１  ＤＤ１２」という命令は、命令コード「命令コードｉ１１」と、数値又は文字列であるデバイスデータ「ＤＤ１１」及び「ＤＤ１２」と、を含む。
【００３９】
デバイスデータは、例えば、センサの検知結果、機器３０，３１に設定されているパラメータ、その他の機器３０，３１の稼働状態をリアルタイムに表す数値若しくは文字列、又は、変数により若しくは固定値として示される数値若しくは文字列のデータである。命令コードは、プロセッサ１１の命令セットに含まれる演算命令であって、例えば、デバイスデータを対象とする加算命令、転送命令、又は条件分岐命令である。さらに、命令コードの種類によって、ファームウェアを構成するファームウェアモジュールが参照される。例えば、機器３０の検知結果をｗｅｂサーバに通知する命令コードが実行されるときには、ｗｅｂサーバを実現するためのファームウェアモジュールが適宜参照される。
【００４０】
このように、ラダープログラムＰ１が実行されると、デバイスデータ、命令コード及びファームウェアモジュールへのアクセスが発生するため、デバイスデータ、命令コード及びファームウェアモジュールは、図３に示された工程データＡ１０を構成し、キャッシュメモリ１０１及び主記憶部１２にロードされてプロセッサ１１により適宜利用されることとなる。なお、ファームウェアモジュールは、図３中のファームウェアＰ３に相当する。なお、デバイスデータ、命令コード及びファームウェアモジュールは、記憶装置へのアクセスの頻度を計数するためのアクセスの対象であるデータの一例である。
【００４１】
図４に戻り、データ頻度記憶部１４１には、記憶装置へのアクセスとして、デバイスデータへのアクセスが発生した頻度を計数部１３０によって計数した計数結果が格納される。命令頻度記憶部１４２には、記憶装置へのアクセスとして、命令コードへのアクセスが発生した頻度を計数部１３０によって計数した計数結果が格納される。ファームウェア頻度記憶部１４３には、記憶装置へのアクセスとして、ファームウェアモジュールへのアクセスが発生した頻度を計数部１３０によって計数した計数結果が格納される。
【００４２】
格納部１５０は、主としてプロセッサ１１により実現される。格納部１５０は、実行部１２０からの指示に従って、指定モードにおいて計数されたデータ毎の記憶装置へのアクセスの頻度を頻度記憶部１４０から読み出す。そして、格納部１５０は、指定モードの中で、頻度が高い順にアクセス対象であるデータをキャッシュメモリ１６０に格納して、キャッシュメモリ１６０に格納しなかった他のデータを外部メモリ１７０に格納することにより、データの配置を最適化する。
【００４３】
詳細には、格納部１５０は、データ頻度記憶部１４１に格納された計数結果に基づいて、指定モードにおけるアクセス頻度が高い方から順に予め定められた個数のデバイスデータをデータキャッシュメモリ１６１に格納し、データキャッシュメモリ１６１に格納しなかった他のデバイスデータをデータ外部メモリ１７１に格納する。同様に、格納部１５０は、命令頻度記憶部１４２に格納された計数結果に基づいて、指定モードにおけるアクセス頻度が高い方から順に予め定められた個数の命令コードを命令キャッシュメモリ１６２に格納し、命令キャッシュメモリ１６２に格納しなかった他の命令コードを命令外部メモリ１７２に格納する。また、格納部１５０は、ファームウェア頻度記憶部１４３に格納された計数結果に基づいて、指定モードにおけるアクセス頻度が高い方から順に予め定められた個数のファームウェアモジュールをファームウェアキャッシュメモリ１６３に格納し、ファームウェアキャッシュメモリ１６３に格納しなかった他のファームウェアモジュールをファームウェア外部メモリ１７３に格納する。各キャッシュメモリ１６０に格納されるデータの個数は、各キャッシュメモリ１６０の容量に従って予め定められる。例えば、格納部１５０は、頻度の高いデータから順に各キャッシュメモリ１６０に書き込める最大数のデータをキャッシュメモリ１６０に書き込む。格納部１５０は、プログラム実行装置１００において、受付手段によって受け付けられた指定の動作モードにおいて、計数手段によって計数された頻度が高い順にデータをキャッシュに格納する格納ステップを実行する格納手段の一例に相当する。
【００４４】
データキャッシュメモリ１６１、命令キャッシュメモリ１６２及びファームウェアキャッシュメモリ１６３はそれぞれ、主としてキャッシュメモリ１０１によって実現される。データキャッシュメモリ１６１には、指定モードに合わせてアクセス頻度が高い順にデバイスデータが格納部１５０によって格納される。また、命令キャッシュメモリ１６２には、指定モード合わせてアクセス頻度が高い順に命令コードが格納され、ファームウェアキャッシュメモリ１６３には、指定モード合わせてアクセス頻度が高い順にファームウェアモジュールが格納される。これらのキャッシュメモリ１６０に格納されたデータは、指定モードでラダープログラムＰ１が実行されるときに実行部１２０により参照されて利用される。
【００４５】
データ外部メモリ１７１、命令外部メモリ１７２及びファームウェア外部メモリ１７３は、主として主記憶部１２によって実現される。データ外部メモリ１７１には、指定モードにおいてアクセス頻度が比較的低いデバイスデータが格納部１５０によって格納される。また、命令外部メモリ１７２には、指定モードにおいてアクセス頻度が比較的低い命令コードが格納され、ファームウェア外部メモリ１７３には、指定モードにおいてアクセス頻度が比較的低いファームウェアモジュールが格納される。これらの外部メモリ１７０に格納されたデータは、指定モードでラダープログラムＰ１が実行されるときに実行部１２０により参照されて利用される。
【００４６】
続いて、プログラム実行装置１００によって実行される運転処理について、図８〜１３を用いて詳細に説明する。図８には、プログラム実行装置１００に電源が投入されることで実行される運転処理の流れが示されている。なお、この運転処理の流れは、プログラム実行装置１００の機能が発揮される順番を示す一例であって、任意に変更してもよい。
【００４７】
運転処理では、プログラム実行装置１００は、ユーザ２１によって作成されたラダープログラムＰ１及びパラメータをプログラミングツール２００から受け付ける（ステップＳ１）。具体的には、受付部１１０が、プログラミングツール２００から送信されるラダープログラムＰ１及び動作モード設定情報を含むパラメータを示す情報を受信することにより受け付ける。
【００４８】
次に、プログラム実行装置１００は、アクセス頻度を計数するための試運転処理を実行する（ステップＳ２）。図９には、この試運転処理の詳細が示されている。図９に示されるように、試運転処理では、受付部１１０が、試運転の実行指示をプログラミングツール２００から受け付けたか否かを判定する（ステップＳ２０）。試運転の実行指示は、例えば、プログラミングツール２００のＧＵＩにおいて「試運転の開始」又は「最適化の実行」というボタンをユーザ２１がクリックすることにより入力される。なお、最適化の実行は指定モードすべてについて実行してもよいし、最適化する動作モードをユーザが選択してもよい。
【００４９】
試運転の実行指示を受け付けていないと判定した場合（ステップＳ２０；Ｎｏ）、受付部１１０は、ステップＳ２０の判定を繰り返して、試運転の実行指示を受け付けるまで待機する。一方、試運転の実行指示を受け付けたと判定した場合（ステップＳ２０；Ｙｅｓ）、受付部１１０は、動作モード毎の試行サイクル数を受け付ける（ステップＳ２１）。ＰＬＣであるプログラム実行装置１００は、通常、ラダープログラムＰ１により規定される処理を繰り返し実行する。ラダープログラムに条件分岐が含まれる場合、ラダープログラムＰ１の１回の実行のみでは、実行されない部分プログラムが存在する場合があり、最適化に十分な計数結果を得ることができないおそれがある。そのため、試運転処理においてはユーザが要望する回数だけラダープログラムＰ１が反復して実行される。受付部１１０は、この回数としての試行サイクル数を動作モード毎に受け付ける。なお、受付部１１０は、試行サイクル数を、試運転の実行指示より前に受け付けてもよいし、試運転の実行指示と同時に受け付けてもよい。
【００５０】
次に、実行部１２０は、動作モード設定情報により規定される複数の動作モードから、未選択の１つの動作モードを選択する（ステップＳ２２）。動作モードを選択する順序は任意である。例えば、このステップＳ２２が初めて実行されるときに、実行部１２０は、動作モード設定情報において最初に規定されている第１モードＭ１を選択し、ステップＳ２２が再度実行されるときには、動作モード設定情報により規定される順に従って動作モードを１つ選択する。
【００５１】
次に、実行部１２０は、サイクル数Ｃに初期値として１を代入する（ステップＳ２３）。サイクル数Ｃは、実行中のラダープログラムＰ１が何回目のサイクルであるかを示す変数である。
【００５２】
次に、実行部１２０は、ステップＳ２２で選択した動作モードでラダープログラムＰ１を１サイクルだけ実行する（ステップＳ２４）。例えば、実行部１２０は、ステップＳ２２で第１モードＭ１を選択したときには、図５の上部に示される５つの命令コードを順に１回ずつ実行する。
【００５３】
次に、計数部１３０は、ステップＳ２４におけるラダープログラムＰ１の実行を監視して、記憶装置へのアクセス頻度として、デバイスデータ、命令コード及びファームウェアそれぞれへのアクセス頻度を計数する（ステップＳ２５）。具体的には、計数部１３０は、ラダープログラムＰ１に含まれる命令が順に実行される度に、当該命令に含まれる命令コード及びデバイスデータと、当該命令によりファームウェアモジュールが実行される場合における当該ファームウェアモジュールと、を特定して、特定した命令コード、デバイスデータ及びファームウェアモジュールについて頻度記憶部１４０に記憶されるアクセス頻度に１を加算する。
【００５４】
例えば、「命令コードｉ１１  ＤＤ１１  ＤＤ１２」という命令が実行され、この命令により「ファームウェアモジュール１」が併せて実行される場合に、計数部１３０は、命令コード「命令コードｉ１１」、デバイスデータ「ＤＤ１１」、デバイスデータ「ＤＤ１２」、及び「ファームウェアモジュール１」それぞれのアクセス頻度をカウントアップする。その後に同一の命令コード「命令コードｉ１１」を含む命令が再度実行された場合には、当該命令コードのアクセス頻度がさらにカウントアップされる。なお、命令の実行にファームウェアモジュールの実行が伴わない場合には、計数部１３０は、ファームウェアモジュールのアクセス頻度を変更しない。
【００５５】
ステップＳ２５に続いて、実行部１２０は、サイクル数Ｃが、ステップＳ２１において受け付けた試行サイクル数のうちステップＳ２２で選択した動作モードに対応する試行サイクル数に等しいか否かを判定する（ステップＳ２６）。これにより、選択された動作モードにおける試運転を終了すべきか否かが判定される。
【００５６】
サイクル数Ｃが試行サイクル数に等しくないと判定した場合（ステップＳ２６；Ｎｏ）、実行部１２０は、サイクル数Ｃに１を加算して（ステップＳ２７）、ステップＳ２４以降の処理を繰り返す。これにより、試行サイクル数に等しい回数だけラダープログラムＰ１が実行される。
【００５７】
一方、サイクル数Ｃが試行サイクル数に等しいと判定した場合（ステップＳ２６；Ｙｅｓ）、実行部１２０は、最適化指示を受け付けた動作モードをすべて選択したか否かを判定する（ステップＳ２８）。具体的には、実行部１２０は、動作モード設定情報により規定された複数の動作モードのいずれについてもステップＳ２２にて選択したか否かを判定する。
【００５８】
最適化指示を受け付けた動作モードをすべて選択していないと判定した場合（ステップＳ２８；Ｎｏ）、実行部１２０は、ステップＳ２２以降の処理を繰り返す。これにより、未選択の動作モードについて試運転が実行されてアクセス頻度が計数される。一方、最適化指示を受け付けた動作モードをすべて選択したと判定された場合（ステップＳ２８；Ｙｅｓ）、試運転処理が終了する。
【００５９】
図１０には、試運転処理が終了した時点でデータ頻度記憶部１４１に記憶装置へのアクセスの頻度として記憶されるデバイスデータ毎のアクセス数が例示されている。図１０の例では、第１モードＭ１のときには、デバイスデータ「ＤＤ１１」及び「ＤＤ１２」のアクセス頻度が他のデバイスデータより多いことがわかる。同様に、図１１には、命令頻度記憶部１４２に記憶装置へのアクセスの頻度として記憶される命令コード毎のアクセス数が例示され、図１２には、ファームウェア頻度記憶部１４３に記憶装置へのアクセスの頻度として記憶されるファームウェアモジュール毎のアクセス数が例示されている。
【００６０】
図８に戻り、ステップＳ２の試運転処理に続いて、ユーザ２１が要望するライン工程を実際に稼働させるための通常運転処理が実行される（ステップＳ３）。図１３には、この通常運転処理の詳細が示されている。図１３に示されるように、通常運転処理では、受付部１１０が、指定モード及び実行指示を受け付けたか否かを判定する（ステップＳ３０）。具体的には、受付部１１０が、ユーザ２１により操作されたスイッチの入力状態に対応する動作モードを動作モード設定情報から特定することにより指定モードを受け付けるとともに、ラダープログラムＰ１を実行するためのプッシュボタンの押下による実行指示を受け付けたか否かを判定する。
【００６１】
指定モード及び実行指示を受け付けていないと判定した場合（ステップＳ３０；Ｎｏ）、受付部１１０は、ステップＳ３０の判定を繰り返して、指定モード及び実行指示を受け付けるまで待機する。
【００６２】
一方、指定モード及び実行指示を受け付けたと判定された場合（ステップＳ３０；Ｙｅｓ）、格納部１５０は、データ頻度記憶部１４１において指定モードに対応するアクセス頻度を参照して、アクセス頻度が他のデバイスデータより高いデバイスデータをデータキャッシュメモリ１６１に割り当て可能な数、又は、ユーザ２１によって指定された数だけ割り当てて格納する（ステップＳ３１）。例えば、指定モードが第１モードＭ１であり、データキャッシュメモリ１６１に割り当て可能なデータの数が２つである場合に、図１０に示されるデータ頻度記憶部１４１に基づいて、記憶装置へのアクセスの頻度が高い順にデバイスデータ「ＤＤ１１」及び「ＤＤ１２」がデータキャッシュメモリ１６１に割り当てられ、他のデバイスデータ「ＤＤ１３」〜「ＤＤ１６」がデータ外部メモリ１７１に割り当てられる。
【００６３】
次に、格納部１５０は、命令頻度記憶部１４２において指定モードに対応するアクセス頻度を参照して、アクセス頻度が他の命令コードより高い命令コードを命令キャッシュメモリ１６２に割り当て可能な数、又は、ユーザ２１によって指定された数だけ割り当てて格納する（ステップＳ３２）。例えば、指定モードが第１モードＭ１であり、命令キャッシュメモリ１６２に割り当て可能なデータの数が１つである場合に、図１１に示される命令頻度記憶部１４２に基づいて、記憶装置へのアクセスの頻度が高い順に命令コード「命令コードｉ１１」が命令キャッシュメモリ１６２に割り当てられ、他の命令コード「命令コードｉ１２」及び「命令コードｉ１３」が命令外部メモリ１７２に割り当てられる。
【００６４】
次に、格納部１５０は、ファームウェア頻度記憶部１４３において指定モードに対応するアクセス頻度を参照して、アクセス頻度が他のファームウェアモジュールより高いファームウェアモジュールを、ファームウェアキャッシュメモリ１６３に割り当て可能な数、または、ユーザ２１によって指定された数だけ割り当てて格納する（ステップＳ３３）。例えば、指定モードが第１モードＭ１であり、ファームウェアキャッシュメモリ１６３に割り当て可能なデータの数が１つである場合に、図１２に示されるファームウェア頻度記憶部１４３に基づいて、記憶装置へのアクセスの頻度が高い順に「ファームウェアモジュール１」がファームウェアキャッシュメモリ１６３に割り当てられ、他の「ファームウェアモジュール２」がファームウェア外部メモリ１７３に割り当てられる。
【００６５】
次に、実行部１２０は、ラダープログラムＰ１を実行する。これにより、指定モードにおいてアクセス頻度が高いデータがキャッシュメモリ１６０に格納された状態でラダープログラムＰ１が実行される。なお、実行部１２０は、ステップＳ３１〜Ｓ３３以降は、通常運転処理が終了するまでキャッシュへのデータの割り当てを変更することなくラダープログラムＰ１を実行するが、通常運転処理の実行中に必要に応じてキャッシュへのデータの割り当てを変更してもよい。その後、通常運転処理が終了する。
【００６６】
図８に戻り、ステップＳ３の通常運転処理に続いて、再度、ステップＳ３が実行される。これにより、ユーザ２１が要望する指定モードに最適化された状態での通常運転処理が再度実行されることとなる。
【００６７】
以上、説明したように、試運転処理において、実行部１２０が、複数の動作モードそれぞれでラダープログラムＰ１を実行し、計数部１３０が、動作モードそれぞれについて、ラダープログラムＰ１が実行されているときに発生する記憶装置へのアクセスの頻度をデータ毎に計数する。そして、通常運転処理において、格納部１５０は、指定モードにおいてアクセス頻度が高い順にデータをキャッシュに格納する。これにより、実行部１２０がキャッシュに格納されたデータを、指定モードでラダープログラムＰ１を実行するときに参照する可能性が高くなる。このため、指定モードに合わせてキャッシュが最適化された状態でラダープログラムＰ１が実行される。例えば、図１０に示される例において、第１モードＭ１の実行時には、比較的アクセス頻度が低いデバイスデータ「ＤＤ１３」〜「ＤＤ１６」及びアクセスが発生しないデバイスデータ「ＤＤ２１」，「ＤＤ２２」をキャッシュメモリ１６０に割り当てたことによる遅延を発生させることなく、ラダープログラムＰ１を実行することができる。すなわち、ラダープログラムＰ１のうち指定モードにおいては実行されない部分をキャッシュに割り当ててしまうことがない。したがって、ライン工程に合わせて実行する動作モードを切り替えて複数の異なる工程を実施するためのラダープログラムＰ１をより高速に実行することができる。
【００６８】
また、デバイスデータ、命令コード、ファームウェアモジュールそれぞれについて、アクセス頻度が高いデータをキャッシュに格納した上で、指定モードでラダープログラムＰ１が実行された。デバイスデータ及び命令コード及びファームウェアモジュールは、ライン工程によってアクセス頻度が大きく異なるデータであるため、これらのデータのキャッシュへの割り当てを最適化することで、ラダープログラムＰ１を高速に実行することができる。
【００６９】
ラダープログラムＰ１により規定される処理では通常、同一の命令コードへのアクセスよりも同一のデバイスデータへのアクセスの方が多くなる場合が多い。このような場合において、命令コードとデバイスデータとを区別することなく同様のデータとして扱ってキャッシュを最適化すると、デバイスデータばかりがキャッシュに割り当てられてしまう。その結果、デバイスデータと組み合わせて利用される命令コードが実行される回数だけ演算処理に遅延が生じてしまい、ラダープログラムＰ１全体の実行速度が低下するおそれがある。
【００７０】
これに対して本実施の形態に係るプログラム実行装置１００によれば、デバイスデータと命令コードとを区別して、それぞれについてキャッシュを最適化するため、ラダープログラムＰ１の実行速度の低下を回避することができる。このように、データの種類に応じてキャッシュを最適化することが望ましい。本実施の形態に係るプログラム実行装置１００では、デバイスデータと命令コードに加えて、ファームウェアモジュールを区別して扱った上でキャッシュを最適化するため、実行速度の低下をさらに回避することが期待される。
【００７１】
また、格納部１５０は、指定モードにおける記憶装置へのアクセスの頻度が高い順に、予め定められた個数であるキャッシュメモリ１０１の割り当て上限までデータをキャッシュに格納した。これにより、指定モードにおけるキャッシュヒット率が最大になり、ラダープログラムＰ１を高速に実行することができる。
【００７２】
実施の形態２．
続いて、実施の形態２について、上述の実施の形態１との相違点を中心に説明する。なお、上記実施の形態１と同一又は同等の構成については、同等の符号を用いるとともに、その説明を省略又は簡略する。
【００７３】
上記実施の形態１では、デバイスデータ及び命令コードと同様に、ファームウェアモジュールについてもキャッシュへの割り当てが動作モード毎に最適化された。しかしながら、ファームウェアについては、動作モードを変更したときのアクセス頻度の変化が少ないケースがある。例えば、ライン工程における機器３０，３１の状態をサーバにより外部に通知することが、ライン工程の種別に関わらず行われるケースがある。また，例えば監視機能が使用される場合は，ライン工程の種別に関わらず，全種別において使用される可能性が高い。このような場合には、動作モード毎にファームウェアのキャッシュへの割り当てを変更するのではなく、すべての動作モードを実行する試運転処理において計数されたアクセス頻度に基づく割り当てが有効となる。
【００７４】
本実施の形態に係る計数部１３０は、ファームウェアのアクセス頻度を、動作モードそれぞれについて計数するのに代えて、動作モードに関わらず計数する。具体的には、図９と同様の試運転処理において、計数部１３０は、ステップＳ２５においてファームウェアモジュールへのアクセスがあったときに複数の動作モードで共通のアクセス頻度をカウントアップする。
【００７５】
図１４には、本実施の形態に係るファームウェア頻度記憶部１４３の一例が示されている。図１４に示されるように、複数の動作モードすべてが実行されたときのアクセス頻度が計数されて、通常運転処理では、アクセス頻度が高いファームウェアがキャッシュメモリ１６０に割り当てられる。
【００７６】
以上、説明したように、計数部１３０は、ラダープログラムＰ１が複数の動作モードで実行されるときに発生する記憶装置へのアクセスの頻度を該アクセスの対象であるファームウェア毎に計数する。そして、実行部１２０は、受付部１１０によってラダープログラムＰ１の実行指示が受け付けられると、格納部１５０によってキャッシュに格納されたファームウェアを参照して指定モードでラダープログラムＰ１を実行する。これにより、動作モードにアクセス頻度が影響されないファームウェアの割り当てを最適化した上で、ラダープログラムＰ１を高速に実行することができる。
【００７７】
以上、本開示の実施の形態について説明したが、本開示は上記実施の形態によって限定されるものではない。
【００７８】
例えば、上記実施の形態では、プログラム実行装置１００がＰＬＣである例について説明したが、これには限定されない。プログラム実行装置１００は、図１５に示されるように、ＰＬＣ１００１を構成するＣＰＵユニットであってもよい。図１５に示される例では、プログラム実行装置１００とともにＰＬＣ１００１を構成する入出力ユニットが機器３０，３１と接続される。
【００７９】
また、上記実施の形態では、通常運転処理を実行する前に試運転処理が実行されたが、試運転処理を省略してもよい。例えば、各動作モードを実行する初回の通常運転処理において、上述の試運転処理と同様に記憶装置におけるデータ毎のアクセス頻度を計数して、２回目以降の通常運転処理におけるキャッシュを動作モードに合わせて最適化してもよい。また、試運転処理を必須の処理とせずに、通常運転処理を最適化されていないキャッシュで実行可能としつつ、ユーザが要望する場合に限って試運転処理を実行してキャッシュを最適化してもよい。
【００８０】
また、通常運転処理において、試運転処理と同様に記憶装置におけるデータ毎へのアクセス頻度を計数して、計数結果をその後の新たな通常運転処理におけるキャッシュへのデータの割り当てに利用してもよい。これにより、試運転処理の試行サイクル数が不十分であっても、通常運転処理が実行される度に動作モードに合わせたキャッシュの割り当てを最適化することができる。
【００８１】
また、上記実施の形態では、プロセッサ１１の内蔵メモリをキャッシュとして説明したが、プロセッサ１１の外部にある高速にアクセス可能なメモリをキャッシュとしてもよい。
【００８２】
また、上記実施の形態では、動作モードの指定及びラダープログラムＰ１の実行指示が、プログラム実行装置１００のスイッチ操作により入力される例について説明したが、これには限定されない。プログラム実行装置１００は、プログラミングツール２００を介して動作モードの指定及び実行指示を受け付けてもよい。
【００８３】
また、上記実施の形態では、プログラム実行装置１００が備えるスイッチの入力状態と動作モードとの関係が動作モード設定情報により規定されたが、これには限定されない。動作モード設定情報は、プログラム実行装置１００が有する特定の記憶領域の値と、動作モードとの関係を規定してもよい。例えば、プログラム実行装置１００の補助記憶部１３の「Ｄ０」というアドレスにより示される値が「Ａ」であれば第１モードＭ１を実行し、この値が「Ｂ」であれば第２モードＭ２を実行し、値が「Ｃ」であれば第３モードＭ３を実行するものとしてもよい。このアドレスの値が、スイッチの状態に対応するとともにプログラミングツール２００から書き換え可能であれば、プログラム実行装置１００のスイッチ操作と、プログラミングツール２００と、のいずれでも動作モードを指定することができる。
【００８４】
また、図５の例では、接点それぞれが、いずれか一の動作モードの実行時のみにＯＮ状態になったが、これには限定されない。ラダープログラムＰ１は、複数の動作モードのうち２以上の動作モードでＯＮ状態となる接点を有してもよい。
【００８５】
また、上記実施の形態では、データへのアクセス回数を記憶装置へのアクセスの頻度として説明したが、これには限定されない。例えば、記憶装置へのアクセスが発生した回数のうちデータ毎のアクセスの割合をアクセス頻度としてもよい。また、アクセス回数が予め定められた閾値を超えたデータのアクセス頻度を示すフラグを立ててもよい。アクセスの多さを示すその他の度合いをアクセス頻度としてもよい。
【００８６】
上記実施の形態では、記憶装置へのアクセスの頻度として、デバイスデータ、命令コード及びファームウェアそれぞれへのアクセスの頻度を計数したが、アクセスの頻度を計数するデータは、これらに限られない。例えば、デバイスデータのみをアクセスの対象であるデータとしてもよいし、デバイスデータと命令コードとの２つをアクセスの対象であるデータとしてもよい。このような場合でも、プログラムが実行されているときに発生する動作モード毎の記憶装置へのアクセスの頻度を計数できていれば、動作モードに合わせたキャッシュへのデータの割り付けを最適化することができる。
【００８７】
また、上記実施の形態では、ラダー言語で記述されたラダープログラムＰ１が実行されたが、これには限定されず、プログラム実行装置１００は、複数の動作モードを有するプログラムを実行してもよい。このようなプログラムとしては、例えば、Ｃ言語で記述されたプログラム或いはアセンブリ言語で記述されたプログラムが考えられる。
【００８８】
上述の実施形態に係るプログラム実行装置１００の機能は、専用のハードウェアによっても、また、通常のコンピュータシステムによっても実現することができる。
【００８９】
例えば、プログラムＰ２を、フレキシブルディスク、ＣＤ−ＲＯＭ（Compact Disk Read-Only Memory）、ＤＶＤ（Digital Versatile Disk）、ＭＯ（Magneto-Optical disk）に代表されるコンピュータ読み取り可能な記録媒体に格納して配布し、そのプログラムＰ２をコンピュータにインストールすることにより、上述の処理を実行する装置を構成することができる。
【００９０】
また、プログラムＰ２をインターネットに代表される通信ネットワーク上のサーバ装置が有するディスク装置に格納しておき、例えば、搬送波に重畳させて、コンピュータにダウンロードするようにしてもよい。
【００９１】
また、インターネットに代表されるネットワークを介してプログラムＰ２を転送しながら起動実行することによっても、上述の処理を達成することができる。
【００９２】
さらに、プログラムＰ２の全部又は一部をサーバ装置上で実行させ、その処理に関する情報をコンピュータが通信ネットワークを介して送受信しながらプログラムＰ２を実行することによっても、上述の処理を達成することができる。
【００９３】
なお、上述の機能を、ＯＳ（Operating System）が分担して実現する場合又はＯＳとアプリケーションとの協働により実現する場合には、ＯＳ以外の部分のみを媒体に格納して配布してもよく、また、コンピュータにダウンロードしてもよい。
【００９４】
また、プログラム実行装置１００の機能を実現する手段は、ソフトウェアに限られず、その一部又は全部を専用のハードウェア又は回路によって実現してもよい。
【００９５】
本開示は、本開示の広義の精神と範囲を逸脱することなく、様々な実施の形態及び変形が可能とされるものである。また、上述した実施の形態は、本開示を説明するためのものであり、本開示の範囲を限定するものではない。つまり、本開示の範囲は、実施の形態ではなく、請求の範囲によって示される。そして、請求の範囲内及びそれと同等の開示の意義の範囲内で施される様々な変形が、本開示の範囲内とみなされる。
【産業上の利用可能性】
【００９６】
本開示は、ライン工程を実現するプログラムを実行する装置に適している。
【符号の説明】
【００９７】
１０００  制御システム、  １００  プログラム実行装置、  １１  プロセッサ、  １２  主記憶部、  １３  補助記憶部、  １４  入力部、  １５  出力部、  １６  通信部、  １７  内部バス、  ２０  端末、  ２１  ユーザ、  ３０，３１  機器、  １０１  キャッシュメモリ、  １１０  受付部、  １２０  実行部、  １３０  計数部、  １４０  頻度記憶部、  １４１  データ頻度記憶部、  １４２  命令頻度記憶部、  １４３  ファームウェア頻度記憶部、  １５０  格納部、  １６０  キャッシュメモリ、  １６１  データキャッシュメモリ、  １６２  命令キャッシュメモリ、  １６３  ファームウェアキャッシュメモリ、  １７０  外部メモリ、  １７１  データ外部メモリ、  １７２  命令外部メモリ、  １７３  ファームウェア外部メモリ、  ２００  プログラミングツール、  ２１０  プログラム作成部、  ２２０  コンパイラ、  ２３０  設定部、  ２３１  動作モード設定部、  Ａ１０  工程データ、  Ａ１１，Ａ１２  部分データ、  Ｃ１２〜Ｃ１５，Ｃ２１〜Ｃ２３，Ｃ３１〜Ｃ３３  接点、  Ｐ１  ラダープログラム、  Ｐ２  プログラム、  Ｐ３  ファームウェア
【要約】
ラインにおいて異なる工程を実施するための複数の動作モードを有するプログラムを実行するプログラム実行装置（１００）は、複数の動作モードそれぞれについて、プログラムが実行されているときに発生する記憶装置へのアクセスの頻度を該アクセスの対象であるデータ毎に計数する計数部（１３０）と、プログラムの動作モードの指定と、プログラムを実行することの指示と、を受け付ける受付部（１１０）と、指定の動作モードにおいて、計数部（１３０）によって計数された頻度が高い順にデータをキャッシュ（１６０）に格納する格納部（１５０）と、指示が受け付けられると、格納部（１５０）によってキャッシュ（１６０）に格納されたデータを参照して指定の動作モードでプログラムを実行する実行部（１２０）と、を備える。【図１】
0006929474.tif 000002
【図２】
0006929474.tif 000003
【図３】
0006929474.tif 000004
【図４】
0006929474.tif 000005
【図５】
0006929474.tif 000006
【図６】
0006929474.tif 000007
【図７】
0006929474.tif 000008
【図８】
0006929474.tif 000009
【図９】
0006929474.tif 000010
【図１０】
0006929474.tif 000011
【図１１】
0006929474.tif 000012
【図１２】
0006929474.tif 000013
【図１３】
0006929474.tif 000014
【図１４】
0006929474.tif 000015
【図１５】
0006929474.tif 000016