(57)【要約】【課題】  受信装置の負担を軽減可能な送信装置を実現する。【解決手段】  制御用ホストコンピュータ１７には、送信すべきデータ列を複数の部分データ列に分割してプログラマブル表示器に送信し、当該プログラマブル表示器のメモリ３６ａに格納させる分割処理部８１と、上記メモリ３６ａへの格納失敗を示す異常通知をプログラマブル表示器から受け取った場合と、上記複数の部分データ列全ての送信に成功した場合とにコマンドを送信するコマンド生成部８２とが設けられている。当該コマンド生成部８２は、上記コマンドの送信が、上記データ列の送信に関連する初回のコマンド送信であれば、上記コマンドとして、フラッシュＲＯＭ３６ｂへの書き込みコマンドを送信すると共に、２回目以降のコマンド送信であれば、上記コマンドとして、それまでに書き込まれた部分データ列に追記させる追記コマンドを送信する。【選択図】  図１
2006276981.tif 000002
【特許請求の範囲】
【請求項１】
送信すべきデータ列を複数の部分データ列に分割して受信装置に送信し、当該受信装置の作業用メモリに確保されたバッファ領域に当該各部分データ列を格納させるデータ送信手段と、
上記データ送信手段の送信する部分データ列の上記バッファ領域への格納失敗を示す異常通知を上記受信装置から受け取った場合と、上記複数の部分データ列全ての送信に成功した場合とにコマンドを送信して、上記受信装置のバッファ領域に格納された部分データ列を不揮発性記憶装置に書き込むように指示する指示手段とを備え、
上記指示手段は、上記コマンドの送信が、上記データ列の送信に関連する初回のコマンド送信であれば、上記コマンドとして、上記受信装置のバッファ領域に格納された部分データ列を不揮発性記憶装置に書き込むための書き込みコマンドを送信すると共に、２回目以降のコマンド送信であれば、上記コマンドとして、それまでに書き込まれた部分データ列への追記を示す追記コマンドを送信することを特徴とする送信装置。
【請求項２】
与えられたデータ列を複数に分割し、それぞれを圧縮すると共に、圧縮後のデータ列をまとめたデータ列を、上記送信すべきデータ列として、上記データ送信手段へ与える圧縮手段を備えていることを特徴とする請求項１記載の送信装置。
【請求項３】
上記指示手段は、上記異常通知を上記受信装置から受け取った場合、上記バッファ領域の部分データ列を、作業用のファイルに書き込むとともに、上記複数の部分データ列全ての送信に成功した場合、上記送信すべきデータ列の上記不揮発性記憶装置における論理的な格納場所を示す情報を含むコマンドを送信して、当該作業用のファイルの格納場所を変更させることを特徴とする請求項１または２記載の送信装置。
【請求項４】
請求項１、２または３記載の各手段として、コンピュータを動作させるプログラム。
【請求項５】
請求項４記載のプログラムが記録された記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、受信装置の負担を軽減可能な送信装置、そのプログラムおよび記録媒体に関するものである。
【背景技術】
【０００２】
従来から、例えば、後述する特許文献１に示すように、上位装置から下位装置にプログラムをダウンロードする際、ダウンロードしたプログラム全てをＲＡＭに格納した後で、フラッシュＲＯＭに格納する構成が記載されている。
【特許文献１】特開平１０−９７２４７号（公開日：1998年４月１４日）
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、上記従来の構成では、基本的にダウンロードしたデータがＲＡＭに格納されることを前提としている。言い換えると、比較的大きな余力を持った受信装置を対象としており、ダウンロードしたデータをバッファ領域に格納できないときもあるような場合に、受信装置の負担を軽減する方法については記載されていない。
【０００４】
本発明は、上記の問題点に鑑みてなされたものであり、その目的は、受信装置の負担を軽減可能な送信装置を実現することにある。
【課題を解決するための手段】
【０００５】
本発明に係る送信装置は、上記課題を解決するために、送信すべきデータ列を複数の部分データ列に分割して受信装置に送信し、当該受信装置の作業用メモリに確保されたバッファ領域に当該各部分データ列を格納させるデータ送信手段と、上記データ送信手段の送信する部分データ列の上記バッファ領域への格納失敗を示す異常通知を上記受信装置から受け取った場合と、上記複数の部分データ列全ての送信に成功した場合とにコマンドを送信して、上記受信装置のバッファ領域に格納された部分データ列を不揮発性記憶装置に書き込むように指示する指示手段とを備え、上記指示手段は、上記コマンドの送信が、上記データ列の送信に関連する初回のコマンド送信であれば、上記コマンドとして、上記受信装置のバッファ領域に格納された部分データ列を不揮発性記憶装置に書き込むための書き込みコマンドを送信すると共に、２回目以降のコマンド送信であれば、上記コマンドとして、それまでに書き込まれた部分データ列への追記を示す追記コマンドを送信することを特徴としている。
【０００６】
ここで、比較のために、送信装置が受信装置で確保可能なバッファ領域の大きさを把握すると共に、先にコマンドを送信した後、当該バッファ領域の大きさに応じた部分データ列を送信する構成では、受信装置におけるバッファ領域の大きさを送信装置が把握し損ねたり、受信装置での状況が変化して、部分データ列をバッファ領域に格納できるか否かが変化したりすると、それまでに送信していたコマンドをキャンセルして別のコマンドを送信し直して、受信装置の動作を変更したり、受信装置が、状況に応じて、不揮発性記憶装置に追記すべきか否かを判定する必要があり、受信装置の負担が大きくなってしまう。
【０００７】
これに対して、上記構成では、まず、データ送信手段が部分データ列を受信装置に送信し、指示手段は、その後、異常通知を上記受信装置から受け取った場合と、上記複数の部分データ列全ての送信に成功した場合とに、上記コマンドを送信して、上記受信装置のバッファ領域に格納された部分データ列を不揮発性記憶装置に書き込むよう指示する。また、上記指示手段は、当該コマンドとして、書き込みコマンドを送信するか、追記コマンドを送信するかを、上記コマンドの送信が、上記データ列の送信に関連する初回のコマンド送信であるか否かに応じて変更する。
【０００８】
このように、上記構成では、追記すべきか否かは、部分データ列を送信した後で、伝送が終了したか否かと合わせ、送信装置側で判定される。したがって、受信装置は、コマンドを受け付けるまでの間、データ送信手段から受け取った部分データ列をバッファ領域に格納すると共に、格納できない場合は、異常通知を送信するだけでよく、コマンドを受け付けた時点で、コマンドに従って、新たな書き込みを行うか、追記するかを選択すればよい。この結果、先にコマンドを送信する構成と比較して、受信装置の負担を軽減できる。
【０００９】
また、当該構成では、異常通知を受け取ってから、いずれのコマンドを送信するかを判定できるので、受信装置において、バッファ領域の大きさを変更しても、受信装置および送信装置の上記動作を変更することなく、適切なコマンドが送信される。したがって、受信装置は、送信装置との通信処理を阻害することなく、より柔軟に作業用メモリを管理できる。
【００１０】
さらに、上記構成に加えて、与えられたデータ列を複数に分割し、それぞれを圧縮すると共に、圧縮後のデータ列をまとめたデータ列を、上記送信すべきデータ列として、上記データ送信手段へ与える圧縮手段を備えていてもよい。
【００１１】
当該構成では、圧縮手段によって圧縮されたデータ列が、上記送信すべきデータ列として与えられるので、圧縮しない構成と比較して、送信装置および受信装置の間で伝送されるデータのデータ量を削減できる。また、上記送信すべきデータ列は、上記与えられたデータ列を複数に分割し、それぞれを圧縮すると共に、圧縮後のデータ列をまとめたデータ列なので、当該与えられたデータ列全てを圧縮したデータ列を送信する構成と比較して、解凍時において、受信装置が作業用メモリ上に確保する必要のある作業領域の大きさを削減できる。
【００１２】
また、上記構成に加えて、上記指示手段は、上記異常通知を上記受信装置から受け取った場合、上記バッファ領域の部分データ列を、作業用のファイルに書き込むとともに、上記複数の部分データ列全ての送信に成功した場合、上記送信すべきデータ列の上記不揮発性記憶装置における論理的な格納場所を示す情報を含むコマンドを送信して、当該作業用のファイルの格納場所を変更させてもよい。
【００１３】
当該構成では、指示手段は、上記複数の部分データ列全ての送信に成功した場合に送信するコマンドに、格納場所を示す情報が含まれており、受信装置に上記作業用のファイルの格納場所を当該格納場所に変更させる。この結果、上記送信すべきデータ列を、不揮発性記憶装置の任意の格納場所に格納させることができる。
【００１４】
また、格納を指示しようとする格納場所に既にデータ列が格納されており、上記送信すべきデータ列によって、当該データ列を更新する場合であっても、更新が行われる時点は、全部分データ列が送信された後の時点である。したがって、受信装置が一部の部分データ列を受け付けた時点で上記格納を指示しようとする格納場所に当該部分データ列を格納した結果、当該格納場所に格納されているデータ列中に、更新前の部分と更新後の部分とが混在してしまう構成と比較して、より安全にデータ列を更新できる。
【００１５】
ところで、上記送信装置は、ハードウェアのみで実現してもよいが、プログラムをコンピュータに実行させることによって実現してもよい。具体的には、本発明に係るプログラムは、上記送信装置の各手段として、コンピュータを動作させるプログラムであり、本発明に係る記録媒体には、当該プログラムが記録されている。
【００１６】
これらのプログラムが上記コンピュータによって実行されると、当該コンピュータは、上記送信装置のいずれかとして動作する。したがって、上記送信装置と同様に、受信装置の負担を軽減できる。
【発明の効果】
【００１７】
本発明によれば、送信すべきデータ列を複数の部分データ列に分割して受信装置に送信し、当該受信装置の作業用メモリに確保されたバッファ領域に当該各部分データ列を格納させ、上記部分データ列の上記バッファ領域への格納失敗を示す異常通知を上記受信装置から受け取った場合と、上記複数の部分データ列全ての送信に成功した場合とにコマンドを送信して、上記受信装置のバッファ領域に格納された部分データ列を不揮発性記憶装置に書き込むように指示すると共に、上記コマンドの送信が、上記データ列の送信に関連する初回のコマンド送信であれば、上記コマンドとして、上記受信装置のバッファ領域に格納された部分データ列を不揮発性記憶装置に書き込むための書き込みコマンドを送信すると共に、２回目以降のコマンド送信であれば、上記コマンドとして、それまでに書き込まれた部分データ列への追記を示す追記コマンドを送信するので、受信装置の負担を軽減できる。したがって、例えば、制御システムにおける制御用ホストコンピュータからプログラマブル表示器へのデータ送信のように、送信側の方が受信側よりも余力のある通信システムにおける送信装置として、広く好適に使用できる。
【発明を実施するための最良の形態】
【００１８】
本発明の一実施形態について図１ないし図２０に基づいて説明すると以下の通りである。すなわち、本実施形態に係るデータ伝送方法は、受信装置の負担を軽減できるため、比較的演算能力の高い送信装置から、比較的演算能力が低く、しかも、不揮発性の記憶装置を備えた受信装置に対して、データを送信し、当該不揮発性の記憶装置に、そのデータを書き込ませる場合などに好適に用いることができる。
【００１９】
以下では、上記データ伝送方法を採用したデータ伝送の例として、制御システムに設けられた制御用ホストコンピュータからプログラマブル表示器へのデータ伝送について説明する前に、制御システム全体の概略構成および動作について簡単に説明する。
【００２０】
本実施形態に係る制御システム１は、図２に示すように、ターゲットシステム２のデバイス２ａを制御するためのシステムであって、例えば、ベルトコンベアー式の自動組付機などのデバイス２ａの制御などに好適に用いられている。
【００２１】
上記制御システム１には、上記デバイス２ａを制御する制御装置としてのＰＬＣ１１と、多くの場合、制御対象近傍に配されると共に、制御システム１のＨＭＩとして、デバイス２ａの状態を表示し、オペレータによるデバイス２ａへの操作を受け付けるプログラマブル表示器（受信装置）１３とを備えている。
【００２２】
本実施形態に係る制御システム１では、各プログラマブル表示器１３は、イーサネット（登録商標）などのＬＡＮ（ローカルエリアネットワーク）１５によって互いに接続されている。さらに、上記ＬＡＮ１５には、多くの場合、プログラマブル表示器１３よりも離れた場所から、制御システム１全体を管理する制御用ホストコンピュータ（送信装置）１７が接続されている。
【００２３】
また、上記各プログラマブル表示器１３は、シリアルケーブルなどの通信路を介して、それぞれに対応するＰＬＣ１１と接続されている。なお、図２では、説明の便宜上、ＬＡＮ１５にプログラマブル表示器１３が２台接続されると共に、各プログラマブル表示器１３に１台ずつのＰＬＣ１１、各ＰＬＣ１１に１台ずつのデバイス２ａがそれぞれ接続されている場合を例示しているが、当然ながら、それぞれの接続台数は任意に設定できる。
【００２４】
また、デバイスは、デバイスアドレスにより特定可能で、しかも、状態を取得したり、制御（変更）できるものであれば、例えば、デバイス２ａ自体であってもよいし、例えば、ＰＬＣ１１やプログラマブル表示器１３の記憶装置など、制御システム１に設けられた記憶装置の一領域を示していてもよい。
【００２５】
ここで、上記制御システム１では、制御システム１に必須の構成であり、しかも、ＨＭＩとして動作するため、演算能力に余力のあるプログラマブル表示器１３が通信の大半を処理するように構成されている。さらに、各プログラマブル表示器１３は、自らに接続されているＰＬＣ１１の機種に固有の専用プロトコルと、ＬＡＮ１５での共通プロトコルとを変換して、他のプログラマブル表示器１３や制御用ホストコンピュータ１７と、ＰＬＣ１１との通信を中継する。なお、共通プロトコルと専用プロトコルとの間のプロトコル変換には、同じ指示に同じコードが割り当てられるように予め定められた共通のコマンドと上記共通のコマンドに対応するＰＬＣ１１固有のコマンドとの間の変換や、データやアドレスの表現方法の変換、デバイスアドレスと、当該デバイスアドレスに対応し、しかも、デバイスアドレスとは異なる値に設定可能な変数や変数の名称（変数名）との変換なども含まれる。
【００２６】
これにより、プログラマブル表示器１３および制御用ホストコンピュータ１７は、他のプログラマブル表示器１３に接続されているＰＬＣ１１の機種に拘らず、ＬＡＮ１５を介して共通のプロトコルで通信できる。この結果、互いに異なる機種のＰＬＣ１１の混在する制御システム１が比較的容易に実現されている。
【００２７】
上記プログラマブル表示器１３は、後述する画面データに基づいて、デバイスの状態を画面表示する際の動作や、画面への操作に応じてデバイスの状態を制御する際の動作を特定するものであって、ＰＬＣ１１と通信するＰＬＣ・ＩＦ部３１と、上記ＬＡＮ１５に接続するためのＬＡＮ・ＩＦ部３２と、例えば、液晶表示装置などからなるディスプレイ３３と、ディスプレイ３３の画面上に配されたタッチパネルなどからなる入力装置３４と、上記各部材３１〜３４を制御するＨＭＩ処理部３５と、当該ＨＭＩ処理部３５によって参照され、上記画面データおよび上記変数が格納される記憶部３６とを備えている。
【００２８】
また、本実施形態に係るプログラマブル表示器１３には、上記記憶部３６として、例えば、ＤＲＡＭなどから構成され、主に作業領域として使用される揮発性のメモリ３６ａと、不揮発性の記憶領域として用いられるフラッシュＲＯＭ３６ｂとが設けられている。なお、当該メモリ３６ａが特許請求の範囲に記載の作業用メモリに対応し、フラッシュＲＯＭ３６ｂが不揮発性記憶装置に対応している。
【００２９】
上記画面データは、デバイスの状態を画面表示する際の動作や、画面への操作に応じてデバイスの状態を制御する際の動作を特定できれば、例えば、画面に表示可能な部品（図形要素）に対応するオブジェクトを生成するためのデータであってもよいが、本実施形態では、上記画面データは、画面上の領域と、当該領域への表示や入力に対応するデバイスとの対応関係を示すタグを組み合わせて構成されている。本実施形態では、上記ＨＭＩ処理部３５が複数の単位画面（ベース画面）を切り換え表示可能であり、上記タグは、当該タグが有効となる単位画面を示すファイル番号と、単位画面上で実行すべき動作内容を特定する事象名と、各事象毎に参照される参照情報とを含んでいる。
【００３０】
例えば、上記タグが所定の画面領域（表示座標範囲）へ所定のデバイスの状態に応じた部品図形を表示する表示タグの場合、上記参照情報には、表示座標範囲と、デバイスを特定可能な変数と、例えば、部品図形がスイッチの場合、ＯＮを示す図形のファイルおよびＯＦＦを示す図形のファイルなど、表示時に参照するファイル番号とが含まれる。さらに、タグが入力タグの場合、参照情報として、有効入力座標範囲と、入力結果が書き込まれるデバイスの変数とが含まれる。
【００３１】
また、記憶部３６には、各変数について、変数の名称（変数名）と、変数に対応するデバイス２ａまたは内部メモリを特定するための情報（例えば、アドレスなど）と、変数の内容との組み合わせが記憶されている。なお、本実施形態では、変数に対応するデバイス２ａの機種に拘わらず、変数の内容を格納する際の表現方法（例えば、ワード長や符号の有無、あるいは、ＢＣＤ／２進表記など）が予め定められた表現方法に統一されており、変数が実在のデバイス２ａに対応する場合、記憶部３６には、実際の機種での表現方法も格納されている。この場合、ＨＭＩ処理部３５は、ＰＬＣ・ＩＦ部３１を介してデバイス２ａの状態を取得あるいは制御する際、表現方法を形式変換して、格納時の表現方法を統一する。
【００３２】
一方、上記ＨＭＩ処理部３５は、所定の時間間隔で、記憶部３６に格納された画面データから、ベース画面のファイル番号が、現在表示中のベース画面である表示タグを抽出する。さらに、ＨＭＩ処理部３５は、記憶部３６に格納された変数を参照して、タグに対応する変数の内容を読み出し、内容に応じた部品図形をディスプレイ３３に表示する。ここで、ＰＬＣ・ＩＦ部３１に接続されたＰＬＣ１１により制御されるデバイス２ａに、上記変数が対応している場合、ＨＭＩ処理部３５は、ＰＬＣ・ＩＦ部３１によるＰＬＣ１１との通信によって、デバイス２ａの状態を取得し、上記変数の内容を当該状態に応じて更新している。これにより、ディスプレイ３３には、例えば、図２に示すように、デバイス２ａの状態が表示される。
【００３３】
なお、変数が他のプログラマブル表示器１３に接続されたＰＬＣ１１によって制御されるデバイス２ａの場合、ＨＭＩ処理部３５は、ＬＡＮ・ＩＦ部３２、ＬＡＮ１５および他のプログラマブル表示器１３を介して当該ＰＬＣ１１と通信するなどして、デバイスの状態を取得し、それに応じて変数の内容を更新する。
【００３４】
また、入力装置３４への押し操作など、オペレータの入力操作を受け付けると、ＨＭＩ処理部３５は、上記画面データから、現在表示中のベース画面に対応し、当該入力操作にマッチする入力タグを検索すると共に、入力結果に応じて、タグに対応する変数の内容を更新する。さらに、ＨＭＩ処理部３５は、デバイス２ａの状態を取得する場合と略同様に、ＰＬＣ１１やプログラマブル表示器１３と通信するなどして、上記変数の内容に応じて、デバイス２ａの状態を制御させる。ここで、入力操作の後も、ＨＭＩ処理部３５は、デバイス２ａの状態を画面表示するので、操作結果が画面表示に反映される。
【００３５】
なお、ＨＭＩ処理部３５は、例えば、他のプログラマブル表示器１３や制御用ホストコンピュータ１７など、ＬＡＮ１５に接続された機器から自らに接続されたＰＬＣ１１のデバイス２ａへの制御指示を受け取った場合や、これとは逆に、上記機器へ報告すべきデバイス２ａの状態を自らのＰＬＣ１１から受け取った場合には、上述したプロトコル変換によって、ＬＡＮ１５での通信とＰＬＣ１１相手の通信との間を中継できる。
【００３６】
一方、上記制御用ホストコンピュータ１７は、制御システム１の監視制御を行うＨＭＩ処理部７１と、ＬＡＮ１５に接続され、上述の共通プロトコルで通信するＬＡＮ・ＩＦ部７２と、ＬＡＮ・ＩＦ部７２およびＬＡＮ１５を介して各プログラマブル表示器１３と通信して、ＨＭＩ処理部７１などの要求に応じるサーバ部７３とを備えており、ターゲットシステム２やＰＬＣ１１あるいはプログラマブル表示器１３の状態を表示したり制御できる。
【００３７】
さらに、上記制御用ホストコンピュータ１７には、画面データなどのデータを格納する記憶部７４と、ユーザの操作に応じて、記憶部７４に格納された画面データを修正したり、新規作成したりして、表示画面を設計し、新たな画面データを生成する作画処理部７５とが設けられており、制御用ホストコンピュータ１７は、作画処理部７５の生成した画面データを、プログラマブル表示器１３に送信し、その記憶部３６（より詳細には、フラッシュＲＯＭ３６ｂ）に格納させることができる。
【００３８】
なお、上記画面データは、上述したように、画面上の領域と、当該領域への表示や入力に対応するデバイスを特定可能なアドレスとの対応関係を示すタグを組み合わせて構成されているので、設計者は、作画処理部７５を操作して、画面上の所望の位置にタグを配置すると共に、各タグとデバイスのアドレスとを対応付けるだけで、画面データを作成できる。したがって、プログラマブル表示器１３の表示プログラムを修正する場合に比べて容易に、各プログラマブル表示器１３の表示や操作を決定（変更）でき、制御システム１のユーザ（制御用ホストコンピュータ１７を操作する設計者）は、ターゲットシステム２の実情や、プログラマブル表示器１３のオペレータの習熟度、あるいは、ユーザの好みに合わせることができる。
【００３９】
ここで、上述の制御システム１においては、種々のデータ伝送が行われているが、以下では、制御用ホストコンピュータ１７からプログラマブル表示器１３へ画面データのファイル（画面データファイル）を伝送する場合を例にして、伝送に関連する構成、および、その動作を、図１を参照しながら詳細に説明する。
【００４０】
すなわち、上述したメモリ３６ａは、ＨＭＩ処理部３５の行う種々の処理において作業領域として使用されており、ＨＭＩ処理部３５には、メモリ３６ａの記憶領域を、これらの各処理に配分するメモリ管理部４１が設けられている。
【００４１】
当該メモリ管理部４１は、例えば、ＯＳ（Operating System）の一機能として実現されており、メモリ３６ａの記憶領域を複数の小領域に分割して管理すると共に、上記各処理を行う種々の部材（図示せず）からの依頼に応じて、各小領域を各処理に割り当てたり、開放したりすることができる。これにより、メモリ３６ａの記憶領域を、種々の用途に動的に割り当てることができる。
【００４２】
また、フラッシュＲＯＭ３６ｂは、通常のＳＲＡＭやＤＲＡＭなどと比較して、書き込む際の単位が比較的大きく、書き込みに要する時間が比較的長い。したがって、本実施形態に係るＨＭＩ処理部３５は、書き込み時の効率を向上させるため、上記画面データファイルを示すデータ列Ｄｓを、メモリ３６ａに確保したバッファ領域ＡＢへ、一度格納した後で、フラッシュＲＯＭ３６ｂに書き込んでいる。
【００４３】
より詳細には、上記データ列Ｄｓは、詳細は後述するように、複数の部分データ列Ｄｐ…に分割された後で伝送されており、ＨＭＩ処理部３５には、ＬＡＮ１５およびＬＡＮ・ＩＦ部３２を介して送信されてきた部分データ列Ｄｐを受け取った場合、上記メモリ管理部４１に指示して、メモリ３６ａ上にバッファ領域ＡＢを確保すると共に、確保されたバッファ領域ＡＢに受け取った部分データ列Ｄｐを格納する受信処理部５１と、バッファ領域ＡＢに格納された部分データ列Ｄｐ…を、フラッシュＲＯＭ３６ｂに書き込み可能なアクセス処理部５２とが設けられている。なお、バッファ領域ＡＢは、動的に確保されるため、図１では、バッファ領域ＡＢを破線で図示している。
【００４４】
本実施形態に係る上記アクセス処理部５２は、フラッシュＲＯＭ３６ｂ上にファイルシステムを構築しており、指定されたデータ列を格納したファイルを、指定された論理的な格納場所（例えば、フルパス名など）に生成したり、指定されたデータ列を、指定された論理的な格納場所のファイルに追記したりできる。また、上記アクセス処理部５２は、ファイルの移動指示に従って、当該論理的な格納場所を変更することもできる。
【００４５】
なお、本実施形態に係るアクセス処理部５２は、指定された論理的な格納場所のファイルからデータ列を読み出したり、指定された論理的な格納場所のファイルの一部または全部を書き換えて、ファイルを更新することもできる。また、本実施形態では、ファイルに対してデータ列を読み書きする際、指定したオフセットから、指定したサイズだけを読み書きの対象にしたり、指定したオフセットから指定したサイズを削除することもできる。
【００４６】
ここで、上記アクセス処理部５２は、フラッシュＲＯＭ３６ｂ上にファイルシステムを構築しており、データ列の実体が格納された記憶領域（物理的な格納場所）にアクセスする際、そのアドレスを、データ列の実体が格納された記憶領域とは異なる索引用の記憶領域（例えば、ディレクトリエントリなど）を参照して特定している。また、アクセス処理部５２は、例えば、ある物理的な記憶領域に格納されたデータ列を読み出し終わった場合、当該索引用の記憶領域を参照して、当該データ列に論理的に連続するデータ列が格納された物理的な記憶領域を特定するなどして、複数の物理的には連続しない記憶領域を論理的には連続した領域として扱っている。
【００４７】
これにより、上記アクセス処理部５２は、上記ファイル移動やファイルの一部削除／一部追加などが指示された場合、当該索引用の記憶領域を変更することによって、データ列の実体が格納されている物理的な記憶領域の内容を変更する処理と場所を変更する処理との一部または全部を省略できる。したがって、以下の構成、すなわち、論理的に連続するデータ列を必ず物理的に連続した記憶領域に格納する必要がある構成と比較して、上記ファイル移動やファイルの一部削除／一部追加が指示された場合に、実際にフラッシュＲＯＭ３６ｂの内容を書き換える必要のあるデータの量を削減できる。
【００４８】
さらに、本実施形態では、上記受信処理部５１は、バッファ領域ＡＢの各小領域Ｍａを、例えば、図３に示すように、チェーン状に管理している。具体的には、各小領域（例えば、Ｍａ１）には、データを記憶する記憶領域Ｍｂとは別に、当該小領域Ｍａ１の次の小領域（例えば、Ｍａ２）を示す情報（例えば、小領域Ｍａ２のアドレスなど）が格納された記憶領域Ｍｈが設けられている。また、受信処理部５１は、各小領域Ｍａのうち、最初の小領域（例えば、Ｍａ１）を示す情報Ｄｆを記憶部３６（本実施形態では、メモリ３６ａ）に格納している。これにより、受信処理部５１およびアクセス処理部５２は、バッファ領域ＡＢを構成する小領域Ｍａの数に拘わらず、これらの小領域Ｍａを一連の連続した記憶領域として扱うことができ、受信処理部５１が上記受信した部分データ列Ｄｐ…を順に格納したり、アクセス処理部５２が、これらの部分データ列Ｄｐ…を順に読み出して、フラッシュＲＯＭ３６ｂに書き込んだりできる。
【００４９】
一例として、図４に示すように、分割処理部８１が、データ列Ｄｓを、部分データ列Ｄｐ０〜Ｄｐ７に分割して送信した場合に、メモリ３６ａには、これらの部分データ列Ｄｐ０〜Ｄｐ７を格納可能な連続した空き領域が無く、３つの部分データ列Ｄｐを連続して格納可能な記憶領域Ｍ１と、２つの部分データ列Ｄｐをそれぞれ連続して格納可能な記憶領域Ｍ２・Ｍ４と、１つの部分データ列Ｄｐしか格納不可能な記憶領域Ｍ３としか存在しなかったとする。なお、残余の記憶領域は、他のプログラムなどの処理によって使用されている。
【００５０】
この場合であっても、上述したように、受信処理部５１がバッファ領域ＡＢの各小領域Ｍａをチェーン状に管理することによって、非連続な記憶領域を連続した記憶領域として扱っている。したがって、受信処理部５１が、上記それぞれ独立して（非連続に）存在する記憶領域Ｍ１、Ｍ２、Ｍ３およびＭ４のそれぞれに、部分データ列Ｄｐ０〜Ｄｐ２、Ｄｐ６〜Ｄｐ７、Ｄｐ３、および、Ｄｐ４〜Ｄｐ５をそれぞれ格納しているにも拘わらず、受信処理部５１は、各部分データ列Ｄｐ０〜Ｄｐ７を連続したデータ列Ｄｓとして扱うことができる。
【００５１】
また、詳細は後述するように、制御用ホストコンピュータ１７は、１または複数の部分データ列Ｄｐを送信した後、フラッシュＲＯＭ３６ｂへの書き込みなどを指示するコマンドも送信しており、受信処理部５１は、受信したコマンドを識別すると共に、識別結果に応じて、上記アクセス処理部５２を制御できる。
【００５２】
さらに、上記受信処理部５１は、例えば、受信した部分データ列Ｄｐの数が増加して、より大きなバッファ領域ＡＢが必要になった場合など、必要に応じて、新たなバッファ領域ＡＢの確保をメモリ管理部４１に指示することもできる。また、上記受信処理部５１は、部分データ列Ｄｐを格納するために必要なバッファ領域ＡＢを確保できなかった場合、送信側となる制御用ホストコンピュータ１７へ異常通知を送信して、バッファ領域ＡＢが足りないことを伝えることができる。
【００５３】
ここで、受信処理部５１は、実際に部分データ列Ｄｐを受信しながら、新たなバッファ領域ＡＢが必要か否かを判定してもよいが、本実施形態では、各部分データ列Ｄｐの先頭には、部分データ列Ｄｐの長さの情報を含むヘッダが付されており、受信処理部５１は、当該情報を参照して、その後に送られてくる部分データ列Ｄｐの長さ、および、新たなバッファ領域ＡＢが必要か否かを判定している。
【００５４】
これにより、本実施形態に係る受信処理部５１は、上述した構成、すなわち、部分データ列Ｄｐの本体を受信しながら、その都度、新たなバッファ領域ＡＢの要否を判定する構成と比較して、より早い時点で、制御用ホストコンピュータ１７に異常通知を送信することができ、部分データ列本体の送信の全部または大部分を中止させることができる。
【００５５】
一方、本実施形態に係る制御用ホストコンピュータ１７（より詳細には、サーバ部７３）には、送信すべきデータ列Ｄｓの生成源としての作画処理部７５から受け取ったデータ列Ｄｓを部分データ列Ｄｐ…に分割する分割処理部（データ送信手段）８１が設けられており、当該分割処理部８１は、例えば、ＬＡＮ・ＩＦ部７２へ指示するなどして、これらの各部分データ列Ｄｐに、上述したヘッダをそれぞれ付加したデータを、プログラマブル表示器１３に送信できる。
【００５６】
さらに、上記サーバ部７３には、上記分割処理部８１が、上記データ列Ｄｓを構成する部分データ列Ｄｐ…を全て送信したか否かと、プログラマブル表示器１３の受信処理部５１から異常通知を受け付けたか否かとを判定し、それらの判定結果に応じたコマンドを生成するコマンド生成部（指示手段）８２が設けられており、当該コマンド生成部８２は、例えば、ＬＡＮ・ＩＦ部７２へ指示するなどして、上記生成したコマンドを、プログラマブル表示器１３に送信できる。
【００５７】
より詳細には、上記コマンド生成部８２は、異常通知を受け付けた場合、その異常通知が初回の異常通知であれば、第１の書き込みコマンドとして、バッファ領域ＡＢに格納されている各部分データ列Ｄｐを、フラッシュＲＯＭ３６ｂに書き込むよう指示するコマンドを送信できる。
【００５８】
なお、例えば、第１の書き込みコマンドに場所の情報を含めておき、受信処理部５１が、第１の書き込みコマンドを受け取る度に、上記各部分データ列Ｄｐを当該場所に格納してもよいが、仮に、このように構成すると、最初の部分データの書き込みを開始してから、最後の部分データの書き込みが終了するまでの期間は、上記場所には、更新前のデータと更新後のデータとが混在して記憶される。したがって、この期間中は、正しいデータを参照できなくなる。また、この期間中に、例えば、停電などが発生して、データ伝送が中止されてしまうと、更新前のデータが破損してしまい、フラッシュＲＯＭ３６ｂ中に正しいデータが存在しなくなってしまう。
【００５９】
これに対して、本実施形態では、当該第１の書き込みコマンドを受信した受信処理部５１は、フラッシュＲＯＭ３６ｂのうち、作業用のファイル（更新前の画面データが格納されているファイルとは異なるファイル）に、上記各部分データ列Ｄｐを格納しており、後述する第３の書き込みコマンドが発行され、全部分データ列Ｄｐ…の書き込みが完了した時点で、当該全部分データ列Ｄｐ…を格納した、上記作業用のファイルを移動している。
【００６０】
当該構成では、更新後のデータ列ＤｓがフラッシュＲＯＭ３６ｂに書き込まれている間、フラッシュＲＯＭ３６ｂには、更新前のデータ列が残っているので、更新前のデータを読み出すことのできる期間を延長でき、正しいデータが破損する可能性を低減できる。なお、上述したように、本実施形態に係るプログラマブル表示器１３では、索引用の記憶領域を変更することによって、データ列の実体が格納されている物理的な記憶領域の場所を変更させることなく、ファイルの論理的な格納場所を変更できる。したがって、プログラマブル表示器１３の負担を余り増大させることなく、全部分データ列Ｄｐ…の書き込み完了後に、当該全部分データ列Ｄｐ…を格納したファイルの格納場所を変更できる。
【００６１】
なお、この構成では、全部分データ列Ｄｐ…を作業用のファイルに書き込んだ後に、当該ファイルの論理的な格納場所が変更されるため、第１の書き込みコマンド発行時に、格納場所の情報が不要であり、受信処理部５１が上記作業用の領域に上記各部分データ列Ｄｐを格納すればよい。したがって、本実施形態に係る第１の書き込みコマンドは、格納場所を含まずに構成されている。
【００６２】
また、コマンド生成部８２は、２回目以降の異常通知を受け付けた場合、第２の書き込みコマンドとして、バッファ領域ＡＢに格納されている各部分データ列Ｄｐを、第１の書き込みコマンドによって書き込んだデータに追記するように指示するコマンドを送信できる。一方、プログラマブル表示器１３のアクセス処理部５２は、当該第２の書き込みコマンドを受信した場合、アクセス処理部５２へ指示して、上記各部分データ列Ｄｐを、上記第１の書き込みコマンドによって生成された、上記作業用のファイルに追記させることができる。
【００６３】
なお、初回か否かは、例えば、異常通知の回数を記憶しておき、当該回数を異常通知を受け付ける度に更新したり、異常通知があったか否かを示すフラグを記憶しておき、当該フラグをデータ列Ｄｓの送信前にクリアすると共に、異常通知があった場合は、当該フラグを設定したりして記憶すると共に、これらの記憶を参照することによって判定できる。
【００６４】
さらに、上記コマンド生成部８２は、全ての部分データ列Ｄｐ…が送信されたとき、そのデータ列Ｄｓを伝送している間に一度でも異常通知があれば、第３の書き込みコマンドとして、それまでの異常通知に応じてフラッシュＲＯＭ３６ｂに書き込まれたデータに、上記バッファ領域ＡＢに格納されている各部分データ列Ｄｐを追記し、その後、フラッシュＲＯＭ３６ｂに格納されたデータ列（全部分データ列）Ｄｐ…を、指定した場所に移動するように指示するコマンドを送信できる。また、プログラマブル表示器１３のアクセス処理部５２は、当該第３の書き込みコマンドを受信した場合、アクセス処理部５２へ指示して、上記第１の書き込みコマンドによって作成された作業用のファイルに、上記各部分データ列Ｄｐを追記させると共に、当該作業用のファイルの論理的な格納場所を、当該第３の書き込みコマンドによって指示された場所に変更させることができる。
【００６５】
一方、上記コマンド生成部８２は、全ての部分データ列Ｄｐ…が送信されたとき、そのデータ列Ｄｓの伝送中に一度も異常通知がなかった場合は、第４の書き込みコマンドとして、バッファ領域ＡＢに格納されている全部分データ列Ｄｐ…を、フラッシュＲＯＭ３６ｂの記憶領域のうち、指定する場所に書き込むように指示するコマンドを送信できる。
【００６６】
なお、当該第４の書き込みコマンドを受信した受信処理部５１は、全部分データ列Ｄｐ…を、直接指定された場所に書き込んでもよいが、本実施形態では、異常通知があった場合と同様に、正常なデータが失われる可能性を低減するために、全部分データ列Ｄｐ…を、フラッシュＲＯＭ３６ｂの作業用のファイルに書き込んだ後、当該作業用のファイルを、当該第４の書き込みコマンドで指定された場所に移動している。
【００６７】
なお、制御用ホストコンピュータ１７が送信したデータ（例えば、画面データなど）を格納する場所が固定されていれば、上記第３および第４の書き込みコマンドに上記場所を示す情報を含める必要がないが、本実施形態では、第３および第４の書き込みコマンドに当該情報が含まれている。これにより、制御用ホストコンピュータ１７は、フラッシュＲＯＭ３６ｂの記憶領域のうち、所望の格納場所のファイルに、送信したデータ列Ｄｓを格納させることができる。
【００６８】
以下では、画面データファイルを示すデータ列Ｄｓの格納に充分なバッファ領域ＡＢが確保できた場合における各装置の動作と、できなかった場合の動作とを、図５〜図１２を参照しながら、順番に説明する。
【００６９】
図５に示すステップ１（以下では、Ｓ１のように略称する）において、制御用ホストコンピュータ１７の分割処理部８１は、送信すべきデータ列Ｄｓを部分データ列Ｄｐ…に分割し、全部分データ列Ｄｐ…の送信が終了するまでの間（Ｓ２にて、YES になるまでの間）、Ｓ３〜Ｓ７の処理を繰り返す。
【００７０】
具体的には、制御用ホストコンピュータ１７のコマンド生成部８２は、Ｓ３において、上記各部分データ列Ｄｐを伝送し、プログラマブル表示器１３から異常通知を受領したか否かを判定する（Ｓ４）。
【００７１】
一方、プログラマブル表示器１３の受信処理部５１は、制御用ホストコンピュータ１７から部分データ列Ｄｐを受け取ると（図６に示すＳ２１にて、YES の場合）、Ｓ２２において、当該部分データ列Ｄｐをバッファ領域ＡＢに格納できるかを判定する。なお、受信処理部５１は、これまでに確保したバッファ領域ＡＢでは、部分データ列Ｄｐを格納できない場合、メモリ管理部４１へ指示して、バッファ領域ＡＢの拡大を試みる。
【００７２】
ここでは、プログラマブル表示器１３がデータ列Ｄｓの格納に充分なバッファ領域ＡＢを確保できた場合について説明しているので、上記Ｓ２２の判定は、YES となる。この場合、受信処理部５１は、制御用ホストコンピュータ１７へ異常通知を送信せず、制御用ホストコンピュータ１７から送られてくる部分データ列Ｄｐを順次受信して、バッファ領域ＡＢに格納する（Ｓ２３）。
【００７３】
この場合、プログラマブル表示器１３が異常通知を送信しないので、制御用ホストコンピュータ１７のコマンド生成部８２は、上記Ｓ４において、常に、異常通知の受領なし（NO）と判定する。したがって、コマンド生成部８２は、全部分データ列Ｄｐ…の送信が終了するまでの間、Ｓ３およびＳ４の処理を繰り返す。これにより、図７中、ｔ１〜ｔ２の期間に示すように、データ列Ｄｓを構成する全部分データ列Ｄｐ…は、上述したいずれのコマンドを間に挟むことなく伝送される。
【００７４】
さらに、全部分データ列Ｄｐ…の伝送が終了すると（図５に示すＳ２にて、YES の場合）、コマンド生成部８２は、Ｓ１１において、当該全部分データ列Ｄｐ…の伝送に関する異常通知を受け取ったか否かを判定する。
【００７５】
ここでは、上述したように、異常通知が受け取られていないので、当該Ｓ１１の判定は、NOになる。したがって、コマンド生成部８２は、Ｓ１２において、上記第４の書き込みコマンドを送信し、上記全部分データ列Ｄｐ…を、画面データとしての格納場所のファイルに格納するように指示する（図７中、ｔ３の時点）。
【００７６】
一方、プログラマブル表示器１３の受信処理部５１は、当該第４の書き込みコマンドを受領すると（図６に示すＳ２１、Ｓ３１、Ｓ４１、Ｓ５１にてNOの場合）、Ｓ５３において、アクセス処理部５２に指示して、バッファ領域ＡＢに格納されていた全部分データ列Ｄｐ…を、上記第４の書き込みコマンドにて指定された格納場所のファイルとして、フラッシュＲＯＭ３６ｂに書き込ませる。（図７中、ｔ４〜ｔ５の期間）。なお、上述したように、本実施形態では、アクセス処理部５２は、上記受信処理部５１の指示に従い、上記全部分データ列Ｄｐ…を、作業用のファイルに書き込んだ後、ファイルの論理的な格納場所を変更することによって、当該全部分データ列Ｄｐ…を当該格納場所に格納している。
【００７７】
一例として、図８に示すように、全部分データ列Ｄｐ０〜Ｄｐ４が、メモリ３６ａのバッファ領域ＡＢに確保された、互いに非連続な記憶領域Ｍ１・Ｍ２に格納された後、第４の書き込みコマンドを受け付けた場合、アクセス処理部５２は、当該部分データ列Ｄｐ０〜Ｄｐ４を、フラッシュＲＯＭ３６ｂに書き込むことができる。なお、図８では、一例として、記憶領域Ｍ１に部分データ列Ｄｐ３・Ｄｐ４が格納され、記憶領域Ｍ２に部分データ列Ｄｐ０〜Ｄｐ２が格納されている場合を例示している。また、図８では、フラッシュＲＯＭ３６ｂの記憶領域は、論理的な記憶領域を示しており、全部分データ列Ｄｐ０〜Ｄｐ４が、あるファイルに連続して書き込まれている。
【００７８】
これとは逆に、例えば、画面データのデータ量がバッファ領域ＡＢとして確保可能な記憶容量の上限を超えていたり、プログラマブル表示器１３の他の処理がメモリ３６ａの記憶領域を占有したりして、プログラマブル表示器１３が上記データ列Ｄｓの格納に充分なバッファ領域ＡＢを確保できなかった場合は、上記各装置１７・１３は、以下に示すように動作する。
【００７９】
すなわち、これまで送られてきた部分データ列Ｄｐをバッファ領域ＡＢに格納できている間は、上記各装置１７・１３は、上記と同様に動作しており、制御用ホストコンピュータ１７は、各部分データ列Ｄｐを送信し、プログラマブル表示器１３は、これらの部分データ列Ｄｐ…をバッファ領域ＡＢに格納している（図９中、ｔ１１〜ｔ１２の期間）。
【００８０】
ただし、今度の場合は、上述したように、全部分データ列Ｄｐ…の格納に充分なバッファ領域ＡＢを確保できない。したがって、プログラマブル表示器１３の受信処理部５１は、いずれかの部分データ列Ｄｐが伝送されようとしたときに、当該部分データ列Ｄｐをバッファ領域ＡＢに格納できないことを検出する。この場合（図６に示すＳ２２にて、NOの場合）、受信処理部５１は、Ｓ２４において、制御用ホストコンピュータ１７へ異常通知を送信する（図９に示すｔ１３の時点）。
【００８１】
例えば、図１０の状態では、図８と同様、記憶領域Ｍ１およびＭ２が確保されているが、送信側としての制御用ホストコンピュータ１７が送信しようとしているデータ列Ｄｓは、部分データ列Ｄｐ０〜Ｄｐ１１に分割されているので、これらの部分データ列Ｄｐ０〜Ｄｐ１１を全て記憶領域Ｍ１およびＭ２に格納できない。したがって、部分データ列Ｄｐ０〜Ｄｐ４が格納された時点で、それ以上の部分データ列（この場合は、Ｄｐ５）を格納できないことが検出され、異常通知が送信される。
【００８２】
一方、制御用ホストコンピュータ１７のコマンド生成部８２は、異常通知を受領すると（図５に示すＳ４にて、YES の場合）、Ｓ５において、当該異常通知が、データ列Ｄｓの送信の間に初めて通知されたものか否かを判断する。この場合は、初回の異常通知なので、コマンド生成部８２は、Ｓ６において、第１の書き込みコマンドをプログラマブル表示器１３に送信して、バッファ領域ＡＢに格納されていた、データ列Ｄｓに関連する部分データ列Ｄｐを、フラッシュＲＯＭ３６ｂに書き込むように指示する（図９に示すｔ１４の時点）。
【００８３】
さらに、プログラマブル表示器１３の受信処理部５１は、当該第１の書き込みコマンドを受信すると（図６に示すＳ２１にてNO、Ｓ３１にてYES の場合）、Ｓ３２において、アクセス処理部５２に指示して、バッファ領域ＡＢに格納されていた上記部分データ列Ｄｐ…を、フラッシュＲＯＭ３６ｂのうち、フラッシュＲＯＭ３６ｂの作業用のファイルに順次書き込ませる（図９中、ｔ１５〜ｔ１６の期間）。
【００８４】
ここで、アクセス処理部５２が上記各部分データ列Ｄｐ…をフラッシュＲＯＭ３６ｂに順次書き込んでいくと、バッファ領域ＡＢのうち、これらの部分データ列Ｄｐ…を書き込んでいた領域が順次空いていくので、制御用ホストコンピュータ１７の分割処理部８１が次の部分データ列Ｄｐの送信を開始しても、受信処理部５１は、当該部分データ列Ｄｐを格納できるようになる。
【００８５】
上記構成では、例えば、ｔ１５〜ｔ１６の期間とｔ１７〜ｔ１８の期間とが重なっている期間のように、アクセス処理部５２がバッファ領域ＡＢに格納された部分データ列ＤｐをフラッシュＲＯＭ３６ｂへ順次書き込んでいる間も、受信処理部５１は、次の部分データ列Ｄｐを受信することができる。したがって、書き込み期間と受信期間とを別個に設ける構成と比較して、データ列Ｄｓの最初の伝送を開始してから、データ列Ｄｓの最後をフラッシュＲＯＭ３６ｂに書き込み終えるまでの期間を短縮できる。
【００８６】
なお、上記分割処理部８１は、受信処理部５１が格納できることを制御用ホストコンピュータ１７へ伝えてから、次の部分データ列Ｄｐの送信を開始してもよいが、本実施形態に係る分割処理部８１は、プログラマブル表示器１３の負担をより軽減するために、コマンド生成部８２がコマンドを送信してから、予め定められた期間が経過した時点（図９に示すｔ１７の時点）で、次の部分データ列Ｄｐの送信を開始している。ここで、当該期間は、アクセス処理部５２による書き込み速度や部分データ列Ｄｐの大きさなどに基づいて、アクセス処理部５２の書き込みによって、バッファ領域ＡＢに、次の部分データ列Ｄｐの送信に充分な空き領域が形成される程度の値に設定されている。
【００８７】
例えば、図１０は、部分データ列Ｄｐ０〜Ｄｐ４をフラッシュＲＯＭ３６ｂに格納した結果、上記記憶領域Ｍ１・Ｍ２が空いた状態を示してる。これにより、受信処理部５１は、図１１に示すように、次の部分データ列Ｄｐ５…を順次記憶領域Ｍ１・Ｍ２に格納できるようになる。なお、図１１では、説明の便宜上、フラッシュＲＯＭ３６ｂに部分データ列Ｄｐ０〜Ｄｐ４が書き込まれ後に、次の部分データ列Ｄｐ５…が格納される状態を図示しているが、上述したように、フラッシュＲＯＭ３６ｂへの書き込みと、新たな部分データ列Ｄｐの受信とは並列して行われる。より詳細には、アクセス処理部５２が上記各部分データ列Ｄｐ…をフラッシュＲＯＭ３６ｂに順次書き込んでいき、バッファ領域ＡＢのうち、これらの部分データ列Ｄｐ…を書き込んでいた領域が順次空いていくと、受信処理部５１は、この順次空いていく領域に、新たに受信した部分データ列Ｄｐを格納していく。
【００８８】
その後は、次に送信する部分データ列Ｄｐをバッファ領域ＡＢに格納できなくなるか、あるいは、データ列Ｄｓの伝送が終了するまでの間（ｔ１７〜ｔ１８の期間）、制御用ホストコンピュータ１７およびプログラマブル表示器１３は、上記ｔ１１〜ｔ１２までの期間と同様の処理を繰り返し、制御用ホストコンピュータ１７から送られる部分データ列Ｄｐは、バッファ領域ＡＢに順次格納されていく。
【００８９】
ここで、データ列Ｄｓの伝送が終了するまでの間に、次に送信する部分データ列Ｄｐをバッファ領域ＡＢに格納できなくなると（図６に示すＳ２２にてNOの場合）、プログラマブル表示器１３の受信処理部５１は、上記の時点ｔ１３と同様に、ｔ１９の時点において、異常通知を送信し（図６に示すＳ２４）、制御用ホストコンピュータ１７のコマンド生成部８２は、異常通知の受領を検出する（図５に示すＳ４にてYES の場合）。
【００９０】
ただし、この場合は、異常通知の受領が初回ではないので、コマンド生成部８２は、時点ｔ２０において、第２の書き込みコマンドを送信して、プログラマブル表示器１３に追記を指示する（図５に示すＳ７）。一方、第２の書き込みコマンドを受信した場合、（図６に示すＳ２１、Ｓ３１にてNO、Ｓ４１にてYES の場合）、プログラマブル表示器１３の受信処理部５１は、アクセス処理部５２へ指示して、バッファ領域ＡＢに格納されていた上記部分データ列Ｄｐ…を、上記Ｓ３２にて生成した作業用のファイルに順次追記させる（ｔ２１〜ｔ２２の期間）。
【００９１】
例えば、図１２は、図１１の後、部分データ列Ｄｐ５〜Ｄｐ９が各記憶領域Ｍ１・Ｍ２に格納され、さらに、アクセス処理部５２が、上記第２の書き込みコマンドに応じて、当該部分データ列Ｄｐ５〜Ｄｐ９をフラッシュＲＯＭ３６ｂに追記しようとしている状態を示している。
【００９２】
また、制御用ホストコンピュータ１７の分割処理部８１は、上記ｔ１７時点と同様、ｔ２３の時点において、次の部分データ列Ｄｐの送信を開始する。なお、図９では、特に記載していないが、上記ｔ１７〜ｔ２２の動作は、次に送信する部分データ列Ｄｐをバッファ領域ＡＢに格納できなくなる度に繰り返される。
【００９３】
一方、ｔ２４の時点において、データ列Ｄｓの伝送が終了すると（図５に示すＳ２にて、YES の場合）、コマンド生成部８２は、上記Ｓ１１において、データ列Ｄｓの送信中に、異常通知を受信したか否かを判断する。この場合は、異常通知を受信しているので、コマンド生成部８２は、Ｓ１３において、第３の書き込みコマンドを送信して、バッファ領域ＡＢに格納されていた、データ列Ｄｓに関連する部分データ列Ｄｐを、これまでにフラッシュＲＯＭ３６ｂに書き込んでいた上記データに追記した後で、指定した場所に書き込むように指示する（ｔ２５の時点）。
【００９４】
一方、第３の書き込みコマンドを受信した場合、（図６に示すＳ２１、Ｓ３１、Ｓ４１にてNO、Ｓ５１にてYES の場合）、プログラマブル表示器１３の受信処理部５１は、アクセス処理部５２へ指示して、バッファ領域ＡＢに格納されていた上記部分データ列Ｄｐ…を、上記Ｓ３２（あるいは、さらにＳ４２）にて生成（あるいは、さらに更新）したファイルに順次追記させた後、上記指定された格納場所に移動させる（ｔ２６〜ｔ２７の期間）。
【００９５】
ここで、比較例として、コマンドを送信した後、書き込むべきデータ列を送信する構成では、制御用ホストコンピュータが、事前に何回に分けて送信するかを判定するために、バッファ領域ＡＢの大きさを知っている必要があり、プログラマブル表示器１３は、事前にバッファ領域ＡＢの大きさ通知する必要がある。また、プログラマブル表示器１３において、バッファ領域ＡＢとして確保可能な記憶領域の大きさが変化しても、その変化に追従することが難しい。したがって、効率的なメモリ管理が難しくなってしまう。また、適切なバッファ領域ＡＢの大きさを正確に予測しようとすると、プログラマブル表示器１３の負担が大きくなってしまう。
【００９６】
これに対して、本実施形態では、部分データ列Ｄｐの後に、コマンドが送っている。したがって、制御用ホストコンピュータ１７は、事前にコマンドを送信する構成とは異なり、プログラマブル表示器１３で確保されるバッファ領域ＡＢの大きさに拘わらず、部分データ列Ｄｐを送信し、プログラマブル表示器１３からの異常通知の有無に応じて変更するだけでよい。
【００９７】
また、プログラマブル表示器１３は、コマンドが送られるまでの間は、コマンドの内容に拘わらず、常に同一の処理、すなわち、部分データ列Ｄｐをバッファ領域ＡＢに格納するという処理を行い、コマンドが発行された時点で、バッファ領域ＡＢに格納された部分データ列Ｄｐを、コマンドに従ってフラッシュＲＯＭ３６ｂに書き込むだけでよい。
【００９８】
このように、上記構成では、追記すべきか否かは、部分データ列Ｄｐ…を送信した後で、伝送が終了したか否かと合わせ、制御用ホストコンピュータ１７側で判定される。したがって、プログラマブル表示器１３は、上記書き込みコマンドを受け付けるまでの間、制御用ホストコンピュータ１７から受け取った部分データ列Ｄｐ…をバッファ領域ＡＢに格納すると共に、格納できない場合は、異常通知を送信するだけでよく、書き込みコマンドを受け付けた時点で、コマンドに従って、新たな書き込みを行うか、追記するかを選択すればよい。この結果、先にコマンドを送信する構成と比較して、プログラマブル表示器１３の負担を軽減できる。
【００９９】
また、当該構成では、異常通知を受け取ってから、いずれのコマンドを送信するかを判定できるので、プログラマブル表示器１３において、バッファ領域ＡＢの大きさが変更されても、プログラマブル表示器１３および制御用ホストコンピュータ１７の上記動作を変更することなく、適切なコマンドが送信される。したがって、プログラマブル表示器１３は、制御用ホストコンピュータ１７との通信処理を阻害することなく、より柔軟にメモリ３６ａを管理できる。
【０１００】
ところで、上記では、データ列Ｄｓの伝送によって、フラッシュＲＯＭ３６ｂに格納されている画面データファイル全体を更新する場合について説明したが、本実施形態に係る制御用ホストコンピュータ１７およびプログラマブル表示器１３は、ファイルの一部のみを更新することもできる。
【０１０１】
具体的には、本実施形態において、第３および第４の書き込みコマンドには、上述した格納場所の情報に加えて、当該格納場所におけるオフセットを示すオフセット情報も含めることができる。また、コマンド生成部８２がオフセット情報を含む第３または第４の書き込みコマンドを送信した場合、それを受信した受信処理部５１は、全部分データ列Ｄｐ…からなるデータ列Ｄｓを移動する際、上記格納場所のうち、上記オフセット情報で指定されたオフセットに、当該データ列Ｄｓを移動する。
【０１０２】
これにより、データの一部分のみが更新された場合でも全てのデータを伝送する構成と比較して、制御用ホストコンピュータ１７およびプログラマブル表示器１３間で伝送されるデータ量を削減でき、データ更新に要する時間を削減できる。
【０１０３】
なお、本実施形態に係るプログラマブル表示器１３は、フラッシュＲＯＭ３６ｂにファイルを記憶する際、１ファイルの大きさが、単一のブロックに収まらない場合、１ファイルのデータを、複数のブロックに連続して記憶すると共に、各ファイルがいずれのブロックから構成されているかも記憶している。したがって、ファイル全体を、物理アドレスが連続した記憶領域に格納する必要がなく、ファイルの１部分を更新する場合であっても、ファイル全体を書き換える必要がない。
【０１０４】
ところで、本実施形態に係る制御用ホストコンピュータ１７の分割処理部８１は、ファイルを示すデータ列Ｄｓを部分データ列Ｄｐに分割して、プログラマブル表示器１３に送信する際、各部分データ列Ｄｐにチェーン番号を示す情報を付加して送信している。当該チェーン番号は、あるコマンドと、そのコマンドによってフラッシュＲＯＭ３６ｂに書き込まれる部分データ列Ｄｐ同士であって、互いに同一のファイルに順次書き込まれる部分データ列Ｄｐ同士とが互いに同じ値を持つように設定されている。
【０１０５】
一方、プログラマブル表示器１３の受信処理部５１は、互いに同じチェーン番号を示す情報が付された部分データ列Ｄｐ同士を、互いに同じデータ列Ｄｓに含まれる部分データ列Ｄｐとして管理している。具体的には、本実施形態に係る受信処理部５１は、各部分データ列Ｄｐを、そのチェーン番号に関連付けて、バッファ領域ＡＢに格納できる。
【０１０６】
例えば、本実施形態に係る受信処理部５１およびアクセス処理部５２は、上述したように、バッファ領域ＡＢの各小領域Ｍａをチェーン状に管理しており、上記受信処理部５１は、最初の小領域（例えば、Ｍａ１）を示す情報Ｄｆを、チェーン番号のそれぞれに対応付けて記憶している。
【０１０７】
さらに、上記制御用ホストコンピュータ１７のコマンド生成部８２は、書き込みコマンドを送信する際、チェーン番号を特定する情報を付加して送信することができ、上記受信処理部５１は、当該情報を付加した書き込みコマンドを受信した場合、バッファ領域ＡＢに格納されている部分データ列Ｄｐのうち、当該情報の示すチェーン番号に関連付けて記憶された部分データ列Ｄｐのみを、フラッシュＲＯＭ３６ｂに書き込むことができる。なお、上記コマンド生成部８２は、例えば、分割処理部８１からの通知などによって、現在伝送中の各部分データ列Ｄｐのチェーン番号を把握できる。
【０１０８】
上記構成では、各部分データ列Ｄｐにチェーン番号を示す情報が付されており、受信処理部５１は、各部分データ列Ｄｐを、そのチェーン番号に関連付けて、バッファ領域ＡＢに格納している。
【０１０９】
したがって、制御用ホストコンピュータ１７が複数のファイルを同時に伝送したとしても、より正確には、分割処理部８１が、あるファイルに関連する部分データ列Ｄｐのうち、最初の部分データ列Ｄｐの送信を開始してから、最後の部分データ列Ｄｐの送信を完了するまでの期間（そのファイルの伝送期間）と、他のファイルの伝送期間とが、重なっていたとしても、受信処理部５１およびアクセス処理部５２は、あるファイルに関連する部分データ列Ｄｐと、他のファイルに関連する部分データ列Ｄｐとを区別することができる。この結果、制御用ホストコンピュータ１７が、それぞれの伝送期間が重なるように各ファイルを伝送したとしても、プログラマブル表示器１３は、何ら支障なく、各ファイルに関連する部分データ列Ｄｐを正しく受信すると共に、各ファイルを、フラッシュＲＯＭ３６ｂに正しく書き込むことができる。
【０１１０】
なお、この場合、コマンド生成部８２は、異常通知を受け付けたときに、現在伝送中の全ファイルに関連するチェーン番号を示す情報を付加して、それぞれ用の書き込みコマンドを送信してもよい。また、コマンド生成部８２は、例えば、各ファイルの残りのデータ量（未送付のデータ量）と、各ファイルの書き込んでいないデータ量となどを分割処理部８１から取得すると共に、それに基づいて、各ファイル毎に書き込みコマンド送付の要否を判定してもよい。この場合、残りデータ量が少ないファイルの書き込みコマンドの送付を停止することができ、残りのデータ量とまとめて書き込みを指示できる。なお、各ファイルの書き込んでいないデータ量は、未だ書き込みコマンドを送信していない場合は、これまでに送信した部分データ列Ｄｐのデータ量、既に書き込みコマンドを送信している場合は、前回書き込みコマンドを送付した後に送信した部分データ列Ｄｐのデータ量として検出できるので、コマンド生成部８２は、分割処理部８１から、これらの情報を受け取れば、各ファイルの書き込んでいないデータ量を算出できる。
【０１１１】
ところで、上記では、複数のファイルを送信する場合、各ファイルを個別に伝送する場合について説明した。これに対して、以下では、複数のファイルを１つのデータ列Ｄｓａにまとめた後、それを部分データ列Ｄｐに分割して送信する構成について説明する。
【０１１２】
すなわち、本変形例に係る制御用ホストコンピュータ１７のサーバ部７３ａは、図１の構成と略同様であるが、図１３に示すように、送信すべきデータ列Ｄｓａの生成源として、ファイル統合部８３が設けられている。当該ファイル統合部８３は、例えば、作画処理部７５などの部材から、プログラマブル表示器１３へ送信すべきファイルを複数受け取ると、これらのファイルをまとめて、それらを示す１つのデータ列Ｄｓａを生成し、上述したデータ列Ｄｓの代わりに当該データ列Ｄｓａを分割処理部８１へ与えることができる。
【０１１３】
上記ファイル統合部８３の生成する上記データ列Ｄｓａには、図１４に示すように、転送すべき複数のファイルを示すデータ列Ｄに加えて、各ファイルを示すデータ列が、データ列Ｄｓａのどの部分を占めているかを特定するためのファイル情報ＦＩが含まれている。本変形例では、一例として、上記データ列Ｄは、各ファイルＦ１…の全体を示すデータ列Ｄ１…を順番に連結して生成されており、上記ファイル情報ＦＩは、各ファイルＦ１…を示すデータ列Ｄ１…の先頭アドレスを含んでいる。なお、当該先頭アドレスは、データ列Ｄｓａまたはデータ列Ｄにおけるオフセット（データ列Ｄｓａまたはデータ列Ｄの先頭アドレスを０とする相対アドレス）で指定されている。また、上記データ列Ｄｓａでは、上記データ列Ｄの前にファイル情報ＦＩを配置してもよいが、本変形例では、より早い時点で、データ列Ｄｓａの送信を開始できるように、データ列Ｄの後にファイル情報ＦＩが配置されている。
【０１１４】
また、新たな書き込みコマンドによって、当該データ列Ｄｓａの分離・書き込みを指示してもよいが、本変形例に係るコマンド生成部８２は、第３および第４の書き込みコマンドにおいて、特定のパターンにマッチしたファイル名（例えば、拡張子が、”.con”であるファイル名）を指定することによってデータ列Ｄｓａの分離および書き込みを指示している。これに伴なって、上記ファイル統合部８３は、各ファイルの格納先を示す情報も、上記ファイル情報ＦＩに含めている。
【０１１５】
一方、プログラマブル表示器１３は、図１の構成と略同様であるが、図１３に示すように、アクセス処理部５２に代えて、アクセス処理部５２ａが設けられている。当該アクセス処理部５２ａは、図１に示すアクセス処理部５２の処理に加えて、ファイル情報ＦＩを含むデータ列Ｄｓａの分離・書き込みが指示された場合、データ列Ｄｓａに含まれるファイル情報ＦＩに基づいて、データ列Ｄｓａに含まれる上記データ列Ｄを複数のファイルに分離できる。
【０１１６】
本変形例では、上述したように、第３および第４の書き込みコマンドを、通常のデータ列Ｄｓの書き込み指示と、データ列Ｄｓａの分離・書き込み指示との間で兼用すると共に、ファイル情報ＦＩに、各ファイルの格納場所が含まれている。
【０１１７】
これに伴なって、当該アクセス処理部５２ａは、第３および第４の書き込みコマンドにて指定された場所が、上記特定のパターンにマッチするか否かを判定し、マッチしている場合、分離・書き込みが指示されたと判断している。さらに、上記アクセス処理部５２ａは、データ列Ｄｓａの分離・書き込みの指示を受け付けた場合、データ列Ｄｓａに含まれるファイル情報ＦＩに基づいて、データ列Ｄｓａ中の各データ列Ｄ１…の配置を特定し、各データ列Ｄ１…を、それぞれ別のファイルＦ１…に分離すると共に、各ファイルの格納場所を上記ファイル情報ＦＩの示す格納場所に設定している。
【０１１８】
本変形例では、データが破損する可能性を低減するため、データ列Ｄｓａを、作業用のファイルとして、フラッシュＲＯＭ３６ｂに書き込んだ後、当該データ列Ｄｓａを示す作業用のファイルを分割している。ただし、本変形例に係るフラッシュＲＯＭ３６ｂには、上述したファイルシステムが構築されている。したがって、作業用のファイルを分離する際、フラッシュＲＯＭ３６ｂのアクセス単位となる領域中に、上記各ファイルの区切りが入っている場合（複数のファイルを示すデータ列の一部が当該領域中に混在している場合）を除いては、索引用の記憶領域（例えば、ディレクトリエントリなど）を更新することによって、データの実体を移動させることなく、ファイルを分離できる。この結果、フラッシュＲＯＭ３６ｂに書き込んだ後、上記作業用のファイルを分離し、それぞれの論理的な格納場所を変更しているにも拘わらず、データの実体を全て移動する構成に比べて、分離・書き込み時に更新する必要のあるデータのデータ量は、低減されている。
【０１１９】
当該構成でも、図１の構成と同様に追記すべきか否かは、部分データ列Ｄｐ…を送信した後で、伝送が終了したか否かと合わせ、制御用ホストコンピュータ１７側で判定されるので、先にコマンドを送信する構成よりも、プログラマブル表示器１３の負担を軽減できる。
【０１２０】
また、当該構成では、異常通知を受け取ってから、いずれのコマンドを送信するかを判定できるので、プログラマブル表示器１３において、バッファ領域ＡＢの大きさが変更されても、プログラマブル表示器１３および制御用ホストコンピュータ１７の上記動作を変更することなく、適切なコマンドが送信される。したがって、プログラマブル表示器１３は、制御用ホストコンピュータ１７との通信処理を阻害することなく、より柔軟にメモリ３６ａを管理できる。
【０１２１】
なお、上記では、第３および第４の書き込みコマンドにて指定する格納場所が、特定のパターンにマッチしているか否かによって、分離・書き込みを指示したが、これに限るものではなく、第３および第４の書き込みコマンドとは別に、それぞれに対応する分離・書き込み用の書き込みコマンドを設けてもよい。また、上記では、書き込みコマンドではなく、ファイル情報ＦＩによって、各ファイルの格納場所を指定したが、これに代えて／加えて、書き込みコマンド中に、各ファイルの格納場所の情報を含めてもよい。いずれの場合であっても、上記と同様の効果が得られる。
【０１２２】
また、上記では、ファイル情報ＦＩに、各ファイルを示すデータ列Ｄ１…の先頭アドレスが含まれている場合を例にして説明したが、データ列Ｄｓａ中の各データ列Ｄ１…の配置を特定できれば、例えば、先頭アドレスに代えて／加えて、各データ列Ｄ１…の終了アドレスあるいはサイズを用いてもよい。さらに、これら先頭／終了アドレスまたはサイズの組み合わせを用いてもよい。また、データ列Ｄでは、１つのファイルを示すデータ列（例えばＤ１）が、データ列Ｄで連続している場合を例にして説明したが、複数に分割されていてもよい。いずれの場合であっても、上記ファイル情報ＦＩに基づいて、データ列Ｄｓａにおいて、各ファイルを示すデータ列の配置を特定でき、各ファイルに復元できれば、いずれのファイル情報ＤＩを用いても同様の効果が得られる。
【０１２３】
ところで、上記では、データ列Ｄｓ（Ｄｓａ）が圧縮されていない構成について説明した。これに対して、以下では、圧縮した後のデータ列を伝送すると共に、解凍時に確保可能な作業領域の大きさを低減可能な構成について説明する。なお、当該構成は、後述するように図１の構成にも適用できるが、以下では、図１３の構成に適用した場合を例にして説明する。
【０１２４】
すなわち、本変形例に係る制御用ホストコンピュータ１７のサーバ部７３ｂは、図１３の構成と略同様であるが、図１５に示すように、ファイル統合部８３に代えて、上記圧縮後のデータ列Ｄｓｂを生成可能なファイル統合部（圧縮手段）８３ｂが設けられている。当該ファイル統合部８３ｂは、プログラマブル表示器１３へ送信すべきファイルを示すデータ列を、予め定められたデータ量毎に分割した後、それぞれを圧縮し、それらをまとめて生成したデータ列Ｄｓｂを、上述したデータ列Ｄｓａの代わりに、分割処理部８１へ与えることができる。
【０１２５】
複数のファイルをまとめて伝送する場合を例にして、データ列Ｄｓｂの生成処理について詳細に説明すると、ファイル統合部８３ｂは、例えば、作画処理部７５などの部材から、プログラマブル表示器１３へ送信すべきファイルを複数受け取ると、図１６に示すように、図１４と同様に、転送すべき複数のファイルを示すデータ列Ｄを生成する。なお、図１６では、図１４と同様に、当該データ列Ｄが、各ファイルＦ１〜Ｆ３の全体をそれぞれ示すデータ列Ｄ１〜Ｄ３を順番に連結して生成されている場合を例示している。
【０１２６】
さらに、ファイル統合部８３ｂは、当該データ列Ｄを、予め定められたデータ量Ｌ毎に分割して、分割データ列Ｄｄ（図中では、Ｄｄ１１〜Ｄｄ１４）を生成する。なお、データ量Ｌを、ある程度の幅を持って設定しておき、その幅の内で、各分割データ列Ｄｄが均一になるように分割してもよいが、図１６では、上記データ量Ｌを、ある１つの固定値に設定し、余った部分は、新たな分割データ列Ｄｄ（図の例では、最後の分割データ列Ｄｄ１４）して生成する場合を例示している。
【０１２７】
また、上記ファイル統合部８３ｂは、各分割データ列Ｄｄ１１〜Ｄｄ１４を、それぞれ符号化して、圧縮後分割データ列Ｄａ１１〜Ｄａ１４を生成する。なお、本変形例では、符号化方法として、データ量を圧縮可能な符号化方法を採用している。また、各圧縮後分割データ列Ｄａ１１〜Ｄａ１４は、各分割データ列Ｄｄ１１〜Ｄｄ１４のうち、末尾に付した数字が互いに同じにものに対応しており、例えば、各圧縮後分割データ列Ｄａ１１は、分割データ列Ｄｄ１１を圧縮して生成されたデータ列である。
【０１２８】
さらに、上記ファイル統合部８３ｂは、上記各圧縮後分割データ列Ｄａ１１〜Ｄａ１４をまとめて、圧縮後データ列Ｄａを生成する。本変形例では、まとめ方の一例として、各圧縮後分割データ列Ｄａ１１〜Ｄａ１４を連結して圧縮後データ列Ｄａを生成する方法を採用している。
【０１２９】
また、第３および第４の書き込みコマンドとは別のコマンドを用意し、ファイル情報ＦＩおよび圧縮マージ情報ＭＩ（後述）と同等の情報を含めてもよいが、本変形例では、図１３の構成と同様に、圧縮する場合にも第３および第４の書き込みコマンドを用いており、これらの書き込みコマンドにおいて、特定のパターンにマッチしたファイル名（例えば、拡張子が、”.pac”であるファイル名）を指定することによってデータ列Ｄｓｂの解凍・書き込みを指示している。
【０１３０】
これに伴なって、本変形例に係るファイル統合部８３ｂは、上記圧縮後データ列Ｄａに、ファイル情報ＦＩと、圧縮マージ情報ＭＩとを付加して、データ列Ｄｓｂを生成できる。当該ファイル情報ＦＩは、図１４と同様のものであって、各ファイルを示すデータ列が、データ列Ｄｓｂのどの部分を占めているかを特定するための情報である。一方、当該圧縮マージ情報ＭＩは、上記圧縮後データ列Ｄａにおいて、各圧縮後分割データ列Ｄａ１１〜Ｄａ１４が、データ列Ｄａのどの部分を占めているかを特定するためのものであって、上記ファイル情報ＦＩと同様に、例えば、各圧縮後分割データ列Ｄａ１１〜Ｄａ１４の先頭アドレスなどを含んでいる。ただし、圧縮マージ情報ＭＩは、上記ファイル情報ＦＩとは異なってファイルの格納場所の情報は含まれていない。なお、データ列Ｄｓｂには、必要に応じて、ヘッダが含まれていてもよい。
【０１３１】
一方、本変形例に係るプログラマブル表示器１３では、図１５に示すように、アクセス処理部５２ａに代えて、アクセス処理部５２ｂが設けられている。当該アクセス処理部５２ｂは、図１３に示すアクセス処理部５２ａの処理に加えて、圧縮マージ情報ＭＩを含むデータ列Ｄｓｂの復号・書き込みが指示された場合、データ列Ｄｓｂに含まれる圧縮マージ情報ＭＩに基づいて、上記データ列Ｄを復号できる。また、アクセス処理部５２ｂは、アクセス処理部５２ａと同様、ファイル情報ＦＩに基づいて、復号されたデータ列Ｄを分割している。
【０１３２】
より詳細に説明すると、本変形例では、上述したように、第３および第４の書き込みコマンドを、通常のデータ列Ｄｓの書き込み指示と、データ列Ｄｓａの解凍・書き込み指示との間で兼用すると共に、データ列Ｄｓｂにファイル情報ＦＩおよび圧縮マージ情報ＭＩが含まれている。
【０１３３】
これに伴なって、本変形例に係るアクセス処理部５２ｂは、第３および第４の書き込みコマンドにて指定された場所が、上記特定のパターンにマッチするか否かを判定し、マッチしている場合、解凍・書き込みが指示されたと判断している。さらに、上記アクセス処理部５２ｂは、データ列Ｄｓｂの解凍・書き込みの指示を受け付けた場合、データ列Ｄｓｂに含まれる圧縮マージ情報ＭＩに基づいて、データ列Ｄｓｂ中の各圧縮後分割データ列Ｄａ１１〜Ｄａ１４の配置を特定し、各圧縮後分割データ列Ｄａ１１〜Ｄａ１４を順番に解凍し、解凍後のデータ列Ｄａ１１〜Ｄａ１４を、順次、作業用のファイルに追記している。
【０１３４】
ここで、作業用のファイルに上記データ列Ｄｓｂを格納するか否かに拘わらず、アクセス処理部５２ｂは、データを解凍する際、高速処理のために、例えば、メモリ管理部４１へ依頼するなどして、メモリ３６ａ上に解凍処理に必要な記憶容量を持った作業領域ＡＴを確保する。当該記憶容量は、一般に、解凍処理の対象となるデータ列のデータ量が大きい程、大きくなる傾向にあり、比較例として、例えば、上記複数のファイルを示すデータ列Ｄ全体を一度に圧縮すると、その解凍には、非常に大きな記憶容量が必要になってしまう。
【０１３５】
一例として、ファイルＦ１〜Ｆ３の容量が、それぞれ、概ね、１．５〔ＭＢ〕、１〔ＭＢ〕、０．８〔ＭＢ〕であり、それら全体を示すデータ列Ｄ（３．３〔ＭＢ〕）を圧縮すると、概ね、０．９〔ＭＢ〕になる場合、これらのデータ列を解凍するためには、図１７に示すように、４．２〔ＭＢ〕の記憶容量の作業領域ＡＴをメモリ３６ａ上に確保する必要がある。
【０１３６】
これに対して、本変形例に係るアクセス処理部５２ｂは、各圧縮後分割データ列Ｄａ１１〜Ｄａ１４を順番に解凍し、解凍後のデータ列Ｄｄ１１〜Ｄｄ１４を、順次、作業用のファイルに追記している。
【０１３７】
この場合、ある時点において、メモリ３６ａに確保する必要のある作業領域ＡＴの記憶容量は、上記圧縮後分割データ列Ｄａ１１〜Ｄａ１４の１つの解凍処理に必要な容量で充分であり、上記比較例と比較して当該記憶容量を大幅に削減できる。
【０１３８】
例えば、上記の数値例と同様のファイルＦ１〜Ｆ３を示すデータ列Ｄを１〔ＭＢ〕毎に分割して、それぞれ、概ね、０．３〔ＭＢ〕、０．３〔ＭＢ〕、０．２〔ＭＢ〕および０．１〔ＭＢ〕の上記各圧縮後分割データ列Ｄａ１１〜Ｄａ１４を生成する場合、圧縮後分割データ列Ｄａ１１〜Ｄａ１４のいずれを解凍する時点であっても、図１８および図１９に示すように、これらのデータ列を解凍するために必要な記憶容量は、圧縮後分割データ列Ｄａ１１〜Ｄａ１４の合計（約０．９〔ＭＢ〕）と、解凍されるデータ列（Ｄ１１〜Ｄ１４のいずれか）のデータ量（１〔ＭＢ〕）とを加算した値、すなわち、約１．９〔ＭＢ〕もあれば十分である。したがって、上記比較例の場合（４．２〔ＭＢ〕）よりも大幅に上記記憶容量を削減できる。なお、一例として、上記図１８は、データ列Ｄ１１に解凍される場合を例示しており、図１９は、データ列Ｄ１２に解凍される場合を例示している。
【０１３９】
さらに、上記解凍後データ列Ｄｄ１１〜Ｄｄ１４を、順次、作業用のファイルに追記することによって、複数のファイルを示すデータ列Ｄが復元されると、上述した図１３の構成と同様に、アクセス処理部５２ｂは、ファイル情報ＦＩを参照して、当該データ列Ｄを各ファイルに分割する。
【０１４０】
当該構成では、図１および図１３の構成と同様、追記すべきか否かは、部分データ列Ｄｐ…を送信した後で、伝送が終了したか否かと合わせ、制御用ホストコンピュータ１７側で判定されるので、先にコマンドを送信する構成よりも、プログラマブル表示器１３の負担を軽減できる。
【０１４１】
また、当該構成では、異常通知を受け取ってから、いずれのコマンドを送信するかを判定できるので、プログラマブル表示器１３において、バッファ領域ＡＢの大きさが変更されても、プログラマブル表示器１３および制御用ホストコンピュータ１７の上記動作を変更することなく、適切なコマンドが送信される。したがって、プログラマブル表示器１３は、制御用ホストコンピュータ１７との通信処理を阻害することなく、より柔軟にメモリ３６ａを管理できる。
【０１４２】
さらに、本変形例に係る制御用ホストコンピュータ１７は、伝送すべきデータ列Ｄを圧縮した後でプログラマブル表示器１３に送信しているので、両者間に伝送されるデータ量を削減できる。また、制御用ホストコンピュータ１７は、上記データ列を分割した後で、それぞれを圧縮し、それらをまとめたデータ列Ｄｓｂを、プログラマブル表示器１３に送信している。
【０１４３】
したがって、上記比較例の構成、すなわち、上記データ列Ｄの大きさに拘わらず、当該データ列全体を一度に圧縮する構成とは異なって、プログラマブル表示器１３が解凍時にメモリ３６ａ上に確保すべき作業領域ＡＴの大きさを大幅に削減できる。
【０１４４】
なお、上記では、上記データ列Ｄが図１３と同様に複数のファイルを示している場合を例にして説明したが、これに限るものではない。例えば、図１に示すように、複数のファイルを１つのデータ列Ｄｓａ（Ｄｓｂ）にまとめることなく、個別に伝送する構成にも適用できる。この場合、図２０に示すように、上記制御用ホストコンピュータ１７のサーバ部７３ｃには、図１５に示すファイル統合部８３ｂに代えて、符号化部８３ｃが設けられており、当該符号化部８３ｃは、例えば、作画処理部７５などの部材から、プログラマブル表示器１３へ送信すべきファイルを受け取ると、当該ファイルを示すデータ列Ｄを、上記予め定められたデータ量Ｌ毎に分割して、分割データ列Ｄｄ１１…を、それぞれ圧縮して、圧縮後分割データ列Ｄａ１１…を生成すると共に、それらをまとめて圧縮後データ列Ｄａを生成する。なお、この場合、第３および第４の書き込みコマンドを圧縮無の場合と兼用する場合であっても、ファイル情報ＦＩの付加は不要である。また、この場合、上記符号化部８３ｃが特許請求の範囲に記載の圧縮手段に対応する。
【０１４５】
一方、アクセス処理部５２ｂに代えて設けられたアクセス処理部５２ｃは、圧縮マージ情報ＭＩに基づいて、上記圧縮後データ列Ｄａを各圧縮後分割データ列Ｄａ１１…に分割し、それらを順番に解凍できる。
【０１４６】
当該構成でも、データ列Ｄは、分割された後、個別に圧縮されるので、図１６の構成と同様に、制御用ホストコンピュータ１７およびプログラマブル表示器１３間で伝送されるデータ列のデータ量を削減すると共に、解凍時に、プログラマブル表示器１３がメモリ３６ａ上に確保する必要のある作業領域ＡＴの大きさを削減できる。
【０１４７】
ところで、上記では、通信に異常が発生しない場合を例にして説明したが、上記実施形態および各変形例に係るプログラマブル表示器１３は、通信異常が発生したことを検出して、それに対応できるように、以下の構成を備えている方が望ましい。なお、当該構成は、上述した、いずれの構成にも適用できるが、以下では、一例として、図１に示すプログラマブル表示器１３について説明する。
【０１４８】
すなわち、図１に示すように、本実施形態では、送信側となる制御用ホストコンピュータ１７が、送信すべきデータ列Ｄｓを、部分データ列Ｄｐに分割して、受信側となるプログラマブル表示器１３に送信して、メモリ３６ａのバッファ領域ＡＢに格納させると共に、部分データ列Ｄｐの送信後に、書き込みコマンドを送信して、バッファ領域ＡＢの部分データ列ＤｐをフラッシュＲＯＭ３６ｂに格納するように指示している。
【０１４９】
ここで、プログラマブル表示器１３は、書き込みコマンドに応じて、バッファ領域ＡＢの部分データ列ＤｐをフラッシュＲＯＭ３６ｂに格納しているので、途中で通信が途切れてしまった場合には、図２１に示すように、本来送信すべき部分データ列Ｄｐのうち、いずれかの部分データ列Ｄｐが欠落し、フラッシュＲＯＭ３６ｂに中途半端なデータが残ってしまう虞れがある。
【０１５０】
なお、図２１は、制御用ホストコンピュータ１７が、データ列Ｄｓを、部分データ列Ｄｐ０〜Ｄｐ４に分割して送信しているにも拘わらず、通信異常によって、プログラマブル表示器１３が、部分データ列Ｄｐ３およびＤｐ４の受信に失敗した状態を示している。
【０１５１】
この状態で、制御用ホストコンピュータ１７が書き込みコマンドを送信すると、プログラマブル表示器１３は、部分データ列Ｄｐ０〜Ｄｐ２のみをフラッシュＲＯＭ３６ｂに書き込んでしまう。この結果、プログラマブル表示器１３が、最後の書き込みコマンド（第３または第４の書き込みコマンド）に応じて、部分データ列ＤｐをフラッシュＲＯＭ３６ｂに書き込んだとき、それまでに書き込まれた全部分データＤｐは、元のデータ列Ｄｓにはならず、中途半端なデータになってしまう。
【０１５２】
これに対して、本変形例では、送信側の制御用ホストコンピュータ１７（より詳細には、分割処理部８１や図１５に示すファイル統合部８３ａあるいは図２０に示す符号化部８３ｃ）が、全部分データＤｐのいずれかに、全部分データＤｐが正常に伝送されたか否かを確認するための正誤情報を付加できるように構成されており、受信側のプログラマブル表示器１３（より詳細には、受信処理部５１またはアクセス処理部５２〜５２ｃ）が、当該正誤情報に基づいて、全部分データＤｐが正常に伝送されたか否かを確認し、伝送の異常を検出した場合には、異常処理できるように構成されている。
【０１５３】
なお、上記正誤情報としては、例えば、ＣＲＣやチェックサムなどの誤り検出符号や、データサイズ、あるいは、それらの組み合わせなどが挙げられる。また、異常処理としては、例えば、送信側の制御用ホストコンピュータ１７に、異常を通知して、再送を依頼したり、制御用ホストコンピュータ１７やプログラマブル表示器１３のユーザに異常発生を通知するなどの処理が挙げられる。さらに、上記正誤情報を格納する位置としては、例えば、最初の部分データ列Ｄｐ０にヘッダとして付加する方法や、最後の部分データ列（この場合は、Ｄｐ４）に付加する方法などが挙げられる。なお、プログラマブル表示器１３は、例えば、最後の書き込みコマンドによって最後に書き込まれる部分データ列などとして、最後の部分データ列を特定できる。さらに、通信経路の状態（通信途絶の頻度など）によって、どのような正誤情報が適切であるか（あるいは、正誤情報自体が不要であるか）が異なる場合には、上記制御用ホストコンピュータ１７が正誤情報の種類を示す種別情報もプログラマブル表示器１３に伝送し、プログラマブル表示器１３が当該種別情報に基づいて正誤情報の種類を判定する方が望ましい。なお、伝送方法としては、例えば、全部分データ列Ｄｐのいずれかに付加してもよいし、部分データ列Ｄｐとは別に、例えば、書き込みコマンドに、例えば、ファイル名などとして付加して伝送してもよい。ここで、図２２は、ＣＲＣとサイズからなる正誤情報と種別情報とがヘッダとして、最初の部分データ列Ｄｐ０に付加されている場合を例示している。
【０１５４】
上記構成では、プログラマブル表示器１３は、正誤情報に基づいて、全部分データＤｐが正常に伝送されたか否かを確認し、伝送の異常を検出した場合は、異常処理を行うことができる。この結果、例えば、図２１に示すように、部分データ列Ｄｐの伝送中に通信が途絶したとしても、プログラマブル表示器１３は、伝送の異常を検出でき、異常処理によって、フラッシュＲＯＭ３６ｂに中途半端なデータが残ってしまうという不具合を回避できる。
【０１５５】
さらに、上記構成では、種別情報も伝送しているので、通信経路の状態（通信途絶の頻度など）によって、どのような正誤情報が適切であるか（あるいは、正誤情報自体が不要であるか）が異なる場合であっても、制御用ホストコンピュータ１７とプログラマブル表示器１３との間で伝送される正誤情報の種類を、その状態に適した種類の正誤情報に変更できる。
【０１５６】
なお、上記各部材２１〜８３ｃは、ＣＰＵなどの演算手段が、ＲＯＭやＲＡＭなどの記憶手段に格納されたプログラムを実行し、タッチパネルや液晶表示装置などの入出力手段、あるいは、インターフェース回路などの通信回路を制御することによって実現される機能ブロックである。なお、これらの部材のうち、記憶部３６は、例えば、半導体メモリなどの記憶装置自体であってもよい。したがって、これらの手段を有するコンピュータが、上記プログラムを記録した記録媒体（例えば、ＣＤ−ＲＯＭなど）を読み取って、当該プログラムを実行するだけで、本実施形態に係るプログラマブル表示器１３および制御用ホストコンピュータ１７を実現できる。
【０１５７】
また、例えば、シリアルケーブルやＬＡＮ１５あるいは、他の通信路を介してプログラムをダウンロードするためのプログラムが、上記コンピュータに予めインストールされていれば、当該通信路を介して、上記コンピュータへ上記プログラムを配付することもできる。
【０１５８】
なお、上記では、不揮発性記憶装置がフラッシュＲＯＭ３６ｂである場合を例にして説明したが、例えば、ハードディスクドライブなど、他の不揮発性記憶装置でも同様の効果が得られる。また、上記では、不揮発性記憶装置にファイルシステムが構築されており、データ列の実体が格納された記憶領域（物理的な格納場所）にアクセスする際、そのアドレスを、データ列の実体が格納された記憶領域とは異なる索引用の記憶領域（例えば、ディレクトリエントリなど）を参照して特定する場合を例にして説明したが、ファイルシステムを構築せず、連続するデータ列を、物理的に連続した記憶領域に書き込んでもよい。ただし、上記のように、ファイルシステムが構築されていれば、データ列の実体を記憶している物理的な領域を移動しなくても、ファイルを移動できるので、さらに、プログラマブル表示器１３の負担を軽減できる。
【産業上の利用可能性】
【０１５９】
本発明によれば、受信装置の負担を軽減できるので、例えば、制御システムにおける制御用ホストコンピュータからプログラマブル表示器へのデータ送信のように、送信側の方が受信側よりも余力のある通信システムにおける送信装置として広く好適に使用できる。
【図面の簡単な説明】
【０１６０】
【図１】本発明の実施形態を示すものであり、制御システムにおいて、データ伝送に関連する各部材の要部構成を示すブロック図である。
【図２】上記制御システム全体の要部構成を示すブロック図である。
【図３】上記制御システムにおいて、受信装置となるプログラマブル表示器におけるメモリ管理方法を示す図面である。
【図４】上記メモリ管理方法によって管理されるメモリ上に、部分データ列が格納されている状態の例を示す図面である。
【図５】上記制御システムにおいて、送信装置となる制御用ホストコンピュータの動作を示すフローチャートである。
【図６】上記プログラマブル表示器の動作を示すフローチャートである。
【図７】上記両装置間で伝送されるデータを示すタイミングチャートであり、全部分データ列の格納に充分なバッファ領域を確保できた場合を示す図面である。
【図８】上記メモリ上に部分データ列が格納されている状態の例を示すものであり、全部分データ列の格納に充分なバッファ領域を確保できた場合を示す図面である。
【図９】上記両装置間で伝送されるデータを示すタイミングチャートであり、全部分データ列の格納に充分なバッファ領域を確保できなかった場合を示す図面である。
【図１０】上記メモリ上に部分データ列が格納されている状態の例を示すものであり、全部分データ列の格納に充分なバッファ領域を確保できなかった場合を示す図面である。
【図１１】上記メモリ上に格納された部分データ列が、フラッシュＲＯＭに書き込まれた状態を示す図面である。
【図１２】上記メモリ上に新たに格納された部分データ列が、フラッシュＲＯＭに追記される状態を示す図面である。
【図１３】上記制御システムの変形例を示すものであり、データ伝送に関連する各部材の要部構成を示すブロック図である。
【図１４】上記制御システムにおいて、上記両装置間で伝送されるデータ列のデータ構造を示す図面である。
【図１５】さらに他の変形例を示すものであり、データ伝送に関連する各部材の要部構成を示すブロック図である。
【図１６】上記制御システムにおいて、上記両装置間で伝送されるデータ列のデータ構造を示す図面である。
【図１７】比較例を示すものであり、データ列全てを圧縮した場合に、プログラマブル表示器のメモリ上に確保する必要のある記憶容量を示す図面である。
【図１８】上記変形例に係る制御システムにおいて、プログラマブル表示器のメモリ上に確保する必要のある記憶容量を示すものであり、１番目の各圧縮後データ列を解凍している状態を示す図面である。
【図１９】上記制御システムにてプログラマブル表示器のメモリ上に確保する必要のある記憶容量を示すものであり、２番目の各圧縮後データ列を解凍している状態を示す図面である。
【図２０】また別の変形例を示すものであり、データ伝送に関連する各部材の要部構成を示すブロック図である。
【図２１】上記制御システムにおいて通信異常が発生した状態におけるバッファ領域の内容を示す図面である。
【図２２】さらに他の変形例を示すものであり、部分データ列のデータ構造を示す図面である。
【符号の説明】
【０１６１】
１３    プログラマブル表示器（受信装置）
１７    制御用ホストコンピュータ（送信装置）
３６ａ  メモリ（作業用メモリ）
３６ｂ  フラッシュＲＯＭ（不揮発性記憶装置）
８１    分割処理部（データ送信手段）
８２    コマンド生成部（指示手段）
８３ｂ  ファイル統合部（圧縮手段）
８３ｃ  符号化部（圧縮手段）
【図１】
2006276981.tif 000003
【図２】
2006276981.tif 000004
【図３】
2006276981.tif 000005
【図４】
2006276981.tif 000006
【図５】
2006276981.tif 000007
【図６】
2006276981.tif 000008
【図７】
2006276981.tif 000009
【図８】
2006276981.tif 000010
【図９】
2006276981.tif 000011
【図１０】
2006276981.tif 000012
【図１１】
2006276981.tif 000013
【図１２】
2006276981.tif 000014
【図１３】
2006276981.tif 000015
【図１４】
2006276981.tif 000016
【図１５】
2006276981.tif 000017
【図１６】
2006276981.tif 000018
【図１７】
2006276981.tif 000019
【図１８】
2006276981.tif 000020
【図１９】
2006276981.tif 000021
【図２０】
2006276981.tif 000022
【図２１】
2006276981.tif 000023
【図２２】
2006276981.tif 000024