(57)【特許請求の範囲】
【請求項１】
制御用パケットを生成するマスタ装置と、前記制御用パケットに従って制御されるスレーブ装置とを接続する制御用ネットワークシステムであって、
前記マスタ装置は、パケット生成情報登録部と、パケット生成部と、通信部と、記憶手段と、パケット選択手段とを有し、
前記パケット生成情報登録部は、前記スレーブ装置への制御用コマンドごとに、その制御用コマンドが扱うデータを記憶する前記記憶手段内のデータ領域を割り当て、その割り当てたデータ領域アドレスと、前記スレーブ装置への制御用コマンドと、データサイズと、前記スレーブ装置内の記憶領域におけるデータアクセス用のアドレスとを対応づけて、パケット生成情報として前記記憶手段に記憶し、
前記パケット選択手段は、前記記憶手段に記憶された前記パケット生成情報から、前記パケット生成情報を構成する情報をもとに前記パケット生成情報を選択するときに、前記パケット生成情報のうちの前記マスタ装置から前記スレーブ装置へのデータ書き込み用の制御用コマンドを含む前記パケット生成情報を選択し、
前記パケット生成部は、前記パケット選択手段が選択した前記パケット生成情報を参照して抽出した情報をもとに前記制御用パケットを作成するときに、前記パケット選択手段が選択した前記パケット生成情報を参照して、そのパケット生成情報に含まれる各制御用コマンドに対応する前記記憶手段のアドレスから読み取った書き込み用のデータを、前記制御用パケットに含めることで前記制御用パケットを作成し、
前記通信部は、作成された前記制御用パケットを、前記スレーブ装置へと送信することを特徴とする
制御用ネットワークシステム。
【請求項２】
制御用パケットを生成するマスタ装置と、前記制御用パケットに従って制御されるスレーブ装置とを接続する制御用ネットワークシステムであって、
前記マスタ装置は、パケット生成情報登録部と、パケット生成部と、通信部と、記憶手段と、パケット選択手段とを有し、
前記パケット生成情報登録部は、前記スレーブ装置への制御用コマンドごとに、その制御用コマンドが扱うデータを記憶する前記記憶手段内のデータ領域を割り当て、その割り当てたデータ領域アドレスと、前記スレーブ装置への制御用コマンドと、データサイズと、前記スレーブ装置内の記憶領域におけるデータアクセス用のアドレスとを対応づけて、パケット生成情報として前記記憶手段に記憶し、
前記パケット選択手段は、前記記憶手段に記憶された前記パケット生成情報から、前記パケット生成情報を構成する情報をもとに前記パケット生成情報を選択するときに、前記パケット生成情報のうちの前記マスタ装置から前記スレーブ装置へのデータ読み込み用の制御用コマンドを含む前記パケット生成情報を選択し、
前記パケット生成部は、前記パケット選択手段が選択した前記パケット生成情報を参照して抽出した情報をもとに前記制御用パケットを作成するときに、前記パケット選択手段が選択した前記パケット生成情報を参照して、そのパケット生成情報に含まれる各制御用コマンドに対応する前記データサイズ分の領域を前記制御用パケットに含めることで前記制御用パケットを作成し、
前記通信部は、作成された前記制御用パケットを、前記スレーブ装置へと送信することを特徴とする
制御用ネットワークシステム。
【請求項３】
前記マスタ装置は、さらに、パケットフィルタ部を有し、
前記パケットフィルタ部は、前記通信部を介して受信した前記制御用パケットに含まれる制御用コマンドのうちの前記スレーブ装置から前記マスタ装置へのデータ読み込み用の制御用コマンドを選択し、選択した制御用コマンドごとに、前記パケット生成情報を参照して、各制御用コマンドに対応する前記記憶手段のアドレスへ、前記制御用パケットから読み取ったデータを書き出すことを特徴とする
請求項１または請求項２に記載の制御用ネットワークシステム。
【請求項４】
前記制御用ネットワークシステムは、１台以上の前記マスタ装置と、複数台の前記スレーブ装置とをリング状のネットワークで接続し、
複数台の前記スレーブ装置それぞれへの制御用コマンドが含まれる前記制御用パケットは、前記マスタ装置から送出されると、リング状のネットワークに従って前記各スレーブ装置へと順に転送された後、送出元の前記マスタ装置へと戻ることを特徴とする
請求項１ないし請求項３のいずれか１項に記載の制御用ネットワークシステム。
【請求項５】
前記マスタ装置は、さらに、アドレス補正値管理部を有し、
前記アドレス補正値管理部は、同じ前記制御用ネットワークシステム内の各装置で共有される論理アドレス空間上の論理アドレスを、前記マスタ装置内の前記記憶手段におけるアドレスと対応づけて前記記憶手段に記憶し、
前記パケット生成部は、さらに、選択した制御用コマンドごとの書き込み用のデータが格納されている前記記憶手段内のアドレスを、前記アドレス補正値管理部が記憶した論理アドレスとの対応付け情報から取得することを特徴とする
請求項４に記載の制御用ネットワークシステム。
【請求項６】
前記マスタ装置は、さらに、前記パケット生成情報登録部が割り当てた前記記憶手段内のデータ領域へ前記マスタ装置上で動作するアプリケーションからアクセスするためのデータ構造である制御指令構成を、前記アプリケーションに公開し、
前記マスタ装置は、前記アプリケーション上で実体化された変数のデータ領域と、計算機資源のデータ領域を対応づける機能を有する基本ソフトウェアを動作させ、
前記制御指令構成は、前記パケット生成情報の制御用コマンドごとに、その制御用コマンドが扱うデータ内容を示す変数であり、
前記マスタ装置は、前記変数と、前記変数の制御用コマンドに対応する前記記憶手段内のデータ領域を、前記マスタ装置内で動作する前記基本ソフトウェアの対応付け機能により、対応づけることを特徴とする
請求項１ないし請求項５のいずれか１項に記載の制御用ネットワークシステム。
【請求項７】
前記制御指令構成は、プログラミング言語の構造体のデータ構造、プログラミング言語の共用体のデータ構造、および、オブジェクト指向言語のオブジェクトのデータ構造のうちの少なくとも１つのデータ構造として構成されることを特徴とする
請求項６に記載の制御用ネットワークシステム。
【請求項８】
制御用パケットを生成するマスタ装置と、前記制御用パケットに従って制御されるスレーブ装置とを接続する制御用ネットワークシステムに用いられる前記マスタ装置であって、
前記マスタ装置は、パケット生成情報登録部と、パケット生成部と、通信部と、記憶手段と、パケット選択手段とを有し、
前記パケット生成情報登録部は、前記スレーブ装置への制御用コマンドごとに、その制御用コマンドが扱うデータを記憶する前記記憶手段内のデータ領域を割り当て、その割り当てたデータ領域アドレスと、前記スレーブ装置への制御用コマンドと、データサイズと、前記スレーブ装置内の記憶領域におけるデータアクセス用のアドレスとを対応づけて、パケット生成情報として前記記憶手段に記憶し、
前記パケット選択手段は、前記記憶手段に記憶された前記パケット生成情報から、前記パケット生成情報を構成する情報をもとに前記パケット生成情報を選択するときに、前記パケット生成情報のうちの前記マスタ装置から前記スレーブ装置へのデータ書き込み用の制御用コマンドを含む前記パケット生成情報を選択し、
前記パケット生成部は、前記パケット選択手段が選択した前記パケット生成情報を参照して抽出した情報をもとに前記制御用パケットを作成するときに、前記パケット選択手段が選択した前記パケット生成情報を参照して、そのパケット生成情報に含まれる各制御用コマンドに対応する前記記憶手段のアドレスから読み取った書き込み用のデータを、前記制御用パケットに含めることで前記制御用パケットを作成し、
前記通信部は、作成された前記制御用パケットを、前記スレーブ装置へと送信することを特徴とする
マスタ装置。
【請求項９】
制御用パケットを生成するマスタ装置と、前記制御用パケットに従って制御されるスレーブ装置とを接続する制御用ネットワークシステムに用いられる前記マスタ装置であって、
前記マスタ装置は、パケット生成情報登録部と、パケット生成部と、通信部と、記憶手段と、パケット選択手段とを有し、
前記パケット生成情報登録部は、前記スレーブ装置への制御用コマンドごとに、その制御用コマンドが扱うデータを記憶する前記記憶手段内のデータ領域を割り当て、その割り当てたデータ領域アドレスと、前記スレーブ装置への制御用コマンドと、データサイズと、前記スレーブ装置内の記憶領域におけるデータアクセス用のアドレスとを対応づけて、パケット生成情報として前記記憶手段に記憶し、
前記パケット選択手段は、前記記憶手段に記憶された前記パケット生成情報から、前記パケット生成情報を構成する情報をもとに前記パケット生成情報を選択するときに、前記パケット生成情報のうちの前記マスタ装置から前記スレーブ装置へのデータ読み込み用の制御用コマンドを含む前記パケット生成情報を選択し、
前記パケット生成部は、前記パケット選択手段が選択した前記パケット生成情報を参照して抽出した情報をもとに前記制御用パケットを作成するときに、前記パケット選択手段が選択した前記パケット生成情報を参照して、そのパケット生成情報に含まれる各制御用コマンドに対応する前記データサイズ分の領域を前記制御用パケットに含めることで前記制御用パケットを作成し、
前記通信部は、作成された前記制御用パケットを、前記スレーブ装置へと送信することを特徴とする
マスタ装置。
【請求項１０】
制御用パケットを生成するマスタ装置と、前記制御用パケットに従って制御されるスレーブ装置とを接続する制御用ネットワークシステムによる制御用データ処理方法であって、
前記マスタ装置は、パケット生成情報登録部と、パケット生成部と、通信部と、記憶手段と、パケット選択手段とを有し、
前記パケット生成情報登録部は、前記スレーブ装置への制御用コマンドごとに、その制御用コマンドが扱うデータを記憶する前記記憶手段内のデータ領域を割り当て、その割り当てたデータ領域アドレスと、前記スレーブ装置への制御用コマンドと、データサイズと、前記スレーブ装置内の記憶領域におけるデータアクセス用のアドレスとを対応づけて、パケット生成情報として前記記憶手段に記憶し、
前記パケット選択手段は、前記記憶手段に記憶された前記パケット生成情報から、前記パケット生成情報を構成する情報をもとに前記パケット生成情報を選択するときに、前記パケット生成情報のうちの前記マスタ装置から前記スレーブ装置へのデータ書き込み用の制御用コマンドを含む前記パケット生成情報を選択し、
前記パケット生成部は、前記パケット選択手段が選択した前記パケット生成情報を参照して抽出した情報をもとに前記制御用パケットを作成するときに、前記パケット選択手段が選択した前記パケット生成情報を参照して、そのパケット生成情報に含まれる各制御用コマンドに対応する前記記憶手段のアドレスから読み取った書き込み用のデータを、前記制御用パケットに含めることで前記制御用パケットを作成し、
前記通信部は、作成された前記制御用パケットを、前記スレーブ装置へと送信することを特徴とする
制御用データ処理方法。
【請求項１１】
制御用パケットを生成するマスタ装置と、前記制御用パケットに従って制御されるスレーブ装置とを接続する制御用ネットワークシステムによる制御用データ処理方法であって、
前記マスタ装置は、パケット生成情報登録部と、パケット生成部と、通信部と、記憶手段と、パケット選択手段とを有し、
前記パケット生成情報登録部は、前記スレーブ装置への制御用コマンドごとに、その制御用コマンドが扱うデータを記憶する前記記憶手段内のデータ領域を割り当て、その割り当てたデータ領域アドレスと、前記スレーブ装置への制御用コマンドと、データサイズと、前記スレーブ装置内の記憶領域におけるデータアクセス用のアドレスとを対応づけて、パケット生成情報として前記記憶手段に記憶し、
前記パケット選択手段は、前記記憶手段に記憶された前記パケット生成情報から、前記パケット生成情報を構成する情報をもとに前記パケット生成情報を選択するときに、前記パケット生成情報のうちの前記マスタ装置から前記スレーブ装置へのデータ読み込み用の制御用コマンドを含む前記パケット生成情報を選択し、
前記パケット生成部は、前記パケット選択手段が選択した前記パケット生成情報を参照して抽出した情報をもとに前記制御用パケットを作成するときに、前記パケット選択手段が選択した前記パケット生成情報を参照して、そのパケット生成情報に含まれる各制御用コマンドに対応する前記データサイズ分の領域を前記制御用パケットに含めることで前記制御用パケットを作成し、
前記通信部は、作成された前記制御用パケットを、前記スレーブ装置へと送信することを特徴とする
制御用データ処理方法。
【請求項１２】
請求項１０または請求項１１に記載の制御用データ処理方法を、コンピュータである前記マスタ装置に実行させるための制御用データ処理プログラム。
【請求項１３】
前記パケット生成部は、前記パケット選択手段が選択した前記パケット生成情報について、その選択したパケット生成情報に含まれる前記制御用コマンド、前記記憶手段に割り当てた前記データ領域アドレスにおけるデータ、前記スレーブ装置内の記憶領域における前記データアクセス用のアドレス、前記データサイズのうち、少なくとも１つを、前記制御用パケットに含めることで前記制御用パケットを作成することを特徴とする
請求項１に記載の制御用ネットワークシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御用ネットワークシステム、マスタ装置、制御用データ処理方法、および、制御用データ処理プログラムの技術に関する。
【背景技術】
【０００２】
制御システムは、１台以上の制御用計算機（マスタ装置）が、ネットワークを介して１台以上の制御対象装置（スレーブ装置）を制御するように構成される。そして、マスタ装置は、制御指令などを含む制御用パケットをスレーブ装置へ送信することで、スレーブ装置を制御する。制御用パケットが流れるネットワークには、DeviceNet、CC-Link（登録商標）、ＥｔｈｅｒＣＡＴ（登録商標）などがある。
制御アプリケーションにおけるＡＰＩ（Application Programming Interface）には、さまざまな方式がある。ＡＰＩには、送信するパケットそのものを構築し、そのパケット内のデータ領域へ制御指令を格納する方式がある。
【０００３】
ＡＰＩの別の方式では、制御アプリケーションからアクセス可能なアドレス空間上に、制御対象のデータ領域を割り当て、その領域へ制御指令を書き込むものもある。そのアドレス空間に書き込まれた制御指令は所定の方式で送信パケットとして構築され、ネットワークへ送信される。
また、アドレス空間はメモリ上に展開されたソフトウェアオブジェクトの場合もあれば、ＣＰＵなどの演算部からアクセス可能なハードウェア上のバス空間であることもある。
【０００４】
所定のアドレス空間上にデータ領域を割り当てる方式として、転写メモリ方式（特許文献１、引用文献１）がある。転写メモリ方式は、ネットワークを構成する全ノードのデータ領域をアドレス空間上に均等の大きさで割り当てる。全ノード上のそのアドレス空間上のデータは、全ノード間で定期的に通信によって交換される。このような方式をとるネットワークとして、CC-LinkやFL-netなどが挙げられる。転写メモリ方式はコモンメモリ方式と呼ばれることもある。
【０００５】
所定のアドレス空間上にデータ領域を割り当てる別の方式として、論理アドレス空間方式がある。論理アドレス空間方式は、各スレーブの持つ任意のデータ領域を単一の仮想的な論理アドレス空間に割り当てる。その領域の大きさや割り当て方は自由に設定することができる。このような方式をとるネットワークとしてＥｔｈｅｒＣＡＴ（登録商標）（IEC61784パート２のCommunication Profile Family 12）がある。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０００−７６１６３号公報
【非特許文献】
【０００７】
【非特許文献１】ＩＳＯ（International Organization for Standardization）１４７４５−４，「Industrial Automation Systems and integration-Open systems application integration frameworks-Part 4 Reference description for Ethernet-based control systems」
【発明の概要】
【発明が解決しようとする課題】
【０００８】
ここで、これらの制御対象への制御指令の通信方法におけるＡＰＩにおいて、従来の方法では、ソフトウェアの開発効率、ソフトウェア上での通信性能、ネットワーク構成の柔軟性などの面で課題が生じる。
【０００９】
送信パケットをアプリケーションで作成して、制御対象への制御指令をその送信パケットに格納する方式では、アプリケーション開発者はネットワークの通信プロトコルを理解する必要がある。制御アプリケーションの開発においては、所望の制御方式を実現し、目的の制御性能を満足するか否かに集中できることが望ましい。そのような場合に、アプリケーション開発者に通信プロトコルの理解を要求することは、開発工数の増加、アプリケーション開発の複雑化などの課題が生じる。
【００１０】
さらに、オペレーティングシステム（以下、ＯＳと略す）などの通信用ソフトウェアを利用する場合、通信処理時間が増大し、システム全体での制御性能を低下させる。その通信用ソフトウェアの例としては、ＴＣＰ／ＩＰプロトコルスタック（以下、通信用ソフトウェアとしてプロトコルスタックとして説明する）が挙げられる。プロトコルスタックによる通信処理は、制御アプリケーションと通信処理の実行を順次実行するため、通信処理時間が増大する。また、ＯＳ上で他のアプリケーションが動作している場合は、それらの実行時間の影響も受け、通信処理時間が増大する可能性がある。
【００１１】
転写メモリ方式では、制御対象のデータ領域をアドレス空間上に割り当て、その領域に対して、指令の書込み、読込みを実行する。そのため、アプリケーションで送信パケットを作成する方法に比較して、通信プロトコルの詳細を理解する必要がないという利点がある。しかしながら、転写メモリ方式では、固定サイズのデータ領域をアドレス空間上に全ノードの数だけ割り当てるため、ネットワークに接続可能なノード数に制約が生じやすい。
また、データ領域の大きさが固定である仕様のため、データ領域に空きが生じやすい。例えば、Ｉ／Ｏ点数が２点の制御対象と、１０００点の制御対象がある場合、データ領域の大きさが１０２４点であるとすると、後者の制御対象はデータ領域を有効活用できるが、前者の制御対象はデータ領域のほとんどが意味のない領域となる。
【００１２】
論理アドレス空間方式は、転写メモリ方式に比較して、制御対象のデータ領域を自由に配置することができる。そのため、アドレス空間の利用効率も高く、接続可能なノード数の制約も緩い。したがって、論理アドレス空間方式をとるネットワークの方が、転写メモリ方式のネットワークよりも、接続可能なノードの最大許容数は多い。
【００１３】
しかしながら、論理アドレス空間方式は、転写メモリ方式と同様に、開発者が、所定のアドレス位置上のデータがアプリケーションにおいて、どのような意味を持つかを把握していなければならない。そのため、制御アプリケーション上での意味を表現する形式でアプリケーション開発をすることができない。したがって、開発者は所定のアドレスに対して、アプリケーション上の処理を実行することになるため、開発効率が低下する。
【００１４】
また、論理アドレス空間方式は、アプリケーション開発者に論理アドレス空間やその他ネットワークに関する知識（送信パケットの作成など）を要求し、アプリケーションの開発期間の長期化、必要スキルの高度化を意味する。したがって、アプリケーションの開発コストが増加する。さらにソフトウェアによる実装では、順次実行のため、通信処理時間が長期化し、結果的に制御性能が低下するという課題がある。
【００１５】
そこで、本発明は、前記した問題を解決し、開発効率および通信性能を向上させた情報処理装置を提供することを、主な目的とする。
【課題を解決するための手段】
【００１６】
前記課題を解決するために、本発明は、制御用パケットを生成するマスタ装置と、前記制御用パケットに従って制御されるスレーブ装置とを接続する制御用ネットワークシステムであって、
前記マスタ装置が、パケット生成情報登録部と、パケット生成部と、通信部と、記憶手段と、パケット選択手段とを有し、
前記パケット生成情報登録部が、前記スレーブ装置への制御用コマンドごとに、その制御用コマンドが扱うデータを記憶する前記記憶手段内のデータ領域を割り当て、その割り当てたデータ領域アドレスと、前記スレーブ装置への制御用コマンドと、データサイズと、前記スレーブ装置内の記憶領域におけるデータアクセス用のアドレスとを対応づけて、パケット生成情報として前記記憶手段に記憶し、
前記パケット選択手段は、前記記憶手段に記憶された前記パケット生成情報から、前記パケット生成情報を構成する情報をもとに前記パケット生成情報を選択するときに、前記パケット生成情報のうちの前記マスタ装置から前記スレーブ装置へのデータ書き込み用の制御用コマンドを含む前記パケット生成情報を選択し、
前記パケット生成部が、前記パケット選択手段が選択した前記パケット生成情報を参照して抽出した情報をもとに前記制御用パケットを作成するときに、前記パケット選択手段が選択した前記パケット生成情報を参照して、そのパケット生成情報に含まれる各制御用コマンドに対応する前記記憶手段のアドレスから読み取った書き込み用のデータを、前記制御用パケットに含めることで前記制御用パケットを作成し、
前記通信部が、作成された前記制御用パケットを、前記スレーブ装置へと送信することを特徴とする。
その他の手段は、後記する。
【発明の効果】
【００１７】
本発明によれば、開発効率および通信性能を向上させた情報処理装置を提供することができる。
【図面の簡単な説明】
【００１８】
【図１】本発明の第１実施形態に関する制御用ネットワークシステムを示す構成図である。
【図２】図１の制御用計算機の通信用ＬＳＩを示す構成図である。
【図３】本発明の第１実施形態に関する開発用計算機を示す構成図である。
【図４】システム情報およびパケット生成情報の一例を示す構成図である。
【図５】パケット生成情報登録部が、データ記憶部にデータ構造を割り当てる手順を示すフローチャートである。
【図６】パケット生成情報登録部が、データ記憶部にデータ構造を割り当てる手順を示すフローチャートである。
【図７】パケット生成情報登録部が、データ記憶部にデータ構造を割り当てる手順を示すフローチャートである。
【図８】パケット生成情報登録部が、データ記憶部にデータ構造を割り当てる手順を示すフローチャートである。
【図９】図５および図６に示す手順で割り当てた結果のデータ記憶部を示す説明図である。
【図１０】図７および図８に示す手順で割り当てた結果のデータ記憶部を示す説明図である。
【図１１】制御指令構成部が、データ記憶部にデータ構造を割り当てるとともに、制御指令構成を生成する手順を示すフローチャートである。
【図１２】開発用計算機が実行するアプリケーションの開発手順を示すフローチャートである。
【図１３】本発明の第２実施形態における通信用ＬＳＩを示す構成図である。
【図１４】アドレス対応情報およびパケット生成情報の一例を示す構成図である。
【図１５】開発用計算機が実行するアプリケーションの開発手順を示すフローチャートである。
【図１６】本発明の第１実施形態および第２実施形態での、パケット生成部によるパケット送信時処理を示すフローチャートである。
【図１７】図１６の処理で生成されるＥｔｈｅｒＣＡＴフレームであるイーサネット（登録商標）フレームの構造を示す構成図である。
【図１８】本発明の第１実施形態および第２実施形態での、パケットフィルタ部によるパケット受信時処理を示すフローチャートである。
【発明を実施するための形態】
【００１９】
以下、本発明の各実施形態を、図面を参照して詳細に説明する。
第１実施形態は、データ構造の割り当てを物理アドレス空間として構成する形態である。
第２実施形態は、データ構造の割り当てを論理アドレス空間として構成する形態である。
【００２０】
図１（ａ）は、第１実施形態の制御用ネットワークシステムを示す構成図である。マスタ装置としての制御用計算機１２０は、制御用ネットワーク１２２を介して、スレーブ装置としての制御対象１２１を制御する。制御対象１２１は、例えば、サーボアンプとサーボモータによる構成である。
制御用ネットワーク１２２は、例えば、イーサネット（登録商標）のプロトコル上で動作するＥｔｈｅｒＣＡＴ（登録商標）のネットワークである。
このＥｔｈｅｒＣＡＴのネットワークは、以下の特徴を有する。
・マスタ装置とスレーブ装置とをリング状に接続し、マスタ装置から送出される制御用パケットは、１台以上のスレーブ装置を順に廻り、マスタ装置へと戻ってくる。
・１つの制御用パケットには、複数台のスレーブ装置それぞれへの制御用データを含めてもよい。これにより、マスタ装置は、複数台のスレーブ装置それぞれに対して個別にパケットの送受信をするよりも、少ない数のパケットを送受信するだけで済む。
・複数台のスレーブ装置それぞれへの制御用コマンドが含まれる制御用パケットは、マスタ装置から送出されると、リング状のネットワークに従って各スレーブ装置へと順に転送された後、送出元のマスタ装置へと戻る。
【００２１】
図１（ｂ）は、制御用計算機１２０のハードウェア構成を示す構成図である。制御用計算機１２０は、ＣＰＵ１０１と、通信用ＬＳＩ１０２と、ＰＨＹ（物理層：physical layer）１０３と、メモリ１０８と、不揮発性記憶媒体１０９とが、バス１１０で内部接続されて、構成される。
ＣＰＵ１０１は、不揮発性記憶媒体１０９からプログラムをメモリ１０８に転送して実行する。実行処理プログラムとしては、ＯＳ（Operating System）や、そのＯＳ上で動作するアプリケーションプログラムが例示される。
通信用ＬＳＩ１０２は、ＣＰＵ１０１上で動作するプログラムから通信要求を受け取り、ＰＨＹ１０３を用いて制御用ネットワーク１２２に対して通信する。通信用ＬＳＩ１０２の実装例としては、ＦＰＧＡ（Field Programmable Gate Array）、ＣＰＬＤ（Complex Programmable Logic Device）、ＡＳＩＣ（Application Specific Integrated Circuit）、ゲートアレイなどのＩＣ（Integrated Circuit）が例示される。
【００２２】
ＰＨＹ１０３は、制御用ネットワーク１２２との通信機能を実装した送受信機ＩＣである。ＰＨＹ１０３の提供する通信規格としてイーサネット（登録商標）のＰＨＹチップが例示される。なお、図１（ｂ）の構成では、ＰＨＹ１０３と通信用ＬＳＩ１０２が接続しているので、イーサネットのＭＡＣ（Media Access Control）層の処理は通信用ＬＳＩ１０２に含まれる。
なお、ＭＡＣ機能を提供するＩＣを通信用ＬＳＩ１０２とＰＨＹ１０３間に配置する構成や、ＭＡＣ機能を提供するＩＣとＰＨＹ１０３を組み合わせた通信用ＩＣと通信用ＬＳＩ１０２を接続する構成としてもよい。
【００２３】
メモリ１０８は、ＣＰＵ１０１が動作するための一時的な記憶領域であり、不揮発性記憶媒体１０９から転送したＯＳ、アプリケーションプログラムなどが格納される。
不揮発性記憶媒体１０９は、情報の記憶媒体で、ＣＰＵ１０１を動作させるためのプログラムの保存、プログラムの実行結果の保存に利用される。
バス１１０は、ＣＰＵ１０１、メモリ１０８、不揮発性記憶媒体１０９、通信用ＬＳＩ１０２をそれぞれ接続する。バス１１０としては、ＰＣＩ（Peripheral Components Interconnect）バス、ＰＣＩ  Ｅｘｐｒｅｓｓバス、ＩＳＡ（Industrial Standard Architecture）バス、システムバス、メモリバスなどが例示される。
【００２４】
図２は、制御用計算機１２０の通信用ＬＳＩ１０２を示す構成図である。
通信用ＬＳＩ１０２は、バス接続部１３０と、データ記憶部１３１と、パケット生成情報記憶部１３２と、パケット生成部１３３と、パケットフィルタ部１３４と、通信部１３５と、動作管理部１３８と、を有する。
なお、本実施形態での「パケット」とは、スレーブ装置としての制御対象１２１を制御するための制御用パケットである。
【００２５】
バス接続部１３０は、制御用計算機１２０のハードウェア構成において、バス１１０と接続する。バス接続部１３０は、バス１１０の通信仕様に応じてＣＰＵ１０１やメモリ１０８と通信する。また、バス接続部１３０は、通信用ＬＳＩ１０２内においては、データ記憶部１３１、パケット生成情報記憶部１３２、および、動作管理部１３８と接続する。
バス接続部１３０は、データ記憶部１３１と、通信フレームを生成するためのデータを送受信する。
バス接続部１３０は、パケット生成情報記憶部１３２と、データ記憶部１３１に記憶されるデータから通信フレームを生成するための情報を送受信する。
バス接続部１３０は、動作管理部１３８と、パケット生成部１３３およびパケットフィルタ部１３４の動作の管理設定や、状態を送受信する。
【００２６】
データ記憶部１３１は、通信フレームを生成するためのデータを記憶するため、書込み用記憶部１５０および読込み用記憶部１５１の組として構成される。
書込み用記憶部１５０は、バス接続部１３０から書込みされるデータの記憶部であり、パケット生成部１３３から、記憶しているデータを読み込まれる。また、読込み用記憶部１５１は、パケットフィルタ部１３４から書き込まれるデータの記憶部であり、バス接続部１３０から、記憶しているデータを読み込まれる。
書込み用記憶部１５０と読込み用記憶部１５１は、それぞれ必要に応じて、外部からのアクセスに対して排他制御をするか、内部に複数のデータ領域を持たせる。書込み用記憶部１５０を用いて、具体例を説明する。
【００２７】
データ記憶部１３１は、データの通信経路として、バス接続部１３０、パケット生成部１３３、および、パケットフィルタ部１３４と接続している。ここで、バス接続部１３０およびパケット生成部１３３は、書込み用記憶部１５０に同時にアクセスする可能性があるため、両者のアクセス衝突を回避するために、例えば、以下の２つの手法のいずれかを用いることが望ましい。
手法（１）として、アクセス権管理を行う手法が挙げられる。つまり、バス接続部１３０およびパケット生成部１３３のうちの片方が書込み用記憶部１５０にアクセスしている場合は、他方のアクセスを禁止するように、アクセス権を設定する。
手法（２）として、環状バッファなどのバッファリングにより、アクセスを順次行う手法が挙げられる。例えば、書込み用記憶部１５０の内部に複数のデータ記憶領域を用意して環状バッファを構築し、バス接続部１３０とパケット生成部１３３の同時アクセスを可能とする。環状バッファに必要なデータ記憶領域の数は、２つの記憶部のアクセス速度の関係で決定される。
なお、手法（２）は、手法（１）と比べて、記憶領域が多くなるが、処理性能は向上する。これらの手法の使い分けは、記憶領域、処理性能の要求、あるいは制約条件によって決定される。なお、読込み用記憶部１５１についても、書込み用記憶部１５０と同じように、アクセス衝突の回避手段として手法（１）または手法（２）を用いてもよい。
【００２８】
パケット生成情報記憶部１３２は、パケット生成情報１４１（詳細は、後記の図４（ｂ）を参照）を記憶する。
パケット生成部１３３は、パケット生成情報記憶部１３２から読み込んだパケット生成情報１４１に従って、データ記憶部１３１からデータを取得して、制御対象１２１を制御するためのパケットを生成し、送信部１３６へ伝送する。
パケットフィルタ部１３４は、受信部１３７を介して受信されたパケットから制御用データを抽出し、データ記憶部１３１へと記憶する。ここで、制御用データのデータ記憶部１３１内での記憶位置や記憶領域のサイズは、パケット生成情報１４１に従う。
【００２９】
通信部１３５は、制御用ネットワーク１２２に接続し、制御用ネットワーク１２２の通信プロトコルにしたがって通信をするための機能部であり、送信部１３６と受信部１３７との組で構成される。なお、図１（ｂ）の構成では、ＰＨＹ１０３が通信用ＬＳＩ１０２外にあるため、通信部１３５はＭＡＣ層の処理部に該当する。ただし、ＰＨＹ１０３をＭＡＣ層、ＰＨＹ層を含めたイーサネット通信デバイスとしてもよいし、また、ＰＨＹ機能まで含めて通信用ＬＳＩ１０２に包含してもよい。
送信部１３６は、通信部１３５における送信機能部であり、制御用計算機１２０から制御用ネットワーク１２２に対してパケットを送信する。
受信部１３７は、通信部１３５における受信機能部であり、制御用ネットワーク１２２から送信されたパケットを受信する。
【００３０】
動作管理部１３８は、機能レジスタなどにより構成され、パケット生成部１３３、パケットフィルタ部１３４の動作の管理や、状態をバス１１０に提示する。ＣＰＵ１０１上で動作するプログラムは、バス１１０を介して動作管理部１３８の機能レジスタにアクセスすることにより、パケット生成部１３３およびパケットフィルタ部１３４の動作を制御し、その状態を取得する。動作管理部１３８で設定可能な項目、取得可能な情報として、パケット生成部１３３によるパケット送信のタイミングや、パケットを生成するための情報などが挙げられる。
【００３１】
図３は、開発用計算機１６９を示す構成図である。開発用計算機１６９は、図１（ｂ）で示したＣＰＵ１０１などのハードウェア構成を備えるコンピュータとして構成される。開発用計算機１６９と制御用計算機１２０とは、同じ筐体のコンピュータとして構成してもよいし、別々の筐体のコンピュータとして構成してもよい。
開発用計算機１６９は、処理部として制御指令構成部１６０を有し、記憶手段内にデータとしてシステム情報１７０と、プログラムソース１６２と、制御指令構成１６３とを記憶する。
【００３２】
制御用計算機１２０は、ＯＳ１６４、デバイスドライバ１６５、ライブラリ１６６、ＡＰＩ１６７、アプリケーション１６８、パケット生成情報登録部１６１を、自装置で動作させている。
一方で、制御指令構成部１６０、プログラムソース１６２、制御指令構成１６３、システム情報１７０は、制御用計算機１２０上で動作、存在させてもよいし、制御用計算機１２０と異なる開発用計算機１６９上で動作、存在させてもよい。
開発用計算機１６９においても、単一の計算機である必要はなく、例えば、制御指令構成部１６０が動作する計算機とプログラムソース１６２を用いてアプリケーション１６８を開発する計算機が異なってもよい。
【００３３】
制御指令構成部１６０は、システム情報１７０で定義される制御対象１２１、制御用ネットワーク１２２に関する情報を解析し、制御指令構成１６３を生成する。
パケット生成情報登録部１６１は、システム情報１７０で定義される制御対象１２１、制御用ネットワーク１２２に関する情報を解析し、デバイスドライバ１６５の提供するアクセス機能を用いて、パケット生成情報１４１をパケット生成情報記憶部１３２に登録する。
プログラムソース１６２は、制御指令構成１６３を利用したプログラムのソースコードである。プログラムソース１６２は、コンパイルされて、実行形式であるアプリケーション１６８となる。なお、本実施形態では、コンパイルによって実行形式となるコンパイル型言語について述べるが、プログラムソースの実行形態として、プログラムソースを実行時に解釈して逐次実行するインタプリンタ型言語でもよい。
制御指令構成１６３は、通信用ＬＳＩ１０２のデータ記憶部１３１の構成を示す。制御指令構成１６３の具体例として、Ｃ言語の構造体定義、共用体定義が挙げられる。
【００３４】
ＯＳ１６４は、プログラム管理やハードウェアへのアクセスなどの基本機能を提供する。ＯＳ１６４は、必ずしも必要ではないが、汎用的なアプリケーションや既存のソフトウェア資産の利用、タスク管理などの基本機能を提供することから、利用されるのが望ましい。また、時間的制約にしたがってタスクスケジューリングを実行可能なリアルタイムＯＳが望ましい。
デバイスドライバ１６５は、ＯＳ１６４の提供するハードウェアへのアクセス手段を用いて、バス１１０を介して通信用ＬＳＩ１０２の公開するデータ領域や動作管理情報、状態情報にアクセスするための機能を提供する。デバイスドライバ１６５は、ＯＳ１６４の一部であっても構わない。
ライブラリ１６６は、利用頻度の多い関数をまとめたものであり、ＯＳ１６４の機能を利用してメモリ管理、タスク管理、入出力、ファイル操作などの基本機能を提供する。具体例として、Ｌｉｎｕｘ（登録商標）で利用されるｇｌｉｂｃが挙げられる。
ＡＰＩ１６７は、ライブラリ１６６を介して、デバイスドライバ１６５やＯＳ１６４の提供する機能を利用すためのソフトウェアインターフェースである。
アプリケーション１６８は、制御対象１２１を制御するための制御指令を演算し、通信用ＬＳＩ１０２を用いて通信パケットの送受信を実行するソフトウェアである。
【００３５】
図４（ａ）は、システム情報１７０の一例を示す。システム情報１７０は、１つ以上の制御指令項目１７１（表の行に対応）で構成される。各制御指令項目１７１ａ，１７１ｂ，１７１ｃは、制御指令名称１７２、コマンド１７３、スレーブ識別子１７４、アドレス１７５、入出力方向１７６、および、サイズ１７７で構成される。
制御指令名称１７２は、該当するデータ領域が制御指令として、どのような意味、名称を持つかを示す。
コマンド１７３は、該当するデータ領域に対するＥｔｈｅｒＣＡＴ（登録商標）のテレグラムのコマンドを示す。
【００３６】
【表１】
0005411725.tif 000002
【００３７】
表１は、コマンド１７３としてとりうる値のリストを示す。略語の末尾が「Ｗ」のコマンド１７３は、書き込み用コマンドを示し、略語の末尾が「Ｒ」のコマンド１７３は、読み込み用コマンドを示し、略語の末尾が「ＲＷ」のコマンド１７３は、読み込みおよび書き込み用コマンドを示す。なお、「読み込み」および「書き込み」の定義については、後記の入出力方向１７６の説明で行う。
【００３８】
図４（ａ）に戻り、システム情報１７０のスレーブ識別子１７４は、スレーブの識別子である。ただし、コマンドによってはスレーブ識別子を不要とする場合もある。例えば、制御指令項目１７１ａ、１７１ｂのように論理アドレスに対するコマンド（ＬＲＤ，ＬＷＲ、ＬＲＷ）ではスレーブ識別子は不要である。
アドレス１７５は、スレーブ識別子１７４に該当するスレーブ装置内の記憶手段における物理アドレス、または論理アドレス（論理アドレスに対するコマンドの場合）である。
入出力方向１７６は、生成されるパケットが書き込み、読み込み、あるいはその両方のいずれかを示す。なお、本実施形態では、マスタの記憶領域に存在するデータを、スレーブの記憶領域にコピーすることを「書き込み」とし、スレーブの記憶領域に存在するデータを、マスタの記憶領域にコピーすることを「読み込み」とする。
サイズ１７７は、該当するデータ領域の大きさを示す。
【００３９】
図４（ｂ）は、パケット生成情報１４１の一例を示す。パケット生成情報１４１は、コマンド１４２、アドレス１４３、スレーブ識別子１４４、物理・論理アドレス１４５、入出力方向１４６、サイズ１４７で構成される。以下に示すように、パケット生成情報１４１のアドレス１４３以外の各データは、システム情報１７０からコピーされる。
【００４０】
コマンド１４２は、コマンド１７３からコピーされるデータであり、ＥｔｈｅｒＣＡＴ（登録商標）のテレグラムにおけるコマンドを示す。
アドレス１４３は、データ割り当て処理の結果を示すデータであり、パケット生成情報１４１から生成されるパケットのデータ領域が存在するデータ記憶部１３１中の場所を示す。
スレーブ識別子１４４は、スレーブ識別子１７４からコピーされるデータであり、スレーブの識別子である。ただし、コマンドによってはスレーブ識別子を不要とする場合もある。例えば、論理アドレスに対するコマンド（ＬＲＤ，ＬＷＲ、ＬＲＷ）ではスレーブ識別子は不要である。
物理・論理アドレス１４５は、アドレス１７５からコピーされるデータであり、該当するスレーブにおける物理アドレス、または論理アドレス（論理アドレスに対するコマンドの場合）である。
入出力方向１４６は、入出力方向１７６からコピーされるデータであり、生成されるパケットが書込み、読込み、あるいは、その両方のいずれかを示す。なお、入出力方向１４６は、コマンド１４２からは一意に定まらないため、本項目が存在する。例えば、ＬＲＤ、ＬＷＲ、ＬＲＷコマンドの入出力方向は、それぞれ読込み、書込み、両方と対応するが、ＡＲＭＷ、ＦＲＭＷコマンドの入出力方向は書込みとする。
サイズ１４７は、サイズ１７７からコピーされるデータであり、生成されるパケットのデータ領域の大きさを示す。
【００４１】
図５〜図８は、それぞれ、パケット生成情報登録部１６１が、データ記憶部１３１にデータ構造を割り当てる手順を示すフローチャートである。
図５は、スレーブ識別子１７４ごとにデータ構造を割り当てるときに、入出力方向１７６が「書込み」のみの書込み用記憶部１５０上のデータ領域と「読込み」のみの読込み用記憶部１５１上のデータ領域とを、同じ開始アドレスから割り当てる処理を示すフローチャートである。
図６は、スレーブ識別子１７４ごとにデータ構造を割り当てるときに、入出力方向１７６が「書込み」のみの書込み用記憶部１５０上のデータ領域と「読込み」のみの読込み用記憶部１５１上のデータ領域とを、別の開始アドレスから割り当てる処理を示すフローチャートである。
図７は、入出力方向１７６ごとにデータ構造を割り当てるときに、入出力方向１７６が「書込み」のみの書込み用記憶部１５０上のデータ領域と「読込み」のみの読込み用記憶部１５１上のデータ領域とを、同じ開始アドレスから割り当てる処理を示すフローチャートである。
図８は、入出力方向１７６ごとにデータ構造を割り当てるときに、入出力方向１７６が「書込み」のみの書込み用記憶部１５０上のデータ領域と「読込み」のみの読込み用記憶部１５１上のデータ領域とを、別の開始アドレスから割り当てる処理を示すフローチャートである。
【００４２】
図５のフローチャートを説明する。なお、図５のフローチャートの動作の主体は、パケット生成情報登録部１６１である。
Ｓ００１において、システム情報１７０から、データ記憶部１３１へまだデータ構造を割り当てていないスレーブ識別子１７４を含む制御指令項目１７１があるか否かを判定する。未割当の制御指令項目１７１がない（Ｓ００１，Ｎｏ）ときには、図５の処理を終了する。
Ｓ００２において、未割当の制御指令項目１７１があるときには（Ｓ００１，Ｙｅｓ）、該当する未割当のスレーブ識別子を選択する。以下、Ｓ００２で選択したスレーブ識別子１７４のスレーブを、選択したスレーブと呼ぶ。
【００４３】
Ｓ００３において、システム情報１７０から、スレーブ識別子１７４が、Ｓ００２で選択した選択したスレーブである制御指令項目１７１を全て選択する（Ｓ００３）。
なお、ここでは、全ての制御指令項目１７１を選択しているが、開発者が任意に選択してもよい。その場合、システム情報１７０の各制御指令項目１７１には、その制御指令項目１７１からデータ構造の割り当て、パケット生成情報の生成を有効とするか無効とするかを示す属性が追加される。Ｓ００３における制御指令項目１７１の選択において、この属性が有効であるか否かを選択基準に追加することが例示される。
【００４４】
Ｓ００４において、Ｓ００３で選択した制御指令項目１７１から、入出力方向１７６が書込み、かつ、読込みである制御指令項目１７１を全て選択する。
Ｓ００５において、書込み用記憶部１５０、読込み用記憶部１５１のそれぞれの記憶部の先頭から、各制御指令項目１７１のデータ領域を、そのデータ領域のサイズに応じて順次割り当てる。
【００４５】
Ｓ００６において、Ｓ００３で選択した制御指令項目１７１から、入出力方向が書込みのみの制御指令項目１７１を全て選択する。
Ｓ００７において、Ｓ００５で割り当てた書込み用記憶部１５０の領域以降に、Ｓ００６で選択した各制御指令項目１７１のデータ領域を、そのデータ領域のサイズに応じて順次割り当てる。
【００４６】
Ｓ００８において、Ｓ００３で選択した制御指令項目１７１から、入出力方向が読込みのみの制御指令項目１７１を全て選択する。
Ｓ００９において、Ｓ００５で割り当てた読込み用記憶部１５１の領域以降に、Ｓ００８で選択した各制御指令項目１７１のデータ領域を、そのデータ領域のサイズに応じて順次割り当てる。
なお、Ｓ００６〜Ｓ００７とＳ００８〜Ｓ００９とは、どちらを先に行ってもよいし、同時に行ってもよい。
【００４７】
図６のフローチャートにおける、図５のフローチャートとの違いは、Ｓ００９とＳ０１０の違いである。Ｓ０１０において、Ｓ００５で割り当てた読込み用記憶部１５１の領域に、Ｓ００７で割り当てた書込み用記憶部１５０の領域の大きさを加えた領域以降に、Ｓ００８で選択した各制御指令項目１７１のデータ領域を、そのデータ領域のサイズに応じて順次割り当てる。これにより、入出力方向１７６が「書込み」のみの書込み用記憶部１５０上のデータ領域と「読込み」のみの読込み用記憶部１５１上のデータ領域とを、別の開始アドレスから割り当てることができる。
【００４８】
図７のフローチャートを説明する。
Ｓ０１１において、システム情報１７０から入出力方向が書込み、かつ、読込みである制御指令項目１７１を全て選択する。
Ｓ０１２において、書込み用記憶部１５０、読込み用記憶部１５１のそれぞれの記憶部の先頭から、各制御指令項目１７１のデータ領域を、そのデータ領域のサイズに応じて順次割り当てる。
【００４９】
Ｓ０１３において、システム情報１７０から入出力方向が書込みのみの制御指令項目１７１を全て選択する。
Ｓ０１４において、書込み用記憶部１５０は、Ｓ０１２で割り当てた書込み用記憶部１５０の領域以降に、Ｓ０１３で選択した各制御指令項目１７１のデータ領域を、そのデータ領域のサイズに応じて順次割り当てる。
【００５０】
Ｓ０１５において、システム情報１７０から入出力方向が読込みのみの制御指令項目１７１を全て選択する。
Ｓ０１６において、読込み用記憶部１５１は、Ｓ０１２で割り当てた読込み用記憶部１５１の領域以降に、Ｓ０１５で選択した各制御指令項目１７１のデータ領域を、そのデータ領域のサイズに応じて順次割り当てる。
なお、Ｓ０１３〜Ｓ０１４とＳ０１５〜Ｓ０１６とは、どちらを先に行ってもよいし、同時に行ってもよい。
【００５１】
図８のフローチャートは、図７のフローチャートとの違いは、Ｓ０１６とＳ０１７との違いである。Ｓ０１７において、Ｓ０１２で割り当てた読込み用記憶部１５１の領域に、Ｓ０１４で割り当てた書込み用記憶部１５０の領域の大きさを加えた領域以降に、Ｓ０１５で選択した各制御指令項目１７１のデータ領域を、そのデータ領域のサイズに応じて順次割り当てる。これにより、入出力方向１７６が「書込み」のみの書込み用記憶部１５０上のデータ領域と「読込み」のみの読込み用記憶部１５１上のデータ領域とを、別の開始アドレスから割り当てることができる。
【００５２】
図９（ａ）は、図５に示す手順で割り当てたデータ記憶部１３１である。図９（ｂ）は、図６に示す手順で割り当てたデータ記憶部１３１である。図９（ｂ）では、読込み用記憶部１５１内に「Ｓ００７で割り当てた領域の大きさ」分が空いているので、「Ｓ００５で割り当てた領域」の開始アドレスと「Ｓ００９で割り当てた領域」の開始アドレスとが、書込み用記憶部１５０と読込み用記憶部１５１とで、別々のアドレスになっている。
図１０（ａ）は、図７に示す手順で割り当てたデータ記憶部１３１である。図１０（ｂ）は、図８に示す手順で割り当てたデータ記憶部１３１である。図１０（ｂ）では、読込み用記憶部１５１内に「Ｓ０１４で割り当てた領域の大きさ」分が空いているので、「Ｓ０１２で割り当てた領域」の開始アドレスと「Ｓ０１６で割り当てた領域」の開始アドレスとが、書込み用記憶部１５０と読込み用記憶部１５１とで、別々のアドレスになっている。
【００５３】
以上説明した図５〜図８の手順により、パケット生成情報登録部１６１は、システム情報１７０の各レコードに対して、データ記憶部１３１内にデータ領域を割り当てる。
そして、パケット生成情報登録部１６１は、システム情報１７０からパケット生成情報１４１を生成する。図４（ｂ）で説明したように、パケット生成情報登録部１６１は、パケット生成情報１４１のアドレス１４３以外のデータを、システム情報１７０の対応するデータからコピーするとともに、図９，図１０で示した割当結果のアドレスを、パケット生成情報１４１のアドレス１４３に書き出す。
さらに、パケット生成情報登録部１６１は、生成したパケット生成情報１４１について、ＡＰＩ１６７を介して、パケット生成情報記憶部１３２に登録する。
【００５４】
図１１は、制御指令構成部１６０が、データ記憶部１３１にデータ構造を割り当てるとともに、制御指令構成１６３を生成する手順を示すフローチャートである。
図１１は、図５と同様に、スレーブ識別子１７４ごとにデータ構造を割り当てるときに、入出力方向１７６が「書込み」のみの書込み用記憶部１５０上のデータ領域と「読込み」のみの読込み用記憶部１５１上のデータ領域とを、同じ開始アドレスから割り当てる処理を示すフローチャートである。
まず、データ記憶部１３１にデータ構造を割り当てるときに、図１１におけるＳ０２１〜Ｓ０２９の各手順は、図５におけるＳ００１〜Ｓ００９の各手順に対応する。なお、データ構造の割当結果の書き出し先が「パケット生成情報１４１のアドレス１４３」から「構築した制御指令構成１６３」へと置き換わっている。
【００５５】
なお、制御指令構成１６３は、例えば、制御指令名称１７２を変数名、サイズ１７７を変数の型とするＣ言語の構造体、共用体定義、オブジェクト指向型言語のクラス定義が挙げられる。
制御指令構成１６３としては、例えば、図４（ａ）のシステム情報１７０からは、以下のＣ言語の構造体が生成される。
struct Cnn_command{
int position;
int speed;
int torque;
}
ここで、変数名（positionなど）は、制御指令名称１７２を小文字に変換したものであり、データ型（４バイト整数型を示すint）は、サイズ１７７から決定されたものである。そして、この構造体にアクセスするためのＡＰＩ１６７は、例えば、以下の通りである。
void set_position(struct Cnn_command *com,int value);
void get_position(struct Cnn_command *com);
１行目は、position変数に指定された値を代入するＡＰＩであり、２行目は、position変数から値を取得するＡＰＩである。
【００５６】
なお、Ｃ言語の制約上、制御指令構成１６３の制御指令名称１７２を英語表記にする、空白、タブ文字などをアンダーバー（“＿”）に置換することが例示される。また、サイズ１７７がＣ言語で定義される変数の型より大きい場合や変数の型の大きさと一致しない場合は、配列による定義をすることが例示される。
【００５７】
さらに、制御指令構成１６３を構築する場合において、ＣＰＵ１０１上で動作するソフトウェア環境、アプリケーション１６８を生成するコンパイラなどの制約により、制御指令構成１６３を特定のサイズに揃える必要がある場合がある。例えば、サイズ１７７がバイト単位でない場合は、０の値を数ビット挿入することによって、バイト単位に揃えてデータ領域を割り当てる。あるいは、ＣＰＵ１０１が３２ビットの場合、コンパイラによっては、４バイト単位に構造体の構成要素（制御指令）が整列されることがある。その場合は、ライブラリ１６６、ＡＰＩ１６７によって、制御指令構成１６３の割当とデータ記憶部１３１中の割り当ての差異を吸収するか、データ記憶部１３１への割り当てにおいて、データ領域の整合性がとれるようにデータ構造を割り当てる。
【００５８】
Ｓ０３０において、Ｓ０２２で選択したスレーブに対応する制御指令構成１６３として、Ｓ０２５、Ｓ０２７、Ｓ０２９で構築した制御指令構成１６３をまとめた制御指令構成１６３を構築する。このとき、図５の手順でパケット生成情報登録部１６１がデータ記憶部１３１へ割り当てたデータ構造と一致するように制御指令構成１６３を構築する。
【００５９】
また、Ｓ０２７、Ｓ０２９で構築した制御指令構成１６３に相当するデータ記憶部１３１におけるデータ構造の割り当てでは、書込み用記憶部１５０における入出力方向１７６が書込みのみのデータ領域と、読込み用記憶部１５１における入出力方向１７６が読込みのみのデータ領域は、先頭アドレス位置が同じである。そのため、制御指令構成１６３を構築する場合は、同一の領域を指定できる方法が必要である。その具体例として、Ｃ言語の共用体が挙げられる。
【００６０】
Ｓ０３１において、Ｓ０２１で未割り当てのスレーブがなければ（Ｓ０２１，Ｎｏ）、スレーブごとに構築した制御指令構成１６３をまとめた制御指令構成１６３を構築する。この場合も図５の手順でパケット生成情報登録部１６１がデータ記憶部１３１へ割り当てたデータ構造と一致するように制御指令構成を構築する。
【００６１】
図１２は、開発用計算機１６９が実行するアプリケーション１６８の開発手順を示す。
Ｓ０４０において、開発用計算機１６９は、開発者から定義されたシステム情報１７０の入力を受け付ける。
Ｓ０４１において、開発用計算機１６９は、開発者からの指示により、パケット生成情報登録部１６１にシステム情報１７０を解析させる指示を起動する。
Ｓ０４２において、パケット生成情報登録部１６１は、データ記憶部１３１のデータ構造を割り当てるとともに、その割当結果をパケット生成情報１４１へと書き出す（詳細は、図５〜図８のいずれかのフローチャートの処理であり、どのフローチャートの処理を実行させるかは、例えば、開発者からの選択入力による）。
【００６２】
Ｓ０４３において、開発用計算機１６９は、開発者からの指示により、制御指令構成部１６０にシステム情報１７０を解析させる指示を起動する。
Ｓ０４４において、制御指令構成部１６０は、データ記憶部１３１のデータ構造を割り当てるとともに、その割当結果から制御指令構成１６３を生成する（詳細は、図１１のフローチャートの処理など）。
【００６３】
Ｓ０４５において、開発用計算機１６９は、開発者からのプログラムソース１６２の入力を受け付ける。このプログラムソース１６２には、Ｓ０４４の制御指令構成１６３およびＡＰＩ１６７が利用されている。
Ｓ０４６において、開発用計算機１６９は、開発者からの指示により、プログラムソース１６２を形式変換（コンパイル、バイトコード変換など）して、実行形式に変換し、その変換結果（バイナリファイルなど）を制御用計算機１２０上で動作させる。
【００６４】
なお、ＡＰＩ１６７には、制御指令構成１６３とデータ記憶部１３１のデータ構造を対応させるＡＰＩが含まれる。このＡＰＩの具体例として、ＵＮＩＸ（登録商標）のシステムコールであるｍｍａｐ関数などが例示される。また、ＡＰＩ１６７には、制御指令構成１６３を読み書きするＡＰＩも含まれる。このＡＰＩにおいては、データ構造のバイト境界を揃える処理や、指令値を設定する制御指令構成と入出力方向の整合性を検証する。
【００６５】
その他に、ｍｍａｐ関数などで対応付けしたデータ記憶部１３１に直接、指令値を読み書きするのではなく、メモリ１０８中に制御指令構成１６３を構築し、制御指令構成１６３全体をまとめて、データ記憶部１３１に読み書きさせるＡＰＩ１６７が含まれる。
つまり、パケット生成情報１４１と制御指令構成１６３との主要な相違点は、パケット生成情報１４１が１変数ごと（図４（ｂ）の１レコードごと）に１つのアドレス１４３へと対応づけているのに対し、制御指令構成１６３が１つ以上の変数をグループ化した構造体ごとに１つのデータ記憶部１３１の開始アドレスへと対応づけている点である。このように構造体という大きなデータブロックを単位として処理することにより、管理するアドレスの数を減らすことができる。
また、ＡＰＩ１６７には、通信用ＬＳＩ１０２にパケットを送信させるＡＰＩ、通信用ＬＳＩ１０２からパケットを受信するＡＰＩが含まれる。
【００６６】
また、データ記憶部１３１上にデータ構造として割り当てるデータ領域は、制御指令や制御結果ではなく、フレームイメージやメールボックスコマンドなどであってもよい。この場合、アプリケーション１６８の開発においては、制御指令構成１６３を利用した開発はできない。しかしながら、制御指令の演算ではなく、アプリケーションにおいて通信プロトコルを操作することを可能とする。
【００６７】
以下、第２実施形態について説明する。第２実施形態は、第１実施形態と比較して、データ記憶部１３１のデータ構造の割り当てを論理アドレス空間として構成する。以下、第２実施形態は、第１実施形態と基本的に同じ構成および動作であり、その相違点に着目して、以下の説明を行う。
【００６８】
図１３は、第２実施形態における通信用ＬＳＩ１０２を示す構成図である。図２と比較すると、アドレス補正値管理部１８０が追加されている。アドレス補正値管理部１８０は、データ記憶部１３１がバス１１０上に公開するアドレスと、論理アドレス空間上のアドレスとの対応を、図１４（ａ）のアドレス対応情報１９０として管理する。つまり、第２実施形態では、第１実施形態の構成にアドレス補正値管理部１８０を追加することで、ＥｔｈｅｒＣＡＴ（登録商標）のネットワークの論理アドレス空間を活用し、ネットワーク構成を柔軟に構築することができる。
【００６９】
図１４（ａ）は、アドレス補正値管理部１８０が管理するアドレス対応情報１９０を示す。アドレス対応情報１９０は、アドレス１９１、バスアドレス１９２、論理アドレス１９３、および、サイズ１９４の対応情報から構成される１つ以上のレコードから構成される。
アドレス１９１は、データ記憶部１３１上におけるアドレスである。
バスアドレス１９２は、該当するアドレス対応情報１９０のアドレス１９１が対応するバスアドレスを示す。
論理アドレス１９３は、該当するアドレス対応情報に対応する論理アドレス空間上のアドレスを示す。
サイズ１９４は、該当するアドレス対応情報のサイズである。
例えば、図１４（ａ）に示すアドレス対応情報１９０では、バス１１０上のアドレス0xef000000〜0xef00FFFFを、ＥｔｈｅｒＣＡＴ（登録商標）仕様の論理アドレス空間の0x10000〜0x1FFFFに対応させ、さらにデータ記憶部１３１上のアドレス0x0〜0xFFFFに対応させることを示す。
【００７０】
図１４（ｂ）は、パケット生成情報２０１の一例を示す。パケット生成情報２０１は、論理アドレス２０２、入出力方向２０３、および、サイズ２０４で構成される。
論理アドレス２０２は、パケット生成情報２０１から生成されるパケットが対象とする論理アドレスを示す。
入出力方向２０３は、生成されるパケットが書込み、読込み、あるいはその両方のいずれかを示す。ここで、本実施例では論理アドレスに対するＥｔｈｅｒＣＡＴ（登録商標）コマンドを生成することを目的としているため、入出力方向２０３から論理アドレスに対するコマンド（ＬＲＤ，ＬＷＲ、ＬＲＷ）が一意に定まる。
サイズ２０４は、生成されるパケットのデータ領域の大きさを示す。
【００７１】
図１５は、開発用計算機１６９が実行するアプリケーション１６８の開発手順を示す。図１２との違いに着目して、以下の説明を行う。
まず、図１５のＳ０５０〜Ｓ０５２は、図１２のＳ０４０〜Ｓ０４２に対応する。
Ｓ０５０において、開発用計算機１６９が受け付けるシステム情報１７０は、論理アドレスに対するコマンド（ＬＲＤ、ＬＷＲ、ＬＲＷコマンド）のみで構成する。
Ｓ０５１は、Ｓ０４１と同じであり、Ｓ０５０で受け付けたシステム情報１７０の内容だけ異なっている。
Ｓ０５２において、パケット生成情報登録部１６１は、データ記憶部１３１のデータ構造を割り当てるとともに、その割当結果のアドレスをアドレス補正値管理部１８０を介してアドレス対応情報１９０およびパケット生成情報２０１として書き出す。
【００７２】
図１６は、第１実施形態および第２実施形態での、パケット生成部１３３によるパケット送信時処理を示すフローチャートである。
【００７３】
Ｓ０６０において、パケット生成部１３３が動作を開始する。なお、Ｓ０６０の開始するタイミングは、動作管理部１３８によって制御される。例えば、ＣＰＵ１０１上で動作するアプリケーション１６８がバス接続部１３０を介して動作管理部１３８に指令したタイミングや、あるいは、あらかじめ設定した周期で動作管理部１３８がパケット生成部１３３の動作を開始させることが例示される。
【００７４】
Ｓ０６１において、未処理のパケット生成情報１４１がパケット生成情報記憶部１３２にあるか否かを判定する。Ｓ０６１でＹｅｓならＳ０６２へ進み、Ｓ０６１でＮｏならＳ０６８へ進む。
Ｓ０６２において、パケット生成情報記憶部１３２からパケット生成情報１４１を１つ抽出する。
Ｓ０６３において、パケット生成情報１４１の入出力方向１４６に書込みが含まれているか否かを判定する。Ｓ０６３でＹｅｓならＳ０６４へ進み、Ｓ０６３でＮｏならＳ０６５へ進む。
【００７５】
Ｓ０６４において、データ記憶部１３１の書込み用記憶部１５０上の、抽出したパケット生成情報１４１に記載されているアドレス１４３から、パケット生成情報１４１に記載されているサイズ１４７だけデータを抽出する。
なお、第２実施形態のＳ０６４では、書込み用記憶部１５０から抽出するデータのアドレスは、論理アドレス２０２とアドレス対応情報１９０とから決定される。つまり、アドレス対応情報１９０中から、論理アドレス２０２を含むものを探し、そのアドレス対応情報１９０のアドレス１９１が、書込み用記憶部１５０から抽出するデータのアドレスである。
【００７６】
Ｓ０６５において、パケット生成情報１４１の入出力方向１４６に読込みが含まれているか否かを判定する。Ｓ０６５でＹｅｓならＳ０６６へ進み、Ｓ０６５でＮｏならＳ０６９へ進む。なお、入出力方向１４６に書込み、読込みの両方を含む場合は、書込み用記憶部１５０からデータを生成するため、Ｓ０６４後に、Ｓ０６５を実行する必要はない。
Ｓ０６６において、パケット生成情報１４１に記載されているサイズ１４７分の大きさの空データを生成する。
【００７７】
Ｓ０６７において、Ｓ０６４で抽出したデータ、または、Ｓ０６６で生成したデータから、パケット生成情報１４１をもとにして、パケット（図１７のテレグラム２１５）を生成する。
なお、テレグラム２１５において、個々のパケットに依存しないヘッダ情報（図１７のテレグラムヘッダ２１６）などは、動作管理部１３８から抽出する。
【００７８】
Ｓ０６８において、未処理のパケット生成情報１４１がなくなった（Ｓ０６１，Ｎｏ）ので、Ｓ０６７で生成した１つ以上のパケット（図１７のテレグラム２１５）をまとめて１つのパケット（図１７のイーサネットフレーム２１０）を構成し、送信部１３６へ伝送する。なお、図１７のイーサネットフレーム２１０内のイーサネットヘッダ２１１およびＦＣＳ２１３は、送信部１３６で付加してもよい。
【００７９】
Ｓ０６９において、パケット生成情報１４１の入出力方向１４６に読込みが含まれていない場合は、異常であるため、その旨を通知する。異常通知の方法は、パケット生成部１３３から動作管理部１３８に通知し、ＣＰＵ１０１上で動作するアプリケーションから取得可能としてもよいし、動作管理部１３８がＣＰＵ１０１に割込み通知することが例示される。
【００８０】
図１７は、図１６の処理で生成されるＥｔｈｅｒＣＡＴ（登録商標）フレームであるイーサネットフレーム２１０の構造を示す。１つのイーサネットフレーム２１０は、１つのイーサネットヘッダ２１１と、１つのデータ領域２１２と、１つのＦＣＳ（Frame Check Sequence）２１３とから構成される。ＥｔｈｅｒＣＡＴ（登録商標）における、イーサネットヘッダ２１１のＴｙｐｅフィールドは0x88A4である。ＦＣＳ２１３は、データ領域２１２のデータが正しいか否か（通信エラーなどによりデータが破損していないか、など）の検査に用いられる。イーサネットフレーム２１０の生成処理は、図１６のＳ０６８に該当する。
１つのデータ領域２１２は、１つのＥｔｈｅｒＣＡＴヘッダ２１４と、１つ以上のテレグラム２１５とから構成される。
【００８１】
１つのテレグラム２１５は、１つのテレグラムヘッダ２１６と、１つのテレグラムデータ２１７と、１つのワーキングカウンタ（ＷＫＣ：Working Counter）２１８とから構成される。１つのテレグラムデータ２１７は、１つ以上のスレーブで読み書きされるデータを格納する。つまり、１つのイーサネットフレーム２１０内には、複数のスレーブで読み書きされるデータが相乗りされている。ワーキングカウンタ２１８は、そのテレグラムを処理すべきスレーブで正しく処理されるたびに、スレーブによって所定の数だけカウントアップされるフィールドである。テレグラム２１５の生成処理は、図１６のＳ０６７に該当する。
【００８２】
なお、図１６に示すパケット生成部１３３の動作では、パケット生成情報１４１は固定としたが、ＣＰＵ１０１上で動作するアプリケーションによって動的に変更してもよいし、複数のパケット生成情報１４１の中から、処理するパケット生成情報１４１を選択するようにしてもよい。後者の場合、パケット生成情報１４１には、そのパケット生成情報１４１が有効か、無効かを示す項目が追加される。
【００８３】
また、パケット生成部１３３は、以下に例示する場合、図１６のＳ０６１で未処理のパケット生成情報１４１があるにもかかわらず、処理をＳ０６８に進めてもよい。
・Ｓ０６７で生成されたテレグラムデータ２１７のサイズの合計値が、イーサネットフレーム２１０の最大長を越える場合。
・所定周期でパケット生成部１３３が動作するときに、その周期内で処理可能なパケットサイズを越える場合。
また、これらの状況をＳ０６９と同様の方法で通知することが例示される。
【００８４】
図１８は、第１実施形態および第２実施形態での、パケットフィルタ部１３４によるパケット受信時処理を示すフローチャートである。
【００８５】
Ｓ０７０において、パケットフィルタ部１３４が動作を開始する。なお、Ｓ０７０が起動する契機は、受信部１３７がパケットを受信して、パケットフィルタ部１３４へ伝送したタイミングである。なお、受信部１３７は、１つのイーサネットフレーム２１０から、１つ以上のテレグラム２１５を抽出し、そのテレグラム２１５ごとに、パケットフィルタ部１３４へ伝達する。
【００８６】
Ｓ０７１において、受信したパケット（テレグラム２１５）に該当するパケット生成情報１４１がパケット生成情報記憶部１３２にあるか否かを判定する。Ｓ０７１でＹｅｓならＳ０７２へ進み、Ｓ０７１でＮｏなら図１８の処理を終了する。
Ｓ０７２において、パケット生成情報記憶部１３２から受信したパケットに該当するパケット生成情報１４１を抽出する。
Ｓ０７３において、パケット生成情報１４１の入出力方向１４６に読込みが含まれているか否かを判定する。Ｓ０７３でＹｅｓならＳ０７４へ進み、Ｓ０７３でＮｏならＳ０７１へ戻る。
【００８７】
Ｓ０７４において、受信したパケットからデータを抽出し、読込み用記憶部１５１へ記録する。この記録先のデータ領域は、Ｓ０７２で抽出したパケット生成情報１４１に記載されているアドレス１４３を起点として、パケット生成情報１４１に記載されているサイズ１４７分の領域である。
なお、第２実施形態のＳ０７４では、記録先のデータ領域の起点のアドレスを、論理アドレス２０２とアドレス対応情報１９０とから決定する。つまり、アドレス対応情報１９０の論理アドレス１９３の中から、論理アドレス２０２を含むものを探し、そのアドレス対応情報１９０のアドレス１９１が、読込み用記憶部１５１へ記録するデータのアドレスである。
【００８８】
以上説明した本発明の第１，第２実施形態によれば、開発効率および通信性能を向上させた情報処理装置を提供することができる。
まず、開発効率の向上について、開発者は、アプリケーション１６８を開発するために、制御指令構成１６３とＡＰＩ１６７を活用してプログラムソース１６２を開発することができる。これにより、開発者はネットワークプロトコルの詳細や、各制御指令のアドレス位置を意識することなく、効率的にアプリケーション開発をすることができる。
次に、通信性能の向上について、通信用ＬＳＩ１０２とＣＰＵ１０１上で動作するアプリケーション１６８を並列実行でき、さらにプロトコルスタックを利用せずに、ｍｍａｐ関数などのＡＰＩにより、制御指令を通信用ＬＳＩ１０２に伝送するため、ソフトウェア上での通信処理時間を短縮できる。
【符号の説明】
【００８９】
１０１  ＣＰＵ
１０２  通信用ＬＳＩ
１０３  ＰＨＹ
１０８  メモリ
１０９  不揮発性記憶媒体
１１０  バス
１２０  制御用計算機
１２１  制御対象
１２２  制御用ネットワーク
１３０  バス接続部
１３１  データ記憶部
１３２  パケット生成情報記憶部
１３３  パケット生成部
１３４  パケットフィルタ部
１３５  通信部
１３６  送信部
１３７  受信部
１３８  動作管理部
１４１，２０１  パケット生成情報
１４２，１７３  コマンド
１４３，１７５，１９１  アドレス
１４４，１７４  スレーブ識別子
１４５  物理・論理アドレス
１４６，１７６，２０３  入出力方向
１４７，１７７，１９４，２０４  サイズ
１５０  書込み用記憶部
１５１  読込み用記憶部
１６０  制御指令構成部
１６１  パケット生成情報登録部
１６２  プログラムソース
１６３  制御指令構成
１６４  ＯＳ
１６５  デバイスドライバ
１６６  ライブラリ
１６７  ＡＰＩ
１６８  アプリケーション
１６９  開発用計算機
１７０  システム情報
１７１  制御指令項目
１７２  制御指令名称
１８０  アドレス補正値管理部
１９０  アドレス対応情報
１９２  バスアドレス
１９３，２０２  論理アドレス
２１０  イーサネットフレーム
２１１  イーサネットヘッダ（Ｅｔｈｅｒｎｅｔ（登録商標）ヘッダ）
２１２  データ領域
２１３  ＦＣＳ
２１４  ＥｔｈｅｒＣＡＴヘッダ
２１５  テレグラム
２１６  テレグラムヘッダ
２１７  テレグラムデータ
２１８  ワーキングカウンタ
【図１】
0005411725.tif 000003
【図２】
0005411725.tif 000004
【図３】
0005411725.tif 000005
【図４】
0005411725.tif 000006
【図５】
0005411725.tif 000007
【図６】
0005411725.tif 000008
【図７】
0005411725.tif 000009
【図８】
0005411725.tif 000010
【図９】
0005411725.tif 000011
【図１０】
0005411725.tif 000012
【図１１】
0005411725.tif 000013
【図１２】
0005411725.tif 000014
【図１３】
0005411725.tif 000015
【図１４】
0005411725.tif 000016
【図１５】
0005411725.tif 000017
【図１６】
0005411725.tif 000018
【図１７】
0005411725.tif 000019
【図１８】
0005411725.tif 000020