(58)【調査した分野】(Int.Cl.,DB名)
前記ロジック処理実行手段によって前記不定期アクセス先が前記アクセス情報に統合されていないと判定された場合に、前記接続機器内の該不定期アクセス先からデータを取得する第2データ取得手段を更に有することを特徴とする請求項1記載のプログラマブル表示器。
前記第1データ取得手段は、任意の1以上の前記不定期アクセス先が前記アクセス情報に統合されている場合には、該各不定期アクセス先からもデータを取得して前記内部メモリに記憶することを特徴とする請求項1記載のプログラマブル表示器。
前記ロジック処理実行手段は、前記不定期アクセス先が前記アクセス情報に統合されているか否かに係わらず、任意の前記不定期アクセス先へのアクセス処理が生じる毎に、該不定期アクセス先に係わる前記アクセス頻度を更新することを特徴とする請求項1記載のプログラマブル表示器。
前記格付け手段は、前記格上状態アクセス先となっている前記不定期アクセス先に関する前記アクセス頻度が、所定の第2閾値未満である場合には、格下げを行うことで前記アクセス情報に統合させないことを特徴とする請求項1記載のプログラマブル表示器。
前記第1データ取得手段によって取得された、前記各アイテムに応じた各アクセス先のデータを用いて、前記表示画面上の各アイテムの表示内容を制御するアイテム表示制御手段を更に有することを特徴とする請求項1記載のプログラマブル表示器。
【発明を実施するための最良の形態】
【0036】
以下、図面を参照して本発明の実施の形態について説明する。
図1は、本例のプログラマブル表示器1を含むシステム全体の概略構成図である。
図1に示すプログラマブルコントローラシステムは、各種接続機器4と、通信ライン6を介して各種接続機器4に接続するプログラマブル表示器1とを有する。更に、プログラマブル表示器1が、通信ライン3を介して作画エディタ装置5(支援装置)に接続された構成であってもよい。プログラマブル表示器1には、複数の通信インタフェース2(通信ポート)が備えられており、各通信インタフェース2に接続された通信ライン3/通信ライン6によって各種接続機器4や作画エディタ装置5と接続されている。
【0037】
但し、作画エディタ装置5は、必ずしもプログラマブル表示器1に接続されている必要があるわけではない(一例を示しているに過ぎない)。例えば、プログラマブル表示器1に画面データをインストールする際に、作画エディタ装置5をプログラマブル表示器1に接続するようにしてもよい。これによって、作画エディタ装置5で作成される画面データ等が、作画エディタ装置5から通信ライン3を介してプログラマブル表示器1にダウンロードされる。勿論、この例に限らない。
【0038】
また、上記通信ライン3を介したダウンロードの代わりに、不図示の可搬型記録媒体(メモリカード等)を介して、上記画面データ等をプログラマブル表示器1に渡すようにしてもよい。何れにしても、基本的には、作画エディタ装置5で作成/更新等される画面データを、プログラマブル表示器1に記憶させることになる。そして、プログラマブル表示器1では、この画面データ等に基づいて、上記操作表示画面を表示することになる。
【0039】
あるいは、プログラマブル表示器1は、上述した任意のロジック処理(ロジックプログラム)を実行する場合がある。本手法は、基本的に、この様なロジック処理も実行するプログラマブル表示器1において、処理効率の向上を図り、以って上述した問題点(課題)を解決するものである。
【0040】
尚、以下の説明では、作画エディタ装置5を支援装置5と記す場合もあるものとする。
図2は、本例のプログラマブル表示器1のハードウェア構成例である。
図示のプログラマブル表示器1は、表示操作制御装置10と、タッチパネル18、ディスプレイ19、上記通信インタフェース2等を有する。
【0041】
表示操作制御装置10は、CPU11、ROM12(フラッシュメモリ等)、RAM13、通信コントローラ14、グラフィックコントローラ15、タッチパネルコントローラ16等より成り、これらがバス17に接続されている。
【0042】
CPU11は、表示操作制御装置10全体を制御する中央処理装置(演算プロセッサ)である。CPU11は、ROM12に予め格納されているプログラム(例えば後述する本体プログラム21等)を実行することで、所定の演算動作(処理)を行う。所定の処理とは、例えば上記操作表示画面の各アイテム毎の表示内容をサイクリックに更新する処理(上記リフレッシュ処理)である。その為に、各アイテムに対応する上記外部メモリへのアクセス処理(各アイテムの割当メモリ領域の格納データを取得する処理)を行う。そして、当該“取得データ”に基づく画面表示制御等を行う。尚、これらの処理は、上記の通り、従来技術である。
【0043】
更に、ここでは、本体プログラム21には、ユーザ等が任意に作成したプログラム(ロジックプログラムと呼ぶ)も含まれるものとする。このロジックプログラムによる処理(ロジック処理)は、様々であるが、上記外部メモリにアクセスする処理が含まれる場合がある。上記の通り、このロジック処理自体は、従来でも存在するものである。そして、上述した通り、ロジック処理が上記リフレッシュ処理に影響して、例えばリフレッシュ処理とロジック処理の両方とも時間が掛かる等の問題が生じることになる。
【0044】
また、本体プログラム21実行に伴う演算結果等は、例えばRAM13やROM12に格納される。
また、ROM12には、上記背景技術で説明した画面データ(後述する画面データ22)等が格納されている。上記のように、画面データ22は、例えば上述したスイッチ、ランプ等の各アイテム毎に、その表示位置座標や大きさ等の表示に係わるデータや、上記割当メモリアドレス(割当メモリ領域)等のメモリアクセスに係わるデータ等を有する。また、画面データ22には、各アイテムの画像(あるいはアイテム画像の識別ID等)が含まれている。
【0045】
上記本体プログラム21等を用いるCPU11の処理には、上記の通り“各アイテム毎の割当メモリ領域の格納データ”を取得する処理等が含まれる。この“取得データ”は、例えば後述する共有メモリ55に一時的に格納される。尚、共有メモリ55は、上記RAM13やROM12の記憶領域の一部であってもよいし、不図示の他のメモリであってもよい。
【0046】
また、上記CPU11の処理によって、例えば上記画面データや上記取得データ等に基づく表示対象データが、例えばRAM13(あるいは不図示のビデオRAM)上に展開(描画)される。この描画に基づいてグラフィックコントローラ15が、ディスプレイ19上に上述した操作表示画面等を表示する。
【0047】
尚、従来より、画面データ22には、各アイテム毎に、例えばON用とOFF用の2種類のアイテム画像が含まれている。そして、プログラマブル表示器1側では、例えば上記取得データが‘0’であればランプ消灯画像、‘1’であればランプ点灯画像が、上記表示対象データとなる(例えばビデオRAM上に描画される)。
【0048】
ディスプレイ19は、例えば液晶パネル等より成り、この液晶パネル上に重ねるようにしてタッチパネル18が設けられる。従来では、ディスプレイ19上には、基本的には、複数のアイテムそれぞれのアイテム画像が、所定位置に配置されて成る操作表示画面が表示される。
【0049】
また、通信コントローラ14は、通信インタフェース2を介して、不図示のPLC本体等や温調装置等である接続機器4や作画エディタ装置5との通信(データ送受信等)を行う。
【0050】
オペレータ等によるタッチパネル18上での押圧操作(タッチ)位置の検知結果は、タッチパネルコントローラ16を介してCPU11等に取り込まれて解析される。例えば各アイテムの上記表示位置座標や大きさのデータ等に基づいて、解析することになる。例えば、上記スイッチの画像の表示位置をオペレータ等がタッチすると、CPU11等は、このスイッチに対する操作が行われたものと解析することになる。
【0051】
図3に、上記本システムのソフトウェア構成図を示す。
プログラマブル表示器1においては、本体プログラム21、画面データ22、通信プログラム23等の各種プログラム/データが、例えば上記ROM12(フラッシュメモリ等)に格納されている。これらのプログラム/データ等をCPU11が読出し・実行/参照等することで、プログラマブル表示器用の上記操作表示画面等の表示制御等が行なわれる。
【0052】
この操作表示画面は、従来と同様に、上述した数値表示、ランプ、スイッチ等の各種アイテムの画像表示から成り、各アイテム画像の表示内容は、例えば上記“取得データ”を反映させる形で随時更新される。
【0053】
基本的には、CPU11が、本体プログラム21と画面データ22とに基づく処理を行うことで、上記操作表示画面が表示される。そして、この操作表示画面上の各画面部品の表示内容(温度等の数値表示やランプの点灯/消灯など)は、通信プログラム23による各接続機器4との通信結果(上記“取得データ”等)等に基づいて、随時、更新等されるものである。更に、本体プログラム21には上記ロジックプログラムが含まれており、CPU11は、このロジックプログラムも実行することで、ユーザが作成した任意の処理も実行する。
【0054】
上記画面データ22は、例えば予め作画エディタ装置5側で任意に作成された画面データファイル32の一部または全部が、プログラマブル表示器1にダウンロードされて格納されたものである。尚、画面データファイル32と画面データ22とを特に区別せずに、画面データ22と呼ぶ場合もあるものとする。
【0055】
また、上記通信プログラム23も、例えば予め作画エディタ装置5側に格納されていた通信プログラムファイル33の一部が、プログラマブル表示器1にダウンロードされて格納されたものである。
【0056】
上述したように、基本的には、CPU11が、本体プログラム21と画面データ22と上記外部メモリからの“取得データ”等に基づく上記操作表示画面の表示制御を行う。例えば、数値表示やランプ等のアイテムに関して、定期的に、そのアイテムの割当メモリ領域からデータを読み出して、そのアイテムの表示内容を当該読出データに基づいて更新する。あるいは、例えばスイッチ等のアイテムに関しては、ユーザが、この操作表示画面上の所望のスイッチをタッチすると(ON/OFF操作すると)、スイッチON画像表示/スイッチOFF画像表示が行われる。
【0057】
また、CPU11は、このスイッチ操作に応じた接続機器4の制御も行う。例えば、スイッチに対応する割当メモリ領域の格納データ(スイッチのON/OFFを示すフラグ等)を、スイッチ操作に応じて更新する。これによって、接続機器4側の不図示コントローラ等が、このフラグに応じた動作を実行する。
【0058】
尚、既に従来で述べたように、上記外部メモリは、接続機器4が備えるメモリデバイスであって、各アイテムのメモリ割当が行われるメモリデバイスである。上記のように、各アイテムの表示内容は、この割当メモリ領域の格納データに基づいて決定・更新される。
【0059】
そして、従来で述べたように、この割当メモリ領域からの読出しデータを、プログラマブル表示器1内の上記内部メモリに一時的に格納し、これに基づいてアイテム表示制御を行う構成例がある。
【0060】
本例では、例えば後述する各通信処理部63等によって定期的に、接続機器4内のメモリデバイス(外部メモリ)の所定の記憶領域からデータを読み出して、この読出データ(上記“取得データ”)を内部メモリ(後述する共有メモリ55)に格納する処理が行われる。そして、例えば後述するアイテム処理部62によって、上記内部メモリの格納データ等に基づいて、上記操作表示画面の表示制御が行われることになる。これによって、操作表示画面の表示内容は、各アイテムに対応する割当メモリ領域の現在の格納データの内容を反映させたものとなる(現在の制御対象の状態等に応じた表示内容となる)。
【0061】
また、支援装置5の作画エディタ31は、開発者等が所望の画面データファイル32を作成するのを支援する機能を有する。また、支援装置5は、予め記憶される各種通信プログラム群である通信プログラムファイル33から、任意の1以上の通信プログラムをプログラマブル表示器1にダウンロードして、上記通信プログラム23として記憶させる機能も有する。但し、これらの支援装置5の機能は、既存機能であり、ここではこれ以上説明しない。
【0062】
尚、作画エディタ装置5は、例えばパソコン等であり、特に図示しないが一般的な汎用コンピュータの構成(CPU、記憶部(ハードディスク、メモリ等)、通信部、操作部(マウス等)、ディスプレイ)を有している。記憶部に予め記憶されているアプリケーションプログラムを、CPUが実行することにより、上記既存機能が実現される。
【0063】
図4、
図5は、本例のプログラマブル表示器1の処理機能図(1/2)、(2/2)である。尚、以下、特に区別せずに、“
図4等”などと記すものとする。
プログラマブル表示器1には、画面データ22等が記憶される。
【0064】
CPU11が、例えば上記ROM12に記憶されている所定のプログラム(例えば上記本体プログラム21、通信プログラム23等)を実行することにより、例えば
図4等において点線内に示す各種処理機能部が実現される。すなわち、図示のアイテム生成部61、アイテム処理部62、通信処理部63(63−1、63−2等)、ロジック処理部64、アイテム処理スケジュール部65、共有メモリ生成処理部66、ロジック処理スケジュール部67、ロジック指令生成部68、最適コマンド生成部69、格付け判定処理部70等の各種処理機能部の処理機能が実現される。
【0065】
尚、これら各種処理機能部61〜70のうち、処理機能部61〜63、65〜69は、基本的には従来と略同様の処理を行うものと見做して構わない。但し、後述するサイクリックアクセスカウンタ85、突発頻度アクセスカウンタ86、格上げ判定フラグ87の何れかにに係わる処理が、実行される場合もある。後述するサイクリックアクセスカウンタ85、突発頻度アクセスカウンタ86、格上げ判定フラグ87は、基本的には従来では存在しない情報である。よって、基本的に、これらカウンタやフラグに係わる処理は、本手法による新規の処理と見做して構わない。
【0066】
また、ロジック処理部64も、基本的な処理機能は、従来と略同様と見做しても構わない。但し、ロジック処理部64の機能の一部である後述する突発メモリアクセス部64aは、従来とは異なる。
【0067】
格付け判定処理部70は、従来では存在しない処理機能部である。
尚、通信処理部63は、本体プログラム21と通信プログラム23とによって実現される。通信処理部63以外の処理機能部は、基本的には本体プログラム21によって実現されるが、この例に限るわけではない。
【0068】
アイテム生成部61は、上記画面データ22等に基づいて、アイテムリスト51を生成する。これは、例えば、画面データ22の一部をコピーする形で生成する(更に後述する処理済みフラグ118を追加する)。
【0069】
共有メモリ生成処理部66は、上記アイテム生成部61によって生成されたアイテムリスト51に応じたデータ(アクセス先など)を、共有メモリ55に格納する。換言すれば、共有メモリ55の各格納データ(各アクセス先など)を更新する。
【0070】
尚、上記アイテムリスト51や共有メモリ55の格納データは、例えば、現在表示中の操作表示画面(スクリーン)上の各アイテムに対応したものとなる。よって、スクリーン切替えが行われる毎に、再生成されることになる。また、共有メモリ55には、更に、ロジック処理に伴うアクセス先などのデータも、格納されることになる。詳しくは後述する。
【0071】
共有メモリ55には、上記現在表示中の操作表示画面(スクリーン)上の各アイテムに応じた上記“取得データ”が、通信処理部63によって格納される(サイクリックに更新される)。
【0072】
通信処理部63は、各接続機器4(4−1、4−2)毎に備えられる通信処理部63−1、63−1である。すなわち、図示の通信処理部63−1は、接続機器4−1に対応する通信ポートWAY1を使用して、通信ライン6を介して、接続機器4−1との通信を行って、その外部メモリの所定領域(割当メモリ領域)の格納データを取得する。そして、この“取得データ”を、共有メモリ55の該当領域に上書き格納する。
【0073】
同様に、図示の通信処理部63−2は、接続機器4−2に対応する通信ポートWAY2を使用して、通信ライン6を介して、接続機器4−2との通信を行って、その外部メモリの所定領域(割当メモリ領域)の格納データを取得する。そして、この“取得データ”を、共有メモリ55の該当領域に上書き格納する。
【0074】
上記各通信処理部63による上記外部メモリからのデータの取得処理と当該“取得データ”による共有メモリ55の格納データの更新処理は、定期的に(サイクリックに)実行される。
【0075】
ここで、本例の通信処理部63は、最適コマンドリスト54(54−1,54−2)に基づいて、上記割当メモリ領域の格納データを取得する処理を行う。最適コマンドリスト54は、最適コマンド生成部69が、共有メモリ55に基づいて各接続機器4に応じて生成する。図示の最適コマンドリスト54−1は接続機器4−1に応じたものであり,最適コマンドリスト54−2は接続機器4−2に応じたものである。
【0076】
最適コマンド生成部69は、例えば上記特許文献1,2等(特開2009−54056号公報、特開2009−54055号公報など)に開示されている既存の処理(上述したアドレスの連結など)を行う機能部であるので、ここでは特に説明しない。
【0077】
但し、簡単に説明するならば、共有メモリ55に格納されている各アイテム毎のアクセス先(割当メモリ領域)を、まとめてアクセスするようにアクセス先を生成するものである。例えば、アイテムA,B,Cがあり、それぞれ、D101番地、D105番地、D108番地が割当メモリ領域である場合、D101番地〜D108番地までの領域を、まとめて1つのアクセス先として最適コマンドリスト54に格納するものである。
【0078】
当然、この処理では、不要なデータも取得することになるので、必要なデータ(D101番地、D105番地、D108番地の各データ)のみを選別して共有メモリ55の該当領域に格納する。そして、不要なデータは捨てる。
【0079】
通常、通信ライン6を介した接続機器4との通信処理に時間が掛かるものであり、従って、取得するデータ量が多少増えて選別処理が加わったとしても、処理時間は短縮されることになる。
【0080】
但し、上記のようにアドレスをひとまとめにして通信回数を減らすことで、必ずしも処理時間が短縮されるとは限らないので、最適コマンドリスト54の生成は必須でない。しかし、最適コマンドリスト54を生成しない場合でも、本手法では、後述するロジック処理に係わる外部メモリアクセスを、アイテム表示に係わるサイクリックな外部メモリアクセスに含める場合がある。
【0081】
尚、上記の通り、通信処理部63や最適コマンドリスト54(更に後述するコマンドリスト53等)は、各接続機器4に応じて設けられる。よって、接続機器4が複数ある場合には、通信処理部63や最適コマンドリスト54等も複数設けられることになる。しかし、本説明では、通信処理部63や最適コマンドリスト54等について、各接続機器4(4−1,4−2)毎に説明せずに、まとめて説明するものとする。
【0082】
尚、最適コマンド生成部69は、基本的には、例えばスクリーン切替えに伴ってアイテムリスト51が更新され、更にこれに伴って共有メモリ55が更新されたときに、当該新たな共有メモリ55の格納内容に応じた新たな最適コマンドリスト54を生成するものである。換言すれば、基本的には、このとき以外は最適コマンドリスト54の内容は変化しないものとする。但し、本手法では、格付け判定処理部70によって最適コマンドリスト54の内容が変化する場合がある。例えば後述するロジック処理部64等によるアクセス先が、最適コマンドリスト54に追加される場合がある。尚、その際に、最適コマンド生成部69によってロジック処理部64等によるアクセス先も含めた最適化処理(上記アドレスの連結等;アドレスをひとまとめにする等)を行って、最適コマンドリスト54を再生成することが望ましい。詳しくは後述する。
【0083】
アイテム処理部62は、上記共有メモリ55の格納データ(“取得データ”)等に基づいて、各アイテム毎に、その表示内容の更新(例えばON用画像/OFF用画像切替)等に係わる処理を実行する。つまり、アイテム処理部62は、例えば直近の上記割当メモリ領域からの取得データ等に基づいて、上記表示操作画面の表示内容を決定・更新する。
【0084】
上記アイテム処理部62の処理も、定期的に行うものであり、そのスケジュール管理はアイテム処理スケジュール部65が行う。すなわち、アイテム処理スケジュール部65は、アイテム処理部62による各アイテムの表示更新処理等のスケジュール管理を行う。つまり、アイテム処理スケジュール部65は、例えば定期的にアイテム処理部62を呼び出して例えば後述する
図8の処理を実行させる(換言すれば、
図8の処理をサイクリックに実行させる)。
【0085】
以上、主に表示操作画面上の各アイテムの表示内容の決定・更新処理(リフレッシュ処理)に係わる処理機能部、データ等について説明した(但し、格付け判定処理部70は除く)。
【0086】
一方、上記の通り、CPU11は、上記ロジック処理も実行する。このロジック処理実行に係わる処理機能部、データ等が、図示のロジック処理部64、ロジック処理スケジュール部67、ロジック指令生成部68、ロジック指令リスト52、コマンドリスト53(53−1、53−2)等である。
【0087】
上記ロジック処理実行に係わる処理機能部、データ等は、基本的に、ロジック処理部64以外は従来と略同様であってよいので、以下、簡単に説明する。
ロジック指令生成部68は、任意のロジックプログラムに関して、任意のアクセス先(任意の接続機器4の任意の外部メモリデバイスの任意のアドレス)のデータに基づく処理(例えば分岐処理;if〜then〜else文など)に係わる情報を、ロジック指令リスト52に格納する。ロジック指令リスト52については具体例を後に示して説明する。
【0088】
ロジック処理部64は、ロジック処理スケジュール部67によるスケジュール管理の元で、ロジック指令リスト52に応じたデータ取得処理等を行う。例えば、ロジック指令リスト52に格納された上記アクセス先を、共有メモリ55に格納すると共に、当該アクセス先に基づくコマンドを生成してコマンドリスト(FIFO)53に格納する。
【0089】
尚、以下の説明における「アクセス処理」とは、基本的に「外部メモリへのアクセス処理」を意味するものとする。同様に、「アクセス先」とは、基本的に「任意の接続機器4の任意の外部メモリデバイスの任意のアドレス」を意味するものとする。
【0090】
ここで、本例の通信処理部63は、上記最適コマンドリスト54に基づくアクセス処理だけでなく、コマンドリスト53に基づくアクセス処理も実行する。すなわち、コマンドリスト53に何らかのコマンド(例えば、後述するコマンド130等)が格納されている場合には、このコマンドを取り出して、このコマンドに基づくアクセス処理を行う。そして、アクセス処理結果(アクセス先からの“取得データ”)を、共有メモリ55の該当領域に格納する。
【0091】
ロジック処理部64は、通信処理部63によって上記“取得データ”が上記共有メモリ55の該当領域に格納されるのを待ち、格納されたら、当該取得データに基づく上記処理(例えば分岐処理等)を実行する。特に分岐処理の場合、thenとelseのどちらを実行するのかは、上記取得データが得られるまで分からないので、それまで待つことになる。この為、待機時間が長くなる場合もあり得る。また、この様なロジック処理に伴う不定期の(突発的な)アクセス処理が頻繁に行われると、上記リフレッシュ処理に係わるアクセス処理に影響し、表示内容更新に時間が掛かる場合にあり得る。
【0092】
これより、本手法では、ロジック処理に伴う不定期の(突発的な)アクセス処理のアクセス先のなかに、頻繁にアクセス処理が行われるアクセス先がある場合には、このアクセス先が最適コマンドリスト54に含まれるようにする。これによって、このアクセス先に関しては、ロジック処理に伴う不定期の(突発的な)アクセス処理の発生の有無に関係なく、上記サイクリックなアクセスが行われて取得データが共有メモリ55の該当領域に格納されることになる。
【0093】
そして、ロジック処理部64は、アクセス先への不定期の(突発的な)アクセス処理が発生した場合、共有メモリ55の該当領域の格納データを取得することになる。これによって上記待機時間が殆ど掛からなくなると共に、上記リフレッシュ処理に係わるアクセス処理の邪魔をすることもない。よって、アイテム表示内容の更新処理が遅くなることもない。
【0094】
尚、ロジック処理部64には、不図示の後述する突発メモリアクセス部64aの処理機能も含まれるものとする。これより、ロジック処理部64は、後述する
図10、
図11の処理だけでなく、後述する
図12、
図13の処理も行うものとする。詳しくは後述する。
【0095】
以下、上記各種処理機能部や各種データについて、更に詳しく説明する。
まず、通信処理部63について、その詳細な処理例について説明する。
図6、
図7は、各通信処理部63(63−1、63−2)が、それぞれ、例えば定期的に(サイクリックに)実行する外部メモリアクセス処理のフローチャート図(1/2)、(2/2)である。尚、以下、特に区別せずに“
図6等”などと記すものとする。
【0096】
図6等に示す処理例では、基本的には、上記リフレッシュ処理に係わるサイクリックな通信処理を実行するが、上記ロジック処理に係わる不定期の(突発的な)通信処理が必要な状況では当該通信処理を行う。尚、不定期な(突発的な)通信処理が必要な状況とは、例えば上記コマンドリスト53に何等からのコマンド(アクセス先を示すもの;例えば後述するコマンド130等)が格納されたときである。
【0097】
尚、
図6等に示す通信処理部63の処理自体は、既存技術であってよい。また、当該処理に係わる各種データ(最適コマンドリスト54、共有メモリ55、後述する
図19に示す例のコマンド130)も、そのデータ構造自体は既存技術であってよい。但し、データの内容が、既存技術とは異なる場合がある。つまり、最適コマンドリスト54には、上記サイクリックな通信処理に係わるアクセス先だけでなく、上記突発的な通信処理に係わるアクセス先も含まれる場合がある。詳しくは後述する。
【0098】
上記サイクリックな通信処理に関しては、まず、最適コマンドリスト54から任意のメモリアクセスコマンドを取得する(ステップS11)。これは、例えば、最適コマンドリスト54内の不図示の実行indexをキーにして該当するコマンドを取り出す。
【0099】
ここで、
図19に、上記コマンドのデータ構造例を示す。尚、最適コマンドリスト54やコマンドリスト53は、例えば
図19に示すようなコマンド130をリスト化したものである。
【0100】
図19に示す例のコマンド130は、コマンド種別131、メモリブロック数132、各メモリブロック133(N個のメモリブロック133)等から成る。
コマンド種別131は、例えば一例しては、“ブロックリード”、“複数ブロックリード”等である。これらも既存技術であるので、特に詳細には説明しないが、簡単に説明するならば、下記の通りとなる。
・ブロックリード;任意の先頭アドレスとデータ数を指定するコマンド。先頭アドレスからデータ数分の領域のデータが取得されることになる。メモリブロック数132は固定的に‘1’となる。
・複数ブロックリード;ブロックリードを拡張したコマンドであり、複数のアクセス先を指定可能。つまり、メモリブロック数132は‘2’以上となる。
【0101】
メモリブロック数132は、メモリブロック133の数である。
各メモリブロック133は、例えば図示の例では、ポート141、デバイス142、アドレス143、データ数144の各データ項目より成る。ポート141とデバイス142とアドレス143が、アクセス先(例えば上記割当メモリ領域の先頭アドレス)を示すものである。つまり、ポート141は、アクセス先の接続機器4に対応するポートの識別番号等である。デバイス142は、アクセス先の接続機器4内のアクセス先のメモリデバイスの識別情報等である。アドレス143は、当該メモリデバイスにおけるアクセス先の記憶領域の先頭アドレス等である。
【0102】
そして、当該先頭アドレスからデータ数144分の領域が、アクセス先の記憶領域を意味し、当該記憶領域の格納データが読み出されることになる。
すなわち、
図7等の処理において、上記ステップS11の処理で取得したコマンド130を、アクセス先の接続機器4に送信することで(ステップS12)、接続機器4側では上記各メモリブロック133が示す上記アクセス先の記憶領域から、格納データを読出して返信する。この返信を受信すると(ステップS13)、この返信に含まれる“取得データ”(上記アクセス先の記憶領域から読み出したデータ)を、共有メモリ55の該当領域に格納する(ステップS14)。この処理自体は、従来と同様であってよいが、本例の場合、上記“取得データ”には、上記アイテム表示の為のサイクリックな通信処理に係わるデータだけでなく、上記突発的な通信処理に係わるデータも含まれる場合がある。
【0103】
最後に、例えば上記最適コマンドリスト54内の不図示の実行indexを、次のコマンドへと進める(ステップS15)。つまり、次の処理対象のコマンド130を指定しておく。
【0104】
続いて、コマンドリスト53に格納されている1以上のコマンド130群から先頭のコマンド130を取得する(ステップS16)。但し、コマンドリスト53にコマンド130が1つも無い場合には(ステップS17,NO)、本処理を終了する。
【0105】
コマンドリスト53から任意の1つのコマンド130を取得できた場合には(ステップS17,YES)、当該処理対象のコマンド130についても、上記最適コマンドリスト54から取得したコマンド130に係わるステップS12,S13,S14の処理と略同様の処理を行う(ステップS18,S19,S20)。
【0106】
すなわち、上記ステップS16で取得したコマンド130を、アクセス先の接続機器4に送信することで(ステップS18)、接続機器4側ではアクセス先の記憶領域から格納データを読出して返信する。この返信を受信すると(ステップS19)、この返信に含まれる“取得データ”を、共有メモリ55の該当領域に格納する(ステップS20)。
【0107】
そして、最後に、上記処理対象のコマンド130の要求元(例えばロジック処理部64)に対して、完了を通知する(ステップS21)。この完了通知を受けたロジック処理部64等は、共有メモリ55から上記ステップS20で格納されたデータ等を読み出すことになる。
【0108】
ここで、
図16(a)には共有メモリ55のデータ構造例を示す。
図16(a)に示す例では、共有メモリ55の格納データは、ポート81、デバイス名82、アドレス83、データ84、サイクリックアクセスカウンタ85、突発頻度アクセスカウンタ86、格上げ判定フラグ87の各データ項目より成る。
【0109】
これらのうち、ポート81、デバイス名82、アドレス83、データ84は、従来と同様であってよく、以下、簡単に説明する。
ポート71は、上記通信ポートの識別情報等であり、実質的には通信相手の接続機器4を識別する情報となる。デバイス72は、通信相手の接続機器4内のメモリデバイス(外部メモリ)の識別情報である。アドレス73は、デバイス72が示す外部メモリにおける所定の記憶領域のアドレスであり、データ74にはこの記憶領域から取得したデータが格納される。尚、ポート71とデバイス名72とアドレス73とが、各アイテムの上記“割当メモリアドレス”に相当すると見做してよい。
【0110】
上記従来のデータ項目に加えて、本例では上記サイクリックアクセスカウンタ85、突発頻度アクセスカウンタ86、格上げ判定フラグ87が設けられている。これらについては後に説明するが、ここでは概略的に説明するものとする。
【0111】
まず、共有メモリ55には、上記リフレッシュ処理に係わるアクセス先や当該アクセス先からの取得データ等が格納されるが、上記突発的なアクセス処理に係わるアクセス先や当該アクセス先からの取得データ等も格納される。そして、上記リフレッシュ処理に係わるレコードに関しては、サイクリックアクセスカウンタ85には強制的に所定の値(+1等)が記憶されると共に、突発頻度アクセスカウンタ86と格上げ判定フラグ87は使用されない。一方、上記突発的なアクセス処理に係わるレコードに関しては、サイクリックアクセスカウンタ85には強制的に‘0’等が記憶されると共に、突発頻度アクセスカウンタ86と格上げ判定フラグ87が使用される。
【0112】
ここで、これらカウンタ86やフラグ87の使用方法について簡単に説明するならば、任意の上記突発的なアクセス処理が実行される毎に、対応するレコードの突発頻度アクセスカウンタ86をカウントアップする。そして、カウンタ86の値が所定の閾値を超えた場合、格上げ判定フラグ87をフラグONする。そして、上記サイクリックな通信処理の処理対象を、サイクリックアクセスカウンタ85が所定値(+1等)であるレコードだけでなく、格上げ判定フラグ87がフラグONであるレコードも含まれるものとする。
【0113】
尚、上記突発頻度アクセスカウンタ86は定期的にリセットされる。これより、上記突発的なアクセス処理であっても、所定期間内にカウンタ86の値が上記閾値を超えるアクセス、すなわち頻繁に実行されるアクセスである場合には、サイクリックなアクセス処理に含めるようにする。そして、従来と同様、本手法では、サイクリックなアクセス処理に関しては最適化が行われる。これによって、突発的なアクセス処理を含めた外部メモリアクセス処理全体のアクセス効率が向上する。但し、この例に限らない。最適化が行われることなく、上記突発的なアクセス処理が単にサイクリックなアクセス処理に含まれるようにしてもよい。
【0114】
次に、
図8を参照して、アイテム処理部62の処理について説明する。
図8は、アイテム処理部62の処理フローチャート図である。
アイテム処理部62は、上記のようにアイテム処理スケジュール部65によって定期的に呼び出されて、
図8の処理を実行するものである。
【0115】
図示の処理例では、まず、アイテムリスト51の全レコードの処理済みフラグ119を初期化(フラグOFF)する(ステップS31)。
ここで、
図17(b)に、アイテムリスト51のデータ構成図を示す。
【0116】
図示の例のアイテムリスト51は、アイテムタイプ111、座標112、サイズ113、ポート114、デバイス名115、アドレス116、アイテムタイプ毎のデータ117、処理済みフラグ118の各データ項目より成る。アイテムリスト51の各レコードが、操作表示画面の各アイテムに対応するものである。尚、図示の例に限らず、更に各アイテムの識別番号等があってもよい。
【0117】
アイテムタイプ111には、そのアイテムの種別(スイッチ、ランプ、数値表示等)を示すアイテム種別識別情報が格納される。
また、ポート114とデバイス名115とアドレス116は、各アイテムに関するメモリ割当情報であり、上記割当メモリアドレスに相当する。つまり、ポート114に対応する接続機器4内のデバイス名115が示す外部メモリにおけるアドレス116が示す記憶領域が、そのアイテムに割り当てられた領域(上記割当メモリ領域)である。この割当メモリ領域の格納データが、そのアイテムに係わる制御/監視対象等の現在の状態を示すものである。例えばアイテムタイプ111がランプであれば、ランプの点灯/消灯を示すフラグデータ等が上記格納データである。
【0118】
アイテムタイプ毎のデータ117は、例えばそのアイテムの画像(例えば、ランプON画像とランプOFF画像等)である。座標62とサイズ63は、このアイテム画像の表示位置と大きさを示すものである。
【0119】
図8の説明に戻る。
上記ステップS31の処理に続いて、アイテムリスト51から任意の未処理のアイテム(その処理済みフラグ119がOFFであるレコードに係わるアイテム)を、処理対象アイテムとする(ステップS32)。そして、共有メモリ55において上記処理対象アイテムに対応する該当レコードのデータ84等を、メモリ情報71として取得する(ステップS33)。
【0120】
尚、例えば、そのポート81とデバイス名82とアドレス84が、上記処理対象アイテムのポート114とデバイス名115とアドレス116と同一であるレコードが、上記該当レコードである。
【0121】
ここで、
図17(a)に上記メモリ情報71の一例を示す。
図示の例のメモリ情報71は、データ101、サイクリックアクセスカウンタ102、突発頻度アクセスカウンタ103、格上げ判定フラグ104等から成る。これらは、例えば上記該当レコードのデータ84、サイクリックアクセスカウンタ85、突発頻度アクセスカウンタ86、格上げ判定フラグ87をコピーしたものである。
【0122】
但し、上記の例に限らず、例えばメモリ情報71は上記データ101のみであっても構わない。
そして、上記取得したメモリ情報71等を用いて、上記処理対象アイテムに係わる表示を行う(ステップS34)。勿論、その際には、アイテムリスト51における上記処理対象アイテムのデータ(座標112やサイズ113やアイテム画像等)も用いて、表示処理を行うことになる。
【0123】
最後に、アイテムリスト51における上記処理対象アイテムのレコードの処理済みフラグ118を処理済み(フラグON)にする(ステップS35)。そして、アイテムリスト51に未処理のアイテムが残っている場合には(ステップS36,YES)、ステップS32に戻る。アイテムリスト51の全レコード(全アイテム)について上記ステップS32〜S35の処理を実行したら(ステップS36,NO)、本処理を終了する。
【0124】
次に、共有メモリ生成処理部66について説明する。
図9は、共有メモリ生成処理部66の処理フローチャート図である。
共有メモリ生成処理部66は、例えば、アイテム生成部61から呼び出される毎に、
図9の処理を実行する。アイテム生成部61は、例えば画面データ22に基づいてアイテムリスト51に新規リスト(新規レコード)を生成する毎に、共有メモリ生成処理部66を呼び出す。その際、アイテム生成部61は、上記生成した新規リスト(新規レコード)を示す情報(ポインタ)等を、共有メモリ生成処理部66に渡す。
【0125】
これより、共有メモリ生成処理部66は、アイテムリスト51における上記生成した新規リスト(新規レコード)を参照して、そのポート114、デバイス名115、アドレス116等を取得する(ステップS51)。
【0126】
そして、この取得データに基づいて、該当するレコードが既に共有メモリ55に登録済みか否かを判定する(ステップS52)。例えば、共有メモリ55において、そのポート81、デバイス名82、アドレス83が、上記取得したポート114、デバイス名115、アドレス116と同一であるレコードが存在する場合には、登録済みと判定する(ステップS52、YES)。この場合には、ステップS53の処理を行うことなく、ステップS54の処理へ移行する。
【0127】
一方、登録済みではない場合には(ステップS52、NO)、共有メモリ55に上記該当するレコードを追加登録する(ステップS53)。すなわち、共有メモリ55に新規レコードを追加して、そのポート81、デバイス名82、アドレス83に、上記ステップS51で取得したポート114、デバイス名115、アドレス116の各データを格納する。そして、ステップS54の処理へ移行する。
【0128】
ステップS54では、共有メモリ55における上記登録済みのレコードまたは上記ステップS53で追加したレコードにおける上記サイクリックアクセスカウンタ85を更新(+1など)する(更新ではなく、強制的に所定値(ここでは‘1’)にするものと見做してもよい)。これによって、例えば後述するステップS72の判定はNOとなる。そして、本処理を終了する。
【0129】
次に、ロジック処理部64の処理について説明する。
図10、
図11は、ロジック処理部64の処理フローチャート図(1/2)、(2/2)である。尚、以下、特に区別せずに“
図10等”などと記すものとする。
【0130】
尚、ここでは、上記の通り、ロジック処理部64は、後述する
図12、
図13の処理も行うものとする。
図10等に示す処理例では、まず、ロジック指令リスト52の全レコードの処理済みフラグ127を、初期化(フラグOFF)する(ステップS41)。
【0131】
ここで、ロジック指令リスト52について説明する。
図18は、ロジック指令リスト52の具体例である。
図示の例のロジック指令リスト52は、実行条件121、ポート122、デバイス名123、アドレス124、命令行数125、各命令126、処理済みフラグ127、指令メモリ前回値128等のデータ項目を有する。
【0132】
ポート122とデバイス名123とアドレス124が、アクセス先を示すものである。すなわち、ポート122に対応する接続機器4内のデバイス名123が示す外部メモリデバイスにおけるアドレス124が示す記憶領域が、アクセス先である。これは、外部メモリへのアクセスを伴う任意のロジック処理に係わるアクセス先(以下、指令メモリと呼ぶ場合もあるものとする)である。そして、当該任意のロジック処理に係わる命令が、各命令126に1行ずつ格納される。そして、この命令126の数(行数)が、命令行数125に格納される。
【0133】
そして、実行条件121には、上記各命令126を実行する為の条件が格納される。これは、基本的に、上記アクセス先の格納データに基づく条件となる。例えば、上記アクセス先の格納データが1ビットのフラグである場合、例えば、フラグOFF状態からフラグON状態への切り替わりが、実行条件121となる。この例では、例えば、ロジック処理部64は、上記アクセス先のフラグが、OFFからONに切り替わったと判定した場合に、上記各命令126を実行することになる。
【0134】
上記実行条件121に係わる判定には、例えば指令メモリ前回値128が用いられる。すなわち、後述するように、ロジック処理部64は、上記アクセス先の格納データを新たに取得する毎に、この取得データと指令メモリ前回値128とに基づいて上記判定を行う。例えば取得データがフラグONで且つ指令メモリ前回値128がフラグOFFの場合に、OFFからONに切り替わったと判定する。また、判定結果に関係なく、上記アクセス先の格納データを新たに取得する毎に、この取得データを新たな指令メモリ前回値128として格納する。
【0135】
尚、上記ロジック指令リスト52における各レコード(特にその実行条件121、ポート122、デバイス名123、アドレス124、命令行数125、各命令126等)は、ロジック指令生成部68が生成する。これは、例えば任意のロジックプログラムに基づいて生成する。この生成処理自体は、既存の処理であり、ここでは特に図示・説明はしないものとする。そして、ロジック処理部64が、上記生成されたロジック指令リスト52等を用いて
図10等の処理を実行する。
図10等の説明に戻る。
【0136】
上記ステップS41の処理を実行したら、上記ロジック指令リスト52の各レコードを順次処理対象として図示のステップS42−ステップS46間の処理を繰り返す。
すなわち、上記ロジック指令リスト52から未処理のレコード(ロジック指令)を参照して(ステップS42)、例えばそのアクセス先(指令メモリ)を認識して、共有メモリ55から、当該アクセス先から取得・格納されたデータであるデータ84を取得する(ステップS43)。すなわち、例えば、共有メモリ55においてそのポート81、デバイス名82、アドレス83が、上記処理対象のポート122、デバイス名123、アドレス124と同一であるレコードにおけるデータ84を、取得する。
【0137】
そして、取得したデータ84と上記指令メモリ前回値128等に基づいて、指令メモリのデータに変化があったか否かを判定する(ステップS44)。例えば上記一例のようにフラグOFFからフラグONの変化(あるいは逆に、フラグONからフラグOFFの変化)等があった場合には、指令メモリのデータに変化があったと判定する(ステップS44,YES)。この場合、更に、上記実行条件121等に基づいて、実行トリガか否かを判定する(ステップS47)。
【0138】
上記一例では、フラグOFFからフラグONの変化であった場合には、実行トリガであると判定し(ステップS47,YES)、ステップS48の処理を実行し、その後、ステップS49の処理を実行することになる。一方、上記一例では、フラグONからフラグOFFの変化であった場合には、実行トリガではないと判定し(ステップS47,NO)、ステップS48の処理を実行することなく、ステップS49の処理を実行することになる。
【0139】
ステップS48の処理は、上記処理対象のロジック指令における上記各命令126を順次実行する処理である(1行目〜N行目までを順次実行する)。そして、各命令126の順次実行に伴って、任意の外部メモリアクセスが発生する毎に、例えばロジック処理部64が有する不図示の突発メモリアクセス部64aによって、後述する
図12等の処理を実行させる。各ロジック指令毎に、ステップS47がYESになるときしかステップS48の処理は行われないので、
図12等の処理による外部メモリアクセスは、不定期の(突発的な)外部メモリアクセス処理となる。尚、アクセス先を示す情報は、例えば、命令126に含まれている。
【0140】
また、ステップS49の処理は、上記処理対象のロジック指令における上記指令メモリ前回値128を、上記ステップS43で取得したデータ84によって更新する処理である。
【0141】
そして、最後に、上記処理対象のロジック指令における上記処理済みフラグ127を処理済み(フラグON)とする(ステップS45)。
そして、上記ロジック指令リスト52に未処理のレコード(ロジック指令)がある場合には(ステップS46,YES)、ステップS42に戻る。未処理のレコード(ロジック指令)がない状態になったら(ステップS46,NO)、本処理を終了する。
【0142】
図12、
図13は、ロジック処理に伴う外部メモリアクセス処理(すなわち、上記不定期の(突発的な)アクセス処理)が生じた際のロジック処理部64の処理フローチャート図(1/2)、(2/2)である。尚、以下、特に区別せずに“
図12等”などと記すものとする。
【0143】
尚、上記の通り、
図12等の処理は、ロジック処理部64が有する不図示の突発メモリアクセス部64aが実行するものと見做してもよい。但し、本説明では、突発メモリアクセス部64aについては特に言及せずに、ロジック処理部64が実行するものと記す場合が多いものとする。
【0144】
図12等に示す処理では、ロジック処理部64は、上記発生した不定期の(突発的な)アクセス処理のアクセス先を認識しており、このアクセス先のデータが共有メモリ55に上記データ84として格納されている場合には(換言すれば、サイクリックなアクセス処理に含まれている場合には)、このデータ84を取得する。これは、例えば、まず、上記アクセス先が共有メモリ55に登録されているか否かを判定する(ステップS61)。これは、例えば、そのポート81、デバイス名82、アドレス83が、上記アクセス先(そのポート、デバイス名、アドレス)と同一であるレコードが、共有メモリ55に存在する場合には、登録されている(ステップS61,YES)と判定する。
【0145】
そして、もし、上記アクセス先が共有メモリ55に登録されていないならば(ステップS61,NO)、当該アクセス先を共有メモリ55に新規登録する(ステップS62)。これは、例えば、共有メモリ55に新規レコードを追加して、当該新規レコードのポート81、デバイス名82、アドレス83に、上記アクセス先(そのポート、デバイス名、アドレス)を格納する。また、当該新規レコードのサイクリックアクセスカウンタ85、突発頻度アクセスカウンタ86、格上げ判定フラグ87は、予め決められた初期状態に設定する。すなわち、例えば、サイクリックアクセスカウンタ85と突発頻度アクセスカウンタ86は初期値‘0’に設定する。格上げ判定フラグ87はフラグOFFに設定する。
【0146】
次に、共有メモリ55から、該当レコード(上記アクセス先に係わる登録済みレコードまたは上記新規レコード)のデータ84、サイクリックアクセスカウンタ85、突発頻度アクセスカウンタ86、格上げ判定フラグ87を、メモリ情報71として取得する。これらは、上記データ101、サイクリックアクセスカウンタ102、突発頻度アクセスカウンタ103、格上げ判定フラグ104として取得される(ステップS63)。
【0147】
そして、上記メモリ情報71に基づいて、サイクリックなアクセス対象か否かを判定する(ステップS64)。これは、ステップS63で取得したメモリ情報71におけるサイクリックアクセスカウンタ102が‘1’以上である場合もしくは格上げ判定フラグ104がフラグONである場合は、サイクリックなアクセス対象であると判定する(ステップS64,YES)。
【0148】
尚、上記該当レコードが上記新規レコードである場合には、当然、ステップS64の判定はNOとなる。
尚、ロジック処理に係わるアクセス先であっても後述する“格上げ”されたものに関しては、ステップS64の判定はYESとなる。つまり、この様なアクセス先に関しては上記サイクリックなアクセス対象に含まれている。よって、上記アイテム表示に係わるサイクリックなアクセス処理と一緒にアクセスしているはずである。詳しくは後述する。
【0149】
サイクリックなアクセス対象である場合には(ステップS64,YES)、ステップS63で取得したデータ84(メモリ情報71におけるデータ101)が、今回のアクセス処理で取得すべきデータであるはずである。つまり、サイクリックなアクセス処理によって上記アクセス先の記憶領域から取得された最新の(直近の)データが、データ84として格納されているはずである。よって、この場合には、取得したデータ84を用いて所定のロジック処理を実行することになる。そして、共有メモリ55における上記アクセス先に係わる登録済みレコードの突発頻度アクセスカウンタ86を更新して(+1インクリメントする)(ステップS68)、本処理を終了する。
【0150】
一方、サイクリックなアクセス対象ではない場合には(ステップS64,NO)、既存のアクセス処理を実行する。すなわち、上記アクセス先(ポート、デバイス名、アドレス)を含む上記コマンド130を生成して、これをコマンドリスト53に追加格納する(ステップS65)。そして、通信処理部63がこのコマンド130について上記
図6等の処理を実行して上記ステップS21のアクセス完了イベント通知を行うのを待つ(ステップS66)。そして、アクセス完了イベント通知を受信したら、そのときには上記該当レコードのデータ84には上記アクセス先の最新の(直近の)データが格納されているはずである。よって、このデータ84を取得して(ステップS67)、取得したデータ84を用いて上記所定のロジック処理を実行することになる。そして、共有メモリ55における上記アクセス先に係わるレコードの突発頻度アクセスカウンタ86を更新して(+1インクリメントする)(ステップS68)、本処理を終了する。
【0151】
上記突発的なアクセスに係わる既存のアクセス処理では、上記ステップS66の待ち時間が非常に長くなる場合もある。これは、例えば、コマンドリスト53に他のコマンド130が既に格納されていて順番待ちを強いられる場合等である。これに対して、上記ステップS64の判定がYESとなる場合には、共有メモリ55から取得したデータ84を用いて直ちにロジック処理を実行することができる。つまり、処理時間を短縮できる。また、コマンドリスト53に格納されるコマンド130に係わる通信処理部63の処理負荷を軽減できる。そして、突発的なアクセス処理によって上記リフレッシュ処理に係わるアクセス処理が邪魔されることが少なくなる。
【0152】
また、ロジック処理に係わるアクセス先であっても後述する“格上げ”されたものに関しては、上記最適コマンド生成部69による最適化の対象となるので、効率よくアクセス先のデータが取得されることが期待できる。詳しくは後述する。
【0153】
上記“格上げ”等は、格付け判定処理部66が行う。
図14、
図15は、格付け判定処理部66の処理フローチャート図(1/2)、(2/2)である。尚、以下、特に区別せずに“
図14等”などと記すものとする。
【0154】
格付け判定処理部66は、
図14等に示す処理を定期的に実行する。
まず、共有メモリ55の各レコードを順次処理対象として、処理対象レコードについてステップS71〜S78の処理を実行することを繰り返す。
【0155】
すなわち、まず、処理対象レコードのデータ84、サイクリックアクセスカウンタ85、突発頻度アクセスカウンタ86、格上げ判定フラグ87を、メモリ情報71として取得する(ステップS71)。但し、以下の説明では、メモリ情報71の上記‘101’、‘102’等の符号を用いることなく、上記‘84’、‘85’等の符号をそのまま用いるものとする。
【0156】
上記メモリ情報71を用いて、まず、格付け対象か否かを判定する(ステップS72)。上記ロジック処理に伴う突発的なアクセスに係わるレコードが、格付け対象となる。よって、上記処理対象レコードのサイクリックアクセスカウンタ85が‘1’以上である場合には、処理対象レコードは上記リフレッシュ処理に係わるレコードであることになるので、格付け対象ではないと判定する(ステップS72,NO)。
【0157】
一方、サイクリックアクセスカウンタ85が‘1’未満である(本例では‘0’である)場合には、処理対象レコードは格付け対象であると判定し(ステップS72,YES)、続いて、処理対象レコードが格上げ対象であるか否かを判定する(ステップS73)。これは、例えば、処理対象レコードの突発頻度アクセスカウンタ86の値が、予め設定される第1の閾値以上である場合には、格上げ対象であると判定する(ステップS73,YES)。そして、この場合には(ステップS73,YES)、処理対象レコードの格上げ判定フラグ87をフラグONすることで“格上げ”する(ステップS74)。そして、ステップS77の処理へ移行する。
【0158】
尚、ここでは“格上げ”とは、処理対象レコードに係わる突発的なアクセス処理が、上記リフレッシュ処理に係わるサイクリックなアクセス処理に含まれるようにすることを意味する。
【0159】
また、処理対象レコードが格上げ対象ではないと判定された場合(ステップS73,NO)、処理対象レコードが格下げ対象であるか否かを判定する(ステップS75)。これは、例えば、処理対象レコードの突発頻度アクセスカウンタ86の値が、予め設定される第2の閾値未満である場合には、格下げ対象であると判定する(ステップS75,YES)。そして、この場合には(ステップS75,YES)、処理対象レコードの格上げ判定フラグ87をフラグOFFすることで“格下げ”する(ステップS76)。そして、ステップS77の処理へ移行する。
【0160】
つまり、本例では、処理対象レコードに係わる突発的なアクセス処理が、サイクリックなアクセス処理に含まれる状態となった後、ずっとこの状態を維持するとは限らず、サイクリックなアクセス処理から除外する場合(つまり“格下げ”する場合)もあり得るものとしている。尚、それ故に、上記の通り、ステップS64がYESとなる場合であっても、ステップS68の処理(突発頻度アクセスカウンタ86を更新(+1)する処理)を実行している。
【0161】
尚、上記第1の閾値と第2の閾値の値は、任意に設定してよいが、「第1の閾値≧第2の閾値」の条件を満たすように設定することが望ましい。
また、尚、ステップS75の判定がNOの場合には、そのままステップS77の処理へ移行する。尚、格上げ判定フラグ87がフラグOFFであった場合には、強制的にステップS75の判定をNOとするようにしてもよい。
【0162】
図14等の処理は、上記の通り定期的に(所定期間経過毎に)実行されるものであり、その都度、後述するステップS77の処理によって、処理対象レコードの突発頻度アクセスカウンタ86を初期状態(‘0’)に戻している。これより、
図14等の処理の際の突発頻度アクセスカウンタ86の値は、上記所定期間内に突発的なアクセスが生じた回数(各アクセス先毎にロジック処理に伴って
図12等の処理が発生した回数)を、示すものと言える。
【0163】
ここで、任意の所定期間Aとその後の所定期間Bがあるものとする。そして、仮に、所定期間Aにおいては任意のアクセス先に係わる突発的なアクセスの発生頻度が高かった為、所定期間A経過時の
図14等の処理ではステップS74の格上げ処理が実行されたものとする。これより、このアクセス先に関しては、その後の所定期間中の
図12等の処理では、ステップS64がYESとなるが、上記の通りこの場合でもステップS68の処理が実行される。ここで、仮に、所定期間Bにおいては上記アクセス先に係わる突発的なアクセスの発生頻度が低かった場合、所定期間B経過時の
図14等の処理ではステップS76の格下げ処理が実行される場合もあり得ることになる。
【0164】
そして、上述したステップS72,S73,S75の判定結果が何であっても、処理対象レコードの突発頻度アクセスカウンタ86を初期状態(‘0’クリア)にする(ステップS77)。そして、共有メモリ55に未処理のレコードがある場合には(ステップS78,YES)、ステップS71に戻る。
【0165】
共有メモリ55の各レコードを順次、上記処理対象レコードとして、上述した処理を実行し、全てのレコードについて処理実行したら(ステップS78,NO)ステップS79へ移行する。
【0166】
ステップS79、S80の処理は、上記ステップS71〜S78の処理後の共有メモリ55に基づいて、最適コマンドリスト54を再作成するものである。
すなわち、まず、上記ステップS71〜S78の処理後の共有メモリ55に基づいて、サイクリックアクセスメモリリスト72を生成する(ステップS79)。これは、共有メモリ55の各レコードのなかで、所定の条件を満たすレコードを全て抽出して、当該抽出したレコードに基づいてサイクリックアクセスメモリリスト72を生成する。上記所定の条件とは、サイクリックアクセスカウンタ85が1以上であるか、格上げ判定フラグ87がONであることである(どちらか一方を満たせばよい)。
【0167】
尚、ステップS79,S80の処理は、各ポート(接続機器4)を順次処理対象として処理実行するものである。よって、厳密には、上記所定の条件には更に、ポート81が処理対象のポートであることも含まれる。
【0168】
ここで、サイクリックアクセスメモリリスト72の具体例を、
図16(b)に示す。
図16(b)に示す例では、サイクリックアクセスメモリリスト72は、デバイス名91、アドレス92から成る。この例では、上記抽出した各レコードのデバイス名82、アドレス83が、デバイス名91、アドレス92に格納されることになる。
【0169】
そして、生成したサイクリックアクセスメモリリスト72を最適コマンド生成部69に渡す等して、最適コマンド生成部69によって新たな最適コマンドリスト54を生成させる(ステップS80)。尚、最適コマンド生成部69による最適コマンドリスト54の生成処理は、上記特許文献1,2等に開示されている既存技術であるので、ここでは特に説明しないものとする。
【0170】
最後に、未処理のポートがある場合には(ステップS81,YES)、ステップS79に戻り、次の処理対象のポートに関しても上記ステップS79,S80の処理を実行する。そして、全ポートについて処理実行したら(ステップS81,NO)、本処理を終了する。
【0171】
ここで、
図20に、本例のプログラマブル表示器1の処理機能図を示す。
尚、処理機能図は既に
図4等に示しているが、
図20は他の観点から示したものである。
【0172】
図20に示す処理機能図では、プログラマブル表示器1は、ロジック制御部151、外部メモリ参照受付部152、データキャッシュ読込部153、参照頻度更新部154、格付け判定部155、統合部156、サイクリック読取部157、通信処理部158の各処理機能部を有する。尚、これら各種処理機能部は、例えば、上記CPU11が上記ROM12等に予め格納されているアプリケーションプログラムを実行することによって実現される。
【0173】
ロジック制御部151は、任意のロジック処理を実行すると共に、該ロジック処理に伴う任意のアクセス先への不定期な(突発的な)アクセス処理が生じた場合、外部メモリ参照受付部152を介してアクセス先のデータを取得する。これは、例えば、外部メモリ参照受付部152に対して、アクセス先を示す外部メモリ識別子162を渡して、アクセス先からのデータ取得を依頼する。外部メモリ識別子162は、例えば、任意の接続機器4内の任意の外部メモリの任意のアドレス等である。
【0174】
外部メモリ参照受付部152は、この依頼に応じて、データキャッシュ読込部153を介してデータバース160から上記アクセス先のデータ(外部メモリデータ161)を取得して、ロジック制御部151に渡す。更に、参照頻度更新部154によって、データベース160に記憶される上記アクセス先に係わる参照頻度データを更新させる。
【0175】
尚、データベース160は、例えば上記共有メモリ55に相当するものと見做してもよい。そして、データベース160には、例えば、アクセス先、データキャッシュ(アクセス先からの取得データ)、参照頻度、格付け状態等の各種データが記憶される。
【0176】
また、尚、外部メモリ参照受付部152は、上記依頼されたアクセス先がデータベース160に未登録の場合には、当該アクセス先等をデータベース160に登録する。
また、尚、通信処理部158は、基本的に、何らかのデータ取得要求(アクセス処理)に応じて、通信線を介して接続機器4との通信処理を行う処理機能部である。そして、この通信処理によって取得したデータは、要求元に渡すか、あるいはデータベース160に格納する。
【0177】
ここで、外部メモリ参照受付部152は、上記依頼に応じてデータバース160から該当データを取得する処理を、依頼を受けて直ちに行う場合と、通信処理部158によって接続機器4からデータ取得させてデータベース160に格納させた後に行う場合とがある。尚、後者は、既存技術のデータ取得方法と見做しても構わない。尚、これら2つの方法のどちらを行う場合でも、上記参照頻度データの更新は行う。
【0178】
外部メモリ参照受付部152は、上記ロジック制御部151から依頼されたアクセス先が、後述する統合部156によって後述するサイクリックアクセス先群に統合されている場合には、直ちにデータベース160から該当データを取得する。一方、統合されていない場合には、上記依頼されたアクセス先を通信処理部158に渡してデータ取得を要求する。尚、上記統合されているか否かの判定は、例えば上記格付け状態に基づいて行う。例えば、上記格付け状態が後述する格上状態である場合には、統合されていると判定する。
【0179】
上記データ取得要求を受けた通信処理部158は、接続機器4との通信処理を行って上記アクセス先のデータを取得し、この取得データをデータベース160に格納すると共に、データ取得完了を外部メモリ参照受付部152に通知する。
【0180】
この通知を受けた外部メモリ参照受付部152は、データベース160から上記取得データを読出して、これを上記外部メモリデータ161としてロジック制御部151に渡す。
【0181】
また、サイクリック読取部157は、不図示のサイクリックアクセス先群を保持しており、例えばサイクリックに、当該サイクリックアクセス先群の各アクセス先からのデータ取得を、上記通信処理部158を介して行う。不図示のサイクリックアクセス先群は、例えば上記リフレッシュ処理に係わる各アイテム毎のアクセス先である。
【0182】
尚、上記不図示のサイクリックアクセス先群とは、例えば上述したリフレッシュ処理に係わるアクセス先群に相当する。つまり、上記表示画面上の各アイテムに係わるアクセス先群に相当する(特に、上記最適コマンドリスト54に相当するが、この例に限らない)。
【0183】
ここで、格付け判定部155は、例えば定期的に、上記データベース160に登録された各アクセス先毎に、対応する上記参照頻度データに基づいて、格付け判定を行い、判定結果を上記格付け状態として記憶する。格付け状態とは、普通状態と格上状態等である。格付け判定結果は、格上げ、格下げ、現状維持等である。普通状態において格上げと判定された場合には、格上状態に移行する。格上状態において格下げと判定された場合には普通状態に移行する。
【0184】
例えば、参照頻度が所定の第1閾値以上であるならば、格上げと判定する。参照頻度が所定の第2閾値未満であるならば、格下げと判定する。尚、閾値の値は任意に設定してよいが、「第1閾値≧第2閾値」の条件を満たすように設定することが望ましい。
【0185】
外部メモリ参照受付部152は、依頼されたアクセス先の格付け状態が、格上状態である場合には、上述した「直ちにデータベース160から該当データを取得する処理」を行う。一方、普通状態である場合には、上述したように、通信処理部158によるデータ取得を行わせることになる。
【0186】
そして、統合部156は、例えば定期的に(所定期間経過する毎に)、データベース160において上記格付け状態が上記“格上状態”となっているアクセス先を判別する。そして、当該判別したアクセス先を格上状態アクセス先とし、該格上状態アクセス先を上記サイクリックアクセス先群に統合する。これによって、上記ロジック処理に伴うアクセス先であっても、上記リフレッシュ処理等に伴うサイクリックな接続機器4の外部メモリへのアクセス処理と一緒に、まとめて定期的にアクセス処理が行われることになる。そして、サイクリック読取部157は、当該サイクリックなアクセス処理で取得されたデータを、データベース160の該当領域に上書き格納する。
【0187】
尚、統合部156は、格下げと判定されたアクセス先を、上記サイクリックアクセス先群から除外する処理も行うようにしてもよい。
また、尚、サイクリックアクセス先群は、一例として、上記最適コマンドリスト54に相当するものであってもよい。そして、この例の場合には、統合部156は、上記最適コマンド生成部69に相当する処理機能も有するものであってよい。また、この例の場合、格付け判定部155及び統合部156が、上記格付け判定処理部70に相当するものと見做してもよい。
【0188】
但し、上記サイクリックアクセス先群は、必ずしも最適化されたものでなくてもよい。つまり、サイクリックアクセス先群は、単なる上記リフレッシュ処理に係わる各アクセス先の集まりであっても構わない。
【0189】
上述したように、本例のプログラマブル表示器1は、基本的に、表示画面上のアイテム表示のリフレッシュ処理に係わる外部メモリアクセスと、ロジック処理実行に伴う(不定期な;突発的な)外部メモリアクセスとを行うプログラマブル表示器を前提とする。そして、ロジック処理実行に伴う外部メモリアクセスの頻度が高い状態となっても、動作が遅くならないようにできる。
【0190】
すなわち、本例のプログラマブル表示器1では、例えばロジック処理実行に伴う外部メモリアクセスのなかでアクセス頻度が高いアクセス先を、リフレッシュ処理に係わるアクセス先群に統合する。これによって、ロジック処理実行に伴う外部メモリアクセスが、リフレッシュ処理に係わる外部メモリアクセス処理を大きく妨げる事態を抑止できる。
【0191】
特に、ロジック処理実行に伴う外部メモリアクセスのなかでアクセス頻度が高いアクセス先をリフレッシュ処理に係わるアクセス先群に含めたうえで最適化を行って上記最適コマンドリスト54を生成する。これによって、外部メモリアクセスに係わる全体的な処理効率が向上する。
【0192】
更に、ロジック処理実行に伴う突発的な外部メモリアクセスが生じる毎に逐一外部メモリアクセスする必要がなくなるので、ロジック処理に係わる処理効率が向上する。
尚、本例のプログラマブル表示器1は、例えば不図示の下記の処理機能部を有するもの見做すこともできる。
【0193】
・表示画面上の各アイテムに応じた各アクセス先を示すアクセス情報が記憶されるアイテム情報記憶部;
・定期的に、上記アクセス情報に基づいて、上記接続機器内の各アクセス先からデータを取得して内部メモリに記憶する第1データ取得手段;
・任意のロジック処理を実行すると共に、該ロジック処理に伴うアクセス先である不定期アクセス先へのアクセス処理が生じた場合、該不定期アクセス先が上記アクセス情報に統合されているか否かを判定する。そして、該不定期アクセス先が上記アクセス情報に統合されていると判定した場合には、上記内部メモリから該不定期アクセス先に対応するデータを取得するロジック処理実行部;
・所定期間経過する毎に、アクセス頻度が所定の第1閾値以上である上記不定期アクセス先を、格上状態アクセス先とする格付け部;
・上記格上状態アクセス先となっている不定期アクセス先を、上記アクセス情報に統合する統合部;
・上記ロジック処理実行部によって不定期アクセス先がアクセス情報に統合されていないと判定された場合に、接続機器内の当該不定期アクセス先からデータを取得する第2データ取得部;
また、例えば、上記第1データ取得部は、任意の1以上の上記不定期アクセス先が上記アクセス情報に統合されている場合には、該各不定期アクセス先からもデータを取得して上記内部メモリに記憶する。
【0194】
また、例えば、上記ロジック処理実行部は、上記不定期アクセス先が上記アクセス情報に統合されているか否かに係わらず、任意の上記不定期アクセス先へのアクセス処理が生じる毎に、該不定期アクセス先に係わる上記アクセス頻度を更新する。
【0195】
また、例えば、上記格付け部は、上記格上状態アクセス先となっている上記不定期アクセス先に関する上記アクセス頻度が、所定の第2閾値未満である場合には、格下げを行うことで上記アクセス情報に統合させないようにする。
【0196】
また、例えば、上記表示画面上の各アイテムに応じた各アクセス先に基づいて、最適化された上記アクセス情報を生成するアクセス最適化部を更に有するものであってもよい。
この例の場合、例えば、上記統合部は、上記表示画面上の各アイテムに応じた各アクセス先と上記格上状態アクセス先とに基づく上記最適化処理を上記最適化部で実行させることで、上記最適化されたアクセス情報を再生成させる。
【0197】
また、この例の場合、上記第1データ取得部は、該再生成された上記最適化されたアクセス情報に基づいて、上記各アクセス先からのデータ取得と上記内部メモリへ記憶する処理を実行する。上記第1データ取得部によって取得された、上記各アイテムに応じた各アクセス先のデータを用いて、上記表示画面上の各アイテムの表示内容を制御するアイテム表示制御部を更に有するものであってもよい。
【0198】
上記アイテム情報記憶部は、例えばアイテムリスト51に相当すると見做してもよい。
上記第1データ取得手段は、例えば、上記サイクリック読取部157に相当すると見做してもよいし、最適コマンドリスト54及び通信処理部63に相当すると見做してもよい。
【0199】
上記ロジック処理実行部は、例えば上記ロジック処理部64等に相当すると見做してもよいし、上記ロジック制御部151及び外部メモリ参照受付部152に相当すると見做してもよい。
【0200】
上記格付け部は、例えば上記格付け判定部155に相当すると見做してもよい。
上記統合部は、例えば上記統合部156に相当すると見做してもよい。
あるいは、上記格付け部及び上記統合部が、上記格付け判定処理部70に相当すると見做してもよい。
【0201】
上記第2データ取得部は、例えば、上記外部メモリ参照受付部152及び通信処理部158に相当すると見做してもよい。あるいは、上記第2データ取得部は、上記コマンドリスト53及び通信処理部63に相当すると見做してもよい。
【0202】
上記アクセス最適化部は、例えば上記最適コマンド生成部69に相当すると見做してもよい。
例えば、アイテム表示に係わるアクセス先として、D102番地とD105番地があるものとする。この場合、上記最適コマンド生成部69で生成される最適コマンドリスト54では、アクセス先が「D102番地〜D105番地」となっている。よって、1回の通信で接続機器4から「D102番地〜D105番地」の格納データを纏めて取得することになる。これ自体は、上記の通り、既存技術である。
【0203】
ここで、例えば、ロジック処理に係わる不定期アクセス先として例えばD108番地があるものとする。この例の場合、従来では、定期的に「D102番地〜D105番地」の格納データを纏めて取得する。そして、ロジック処理に伴って不定期に(突発的に)D108番地の格納データを取得することになる。よって、従来では、D108番地へのアクセス処理が頻繁に行われると、「D102番地〜D105番地」へのアクセス処理に影響し、リフレッシュ処理とロジック処理の両方の動作が遅くなる場合もあった。
【0204】
これに対して、本手法では、上記不定期アクセス先が格上げされた場合、上記最適コマンド生成部69で生成される最適コマンドリスト54では、アクセス先が「D102番地〜D108番地」となるはずである。よって、1回の通信で接続機器4から「D102番地〜D108番地」の格納データを纏めて取得することになる。従って、上述した従来の問題を解消できることになる。
【0205】
また、従来では、上記D108番地へのアクセス処理が発生する毎に、逐一、例えばコマンドリスト53にコマンド130を格納することでアクセス処理を依頼して、データが取得されるまで待機する必要があった。これに対して、本手法では、上記定期的なリフレッシュ処理に伴って共有メモリ55に格納されているデータを読み出せばよいので、ロジック処理に係わる処理効率が向上する。