(57)【特許請求の範囲】
【請求項１】
通信相手局に存在する通信対象の属性情報を登録する属性テーブルの一部あるいは全部のコピーを自局の通信装置内に属性コピーテーブルとして保持し、この属性コピーテーブルに登録された上記属性情報を利用して通信を行う通信装置であって、通信によって相手局の上記属性テーブルに登録されている上記属性情報を取得し、取得した上記属性情報を上記属性コピーテーブルに登録する属性情報取得手段と、上記属性コピーテーブルに登録された上記属性情報を利用し上記通信相手局の通信対象のデータを読み書きするデータアクセス手段と、アプリケーションプログラムからのデータ書き込み要求あるいは読み出し要求により、指定された上記通信対象の属性情報が上記属性コピーテーブルに登録されているかをチェックし、もし登録されていれば上記データアクセス手段を起動して上記通信相手局の通信対象のデータを読み書きし、もし登録されていなければ上記属性情報取得手段を起動して指定された上記通信対象の属性情報を上記属性コピーテーブルに登録させるとともに、上記データアクセス手段を起動して上記通信相手局の通信対象のデータを読み書きし、その結果を上記アプリケーションプログラムに通知する通信順序管理手段とを備え、上記通信対象の属性情報を上記属性コピーテーブルに登録するに際し、上書き登録を行うものであって、属性コピーテーブルの各要素の使用頻度を管理をするためのリング状の論理構造を持った頻度テーブルと、この頻度テーブルのデータに基づき上記属性コピーテーブルの上書き要素を決定する上書き領域決定手段と、上記頻度テーブルを更新する頻度更新手段とを有し、上記上書き領域決定手段により上記属性コピーテーブルの上書きする要素を決定し、その決定に基づき相手局より取得した属性情報を上記属性コピーテーブルに上書きする際、上記リング状の論理構造を持った頻度テーブルのデータに基づき上書き領域決定手段により上記属性コピーテーブルの上書き要素を決定することによって上記上書き領域決定手段と上記頻度更新手段の両方の処理を高速に完了することを特徴とする通信装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、例えばＰＲＯＦＩＢＵＳのように、通信対象の属性情報を通信を介して取得するプロトコルを実装する通信装置において、属性情報取得方式および取得した属性情報の管理方式に関するものである。
【０００２】
【従来の技術】
例えばＭＡＰやＰＲＯＦＩＢＵＳのように、ＯＳＩ（Ｏｐｅｎ  Ｓｙｓｔｅｍｓ  Ｉｎｔｅｒｃｏｎｎｅｃｔｉｏｎ）の第７層に相当するプロトコルを実装するネットワークでは、ＰＣ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｃｏｎｔｏｒｏｌｌｅｒ）・ＮＣ（数値制御装置）・ロボットコントローラなど多種多様な機器との通信を統一的に扱えるようにするため、通信によって読み書きするデータは通信対象（オブジェクト）と呼ばれる抽象化されたデータエリアに格納されるものと考えて通信を行う。
実際には、この抽象化されたデータエリアは、ＰＣなどの実際の機器においては、例えばメモリなどの記憶装置の一領域を示す。通信対象と実機器の一領域の対応は、そのプロトコルの通信装置を開発したメーカーが予め出荷時に作り込むか、あるいはユーザーがシステムに応じて定義することになっている。
【０００３】
上記のプロトコルでは、ＰＣのシーケンスプログラム等のアプリケーションプログラムが通信を介して通信対象のデータを読み書きする際、そのデータをアプリケーションプログラムが扱い易いように、通信回路上に流れるデータとアプリケーションプログラムの内部表現との相互変換を通信装置内にて行う必要がある。
例えば、図２３は、ＰＣの通信装置３が４バイトのバイト列データを実機器１５の通信対象１７から読み出した例である。
図２３において、１はＰＣのＣＰＵユニット、２はシーケンスプログラム、３はＰＣ用の通信装置、４は通信処理を行う通信ファームウエア、３７はＣＰＵユニット１と通信装置３の間でデータ授受を行うための２ポートメモリ、１５は例えばロボットコントローラのような実機器、１６は例えばロボット用通信装置のような相手局通信装置、１７は例えばロボットコントローラのデータエリアのような通信対象、７３は通信対象１７から読み出したデータ、２２は通信媒体である。
２ポートメモリ３７は、図２３において上から下に向かってアドレスが大きくなり、シーケンスプログラム２は、バイト列データの場合は、２ポートメモリ３７の小さいアドレスに格納されている値をデータの先頭バイト、整数値データの場合には、２ポートメモリ３７の小さいアドレスに格納されている値を整数の下位桁と解釈するものとする（リトルエンディアン）。
４バイトのバイト列データを読み出した場合は、ＰＣのシーケンスプログラム２のバイト列データの内部表現に合わせて受信した順序のまま２ポートメモリ３７にデータを書き込まなければならない。
一方、例えば図２４は図２３と全く同じシステムにおいて、同じく４バイトであるが３２ビット整数値データを読み出した例である。ＰＣのシーケンスプログラム２は３２ビット整数値データをリトルエンディアンとして扱うので、この場合はその内部表現に合わせて順番を入れ換えて２ポートメモリ３７にデータを書き込まなければならない。この変換をするために通信ファームウエア４は通信対象１７の属性情報を知る必要がある。
図２３・図２４の例で言えば、通信対象１７に格納されている値がバイト列データなのか３２ビット整数値データなのかという情報が属性情報に当たる。
また、ある通信対象１７が実際には実機器のどの領域に割り当てられているかを示すアドレス情報も属性情報の一種である。
【０００４】
属性情報の詳細は各々のプロトコルの規約に定められている。例えばＰＲＯＦＩＢＵＳでいえばＤＩＮ１９２４５パート２に記載されている。
この属性情報は、通信データに付加することが規定されているプロトコルと、相手局通信装置内に属性テーブルとして格納することを規定しているプロトコルとがあるが、この発明は後者のプロトコルにおいて、通信を介して属性テーブルから属性情報を取得するやり方と、取得した属性情報の管理方法に関するものである。
【０００５】
従来の技術を説明する前に、図２２を参照しながら、従来の通信装置あるいはこの発明による通信装置が交信する相手局通信装置について説明する。
１５は例えばロボットコントローラに代表されるような実機器、１６はその機器用の相手局通信装置、１７・１８・１９は例えば指令値や現在値などの実際のデータが格納される通信対象、２０は各通信対象の属性情報が格納される属性テーブル、４７ａは属性情報の識別子を登録する識別子格納欄、４５ａは通信対象のアドレス情報やデータの型などの通信対象の属性情報を格納する属性情報格納欄、２１は通信処理を実行する相手局通信ファームウエア、２２は通信の物理信号が搬送される通信媒体、  ２９〜３６は従来の通信装置あるいはこの発明による通信装置と相手局通信装置１６との間で交信される各種要求あるいは応答データである。メーカーあるいはユーザーは各通信対象１７・１８・１９に一意に識別子を割り振らなければならないことはどのプロトコルにも記述されているが、識別子が何であるかは実装するプロトコルによって違っており、例えば番号であったり名前を示す文字列であったりする。図２２の例では一意の番号を識別子として使用している。
【０００６】
次に、相手局通信装置１６の動作について説明する。
相手局通信ファームウエア２１が読み出し要求２９あるいは書き込み要求３１を受信した場合は、属性情報格納欄４５ａに登録されているアドレス情報やデータの型などの属性情報を読み出し、その情報に従って通信対象１７・１８・１９の読み書きとデータ変換を行い、読み出し応答３０あるいは書き込み応答３２を返す。
また、属性取得要求３５を受信した場合には属性情報格納欄４５ａに登録されている属性情報を読み出し、そのデータを属性取得応答３６として従来の通信装置あるいは本発明による通信装置に返す。
通常、上記の通信処理を行う前に、従来の通信装置あるいはこの発明による通信装置と相手局通信装置１６との間には、回線確立要求３３、回線確立応答３４によって論理通信回線が確立されていなければならない。
【０００７】
次に、従来の技術について説明する。
図２０は、従来の通信装置３ａを装着したＰＣのシステムを示す。
図２０において、１はＰＣのＣＰＵユニット、２はシーケンスプログラム、３ａは従来の通信装置、７０はこれから読み書きする通信対象の識別子のリストを記憶しておく不揮発メモリ、９ａは属性テーブル２０のコピーを登録する属性コピーテーブル、４ａは通信処理を行う従来の通信ファームウエア、７１はユーザーが不揮発メモリ７０に識別子のリストを書き込むための周辺装置、７２は周辺装置と通信装置３ａを接続するための周辺装置用ケーブル、１５は図２２と同じ実機器、１６は図２２と同じ相手局通信装置、２２は通信媒体である、属性コピーテーブル９ａは属性テーブル２０と同じ構造を持つが、登録できる属性情報の個数は異なる。
【０００８】
図２５は、従来の通信装置３ａのハードウエアブロック図である。
この図において、１はＰＣのＣＰＵユニット、４ａは通信ファームウエア、９ａは属性コピーテーブル、７５ａは通信ファームウエアが使用するワークエリア、７４ａは属性コピーテーブル９ａとワークエリア７５ａに使用されるＲＡＭ、７６ａは通信ファームウエアを格納するＲＯＭ、７７は通信ファームウエアを実行するＣＰＵ、２２は通信媒体、８０は通信媒体２２を通信装置３ａに接続するコネクタ、７８は通信データと物理信号との変換をするトランシーバ、７２は周辺装置用ケーブル、８１は周辺装置用ケーブル７２を通信装置３ａに接続するコネクタ、７９は周辺装置通信データと物理信号との変換をするトランシーバ、３７は通信装置３ａとＣＰＵユニット１とデータの授受を行うための２ポートメモリ、８２はＣＰＵユニット１と通信装置３ａを接続するコネクタ、７０は不揮発メモリ、８３はＣＰＵ７７とＲＡＭ７４ａ・ＲＯＭ７６ａ・２ポートメモリ３７・不揮発メモリ７０・トランシーバ７８・７９のとデータ交換を行うバスである。
【０００９】
次に、従来の通信装置３ａの動作について説明する。
通信に先立つ準備として、まずユーザーは周辺装置７１を使用しこれから読み出しあるいは書き込みを行う通信対象１７・１８・１９の識別子のリストを不揮発メモリ７０に書き込まなくてはならない。
その後のシーケンスプログラム２と従来の通信ファームウエア４ａの動作を図１８を参照しながら説明する。この図の中で、シーケンスプログラム２と通信ファームウエア４ａ間の破線の矢印は、シーケンスプログラム２と通信ファームウエア４ａで要求あるいは応答データが交換されたことを示す。通信ファームウエア４ａと相手局通信ファームウエア２１との間の破線の矢印は、それらの間で通信が行われたことを示す。横棒付きの実線の矢印は、データ交換あるいは通信が行われたことをトリガとして、処理が次のステップに移ることを示している。横棒無しの実線の矢印は、前のステップの処理が終了したらすぐに次のステップに移ることを示す。
【００１０】
始めに、シーケンスプログラム２は回線確立要求２７を通信ファームウエア４ａに出す（ステップ２２１）。
それを受け取った通信ファームウエア４ａは、論理回線確立要求３３を相手局通信ファームウエア２１に送信する（ステップ２２７）。それを受け取った相手局通信ファームウエア２１は、論理回線確立処理をして論理回線確立応答３４を通信ファームウエア４ａに返す（ステップ１２３）。
次に、通信ファームウエア４ａは、ユーザーによって不揮発メモリ７０に書き込まれた識別子のリストを読み出し、そのリストに含まれる全ての識別子が示す通信対象の属性情報を、属性テーブル２０から読み出したかをチェックする（ステップ２３０）。
もし、全て読み出したのであれば論理回線確立応答２８の正常応答をシーケンスプログラム２に返し（ステップ２３５）、まだ読み出していなければ属性取得要求３５を相手局通信ファームウエア２１に送信する（ステップ２３１）。それを受け取った通信ファームウエア２１は、属性情報を読み出して（ステップ１２６）、その属性情報を属性取得応答３６として通信ファームウエア４ａに返す（ステップ１２７）。
応答を受け取った通信ファームウエア４ａは、属性コピーテーブル９ａに空き領域があるかどうかチェックし（ステップ２３３）、無ければ回線確立応答３４の否定応答をシーケンスプログラム２に返し（ステップ２３５）、空き領域があれば取得した属性情報を属性コピーテーブル９ａの空き領域の属性情報格納欄４５ｂ（図１７）に書き込む（ステップ２３５）。
論理回線確立応答３４を受け取ったシーケンスプログラム２は正常応答か否定応答かをチェックする（ステップ２２３）。否定応答であった場合は、論理回線が確立できなかったか、これから読み書きする通信対象の属性情報が属性コピーテーブル９ａに登録されていない可能性があるので以後の処理は続けられない。よってシーケンスプログラム２は処理を中止せざるを得ない。
【００１１】
もし、正常応答であれば、読み書きしたい通信対象の識別子と、書き込みの場合には書き込むデータを指定して読み出し要求２３あるいは書き込み要求２５を通信ファームウエア４ａに出す（ステップ２２４）。
要求を受け取った通信ファームウエア４ａは、もし書き込み要求２５であれば指定された識別子の通信対象の属性情報を属性コピーテーブル９ａの属性情報格納欄４５ｂ（図１７）から読み出し、その情報にしたがって書き込むデータをシーケンスプログラム２の内部表現からプロトコルで規定された通信フォーマットに変換した後（ステップ２３７）、読み出し要求２９あるいは書き込み要求３１を相手局通信ファームウエア２１に送信する（ステップ２３８）。
要求を受け取った相手局通信ファームウエア２１は、読み書き処理をしてその結果を読み出し応答３０あるいは書き込み応答３２として通信ファームウエア４ａに返す（ステップ１２９）。応答を受け取った通信ファームウエア４ａは、もし読み出し応答３０であればシーケンスプログラム２から指定された識別子の通信対象の属性情報を属性コピーテーブル９ａから読み出し、その情報にしたがって読み出したデータをＣＰＵユニットの内部表現に変換した後（ステップ１２８・１２９）、読み出し応答３０あるいは書き込み応答３２をシーケンスプログラム２に返す。シーケンスプログラム２は必要に応じて繰り返し読み出し書き込み要求を通信ファームウエアに渡す（ステップ２２４・２２５）。
【００１２】
【発明が解決しようとする課題】
従来の方法では、ユーザーは通信に先立ち、これから通信で読み書きする通信対象の識別子のリストを不揮発メモリに書き込まなければならない煩わしさがあった。
【００１３】
また、従来の方法では、図１８が示す通り、相手局通信装置１６の属性テーブル２０から読み出した属性情報を属性コピーテーブル９ａに登録する際、空き領域がないとシーケンスプログラムには否定応答が返り、シーケンスプログラム２は読み出し要求あるいは書き込み要求を通信ファームウエア４ａに出すことができない。
そのため、シーケンスプログラム２が読み書きできる通信対象の個数は属性コピーテーブル９ａの最大登録個数により制限され、それより多くの個数の通信対象には読み書きできないという問題点があった。
【００１４】
この発明は、このような問題点を解決するためになされたもので、ユーザーが識別子のリストをあらかじめ不揮発メモリに登録しなければならない煩わしさをなくし、シーケンスプログラムなどのアプリケーションプログラムが書き込みあるいは読み出しできる通信対象の最大個数が、属性コピーテーブルに登録できる最大個数によって制限を受けることがないようにすることを可能にする。
【００１５】
この発明は、頻度更新手段と上書き領域決定手段との両手段を高速に終了でき、通信プログラムがアプリケーションプログラムから読み出し要求あるいは書き込み要求を受け取ってからその応答を返すまでの時間を短縮することができる通信装置を得ようとするものである。
【００１６】
【課題を解決するための手段】
この発明においては、通信相手局に存在する通信対象の属性情報を登録する属性テーブルの一部あるいは全部のコピーを自局の通信装置内に属性コピーテーブルとして保持し、この属性コピーテーブルに登録された上記属性情報を利用して通信を行う通信装置であって、通信によって相手局の上記属性テーブルに登録されている上記属性情報を取得し、取得した上記属性情報を上記属性コピーテーブルに登録する属性情報取得手段と、上記属性コピーテーブルに登録された上記属性情報を利用し上記通信相手局の通信対象のデータを読み書きするデータアクセス手段と、アプリケーションプログラムからのデータ書き込み要求あるいは読み出し要求により、指定された上記通信対象の属性情報が上記属性コピーテーブルに登録されているかをチェックし、もし登録されていれば上記データアクセス手段を起動して上記通信相手局の通信対象のデータを読み書きし、もし登録されていなければ上記属性情報取得手段を起動して指定された上記通信対象の属性情報を上記属性コピーテーブルに登録させるとともに、上記データアクセス手段を起動して上記通信相手局の通信対象のデータを読み書きし、その結果を上記アプリケーションプログラムに通知する通信順序管理手段とを備え、上記通信対象の属性情報を上記属性コピーテーブルに登録するに際し、上書き登録を行うものであって、属性コピーテーブルの各要素の使用頻度を管理をするためのリング状の論理構造を持った頻度テーブルと、この頻度テーブルのデータに基づき上記属性コピーテーブルの上書き要素を決定する上書き領域決定手段と、上記頻度テーブルを更新する頻度更新手段とを有し、上記上書き領域決定手段により上記属性コピーテーブルの上書きする要素を決定し、その決定に基づき相手局より取得した属性情報を上記属性コピーテーブルに上書きする際、上記リング状の論理構造を持った頻度テーブルのデータに基づき上書き領域決定手段により上記属性コピーテーブルの上書き要素を決定することによって上記上書き領域決定手段と上記頻度更新手段の両方の処理を高速に完了するものである。
【００１７】
【発明の実施の形態】
図１は、この発明の一実施例の通信装置の構成を示すブロック図である。
図１において、１はＰＣのＣＰＵユニット、２はシーケンスプログラム、３はこの発明による通信装置、４は通信ファームウエアである。
２３はシーケンスプログラム２から通信ファームウエア４への読み出し要求、２４は通信ファームウエア４からシーケンスプログラム２への読み出し応答、２５はシーケンスプログラム２から通信ファームウエア４への書き込み要求、２６は通信ファームウエア４からシーケンスプログラム２への書き込み応答、２７はシーケンスプログラム２から通信ファームウエア４への回線確立要求、２８は通信ファームウエア４からシーケンスプログラム２への回線確立応答である。
３７はＣＰＵユニット１と通信ファームウエア４の間で要求２３・２５・２７や応答２４・２６・２８の授受を行うための２ポートメモリである。
１５は図２２と同じ実機器、１７・１８・１９は図２２と同じ各通信対象、１６は図１９と同じ相手局通信装置、２０は図２２と同じ属性テーブル、２１は図１９と同じ相手局通信ファームウエア、２２は通信媒体である。
９は属性コピーテーブル、１０は属性コピーテーブルの使用頻度情報を管理する頻度テーブル、１１は頻度テーブルの頻度情報を更新する頻度更新手段、１２は頻度テーブルに基づき属性コピーテーブル９の上書き要素を決定する上書き領域決定手段、３８は属性コピーテーブル９と頻度テーブル１０を初期化する初期化手段である。
６は通信を介して属性テーブル２０より属性を読み出して属性コピーテーブル９に格納する属性情報取得手段、７は各通信対象１７、１８、１９のデータを読み書きするデータアクセス手段、８は相手局通信ファームウエア２１と論理回線を確立する論理回線確立手段、５は２ポートメモリ３７を介してシーケンスプログラム２から要求を受取り、論理回線確立手段８、属性情報取得手段６、データアクセス手段７を起動する通信順序管理手段、１３は指定された識別子の通信対象の属性情報を格納している属性コピーテーブル９の要素を探す検索手段である。
２９は通信ファームウエア４から相手局通信ファームウエア２１への読み出し要求、３０は相手局通信ファームウエア２１から通信ファームウエア４への読み出し応答、３１は通信ファームウエア４から相手局通信ファームウエア２１への書き込み要求、３２は相手局通信ファームウエア２１から通信ファームウエア４への書き込み応答、３３は通信ファームウエア４から相手局通信ファームウエア２１への回線確立要求、３４は相手局通信ファームウエア２１から通信ファームウエア４への回線確立応答、３５は通信ファームウエア４から相手局通信ファームウエア２１への属性取得要求、３６は相手局通信ファームウエア２１から通信ファームウエア４への属性取得応答である。
１４は要求２９・３１・３３・３５を物理信号に変換し通信媒体に送り、応答３０・３２・３４・３６を受信しその応答データを論理回線確立手段８・属性情報取得手段６・データアクセス手段７に渡す送受信手段である。
【００１８】
図１７は、図１における通信装置３のハードウエアブロック図である。
この図において、８４は通信順序管理プログラム、８５は属性情報取得プログラム、８６はデータアクセスプログラム、８７は論理回線確立プログラム、８８は頻度更新プログラム、８９は上書き領域決定プログラム、９０は検索プログラム、９１は送受信プログラム、９２は初期化プログラム、４は８４から９２の各プログラムによって構成される通信ファームウエア、７６は通信ファームウエア４を格納するＲＯＭである。
９は図１と同じ属性コピーテーブル、１０は図１と同じ頻度テーブル、７５は通信ファームウエア４が使用するワークエリア、７４は図１と同じＲＡＭ、７７は通信ファームウエアを実行するＣＰＵ、２２は通信媒体、８０は通信媒体２２を通信装置３に接続するコネクタ、７８は通信データと物理信号との変換をするトランシーバ、３７は通信装置３とＣＰＵユニット１とデータの授受を行うための２ポートメモリ、８２はＣＰＵユニット１と通信装置３を接続するコネクタ、８３はＣＰＵ７７とＲＡＭ７４、ＲＯＭ７６、２ポートメモリ３７、トランシーバ７８、７９のとデータ交換を行うバスである。
【００１９】
図１における通信順序管理手段５は、通信順序管理プログラム８４と、この通信順序管理プログラム８４を実行するＣＰＵ７７から構成され、属性情報取得手段６は属性情報取得プログラム８５と、この属性情報取得プログラム８５を実行するＣＰＵ７７から構成され、データアクセス手段７はデータアクセスプログラム８と、このデータアクセスプログラム８６を実行するＣＰＵ７７から構成され、論理回線確立手段８は論理回線確立プログラム８７と、この論理回線確立プログラム８７を実行するＣＰＵ７７から構成され、頻度更新手段１１は頻度更新プログラム８８と、この頻度更新プログラム８８を実行するＣＰＵ７７から構成され、上書き領域決定手段１２は上書き領域決定プログラム８９と、この上書き領域決定プログラム８９を実行するＣＰＵ７７から構成され、検索手段１３は検索プログラム９０と、この検索プログラム９０を実行するＣＰＵ７７から構成され、送受信手段１４はトランシーバ７８と、送受信プログラム９１と、この送受信プログラム９１を実行するＣＰＵ７７から構成され、初期化手段３８は初期化プログラム９２と、この初期化プログラム９２を実行するＣＰＵ７７から構成される。
【００２０】
次に、図２は、属性コピーテーブル９と頻度テーブル１０の構成を示す図である。
図２において、Ｉ〔１〕からＩ〔ｎ〕は、属性コピーテーブル９の各要素である。４７は通信対象の識別子を格納する識別子格納欄、４５はその識別子が割り付けられた通信対象の属性情報を格納する属性情報格納欄、４６はその要素に有効な属性情報が格納されているかを示す登録フラグ欄である。登録フラグ欄４６には０と１の値が設定され、０は未登録、１は登録済みであることを示す。４４はその属性コピーテーブルの使用頻度情報を管理する頻度テーブル１０の要素の番号を格納する頻度テーブル要素番号欄である。
この図２に示されるように、属性コピーテーブルの各要素は、識別子・登録フラグ・属性情報および頻度テーブル要素番号から構成されている。
また、図２では、要素Ｉ〔ｋ〕の頻度テーブル要素番号欄４４には値ｒが格納されているので、要素Ｉ〔ｋ〕使用頻度を管理する頻度テーブルの要素番号はｒであることが分かる。つまり、要素Ｉ〔ｋ〕の使用頻度は要素Ｈ〔ｒ〕によって管理されている。
【００２１】
また、Ｈ〔０〕からＨ〔ｎ〕は、頻度テーブル１０の各要素（頻度テーブル要素）である。これらの要素は最頻度情報を保持する要素Ｈ〔０〕とその他の要素に大きく分けられる。４３は当該頻度テーブル要素が管理している属性コピーテーブル９の要素番号を格納する属性コピーテーブル要素番号欄、４１は当該頻度テーブル要素が管理している属性コピーテーブル９の要素よりも、使用頻度の低い属性コピーテーブル９の要素を管理している頻度テーブル要素の番号を格納する低頻度要素番号欄、４２は当該頻度テーブル要素が管理している属性コピーテーブル９の要素よりも、使用頻度の高い属性コピーテーブル９の要素を管理している頻度テーブル要素の番号を格納する高頻度要素番号欄である。
この図２に示されるように、各頻度テーブル要素は、低頻度要素番号、高頻度要素番号属性コピーテーブル要素番号からなり、属性コピーテーブル要素番号欄４３には、当該頻度テーブル要素が管理している属性コピーテーブル９の要素番号が格納される。例えば図２では、要素Ｈ〔ｒ〕の属性コピーテーブル要素番号欄４３の値はｋであるので、要素Ｈ〔ｒ〕が管理している属性コピーテーブル９の要素は要素Ｉ〔ｋ〕であることを示している。つまり、属性コピーテーブル９の構造も合わせて考えると、属性コピーテーブル９の頻度テーブル要素番号欄４４を読み出すことによりその属性コピーテーブル要素の頻度情報を管理している頻度テーブル１０の要素番号が分かり、頻度テーブルの属性コピーテーブル要素番号欄４３を読み出すことによりその頻度テーブル要素が管理している属性コピーテーブル９の要素番号が分かる。
【００２２】
頻度情報の管理は低頻度要素番号欄４１と高頻度要素番号欄４２の値によって行われる。低頻度要素番号欄４１には、当該頻度テーブル要素が管理している属性コピーテーブル９の要素よりも、使用頻度の低い属性コピーテーブル９の要素を管理している頻度テーブル１０の要素番号が格納される。高頻度要素番号欄４２には、当該頻度テーブル要素が管理している属性コピーテーブル９の要素よりも、使用頻度の高い属性コピーテーブル９の要素を管理している頻度テーブル１０の要素番号が格納される。
図２では、１０１番の識別子の通信対象の属性情報が格納されている属性コピーテーブル９の要素は要素Ｉ〔ｊ〕であり、要素Ｉ〔ｊ〕の頻度テーブル要素番号欄４４に格納されている値はｑであるため、要素Ｉ〔ｊ〕の頻度情報は要素Ｈ〔ｑ〕によって管理される。
要素Ｈ〔ｑ〕の低頻度要素番号欄４１の値はｒのため要素Ｈ〔ｒ〕が管理している属性コピーテーブル９の要素の方が、要素Ｈ〔ｑ〕が管理している属性コピーテーブル９の要素より使用頻度が低いことを示す。要素Ｈ〔ｒ〕が管理している属性コピーテーブル９の要素は要素Ｉ〔ｋ〕なので、要素Ｉ〔ｊ〕よりも要素Ｉ〔ｋ〕の方が使用頻度が低いことを示している。つまり、１０１番の属性情報より１０３番の属性情報の方が使用頻度が低いことを示している。
逆に、１０３番の識別子の通信対象の属性情報が格納されている属性コピーテーブル９の要素は要素Ｉ〔ｋ〕であり、要素Ｉ〔ｋ〕の頻度テーブル要素番号欄４４に格納されている値はｒであるため、要素Ｉ〔ｋ〕の頻度情報は要素Ｈ〔ｒ〕によって管理される。要素Ｈ〔ｒ〕の高頻度要素番号欄４２の値はｑのため、要素Ｈ〔ｑ〕が管理している属性コピーテーブル９の要素の方が、要素Ｈ〔ｒ〕が管理している属性コピーテーブル９の要素より使用頻度が高いことを示す。つまり要素Ｈ〔ｑ〕が管理している属性コピーテーブル９の要素は要素Ｉ〔ｊ〕なので、要素Ｉ〔ｋ〕よりも要素Ｉ〔ｊ〕の方が使用頻度が高いことを示している。
この規則に基づいて要素Ｈ〔１〕から要素Ｈ〔ｎ〕の全ての要素が順序付けられ、この順序がそのまま要素Ｉ〔１〕から要素Ｉ〔ｎ〕の使用頻度の順序になっている。また、要素Ｉ〔１〕から要素Ｉ〔ｎ〕の頻度情報を変えるには低頻度要素番号欄４１と高頻度要素番号欄４２の値を書き換えれば良いことが分かる。
【００２３】
Ｈ〔０〕は他の頻度テーブル要素とは異なり、最頻度情報を示す要素である。３９は最も使用頻度の低い属性コピーテーブル９の要素を管理している頻度テーブル１０の要素が登録される最低頻度要素番号欄、４０は最も使用頻度の高い属性コピーテーブル９の要素を管理している頻度テーブル１０の要素が登録される最高頻度要素番号欄である。
この図２に示されるように、要素Ｈ〔０〕は最高頻度要素番号及び最低頻度要素番号から構成される。図２では、最低頻度要素番号欄３９には値ｓが登録されているので、要素Ｈ〔ｓ〕の属性コピーテーブル要素番号欄４３の値ｍが示す属性コピーテーブル要素Ｉ〔ｍ〕が最も低頻度で使用されていることが分かる。最高頻度要素番号欄４０には値ｐが登録されているので、要素Ｈ〔ｐ〕の属性コピーテーブル要素番号欄４３の値が示す属性コピーテーブル９の要素が最も高頻度で使用されていることが分かる。
【００２４】
図３は、図２の頻度テーブル１０の各要素を一つずつ分解し、低頻度要素番号欄４１の値を順番にたどるとどのようになるかを示す説明図である。
図３の要素Ｈ〔０〕〜要素Ｈ〔ｎ〕はそのまま図２の要素Ｈ〔０〕〜要素Ｈ〔ｎ〕である。図３を見て判るようにリング状になっている。低頻度要素番号欄４１の値を順にたどるようにしたので要素Ｈ〔ｐ〕から要素Ｈ〔ｓ〕に行くにしたがって使用頻度は低くなる。つまり、要素Ｈ〔ｓ〕が最低頻度、要素Ｈ〔ｐ〕が最高頻度であることを示している。よって、要素Ｈ〔０〕の最高頻度要素番号欄４０には値ｐが登録されることになる。
【００２５】
図４は高頻度要素番号欄４２の値を順番にたどるとどのようになるかを示す説明図である。
図において、要素Ｈ〔ｓ〕から要素Ｈ〔ｐ〕に行くにしたがって使用頻度は高くなり、要素Ｈ〔０〕の最低頻度要素番号欄３９には値ｓが登録される。
【００２６】
図５は、属性コピーテーブル９および頻度テーブル１０の初期状態を示している。
この初期化処理は初期化手段３８が行う（詳細な手順については後に示す。）初期状態では属性コピーテーブル９には何も登録されていないため、属性コピーテーブル９の登録フラグ欄４６の値は全て０である。
図１７は、図５に示した頻度テーブル１０の各要素を一つずつ分解し、低頻度要素番号欄４１の値を順番にたどるとどの様になるかを示した図である。この図を見ると分かるように頻度テーブル１０は、要素Ｈ〔１〕から要素Ｈ〔ｎ〕に行くにしたがって頻度が低くなるように設定される。すなわち、最高頻度要素番号欄４０の値は１に初期設定され、要素Ｈ〔１〕が最高頻度になるように設定され、最低頻度要素番号欄３９の値はｎに初期設定され、要素Ｈ〔ｎ〕が最低頻度になるように設定される。また、属性コピーテーブル９の要素Ｉ〔１〕は要素Ｈ〔１〕が管理し、要素Ｉ〔２〕は要素Ｈ〔２〕が管理し、同様に要素Ｉ〔ｎ〕は要素Ｈ〔ｎ〕が管理するように初期化される。
【００２７】
次に、一実施例の動作について説明する。
図９は、シーケンスプログラム２とこの発明による通信ファームウエア４と相手局通信ファームウエア２１の動作の概要を示している（通信ファームウエア４の詳細な動作は後に説明する）。この図の中で、シーケンスプログラム２と通信ファームウエア４間の破線の矢印は、シーケンスプログラム２と通信ファームウエア４で要求あるいは応答データが交換されたことを示す。通信ファームウエア４と相手局通信ファームウエア２１との間の破線の矢印は、それらの間で通信が行われたことを示す。横棒付きの実線の矢印は、データ交換あるいは通信が行われたことをトリガとして、処理が次のステップに移ることを示している。横棒無しの実線の矢印は、前のステップの処理が終了したらすぐに次のステップに移ることを示す。また、通信ファームウエア４の中の破線の四角は、各々初期化手段３８・論理回線確立手段８・属性情報取得手段６・データアクセス手段によって行われる処理であることを示す。
【００２８】
シーケンスプログラム２から通信ファームウエア４への要求は、回線確立要求２７・読み出し要求２３・書き込み要求２５がある。
読み出し要求２３の場合は、読み出しする通信対象の識別子を２ポートメモリ３７（図１）に設定して、読み出し要求２３を通信ファームウエア４に出す。書き込み要求２５の場合には、書き込みする通信対象の識別子と書き込むデータを２ポートメモリ３７（図１）に設定して、書き込み要求２５を通信ファームウエア４に出す。
始めに、通信ファームウエア４は、図５にすでに示したように、属性コピーテーブル９および頻度テーブル１０を初期化し（ステップ１０５）、シーケンスプログラム２からの回線確立要求２７を待つ（ステップ１０６）。シーケンスプログラム２は回線確立要求２７を通信ファームウエア４に出す（ステップ１０１）。
それを受け取った通信ファームウエア４は、回線確立要求３３を相手局通信ファームウエア２１に送信する（ステップ１０７）。それを受け取った相手局通信ファームウエア２１は、論理回線確立処理を行い回線確立応答３４を通信ファームウエア４に返す（ステップ１２３）。回線確立応答３４を受け取った通信ファームウエア４は回線確立応答２８をシーケンスプログラム２に返す（ステップ１０９）。
次に、シーケンスプログラム２は読み書きする通信対象の識別子と、書き込みの場合には書き込むデータも２ポートメモリ３７（図１）に設定して読み出し要求２３あるいは書き込み要求２５を通信ファームウエア４に送る（ステップ１０３）。
その要求を受け取った通信ファームウエア４は、シーケンスプログラム２によって指定された識別子の通信対象の属性情報が属性コピーテーブル９に登録されているかを検索する（検索の詳細については後に示す）（ステップ１１１）。
もし、登録されている場合には読み出し要求２９あるいは書き込み要求３１を相手局通信ファームウエア２１に送信する処理に移る（ステップ１１７〜１２１）。
登録されていない場合にはシーケンスプログラム２によって指定された識別子の通信対象の属性情報の属性取得要求３５を相手局通信ファームウエア２１に送信する（ステップ１１３）。
属性取得要求３５を受信した相手局通信ファームウエア２１は、属性情報を相手局通信装置１６の属性テーブル２０から読み出し（ステップ１２６）、その属性情報を属性取得応答３６により通信ファームウエア４に返す（ステップ１２７）。
属性取得応答３６を受信した通信ファームウエア４は取得した属性情報を最も使用頻度の低い属性コピーテーブル９の要素に上書き登録する（上書きの処理の詳細については後に示す）（ステップ１１５）。
その後、今、登録した属性コピーテーブル９の要素が最高頻度になるように頻度テーブル１０を更新する（処理の詳細については後に示す）（ステップ１１６）。
【００２９】
次に、通信ファームウエア４は、シーケンスプログラム２から出された要求が書き込み要求２５ならば、シーケンスプログラム２に指定された通信対象の属性情報を属性コピーテーブル９から読み出し、その情報に従って書き込みデータをプロトコルで規定された通信フォーマットに変換する（ステップ１１７）。
次に、通信ファームウエア４は相手局通信ファームウエア２１に対して、シーケンスプログラム２に指定された通信対象に対する読み出し要求２９あるいは書き込み要求３１を送信する（ステップ１１８）。
それを受け取った相手局通信ファームウエア２１は指定された通信対象のデータを読み書きし（ステップ１２８）、読み出し応答３０あるいは書き込み応答３２を通信ファームウエア４に送信する（ステップ１２９）。
応答を受け取った通信ファームウエア４は、読み出し応答３０であればシーケンスプログラム２に指定された通信対象の属性情報を属性コピーテーブル９から読み出し、その情報に従って読み出したデータをシーケンスプログラム２の内部表現に変換する（ステップ１２０）。
通信ファームウエア４はその後、読み出し応答２４あるいは書き込み応答２６をシーケンスプログラム２に返す（ステップ１２１）。
【００３０】
図９が示す全体の流れの中で特長的な事項は、通信対象の読み出し要求２３あるいは書き込み要求２５がシーケンスプログラム２から通信ファームウエア４に出された後に初めてその通信対象の属性情報の取得を行うということと、取得した属性情報を属性コピーテーブル９上に上書きするということである。
通信ファームウエア４においては属性情報は書き込み処理の書き込みデータの変換（ステップ１１７）時と読み出し処理の読み出しデータの変換（ステップ１１７）時に使用されるため、その変換処理を行うときに必要な属性情報のみが属性コピーテーブル９に登録されていれば十分である。よって、通信ファームウエア４は読み出し要求２９あるいは書き込み要求３１を送信する前にこれから読み書きする通信対象の属性情報を取得し、属性コピーテーブル９に常に上書きすればこの条件を満たすことが出来、属性コピーテーブル９には上書きするための最低１つの要素があれば必要十分である。このため本発明によれば、属性コピーテーブル９の要素数が１の場合でもシーケンスプログラムは理論上無限個の通信対象の読み書きができるという効果がある。
【００３１】
属性コピーテーブル９の要素数が１の場合には当然属性コピーテーブルの頻度情報の管理も必要無くなるが、その場合には通信ファームウエア４は、読み出し要求２９あるいは書き込み要求３１を送信する前に必ず通信を介して属性情報を取得しなければならない。通信というのは一般的に通信ファームウエア４の内部処理に比べて時間が掛かるため、毎回通信を介して属性情報を取得することは、シーケンスプログラム２から見た場合の読み出し要求２９あるいは書き込み要求３１からその読み出し応答３０あるいは書き込み応答３２までの時間が長くなることを意味する。そのためシーケンスプログラム２から見た場合の要求から応答までの時間を短縮するためには属性コピーテーブルの要素数は多い方が望ましい。よって、この実施例では属性コピーテーブルの要素を複数設け、上書きする要素を決定するための手段として使用頻度による管理を行っている。
【００３２】
また、通信ファームウエア４はシーケンスプログラム２から読み出し要求２３あるいは書き込み要求２５が指示された時点で、指示された通信対象の属性情報を取得すればよいため識別子のリストを記憶保持する必要がない。よって、ユーザーは周辺装置７１によって予め読み書きする通信対象の識別子のリストを不揮発メモリ７０に書き込む必要がなくなるという効果がある。また当然、周辺装置７１と不揮発メモリ７０も必要無くなる。
【００３３】
次に、一実施例の各手段詳細な動作について説明する。はじめに初期化手段３８の動作を説明する。
初期化手段３８は、図５に示すように属性コピーテーブル９及び頻度テーブル１０を初期化する。
図１８は、初期化された頻度テーブル１０の論理構造を示す図である。
図１９は、初期化手段３８の動作を示す図である。
この図１９において、記号ｉは属性コピーテーブル９及び頻度テーブル１０の要素番号を一時的に保持するワーク領域を示し、（ｉ）はｉに格納されている値を示す。初期化手段３８は始めにＨ〔０〕を初期化するため、Ｈ〔０〕の最低頻度要素番号欄３９に１を、Ｈ〔０〕の最高頻度要素番号欄４０のｎを代入する（ステップ２５１、２５２）。
次に、要素Ｈ〔１〕〜Ｈ〔ｎ−１〕及び要素Ｉ〔１〕〜Ｉ〔ｎ−１〕を初期化するため、ｉの初期値として１を代入する（ステップ２５３）。次にｉの値がｎ以上かどうかを判定し（ステップ２５４）、ｎより小さければ（ステップ２５４）、要素Ｈ〔（ｉ）〕の低頻度要素番号欄４１にｉの値より大きい値を代入し（ステップ２５５）、要素Ｈ〔（ｉ）〕の低頻度要素番号欄４２にｉの値より小さい値を代入し（ステップ２５６）、要素Ｉ〔（ｉ）〕の登録フラグ欄４６に未登録を示す０を代入し（ステップ２５７）、要素Ｉ〔（ｉ）〕の頻度テーブル要素番号欄４４にｉの値を代入し（ステップ２５８）、次の要素を初期化するためｉの値を１増やし（ステップ２５９）、ステップ２５４に戻る。ステップ２５４においてｉの値がｎ以上であれば、要素Ｈ〔ｎ〕の低頻度要素番号欄４１に０を代入し（ステップ２６０）、要素Ｈ〔ｎ〕の低頻度要素番号欄４２にｎ−１を代入し（ステップ２６１）、要素Ｉ〔（ｉ）〕の登録フラグ欄４６に未登録を示す０を代入し（ステップ２６２）、要素Ｉ〔（ｉ）〕の頻度テーブル要素番号欄４４ｎを代入し終了する（ステップ２６３）。
【００３４】
次に、図１０を参照しながら通信順序管理手段５の動作を説明する。
通信順序管理手段５は、シーケンスプログラム２からの要求を受け取り、その要求にしたがって論理回線確立手段８と属性情報取得手段６とデータアクセス手段７を起動し、通信ファームウエア４の処理の全体の流れを管理する役割を持つ。シーケンスプログラム２から通信ファームウエア４への要求は回線確立要求２７、読み出し要求２３、書き込み要求２５がある。
【００３５】
通信順序管理手段５は、始めに初期化手段３８を起動し既に図２４に示したように属性コピーテーブル９および頻度テーブル１０を初期化する（ステップ１３１）。
シーケンスプログラム２から要求を受け取った通信順序管理手段５は、その要求が回線確立要求２７であれば（ステップ１３３）論理回線確立手段８を起動する（ステップ１３４）。
その結果が異常終了であれば（ステップ１３５）、回線確立応答２８によりシーケンスプログラム２に異常終了を通知する（ステップ１４３）。
正常終了であれば（ステップ１３５）、回線確立応答２８によりシーケンスプログラム２に正常終了を通知する（ステップ１４２）。
シーケンスプログラム２から要求が回線確立要求２７でなければ（ステップ１３３）、読み出し要求２３あるいは書き込み要求２５であると判断して、シーケンスプログラム２に指示された通信対象の属性情報が属性コピーテーブル９にすでに登録されているかをチェックするため検索手段１３を起動する。この時、シーケンスプログラム２から指示された識別子を検索手段１３に渡す（ステップ１３６）（検索手段１３の詳細動作は後に示す）。もし登録されていれば（ステップ１３７）、シーケンスプログラム２から指示された識別子と読み出し処理か書き込み処理かを指定してデータアクセス手段７を起動し、通信対象１７、１８、１９のデータの読み書きを行う。もし登録されていなければ（ステップ１３７）属性情報取得手段６を起動する。
この時、シーケンスプログラム２に指示された識別子を属性情報取得手段６に渡す。属性情報取得手段６は通信を介して相手局通信装置１６の属性テーブルから属性情報を取得し、その属性情報を属性コピーテーブル９に上書き登録する（ステップ１３８）（属性情報取得手段６の詳細動作は後に示す）。
属性情報取得手段６が正常終了すれば（ステップ１３９）その後にデータアクセス手段７を起動し、シーケンスプログラム２に指示された通信対象のデータを読み書きする。データアクセス手段７を起動する時、シーケンスプログラム２に指示された識別子と書き込みの場合には書き込むデータも渡して起動する（ステップ１４０）。
属性情報取得手段６及びデータアクセス手段７が異常終了した場合は（ステップ１３９、ステップ１４１）、読み出し応答２４あるいは書き込み応答２６によりシーケンスプログラム２に異常終了を通知し終了する（ステップ１４３）。データアクセス手段７が正常終了した場合は（ステップ１４１）、読み出し応答２４あるいは書き込み応答２６によりシーケンスプログラム２に正常終了を通知し終了する（ステップ１４２）。
【００３６】
次に、図１４を参照しながら検索手段１３の動作を説明する。
通信順序管理手段５およびデータアクセス手段７は、検索する通信対象の識別子を渡して検索手段１３を起動する。
動作の概略としては、起動時に渡された識別子と同じ値が識別し格納欄４７（図２）に登録されており、かつ登録フラグ欄４６（図２）の値が１である要素があるかどうかを、属性コピーテーブル９の先頭の要素であるＨ〔１〕から最終要素であるＨ〔ｎ〕まで調べ、あった場合にはその要素番号を返し、無ければ０を返す。
【００３７】
詳細な動作は、以下の通りである。
図１４の中で記号ｉは、現在調べている属性コピーテーブル９の要素番号を一時的に格納するワーク領域を示し、（ｉ）はその値を示す。
始めに、ｉに１を代入し（ステップ１９１）、ｉの値がｎより大きいかどうかを調べる（ステップ１９２）。もし大きくなければ、起動時に渡された識別子と同じ値がＨ〔（ｉ）〕の識別子格納欄４７に登録されており、かつ登録フラグ欄４６の値が１かどうかを調べる（ステップ１９３、ステップ１９４）。もしその条件を満たせば、目的とする識別子の属性情報なのでその要素番号を返し処理を終了する（ステップ１９６）。その条件を満たさなければ目的とする識別子の属性情報ではないので次の要素を調べるため属性コピーテーブル９の要素番号を示すワーク領域ｉの値１を加え（ステップ１９５）、ステップ１９２に戻る。ステップ１９２においても、もしｉがｎより大きい場合には全ての要素を調べて目的とする識別子の属性情報が見つからなかったことを示すので０を返し終了する（ステップ１９７）。
【００３８】
次に、図１１を参照しながら回線確立手段８の動作を説明する。
回線確立手段８は通信順序管理手段５によって起動される。起動された論理回線確立手段５は、プロトコルの規定にしたがって回線確立要求３３の通信フォーマットを作成し送受信手段１４に渡し相手局通信ファームウエア２１に送信し（ステップ１５１）、その後、相手局通信ファームウエア２１から送信された回線確立応答３４を送受信手段１４を介して受信する（ステップ１５２）。
もし、受信した回線確立応答３４が正常応答であれば（ステップ１５３）、正常終了を通信順序管理手段５に通知して終了し（ステップ１５４）、そうでなければ異常終了を通信順序管理手段５に通知して終了する（ステップ１５５）。
【００３９】
次に、図１２を参照しながら属性情報取得手段６の動作を説明する。
通信順序管理手段５は、属性情報を取得すべき通信対象の識別子を渡して属性情報取得手段６を起動する。
通信順序管理手段５によって起動された属性情報取得手段６は、通信順序管理手段５から渡された識別子を含んだ属性取得要求３５の通信フォーマットを作成し送受信手段１４に渡し相手局通信ファームウエア２１に送信する（ステップ１６１）。その後、相手局通信ファームウエア２１から送信された属性取得応答３５を送受信手段１４を介して受信する（ステップ１６２）。
もし、属性取得応答３５が異常応答ならば（ステップ１６３）、異常終了を通信順序管理手段５に通知し終了する（ステップ１７０）。正常応答ならば（ステップ１６３）、上書き領域決定手段１２を起動し上書きする属性コピーテーブル９の要素番号を取得する（ステップ１６４）。（上書き領域決定手段１２の詳細動作は後に説明する。）その後、属性コピーテーブル９のその要素番号が示す要素の属性情報格納欄４５（図２）に取得した属性情報を上書きし（ステップ１６５）、通信順序管理手段５から渡された識別子を識別子格納欄４７に上書きし（ステップ１６６）、登録フラグ欄４６に１を上書きする（ステップ１６７）。その後、上書きした要素番号を指定して頻度更新手段１１を起動しその要素が最高頻度になるように頻度テーブル１０を更新する（ステップ１６８）。（頻度更新手段１１の詳細動作は後に説明する）。その後、正常終了を通信順序管理手段５に通知し終了する（ステップ１６９）。
【００４０】
次に、図１３を参照しながらデータアクセス手段７の動作を説明する。
通信順序管理手段５は、シーケンスプログラム２から読み出し要求２３を受け取ったのであれば、識別子を渡してデータアクセス手段７を起動し、書き込み要求２５を受け取ったのであれば、識別子と書き込むデータも渡してデータアクセス手段７を起動する。起動されたデータアクセス手段７は、通信順序管理手段５から読み出し要求２３を渡されたのであれば（ステップ１７１）、識別子を含んだ読み出し要求２９の通信フォーマットを作成し送受信手段１４に渡し相手局通信ファームウエア２１に送信する（ステップ１７３）。
その後、相手局通信ファームウエア２１から送信された読み出し応答３０を送受信手段１４を介してから受信する（ステップ１７４）。通信対象から読み出したデータが含まれている。受信した読み出し応答３０が正常応答だった場合は（ステップ１７５）、通信順序管理手段５から渡された識別子を渡して検索手段１３を起動し、その識別子の通信対象の属性情報が登録されている属性コピーテーブル９の要素番号を取得する（ステップ１７６）。
そして、その要素番号を渡して頻度更新手段１１を起動し、その要素が最高頻度になるように頻度テーブル１０を更新する（ステップ１７７）。更新した後、その要素番号が示す属性コピーテーブル９の要素の属性情報格納欄４５（図２）に登録されている属性情報に従って、読み出したデータをシーケンスプログラム２の内部表現に変換し（ステップ１７８）、通信順序管理手段５に正常終了を通知し終了する（ステップ１７９）。
【００４１】
通信順序管理手段５から書き込み要求を渡されたのであれば（ステップ１７２）、通信順序管理手段５から渡された識別子を渡して検索手段１３を起動し、その識別子の通信対象の属性情報が登録されている属性コピーテーブル９の要素番号を取得する（ステップ１８０）。
そして、その要素番号を渡して頻度更新手段１１を起動し、その要素が最高頻度になるように頻度テーブル１０を更新する（ステップ１８１）。更新した後、その要素番号が示す属性コピーテーブル９の要素の属性情報格納欄４５（図２）に登録されている属性情報に従って、書き込むデータをシーケンスプログラム２の内部表現から通信フォーマットに変換し（ステップ１８２）、送受信手段１４に渡し相手局通信ファームウエア２１に送信する（ステップ１８３）。
その後、相手局通信ファームウエア２１から送信された書き込み応答３２を送受信手段１４を介して受信する（ステップ１８４）。もし受信した書き込み応答３２が正常応答ならば正常終了を通信順序管理手段５に通知し終了する。
【００４２】
受信した応答が異常応答であった場合（ステップ１７５、ステップ１８５）や通信順序管理手段５から読み出しあるいは書き込み以外の要求をされた場合（ステップ１７１、ステップ１７２）は、通信順序管理手段５に異常終了を通知し終了する（ステップ１８７）。
【００４３】
データアクセス手段７の処理の中で頻度更新手段１１を起動することで、検索した属性情報が最も頻度が高くなるように頻度テーブル１０が更新される。
【００４４】
次に、図１５を参照しながら上書き領域決定手段１２の動作を説明する。
上書き領域決定手段１２は、属性情報取得手段６によって起動され、最も使用頻度の低い属性コピーテーブル９の要素番号を返す。図２から明らかなように、最も使用頻度の低い属性コピーテーブル９の要素を管理している頻度テーブル１０の要素番号は、要素Ｈ〔０〕の最低頻度要素番号欄３９に登録されている。図２で言えば最低頻度要素番号欄３９の値はｓである。よって、要素Ｈ〔ｓ〕の属性コピーテーブル要素番号格納欄４３の値ｍが上書き領域決定手段１２が返すべき値である。
図１５は、以上の処理を詳細に説明している。ｉは一時的に頻度テーブル１０の要素番号を保持するためのワーク領域を示し、（ｉ）はその値を示す。始めに、最低頻度要素番号欄３９の値ｉを保持し（ステップ２０１）、次に要素Ｈ〔（ｉ）〕の属性コピーテーブル要素番号格納欄４３の値を返し終了する（ステップ２０２）。もし、属性コピーテーブル９に未使用の要素があれば、その中の１つの要素の要素番号が要素Ｈ〔０〕の最低頻度要素番号欄３９に登録されているはずなので、その要素番号を返すことになる。よって属性コピーテーブル９は未使用の要素から上書きされることになる。また、図１５の動作からわかるように、頻度テーブルの要素がリング状に結合されているため、要素Ｈ〔０〕から容易に最も使用頻度の低い属性コピーテーブル９の要素番号を取得でき、頻度テーブルの要素を一つ一つ順番に繰り返しチェックする必要が無い。このため高速に上書き領域決定手段１２の動作を完了することが出来る。
【００４５】
最後に、頻度更新手段１１の動作を説明する。属性情報取得手段６及びデータアクセス手段７は、最も使用頻度を高くしたい属性コピーテーブル９の要素の番号を渡して頻度更新手段１１を起動する。頻度更新手段１１は、渡された属性コピーテーブル９の要素を管理している頻度テーブル１０の要素が最高頻度になる様に頻度テーブル１０のリング構造を作りかえる。例えば図２の要素Ｉ〔ｋ〕を最も使用頻度が高くなるように頻度テーブル１０を更新する場合を考える。要素Ｉ〔ｋ〕の頻度情報を管理している頻度テーブル１０の要素は要素Ｈ〔ｒ〕である。図２の論理構造は図３に示されるが、図３において要素Ｈ〔ｒ〕を最高頻度にするためには要素Ｈ〔ｒ〕を一度リングから抜き、要素Ｈ〔０〕と要素Ｈ〔ｐ〕の間に挿入すれば良い。つまり、図６のような状態を作れば良い。
そのための頻度更新手段１１の動作を図１６を参照しながら説明する。図１６の左半分は頻度更新手段１１の動作フローを示す。記号ｘは頻度更新手段１１が起動されるときに属性情報取得手段６から渡された属性コピーテーブル９の要素番号の一般的な値を示し、記号ｉ・ａ・ｂは頻度テーブル１０の要素番号を保持するための一時的記憶領域を示す。また、（ｉ）・（ａ）・（ｂ）は各々ｉ・ａ・ｂに設定されている値を示す。右半分は図２の要素Ｉ〔ｋ〕を最高頻度として更新した場合の、各々のステップの処理をした後の要素Ｈ〔ｐ〕・要素Ｈ〔ｑ〕・要素Ｈ〔ｒ〕・要素Ｈ〔ｓ〕の状態、およびｉ・ａ・ｂの状態を示す。四角の中が各々の値である。
【００４６】
属性情報取得手段６およびデータアクセス手段７は、最高頻度にしたい属性コピーテーブル９の要素番号を渡して頻度更新手段１１を起動する。起動された頻度更新手段１１は渡された値ｘが示す属性コピーテーブル９の要素を管理している頻度テーブル１０の要素番号を保持するために、ｘが示す属性コピーテーブル９の要素の頻度テーブル要素番号欄４４の値を読み出しｉに代入する。図１６の右半分の例では要素Ｉ〔ｋ〕の頻度テーブル要素番号欄４４（図２）の値ｒがｉに代入される（ステップ２１１）。
次に、更新する頻度テーブル１０の要素の低頻度要素番号欄４１と高頻度要素番号欄４２の値をそれぞれａ、ｂに保持する。図１６の右半分の例ではａに値ｓが、ｂに値ｑが保持される（ステップ２１２、ステップ２１３）。
次に、ステップ２１４、２１５では、更新すべき頻度テーブル要素の、リングの前後の要素の低頻度要素番号欄４１と高頻度要素番号欄４２の値を書き換えて、更新すべき頻度テーブル要素をリングから外す。図１６の右半分の例では要素Ｈ〔ｓ〕の高頻度要素番号欄４２の値がｑに、要素Ｈ〔ｑ〕の低頻度要素番号欄４１の値がｓに書きかわったことにより、要素Ｈ〔ｓ〕より高頻度の要素は要素Ｈ〔ｑ〕であり要素Ｈ〔ｑ〕より低頻度の要素は要素Ｈ〔ｓ〕というリング構造になったことを示している。つまり、要素Ｈ〔ｒ〕がリングから外れている（ステップ２１４、ステップ２１５）。
【００４７】
次にしなければならない操作は、リングから外した頻度テーブル要素を最高頻度としてリングに挿入することである。つまり、図６のように要素Ｈ〔０〕と要素Ｈ〔ｐ〕の間に挿入しなければならない。この操作は図１６のステップ２１７からステップ２２０の処理によって行われる。図１６のステップ２１８、２１９、２２０の右に示した要素Ｈ〔ｒ〕、要素Ｈ〔ｐ〕、要素Ｈ〔０〕と図６の要素Ｈ〔ｒ〕、要素Ｈ〔ｐ〕、要素Ｈ〔０〕は全く同じなので、目的の挿入が行われたことが判る（ステップ２１７からステップ２２０）。
【００４８】
図１６に示される動作から判るように、頻度更新手段１１の処理には繰り返し部分が無いため、高速に処理を完了することが出来る。
【００４９】
図３と図６を見比べてみると、２つのことを読み取ることができる。一つは要素Ｈ〔ｒ〕が最高頻度に変えられたことであり、もう一つは、要素Ｈ〔ｒ〕が最高頻度の要素として要素Ｈ〔ｒ〕と要素Ｈ〔ｐ〕の間に割り込んだため、要素Ｈ〔０〕、要素Ｈ〔ｓ〕、要素Ｈ〔ｒ〕以外の要素の頻度が一つずつ低頻度になっていることである。つまり、図１６に示される処理は、属性情報取得手段６およびデータアクセス手段７から渡された属性コピーテーブル９の要素を管理する頻度テーブル１０の要素を最高頻度にする一方、他の幾つかの要素の頻度を一つずつ低頻度にする働きがある。つまり、もし頻度テーブル１０が図６の状態になって以後、識別子１０３番の通信対象１９（図１）が読み出しあるいは書き込みされなければ、識別子１０３番の通信対象１９の属性情報の頻度を管理している要素Ｈ〔ｒ〕は次第に低頻度になり、最後には最低頻度の要素となり要素Ｈ〔ｒ〕は上書きされるべき要素になる。このことを考えると、頻度テーブル１０によって頻度が高く設定されている属性コピーテーブル９の要素ほど、最低頻度の要素つまり上書きされるべき要素となるのに時間がかかるということが分かる。つまり現在、頻度テーブル１０によって最高頻度に設定されている属性コピーテーブル９の要素は最も上書きされにくい。
【００５０】
ＭＡＰやＰＲＯＦＩＢＵＳを用いたシステムは、一定の期間に全ての通信対象に対して同じ頻度で読み書きするわけではない。例えば、システムの立ち上げ時には図１における通信対象１７を主に読み書きし、通常運転時には通信対象１８を主に読み書きし、異常発生時には通信対象１９を主に読み書きするということが考えられる。つまり、一度読み書きした通信対象はもう一度読み書きする可能性が高い。このため、その通信対象の属性情報は属性コピーテーブル９にできるだけ長い時間保持されれば、それだけ属性取得要求３３（図９）が発行される回数が減って望ましい。よって、属性情報取得手段６およびデータアクセス手段７は、今読み書きしている通信対象の属性情報が出来るだけ長く属性コピーテーブル９に保持されるようするため、その属性情報を格納している属性コピーテーブル９の要素を最高頻度に更新するように指定して頻度更新手段１１を起動する必要が有る。
【００５１】
ところで、上記の様に削除と挿入を容易に行うことができる理論構造としては、リスト構造が広く知られている。
図７は、例えばリスト構造を頻度テーブルに適用した場合の例である。１０ａはリスト構造をもつ頻度テーブル、Ｈ〔１〕’、Ｈ〔２〕’、Ｈ〔３〕’、Ｈ〔ｎ〕’は頻度テーブル１０ａの要素、４８はリスト構造における次の要素のアドレスを格納する次要素アドレス格納欄。４３ｃは図２の属性コピーテーブル要素番号格納欄４３と同じ属性コピーテーブル要素番号格納欄である。
図８は頻度テーブル１０ａの論理構造を示す説明図である。図８の矢印は、次要素アドレス格納欄４８の値が矢印で結ばれた先の要素のアドレス値であることを示す。リスト構造においては、通常、先頭のリスト要素を根と呼び、最後のリスト要素を葉と呼ぶ。図８では、要素Ｈ〔１〕’が根であり、要素Ｈ〔ｎ〕’が葉である。
データを検索するときには、各リスト要素の次要素アドレス格納欄４８の値が示すアドレスを、先頭の要素から順にたどって行くことで可能である。また、次要素アドレス格納欄４８の値を書き換えることで各要素の並び替えを行うことができる。
【００５２】
リスト構造を頻度テーブルとして採用した場合、以下に説明するような問題点がある。もし、頻度テーブル１０ａを根から葉へ行くにしたがって頻度が高くなるように並べた場合、根が最低頻度を示す要素であるため、上書き領域決定手段１２では最低頻度の要素の番号である値１を返せば良く、リスト構造を順番にたどる必要はなく高速に処理を終了できるが、頻度更新手段１１ではリスト構造から要素を外しその要素を葉の後ろに繋ぐ必要があるため、リスト構造を最後まで順番にたどる必要があり、その分処理に時間が掛かる。逆に頻度テーブル１０ａを根から葉へ行くにしたがって頻度が高くなるように並べた場合には、頻度更新手段１１ではリスト構造から要素を外しその要素を根の前に繋げば良いため、リスト構造を順番にたどる必要はなく高速に処理を終了できるが、上書き領域決定手段１２では、葉である最低頻度の要素を見つけるためリスト構造を最後まで順番にたどる必要が有り、その分処理に時間が掛かる。
【００５３】
ところで、図１２・図１３で説明したように上書き領域決定手段１２は属性情報取得手段６から起動され、頻度更新手段１１は属性情報取得手段６およびデータアクセス手段７から起動される。
また、図９を見ると判るように、属性情報取得手段６およびデータアクセス手段７はシーケンスプログラム２からの読み出し要求２３あるいは書き込み要求２５により繰り返し起動される。このことはとりもなおさず、上書き領域決定手段１２および頻度更新手段１１が繰り返し起動されることを意味する。
よって、上書き領域決定手段１２および頻度更新手段１１を高速に終了させることは通信処理の高速化に必要不可欠であるが、リスト構造を頻度テーブル１０ａの論理構造として採用した場合、上で述べたように上書き領域決定手段１２と頻度更新手段１１の両方の処理を同時に高速化することはできない。
ところが、この発明による頻度テーブル１０によれば、既に述べたように両方のどちらの手段の処理にも繰り返し処理する部分を含まないため、両方の手段の処理を同時に高速化することが出来るという効果がある。
【００５４】
上記の実施例では、ＰＣの通信装置に適用した例を示したが、パソコンあるいはロボットコントローラの通信装置に適用することも可能である。
【００５５】
以上説明したように、この発明の実施例では、通信プログラムが、アプリケーションプログラムから読み出し要求あるいは書き込み要求を受け取ってから属性テーブルの属性情報を読み出すようにしたため、ユーザは予め不揮発メモリに読み書きする対象の識別子を書き込んでおく必要がない。
【００５６】
また、属性コピーテーブルに登録する際、最も使用頻度の低い属性コピーテーブルの要素に上書きするようにしたため、アプリケーションプログラムは、属性コピーテーブルに登録されていない通信対象を指定して読み出し要求あるいは書き込み要求を通信装置に送ることができ、アプリケーションプログラムが読み出しあるいは書き込みできる通信対象の最大個数は属性コピーテーブルの最大登録個数によって制限されない。
【００５７】
また、頻度テーブルの論理構造としてリング構造を採用し、頻度更新手段と上書き領域決定手段の両手段を高速に終了できるようにしたため、通信プログラムがアプリケーションプログラムから読み出し要求あるいは書き込み要求を受け取ってからその応答を返すまでの時間を短縮できる。
【図面の簡単な説明】
【図１】この発明による通信対象属性情報取得方式の一実施例の全体図である。
【図２】この発明による属性コピーテーブルと頻度テーブルの構成と両者の関係を示す図である。
【図３】この発明による頻度テーブルの論理構造を示す図である
【図４】この発明による頻度テーブルの論理構造を示す図である。
【図５】属性コピーテーブルと頻度テーブルの初期状態を示す図である。
【図６】頻度テーブルの頻度情報を更新した状態を示す図である。
【図７】リスト構造を論理構造として採用した頻度テーブルの構成を示す図である。
【図８】リスト構造を採用した頻度テーブルの論理構造を示す図である。
【図９】この発明による通信装置の概略動作を示す図である。
【図１０】論理回線確立手段の処理手順を示す図である。
【図１１】論理回線確立手段の処理手順を示す図である。
【図１２】属性情報取得手段の処理手順を示す図である。
【図１３】データアクセス手段の処理手順を示す図である。
【図１４】検索手段の処理手順を示す図である。
【図１５】上書き領域決定手段の処理手順を示す図である。
【図１６】頻度更新手段の処理手順を示す図である。
【図１７】この発明による通信装置のハードウエアブロック図である。
【図１８】初期化された頻度テーブルの論理構造を示す図である。
【図１９】初期化手段の処理手順を示す図である。
【図２０】従来の通信装置の構成を示す図である。
【図２１】従来の通信装置の動作を示す図である。
【図２２】相手局通信装置と実機器の構成を示す図である。
【図２３】データ変換の例を示す図である。
【図２４】データ変換の例を示す図である。
【図２５】従来の通信装置のハードウエアブロック図である。
【符号の説明】
１  ＣＰＵユニット、２  シーケンスプログラム、３  通信装置、４  通信プログラム、５  通信順序管理手順、６  属性情報取得手順、７  データアクセス手順、８  論理回線確立手順、９  属性コピーテーブル、１０  頻度テーブル、１１  頻度更新手段、１２  上書き領域決定手段、１３  検索手段、１４  送受信手段、１５  実機器、１６  相手局通信装置、１７  識別子１０１番の通信対象、１８  識別子１０２番の通信対象、１９  識別子１０３番の通信対象、２０属性テーブル、２１  相手局通信プログラム、３８  初期化手段。
【図１】
0003612117.tif 000002
【図２】
0003612117.tif 000003
【図３】
0003612117.tif 000004
【図４】
0003612117.tif 000005
【図５】
0003612117.tif 000006
【図６】
0003612117.tif 000007
【図７】
0003612117.tif 000008
【図８】
0003612117.tif 000009
【図９】
0003612117.tif 000010
【図１０】
0003612117.tif 000011
【図１１】
0003612117.tif 000012
【図１２】
0003612117.tif 000013
【図１３】
0003612117.tif 000014
【図１４】
0003612117.tif 000015
【図１５】
0003612117.tif 000016
【図１６】
0003612117.tif 000017
【図１７】
0003612117.tif 000018
【図１８】
0003612117.tif 000019
【図１９】
0003612117.tif 000020
【図２０】
0003612117.tif 000021
【図２１】
0003612117.tif 000022
【図２２】
0003612117.tif 000023
【図２３】
0003612117.tif 000024
【図２４】
0003612117.tif 000025
【図２５】
0003612117.tif 000026