JP6929474B1 - プログラム実行装置、プログラム実行方法及びコンピュータプログラム - Google Patents

プログラム実行装置、プログラム実行方法及びコンピュータプログラム Download PDF

Info

Publication number
JP6929474B1
JP6929474B1 JP2020561840A JP2020561840A JP6929474B1 JP 6929474 B1 JP6929474 B1 JP 6929474B1 JP 2020561840 A JP2020561840 A JP 2020561840A JP 2020561840 A JP2020561840 A JP 2020561840A JP 6929474 B1 JP6929474 B1 JP 6929474B1
Authority
JP
Japan
Prior art keywords
program
operation mode
execution
firmware
instruction
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
JP2020561840A
Other languages
English (en)
Other versions
JPWO2021220516A1 (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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Application granted granted Critical
Publication of JP6929474B1 publication Critical patent/JP6929474B1/ja
Publication of JPWO2021220516A1 publication Critical patent/JPWO2021220516A1/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Programmable Controllers (AREA)

Abstract

ラインにおいて異なる工程を実施するための複数の動作モードを有するプログラムを実行するプログラム実行装置(100)は、複数の動作モードそれぞれについて、プログラムが実行されているときに発生する記憶装置へのアクセスの頻度を該アクセスの対象であるデータ毎に計数する計数部(130)と、プログラムの動作モードの指定と、プログラムを実行することの指示と、を受け付ける受付部(110)と、指定の動作モードにおいて、計数部(130)によって計数された頻度が高い順にデータをキャッシュ(160)に格納する格納部(150)と、指示が受け付けられると、格納部(150)によってキャッシュ(160)に格納されたデータを参照して指定の動作モードでプログラムを実行する実行部(120)と、を備える。

Description

本開示は、プログラム実行装置、プログラム実行方法及びコンピュータプログラムに関する。
FA(Factory Automation)の現場では、プロセッサによる高速な演算処理を実現するために、キャッシュを備えるPLC(Programmable Logic Controller)が利用されることがある。キャッシュは、他のメモリより高速なデータの読み出し及び書き込みが可能な記憶装置である。このため、演算処理に必要なデータがキャッシュから読み出される場合には、当該データがRAM(Random Access Memory)に代表されるメモリから読み出される場合よりも演算処理を高速に実行することが可能になる。同様に、データがキャッシュに書き込まれる場合には、演算処理を高速に実行することが可能になる。
一般的に、キャッシュの容量が小さいため、必要なデータがキャッシュに存在しない場合には、キャッシュより容量が大きく低速なメモリのデータが利用され、演算処理に遅延が生じてしまう。このため、必要なデータへのアクセス先がキャッシュである割合を示すキャッシュヒット率は、高いことが望ましい。そこで、PLCに相当する制御装置のキャッシュヒット率を向上させるための技術が提案されている(例えば、特許文献1を参照)。
特許文献1には、ユーザの作成したプログラムを命令コードにコンパイルする際に、命令コードに含まれるデバイスの使用頻度を分類して、使用頻度の高いデバイスの状態を表すデバイスデータを、高速に処理が可能なプロセッサの内蔵メモリに格納し、使用頻度の低いデバイスの状態を表すデバイスデータをデータ用メモリに格納するプログラマブルコントローラについて記載されている。このプログラマブルコントローラによれば、演算処理の高速化を図ることができる。
特開2010−128612号公報
制御装置が利用される現場では、1つのプログラムにより実現される複数の異なる工程のうち、いずれか1つの工程が実施されることがある。例えば、ユーザがスイッチを押下することにより、プログラムにより規定される動作モードを変更して、実施すべき工程を切り替える場合がある。このような場合には、プログラム全体が機能することなく、スイッチの状態に応じて当該プログラムの一部が機能することとなる。
特許文献1に記載の技術では、プログラムをコンパイルする際に命令コードを実行する上で使用頻度の高いデバイスと低いデバイスとが分類される。しかしながら、コンパイル時に観測されるデバイスの使用頻度は、上述のようなスイッチの入力状態に応じて使用されるデバイスの使用頻度とは異なる。このため、実際の運用においては使用頻度が低いデバイス又は使用されないデバイスが、キャッシュに相当する内蔵メモリに格納されてしまい、使用頻度が高いデバイスが他のメモリに格納される結果、演算処理に遅延が発生するおそれがある。したがって、ライン工程に合わせて、実行する動作モードを切り替えて複数の異なる工程を実施可能なプログラムをより高速に実行する余地がある。
本開示は、ライン工程に合わせて、実行する動作モードを切り替えて複数の異なる工程を実施可能なプログラムをより高速に実行することを目的とする。
上記目的を達成するため、本開示のプログラム実行装置は、ラインにおいて異なる工程を実施するための複数の動作モードを有するプログラムを実行するプログラム実行装置であって、複数の動作モードのそれぞれでプログラムを実行する試運転処理を実行する実行手段と、複数の動作モードそれぞれについて、試運転処理においてプログラムが実行されているときに発生する記憶装置へのアクセスの頻度を該アクセスの対象であるファームウェアであって、ライン工程における機器の状態をリアルタイムに外部に提供するサーバとして機能するファームウェア毎に計数する計数手段と、プログラムの動作モードの指定と、指定した動作モードでプログラムを実行することの指示と、を受け付ける受付手段と、受付手段によって受け付けられた指定の動作モードにおいて、計数手段によって計数された頻度が高い順にファームウェアをキャッシュに格納する格納手段と、を備え、実行手段は、受付手段によって指示が受け付けられると、格納手段によってキャッシュに格納されたファームウェアを参照して指定の動作モードでプログラムを実行する。
本開示によれば、計数手段が、動作モードそれぞれについて、プログラムが実行されているときに発生する記憶装置へのアクセスの頻度をデータ毎に計数する。そして、格納手段は、指定の動作モードにおいてアクセスの頻度が高い順にアクセスの対象であるデータをキャッシュに格納する。これにより、実行手段がキャッシュに格納されたデータをプログラム実行時に参照する可能性が高くなる。このため、動作モードに合わせてキャッシュの状態が最適化された状態でプログラムが実行される。したがって、ライン工程に合わせて実行する動作モードを切り替えて複数の異なる工程を実施可能なプログラムをより高速に実行することができる。
実施の形態1に係る制御システムの構成を示す図 実施の形態1に係る動作モードとライン工程との対応を示す図 実施の形態1に係るプログラム実行装置のハードウェア構成を示す図 実施の形態1に係るプログラム実行装置の機能的な構成を示す図 実施の形態1に係るラダープログラムの一例を示す図 実施の形態1に係る動作モード設定情報の一例を示す図 実施の形態1に係るラダープログラムの実行時にアクセスされる記憶装置内のデータについて説明するための図 実施の形態1に係る運転処理を示すフローチャート 実施の形態1に係る試運転処理を示すフローチャート 実施の形態1に係るデータ頻度記憶部に記憶される情報の一例を示す図 実施の形態1に係る命令頻度記憶部に記憶される情報の一例を示す図 実施の形態1に係るファームウェア頻度記憶部に記憶される情報の一例を示す図 実施の形態1に係る通常運転処理を示すフローチャート 実施の形態2に係るファームウェア頻度記憶部に記憶される情報の一例を示す図 変形例に係る制御システムの構成を示す図
以下、本開示の実施の形態に係るプログラム実行装置100について、図面を参照しつつ詳細に説明する。
実施の形態1.
図1には、本実施の形態に係るプログラム実行装置100を含む制御システム1000の構成が示されている。制御システム1000は、工場において形成されるシステムであって、予め設定された製造ラインに従ってワークを加工及び検査して製品を製造するためのFAシステムである。制御システム1000は、ラダープログラムP1を実行することにより機器30,31を制御して製造ラインを稼働させるプログラム実行装置100と、プログラム実行装置100による制御内容を設定するための端末20と、製造ラインに設置された機器30,31と、を有する。制御システム1000においては、複数の動作モードを有するラダープログラムP1が、端末20からプログラム実行装置100に提供され、プログラム実行装置100によって動作モード毎にキャッシュが最適化された状態で効率よく実行される。
プログラム実行装置100と端末20とは、USB(Universal Serial Bus)ケーブル及びLANケーブルに代表される通信線により接続され、互いに信号を送受信することにより通信する。また、プログラム実行装置100と機器30,31とは、FAネットワーク又は産業用ネットワークを介して接続され、互いに信号を送受信することにより通信する。なお、プログラム実行装置100、端末20及び機器30,31による通信の形態はこれに限定されず、任意に変更してもよい。
機器30は、例えば圧力又は温度を計測するセンサを有し、このセンサによる計測結果を示す信号を定期的にプログラム実行装置100に通知するセンサ装置である。計測結果が通知される周期は、例えば1秒間隔又は1分間隔である。機器30から通知される計測結果は、プログラム実行装置100によって制御内容を決定するために利用される。機器31は、例えばアクチュエータ又はロボットであって、機器30による計測結果に基づくプログラム実行装置100からの指令に従って動作する。機器30,31によれば、プログラム実行装置100は、製造ラインにおける計測の結果に応じてワークを処理することができる。例えば、ベルトコンベア上を通過するワークを機器30が検知したタイミングで、プログラム実行装置100は、塗装ロボットである機器31に塗料を噴射させる。なお、図1では、2つの機器30,31が代表的に示されているが、3つ以上の機器が制御システム1000を構成してもよい。また、機器30,31は、センサ、アクチュエータ及びロボットとは異なる他の機器であってもよい。
端末20は、IPC(Industrial Personal Computer)又はプログラム実行装置100のユーザインタフェースとして用いられるGUI(Graphical User Interface)端末である。端末20は、ユーザ21が端末20を操作することで作成されたラダープログラムP1をコンパイルして、オブジェクト形式のラダープログラムP1をユーザ21の指示に従ってプログラム実行装置100に送信する。
ラダープログラムP1は、ラダー言語で記述されたプログラムであって、ユーザ21が要望するライン工程を実現するために作成される。ラダープログラムP1は、製造ラインにおいて異なる工程を実施するための複数の動作モードを有し、この複数の動作モードのうちユーザ21から指定されたいずれか一の動作モードで実行される。図2には、ラダープログラムP1が有する3つの動作モードと、各モードで実行される工程と、の例が示されている。図2の例では、ラダープログラムP1が第1モードM1で実行されるときには、製造ラインにおいて「白色塗装」の工程が実施され、第2モードM2で実行されるときには、製造ラインにおいて「黒色塗装」の工程が実施され、第3モードM3で実行されるときには、製造ラインにおいて「塗装なし」の工程が実施される。このようなラダープログラムP1によれば、製造工程の種別を切り替えることが可能になる。
プログラム実行装置100は、PLCに代表される制御装置である。図3には、プログラム実行装置100のハードウェア構成が模式的に示されている。図3に示されるように、プログラム実行装置100は、プロセッサ11と、主記憶部12と、補助記憶部13と、入力部14と、出力部15と、通信部16と、を有する。主記憶部12、補助記憶部13、入力部14、出力部15及び通信部16はいずれも、内部バス17を介してプロセッサ11に接続される。
プロセッサ11は、キャッシュとしてのキャッシュメモリ101を含むMPU(Micro Processing Unit)又はCPU(Central Processing Unit)である。プロセッサ11は、補助記憶部13に記憶されるプログラムP2を実行することにより、プログラム実行装置100の後述の機能を実現して、種々の処理を実行する。プログラムP2に従ってプロセッサ11により実行される処理には、補助記憶部13に記憶されるラダープログラムP1の実行により機器30,31を制御する処理が含まれる。ラダープログラムP1は、複数の動作モードを有する実行プログラムの一例に相当し、プログラムP2は、プログラム実行装置100にコンピュータとしての機能を発揮させるためのコンピュータプログラムの一例に相当する。
キャッシュメモリ101は、プロセッサ11の内蔵メモリである。プロセッサ11は、キャッシュメモリ101に格納されたデータについては、主記憶部12及び補助記憶部13に記憶されたデータより高速に書き込み及び読み出しをする。キャッシュメモリ101には、後述の工程データA10の一部分に相当する部分データA11がロードされる。そして、キャッシュメモリ101は、ラダープログラムP1を実行するプロセッサ11の作業領域として用いられる。
主記憶部12は、キャッシュメモリ101より容量が大きいRAM(Random Access Memory)を含む。主記憶部12には、補助記憶部13からプログラムP2がロードされる。主記憶部12は、プログラムP2を実行するプロセッサ11の作業領域として用いられる。また、主記憶部12には、工程データA10の一部分に相当する部分データA12がロードされ、主記憶部12は、ラダープログラムP1を実行するプロセッサ11の作業領域として用いられる。
部分データA11,A12は、工程データA10から分割されてキャッシュメモリ101と主記憶部12それぞれに割り当てられた、互いに異なるデータである。部分データA11,A12は、例えば、ラダープログラムP1を構成する一部である命令コード、ラダープログラムP1を実行する際に使用されるデバイスデータ、及び、ファームウェアモジュール、のうちの一又は複数のデータである。プロセッサ11がラダープログラムP1を実行する際には、部分データA11,A12が参照されて利用される。ここで、プロセッサ11から部分データA11へのアクセス数が、部分データA12へのアクセス数より多いほど、プロセッサ11が主記憶部12にアクセスする際の遅延が発生する回数が減少し、演算処理が高速になる。なお、部分データA11,A12は、一部の情報を重複して有するデータであってもよいし、部分データA12が部分データA11を包含してもよい。
補助記憶部13は、EEPROM(Electrically Erasable Programmable Read-Only Memory)に代表される不揮発性メモリを含む。補助記憶部13は、プログラムP2と、製造ラインにおける工程を実施するための工程データA10と、を記憶する。補助記憶部13は、プロセッサ11の指示に従って、プロセッサ11によって利用されるデータをプロセッサ11に供給し、プロセッサ11から供給されたデータを記憶する。
工程データA10は、ラダープログラムP1と、ラダープログラムP1が実行される際に利用されるファームウェアP3と、を含む。ラダープログラムP1が、ユーザの要望するライン工程を実現するために設計されるのに対して、ファームウェアP3は、ライン工程の設計に関わらず補助記憶部13に予め格納されるソフトウェアである。ファームウェアP3は、例えば、製造ラインに関するリアルタイムの情報をユーザに提供するためのFTP(File Transfer Protocol)サーバ又はwebサーバとして機能する。なお、補助記憶部13に予め記憶される種々のファームウェアのうち、ラダープログラムP1の実行に際して利用される一部のファームウェアP3が、工程データA10を構成する。
入力部14は、ユーザによって操作されるスライドスイッチ及びプッシュボタンに代表される入力デバイスを含む。入力部14は、プログラム実行装置100に対してユーザ21によって入力された情報を取得して、取得した情報をプロセッサ11に通知する。出力部15は、LED(Light Emitting Diode)、LCD(Liquid Crystal Display)及びブザーに代表される出力デバイスを含む。出力部15は、プロセッサ11の指示に従って、種々の情報をユーザに提示する。
通信部16は、外部の装置と通信するための通信インタフェース回路を含む。通信部16は、外部から信号を受信して、この信号により示されるデータをプロセッサ11へ出力する。また、通信部16は、プロセッサ11から出力されたデータを示す信号を外部の装置へ送信する。図3には、1つの通信部16が代表的に示されているが、プログラム実行装置100は、複数の通信部16を有してもよい。例えば、プログラム実行装置100は、端末20と通信するための第1の通信部16と、機器30,31と通信するための第2の通信部16と、を別個に有してもよい。
プログラム実行装置100は、上述のハードウェア構成が協働することにより、図4に示されるように、種々の機能を発揮する。なお、図4には、プログラム実行装置100の機能的な構成に加えて、端末20によって実現されるプログラミングツール200の機能が併せて示されている。プログラミングツール200は、ユーザ21がラダー言語でプログラミングをするためのツールとして、端末20が特定のプログラムを実行することにより実現される。プログラミングツール200は、ユーザ21がGUIを操作してラダープログラムP1を作成するためのプログラム作成部210と、ラダー言語で記述されたラダープログラムP1をプログラム作成部210から取得してコンパイルするコンパイラ220と、ラダープログラムP1に関してユーザ21が種々のパラメータを設定するための設定部230と、を有する。設定部230は、ラダープログラムP1の動作モードと、プログラム実行装置100に対する入力状態と、の対応関係をユーザ21が設定するための動作モード設定部231を有する。
ここで、動作モード設定部231によって設定される動作モードと動作モードに合わせてONとOFFを切り替える接点との関係について説明する。図5には、ラダープログラムP1の一例が示されている。このラダープログラムP1は、第1モードM1の実行時にON状態になる接点C11,C12,C13,C14,C15と、第2モードM2の実行時にON状態になる接点C21,C22,C23と、第3モードM3の実行時にON状態になる接点C31,C32,C33と、を有する。各モードでON状態になる接点はいずれも、他のモードが実行されるときにはOFF状態になる。例えば、第1モードM1の実行時において接点C21〜C23,C31〜C33はいずれもOFF状態になる。
接点C11がON状態になると、接点C11と接続されるように記述された「命令コードi11 DD11 DD12」という命令が実行されるが、接点C11がOFF状態であれば、この命令は実行されない。同様に、接点C12がON状態であれば「命令コードi12 DD13 DD14」という命令が実行され、接点C13がON状態であれば「命令コードi13 DD15 DD16」という命令が実行され、接点C14がON状態であれば「命令コードi14 DD17」という命令が実行され、接点C15がON状態であれば「命令コードi15」という命令が実行される。一方、接点C12〜C15がOFF状態であれば、これらの命令は実行されない。接点C21〜C23,C31〜C33の直後に記述された命令についても、接点の状態に応じて実行の有無が決定される。このようにして、動作モードに対応して異なる演算処理が実行される。
図5に示されるように、ラダープログラムP1自体は、動作モードに関する情報を含んでいない。プログラム実行装置100の入力状態と、この入力状態に対応する動作モードでON状態とすべき接点との対応関係は、ユーザにより設定される。図6には、ユーザにより設定される動作モード設定情報が例示されている。この動作モード設定情報は、動作モードと、この動作モードに対応する入力状態と、この動作モードにおける接点の状態と、を関連付けるテーブル形式のデータである。図6の例は、プログラム実行装置100の入力部14であるスライドスイッチの位置を入力状態として、接点の状態が図5に示されたように切り替えられることを示している。
図4に戻り、プログラム実行装置100は、ラダープログラムP1の実行を各動作モードで予め試行することで、その後に、ユーザ21から指定される動作モードにおいてデータの割り当てを最適化した上でラダープログラムP1を実行する機能を有する。詳細には、プログラム実行装置100は、その機能として、ラダープログラムP1及び動作モード設定情報の提供をプログラミングツール200から受け付けて、当該ラダープログラムP1を実行する際の動作モードの指定及び実行指示をユーザ21から受け付ける受付部110と、ラダープログラムP1を実行する実行部120と、ラダープログラムP1の動作モードそれぞれについて、実行時における記憶装置へのアクセス頻度を計数する計数部130と、計数部130によって計数された頻度を示す情報を記憶するデータ頻度記憶部141、命令頻度記憶部142及びファームウェア頻度記憶部143と、計数された頻度及び指定された動作モードに基づいてデータを異なる記憶領域に割り当てて格納する格納部150と、比較的高速にアクセス可能なデータキャッシュメモリ161、命令キャッシュメモリ162及びファームウェアキャッシュメモリ163と、データキャッシュメモリ161、命令キャッシュメモリ162及びファームウェアキャッシュメモリ163のそれぞれに比べてアクセスに時間がかかるデータ外部メモリ171、命令外部メモリ172及びファームウェア外部メモリ173と、を有する。
以下では、データ頻度記憶部141、命令頻度記憶部142及びファームウェア頻度記憶部143を総称して頻度記憶部140と適宜表記する。また、データキャッシュメモリ161、命令キャッシュメモリ162及びファームウェアキャッシュメモリ163を総称してキャッシュメモリ160と適宜表記する。また、データ外部メモリ171、命令外部メモリ172及びファームウェア外部メモリ173を総称して外部メモリ170と適宜表記する。
受付部110は、主としてプロセッサ11、入力部14及び通信部16の協働により実現される。受付部110は、コンパイラ220によって生成されたオブジェクト形式のラダープログラムP1と、設定部230により設定されたパラメータと、の提供をプログラミングツール200から受け付ける。プログラミングツール200から提供されるパラメータには、図6に例示された動作モード設定情報が含まれる。そして、受付部110は、提供されたラダープログラムP1及びパラメータを実行部120に送出する。
また、受付部110は、ユーザ21が操作したスイッチの入力状態により示される動作モードの指定と、各動作モードに対する最適化指示と、プッシュボタンの押下により示されるラダープログラムP1の実行指示と、を受け付ける。最適化指示は、各動作モードについてキャッシュの最適化を実行することの指示である。例えば、第1モードM1の実行に際してキャッシュを最適化する一方で、第2モードM2の実行に際してキャッシュを最適化しない場合には、第1モードM1の最適化指示が入力される。以下では、すべての動作モードについて最適化指示が入力される例を中心に説明する。受付部110は、受け付けた指定の動作モードと実行指示とを実行部120に通知する。受付部110は、プログラム実行装置100において、プログラムの動作モードの指定と、指定した動作モードでプログラムを実行することの指示と、を受け付ける受付ステップを実行する受付手段の一例に相当する。
実行部120は、主としてプロセッサ11により実現される。実行部120は、ラダープログラムP1及びパラメータが受付部110から送出されると、動作モードそれぞれにおけるデータの使用頻度を計数するために、ラダープログラムP1を各動作モードで予備的に実行する。詳細には、実行部120は、動作モード設定情報により示される各動作モードに対応する接点をON状態とした上でラダープログラムP1に規定された命令を実行する。プログラム実行装置100は、各動作モードで試運転を実行することとなる。そして、実行部120は、各動作モードでラダープログラムP1を実行する際に発生する記憶装置へのアクセス頻度のデータ毎の計数を計数部130に指示する。ここで、試運転のときに利用される記憶装置は、主記憶部12のみであってもよいし、最適化されていない状態でデータが割り当てられたキャッシュメモリ101及び主記憶部12であってもよい。
さらに、実行部120は、動作モードの指定及びラダープログラムP1の実行指示が最適化指示とともに受付部110から通知されると、指定モードにおけるアクセス頻度の計数結果に基づいてデータをキャッシュメモリ160及び外部メモリ170に割り当てて格納することを格納部150に指示する。ここで、指定モードは、ユーザ21のスイッチ操作により指定された動作モードを意味する。そして、実行部120は、指定モードでラダープログラムP1を実行する。詳細には、実行部120は、動作モード設定情報において現在の入力状態に対応する指定モードを判定し、この指定モードに対応する接点をON状態とした上でラダープログラムP1に規定された命令を実行する。プログラム実行装置100は、指定モードに合わせて最適化されたキャッシュメモリ160を利用して通常運転を実行することとなる。実行部120は、プログラム実行装置100において、受付手段によってプログラムを実行する指示が受け付けられると、格納手段によってキャッシュに格納されたデータを参照して指定の動作モードでプログラムを実行する実行ステップを実行する実行手段の一例に相当する。
計数部130は、主としてプロセッサ11によって実現される。計数部130は、実行部120からの指示に従って、各動作モードが実行されるときの記憶装置へのアクセス頻度を、アクセスの対象であるデータ毎に計数する。記憶装置へのアクセスは、通常、データの読み出し及び書き込みのいずれも該当するが、計数部130は、読み出し及び書き込みのいずれか一方のみのアクセス頻度を計数してもよい。すなわち、計数部130は、一の動作モードにてラダープログラムP1を実行する際に、データの読み出し及び書き込みを行うために記憶装置にアクセスした回数をデータ毎に計数することで、データ毎のアクセス頻度を計数する。計数部130は、この計数を、最適化指示を受けつけた動作モードについて実行する。そして、計数部130は、計数結果を頻度記憶部140に格納する。計数部130は、プログラム実行装置100において、複数の動作モードそれぞれについて、実行手段によってプログラムが実行されているときに発生する記憶装置へのアクセスの頻度を該アクセスの対象であるデータ毎に計数する計数ステップを実行する計数手段の一例に相当する。
データ頻度記憶部141、命令頻度記憶部142及びファームウェア頻度記憶部143はそれぞれ、主として補助記憶部13によって実現される。ここで、ラダープログラムP1の実行により発生する記憶装置へのアクセスについて、図7を参照して説明する。図7の上部には、図5に例示されたラダープログラムP1の一部が示されている。図7に示されるように、接点C11がON状態のときに実行される「命令コードi11 DD11 DD12」という命令は、命令コード「命令コードi11」と、数値又は文字列であるデバイスデータ「DD11」及び「DD12」と、を含む。
デバイスデータは、例えば、センサの検知結果、機器30,31に設定されているパラメータ、その他の機器30,31の稼働状態をリアルタイムに表す数値若しくは文字列、又は、変数により若しくは固定値として示される数値若しくは文字列のデータである。命令コードは、プロセッサ11の命令セットに含まれる演算命令であって、例えば、デバイスデータを対象とする加算命令、転送命令、又は条件分岐命令である。さらに、命令コードの種類によって、ファームウェアを構成するファームウェアモジュールが参照される。例えば、機器30の検知結果をwebサーバに通知する命令コードが実行されるときには、webサーバを実現するためのファームウェアモジュールが適宜参照される。
このように、ラダープログラムP1が実行されると、デバイスデータ、命令コード及びファームウェアモジュールへのアクセスが発生するため、デバイスデータ、命令コード及びファームウェアモジュールは、図3に示された工程データA10を構成し、キャッシュメモリ101及び主記憶部12にロードされてプロセッサ11により適宜利用されることとなる。なお、ファームウェアモジュールは、図3中のファームウェアP3に相当する。なお、デバイスデータ、命令コード及びファームウェアモジュールは、記憶装置へのアクセスの頻度を計数するためのアクセスの対象であるデータの一例である。
図4に戻り、データ頻度記憶部141には、記憶装置へのアクセスとして、デバイスデータへのアクセスが発生した頻度を計数部130によって計数した計数結果が格納される。命令頻度記憶部142には、記憶装置へのアクセスとして、命令コードへのアクセスが発生した頻度を計数部130によって計数した計数結果が格納される。ファームウェア頻度記憶部143には、記憶装置へのアクセスとして、ファームウェアモジュールへのアクセスが発生した頻度を計数部130によって計数した計数結果が格納される。
格納部150は、主としてプロセッサ11により実現される。格納部150は、実行部120からの指示に従って、指定モードにおいて計数されたデータ毎の記憶装置へのアクセスの頻度を頻度記憶部140から読み出す。そして、格納部150は、指定モードの中で、頻度が高い順にアクセス対象であるデータをキャッシュメモリ160に格納して、キャッシュメモリ160に格納しなかった他のデータを外部メモリ170に格納することにより、データの配置を最適化する。
詳細には、格納部150は、データ頻度記憶部141に格納された計数結果に基づいて、指定モードにおけるアクセス頻度が高い方から順に予め定められた個数のデバイスデータをデータキャッシュメモリ161に格納し、データキャッシュメモリ161に格納しなかった他のデバイスデータをデータ外部メモリ171に格納する。同様に、格納部150は、命令頻度記憶部142に格納された計数結果に基づいて、指定モードにおけるアクセス頻度が高い方から順に予め定められた個数の命令コードを命令キャッシュメモリ162に格納し、命令キャッシュメモリ162に格納しなかった他の命令コードを命令外部メモリ172に格納する。また、格納部150は、ファームウェア頻度記憶部143に格納された計数結果に基づいて、指定モードにおけるアクセス頻度が高い方から順に予め定められた個数のファームウェアモジュールをファームウェアキャッシュメモリ163に格納し、ファームウェアキャッシュメモリ163に格納しなかった他のファームウェアモジュールをファームウェア外部メモリ173に格納する。各キャッシュメモリ160に格納されるデータの個数は、各キャッシュメモリ160の容量に従って予め定められる。例えば、格納部150は、頻度の高いデータから順に各キャッシュメモリ160に書き込める最大数のデータをキャッシュメモリ160に書き込む。格納部150は、プログラム実行装置100において、受付手段によって受け付けられた指定の動作モードにおいて、計数手段によって計数された頻度が高い順にデータをキャッシュに格納する格納ステップを実行する格納手段の一例に相当する。
データキャッシュメモリ161、命令キャッシュメモリ162及びファームウェアキャッシュメモリ163はそれぞれ、主としてキャッシュメモリ101によって実現される。データキャッシュメモリ161には、指定モードに合わせてアクセス頻度が高い順にデバイスデータが格納部150によって格納される。また、命令キャッシュメモリ162には、指定モード合わせてアクセス頻度が高い順に命令コードが格納され、ファームウェアキャッシュメモリ163には、指定モード合わせてアクセス頻度が高い順にファームウェアモジュールが格納される。これらのキャッシュメモリ160に格納されたデータは、指定モードでラダープログラムP1が実行されるときに実行部120により参照されて利用される。
データ外部メモリ171、命令外部メモリ172及びファームウェア外部メモリ173は、主として主記憶部12によって実現される。データ外部メモリ171には、指定モードにおいてアクセス頻度が比較的低いデバイスデータが格納部150によって格納される。また、命令外部メモリ172には、指定モードにおいてアクセス頻度が比較的低い命令コードが格納され、ファームウェア外部メモリ173には、指定モードにおいてアクセス頻度が比較的低いファームウェアモジュールが格納される。これらの外部メモリ170に格納されたデータは、指定モードでラダープログラムP1が実行されるときに実行部120により参照されて利用される。
続いて、プログラム実行装置100によって実行される運転処理について、図8〜13を用いて詳細に説明する。図8には、プログラム実行装置100に電源が投入されることで実行される運転処理の流れが示されている。なお、この運転処理の流れは、プログラム実行装置100の機能が発揮される順番を示す一例であって、任意に変更してもよい。
運転処理では、プログラム実行装置100は、ユーザ21によって作成されたラダープログラムP1及びパラメータをプログラミングツール200から受け付ける(ステップS1)。具体的には、受付部110が、プログラミングツール200から送信されるラダープログラムP1及び動作モード設定情報を含むパラメータを示す情報を受信することにより受け付ける。
次に、プログラム実行装置100は、アクセス頻度を計数するための試運転処理を実行する(ステップS2)。図9には、この試運転処理の詳細が示されている。図9に示されるように、試運転処理では、受付部110が、試運転の実行指示をプログラミングツール200から受け付けたか否かを判定する(ステップS20)。試運転の実行指示は、例えば、プログラミングツール200のGUIにおいて「試運転の開始」又は「最適化の実行」というボタンをユーザ21がクリックすることにより入力される。なお、最適化の実行は指定モードすべてについて実行してもよいし、最適化する動作モードをユーザが選択してもよい。
試運転の実行指示を受け付けていないと判定した場合(ステップS20;No)、受付部110は、ステップS20の判定を繰り返して、試運転の実行指示を受け付けるまで待機する。一方、試運転の実行指示を受け付けたと判定した場合(ステップS20;Yes)、受付部110は、動作モード毎の試行サイクル数を受け付ける(ステップS21)。PLCであるプログラム実行装置100は、通常、ラダープログラムP1により規定される処理を繰り返し実行する。ラダープログラムに条件分岐が含まれる場合、ラダープログラムP1の1回の実行のみでは、実行されない部分プログラムが存在する場合があり、最適化に十分な計数結果を得ることができないおそれがある。そのため、試運転処理においてはユーザが要望する回数だけラダープログラムP1が反復して実行される。受付部110は、この回数としての試行サイクル数を動作モード毎に受け付ける。なお、受付部110は、試行サイクル数を、試運転の実行指示より前に受け付けてもよいし、試運転の実行指示と同時に受け付けてもよい。
次に、実行部120は、動作モード設定情報により規定される複数の動作モードから、未選択の1つの動作モードを選択する(ステップS22)。動作モードを選択する順序は任意である。例えば、このステップS22が初めて実行されるときに、実行部120は、動作モード設定情報において最初に規定されている第1モードM1を選択し、ステップS22が再度実行されるときには、動作モード設定情報により規定される順に従って動作モードを1つ選択する。
次に、実行部120は、サイクル数Cに初期値として1を代入する(ステップS23)。サイクル数Cは、実行中のラダープログラムP1が何回目のサイクルであるかを示す変数である。
次に、実行部120は、ステップS22で選択した動作モードでラダープログラムP1を1サイクルだけ実行する(ステップS24)。例えば、実行部120は、ステップS22で第1モードM1を選択したときには、図5の上部に示される5つの命令コードを順に1回ずつ実行する。
次に、計数部130は、ステップS24におけるラダープログラムP1の実行を監視して、記憶装置へのアクセス頻度として、デバイスデータ、命令コード及びファームウェアそれぞれへのアクセス頻度を計数する(ステップS25)。具体的には、計数部130は、ラダープログラムP1に含まれる命令が順に実行される度に、当該命令に含まれる命令コード及びデバイスデータと、当該命令によりファームウェアモジュールが実行される場合における当該ファームウェアモジュールと、を特定して、特定した命令コード、デバイスデータ及びファームウェアモジュールについて頻度記憶部140に記憶されるアクセス頻度に1を加算する。
例えば、「命令コードi11 DD11 DD12」という命令が実行され、この命令により「ファームウェアモジュール1」が併せて実行される場合に、計数部130は、命令コード「命令コードi11」、デバイスデータ「DD11」、デバイスデータ「DD12」、及び「ファームウェアモジュール1」それぞれのアクセス頻度をカウントアップする。その後に同一の命令コード「命令コードi11」を含む命令が再度実行された場合には、当該命令コードのアクセス頻度がさらにカウントアップされる。なお、命令の実行にファームウェアモジュールの実行が伴わない場合には、計数部130は、ファームウェアモジュールのアクセス頻度を変更しない。
ステップS25に続いて、実行部120は、サイクル数Cが、ステップS21において受け付けた試行サイクル数のうちステップS22で選択した動作モードに対応する試行サイクル数に等しいか否かを判定する(ステップS26)。これにより、選択された動作モードにおける試運転を終了すべきか否かが判定される。
サイクル数Cが試行サイクル数に等しくないと判定した場合(ステップS26;No)、実行部120は、サイクル数Cに1を加算して(ステップS27)、ステップS24以降の処理を繰り返す。これにより、試行サイクル数に等しい回数だけラダープログラムP1が実行される。
一方、サイクル数Cが試行サイクル数に等しいと判定した場合(ステップS26;Yes)、実行部120は、最適化指示を受け付けた動作モードをすべて選択したか否かを判定する(ステップS28)。具体的には、実行部120は、動作モード設定情報により規定された複数の動作モードのいずれについてもステップS22にて選択したか否かを判定する。
最適化指示を受け付けた動作モードをすべて選択していないと判定した場合(ステップS28;No)、実行部120は、ステップS22以降の処理を繰り返す。これにより、未選択の動作モードについて試運転が実行されてアクセス頻度が計数される。一方、最適化指示を受け付けた動作モードをすべて選択したと判定された場合(ステップS28;Yes)、試運転処理が終了する。
図10には、試運転処理が終了した時点でデータ頻度記憶部141に記憶装置へのアクセスの頻度として記憶されるデバイスデータ毎のアクセス数が例示されている。図10の例では、第1モードM1のときには、デバイスデータ「DD11」及び「DD12」のアクセス頻度が他のデバイスデータより多いことがわかる。同様に、図11には、命令頻度記憶部142に記憶装置へのアクセスの頻度として記憶される命令コード毎のアクセス数が例示され、図12には、ファームウェア頻度記憶部143に記憶装置へのアクセスの頻度として記憶されるファームウェアモジュール毎のアクセス数が例示されている。
図8に戻り、ステップS2の試運転処理に続いて、ユーザ21が要望するライン工程を実際に稼働させるための通常運転処理が実行される(ステップS3)。図13には、この通常運転処理の詳細が示されている。図13に示されるように、通常運転処理では、受付部110が、指定モード及び実行指示を受け付けたか否かを判定する(ステップS30)。具体的には、受付部110が、ユーザ21により操作されたスイッチの入力状態に対応する動作モードを動作モード設定情報から特定することにより指定モードを受け付けるとともに、ラダープログラムP1を実行するためのプッシュボタンの押下による実行指示を受け付けたか否かを判定する。
指定モード及び実行指示を受け付けていないと判定した場合(ステップS30;No)、受付部110は、ステップS30の判定を繰り返して、指定モード及び実行指示を受け付けるまで待機する。
一方、指定モード及び実行指示を受け付けたと判定された場合(ステップS30;Yes)、格納部150は、データ頻度記憶部141において指定モードに対応するアクセス頻度を参照して、アクセス頻度が他のデバイスデータより高いデバイスデータをデータキャッシュメモリ161に割り当て可能な数、又は、ユーザ21によって指定された数だけ割り当てて格納する(ステップS31)。例えば、指定モードが第1モードM1であり、データキャッシュメモリ161に割り当て可能なデータの数が2つである場合に、図10に示されるデータ頻度記憶部141に基づいて、記憶装置へのアクセスの頻度が高い順にデバイスデータ「DD11」及び「DD12」がデータキャッシュメモリ161に割り当てられ、他のデバイスデータ「DD13」〜「DD16」がデータ外部メモリ171に割り当てられる。
次に、格納部150は、命令頻度記憶部142において指定モードに対応するアクセス頻度を参照して、アクセス頻度が他の命令コードより高い命令コードを命令キャッシュメモリ162に割り当て可能な数、又は、ユーザ21によって指定された数だけ割り当てて格納する(ステップS32)。例えば、指定モードが第1モードM1であり、命令キャッシュメモリ162に割り当て可能なデータの数が1つである場合に、図11に示される命令頻度記憶部142に基づいて、記憶装置へのアクセスの頻度が高い順に命令コード「命令コードi11」が命令キャッシュメモリ162に割り当てられ、他の命令コード「命令コードi12」及び「命令コードi13」が命令外部メモリ172に割り当てられる。
次に、格納部150は、ファームウェア頻度記憶部143において指定モードに対応するアクセス頻度を参照して、アクセス頻度が他のファームウェアモジュールより高いファームウェアモジュールを、ファームウェアキャッシュメモリ163に割り当て可能な数、または、ユーザ21によって指定された数だけ割り当てて格納する(ステップS33)。例えば、指定モードが第1モードM1であり、ファームウェアキャッシュメモリ163に割り当て可能なデータの数が1つである場合に、図12に示されるファームウェア頻度記憶部143に基づいて、記憶装置へのアクセスの頻度が高い順に「ファームウェアモジュール1」がファームウェアキャッシュメモリ163に割り当てられ、他の「ファームウェアモジュール2」がファームウェア外部メモリ173に割り当てられる。
次に、実行部120は、ラダープログラムP1を実行する。これにより、指定モードにおいてアクセス頻度が高いデータがキャッシュメモリ160に格納された状態でラダープログラムP1が実行される。なお、実行部120は、ステップS31〜S33以降は、通常運転処理が終了するまでキャッシュへのデータの割り当てを変更することなくラダープログラムP1を実行するが、通常運転処理の実行中に必要に応じてキャッシュへのデータの割り当てを変更してもよい。その後、通常運転処理が終了する。
図8に戻り、ステップS3の通常運転処理に続いて、再度、ステップS3が実行される。これにより、ユーザ21が要望する指定モードに最適化された状態での通常運転処理が再度実行されることとなる。
以上、説明したように、試運転処理において、実行部120が、複数の動作モードそれぞれでラダープログラムP1を実行し、計数部130が、動作モードそれぞれについて、ラダープログラムP1が実行されているときに発生する記憶装置へのアクセスの頻度をデータ毎に計数する。そして、通常運転処理において、格納部150は、指定モードにおいてアクセス頻度が高い順にデータをキャッシュに格納する。これにより、実行部120がキャッシュに格納されたデータを、指定モードでラダープログラムP1を実行するときに参照する可能性が高くなる。このため、指定モードに合わせてキャッシュが最適化された状態でラダープログラムP1が実行される。例えば、図10に示される例において、第1モードM1の実行時には、比較的アクセス頻度が低いデバイスデータ「DD13」〜「DD16」及びアクセスが発生しないデバイスデータ「DD21」,「DD22」をキャッシュメモリ160に割り当てたことによる遅延を発生させることなく、ラダープログラムP1を実行することができる。すなわち、ラダープログラムP1のうち指定モードにおいては実行されない部分をキャッシュに割り当ててしまうことがない。したがって、ライン工程に合わせて実行する動作モードを切り替えて複数の異なる工程を実施するためのラダープログラムP1をより高速に実行することができる。
また、デバイスデータ、命令コード、ファームウェアモジュールそれぞれについて、アクセス頻度が高いデータをキャッシュに格納した上で、指定モードでラダープログラムP1が実行された。デバイスデータ及び命令コード及びファームウェアモジュールは、ライン工程によってアクセス頻度が大きく異なるデータであるため、これらのデータのキャッシュへの割り当てを最適化することで、ラダープログラムP1を高速に実行することができる。
ラダープログラムP1により規定される処理では通常、同一の命令コードへのアクセスよりも同一のデバイスデータへのアクセスの方が多くなる場合が多い。このような場合において、命令コードとデバイスデータとを区別することなく同様のデータとして扱ってキャッシュを最適化すると、デバイスデータばかりがキャッシュに割り当てられてしまう。その結果、デバイスデータと組み合わせて利用される命令コードが実行される回数だけ演算処理に遅延が生じてしまい、ラダープログラムP1全体の実行速度が低下するおそれがある。
これに対して本実施の形態に係るプログラム実行装置100によれば、デバイスデータと命令コードとを区別して、それぞれについてキャッシュを最適化するため、ラダープログラムP1の実行速度の低下を回避することができる。このように、データの種類に応じてキャッシュを最適化することが望ましい。本実施の形態に係るプログラム実行装置100では、デバイスデータと命令コードに加えて、ファームウェアモジュールを区別して扱った上でキャッシュを最適化するため、実行速度の低下をさらに回避することが期待される。
また、格納部150は、指定モードにおける記憶装置へのアクセスの頻度が高い順に、予め定められた個数であるキャッシュメモリ101の割り当て上限までデータをキャッシュに格納した。これにより、指定モードにおけるキャッシュヒット率が最大になり、ラダープログラムP1を高速に実行することができる。
実施の形態2.
続いて、実施の形態2について、上述の実施の形態1との相違点を中心に説明する。なお、上記実施の形態1と同一又は同等の構成については、同等の符号を用いるとともに、その説明を省略又は簡略する。
上記実施の形態1では、デバイスデータ及び命令コードと同様に、ファームウェアモジュールについてもキャッシュへの割り当てが動作モード毎に最適化された。しかしながら、ファームウェアについては、動作モードを変更したときのアクセス頻度の変化が少ないケースがある。例えば、ライン工程における機器30,31の状態をサーバにより外部に通知することが、ライン工程の種別に関わらず行われるケースがある。また,例えば監視機能が使用される場合は,ライン工程の種別に関わらず,全種別において使用される可能性が高い。このような場合には、動作モード毎にファームウェアのキャッシュへの割り当てを変更するのではなく、すべての動作モードを実行する試運転処理において計数されたアクセス頻度に基づく割り当てが有効となる。
本実施の形態に係る計数部130は、ファームウェアのアクセス頻度を、動作モードそれぞれについて計数するのに代えて、動作モードに関わらず計数する。具体的には、図9と同様の試運転処理において、計数部130は、ステップS25においてファームウェアモジュールへのアクセスがあったときに複数の動作モードで共通のアクセス頻度をカウントアップする。
図14には、本実施の形態に係るファームウェア頻度記憶部143の一例が示されている。図14に示されるように、複数の動作モードすべてが実行されたときのアクセス頻度が計数されて、通常運転処理では、アクセス頻度が高いファームウェアがキャッシュメモリ160に割り当てられる。
以上、説明したように、計数部130は、ラダープログラムP1が複数の動作モードで実行されるときに発生する記憶装置へのアクセスの頻度を該アクセスの対象であるファームウェア毎に計数する。そして、実行部120は、受付部110によってラダープログラムP1の実行指示が受け付けられると、格納部150によってキャッシュに格納されたファームウェアを参照して指定モードでラダープログラムP1を実行する。これにより、動作モードにアクセス頻度が影響されないファームウェアの割り当てを最適化した上で、ラダープログラムP1を高速に実行することができる。
以上、本開示の実施の形態について説明したが、本開示は上記実施の形態によって限定されるものではない。
例えば、上記実施の形態では、プログラム実行装置100がPLCである例について説明したが、これには限定されない。プログラム実行装置100は、図15に示されるように、PLC1001を構成するCPUユニットであってもよい。図15に示される例では、プログラム実行装置100とともにPLC1001を構成する入出力ユニットが機器30,31と接続される。
また、上記実施の形態では、通常運転処理を実行する前に試運転処理が実行されたが、試運転処理を省略してもよい。例えば、各動作モードを実行する初回の通常運転処理において、上述の試運転処理と同様に記憶装置におけるデータ毎のアクセス頻度を計数して、2回目以降の通常運転処理におけるキャッシュを動作モードに合わせて最適化してもよい。また、試運転処理を必須の処理とせずに、通常運転処理を最適化されていないキャッシュで実行可能としつつ、ユーザが要望する場合に限って試運転処理を実行してキャッシュを最適化してもよい。
また、通常運転処理において、試運転処理と同様に記憶装置におけるデータ毎へのアクセス頻度を計数して、計数結果をその後の新たな通常運転処理におけるキャッシュへのデータの割り当てに利用してもよい。これにより、試運転処理の試行サイクル数が不十分であっても、通常運転処理が実行される度に動作モードに合わせたキャッシュの割り当てを最適化することができる。
また、上記実施の形態では、プロセッサ11の内蔵メモリをキャッシュとして説明したが、プロセッサ11の外部にある高速にアクセス可能なメモリをキャッシュとしてもよい。
また、上記実施の形態では、動作モードの指定及びラダープログラムP1の実行指示が、プログラム実行装置100のスイッチ操作により入力される例について説明したが、これには限定されない。プログラム実行装置100は、プログラミングツール200を介して動作モードの指定及び実行指示を受け付けてもよい。
また、上記実施の形態では、プログラム実行装置100が備えるスイッチの入力状態と動作モードとの関係が動作モード設定情報により規定されたが、これには限定されない。動作モード設定情報は、プログラム実行装置100が有する特定の記憶領域の値と、動作モードとの関係を規定してもよい。例えば、プログラム実行装置100の補助記憶部13の「D0」というアドレスにより示される値が「A」であれば第1モードM1を実行し、この値が「B」であれば第2モードM2を実行し、値が「C」であれば第3モードM3を実行するものとしてもよい。このアドレスの値が、スイッチの状態に対応するとともにプログラミングツール200から書き換え可能であれば、プログラム実行装置100のスイッチ操作と、プログラミングツール200と、のいずれでも動作モードを指定することができる。
また、図5の例では、接点それぞれが、いずれか一の動作モードの実行時のみにON状態になったが、これには限定されない。ラダープログラムP1は、複数の動作モードのうち2以上の動作モードでON状態となる接点を有してもよい。
また、上記実施の形態では、データへのアクセス回数を記憶装置へのアクセスの頻度として説明したが、これには限定されない。例えば、記憶装置へのアクセスが発生した回数のうちデータ毎のアクセスの割合をアクセス頻度としてもよい。また、アクセス回数が予め定められた閾値を超えたデータのアクセス頻度を示すフラグを立ててもよい。アクセスの多さを示すその他の度合いをアクセス頻度としてもよい。
上記実施の形態では、記憶装置へのアクセスの頻度として、デバイスデータ、命令コード及びファームウェアそれぞれへのアクセスの頻度を計数したが、アクセスの頻度を計数するデータは、これらに限られない。例えば、デバイスデータのみをアクセスの対象であるデータとしてもよいし、デバイスデータと命令コードとの2つをアクセスの対象であるデータとしてもよい。このような場合でも、プログラムが実行されているときに発生する動作モード毎の記憶装置へのアクセスの頻度を計数できていれば、動作モードに合わせたキャッシュへのデータの割り付けを最適化することができる。
また、上記実施の形態では、ラダー言語で記述されたラダープログラムP1が実行されたが、これには限定されず、プログラム実行装置100は、複数の動作モードを有するプログラムを実行してもよい。このようなプログラムとしては、例えば、C言語で記述されたプログラム或いはアセンブリ言語で記述されたプログラムが考えられる。
上述の実施形態に係るプログラム実行装置100の機能は、専用のハードウェアによっても、また、通常のコンピュータシステムによっても実現することができる。
例えば、プログラムP2を、フレキシブルディスク、CD−ROM(Compact Disk Read-Only Memory)、DVD(Digital Versatile Disk)、MO(Magneto-Optical disk)に代表されるコンピュータ読み取り可能な記録媒体に格納して配布し、そのプログラムP2をコンピュータにインストールすることにより、上述の処理を実行する装置を構成することができる。
また、プログラムP2をインターネットに代表される通信ネットワーク上のサーバ装置が有するディスク装置に格納しておき、例えば、搬送波に重畳させて、コンピュータにダウンロードするようにしてもよい。
また、インターネットに代表されるネットワークを介してプログラムP2を転送しながら起動実行することによっても、上述の処理を達成することができる。
さらに、プログラムP2の全部又は一部をサーバ装置上で実行させ、その処理に関する情報をコンピュータが通信ネットワークを介して送受信しながらプログラムP2を実行することによっても、上述の処理を達成することができる。
なお、上述の機能を、OS(Operating System)が分担して実現する場合又はOSとアプリケーションとの協働により実現する場合には、OS以外の部分のみを媒体に格納して配布してもよく、また、コンピュータにダウンロードしてもよい。
また、プログラム実行装置100の機能を実現する手段は、ソフトウェアに限られず、その一部又は全部を専用のハードウェア又は回路によって実現してもよい。
本開示は、本開示の広義の精神と範囲を逸脱することなく、様々な実施の形態及び変形が可能とされるものである。また、上述した実施の形態は、本開示を説明するためのものであり、本開示の範囲を限定するものではない。つまり、本開示の範囲は、実施の形態ではなく、請求の範囲によって示される。そして、請求の範囲内及びそれと同等の開示の意義の範囲内で施される様々な変形が、本開示の範囲内とみなされる。
本開示は、ライン工程を実現するプログラムを実行する装置に適している。
1000 制御システム、 100 プログラム実行装置、 11 プロセッサ、 12 主記憶部、 13 補助記憶部、 14 入力部、 15 出力部、 16 通信部、 17 内部バス、 20 端末、 21 ユーザ、 30,31 機器、 101 キャッシュメモリ、 110 受付部、 120 実行部、 130 計数部、 140 頻度記憶部、 141 データ頻度記憶部、 142 命令頻度記憶部、 143 ファームウェア頻度記憶部、 150 格納部、 160 キャッシュメモリ、 161 データキャッシュメモリ、 162 命令キャッシュメモリ、 163 ファームウェアキャッシュメモリ、 170 外部メモリ、 171 データ外部メモリ、 172 命令外部メモリ、 173 ファームウェア外部メモリ、 200 プログラミングツール、 210 プログラム作成部、 220 コンパイラ、 230 設定部、 231 動作モード設定部、 A10 工程データ、 A11,A12 部分データ、 C12〜C15,C21〜C23,C31〜C33 接点、 P1 ラダープログラム、 P2 プログラム、 P3 ファームウェア

Claims (9)

  1. ラインにおいて異なる工程を実施するための複数の動作モードを有するプログラムを実行するプログラム実行装置であって、
    前記複数の動作モードのそれぞれで前記プログラムを実行する試運転処理を実行する実行手段と、
    前記複数の動作モードそれぞれについて、前記試運転処理において前記プログラムが実行されているときに発生する記憶装置へのアクセスの頻度を該アクセスの対象であるファームウェアであって、ライン工程における機器の状態をリアルタイムに外部に提供するサーバとして機能する前記ファームウェア毎に計数する計数手段と、
    前記プログラムの動作モードの指定と、指定した動作モードで前記プログラムを実行することの指示と、を受け付ける受付手段と、
    前記受付手段によって受け付けられた指定の動作モードにおいて、前記計数手段によって計数された前記頻度が高い順に前記ファームウェアをキャッシュに格納する格納手段と、を備え、
    前記実行手段は、前記受付手段によって前記指示が受け付けられると、前記格納手段によって前記キャッシュに格納された前記ファームウェアを参照して前記指定の動作モードで前記プログラムを実行する、
    プログラム実行装置。
  2. ラインにおいて異なる工程を実施するための複数の動作モードを有するプログラムを実行するプログラム実行装置であって、
    前記複数の動作モードのそれぞれで前記プログラムを実行する試運転処理を実行する実行手段と、
    前記試運転処理において前記プログラムが前記複数の動作モードで実行されているときに発生する記憶装置へのアクセスの頻度を、該アクセスの対象であるファームウェアであって、ライン工程における機器の状態をリアルタイムに外部に提供するサーバとして機能する前記ファームウェア毎に計数する計数手段と、
    前記プログラムの動作モードの指定と、指定した動作モードで前記プログラムを実行することの指示と、を受け付ける受付手段と、
    前記受付手段によって受け付けられた指定の動作モードにおいて、前記計数手段によって計数された前記頻度が高い順に前記ファームウェアをキャッシュに格納する格納手段と、を備え、
    前記実行手段は、前記受付手段によって前記指示が受け付けられると、前記格納手段によって前記キャッシュに格納された前記ファームウェアを参照して前記指定の動作モードで前記プログラムを実行する、
    プログラム実行装置。
  3. 前記計数手段は、前記複数の動作モードそれぞれについて、前記頻度を該アクセスの対象であって数値又は文字列であるデバイスデータ毎に計数し、
    前記格納手段は、前記指定の動作モードにおいて前記頻度が高い順に前記デバイスデータを前記キャッシュに格納し、
    前記実行手段は、前記受付手段によって前記指示が受け付けられると、前記格納手段によって前記キャッシュに格納された前記デバイスデータを参照して前記指定の動作モードで前記プログラムを実行する、
    請求項1又は2に記載のプログラム実行装置。
  4. 前記計数手段は、前記複数の動作モードそれぞれについて、前記頻度を該アクセスの対象である命令コード毎に計数し、
    前記格納手段は、前記指定の動作モードにおいて前記頻度が高い順に前記命令コードを前記キャッシュに格納し、
    前記実行手段は、前記受付手段によって前記指示が受け付けられると、前記格納手段によって前記キャッシュに格納された前記命令コードを参照して前記指定の動作モードで前記プログラムを実行する、
    請求項1から3のいずれか一項に記載のプログラム実行装置。
  5. 前記格納手段は、前記指定の動作モードにおいて、予め定められた個数まで前記ファームウェアを前記キャッシュに格納する、
    請求項1からのいずれか一項に記載のプログラム実行装置。
  6. 複数の動作モードを有するプログラムを実行するプログラム実行装置によるプログラム実行方法であって、
    実行手段が、前記複数の動作モードのそれぞれで前記プログラムを実行する試運転処理を実行する試運転処理ステップと、
    計数手段が、前記複数の動作モードそれぞれについて、前記試運転処理において前記プログラムが実行されているときに発生する記憶装置へのアクセスの頻度を該アクセスの対象であるファームウェアであって、ライン工程における機器の状態をリアルタイムに外部に提供するサーバとして機能する前記ファームウェア毎に計数する計数ステップと、
    受付手段が、前記プログラムの動作モードの指定と、指定した動作モードで前記プログラムを実行することの指示と、を受け付ける受付ステップと、
    格納手段が、前記受付ステップにおいて受け付けられた指定の動作モードにおいて、前記計数ステップにおいて計数された前記頻度が高い順に前記ファームウェアをキャッシュに格納する格納ステップと、
    前記実行手段が、前記受付ステップにおいて前記指示が受け付けられると、前記格納ステップにおいて前記キャッシュに格納された前記ファームウェアを参照して前記指定の動作モードで前記プログラムを実行する実行ステップと、
    を含むプログラム実行方法。
  7. 複数の動作モードを有するプログラムを実行するプログラム実行装置によるプログラム実行方法であって、
    実行手段が、前記複数の動作モードのそれぞれで前記プログラムを実行する試運転処理を実行する試運転処理ステップと、
    計数手段が、前記試運転処理において前記プログラムが前記複数の動作モードで実行されているときに発生する記憶装置へのアクセスの頻度を、該アクセスの対象であるファームウェアであって、ライン工程における機器の状態をリアルタイムに外部に提供するサーバとして機能する前記ファームウェア毎に計数する計数ステップと、
    受付手段が、前記プログラムの動作モードの指定と、指定した動作モードで前記プログラムを実行することの指示と、を受け付ける受付ステップと、
    格納手段が、前記受付ステップにおいて受け付けられた指定の動作モードにおいて、前記計数ステップにおいて計数された前記頻度が高い順に前記ファームウェアをキャッシュに格納する格納ステップと、
    前記実行手段が、前記受付ステップにおいて前記指示が受け付けられると、前記格納ステップにおいて前記キャッシュに格納された前記ファームウェアを参照して前記指定の動作モードで前記プログラムを実行する実行ステップと、
    を含むプログラム実行方法。
  8. 複数の動作モードを有する実行プログラムを実行するコンピュータを、
    前記複数の動作モードのそれぞれで前記実行プログラムを実行する試運転処理を実行する実行手段、
    前記複数の動作モードそれぞれについて、前記試運転処理において前記実行プログラムが実行されているときに発生する記憶装置へのアクセスの頻度を該アクセスの対象であるファームウェアであって、ライン工程における機器の状態をリアルタイムに外部に提供するサーバとして機能する前記ファームウェア毎に計数する計数手段、
    前記実行プログラムの動作モードの指定と、指定した動作モードで前記実行プログラムを実行することの指示と、を受け付ける受付手段、
    前記受付手段によって受け付けられた指定の動作モードにおいて、前記計数手段によって計数された前記頻度が高い順に前記ファームウェアをキャッシュに格納する格納手段、として機能させ、
    前記実行手段は、前記受付手段によって前記指示が受け付けられると、前記格納手段によって前記キャッシュに格納された前記ファームウェアを参照して前記指定の動作モードで前記実行プログラムを実行する、
    コンピュータプログラム。
  9. 複数の動作モードを有する実行プログラムを実行するコンピュータを、
    前記複数の動作モードのそれぞれで前記実行プログラムを実行する試運転処理を実行する実行手段、
    前記試運転処理において前記実行プログラムが前記複数の動作モードで実行されているときに発生する記憶装置へのアクセスの頻度を該アクセスの対象であるファームウェアであって、ライン工程における機器の状態をリアルタイムに外部に提供するサーバとして機能する前記ファームウェア毎に計数する計数手段、
    前記実行プログラムの動作モードの指定と、指定した動作モードで前記実行プログラムを実行することの指示と、を受け付ける受付手段、
    前記受付手段によって受け付けられた指定の動作モードにおいて、前記計数手段によって計数された前記頻度が高い順に前記ファームウェアをキャッシュに格納する格納手段、として機能させ、
    前記実行手段は、前記受付手段によって前記指示が受け付けられると、前記格納手段によって前記キャッシュに格納された前記ファームウェアを参照して前記指定の動作モードで前記実行プログラムを実行する、
    コンピュータプログラム。
JP2020561840A 2020-05-01 2020-05-01 プログラム実行装置、プログラム実行方法及びコンピュータプログラム Active JP6929474B1 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2020/018467 WO2021220516A1 (ja) 2020-05-01 2020-05-01 プログラム実行装置、プログラム実行方法及びコンピュータプログラム

Publications (2)

Publication Number Publication Date
JP6929474B1 true JP6929474B1 (ja) 2021-09-01
JPWO2021220516A1 JPWO2021220516A1 (ja) 2021-11-04

Family

ID=77456351

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020561840A Active JP6929474B1 (ja) 2020-05-01 2020-05-01 プログラム実行装置、プログラム実行方法及びコンピュータプログラム

Country Status (2)

Country Link
JP (1) JP6929474B1 (ja)
WO (1) WO2021220516A1 (ja)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004192403A (ja) * 2002-12-12 2004-07-08 Fuji Xerox Co Ltd キャッシュメモリのデータ管理方法、及び情報処理装置
JP2006209527A (ja) * 2005-01-28 2006-08-10 Nokia Corp コンピュータシステム
JP2007207196A (ja) * 2006-02-06 2007-08-16 Seiko Instruments Inc プログラマブルロジックコントローラ、情報処理装置、制御プログラム、およびテーブル作成プログラム
JP2010128612A (ja) * 2008-11-25 2010-06-10 Panasonic Electric Works Co Ltd シーケンス制御システム
WO2019215795A1 (ja) * 2018-05-07 2019-11-14 三菱電機株式会社 情報処理装置、チューニング方法およびチューニングプログラム

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004192403A (ja) * 2002-12-12 2004-07-08 Fuji Xerox Co Ltd キャッシュメモリのデータ管理方法、及び情報処理装置
JP2006209527A (ja) * 2005-01-28 2006-08-10 Nokia Corp コンピュータシステム
JP2007207196A (ja) * 2006-02-06 2007-08-16 Seiko Instruments Inc プログラマブルロジックコントローラ、情報処理装置、制御プログラム、およびテーブル作成プログラム
JP2010128612A (ja) * 2008-11-25 2010-06-10 Panasonic Electric Works Co Ltd シーケンス制御システム
WO2019215795A1 (ja) * 2018-05-07 2019-11-14 三菱電機株式会社 情報処理装置、チューニング方法およびチューニングプログラム

Also Published As

Publication number Publication date
JPWO2021220516A1 (ja) 2021-11-04
WO2021220516A1 (ja) 2021-11-04

Similar Documents

Publication Publication Date Title
WO2015136960A1 (ja) コントローラ
CN104735546A (zh) Ktv点歌方法及系统、ktv歌曲点播终端和ktv歌曲管理系统
JP7000686B2 (ja) 制御装置
JPH01173247A (ja) スレーブ制御装置
WO2018206994A1 (en) Method of managing resource providing in a computers cluster running jobs
JP6929474B1 (ja) プログラム実行装置、プログラム実行方法及びコンピュータプログラム
KR102280116B1 (ko) 엔지니어링 장치, 엔지니어링 장치의 제어 방법 및 프로그램
JP6879625B2 (ja) プログラマブルコントローラ、管理装置および制御システム
WO2016189709A1 (ja) コントローラ
JP6362821B2 (ja) 制御装置、制御方法および命令セット
JP2009157533A (ja) プログラマブルコントローラシステム
JP5849592B2 (ja) プログラマブルコントローラシステム、そのプログラミング装置、プログラマブルコントローラ、プログラム、デバッグ方法
JP6135247B2 (ja) 情報処理装置および情報処理プログラム
JP4366575B2 (ja) ツール
JP6119452B2 (ja) プログラマブルコントローラシステム、その支援装置、プログラマブルコントローラ、プログラム
JP2005332370A (ja) 制御装置
JP7276265B2 (ja) 生産システム、上位制御装置、制御装置、通信方法、及びプログラム
CN104678875B (zh) 一种变频器配置方法及变频器配置系统
JP2009301359A (ja) 制御装置
JP2007199869A (ja) デバイス連携機構の自動分散化プログラム、装置およびデバイス連携機構
KR102434126B1 (ko) Plc 프로그램 처리 장치
CN113253992B (zh) 用于支持多种编程语言的plc控制方法
KR101805866B1 (ko) 소프트웨어 디파인드 라디오를 위한 전자 장치 및 그 스케줄링 방법
JP6812727B2 (ja) 安全制御ユニット、安全制御方法、安全制御プログラム
JP4877257B2 (ja) プログラマブルコントローラ、プログラマブルコントローラ支援装置、及びプログラマブルコントローラシステム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201102

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20201102

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20201102

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20210218

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210224

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210412

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210810

R150 Certificate of patent or registration of utility model

Ref document number: 6929474

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150