(57)【要約】【課題】  排他を行わない共有メモリ使用方法を提供する。【解決手段】  インタフェースメモリ１２において、ネットワークコントロール部１１がデータ書込みし、ホストマイコンがデータ読出す記憶領域である共有データバンク領域２１を２データバンク構成とし、バンク管理情報２２により管理する。バンク管理情報２２は、ネットワークに接続された各局毎に１bit割り当てられ、bit０の場合はデータバンクＡがホスト向け、bit１の場合はデータバンクＢがホスト向けであることを意味し、ネットワークコントロール部１１はホスト向けではないデータバンクにデータを書き込み、ホストマイコン１３はホスト向けのデータバンクからデータを読み出す。送信データバンク領域についても略同様である。【選択図】図３
2006099650.tif 000002
【特許請求の範囲】
【請求項１】
複数のノードがネットワークに接続されたネットワークシステムにおいて、
前記各ノードは、前記ネットワークに接続して他ノードとの間でデータ送受信するネットワークコントロール手段と、制御手段と、該ネットワークコントロール部と制御手段との間に設けられ両者と接続する記憶手段とを有し、
前記各ノードは複数ワードより成るブロック単位で相互にデータ交換し、
前記記憶手段は各々ブロック単位でデータ格納する２つのデータバンクを有し、前記ネットワークコントロール手段は、該２つのデータバンクを交互に切替えながら前記他ノードから収集したデータを該２つのデータバンクの何れか一方に格納し、前記制御手段は他方のデータバンクからデータを読み出すことを特徴とするネットワークシステム。
【請求項２】
前記制御手段が前記データバンクからデータを読み出すのに掛かる時間を、少なくとも前記ネットワーク全体のデータ更新周期から前記ネットワークコントロール手段が1ノード分のデータ更新に要する時間を差し引いた時間より短くさせることを特徴とする請求項１記載のネットワークシステム。
【請求項３】
前記記憶手段は、前記２つのデータバンクのどちらが制御手段向けであるかを示すバンク管理情報を保持し、
前記ネットワークコントロール手段は、該バンク管理情報を参照して、制御手段向けではないデータバンクにデータを格納すると共に、データ格納完了したら該バンク管理情報を切替え、
前記制御手段は、該バンク管理情報を参照して、制御手段向けであるデータバンクからデータを読み出すことを特徴とする請求項１又は２記載のネットワークシステム。
【請求項４】
前記各ノードは複数ブロック分のデータ交換を行うこともでき、
前記データバンクには各ノード毎に１又は複数ブロック分の記憶領域が割り当てられ、
前記記憶手段は、該各ノード毎に割り当てられた記憶領域の先頭ブロック位置とブロック数を示す情報である構成情報を保持し、
前記ネットワークコントロール手段又は制御手段は、前記データバンクへのデータ格納又は前記データバンクからのデータ読出しの際に、該構成情報を参照することを特徴とする請求項１〜３の何れかに記載のネットワークシステム。
【請求項５】
前記記憶手段はデュアルポートメモリであり、前記制御手段は産業用制御機器であることを特徴とする請求項１〜４の何れかに記載のネットワークシステム。
【請求項６】
複数のノードがネットワークに接続されたネットワークシステムにおける該各ノードにおいて、
前記ネットワークに接続して他ノードとの間でデータ送受信するネットワークコントロール手段と、制御手段と、該ネットワークコントロール手段と制御手段との間に設けられ両者と接続する記憶手段とを有し、
前記各ノードは複数ワードより成るブロック単位で相互にデータ交換し、
前記記憶手段は各々ブロック単位でデータ格納する２つのデータバンクを有し、前記ネットワークコントロール手段は、該２つのデータバンクを交互に切替えながら前記他ノードから収集したデータを該２つのデータバンクの何れか一方に格納し、前記制御手段は他方のデータバンクからデータを読み出すことを特徴とするノード。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークに複数のノードが接続されて成るネットワークシステムに関する。
【背景技術】
【０００２】
従来より、何等かのネットワークに複数のノード（局）が接続しており、ノード間でデータの送受信を行うネットワークシステムが知られている。例えば、プログラマブルコントローラ等の産業用制御機器が、ネットワークに複数接続されるネットワークシステムが存在する。この様なネットワークシステムでは、ネットワークと産業用制御機器のマイコンとの間でデータを受け渡す為の共有メモリが存在しており、一般的にはデュアル・ポートメモリが使われている。すなわち、上記ノードは、例えば、ネットワークに直に接続するネットワークコントロール部と、上記マイコンと、これらの間に設けられたデュアル・ポートメモリとから成っている。
【０００３】
デュアル・ポートメモリは、２つの入出力ポートを有し、一方の入出力ポートからデータを書き込みながら、他方の入出力ポートからデータを読み出す処理を、同時に並行して実行することが可能であり、また、両入出力ポートから同時にデータを読み出すことも可能である。この為、両入出力ポートから同時に同じ記憶領域にアクセスすることも可能となる為、アクセス排他を行う必要があるが、デュアル・ポートメモリは、一般的に、ワード単位のアクセス排他は取ってくれるが、複数ワードで構成されるデータブロックのアクセス排他は取ってくれない。
【０００４】
しかしながら、ネットワークを介してノード間で送受信する情報としては、文字列やバーコード、時刻データ等、複数ワードで１つの意味を持っていることが多い。これより、従来では、例えば図１４（ａ）に示すように調停回路を設けた構成により、例えばマイコンＡが、デュアル・ポートメモリにアクセスしている間は、ＬＯＣＫ信号を調停回路に送ることで、調停回路はマイコンＢに対してＷＡＩＴ信号を送り、マイコンＢによるデュアル・ポートメモリへのアクセスを禁止することによって、複数回に渡る書き込み動作途中に他のマイコンによってデータ読出しが行われないように、排他をとっていた。この様な従来技術は、例えば特許文献１に開示されている。
【０００５】
また、デュアル・ポートメモリではないが、アクセス排他に関して、例えば図１４（ｂ）に示すように、シングルポートメモリに関してＨＯＬＤ／ＨＬＤＡ信号で排他をとることが知られている。
【特許文献１】特開平５−３２４５７７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
上記従来技術による排他では以下の課題がある。
LOCK信号やHOLD/HLDA信号による排他では、一方のマイコンがデータ更新のための書込み中に、他方のマイコンが共有メモリ（デュアルポートメモリ等）へのアクセスを行うと、WAIT状態になってしまい、他に走らせたい処理があっても実行できない。
【０００７】
また、部品コストの制約から、同一のデュアルポートメモリ上に、ネットワークデータとは関係のない（排他の必要のない）データを配置する場合があり、このデータに対してアクセスをした時たまたま、共有メモリ更新途中あるいは読み出し途中のタイミングと重なった場合には、このアクセスも禁止され、待たされてしまう。
【０００８】
また、ネットワークに接続している各機器は、共有メモリの占有領域を多くとりたい機器もあれば、その逆に少なくてもよい機器もある。その一方で、ネットワークに持たせる共有メモリ全サイズは、コスト制約、性能制約によって有限である。もし1局あたりの占有データサイズを、最大データサイズの機器に一律であわせてしまうと無駄である。そのため局ごとに占有ワード数を決めることができれば効率的である。但し、データの一義性を保ったままデータを伝達することが必要とされる。
【０００９】
本発明の課題は、複数のノードがネットワークに接続され、各ノードは、ネットワークに接続して他ノードとの間でデータ送受信するコントロール部と、制御部と、該コントロール部と制御部との間に設けられ両者と接続する共有メモリとを有する構成において、排他を行うことなく、コントロール部、制御部とも、任意のときに共有メモリにアクセスして、複数ワードで構成されるデータをリード／ライトでき、あるいは更に共有メモリの占有領域を各局毎に自由に設定でき且つデータの一義性を保ったままデータを伝達できるネットワークシステム、そのノード等を提供することである。
【課題を解決するための手段】
【００１０】
本発明のネットワークシステムは、複数のノードがネットワークに接続されたネットワークシステムにおいて、前記各ノードは、前記ネットワークに接続して他ノードとの間でデータ送受信するネットワークコントロール手段と、制御手段と、該ネットワークコントロール部と制御手段との間に設けられ両者と接続する記憶手段とを有し、前記各ノードは複数ワードより成るブロック単位で相互にデータ交換し、前記記憶手段は各々ブロック単位でデータ格納する２つのデータバンクを有し、前記ネットワークコントロール手段は、該２つのデータバンクを交互に切替えながら前記他ノードから収集したデータを該２つのデータバンクの何れか一方に格納し、前記制御手段は他方のデータバンクからデータを読み出すように構成する。
【００１１】
上記構成のネットワークシステムは、ネットワークコントロール手段によって一方のデータバンクにアクセス中であっても、制御手段は他方のデータバンクにアクセスするので、排他を行う必要なく、両者は何時でも両者が共有する記憶手段にアクセスできる。
【００１２】
但し、前記制御手段が前記データバンクからデータを読み出すのに掛かる時間を、少なくとも前記ネットワーク全体のデータ更新周期から前記ネットワークコントロール手段が1ノード分のデータ更新に要する時間を差し引いた時間より短くさせるようにする。これによって、例えば、制御手段が他方のデータバンクにアクセスしてデータ読出し中にネットワークコントロール手段が同一データバンクにアクセスしてデータ更新してしまう様な事態は生じない。
【００１３】
上記のようにネットワークコントロール手段と制御手段とが互いに異なるデータバンクにアクセスする様にする手法として、例えば、前記記憶手段は、前記２つのデータバンクのどちらが制御手段向けであるかを示すバンク管理情報を保持し、前記ネットワークコントロール手段は、該バンク管理情報を参照して、制御手段向けではないデータバンクにデータを格納すると共に、データ格納完了したら該バンク管理情報を切替え、前記制御手段は、該バンク管理情報を参照して、制御手段向けであるデータバンクからデータを読み出すようにする。
【００１４】
また、例えば更に、前記各ノードは複数ブロック分のデータ交換を行うこともでき、前記データバンクには各ノード毎に１又は複数ブロック分の記憶領域が割り当てられ、前記記憶手段は、該各ノード毎に割り当てられた記憶領域の先頭ブロック位置とブロック数を示す情報である構成情報を保持し、前記ネットワークコントロール手段又は制御手段は、前記データバンクへのデータ格納又は前記データバンクからのデータ読出しの際に、該構成情報を参照するように構成してもよい。
【００１５】
また、本発明は、上記ネットワークシステムに限らず、上記ネットワークシステムを構成する各ノード自体として構成してもよいし、各ノードに上記機能を実現させる為のプログラム自体、該プログラムを記録した記録媒体自体として構成してもよい。
【発明の効果】
【００１６】
本発明のネットワークシステム、そのノード等によれば、複数のノードがネットワークに接続され、各ノードは、ネットワークに接続して他ノードとの間でデータ送受信するコントロール部と、制御部と、該コントロール部と制御部との間に設けられ両者と接続する共有メモリとを有する構成において、共有メモリのデータバンクを２つにし、両データバンクを交互に切替えて使用すると共に、上記コントロール部と制御部は互いに異なるデータバンクにアクセスすることで（但し所定の条件を満たすものとする）、排他を行うことなく、コントロール部、制御部とも、任意のときに共有メモリにアクセスして、複数ワードで構成されるデータをリード／ライトできる。あるいは更に共有メモリの占有領域を各局毎に自由に設定でき且つデータの一義性を保ったままデータを伝達できる。
【発明を実施するための最良の形態】
【００１７】
以下、図面を参照して、本発明の実施の形態について説明する。
図１は、本例のネットワークシステムの全体図である。
図示のネットワークシステムは、複数のノード（局；この例では局０〜局６３）が、ネットワークに接続されており、ネットワークを介して任意のノード間でデータ送受信を行える。このネットワークシステムは、各局が、自局のデータを仮想的な1枚のメモリ上に送り出し、全ての局がこの1枚のメモリを読むことができる。
【００１８】
各局の構成を図２に示す。各局１０は、ネットワークコントロール部１１、インタフェースメモリ１２、ホストマイコン１３を有する。ホストマイコン１３は、例えば上記制御機器本体（制御部）である。
【００１９】
インタフェースメモリ１２は、ネットワークコントロール部１１とホストマイコン１３とが共有する共有メモリであり、例えばデュアルポートメモリである。デュアルポートメモリの一方の入出力ポートにネットワークコントロール部１１が接続され、他方の入出力ポートにホストマイコン１３が接続される。但し、ここでは、インタフェースメモリ１２は、ネットワークコントロール部１１とホストマイコン１３との間でデータを受け渡しする為に、一時的にデータを格納する為に使用される。
【００２０】
ネットワークコントロール部１１は、ネットワークに接続している他の各局から、その局に係わる何等かのデータ（例えば、本システムがプログラマブルコントローラ等の産業用制御機器が、ネットワークに複数接続されるネットワークシステムである場合、各機器の状態を示すデータ（温度、圧力、回転数等）や、各機器に指示を与える為のデータ等）を収集して、この収集データをインタフェースメモリ１２を介してホストマイコン１３に渡す。一方、ホストマイコン１３は、自局のデータを他局に渡したい場合には、このデータをインタフェースメモリ１２を介してネットワークコントロール部１１に渡すことで、ネットワークコントロール部１１がネットワークを介して他局にデータを渡すように構成されている。
【００２１】
インタフェースメモリ１２には、他の各局のデータを格納する記憶領域が各局毎に割り当てられており、ネットワークコントロール部１１は、任意の他局のデータ収集する毎に、当該他局に割り当てられている記憶領域に収集データを上書きする。
【００２２】
上記構成のネットワークシステムの各局では、ネットワークコントロール部１１、ホストマイコン１３は、互いに、相手側がインタフェースメモリ１２にアクセス中であるか否かは関係なく、任意のときにインタフェースメモリ１２にアクセスすることができる。勿論、同時に同じ記憶領域にアクセスしてしまうことは無い。この特徴については、後に詳細に説明する。
【００２３】
上記構成のネットワークシステムの仕様の一例を以下に示す。以下、この例に応じて説明するが、勿論これは一例であり、本発明がこの例に限定されることはない。
・接続局数：最大64台
・共有メモリの大きさは最大384byte
・データはブロック単位（１ブロック＝6byte）で送受信される（１ワード＝２byteである）。
【００２４】
・上記他局の各局毎に割り当てられる記憶領域は、実施例１では全ての局が１ブロックずつ占有し、実施例２では１又は複数ブロック占有可能とし、1局で最大16ブロック（すなわち96byte）占有することができる。
【００２５】
・ネットワーク上の全ての局のデータが更新されるのに要する時間、すなわちネットワークシステム全体のデータ更新周期（スキャンタイム）は、数十（msec）である。
・ホストマイコンが、共有メモリからバンク管理情報を読み出してから、バンクを特定してデータを読み出すまでに掛かる時間は、最大でも数百（μsec）程度であり、スキャンタイムに比べて非常に短い。
【００２６】
以下、まず、実施例１について説明する。
図３に、実施例１におけるインタフェースメモリ１２におけるインタフェースメモリ領域の構成を示す。
【００２７】
図示のインタフェースメモリ領域２０は、共有データバンク領域２１、バンク管理情報２２、送信データバンク領域２３、送信バンク管理情報２４より成る。
共有データバンク領域２１は、ネットワークコントロール部１１がホストマイコン１３側に伝達したいデータを一時的に格納するための記憶領域である。つまり、他の各局の送信データバンク領域２３から収集したデータを、ホストマイコン１３側に伝達する為に一時的に格納する記憶領域である。この共有データバンク領域２１は、共有データバンクＡ、共有データバンクＢの２つのデータバンクで構成され、それぞれのデータバンクはネットワークに接続される各局のデータを格納する記憶領域として、本例では各局１ブロックずつの計64ブロック分の記憶領域を有している（64は一例であり、これに限定されない）。よって、共有データバンク領域２１は、２×６４ブロック＝７６８byteの記憶容量を有する。
【００２８】
ここで、図４に、ネットワークの共有メモリイメージの基本を示す。
図示のように、各局は、自局のインタフェースメモリ１２の共有データバンク領域２１において、他の局に１ブロックずつ記憶領域を割り当てている。これは、逆に言えば、各局は、それぞれ、自局のデータを多局に渡す為の記憶領域を、他の各局に１ブロックずつ有している。各局は、自局のデータを6byteのデータブロック単位でネットワークに送出している。ここでは、6byteの塊で意味のあるデータであり、一義性を保ったまま通信先の局のホストマイコン１３にデータ内容を伝える為、１ブロック単位でデータ送受信／記憶を行っている。
【００２９】
但し、図４に示すものは一般的な基本例であり、本例の各局では、図４の例に対応させた場合、他の各局に２ブロックずつ記憶領域を割り当てている。すなわち、１つの局当たり、上記データバンクＡに１ブロック、データバンクＢに１ブロックの計２ブロックを割り当てている。よって、図１に示すネットワークシステムでは、データバンクＡとＢはそれぞれ６４ブロック（３８４byte）の記憶領域を有する（但し、自局用の記憶領域は使用しない）。そして、この共有データバンクＡ、Ｂを交互に切替えて使用する。
【００３０】
また、上記バンク管理情報２２は、現在ホストマイコン１３がアクセス（データ読出し）可能な領域（以下“ホスト向け”と表現する）が、データバンクＡ、データバンクＢのどちらであるかを示す情報である。ここでは、全64局の個々に対応して1bitずつあるものとし（６４bit）、各bitが0の時はデータバンクＡがホスト向けであり、1の時はデータバンクＢがホスト向けであることを示す。バンク管理情報２２の更新（切替え；０→１又は１→０）は、ネットワークコントロール部１１が行う。ホストマイコン１３は、バンク管理情報２２を参照して、現在“ホスト向け”となっているデータバンクからデータを読み出す。一方、ネットワークコントロール部１１も、バンク管理情報２２を参照して、現在“ホスト向け”ではないデータバンクにデータを書き込む。
【００３１】
尚、上記説明ではバンク管理情報２２は64bitあるものとしたが、1byteに1bit配置する構成としてもよく、この場合はバンク管理情報は64byteあることになる。1byteに1bit配置する構成とした場合、使用するbitが決まっていれば、更新処理の効率が上がる（各局に１bit割り当てた構成の場合、通常、８bit単位でデータ参照して更に該当するbitを探すので）。
【００３２】
また、上記送信データバンク領域２３は、ホストマイコン１３がネットワークコントロール部１１に対して自局の送信データを渡すための領域である。ネットワークコントロール部１１は、任意の他局から自局のデータを要求されたときに、送信データバンク領域２３に格納されたデータを渡すことになる。つまり、送信データバンク領域２３は、ホストマイコン１３からネットワークに対して送出したいデータを一時的に格納する領域であるともいえる。送信データバンク領域２３も、共有データバンク領域２１と同様、送信データバンクＣ、送信データバンクＤの２バンク構成である。また、同様に、ネットワークコントロール部１１が現在アクセス（データ読出し）可能な領域（以下“コントロール部向け”と表現する）が、データバンクＣ、データバンクＤのどちらであるかを示す情報が、送信バンク管理情報２４である。送信バンク管理情報２４は、１bitだけ存在し、このbitが０のときにはデータバンクＣ、1のときにはデータバンクＤが、コントローラ部向けであることを示す。送信バンク管理情報２４は、ホストマイコン１３が更新し、ネットワークコントロール部１１がデータ読出しの際に参照して、“コントロール部向け”のデータバンクからデータを読み出す。尚、データバンクＣ、データバンクＤは、各々、１ブロック（６byte）の記憶領域を有する。
【００３３】
以上説明したインタフェースメモリ１２を用いて、ネットワークコントロール部１１は、図５に示す処理を実行する。
ネットワークコントロール部１１は、定周期でデータ収集処理を実行している。つまり、ネットワーク上で他の局のデータを収集する処理を実行しており、任意の１局分のデータ（すなわち１ブロック＝６byte分のデータ）が揃ったところで、この収集データを共有データバンク領域２１へコピーするために、データ更新処理を呼出す（ステップＳ１１）。
【００３４】
呼出されたデータ更新処理は、まず、データ収集した局に対応する（更新しようとするブロックに対応する）バンク管理情報２２を参照することで、“ホスト向け”バンクがデータバンクＡ，Ｂのどちらであるかを認識し（ステップＳ１２）、“ホスト向け”バンクではないデータバンクに、収集したデータを書き込む（ステップＳ１３）。そして、書き込み完了したら、バンク管理情報２２を更新する（ステップＳ１４）。例えば仮に、バンク管理情報２２においてデータ収集した局に対応するbitが０であった場合、データバンクＢに書き込む。そして、データ書き込み完了したら、bitを１に変える。
【００３５】
ネットワークコントロール部１１は、任意の局についてデータ収集する毎に、上記図５の処理を実行する。
図６は、共有データの更新、読み出しが行われる様子を示したタイムチャートであり、ネットワークコントロール部１１側が、１局ずつ（１ブロックずつ）、 “ホスト向け”バンクではないデータバンクへデータをコピーし、続いてバンク管理情報を書き換える処理を繰返し実行していくことで、共有メモリ全領域を更新する様子を示している。一巡した後は、再度先頭ブロックのデータ更新をする。以後同様の処理を繰り返す。
【００３６】
この様にして、例えば局0から局63まで（但し自局は除く）順次データを収集して共有データバンク領域の格納データを更新していく。そして、最後の局63までデータ更新をした後、再度先頭の局０から順次データ更新を行うが、今度は、先ほどとは異なるバンク（先ほどがバンクＢだったので、今度はバンクＡ）にデータを書き込んでいく。尚、これは一例であり、局０から順番にデータ更新を行わなくてもよいし、“ホスト向け”バンクが全局で揃って同じで無くても良い（例えばあるときに局０がデータバンクＡ、局１はデータバンクＢ、局ＣはデータバンクＡ等）。但し、ここでは、上記一例を用いて説明する。
【００３７】
図６に示すように、ネットワークコントロール部１１側は、所定周期毎（上記“スキャンタイム”）に全局分のデータ更新をする。
一方、ホストマイコン１３は、図示していないが、まず、読み出したい任意の他局に対応するバンク管理情報２２を参照し、Ａ、Ｂどちらのデータバンクがホスト向きになっているかを調べて、ホスト向けのデータバンクからデータを読み出す。データを読み出すタイミングは任意でよいが、バンク管理情報を読んでからデータを読み出しきるまでの時間は、所定時間内となるようにする。
【００３８】
この所定時間内とは、例えば、上記スキャンタイムからネットワークコントロール部１１側が1局分のデータ更新に要する時間分差し引いただけの時間内とする。つまり、１スキャンタイム当たり、最低、１局分のデータを読み出す時間が確保できればよい。勿論、これは最低限の条件を規定しているだけであり、１スキャンタイム当たり、複数の他局のデータをデータバンクから読み出せるように構成できることは言うまでもない。よって、上記任意の他局のデータ読み出し終わったら、同一スキャンタイム内に別の他局について、同様にして、バンク管理情報２２を参照して、ホスト向けのバンクからデータを読み出すようにしてもよい。勿論、１スキャンタイム内に先頭の局０から順に最後の局63まで全ての局のデータを読み出すことができるように構成してもよい。
【００３９】
上記のように１スキャンタイム内に全ての局のデータを読み出すようにしてなくてもよい（最低、１局分読み出せればよい）のは、本例のネットワークシステムは、例えば制御システムであり、例えば各機器の状態データ（温度、圧力、回転数等）を収集して表示する構成の場合、スキャンタイムの周期（数十msec）でデータ更新して表示させてもあまり意味がないし（そこまで頻繁に状態データが変化することは通常ありえない）、また仮にデータが頻繁に変化する機器がある場合でも数十msec毎に表示データが変化したら作業員等が視認しきれないからである。よって、仮に１スキャンタイム当たり１局分のデータのみ読み出すようにし、６４スキャンタイム掛けて全局のデータを読み出すようにしても、全局分のデータ更新周期は「６４×数十msec」であり、上記の様な制御システムの使用上、特に問題にはならない。尚、その意味で、ネットワークコントロール部１１によるデータ更新も、上記一例のように１スキャンタイム内に全ての局のデータを更新する必要性は、必ずしもない。
【００４０】
また、自局のデータを他局に渡したい場合には、ホストマイコン１３側は、任意のときに、まず、送信バンク管理情報２４を参照して、送信データバンクＣ，Ｄのどちらが現在“コントロール部向け”となっているかを認識して、“コントロール部向け”ではないバンクに、データを書き込む。データ書き込み完了したら、送信バンク管理情報２４を切替える（０→１又は１→０）。ネットワークコントロール部１１は、ネットワーク上の任意の他局から自局のデータ読出し要求がある毎に、送信バンク管理情報２４を参照して、“コントロール部向け”のデータバンクからデータを読み出す。
【００４１】
次に、以下、実施例２について説明する。
上述した実施例１では、共通データバンク領域において各局に割り当てられる記憶容量は同じ（１ブロックずつ）であったが、各局毎に自局が送信したいデータの容量が各々異なる場合は、当然想定される。これより、実施例２では、共通データバンク領域において各局毎にその局が必要とする分だけ記憶容量が割り当てられるようにする。
【００４２】
図７は、実施例２におけるインタフェースメモリ１２におけるインタフェースメモリ領域の構成を示す。
図示のインタフェースメモリ領域３０は、共有データバンク領域３１、構成情報３２、バンク管理情報３３、送信データバンク領域３４、送信バンク管理情報３５より成る。
【００４３】
共有データバンク領域３１は、共有データバンク領域２１と同じであり、データバンクＡ、データバンクＢの２バンク構成であり、１データバンク当たり６４ブロック（１ブロック＝６byte）の記憶容量を有する。つまり、ここでは、共有データ記憶に利用できる記憶容量は一定である（コスト制約、性能制約によって有限である）システムを前提として説明する。よって、上記のように２ブロック以上使用可能とする為、ネットワークに接続可能な局数は、６４局より少なくなる。勿論、これは一例であり、共有データバンク領域の記憶領域を増やすことで対応することもできるが、ここではこのシステムを例にして説明する。尚、記憶領域は、ブロック単位で割り当てるものとする。また尚、各局に割り当てる記憶領域は、無制限ではなく、上限があり、ここでは１局当たり１６ブロック（１６×６＝９６byte）を上限とするものとする。
【００４４】
構成情報３２は、各局毎に、その局に何ブロックの記憶領域を割り当てているか（何ブロック占有するか）を示す情報である。構成情報３２の一例を図８に示す。図示の通り、構成情報は、共有データバンク領域３１の各ブロックに対応付けて設けられており、複数ブロック占有する局に関しては、当該複数ブロックの先頭ブロックに対応する構成情報のみを記述し、残りは仮に‘00’を格納するものとし参照も更新もしないものとする。図示の構成情報の‘04’は０局がそのブロックを先頭に４ブロック占有することを意味する。同様に‘42’は４局が２ブロック占有し、‘61’は６局が１ブロック占有することを意味する。尚、この構成情報３２は、ネットワークのイニシャル時に、ネットワークに接続されている全局が相互に自局の送信ブロック数情報を交換することで生成される。
【００４５】
尚、本例では上記の通り、複数ブロック占有する局が存在する場合には、その分、ネットワークに接続可能な局数を減らす必要がある為、ここでは分かり易くする為に、複数ブロック占有する局がある毎に、その分の局番を欠番として扱う（局番を飛ばして割り付ける）。これより、図８に示す例では、０局は４ブロック占有しているので、１〜３局は欠番となる為、次の局は４局となっている。同様に４局は２ブロック占有するので、次の局は６局となっている。
【００４６】
上記図８に示す構成情報例に応じたネットワークの共有メモリイメージを図９に示す。
この例においては、局０は4ブロック（=24byte）、局4は２ブロック(=12byte)、局6は１ブロック（＝6byte）のデータをネットワーク上に送出している。この例のように、1つの局がたくさんのデータを送りだすべく複数ブロックを占有して、ネットワーク上の通信相手に複数ブロック分のデータを送信する場合、このデータは複数ブロック分で１つの意味を成すのであるから、データの一義性が保たれたまま伝達する必要がある。これについては後に説明する。
【００４７】
再び図７の説明に戻る。
バンク管理情報３３は、実施例１のバンク管理情報２２と基本的には同じ構成であるが、複数ブロックを占有する局の場合は、その先頭ブロックに対応する情報bitのみを使用するものとし、それ以外のbitは変化しないし、ホストマイコン１３側も参照しない。
【００４８】
送信データバンク領域３４も、基本的には実施例１の送信データバンク領域２３と略同様であるが、実施例２では最大１６ブロック（＝９６byte）まで占有可能であることに対応させて、その記憶領域を16ブロック×2バンクに拡張している点が異なる。また、送信バンク管理情報３５は、送信バンク管理情報２４と同じであるが、ホストマイコン１３は、複数ブロック送信したい場合は、全てのブロックデータを送信データバンク領域３４に書き込み完了してから、送信バンク管理情報３５を更新（０→１又は１→０）する。
【００４９】
以上説明したインタフェースメモリ１２を用いて、ネットワークコントロール部１１は、図１０に示す処理を実行する。
ネットワークコントロール部１１は、定周期でデータ収集処理を実行している。つまり、ネットワーク上で他の局のデータを収集する処理を実行しており、任意の１局分のデータ（構成情報にあるように局によって規定されており、１ブロックだけだったり、複数ブロックだったりする）を収集する際には、まず構成情報３２を参照して、その局の送信データ容量（ブロック数）を認識する（また、先頭ブロック位置も認識し、この位置にライトポインタを移動させておく）。そして、全ブロック分のデータを収集できたら、この収集データを共有データバンク領域３１へコピーするために、データ更新処理を呼出す（コールする）（ステップＳ２１）。
【００５０】
呼出されたデータ更新処理は、まず、データ収集した局に対応する（上記先頭ブロックに対応する）バンク管理情報２２を参照することで、“ホスト向け”バンクがデータバンクＡ，Ｂのどちらであるかを認識し（ステップＳ２２）、“ホスト向け”バンクではないデータバンクに、収集したデータをブロック単位で順次書き込む（ステップＳ２３〜Ｓ２６）。すなわち、収集したデータが複数ブロックより成る場合には、まずその先頭ブロックデータを、共有データバンク領域３１のＡ、Ｂどちらかのデータバンクの上記先頭ブロック位置（ライトポインタ位置）に書き込む（ステップＳ２３）。そして、書き込んだブロックが、データ収集した局が占有する複数ブロックの最後のブロックではない場合には（ステップＳ２４，ＮＯ）、次のブロックへライトポインタを移動させ（ブロック番号の昇順に移動させる）（ステップＳ２５）、ステップＳ２３の処理に戻ることで、収集したデータを順次書き込んでいく。そして、データ収集した局が占有する複数ブロックの最後のブロックに対してデータ書き込み完了したら（ステップＳ２４，ＹＥＳ）、バンク管理情報３３を更新する。例えば、仮にバンク管理情報３３が１だった場合、データバンクＡに新しいデータを書き、書き込み完了したら、バンク管理情報３３を０に書き換える（ステップＳ２６）。
【００５１】
勿論、収集したデータが１ブロック分である場合には、最初のステップＳ２３の処理後、直ちにステップＳ２６の処理に移る。
一方、図示していないが、ホストマイコン１３による共有メモリデータ読み出し処理について以下に説明する。
【００５２】
ホストマイコン１３は、まず、データ読出し対象の局が占有するブロックの先頭ブロックとブロック数を、構成情報を参照することで認識する。更に、バンク管理情報３３においてこの先頭ブロックに対応する情報を参照することで、“ホスト向け”バンクが現在、データバンクＡ，Ｂのどちらであるかを認識する。そして、“ホスト向け”バンクにおける上記先頭ブロックから上記ブロック数分のデータを全て読み出す。尚、本実施例においても、データ読出しは任意のタイミングで行ってよく、条件としては、上記所定時間内に最低１局分について構成情報、バンク管理情報の参照・認識、及びデータ読出しを全て行えればよい。但し、１局当たり、最大で１６ブロックのデータがある為、１局分のデータ読出しに掛かる時間は、実施例１より長くなる。また、１スキャンタイム当たりに何局分のデータを読み出すかも、実施例１と同様、任意に決めてよい。
【００５３】
尚、ホストマイコン１３による送信データバンク領域３４への送信データ書き込みに関しては、複数ブロック分のデータを送信できる点以外は、実施例１と変わらないので、特に説明しない。
【００５４】
図１１は、共有データの更新、読み出しが行われる様子を示したタイムチャートである。      
ここでは、局０のデータ収集・更新、読出しが行われるものとし、局０には複数ブロック割り当てられているものとする。局０が占有する複数ブロックに対応するバンク管理情報は、図示の通り、１番目のブロックに対応する情報のみが変化し、他のブロックに対応する情報は、変化しないし、参照もされない。よって、以下、バンク管理情報とは、１番目のブロックに対応する情報を意味するものとする。また、どのブロックが局０の１番目のブロックであるのか及び局０が占有するブロック数が幾つであるのかは、構成情報３２を参照すれば知ることができる。
【００５５】
図示の例では、バンク管理情報は、最初は‘１’となっており、データバンクＢが“ホスト向け”であるので、ネットワークコントロール部１１は、図示の通りデータバンクＡにおける局０の占有ブロックに対して１ブロック目、２ブロック目、３ブロック目、・・・と、順に、局０から収集してデータをコピーしていく。そして、全てのデータを書き込んだら、バンク管理情報を１→０へと更新する。
【００５６】
その後、ホストマイコン１３が、例えば図示のタイミングで局０のデータを読み出そうとした場合、まずバンク管理情報を参照すると‘０’となっているので、データバンクＡが現在“ホスト向け”であると認識し、図示の通りデータバンクＡにおける局０の占有ブロックから１ブロック目、２ブロック目、３ブロック目、・・・と、順に、データを読出して、ホストマイコン内のローカルコピー領域にコピーしていく。
【００５７】
尚、実施例２による接続局内部のデータフローを図１２に示す。
上述した共有メモリアクセス方式によってデータ更新、読み出しを行う場合に、最も条件的に厳しいタイミングにおけるデータ一義性検証を図１３を用いて行う。
【００５８】
上述したネットワークシステムでは、ホストマイコン１３がバンク管理情報を読んだ直ぐ後にネットワークコントロール部１１がバンク管理情報を書き換えるケースが、一番読み出し余裕時間が少ない。更に、接続台数が2台と少なく、他局は最大の１６ブロックを占有し、自局は１ブロックしか送出しない構成の時が一番条件的に厳しい。つまり、ホストマイコン１３側は、たとえネットワークコントロール部１１が一方のデータバンクにデータ書き込み中であっても、必ず他方のデータバンクからデータを読み出すようになっているが、上記状況では、その後にホストマイコン１３側が他方のデータバンクからデータ読出すのに時間が掛かると、このデータ読出し中に、ネットワークコントロール部１１側が同一データバンク（他方のデータバンク）にデータを書き込み始める可能性が考えられる。この例では、他局のデータは１６ブロック分で１つの意味を持つものであるので、一部を書き換えられてしまうと、データの一義性を保てなくなる可能性がある。
【００５９】
本例のネットワークシステムでは、上記の一番厳しい条件下であっても、読み出しに許されている時間Trは、
Tr＝ネットワークサイクルタイム−Ta
(Taは、ネットワークコントロール部１１によるインタフェースメモリ１２へのコピー開始からバンク管理情報書き換えまでに掛かる時間であり、ここでは実測値として１６ブロック分で150μsecが得られている)
であり、上述したネットワーク仕様例に基づいて計算すると、
Tr = 43.6msec−150μsec ＝ 43.45msec
となる。
【００６０】
一方、ホストマイコン１３がバンク管理情報を認識してバンクからデータを読み切るまでの時間は200μsecであり、Trに比較して十分短く余裕があるので、ホストマイコン１３が読み出し途中のブロックをデータ更新されてしまうことがない。そのため、データの一義性が保たれる。
【００６１】
以上説明したように、実施例１、実施例２のネットワークシステム、そのノード（局）等によれば、従来のLOCK信号やHOLD/HLDAによる排他とは異なり、デュアルポートメモリに対して一方がアクセス中に他方がアクセスを行っても、何等制約されることなくデータのリード／ライトを実行できる。勿論、WAIT状態にはならず、他に走らせたい処理があっても待たされずに実行できる。
【００６２】
また、部品コストの制約から、デュアルポートメモリ上にネットワークデータとは関係のない排他の必要のないデータが格納されている場合であっても、一方が共有メモリのデータ更新途中あるいは読み出し途中であっても他方のアクセスは禁止されないため、待たされることなく上記データのリード／ライトを実行できる。
【００６３】
更に実施例２では、上記効果に加えて、構成情報によって局ごとの占有ブロック数をそれぞれ定義することができ、共有メモリの占有領域を多くとりたい局や、その逆に少なくてもよい局等を、共有メモリ型ネットワークに無駄なく接続させることができ、且つ、占有領域のサイズの大小によらず局単位のデータブロックの一義性を保ったままデータ伝達ができる。
【００６４】
尚、特に図示していないが、ネットワークコントロール部１１、ホストマイコン１３は、ＣＰＵやＭＰＵ等の演算処理装置やメモリ等を有しており、このメモリには上述した図５、図１０に示す処理や図示せずに説明したホストマイコン１３側の処理を、演算処理装置で実行させる為のアプリケーション・プログラムやデータが格納されている。
【図面の簡単な説明】
【００６５】
【図１】本例のネットワークシステムの全体図である。
【図２】各局の概略構成図である。
【図３】実施例１におけるインタフェースメモリ領域の構成を示す図である。
【図４】ネットワークの共有メモリイメージの基本を示す図である。
【図５】実施例１におけるネットワークコントロール部によるデータ収集・データバンク更新処理を示す図である。
【図６】共有データの更新、読み出しが行われる様子を示したタイムチャートである。
【図７】実施例２におけるインタフェースメモリ領域の構成を示す図である。
【図８】構成情報の一例である。
【図９】図８に示す構成情報例に応じたネットワークの共有メモリイメージである。
【図１０】実施例２におけるネットワークコントロール部によるデータ収集・データバンク更新処理を示す図である。
【図１１】共有データの更新、読み出しが行われる様子を示したタイムチャートである。
【図１２】実施例２による接続局内部のデータフローである。
【図１３】最も条件的に厳しいタイミングにおけるデータ一義性検証を説明する為の図である。
【図１４】従来技術を説明する為の図であり、（ａ）は調停回路を設けた構成、（ｂ）はＨＯＬＤ／ＨＬＤＡ信号で排他をとる構成である。
【符号の説明】
【００６６】
１０  局
１１  ネットワークコントロール部
１２  インタフェースメモリ
１３  ホストマイコン
２０  インタフェースメモリ領域
２１  共有データバンク領域
２２  バンク管理情報
２３  送信データバンク領域
２４  送信バンク管理情報
３０  インタフェースメモリ領域
３１  共有データバンク領域
３２  構成情報
３３  バンク管理情報
３４  送信データバンク領域
３５  送信バンク管理情報
【図１】
2006099650.tif 000003
【図２】
2006099650.tif 000004
【図３】
2006099650.tif 000005
【図５】
2006099650.tif 000006
【図６】
2006099650.tif 000007
【図７】
2006099650.tif 000008
【図８】
2006099650.tif 000009
【図１０】
2006099650.tif 000010
【図１４】
2006099650.tif 000011
【図４】
2006099650.tif 000012
【図９】
2006099650.tif 000013
【図１１】
2006099650.tif 000014
【図１２】
2006099650.tif 000015
【図１３】
2006099650.tif 000016