(57)【特許請求の範囲】
【請求項１】
複数の装置を有するネットワーク制御システムに接続されたコンピュータで実行された場合、前記コンピュータに対して：
−制御ロジックを複数の機能的制御ロジックプログラムに分割するステップと；
−前記複数の機能的制御ロジックプログラムを複数の実行可能コードに変換するステップと；
−配置ルールに従って前記複数の実行可能コードを前記複数の装置のうち指定の装置に割り当てるステップと；
を実行させ、
前記割り当てるステップは、前記割り当てられた実行可能コードを実行するために十分なリソースを有する指定の装置において前記実行可能コードを割り当てるように実行されるコンパイラプログラム。
【請求項２】
前記分割するステップは、前記配置ルールに依存した分割ルールに従って前記制御ロジックを分割するように実行される、請求項１に記載のコンパイラプログラム。
【請求項３】
前記割り当てるステップは、前記複数の実行可能コードのうち少なくとも１つを、前記少なくとも１つの実行可能コードに関与する状態変数のマスタインスタンスをホストする指定の装置に割り当てるように実行される、請求項１又は２に記載のコンパイラプログラム。
【請求項４】
802.15.4/ZigBeeに基づくネットワーク制御システムに接続されたコンピュータで実行されるコンパイラプログラムであり、
前記複数の装置は、少なくとも１つの子装置と、前記子装置が関連する少なくとも１つの親装置とを有し、
前記割り当てるステップは、前記複数の実行可能コードのうち少なくとも１つが実行されるときに前記子装置が関与する場合に、前記複数の実行可能コードのうち少なくとも１つを前記親装置に割り当てるように実行される、請求項１ないし３のうちいずれか１項に記載のコンパイラプログラム。
【請求項５】
少なくとも１つのルータを有するネットワーク制御システムに接続されたコンピュータで実行されるコンパイラプログラムであり、
前記割り当てるステップは、前記複数の実行可能コードのうち少なくとも１つが実行されるときに前記ルータが関与する少なくとも１つの装置に接続されている場合に、前記複数の実行可能コードのうち少なくとも１つを前記ルータに割り当てるように実行される、請求項１ないし４のうちいずれか１項に記載のコンパイラ。
【請求項６】
複数の装置を有するネットワーク制御システムに接続されたコンピュータで実行された場合、前記コンピュータに対して：
−制御ロジックを実行可能コードプログラムに変換するステップと；
−前記実行可能コードプログラムを複数の実行可能コードに分割するステップと；
−配置ルールに従って前記複数の実行可能コードを前記複数の装置のうち指定の装置に割り当てるステップと；
を実行させ、
前記割り当てるステップは、前記割り当てられた実行可能コードを実行するために十分なリソースを有する指定の装置において前記実行可能コードを割り当てるように実行されるコンパイラプログラム。
【請求項７】
−複数の装置と；
−請求項１ないし６のうちいずれか１項に記載のコンパイラプログラムが実行されるコンピュータと；
を有するネットワーク制御システム。
【請求項８】
複数の装置を有するネットワーク制御システムのコンパイル方法であって：
−ユーザ指定の制御ロジックを複数の機能的制御ロジックプログラムに分割し；
−前記複数の機能的制御ロジックプログラムを複数の実行可能コードに変換し；
−配置ルールに従って前記複数の実行可能コードを前記複数の装置のうち指定の装置に割り当てる；
ことを有し、
前記割り当てるステップは、前記割り当てられた実行可能コードを実行するために十分なリソースを有する指定の装置において前記実行可能コードを割り当てるように実行されるコンパイル方法。
【請求項９】
前記分割するステップ、前記変換するステップ及び前記割り当てるステップは、反復して実行され、
前記反復して実行されるステップは、前記ユーザ指定の制御ロジックのコンパイル処理中、前記実行可能コードのインストール処理中及び／又は前記実行可能コードの実行中に特に実行される、請求項８に記載の方法。
【請求項１０】
複数の装置を有するネットワーク制御システムのコンパイル方法であって：
−制御ロジックを実行可能コードプログラムに変換し；
−前記実行可能コードプログラムを複数の実行可能コードに分割し；
−配置ルールに従って前記複数の実行可能コードを前記複数の装置のうち指定の装置に割り当てる；
ことを有し、
前記割り当てるステップは、前記割り当てられた実行可能コードを実行するために十分なリソースを有する指定の装置において前記実行可能コードを割り当てるように実行されるコンパイル方法。
【請求項１１】
請求項１に記載のコンピュータプログラムを格納した記録担体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワーク制御システムの複数の装置の制御ロジックをコンパイルする方法及びコンパイラに関し、特に装置への制御ロジックの自動割り当てに関する。
【背景技術】
【０００２】
装置のネットワーク化は、商業、業界及び制度上のビジネス市場で広く普及している傾向であり、また、消費者市場でも広く普及している傾向である。ネットワーク制御システムの例は、（例えば、照明、暖房及び換気、又は保全のための）ビル自動化システムである。ネットワーク制御システムは、照明バラスト（light  ballast）、スイッチ、昼光（daylight）若しくは居住（occupancy）センサ、遠隔コントローラ、アクチュエータ、バルブ、サーモスタット又はメータのような装置で構成され得る。これらの装置は、無線で（すなわち、無線周波数（RF：radio  frequency）技術を介して）接続されることが好ましい。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
制御ネットワークは、複数の装置を有し得る。これらの装置は、省スペースを有し、近づきにくい場所（例えば、天井に隠された照明バラスト）に設置され、リソースに制約があることがあり、また、これらの装置を動作させるために潜在的に非常に複雑なアプリケーションロジックが存在し得る。これらの条件は、ネットワーク管理を制御する新しい手法を必要とする。
【０００４】
複数の装置を有するネットワーク制御システムの改善したコンパイラ及びコンパイル方法を提供することが、本発明の目的である。
【課題を解決するための手段】
【０００５】
この目的は、独立請求項により解決される。更なる実施例は従属請求項に示されている。
【０００６】
本発明は、ネットワーク制御システムの装置への実行可能ランタイムコードの自動割り当て手順をコンパイル（compilation）に提供する。装置への制御ロジックの割り当て処理は、様々な分配側面（例えば、利用可能帯域又はネットワークリンクの信頼性のようなネットワークリソース又は機能、例えば、CPU、メモリ、電源又は例えば送信遅延若しくはデータパケット損失のため装置の観測動作に影響を及ぼし得るスリープ動作のような装置リソース又は機能）を含む様々な最適化基準を考慮してもよい。
【０００７】
以下では、ここで使用されるいくつかの重要な用語について説明する。
【０００８】
“ネットワーク制御システム（networked  control  system）”という用語は、特に複数の接続された装置又はノードを有するシステムを意味する。装置は、通信システム（例えば、無線通信システム）により接続されてもよい。ネットワーク制御システムは、住居及び昼光センサと所定のルール（例えば、平日及び週末用、勤務時間及び勤務外時間用）とを備えた複雑な照明制御システムでもよい。ネットワーク制御システムはまた、ビル自動化システム、ホーム制御システム、雰囲気照明システム、又は他の制御及び自動化環境（産業用、小売用、制度上及び住居用を含む）でもよい。
【０００９】
“装置（device）”という用語は、ここでは、ネットワーク制御システムのいずれかの装置又はノードを意味し得る。装置は、照明バラスト、スイッチ、（昼）光又は住居センサ、遠隔コントローラ、アクチュエータ、サーモスタット、バルブ、メータ及び／又は他の装置（（ネットワーク）ルータ、ブリッジ、ゲートウェイ、アグリゲータ（aggregator）及びコンソール等）を有してもよい。装置は、ネットワーク制御システムに対する制御パラメータ又は機能を提供してもよい。典型的には、装置は、対応する装置のハードウェア又はソフトウェア状態の属性を表し、装置状態及びローカルの装置機能を規定し得る装置ロジックを有する。装置ロジックは、装置のハードウェア及びソフトウェア状態の属性を表す装置“状態変数”により表されてもよい。状態変数が実行可能コードにより読み取られる又は変更される場合に、状態変数は、実行可能コードに“関与する（involved）”と呼ばれ得る。実行可能コードにより読み取られる状態変数は、出力状態変数である。マスタ装置は、ランタイム中にマスタ装置が状態変数のインスタンスを保持し、このインスタンスの値が状態変数の“マスタ”値として扱われることを意味する状態変数を割り当てられてもよい。装置は、実行可能コードに“関与する”少なくとも１つの状態変数のマスタである場合に、実行可能コードに“関与する”と呼ばれ得る。
【００１０】
“制御ロジック（control  logic）”という用語は、１つ又は複数の装置のランタイム動作を記述する装置個別のプログラムを規定し得る。制御ロジックは、基本的には、プログラミング言語で形成された状態変数の動作を構成してもよい。
【００１１】
“実行可能コード（executable  code）”又は実行手段は、対応する制御ロジックの変換である装置特有のソフトウェアプログラムを規定し得る。ランタイム環境は、実行可能コードを実行するように構成されてもよい。実行可能コードの実行は、ネットワーク制御システムの少なくとも１つの装置のランタイム動作の制御を可能にしてもよい。
【００１２】
本発明の実施例によれば、複数の装置を有するネットワーク制御システムのコンパイラが提供され、
−制御ロジックを複数の機能的制御ロジックプログラムに分割する手段と、
−複数の機能的制御ロジックプログラムを複数の実行可能コードに変換する手段と、
−配置ルールに従って複数の実行可能コードを複数の装置のうち指定の装置に割り当てる手段とを有する。
【００１３】
分割する手段は、配置ルールに依存した分割ルールに従って制御ロジックを分割するように構成されてもよい。このことにより、実行可能コード及び対応する制御ロジックプログラムの最適な割り当てが可能になる。
【００１４】
指定の装置は、複数の実行可能コードのうち１つに関与する装置でもよい。このことにより、機能を必要とする装置に近い実行可能コードにより提供される必要な機能が配置されることが可能になる。
【００１５】
割り当てる手段は、複数の実行可能コードのうち少なくとも１つを、少なくとも１つの実行可能コードに関与する状態変数のマスタインスタンスをホストする指定の装置に割り当てるように構成されてもよい。特に、状態変数は、実行可能コードの出力状態変数でもよい。
【００１６】
割り当てる手段は、割り当てられた実行可能コードを実行するために十分なリソースを有する指定の装置で実行可能コードを割り当てるように構成されてもよい。このことにより、実行可能コードがリソースに制約のある装置で割り当てられることを回避することが可能になる。
【００１７】
更に、割り当てる手段は、制約のあるリソースを有する装置から十分なリソースを有する装置を区別する手段を有してもよく、割り当てる手段は、十分なリソースを有する装置が利用可能でない場合にのみ、制約のあるリソースを有する装置に実行可能コードを割り当てるように構成されてもよい。
【００１８】
更に、割り当てる手段は、制約のあるリソースを有する装置から十分なリソースを有する装置を区別する手段を有してもよく、割り当てる手段は、（例えば、物理リソースの制限又は他の実行可能コードによるリソースの消耗のため）関与する制約のあるリソースの装置で十分なリソースが利用可能でない場合にのみ、関与しない装置に実行可能コードを割り当てるように構成されてもよい。802.15.4/ZigBee又はZigBeeエンド装置と同様のリソースに制約のある装置及び／又は親子関係を備えた同様の技術に基づくネットワーク制御システムの実施例では、十分なリソースを有する装置は、リソースに制約のある子装置の親装置でもよい。他の実施例によれば、十分なリソースを有する装置は、関与する装置の間の通信ルート上にあるルータでもよい。
【００１９】
実施例によれば、割り当てる手段は、制約のあるリソースを有する装置での通信コストが最小化されるように、複数の実行可能コードを指定の装置に割り当てるように構成されてもよい。このことにより、リソースに制約のある装置の限られたリソースを節約することが可能になる。
【００２０】
更に、割り当てる手段は、複数の装置の全てでの通信コストが最小化されるように、複数の実行可能コードを指定の装置に割り当てるように構成されてもよい。このことにより、ネットワーク制御システムのエネルギー消費を低減することが可能になる。
【００２１】
割り当てる手段は、１つの配置ルールを使用して指定の装置に十分なリソースが存在しない場合に、他の配置ルールが少なくとも１つの実行可能コードに使用されるように、複数の配置ルールに従って複数の実行可能コードを指定の装置に割り当てるように更に構成されてもよい。
【００２２】
コンパイラは、802.15.4/ZigBee又は親子関係を備えた同様の技術に基づくネットワーク制御システムに適合されてもよく、複数の装置は、少なくとも１つの子装置と、子装置が関連する少なくとも１つの親装置とを有し、割り当てる手段は、複数の実行可能コードのうち少なくとも１つが実行されるときに子装置が関与する場合に、複数の実行可能コードのうち少なくとも１つを親装置に割り当てるように構成される。
【００２３】
ネットワーク制御システムは、少なくとも１つのルータを有してもよく、割り当てる手段は、複数の実行可能コードのうち少なくとも１つが実行されるときにルータが関与する少なくとも１つの装置に接続されている場合に、複数の実行可能コードのうち少なくとも１つをルータに割り当てるように構成されてもよい。
【００２４】
本発明の更なる実施例によれば、複数の装置を有するネットワーク制御システムのコンパイラが提供され、
−制御ロジックを実行可能コードプログラムに変換する手段と、
−実行可能コードプログラムを複数の実行可能コードに分割する手段と、
−配置ルールに従って複数の実行可能コードを複数の装置のうち指定の装置に割り当てる手段とを有する。
【００２５】
本発明の更なる実施例によれば、ネットワーク制御システムが提供され、
−複数の装置と、
−本発明の実施例によるコンパイラとを有する。
【００２６】
本発明の更なる実施例によれば、複数の装置を有するネットワーク制御システムのコンパイル方法が提供され、
−ユーザ指定の制御ロジックを複数の機能的制御ロジックプログラムに分割し、
−複数の機能的制御ロジックプログラムを複数の実行可能コードに変換し、
−配置ルールに従って複数の実行可能コードを複数の装置のうち指定の装置に割り当てることを有する。
【００２７】
分割するステップ、変換するステップ及び割り当てるステップは、反復して実行されてもよい。このことにより、コンパイル処理の最適化が可能になる。
【００２８】
実施例によれば、反復して実行されるステップは、ユーザ指定の制御ロジックのコンパイル処理中、実行可能コードのインストール処理中及び／又は実行可能コードの実行中に実行されてもよい。このことにより、コンパイル、インストール又は実行中に集められた情報をコンパイル処理に含めることが可能になる。
【００２９】
本発明の更なる実施例によれば、複数の装置を有するネットワーク制御システムのコンパイル方法が提供され、
−制御ロジックを実行可能コードプログラムに変換し、
−実行可能コードプログラムを複数の実行可能コードに分割し、
−配置ルールに従って複数の実行可能コードを複数の装置のうち指定の装置に割り当てることを有する。
【００３０】
本発明の実施例によれば、コンピュータにより実行されたときに、本発明に従って前述の方法を実行することができるコンピュータプログラムが提供され得る。このことにより、コンピュータプログラムで本発明の手法を実現することが可能になる。
【００３１】
本発明の更なる実施例によれば、本発明によるコンピュータプログラムを格納した記録担体（例えば、CD-ROM、DVD、メモリカード、ディスケット又は電子アクセスのためにコンピュータプログラムを格納するのに適した同様のデータ担体）が提供され得る。
【図面の簡単な説明】
【００３２】
【図１】本発明によるネットワーク制御システム
【図２】本発明による例示的なネットワーク制御照明システム
【発明を実施するための形態】
【００３３】
本発明の前記及び他の態様は、以下に説明する実施例から明らかになり、実施例を参照して説明する。
【００３４】
本発明について、例示的な実施例を参照して以下に詳細に説明する。しかし、本発明は、これらの例示的な実施例に限定されない。
【００３５】
以下では、機能的に同様又は同一の要素は、同じ参照符号を有することがある。
【００３６】
図１は、コンパイラ100と、複数の装置102、104、106、108、112とを有するネットワーク制御システムを示している。装置102は親装置であり、装置108は親装置102に接続された子装置である。装置112はルータである。装置104、106はルータ112により接続されている。装置102は装置104に接続されている。装置102、104、106、108、112及びコンパイラは、通信システム（無線通信システム等）により接続されている。
【００３７】
コンパイラ100は、コンパイラプログラムにより記述されたコンパイル方法を実行するように構成されたコンパイル装置である。コンパイラ100は、制御ロジックを受信し、実行可能コードを出力するように構成される。制御ロジックは、ユーザ指定の制御ロジックである。実行可能コードは、コンパイラにより制御ロジックから生成される。コンパイラは、生成された実行可能コードを複数の装置102、104、106、108、112のうち少なくとも１つの指定の装置に割り当てるように更に構成される。コンパイラ100は、分割手段122と、変換手段124と、割り当て手段126とを有する。
【００３８】
分割手段122は、制御ロジックを受信し、制御ロジックを複数の機能的制御ロジックプログラムに分割するように構成される。例えば、分割手段は、制御ロジックを２つ以上の機能的制御ロジックプログラムに分割する。分割手段122は、機能的制御ロジックプログラムを変換手段124に提供するように更に構成される。
【００３９】
変換手段124は、機能的制御ロジックプログラムを受信し、それぞれ受信した機能的制御ロジックプログラムを対応する実行可能コードに変換するように構成される。変換手段124は、生成された実行可能コードを割り当て手段126に提供するように更に構成される。
【００４０】
割り当て手段126は、実行可能コードを受信し、それぞれの実行可能コードを複数の装置102、104、106、108、112のうち少なくとも１つに割り当てるように構成される。割り当て手段126は、配置ルールに従って実行可能コードが割り当てられる指定の装置を選択するように構成される。配置ルールは、複数の装置102、104、106、108、112のうちどれが実行可能コードの一部又は全部について指定の装置であるかを規定する。配置ルールは、１つ又は複数の最適化基準に従ってもよい。このため、コンパイラは、システム、アプリケーション及び／又は特定の装置の詳細な情報にアクセスしてもよい。
【００４１】
分割手段122は、分割ルールに従って制御ロジックを分割するように構成される。分割ルールは配置ルールに依存する。このことにより、対応する実行可能コードが割り当て手段126により割り当てられた指定の装置又は複数の指定の装置に応じて特定の制御ロジックを分割することが可能になる。指定の装置が例えば十分なリソースを有する場合、分割手段122は、受信した制御ロジックを全く分割しなくてもよいが、受信した制御ロジックから単一の機能的制御ロジックプログラムを生成してもよい。
【００４２】
一実施例では、割り当て手段126は、実行可能コードを、実行可能コードに関与する指定の装置に割り当てるように構成される。例えば、装置104は入力状態変数のマスタであり、装置106は出力状態変数のマスタであるため、装置104、106は特定の実行可能コードに関与する。従って、割り当て手段126は、配置ルールに従うために、特定の実行可能コードを装置104又は装置106に割り当てる。
【００４３】
割り当て手段126はまた、割り当てられた実行可能コードを実行するために十分なリソースを有する指定の装置で実行可能コードを割り当てるように構成されてもよい。割り当て手段126は、制約のあるリソースを有する装置から十分なリソースを有する装置を区別する手段（図１に図示せず）を有してもよい。例えば、802.15.4/ZigBee又は親子関係を備えた同様の技術に基づくネットワーク制御システムの例では、親装置102は、十分なリソースを有してもよい。これに対して、子装置108は、制約のあるリソース又は機能を有する装置でもよい。好ましくは、割り当て手段126は、実行可能コードを親装置102に割り当て、子装置108に割り当てなくてもよい。特に、割り当て手段126は、子装置108が実行可能コードの出力状態変数のマスタインスタンスをホストする場合に、実行可能コードを親装置102に割り当ててもよい。
【００４４】
更なる実施例によれば、割り当て手段126は、実行可能コードをルータ112に割り当てるように構成されてもよい。特に、割り当て手段126は、ルータ112に接続されている装置104、106の少なくとも１つが対応する実行可能コードに関与する場合に、実行可能コードをルータに割り当ててもよい。
【００４５】
更なる実施例によれば、割り当て手段126は、特定の装置での通信コストが最小化されるように、実行可能コードを割り当ててもよい。特に、制約のあるリソースを有する装置での通信コストを最小化することが有利になり得る。更に、割り当て手段126は、全ての装置102、104、106、108、112での通信コストが最小化されるように、実行可能コードを割り当てるように構成されてもよい。
【００４６】
更なる実施例によれば、ルールの（順序付けられた）組み合わせが割り当て手段126により使用されてもよい。
【００４７】
図１に示すネットワーク制御システムは、一例のみとして選択されている。ネットワーク制御システムが意図する動作分野の要件に従うために必要な如何なる構成を有してもよい。
【００４８】
更なる実施例によれば、変換手段124及び分割手段122の位置は、コンパイラ100内で交換されてもよい。従って、変換手段は、受信した制御ロジックを実行可能コードプログラムに変換してもよい。その後、分割手段は、実行可能コードプログラムを複数の実行可能コードに分割してもよく、割り当て手段は、配置ルールに従って複数の実行可能コードを複数の装置のうち指定の装置に割り当ててもよい。
【００４９】
更に他の実施例によれば、変換するステップ、分割するステップ及び割り当てるステップは反復して繰り返されてもよい。
【００５０】
本発明によるネットワーク制御システムは、ネットワーク制御システムの簡単、小型且つ柔軟な制御ロジックの設計を可能にするシステムに基づいてもよい。このことは、制御アプリケーションコード自体への簡単且つトランスペアレントな制御関連データの転送のため、可能になり得る。制御ロジックは、通信に関する側面を考慮する必要なく、対象のネットワーク制御システムの全ての装置又は選択された装置の集合でユーザにより指定されてもよい。次に、ロジックのコンパイルの一部として、実行可能ランタイムコードは、コンピュータ制御又は自動化処理により装置に割り当てられ、装置及び／又はネットワーク機能又はリソースに関して対象のネットワーク制御システムを最適化してもよい。次に、分配側面をカバーするサポートロジックが自動的に追加されてもよい。
【００５１】
換言すると、本発明によるネットワーク制御システムは、分配側面とは関係なく制御アプリケーションの開発及び確立を可能にするシステムを有し、これによりユーザが見たときの制御ロジックの複雑性及びロジック設計処理の複雑性を低減してもよい。更に、装置への制御ロジックの自由な割り当てが可能になり得る。このことにより、アプリケーション開発後に、コンピュータ制御又は自動化されたシステム最適化が可能になる。また、このようなシステムにより、非専門ユーザが制御ロジックを容易且つ最適に定義及び設定することが可能になる。
【００５２】
制御ロジックを設計してシステムを設定する処理は、以下のステップで行われてもよい。
【００５３】
ユーザ又は設計者によるロジック設計は、関係するライタイムコードがライタイムシステムで実行される装置を指定せずに、対象のシステムでの全ての装置ロジックの集合で制御ロジックを開発すること（“設計視野”）を含んでもよい。ロジック設計はグラフィックツールを使用して行われてもよい。
【００５４】
自動的に実行され得るコンパイルは、装置への実行可能コードの割り当てを含み、ランタイムシステムの実行可能（制御ロジック）コード（実行手段と呼ばれる）（例えば、バイトコード）への制御ロジックプログラムの変換を含んでもよい。実行可能コードは動作中に実行される。コンパイルは、実行可能コードを実行するために必要な情報の通信を実現するサポートロジックのインスタンス化を更に含んでもよい。
【００５５】
システム設定はまた、ネットワーク及びアプリケーション構成の典型的なステップを除いて、割り当てられた装置への実行可能コードのアップロードを含んでもよい。
【００５６】
システムメンテナンスは、既にシステム内にある制御ロジックを変更する必要なく、新しいロジックで前述のステップを単に繰り返し、それに従ってダウンロードすることによるスタートアップ後の、対象のシステムへの新しい制御ロジックの簡単な追加を含んでもよい。
【００５７】
例示目的で、図２に示す例示的なシステムについて、ネットワーク制御照明システムの２つの例示的なスクリプトを以下に説明する。
【００５８】
この例は、記述的なユーザ可読言語で表される。ユーザ可読言語は、より良い理解のためにのみ選択されており、決してロジック設計のスクリプト言語の体系を示すことを意図しない。
【００５９】
例1：“スイッチ206が調光レベルを規定する間に、部屋200の住居センサ208はランプ202及び204をオン／オフする”
スイッチ206、センサ208及びランプ202、204は、図１に示すような装置でもよい。
【００６０】
対象の装置動作は、装置ロジックの位置と無関係である。例えば、ネットワーク制御照明システムでは、スクリプト“スイッチ206が調光レベルを規定する間に、部屋200の住居センサ208はランプ202及び204をオン／オフする”が、ランタイムで実行される１つの実行可能コード又は複数の派生実行可能コードとして割り当てられてもよい。例えば、実行可能コードは、制御される装置の対象の動作を変更することなく、スイッチ206、住居センサ208、いずれかのランプ202、204、部屋200の中若しくは外の他の装置（例えば中央装置）、又はこれらのうちいずれかの選択されたものに配置されてもよい。
【００６１】
分配側面を考慮することなく、全体システムで指定された設計制御ロジック（ユーザのスクリプト）では、コンパイルは、以下のロジック分割ステップと、装置への特定のもののロジック割り当てステップと、ロジックコンパイルステップ（すなわち、ランタイムコードへの変換）とを含む。
【００６２】
コンパイラはスクリプト毎に動作してもよい。
【００６３】
スクリプトの分割は、ロジック分割ステップにおいて、制御ロジックプログラムと呼ばれる特定のルール、動作又は位置に関係する一貫したロジックを分離する目的を有してもよい。
【００６４】
制御ロジックプログラムの分割が必要であるか否かは、ルール（例えば、装置で利用可能なメモリ単位サイズ（例えば、64Bページ））により規定されてもよい。例えば所望の機能又は関与する装置に従って、ロジックを分割する様々な基準が存在してもよい。例えば、例1の例示的なスクリプトは、以下の方法のうち１つで、２つの別々に割り当て可能なスクリプトに更に分割されてもよい。
【００６５】
例1.1“部屋200の住居センサ208はランプ202及び204をオン／オフする”及び“スイッチ206がランプ202及び204の調光レベルを規定する”
例1.2：“スイッチ206が調光レベルを規定する間に、部屋200の住居センサ208はランプ202をオン／オフする”及び：“スイッチ206が調光レベルを規定する間に、部屋200の住居センサ208はランプ204をオン／オフする”
ロジック割り当てステップにおいて、制御ロジックプログラムは、ライタイムコードが実行する装置に割り当てられるべきである。ロジック割り当ては、全部又は一部の制御ロジックプログラムについてユーザにより規定されてもよい。
【００６６】
実施例では、ロジック割り当ての初期設定ルールが規定されてもよい。例えば、アプリケーションロジックは、関与する装置（すなわち、１つの関与する状態変数のマスタインスタンスを保持する装置）にのみ割り当てられてもよい。関与する状態変数は、アプリケーションロジックにより使用される入力又は出力状態変数でもよい。更に、初期設定で、ロジックは、常にその装置（例えば、実行可能コードの出力状態変数のマスタインスタンスを保持する装置）に割り当てられてもよい。
【００６７】
例1.2.1：前述の前提条件で、例1.2からの２つのスクリプトは、それぞれランプ202及び204に割り当てられなければならない。
【００６８】
他の実施例では、装置の機能又はリソースがロジック割り当て処理により考慮されてもよい。このため、それぞれ個々の装置の機能についての詳細な情報が必要になる。
【００６９】
コンパイラにより考慮される装置特性は、CPUパワー、利用可能なメモリ（不揮発性メモリ、プログラムメモリ及びランダムアクセスメモリを含む）、スリープ動作、プロキシ機能若しくは要件、又は電源を含んでもよい。
【００７０】
電源の評価では、ルールは、実行可能コードが主電源のある装置に割り当てられることが好ましいというものでもよい。
【００７１】
例1.2.2：スイッチ206及び住居センサ208が共に電池式装置である場合、例1.2からのスクリプトは、ランプ202、204のみに割り当てられ得る。
【００７２】
一実施例では、装置の機能又は情報についての情報は、（例えば、システム棚卸しの結果として）ロジック割り当ての前にコンパイラに利用可能になってもよい。
【００７３】
他の実施例では、メモリのような特定の装置特性では、一連のロジック分割−割り当て−コンパイル−インストールステップは、反復処理でもよい。この実施例によれば、コンパイラは、まず何らかの一般的なルール（例えば、関与する装置の形式）に従ってロジックを割り当てる。
【００７４】
例えば、インストール時に、実行可能コードが利用可能な装置メモリに適合するか否かを決定するために、結果の実行可能コードのサイズが検査されてもよい。検査するステップは、コンパイラ又は装置自体により実行されてもよい。メモリサイズを超過している場合、ロジック分割−割り当て−コンパイル−インストール処理が繰り返されてもよい。
【００７５】
更に他の実施例では、ロジック割り当ては、パケットを送信するエネルギーコストと、起動を待機して受信する肯定応答フレームを受信するエネルギーコストと、最終的な再送信コストとを含む装置毎の通信コストに関して最適化されてもよい。通信コストに関する最適化は、更なる情報を必要としてもよい。このような更なる情報は、どのような技術（802.15.4又はZigBee等）が使用されているか、利用可能な帯域及び予想遅延は何であるかを含んでもよい。更に、ZigBeeルータ（ZB：Zigbee  Router）又はZigBeeエンド装置（ZED：ZigBee  End  Device）のような装置の役目についての情報、親子関係についての情報を含む装置周辺のリスト、特定のリンクの品質（LQI）又はルーティングパスの長さ及びコストが重要になり得る。ルーティングパスの長さは、ホップ数により規定されてもよい。
【００７６】
例1.2.3：例1.2.1の例で、それぞれの電池式装置（206、208）は、２つの更新（ランプ202、204のそれぞれに１つ）を送信する。例1.2からの双方のスクリプトが１つのランプ（例えばランプ202）に割り当てられている場合、電池式装置206、208毎の電力消費は、送信されるパケットの数を制限することにより、更に制限されてもよい。従って、それぞれの電池式装置206、208は、１つのパケットをランプ202に送信しさえすればよく、次に、ランプ202がランプ204を制御する。
【００７７】
装置の機能又はリソースを除いて装置通信コストを最適化するために、考慮される基準は、アプリケーションロジックにより規定された対象の装置動作（例えば、属性の更新を送出する周波数）を含んでもよい。
【００７８】
例1.2.4：例1からの住居センサ208が50ms毎に住居状態を測定して報告する予定である場合、このセンサにより生成されるトラヒック量を制限することが非常に望ましい。最低でも、例1.2.3で説明した対策が使用されてもよい。すなわち、センサは、ランプの一方にのみ報告し、実質的な照明レベルの変更時にのみ、ランプが他方のランプを更新する。代替として、例1のスクリプトから生じる実行手段は、実質的な照明レベルの変更時又はライトのスイッチがオンになったときにのみセンサが双方のランプを更新するように、住居センサ自体に割り当てられてもよい。
【００７９】
前述の装置での通信コストの最適化は、システム設計者に利用可能な何らかの性能に影響を及ぼす手段の上で行われる。例えば、（例えば絶対若しくは相対属性値の変更又は最大の変更通知頻度に基づく）条件付きの更新を導入することにより行われる。
【００８０】
更に他の実施例では、アプリケーションの全体コスト及び全体システムのサポートロジックの実行が最適化されてもよい。アプリケーション及びサポートロジックを格納するために全ての装置に必要な全体メモリサイズ（例えば、KB単位）のような最適化基準では、全体アプリケーション及びサポートロジックの実行コスト（例えば、CPUサイクル又は電力消費）又は全ての装置での全体通信コスト（例えば、パケットホップ数、必要な送信時間（遅延）及び／又は帯域）が最適化に考慮されてもよい。
【００８１】
最適化基準の選択は、最も重要なシステム側面に依存してもよい。例えば、帯域が最も重要なシステムリソースである場合、帯域使用が最適化されるべきである。これは、20又は40kbpsの帯域幅を提供する900MHzの周辺の低い802.15.4の周波数帯域の場合でもよい。一方、（2400MHzの周辺の）802.15.4の周波数帯域の上では、250kbpsの帯域幅の提供が、例えば電池寿命のために最適化されてもよい。
【００８２】
例1.2.5：例1.2からの２つのスクリプトがそれぞれ１つのランプ204、206に割り当てられることを仮定すると、４つの更新メッセージが全体で送信されなければならず、２つの実行可能コードが起動されることを生じる。例1.2からのロジックが１つのランプに割り当てられた場合、唯一の実行可能コードが起動され、３つのメッセージが全体で送信される必要がある。
【００８３】
更に他の実施例では、前述のロジック割り当て手法は組み合わされてもよい。例えば、初期設定で、ロジックは、装置の機能又はリソースを考慮して、いずれかの関与する装置に割り当てられる。不可能であることがわかると、ロジックは、全体制御システムの全体コスト（例えば、更新がシステム内で通過しなければならない合計のホップ数の制限）が最適化されるように、何らかの第３の関与しない装置に割り当てられる。例えばZigBee環境では、後者は、例えばアプリケーションロジックを関与するZigBeeエンド装置の親又は関与する装置間のルート上にある何らかのルータに割り当てることにより実現されてもよい。
【００８４】
実行可能ランタイムコードの生成手順の一部として、アプリケーションロジックは、ロジックコンパイルステップで実行可能ランタイムコードを生成するためにコンパイルされなければならない。
【００８５】
一実施例では、ランタイム実行可能コードへのアプリケーションロジックのコンパイルは、アプリケーションロジックが分割されて割り当てられた後に生じてもよい。このことは、インスタンス化がコンパイラによっても行われる場合、アプリケーションサポートロジック（例えば、加入情報）のインスタンス化を簡略化する。
【００８６】
他の実施例では、ランタイム実行可能コードへのアプリケーションロジックのコンパイルは、アプリケーションロジックが分割されて割り当てられる前に生じてもよい。従って、それぞれ特定の実行手段の正確なサイズがわかり、このサイズは、例えば、装置の利用可能なメモリに関してロジック割り当てを最適化するために使用され得る。
【００８７】
本発明の特定の実施例のまとめを記載する。
【００８８】
コンパイラプログラムが自動的に
−ユーザ指定の制御ロジックを実行可能コードに変換される機能的制御ロジックプログラムに分割し、
−装置の機能／リソースを考慮して最適に実行可能コードを（ランタイムで実行する）装置に割り当てるネットワーク制御システムである。
【００８９】
前述のコンパイラプログラムは、以下の割り当て最適化基準を使用する。
−好ましくは、関与する装置の１つに実行可能コードを配置する。
−好ましくは、実行手段の出力状態変数のマスタインスタンスをホストする装置に実行可能コードを配置する。
−802.15.4/ZB又は親子関係を備えた同様の技術が使用される場合、特にZigBeeエンド装置が実行手段の出力状態変数のマスタインスタンスをホストする場合、関与する低減機能の装置（例えば、ZigBeeエンド装置）の親で行われる。
−関与する装置間のルート上にある何らかのルータで行われる。
−好ましくは、制約のある機能／リソース（電源、CPUパワー、利用可能なメモリ（不揮発性メモリを含む）、スリーピング動作、プロキシ機能／要件等）を備えた装置に実行可能コードを配置しない。
−好ましくは、リソースに制約のある装置毎の通信コストが最小化されるように、実行可能コードを配置する。
−好ましくは、全ての装置での全体通信コスト（例えば、エネルギー消費、遅延又は帯域に関する）が最小化されるように、実行可能コードを配置する。
【００９０】
前述のコンパイラプログラムは、ユーザ指定の制御ロジックを分割するため、前述の最適な制御ロジックプログラムの割り当てが可能になる。
【００９１】
ネットワーク制御システムの前述のコンパイラプログラムは、コンパイル時に部分的に、インストール時に部分的に、最適化時に部分的に、また、動作時に部分的にステップが反復して行われる。
【００９２】
本発明の機能の少なくとも一部は、ハードウェア又はソフトウェアにより実行されてもよい。ソフトウェアでの実装の場合、本発明を実装する単一又は複数のアルゴリズムを処理するために、単一又は複数の標準的なマイクロプロセッサ又はマイクロコントローラが使用されてもよい。
【００９３】
“有する”という用語は、他の要素又はステップを除外せず、単数は複数を除外しない点に留意すべきである。更に、請求項の如何なる参照符号も本発明の範囲を限定するものとして解釈されるべきではない。
【図１】
0005416694.tif 000002
【図２】
0005416694.tif 000003