(57)【特許請求の範囲】
【請求項１】
プロトコルの異なるネットワークに接続された処理装置のデータ転送方法において、
１つのネットワークよりデータを周期的に複数回受信して、受信した該データをメモリに上書きし、上書きされた該データの内容が前のデータに比べて変化した場合に、変化したデータを該メモリのメモリアドレスから読み出すステップと、
該メモリアドレスを予め登録された内容コード変換テーブルに基づいて内容コードに変換するステップと、
変換された内容コードを読み出された該データに付与するステップと、
該内容コードが付与されたデータを前記ネットワークとは異なるネットワークに送信するステップと
を有することを特徴とするデータ転送方法。
【請求項２】
請求項１記載のデータ転送方法において、
前記メモリは一定サイズのブロックに分割され、ブロックごとのアドレスが前記内容コードに対応していることを特徴とするデータ転送方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、メモリベースの高速通信により機器制御を行なう上位のネットワークと、プロセスコンピュータ、ワークステーション、パーソナルコンピュータなどのコンピュータ間を接続するメッセージパッシングを行なう下位のネットワークとの間で、性質の異なる一方のネットワークより受信したデータを他方のネットワークへ容易に転送できるデータ転送方法に関する。
【０００２】
【従来の技術】
従来より製造工場などでは、例えば図１に示すように、コンピュータ４，５が接続されているネットワーク１と、複数のプログラマブル・コントローラ（ＰＣ）６，７ならびに例えば、処理装置と記憶装置を備えたセンサーやアクチュエータなどインテリジェント入出力機器（Ｉ／Ｏ）８，９が接続されているネットワーク２との間を接続してシステムを構成することがある。コンピュータ４，５が接続されているネットワーク１では、生産実績などのデータ長の長いデータがメッセージとして非同期に送信されるが、一方、ＰＣ６，７と（Ｉ／Ｏ）８，９を接続するネットワーク２ではデータ長の短いビット単位やバイト単位のデータが交換され、機器制御用のデータであるため高速通信が要求される。特に、ＰＣ６，７と（Ｉ／Ｏ）８，９を接続するネットワーク２では、メモリ上の特定のメモリ領域にデータを書き込み、これを時分割で周期的に転写するサイクリック通信などが用いられることが多い。上位のネットワーク１は、例えばＥｔｈｅｒｎｅｔであり、下位のネットワーク２は、例えばリモートＩ／ＯやＤｅｖｉｃｅＮｅｔである。このようなコンピュータ間を接続する上位のネットワーク１とＰＣやＩ／Ｏ間を接続する下位のネットワーク２の間を接続するためのハードウエアとして、パーソナルコンピュータ（以下、パソコンと略す）、ＰＣ、専用ハードウエアがある。パソコンでは、Ｅｔｈｅｒｎｅｔ用のボードや下位ネットワークとの通信用ボードが販売されており、両方のボードをパソコンに実装することで上位と下位のネットワーク間で通信することができる。また、ＰＣでは、例えば日立製作所において販売しているＨＩＤＩＣ―Ｓ１０／２αなどがあり、Ｅｔｈｅｒｎｅｔ用のモジュールとＩ／Ｏを接続するための種々のネットワーク用のモジュールをサポートしており、上位と下位のネットワーク間での通信が可能となる。
しかし、上位ネットワーク１より受信されたデータと下位ネットワーク２より受信されたデータのソフトウエアによる処理方法は異なる。例えば、日立製作所で販売しているＨＩＤＩＣ―Ｓ１０／２αは、下位ネットワーク２より受信されたデータは一端メモリ上に書き込まれた後、Ｌａｄｄｅｒ言語と呼ばれるシーケンス処理に適した言語、もしくはＨＩ―ＦＬＯＷ言語と呼ばれるＳＦＣにより記述されたプログラムにより処理されるのに対して、一方の上位ネットワーク１より受信されたメッセージは、Ｃ言語で記述されたプログラムにより処理される。米国Ａｌｌｅｎ―Ｂｒａｄｌｅｙ社のＰＬＣ―５なども、上記と同様な方法を用いている。
【０００３】
【発明が解決しようとする課題】
従来システムにおけるノード間でのデータ転送方法として、データに送信先アドレスを付与して特定のノードにデータを送信する１対１通信と、データにデータの内容を表す識別子である内容コードを付与してブロードキャストし、受信側で内容コードに基づいて受信の可否を判断する内容コード通信がある。内容コード通信は、例えば特公昭５９−４７９０５号公報に記載されている。内容コード通信を採用した製品は多く見られ、例えば自動車の車上システム用にＢｏｓｃｈ社が開発したＣＡＮプロトコルが下位ネットワーク２のプロトコルとして広く普及しつつある。また、例えば日立製作所において開発したＮｅＸＵＳ通信プロトコルは、上位ネットワーク１において使用されている。
しかしながら、これら従来の技術においては、次のような課題がある。
（１）従来の製造現場などにおけるシステムでは、コンピュータ、ＰＣ間通信を行なう上位ネットワークとＰＣ、Ｉ／Ｏ間での通信を行なう下位ネットワークで異なった通信プロトコルを採用しており、ネットワーク間の相互のデータ転送が容易に行なえないため、ユーザプログラムの介在を必要とし、ユーザプログラム作成に多大な費用と時間を要する。
（２）ユーザプログラムと下位ネットワークから受信されるＩ／Ｏデータのインターフェースはメモリアドレスやレジスタ名称であり、上位ネットワークから受信されるメッセージとのインターフェースは内容コード通信の場合には内容コードであり、１対１通信の場合にはノードアドレスなどになる。このようにプログラマから見るとコンピュータ間の通信とＰＣ、Ｉ／Ｏ間の通信では全く異なったインタフェースになっており、プログラムの開発、デバッグ、修正などに多大な費用と時間を要する。
本発明の目的は、これら従来の課題を解決し、このようなメモリベースのネットワークとメッセージパッシングベースのネットワーク間でのデータ転送を容易にするとともに、これらの異なる２つのネットワークからデータを受信して処理を行なうユーザプログラムの開発を容易にするためのデータ転送方法を提供することにある。
【０００４】
【課題を解決するための手段】
上記目的を達成するため、本発明におけるデータ転送方法では、上位ネットワークと下位ネットワークの間でデータの中継を行なうパソコンやＰＣにメモリアドレスを自動的に内容コードに変換する機能を付加することにより、システムの開発を行なうプログラマやシステムを保守するオペレータに対し、上位ネットワークから受信するメッセージも下位ネットワークから受信するＩ／Ｏなどのデータも、同じ内容コードによる統一インターフェースを与える。
【０００５】
【発明の実施の形態】
本発明においては、上位ネットワークと下位ネットワークの間でデータの中継を行なうパソコンやＰＣに、メモリアドレスを自動的に内容コードに変換する機能を付加することにより、従来、ユーザプログラムで行なっていたデータを中継する処理を自動的に行なうことが可能となる。また、上位ネットワークと下位ネットワークからのデータを内容コードインターフェースで統一することにより、データを中継する際にデータを加工するプログラムをユーザが作成した場合でも、容易にプログラムの開発、修正を行なうことが可能になる。
【０００６】
【実施例】
以下、本発明の実施例を、図面により詳細に説明する。
図１は、本発明の第１の実施例を示すデータ転送システムの構成図である。
図１に示すように、ＰＣ３はメッセージパッシングを行うネットワーク１とメモリ上のデータを周期的に転写するサイクリック通信を行うネットワーク２に接続されている。ネットワーク１には、コンピュータ４、コンピュータ５、ＰＣ３が接続されている。ここで、コンピュータとはプロセスコンピュータ、ワークステーション、パソコンなどを意味する。ネットワーク２には、コンピュータまたはＰＣ３、ＰＣ６、ＰＣ７、（Ｉ／Ｏ）８、（Ｉ／Ｏ）９が接続されている。
ここでＩ／Ｏとは、数十から数千点のセンサーやアクチュエータなどのＩ／Ｏを束ねるブロックＩ／Ｏ、数点のＩ／Ｏを束ねるインテリジェントＩ／Ｏ、センサーやアクチュエータなどのインテリジェントＩ／Ｏを意味する。ここで、インテリジェントＩ／Ｏとは、処理装置、記憶装置、ネットワークとのインターフェースを備えたＩ／Ｏを意味する。本実施例では、ネットワーク１とネットワーク２を接続するのにＰＣを用いた例を示すが、処理装置、記憶装置、ネットワークとのインターフェースを備えていれば、ＰＣの代りにコンピュータ、Ｉ／Ｏ、専用のハードウエアなどであってもよい。また、ネットワーク１，２としてバス型のネットワークを用いた例を示すが、他の形状のネットワークや無線を使った通信でもよい。
【０００７】
ＰＣ３は、ネットワーク１へのインターフェース１１と入力バッファ１２、出力バッファ１３を持ち、ネットワーク２へのインターフェース１６と、サイクリック通信によりネットワーク２を介して他のＰＣ、Ｉ／Ｏとデータを共有するメモリ領域であるグローバルメモリ１５を持つ。ＰＣ３の処理装置１４は、入力バッファ１２またはグローバルメモリ１５からデータを受け取って処理を行ない、出力バッファ１３またはグローバルメモリ１５に結果を出力する。本実施例では、ネットワーク１に接続されたコンピュータ４、コンピュータ５がＰＣ３を介して、ネットワーク２に接続されたＰＣ６、ＰＣ７、（Ｉ／Ｏ）８、（Ｉ／Ｏ）９とデータを送受信する。ネットワーク１に接続されたコンピュータ４，５とＰＣ３はデータに内容コードを付与してブロードキャストし、受信側はデータに付与された内容コードをもとにデータを選択受信する内容コード通信を行なうものとする。
【０００８】
図２は、図１におけるグローバルメモリ（１５）の構成例図である。
グローバルメモリ１５内のデータは、ネットワーク２に接続されたＰＣ６，７や（Ｉ／Ｏ）８，９間でのメモリ転写であるＤａｔａ１（２００１）（重量に関するデータ）が格納されている。Ｄａｔａ２（２００２）は長さに関するデータ、Ｄａｔａ３（２００３）は速度に関するデータである。図２のテーブルに示すように、アドレス番号２０１とデータ２０２は１対１に対応しており、アドレス番号２０１が重量、長さ、速度といったデータの意味を表わしていると捉えることができる。
図３は、図１に示したＰＣ（３）におけるネットワーク２からネットワーク１へのデータ転送の中継を行なう際の処理のフローチャートである。
先ず、グローバルメモリ１５よりデータとデータが格納されているメモリのアドレスを読み込み（ステップ３０１）、メモリアドレスを内容コード変換テーブルを使って内容コードに変換する（ステップ３０２）。
【０００９】
図４は、図１におけるＰＣ（３）内の内容コード変換テーブルの構成を示す図である。
内容コード変換テーブルには、メモリアドレス４０１と内容コード４０２との対応関係が格納されている。内容コード変換テーブルは、処理開始前にオペレータにより例えばコンピュータからネットワークを介して登録され、必要に応じて追加・削除される。図４の定義例の場合、メモリアドレス１００００番に格納されているデータは重量に関するデータであり、メモリアドレス１００００は内容コードＷｅｉｇｈｔ（４００１）に変換される。メモリアドレスを、そのまま内容コードとして扱う場合には、ステップ３０２の処理は必要ない。例えば、メモリアドレス１００００番を内容コード１００００とする場合である。
図３のフローに戻って、メモリアドレスを内容コードに変換したのち（ステップ３０２）、変換した内容コードをグローバルメモリ１５より読み込んだデータに付与してメッセージを生成する（ステップ３０３）。
【００１０】
図５は、図３のステップ３０３の処理動作の具体例を示す説明図である。
図５（ａ）は、処理開始前のグローバルメモリの構成例であり、図５（ｂ）は、ステップ３０３において生成されたメッセージの例である。メッセージは、内容コード５１１とデータ５１２により構成される。図２の例で示したようにメモリアドレス１００００から２バイトの領域には、重量に関するデータが格納されている。図５（ａ）の例では、この領域にＤａｔａ１（５００２）というデータが格納されている。図３のステップ３０２によりメモリアドレス１００００（５００１）が内容コードＷｅｉｇｈｔ（５１０１）に変換され、ステップ３０３によりメモリアドレス１００００（５００１）に格納されたＤａｔａ１（５００２）に変換された内容コードＷｅｉｇｈｔ（５１０１）が付与され、メッセージが生成される。生成されたメッセージは出力バッファ１３に書き込まれ、ネットワーク１に送信される（ステップ３０４）。ネットワーク１に接続された各ノードは内容コード通信を行なっており、データに付与された内容コードＷｅｉｇｈｔ（５１０１）によりメッセージが必要であるか否かを判断する。アドレスを直接内容コードとして扱う場合には、ステップ３０３の処理により、図６（ｂ）に示すメッセージが生成される。グローバルメモリ１５のアドレス１００００（６００１）は、内容コード１００００（６１０１）として扱われ、グローバルメモリ上のデータ６０２であるＤａｔａ１（６００２）にこの内容コード１００００（６１０１）が付与され、メッセージが生成される。生成されたメッセージは、出力バッファ１３に書き込まれ、ネットワーク１に送信される（ステップ３０４）。ネットワーク１に接続された各ノードは、データに付与された内容コード１００００（６１０１）によりメッセージが必要であるか否かを判断する。
【００１１】
図３の処理は、例えばＰＣ３において一定の時間間隔で周期的に行われる。
この時間間隔は、オペレータにより設定される。この場合、一定時間が経過すると、処理装置１４はグローバルメモリ１５内の全てのデータに対して図３に示した処理を行い、データに内容コード付与してネットワーク１にメッセージを送信する。メッセージは、送信負荷を大きくしないように一定の時間間隔で送信される。あるいは、更新されたデータに対してのみ、図３の処理を行ってもよい。
この場合、図７に示すように、グローバルメモリ１５は同じメモリ空間を２重化して保持し、サイクリック通信によって書き換えられる前の状態を保存する必要がある。図７の例では、サイクリック通信により重量のデータはアドレス１００００番に格納されるが、格納前にメモリ内の情報はメモリ２００００番にバックアップされる。これにより、アドレス１００００番のデータ７１１とアドレス２００００番のデータ７２１を比較すれば、重量のデータが更新されたか否かを判断できる。図７の例では、長さのデータがＤａｔａ２（７１２）からＤａｔａ５（７２２）に変化しているため、長さのデータに対して図３に示した処理を行い、データが更新されていない重量や速度のデータは処理しない。
【００１２】
図８は、ＰＣ３におけるネットワーク１からネットワーク２へのデータの中継を行なう際の処理を表すフローチャートである。
すなわち、図８では、図３の逆方向のデータ転送処理のフローを示している。
ネットワーク１より受信されたメッセージは、入力バッファ１２に書き込まれる。このメッセージは、図５（ｂ）に示すように、内容コード５１１とデータ５１２により構成されている。処理装置１４は、このメッセージを入力バッファ１２から読み込み（ステップ８０１）、内容コード５１１を内容コード変換テーブルを用いて内容コード４０２からメモリアドレス４０１に変換する（ステップ８０２）。メモリアドレスを内容コードとして使用しているときには、ステップ８０２の処理は不要となる。メッセージ内のデータ５１２のサイズと予め分割されたグルーバルメモリ１５のメモリサイズを比較し（ステップ８０３）、データ５１２の方が大きいときにはデータは廃棄される（ステップ８０４）。データ５１２のサイズの方が小さいときには、変換されたメモリアドレス４０１の先頭からグローバルメモリ１５にデータ５１２を書き込む（ステップ８０５）。グローバルメモリ１５に書き込まれたデータはネットワーク２を介して他のノードに転写され、ネットワーク２に接続された全ノードで共有される（ステップ８０６）。
【００１３】
図８では、ネットワーク１からネットワーク２に対してデータを１つ送信する処理を示したが、複数のデータを一括して送信してもよい。この場合、メッセージフォーマットは図９（ａ）のようになる。内容コード９０１とデータ数９０２を１つ以上のデータに付与する。例えば、グローバルメモリ１５が２バイトずつに分割されている場合、データ９０３も全て２バイトとする。内容コードＷｅｉｇｈｔ（９００１）は内容コード変換テーブルによりアドレス１００００に変換され、図９（ｂ）に示すように、データ領域（９０３）内のデータであるＤａｔａ７、Ｄａｔａ８、Ｄａｔａ９は、アドレス１００００番から順次グローバルメモリ上の分割された領域に格納される。
図１０は、内容コード変換テーブルの定義画面例を示す図である。
オペレータは、コンピュータ上の図１０に示した２つの画面（定義画面１，２）によりアドレスと内容コードの関係を定義し、内容コード変換テーブルを登録する。登録された内容コード変換テーブルは、全ノードにダウンロードされる。
図１０の定義画面例の場合、オペレータは、まず１ブロックサイズ１００１（グローバルテーブルを分割する大きさ）、使用するグローバルメモリの先頭アドレス１００２、ブロック数１００３を入力する。これにより使用されるグローバルメモリ１５のアドレス１００４が自動的に計算される。次に、オペレータは、分割されたメモリ領域の先頭アドレス１００４に対して内容コード１００５を順次入力し、アドレスと内容コードの関係を定義する。図１０では、全ノードに同じ内容コード変換テーブルがダウンロードされる例を示したが、各ノード毎に内容コード変換テーブルを定義し、各ノード毎に異なる内容コード変換テーブルをダウンロードしてもよい。
【００１４】
図１０の例では、アドレスと内容コードの対応をオペレータが定義したが、レジスタ名称のように予めアドレスに対して名称が決められている場合には、この名称と内容コードの関係を定義すればよい。アドレスとレジスタ名称の関係は事前に定義されているため、レジスタ名称と内容コードの関係を定義すれば、内容コードとアドレスの関係が定義される。この場合の定義画面は、レジスタ名称と内容コードの関係を定義できればよいので、例えば図１１のようになる。図１１では、レジスタ名称１１０１に対して、内容コード１１０２を順次定義する。
本実施例によれば、メモリアドレスと内容コードの対応を定義することにより、メモリアドレスを意識してデータを書き込むサイクリック通信を行なっているネットワーク２と、メッセージパッシングにより通信を行なっているネットワーク１との間でのユーザプログラムによる処理を介さずに自動的にデータ転送を可能としている。
これにより、ユーザプログラムで行なっていたデータ中継処理が不要となり、プログラム開発の時間とコストを大幅に削減でき、その結果、プログラム開発者の負担が軽減される。また、コンピュータやＰＣのプログラム修正やシステムの拡張・修正を行なうとき、中継するプログラムの修正を行う必要がなくなるため、プログラマは容易にシステムの変更を行うことが可能となり、システムの拡張・修正に要する時間とコストが大幅に削減される。
【００１５】
図１２および図１３は、第１の実施例の応用例を示すシステムの構成図ならびにグルーバルメモリの構成図である。
第１の実施例では、メモリベースのサイクリック通信を行っているネットワーク２とメッセージパッシングを行なっているネットワーク１の間でデータ転送する方法を説明したが、図１２と図１３に示すように前者はネットワーク２でなくてもよい。すなわち、各Ｉ／Ｏから受信されるデータがグローバルメモリ１５上のどのアドレスに格納されるかが固定されていれば、第１の実施例で示した方法がそのまま適用できる。図１２のシステム構成例では、（Ｉ／Ｏ）１、（Ｉ／Ｏ）２、（Ｉ／Ｏ）３がＰＣ１２０４の入出力Ｉ／Ｏモジュールに直接接続されて、各コンピュータ１２０２，１２０３とＰＣ１２０４，１２０５はネットワーク１２０１に接続されている。ＰＣ１２０４，１２０５に接続されたＩ／Ｏは、処理装置、記憶装置、ネットワークとのインターフェースを備えたインテリジェントＩ／Ｏである必要はなく、従来から使われているＯＮ／ＯＦＦデータのみをＰＣ１２０４，１２０５に送信する単純なＩ／Ｏでよい。このようなＩ／Ｏの場合、各Ｉ／Ｏのデータがグローバルメモリ１５のどの領域に格納されるかは予め決められており、アドレス１２１０とデータ１２１１の関係が１対１で定義されている。このため、第１の実施例の方法によりアドレスを内容コード変換テーブルにより内容コードに変換すれば、データ１２１１に変換された内容コードを付与してメッセージを生成できる。
【００１６】
図１３に示したシステム構成でも同様である。図１３では、ネットワーク１３０１にコンピュータ１３０２、１３０３、ＰＣ１３０４が接続され、ＰＣ１３０４にはリモート入出力機器（Ｉ／Ｏ）１３０５，１３０６，１３０７が接続され、リモートＩ／ＯにはそれぞれＩ／Ｏが接続されている。リモートＩ／Ｏを用いた通信の場合、リモートＩ／Ｏに直接接続されたＩ／ＯのデータがＰＣ１３０４のグローバルメモリのどの領域に格納されるのかが予め決められており、図１３（ｂ）に示すように、アドレス１３１０とデータ１３１１の関係が１対１で定義されている。このため、第１の実施例によってアドレス１３１０を内容コード変換テーブルで内容コードに変換すれば、データ１３１１に変換された内容コードを付与してメッセージを生成できる。
第１の実施例に示したネットワーク間でのデータ転送では、Ｉ／Ｏがネットワークに接続されていたため、Ｉ／Ｏは処理装置と記憶装置を備えたインテリジェントＩ／Ｏでなければならなかったが、図１２と図１３に示したように処理装置と記憶装置を持たない従来から使用されている単純なＩ／Ｏとネットワークに接続されたコンピュータ間での通信が、第１の実施例の方法により可能となる。
【００１７】
図１４は、本発明の第２の実施例を示すデータ転送システムの構成図である。
第２の実施例では、ネットワーク間でデータ転送を行なうＰＣ上のタスクとＰＣに接続されたネットワーク間でのデータ転送方法を示す。第１の実施例では、データが格納されたメモリアドレスを内容コード変換テーブルにしたがって内容コードに変換し、データに変換された内容コードを付与して他方のネットワークに送信する方法について示した。これに対して第２の実施例では、データが格納されたメモリアドレスを内容コード変換テーブルにしたがって内容コードに変換するのみでなく、変換された内容コードに応じて適当なユーザプログラムを起動し、ユーザプログラムにてデータを処理する方法を示す。
【００１８】
図１４では、ネットワーク１４０１に、コンピュータ１４０２，コンピュータ１４０３およびＰＣ１４０４が接続されている。また、１つ以上の（Ｉ／Ｏ）１４０５がＰＣ１４０４に接続されている。図１４のシステム構成例では、（Ｉ／Ｏ）１４０５はＩ／Ｏモジュールを介して直接ＰＣ１４０４に接続されているが、ネットワークを介してＰＣ１４０４に接続されていてもよい。ただし、Ｉ／Ｏから受信されるデータはＰＣ１４０４内の予め決められたメモリ領域１４１１に格納されるものとする。ＰＣ１４０４は（Ｉ／Ｏ）１４０５からデータを受信し、処理を行てデータをネットワーク１４０１に送信する。また逆にネットワーク１４０１からデータを受信し、処理を行って（Ｉ／Ｏ）１４０５にデータ送信する。
ネットワーク１４０１に接続されたコンピュータ１４０２，１４０３とＰＣ１４０４は、内容コード通信を行なっているものとする。ＰＣ１４０４内部の処理は、シーケンス処理を繰り返す制御に適した、例えばＬａｄｄｅｒ言語やＳＣＦで記述されたプログラム処理部１４１２と、コンパイラやインタープリタなどの情報処理に適した、例えばＣ言語やＢＡＳＩＣ言語で記述されたプログラム処理部１４１４〜１４１６からなり、これらのプログラムは同一または別々の処理装置上で処理されるものとする。以下では、前者のプログラムをＬａｄｄｅｒと呼び、後者の処理単位をタスクと呼ぶ。１タスクは１プログラムに相当し、複数のタスクが同時に動作することも可能であるとする。
【００１９】
図１５は、図１４におけるＰＣ（１４０４）における処理のフローチャートである。
ＰＣ１４０４は、（Ｉ／Ｏ）１４０５からデータを受信すると、メモリ１（１４１１）上にデータを格納する（ステップ１５０１）。Ｌａｄｄｅｒプログラム１４１２は、周期的にメモリ１（１４１１）上のデータを読み込み、シーケンス処理を行う。Ｌａｄｄｅｒプログラム１４１２は、メモリ１（１４１１）上の受信Ｉ／Ｏデータを読み込んで（ステップ１５０２）、その処理を実行し（ステップ１５０３）、処理結果をメモリ２（１４１３）上に出力する（ステップ１５０４）。メモリ２（１４１３）は、一定時間周期でメモリバックアップされており、データの更新箇所が分かるようになっている。システムタスク１４１４は、周期的に起動されてメモリ２（１４１３）上で更新されたデータを読み込む（ステップ１５０５）。ここで、システムタスクとは、ユーザが作成したタスクではなく、システム側で提供されるタスクであり、オペレーティングシステムであってもよい。また、ここではシステムタスクが周期的に起動している例を示すが、Ｌａｄｄｅｒプログラム１４１２がメモリ２（１４１３）にデータを書き込んだときに、システムタスク１４１４に対して割り込み起動をかけてもよい。システムタスク１４１４は、第１の実施例で示した内容コード変換テーブルを持っており、アドレスを内容コードに変換することができる。システムタスク１４１４は、メモリ２（１４１３）上に書き込まれたデータとデータが格納されたメモリアドレスを読み込み、内容コード変換テーブルにしたがってメモリアドレスを内容コードに変換する（ステップ１５０６）。システムタスク１４１４は、内容コードテーブルを管理している。
【００２０】
図１６は、図１４のタスクに備えられた内容コードテーブルの構成例図である。
内容コードテーブルには、内容コード１６０１が付与されたデータを必要とするタスクのタスク番号１６０２が予め登録されている。登録は、例えばコンピュータ１４０３からオペレータにより行なわれる。タスク番号１６０２は、タスク名称であってもよい。ステップ１５０６において変換された内容コードと同一の内容コードを内容コードテーブルより検索する（ステップ１５０７）。同一の内容コードが内容コードテーブルに存在しない場合には（ステップ１５０８）、メモリ２（１４１３）より読み込んだデータを廃棄して処理を終了する（ステップ１５０９）。また、同一の内容コードが存在する場合には（ステップ１５０８）、その内容コードが付与されたデータを必要とするタスクを起動する（ステップ１５１０）。システムタスク１４１４により起動された１つないし複数のタスク１４１５は、システムタスク１４１４よりデータを受信し（ステップ１５１１）、処理を実行する（ステップ１５１２）。タスク１４１５は処理が終了すると、処理結果にデータの内容を表わす内容コードを付与して、ネットワーク１４０１にブロードキャストする（ステップ１５１３）。
【００２１】
以下、具体例を説明する。重量を検出するセンサからＰＣ１４０４がデータを受信すると、ＰＣ１４０４は受信データをメモリ１（１４１１）に書き込む。このデータはＬａｄｄｅｒプログラム１４１２によって処理され、処理結果はメモリ２（１４１３）に書き込まれる。メモリ２（１４１３）に書き込まれたデータとデータが格納されているメモリアドレスはシステムタスク１４１４に読み込まれ、メモリアドレスは内容コード変換テーブルにしたがって、例えば内容コードＷｅｉｇｈｔに変換される。システムタスク１４１４は、変換された内容コードＷｅｉｇｈｔと同一の内容コードを図１６に示した内容コードテーブルより検索する。
図１６より重量に関するデータを必要とするタスク、つまり内容コードＷｅｉｇｈｔが付与されたデータを必要とするタスクのタスク番号は１０番と１２番であることが分かる。システムタスク１４１４は、タスク番号が１０番と１２番のタスクを起動する。起動されたタスク番号が１０番と１２番のタスクは、システムタスク１４１４よりデータを受信して処理を実行する。処理結果には、重量データあるいは重量データの加工データであることを示す適当な内容コードが付与されて、ネットワーク１４０１にブロードキャストされる。ブロードキャストされたデータは、例えばコンピュータ１４０２とコンピュータ１４０３により受信され、受信したコンピュータ１４０２，１４０３は内容コードをもとに該データが必要であるが否かを判断する。
図１５では、Ｉ／Ｏデータを受信してからネットワーク１４０１にデータを送信するデータ転送方法について示した。次に、ネットワーク１４０１からメッセージを受信してから、Ｉ／Ｏ１４０５に送信するまでのデータ転送方法を示す。
【００２２】
図１８は、図１４におけるネットワークからＩ／Ｏへのデータ転送方法を表す処理のフローチャートであり、図１７は、ネットワークを介して行われる内容コード通信のフォーマット図である。
ネットワーク１４０１に接続された各ノードは、内容コード通信を行っている。その内容コード通信のフォーマットは、図１７に示すように、内容コード１７０１とデータ１７０２とから構成される。
ＰＣ１４０４は、ネットワーク１４０１よりメッセージを受信すると、メッセージを自内の受信バッファに格納する（ステップ１８０１）。システムタスク１４１４は、例えば周期的に起動され、受信バッファに格納されたメッセージを順次読み込む（ステップ１８０２）。システムタスク１４１４は、メッセージ内の内容コードと内容コードテーブルに登録された内容コードを比較し（ステップ１８０３）、メッセージ内の内容コードと同一の内容コードが内容コードテーブルに登録されていなければ（ステップ１８０４）、受信したメッセージを廃棄する（ステップ１８０５）。
同一内容コードが登録されている場合には（ステップ１８０４）、システムタスク１４１４は内容コードテーブルに登録された該内容コードが付与されたデータを必要とするタスクを起動し（ステップ１８０６）、起動されたタスク１４１６はシステムタスク１４１４より受信データを受け取る（ステップ１８０７）。タスク１４１６は処理を終了すると（ステップ１８０８）、データに内容コードを付与してメッセージを送信する（ステップ１８０９）。送信されたメッセージは、システムタスク１４１４が受信する（ステップ１８１０）。システムタスク１４１４は、内容コード変換テーブルを検索し（ステップ１８１１）、受信したメッセージ内の内容コードと同一の内容コードが内容コード変換テーブルに存在するか否かを判断する（ステップ１８１２）。同一内容コードが存在しない場合には（ステップ１８１２）、メッセージをネットワーク１４０１にブロードキャストする（ステップ１８１３）。同一内容コードが存在する場合には（ステップ１８１２）、内容コード変換テーブルにしたがって内容コードをメモリアドレスに変換し（ステップ１８１４）、変換されたメモリアドレスにタスクからの受信したデータを格納する（ステップ１８１５）。そして、変換されたデータは、メモリ１（１４１１）を介して（Ｉ／Ｏ）１４０５にブロードキャストされる。
【００２３】
図１９は、第２の実施例におけるシステムタスクの構成と処理およびデータの流れを示す図である。
システムタスク１９０４は、１つないし複数のタスクより構成される。また、システムタスク１９０４の処理は、オペレーティングシステムの機能の一部として実現することもできる。ＰＣ１９０１は、データをネットワーク１９００とＩ／Ｏから受信する
。なお、Ｉ／Ｏは図示省略されているが、ネットワーク１９００とは別に、直接、入力バッファ１９０２および出力バッファ１９０３に接続されているものとする。
まず、ネットワーク１９００より受信されたデータは、入力バッファ１９０２に書き込まれる。そして、内容コードを調べて必要ならばデータを読み込む。
一方、Ｉ／Ｏから受信されたデータは、Ｌａｄｄｅｒプログラムにより処理された後にメモリ１（１９０６）に書き込まれる。なお、Ｉ／Ｏから受信されたデータは、Ｌａｄｄｅｒプログラムによる処理を介さずに直接メモリ１（１９０６）に書き込まれてもよい。
【００２４】
ＰＣ１９０１は、周期的に入力バッファ１９０２とメモリ１（１９０６）内のデータを検索する。入力バッファ１９０２内にメッセージが存在すると、ＰＣ１９０１は該メッセージを順次読み込み、読み込んだ入力バッファ１９０２内のメッセージを消去する。
ＰＣ１９０１は、読み込んだメッセージ内の内容コードと内容コードテーブル１９２０内の内容コードを比較することにより、データを選択受信する（処理１９１０）。内容コードテーブル１９２０内に、受信したメッセージ内の内容コードと同一の内容コードが存在する場合には、そのメッセージ内のデータを必要とするタスク１９０８を起動し（処理１９１１）、そのデータをメモリ１９０５上に書き込む（処理１９１２）。起動されたタスク１９０８は、メモリ１９０５より書き込まれたデータを読み込み、処理を実行する。例えば、ネットワーク１９００より受信されたメッセージは図２０（ａ）、内容コードテーブルの構成は図２０（ｂ）であるとする。システムタスク１９０４は、入力バッファ１９０２よりメッセージ２０００を読み込んだ後、内容コードＳｉｚｅＡと同一の内容コードが内容コードテーブル２０１０内に存在するか否かを検索することにより、メッセージ２０００が必要であるか否かを判断する（処理１９１０）。
【００２５】
図２０（ｂ）に示された内容コードテーブルの場合、同一内容コードＳｉｚｅＡ（２０１１）が存在するので、メッセージ２０００は必要なメッセージであると判断され、内容コードＳｉｚｅＡ（２００１）とデータ（２００２）をメモリ１９０５上に書き込んだ後（処理１９１２）、タスク番号５（２０１２）のタスクを起動する（処理１９１１）。起動されたタスク番号５（２０１２）のタスクは、内容コードＳｉｚｅＡ（２００１）とデータ（２００２）をメモリ１９０５上から読み込む。
メモリ１（１９０６）上に更新されたデータが存在する場合、システムタスク１９０４はメモリ１（１９０６）上から該データと該データが存在するメモリ領域の先頭アドレスを読み込む。該先頭アドレスは内容コード変換テーブル１９３０にもとづいて内容コードに変換される（処理１９１３）。変換された内容コードとメモリ１（１９０６）より読み込まれたデータを使って、入力バッファ１９０２により読み込まれたメッセージと同様な処理を行なう。まず変換された内容コードと内容コードテーブル１９２０内の内容コードを比較することにより、データが必要であるか否かを判断する（処理１９１０）。内容コードテーブル１９２０内に変換された内容コードと同一の内容コードが存在する場合には、該データを必要とするタスク１９０８を起動し（処理１９１１）、該データをメモリ１９０５上に書き込む（処理１９１２）。起動されたタスク１９０８は、メモリ１９０５より書き込まれたデータの読み込み処理を行なう。内容コードテーブル１９２０内に、変換された内容コードと同一の内容コードが存在しない場合には、該データを廃棄する。
【００２６】
図１９において、例えばメモリ１（１９０６）上のデータは２バイト単位のブロックとして扱われ、アドレス１２０００から２バイトのデータが更新されたとする。内容コード変換テーブル１９３０と内容コードテーブル１９２０には、それぞれ図２１（ａ）と図２１（ｂ）に示すような定義情報が登録されていたとする。内容コード変換テーブル２１００により、アドレス１２０００（２１０１）は内容コードＳｅｎｓｏｒＤ（２１０２）に変換される（処理１９１３）。
次に、内容コードテーブル２１２０内に変換された内容コードＳｅｎｓｏｒＤ（２１０２）と同一の内容コードが存在するか否かを検索し、同一の内容コードが存在しない場合には更新されたデータを廃棄するが、存在する場合には該データを処理する（処理１９１０）。内容コードテーブル２１２０内に同一の内容コードＳｅｎｓｏｒＤ（２１２１）が存在するので、更新されたデータはメモリ１９０５上に書き込まれたのち（処理１９１２）、内容コードＳｅｎｓｏｒＤ（２１２１）が付与されたデータを必要とするタスク番号２５とタスク番号２６（２１２２）のタスクを起動する（処理１９１１）。メモリ１９０５上に書き込まれたデータは、起動されたタスク番号２５とタスク番号２６（２１２２）のタスクにより読み込まれる。
【００２７】
タスク１９０８は、読み込んだデータがＩ／Ｏから受信されたデータであるか、あるいはネットワークより受信されたデータであるかを意識する必要がない。また、処理終了後にデータを送信する際にも、データをネットワーク１９００へ送信するか、Ｉ／Ｏに送信するかを意識する必要がない。ユーザがプログラムを開発する際には、送信元や送信先を意識せずに同一のアプリケーション・インターフェースを用いることができる。例えば、Ｃ言語の場合、Ｉ／Ｏあるいはネットワークからの受信、Ｉ／Ｏあるいはネットワークへの送信に用いられる関数は次のようになる。
（１）Ｉ／Ｏあるいはネットワークからの受信
ｒｃｖｄａｔ（＆ｃｃ，ｍｓｇ，＆ｍｓｇｌｅｎ）
ｉｎｔ      ｃｃ；
ｃｈａｒ  ＊ｍｓｇ；
ｉｎｔ      ｍｓｇｌｅｎ；
ｃｃ：受信されたデータに付与された内容コード
＊ｍｓｇ：メッセージ格納場所を示すポインタ
ｍｓｇｌｅｎ：受信したデータのサイズ（バイト）
ユーザは、受信メッセージの格納場所（＊ｍｓｇ）のみを設定し、正常に関数が実行されると内容コード（ｃｃ）と受信データのデータ長（ｍｓｇｌｅｎ）を受け取る。
【００２８】
（２）Ｉ／Ｏあるいはネットワークへの送信
ｓｎｄｄａｔ（＆ｃｃ，ｍｓｇ，＆ｍｓｇｌｅｎ）
ｉｎｔ      ｃｃ；
ｃｈａｒ  ＊ｍｓｇ；
ｉｎｔ      ｍｓｇｌｅｎ；
ｃｃ：送信するデータに付与する内容コード
＊ｍｓｇ：メッセージ格納場所を示すポインタ
ｍｓｇｌｅｎ：送信するデータのサイズ（バイト）
ユーザは、送信メッセージの格納場所（＊ｍｓｇ）内容コード（ｃｃ）、送信データのデータ長（ｍｓｇｌｅｎ）を設定してデータを送信する。
タスク１９０８は処理が終了すると、送信するデータとデータの内容を表す内容コードをメモリ１９０５上に書き込むコードが、内容コード変換テーブル１９３０に登録されているか否かを判断する。同一の内容コードが存在する場合には、内容コードを内容コード変換テーブル１９３０にしたがってメモリアドレスに変換し（処理１９１６）、該メモリアドレスに読み込んだデータを書き込む。読み込んだデータが予め設定された１ブロックの大きさ、例えば２バイトより大きいときには、データを廃棄する。内容コード変換テーブル１９３０に同一の内容コードが存在しない場合には、読み込んだ内容コードとデータを出力バッファ１９０３に書き込むことにより、書き込まれたデータは内容コードを付与されて出力バッファ１９０３よりネットワーク１９００にブロードキャストされる。
【００２９】
この実施例によれば、メモリアドレスと内容コードの関係を定義することにより、特定のメモリ領域にデータを書き込むような通信（例えば、ＰＣとＩ／Ｏ間の通信）であるか、メッセージパッシングによりデータを交換する通信（例えば、ＰＣとコンピュータ間の通信）であるかといった通信形態の違いをユーザは意識せずに、同じ通信マクロを使ってデータの送信／受信を行なうことができる。
従来の方式では、このような通信形態の異なるネットワーク間でデータ転送を行なうプログラムを開発する際には、アドレス指定とメッセージ送信という全く異なるインターフェースにより、プログラマはプログラム開発を行なわなければならず、プログラムの開発負担が非常に大きくなっていた。しかし、本方法を用いることにより、通信形態の違いや送信先のコンポーネントの違いを意識する必要がなくなり、プログラムの開発負担が大幅に減少する。また、全てのプログラムが内容コードを用いた統一された入出力インターフェースにより作成されているので、各プログラムの独立性が高く、プログラムの修正やデバッグに要する時間と労力も大幅に削減される。
【００３０】
以下、本発明の第３の実施例について説明する。
図２２は、第３の実施例におけるタスクを起動するときのシステムタスクの処理とデータの流れを示す図である。
第２の実施例では、ネットワークもしくはＩ／Ｏより１つのデータを受信すると、該データを必要とする１つ、もしくは複数のタスクが起動され、起動されたタスクが受信したデータを処理して結果を送信する方法を示した。
これに対して第３の実施例では、タスクが処理を行なうのに必要な複数のデータが揃った時点で初めてタスクが起動され、受信した複数のデータを使って処理を行ない、その処理結果を送信する点において第２の実施例と異なっている。
ネットワーク２２００より受信されたデータは、入力バッファ２２０３に格納される。システムタスク２２０２は、入力バッファ２２０３に格納されたメッセージと、メモリ１（２２０４）上で更新されたデータとデータが格納されたメモリ領域のメモリアドレスを読み込む。該メモリアドレスは、内容コード変換テーブル２２０７にしたがって内容コードに変換される（処理２２０６）。変換された内容コードとメモリ１（２２０４）より読み込まれたデータ、および入力バッファ２２０３より読み込まれたメッセージ内の内容コードとデータは、内容コードにもとづいて選択受信される（処理２２０８）。
【００３１】
これらの内容コードと同一の内容コートが内容コードテーブル２２０９内にある場合には、内容コードとデータはメモリ２２１１上に書き込まれ（処理２２１０）、同一内容コードがない場合には内容コードとデータは廃棄される。
例えば、内容コードテーブル２２０９の構成が、図２３に示すフォーマットであるとする。図２３に示すように、内容コードテーブル２２０９には、複数の内容コード２３０１と複数のタスクのタスク番号２３０２が対応付けられて格納されている。各タスクは、処理を実行するために少なくとも１つのデータを必要とし、該データの内容を表す少なくとも１つの内容コード２３０１が予め内容コードテーブルに登録されている。タスク番号に対応付けられた内容コードを付与されたデータが揃うと、少なくとも１つのタスクが起動される。
システムタスク２２０２は、この内容コードテーブル２２０９にしたがって必要とするデータが揃ったタスクがあるか否かを判断する（処理２２１２）。必要なデータが揃ったタスクがある場合には、そのタスクを起動し（処理２２１３）、必要なデータが揃ったタスクがない場合には処理を終了する。起動されたタスク２２０５は、メモリ２２１１上から処理を行うために必要な少なくとも１つのデータを読み込む。
【００３２】
図２４は、第３の実施例を示す一連の処理のフローチャートである。
システムタスク２２０２は、まず入力バッファ２２０３内に格納されたメッセージを読み込む（ステップ２４０１）。入力バッファ２２０３内にメッセージがない場合には、何も読み込まない。読み込まれた入力バッファ２４０１内のメッセージは廃棄される。メモリ１（２２０４）内で更新されたデータがあるか否かを判断し（ステップ２４０２）、更新されたデータがある場合には、データが格納されたメモリアドレスと同一のアドレスを内容コード変換テーブル２２０７より検索し（ステップ２４０３）、メモリアドレスを内容コードに変換する（ステップ２４０４）。メモリ１（２２０４）内に更新されたデータがない場合には、データを読み込まない。内容コードテーブル２２０９を検索して（ステップ２４０５）、入力バッファ２２０３より読み込まれたメッセージ内の内容コードとステップ２４０４により変換された内容コードとが同一の内容コードが、内容コードテーブル２２０９に登録されているか否かを判断する（ステップ２４０６）。
同一内容コードが登録されていない場合には、入力バッファ２２０３より読み込まれたデータと内容コード、ならびにメモリ１（２２０４）より読み込まれたデータと変換された内容コードは廃棄される（ステップ２４０７）。一方、同一内容コードが登録されている場合には（ステップ２４０６）、入力バッファ２２０３より読み込まれたデータと内容コード、そしてメモリ１（２２０４）より読み込まれたデータと変換された内容コードを、メモリ２２１１に書き込む（ステップ２４０８）。システムタスク２２０２は、内容コードテーブル２２０９に登録された情報をもとに、必要なデータが揃ったタスクが存在するか否かを判断する（ステップ２４０９）。必要なデータが揃ったタスクが存在しない場合には、処理を終了して、再度起動されるまで待機する。必要なデータが揃ったタスクが存在する場合には、該タスクを起動し（ステップ２４１０）、起動されたタスクは、メモリ２２１１より必要なデータを読み込んで処理を実行する（ステップ２４１１）。
【００３３】
図２５は、図２４の具体例を説明する図である。
ネットワーク２５００より読み込まれたメッセージ２５０２は、入力バッファ２５０１に格納される。図２５の例の場合、メッセージ２５０２内の内容コードはＳｉｚｅＡ（２５０３）、データは１００（２５０４）である。次に、メモリ１（２５０５）上で更新されたデータを検索する。メモリアドレス１００００（２５０６）に格納されたデータである５０（２５０７）が更新されていたとすると、システムタスクはアドレス１００００（２５０６）とデータ５０（２５０７）を読み込む。内容コード変換テーブル２５０９には、アドレスと内容コードの対応付けが登録されている。アドレス１００００（２５１０）は内容コードＷｅｉｇｈｔ（２５１１）に対応するため、読み込んだアドレス１００００（２５０６）を内容コードＷｅｉｇｈｔ（２５１１）に変換する（処理２５０８）。これにより、読み込んだデータ５０（２５０７）と内容コードＷｅｉｇｈｔ（２５１１）が対応付けられることになる。つまり、内容コードＷｅｉｇｈｔ（２５１３）とデータ５０（２５１４）により、新しいメッセージ２５１２が構成される。
【００３４】
この例では、入力バッファ２５０１より１つのメッセージを読み込んでいるが、入力バッファ２５０１内に複数のメッセージが格納されている場合には、複数のメッセージを読み込む。同様に、ここではメモリ１（２５０５）より更新されたデータを１つ読み込んだ例を示したが、更新されたデータが複数存在する場合には、複数のデータを読み込んで処理する。メッセージ２５０２とメッセージ２５１２内の内容コードをもとに、メッセージを選択受信する（処理２５１５）。
内容コードテーブル２５１６には、内容コード２５１７とタスク番号２５１８の関係が登録されている。例えば、タスク番号７（２５２０）のタスクが処理を行うのに必要となるデータの内容を表わす内容コードは、ＷｅｉｇｈｔとＳｉｚｅＡ（２５１９）であり、タスク番号７（２５２０）のタスクは内容コードＷｅｉｇｈｔを付与されたデータと内容コードＳｉｚｅＡを付与されたデータが揃うと起動される。つまり、図２５の例では、タスク番号７（２５２０）が起動される。
図２５の例では、ネットワーク２５００に接続された他ノードより送信されたデータと、ＰＣに接続されたＩ／Ｏから送信されたデータが揃った時点でタスクが起動され、これらのデータを使ってタスクが処理を実行する例を示した。しかし、メッセージ２５０２とメッセージ２５１２の構成から分かるように、メモリ１（２５０５）から読み込まれたデータとメモリアドレスはネットワーク２５００から受信したメッセージと同じメッセージフォーマットに変換されているため、選択受信やタスク起動以降の処理ステップではこれらを区別する必要がない。
したがって、ネットワーク２５００から受信した複数のデータによってデータを必要とするタスクを起動してもよく、メモリ１（２５０５）より読み込まれた複数のデータによってデータを必要とするタスクを起動してもよい。
また、図２５に示した例のように、ネットワーク２５００とメモリ１（２５０６）の両方から受信された複数のデータによって、データを必要とするタスクを起動してもよい。
【００３５】
この実施例によれば、ＰＣはメモリを介して読み込まれたＩ／Ｏからのデータとネットワークを介して受信されたコンピュータやＰＣからのデータを受信し、ＰＣ内部のタスクは送信元の違いを意識せずに、タスクが処理を実行するのに必要なデータが揃った時点で起動され、受信した少なくとも１つのデータをもとに処理を実行する。これにより、ユーザは複数のデータを受信して処理を行なうようなプログラムを開発する場合、データがどのネットワークより受信されたものなのかを意識する必要がなくなり、またシステムタスクにてユーザタスクの起動を管理しているため、ユーザはタスクの起動に関しても意識する必要がなく、タスクは必要なデータが揃った時点で起動される。従来方法では、データがどのネットワークより受信されたものなのか、データがどのメモリ領域に格納されているのか、あるいはタスクの起動タイミングに関してもユーザが意識してプログラムを開発しなければならなかった。しかし、本発明を用いれば、これらの問題はなくなるので、プログラムの開発効率は向上する。
【００３６】
【発明の効果】
以上説明したように、本発明によれば、内容コード通信による同一のプロトコルを用いて異なる性質のネットワーク間で容易にデータ転送を行なうことが可能となる。その結果、異なる２つのネットワークやＩ／Ｏとの間で送受信して処理を行うユーザプログラムの開発が容易になる。
【図面の簡単な説明】
【図１】本発明の第１の実施例を示すデータ転送システムの構成図である。
【図２】図１におけるグローバルメモリの構成図である。
【図３】本発明の第１の実施例における下位ネットワークから上位ネットワークへデータ転送する１つの処理手順を示すフローチャートである。
【図４】メモリアドレスと内容コードの対応付けを保持する内容コード変換テーブルの構成例である。
【図５】グローバルメモリの構成例とネットワーク上を送信されるメッセージの例である。
【図６】グローバルメモリの構成例とネットワーク上を送信されるメッセージの他の例である。
【図７】グローバルメモリの構成例である。
【図８】本発明の第１の実施例における上位ネットワークから下位ネットワークへデータ転送する１つの処理手順を示すフローチャートである。
【図９】メッセージフォーマットの例とグローバルメモリの構成例である。
【図１０】内容コード変換テーブルの定義画面の例である。
【図１１】レジスタ名称を使った内容コード変換テーブルの定義画面の例である。
【図１２】本発明における第１の実施例を応用したデータ転送システムの構成図とグローバルメモリの構成図である。
【図１３】本発明における第１の実施例をさらに応用したデータ転送システムの構成図とグローバルメモリの構成図である。
【図１４】本発明における第２の実施例を示すデータ転送システムの構成図である。
【図１５】本発明の第２の実施例におけるＩ／Ｏから上位ネットワークへデータ転送する１つの処理手順を示すフローチャートである。
【図１６】内容コードテーブルの構成例である。
【図１７】内容コード通信におけるメッセージのメッセージフォーマットである。
【図１８】本発明の第２の実施例における上位ネットワークからＩ／Ｏへデータ転送する１つの処理手順を示すフローチャートである。
【図１９】本発明の第２の実施例におけるデータ転送方法の詳細動作を示した図である。
【図２０】メッセージと内容コードテーブルの構成例である。
【図２１】内容コード変換テーブルと内容コードテーブルの構成例である。
【図２２】本発明の第３の実施例を示すデータ転送システムの構成図の構成図である。
【図２３】内容コードテーブルの構成例である。
【図２４】本発明の第３の実施例における１つの処理手順を示すフローチャートである。
【図２５】本発明の第３の実施例における１つの処理手順を示した図である。
【符号の説明】
１，１２０１，１３０１，１４０１…ネットワーク、
２…メモリベースのネットワーク、３，１２０４，１２０５，１３０４，１４０４…プログラマブルコントローラ（ＰＣ）、
４，５，１２０２，１２０３，１３０２，１３０３，１４０２，１４０３…コンピュータ、６，７…ＰＣ、
８，９，１２０６，１２０７，１２０８，１３０８，１３０９，１４０５…Ｉ／Ｏ、１１…インターフェース、１２…入力バッファ、１３…出力バッファ、
１４…処理装置、１５…グローバルメモリ、１６…インターフェース、
１３０５，１３０６，１３０７…リモートＩ／Ｏ、１４１１…メモリ１、
１４１３…メモリ２、１４１２…Ｌａｄｄｅｒプログラム、
１４１４，２２０２…システムタスク、１４１５，１４１６…タスク、
１９０２，２２０３…入力バッファ、１９０３…出力バッファ、
１９２０，２２０９，２５１６…内容コードテーブル、
１９３０，２２０７，２５０９…内容コード変換テーブル、
１９０６，２２０４…メモリ１、１９０７…メモリ２、
１９０５，２２１１…メモリ、１９０８，２２０５…ユーザタスク。
【図１】
0003888588.tif 000002
【図２】
0003888588.tif 000003
【図３】
0003888588.tif 000004
【図４】
0003888588.tif 000005
【図５】
0003888588.tif 000006
【図６】
0003888588.tif 000007
【図７】
0003888588.tif 000008
【図８】
0003888588.tif 000009
【図９】
0003888588.tif 000010
【図１０】
0003888588.tif 000011
【図１１】
0003888588.tif 000012
【図１２】
0003888588.tif 000013
【図１３】
0003888588.tif 000014
【図１４】
0003888588.tif 000015
【図１５】
0003888588.tif 000016
【図１６】
0003888588.tif 000017
【図１７】
0003888588.tif 000018
【図１８】
0003888588.tif 000019
【図１９】
0003888588.tif 000020
【図２０】
0003888588.tif 000021
【図２１】
0003888588.tif 000022
【図２２】
0003888588.tif 000023
【図２３】
0003888588.tif 000024
【図２４】
0003888588.tif 000025
【図２５】
0003888588.tif 000026