(57)【特許請求の範囲】
【請求項１】
フィールドバスの複数の機能ブロックによって構成される制御ループを、複数のサブスケジュールを用いて周期的に実行するスケジュールを作成するスケジュール作成装置であって、
前記制御ループの実行周期のｉ倍（ｉは２以上の整数）の周期を有する前記サブスケジュールが設定されている場合に、該サブスケジュールにおいて該制御ループを実行させる実行データをｉ個生成する実行データ生成部と、
前記制御ループの動作タイミングを制御するリンクマスタデバイスに、前記フィールドバスを介して前記スケジュールを送信する送信部と、を備え、
前記リンクマスタデバイスには設定可能な前記サブスケジュールの数の最大値である設定可能最大数が定められており、
前記フィールドバスのセグメントに前記リンクマスタデバイスが複数存在する場合に、前記フィールドバスを介して前記各リンクマスタデバイスの前記設定可能最大数を取得する設定可能最大数取得部と、
取得された前記各リンクマスタデバイスの前記設定可能最大数のうちの最小値に基づいて、前記サブスケジュールを設定するサブスケジュール設定部と、を更に備える
ことを特徴とするスケジュール作成装置。
【請求項２】
前記実行データは、前記サブスケジュールの開始時間を基準とするオフセット時間を含む
ことを特徴とする請求項１に記載のスケジュール作成装置。
【請求項３】
前記制御ループの実行周期のｉ倍の周期を有し、それぞれの周期が相互に異なる複数の前記サブスケジュールが設定されている場合に、前記実行データ生成部は、該複数のサブスケジュールのうちの最短の周期を有する前記サブスケジュールにおいて前記実行データをｉ個生成する
ことを特徴とする請求項１又は２に記載のスケジュール作成装置。
【請求項４】
フィールドバスの複数の機能ブロックによって構成される制御ループを、複数のサブスケジュールを用いて周期的に実行するスケジュールを作成するスケジュール作成方法であって、
前記制御ループの実行周期のｉ倍（ｉは２以上の整数）の周期を有する前記サブスケジュールが設定されている場合に、実行データ生成部が、該サブスケジュールにおいて該制御ループを実行させる実行データをｉ個生成するステップと、
前記制御ループの動作タイミングを制御するリンクマスタデバイスに、送信部が、前記フィールドバスを介して前記スケジュールを送信するステップと、を備え、
前記リンクマスタデバイスには設定可能な前記サブスケジュールの数の最大値である設定可能最大数が定められており、
前記フィールドバスのセグメントに前記リンクマスタデバイスが複数存在する場合に、設定可能最大数取得部が、前記フィールドバスを介して前記各リンクマスタデバイスの前記設定可能最大数を取得するステップと、
サブスケジュール設定部が、取得された前記各リンクマスタデバイスの前記設定可能最大数のうちの最小値に基づいて、前記サブスケジュールを設定するステップと、を更に備える
ことを特徴とするスケジュール作成方法。
【請求項５】
前記実行データは、前記サブスケジュールの開始時間を基準とするオフセット時間を含む
ことを特徴とする請求項４に記載のスケジュール作成方法。
【請求項６】
前記制御ループの実行周期のｉ倍の周期を有し、それぞれの周期が相互に異なる複数の前記サブスケジュールが設定されている場合に、前記生成するステップは、前記実行データ生成部が、該複数のサブスケジュールのうちの最短の周期を有する前記サブスケジュールにおいて前記実行データをｉ個生成する
ことを特徴とする請求項４又は５に記載のスケジュール作成方法。
【請求項７】
請求項４乃至６の何れかに記載のスケジュール作成方法のステップを備えるスケジュール作成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フィールドバスのセグメントに定義された複数の機能ブロックによって構成される制御ループを、周期的に実行するスケジュールを作成するスケジュール作成装置スケジュール作成方法、及びスケジュール作成プログラムに関する。
【背景技術】
【０００２】
生産プロセスを管理する現場では、通信機能を有する各種のフィールド機器（例えばセンサやバルブ等）をプラントに設置し、フィールド機器をフィールドバスと呼ばれるネットワークに接続することで、フィールド機器から発信される信号を管理装置等が受信し、各種の生産プロセスを管理している。このため、フィールド機器は、フィールドバスと呼ばれるネットワークに接続されている。
【０００３】
フィールドバスは、デジタル信号による双方向通信が可能な通信方式であり、１９９４年に設立されたフィールドバス協会（Fieldbus Foundation TM）により、通信仕様が、ファウンデーションフィールドバス(Foundation fieldbus)として規格化（標準化）されている。
【０００４】
従来、フィールドバスのセグメントにおいて、当該セグメントに定義された複数の機能ブロックによって構成される制御ループを、周期的に実行するスケジュールを作成するものとして、制御ループごとに作成したサブスケジュールを使用してスケジュールを作成するもの知られている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−９０８４１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、制御ループの実行タイミングを制御するリンクマスタデバイスの性能によって設定可能なサブスケジュールの数が制限されるため、従来のスケジュール作成装置では、制御ループの実行周期の数が、設定可能なサブスケジュールの数より大きい場合に、制御ループを所望の実行周期で実行させることができなかった。
【０００７】
本発明のいくつかの態様は前述の問題に鑑みてなされたものであり、制御ループの実行周期の数が、設定可能なサブスケジュールの数より大きい場合でも、制御ループを所望の実行周期で実行させることが可能となるスケジュール作成装置、スケジュール作成方法、及びスケジュール作成プログラムを提供することを目的の１つとする。
【課題を解決するための手段】
【０００８】
本発明に係るスケジュール作成装置は、フィールドバスの複数の機能ブロックによって構成される制御ループを、複数のサブスケジュールを用いて周期的に実行するスケジュールを作成するスケジュール作成装置であって、制御ループの実行周期のｉ倍（ｉは２以上の整数）の周期を有するサブスケジュールが設定されている場合に、該サブスケジュールにおいて該制御ループを実行させる実行データをｉ個生成する実行データ生成部を備える。
【０００９】
かかる構成によれば、制御ループの実行周期のｉ倍（ｉは２以上の整数）の周期を有するサブスケジュールが設定されている場合に、当該サブスケジュールにおいて当該制御ループを実行させる実行データをｉ個生成する。これにより、例えばＴの周期を有するサブスケジュールにおいて、制御ループをＴ／ｉの実行周期でｉ回実行させることが可能となる。
【００１０】
好ましくは、前述の実行データは、サブスケジュールの開始時間を基準とするオフセット時間を含む。
【００１１】
かかる構成によれば、実行データは、サブスケジュールの開始時間を基準とするオフセット時間を含む。これにより、ｉ個の実行データを生成する際に、それぞれのオフセット時間の間隔を実行周期に設定することで、容易に当該サブスケジュールにおいて制御ループをｉ回実行させることができる。
【００１２】
好ましくは、制御ループの実行周期のｉ倍の周期を有し、それぞれの周期が相互に異なる複数のサブスケジュールが設定されている場合に、実行データ生成部は、該複数のサブスケジュールのうちの最短の周期を有するサブスケジュールにおいて実行データをｉ個生成する。
【００１３】
かかる構成によれば、制御ループの実行周期のｉ倍（ｉは２以上の整数）の周期を有し、それぞれの周期が相互に異なる複数のサブスケジュールが設定されている場合に、当該複数のサブスケジュールのうちの最短の周期を有するサブスケジュールにおいてｉ個の実行データを生成する。これにより、例えば、最長の周期を有するサブスケジュールにおいて実行データを生成する場合と比較して、最短の周期を有するサブスケジュールにおいて実行データを生成すると少ない実行データで済み、生成する実行データの数を減少させることができる。これにより、作成するスケジュールのサイズ等を小さくすることができる。
【００１４】
好ましくは、制御ループの動作タイミングを制御するリンクマスタデバイスに、フィールドバスを介してスケジュールを送信する送信部を更に備える。
【００１５】
かかる構成によれば、制御ループの動作タイミングを制御するリンクマスタデバイスに、フィールドバスを介してスケジュールを送信する送信部を更に備える。これにより、リンクマスタデバイスは、スケジュール作成装置により作成されたスケジュールを実行することができる。
【００１６】
好ましくは、前述のリンクマスタデバイスには設定可能なサブスケジュールの数の最大値である設定可能最大数が定められており、フィールドバスのセグメントにリンクマスタデバイスが複数存在する場合に、フィールドバスを介して各リンクマスタデバイスの設定可能最大数を取得する設定可能最大数取得部と、取得された各リンクマスタデバイスの設定可能最大数のうちの最小値に基づいて、サブスケジュールを設定するサブスケジュール設定部と、を更に備える。
【００１７】
かかる構成によれば、フィールドバスのセグメントにリンクマスタデバイスが複数存在する場合に、フィールドバスを介して各リンクマスタデバイスの設定可能最大数を取得する設定可能最大数取得部と、取得された各リンクマスタデバイスの設定可能最大数のうちの最小値に基づいて、サブスケジュールを設定するサブスケジュール設定部と、を更に備える。これにより、セグメントにおける全てのリンクマスタデバイスが設定可能な数のサブスケジュールが設定される。これにより、セグメントにおける全てのリンクマスタデバイスが実行可能なスケジュールを各リンクマスタデバイスに送信することができる。
【００１８】
本発明に係るスケジュール作成方法及びスケジュール作成プログラムは、フィールドバスの複数の機能ブロックによって構成される制御ループを、複数のサブスケジュールを用いて周期的に実行するスケジュールを作成するスケジュール作成方法であって、制御ループの実行周期のｉ倍（ｉは２以上の整数）の周期を有するサブスケジュールが設定されている場合に、実行データ生成部が、該サブスケジュールにおいて該制御ループを実行させる実行データをｉ個生成するステップを備える。
【００１９】
かかる構成によれば、制御ループの実行周期のｉ倍（ｉは２以上の整数）の周期を有するサブスケジュールが設定されている場合に、実行データ生成部が、当該サブスケジュールにおいて当該制御ループを実行させる実行データをｉ個生成するステップを備える。これにより、例えばＴの周期を有するサブスケジュールにおいて、制御ループ１３５をＴ／ｉの実行周期でｉ回実行させることが可能となる。
【００２０】
好ましくは、前述の実行データは、サブスケジュールの開始時間を基準とするオフセット時間を含む。
【００２１】
かかる構成によれば、実行データは、サブスケジュールの開始時間を基準とするオフセット時間を含む。これにより、ｉ個の実行データを生成する際に、それぞれのオフセット時間の間隔を実行周期に設定することで、容易に当該サブスケジュールにおいて制御ループをｉ回実行させることができる。
【００２２】
好ましくは、制御ループの実行周期のｉ倍の周期を有し、それぞれの周期が相互に異なる複数のサブスケジュールがセグメントに設定され、記憶部に記憶されている場合に、前述の生成するステップは、実行データ生成部が、該複数のサブスケジュールのうちの最短の周期を有するサブスケジュールにおいて実行データをｉ個生成する。
【００２３】
かかる構成によれば、制御ループの実行周期のｉ倍（ｉは２以上の整数）の周期を有し、それぞれの周期が相互に異なる複数のサブスケジュールがセグメントに設定され、記憶部に記憶されている場合に、実行データ生成部が、当該複数のサブスケジュールのうちの最短の周期を有するサブスケジュールにおいてｉ個の実行データを生成する。これにより、例えば、最長の周期を有するサブスケジュールにおいて実行データを生成する場合と比較して、最短の周期を有するサブスケジュールにおいて実行データを生成すると少ない実行データで済み、生成する実行データの数を減少させることができる。これにより、作成するスケジュールのサイズ等を小さくすることができる。
【００２４】
好ましくは、制御ループの動作タイミングを制御するリンクマスタデバイスに、送信部が、フィールドバスを介して前記スケジュールを送信するステップを更に備える。
【００２５】
かかる構成によれば、制御ループの動作タイミングを制御するリンクマスタデバイスに、送信部が、フィールドバスを介してスケジュールを送信するステップを更に備える。これにより、リンクマスタデバイスは、スケジュール作成方法又はスケジュール作成プログラムにより作成されたスケジュールを実行することができる。
【００２６】
好ましくは、前述のリンクマスタデバイスには設定可能なサブスケジュールの数の最大値である設定可能最大数が定められており、フィールドバスのセグメントにリンクマスタデバイスが複数存在する場合に、設定可能最大数取得部が、フィールドバスを介して各リンクマスタデバイスの設定可能最大数を取得するステップと、サブスケジュール設定部が、取得された各リンクマスタデバイスの設定可能最大数のうちの最小値に基づいて、サブスケジュールを設定するステップと、を更に備える。
【００２７】
かかる構成によれば、フィールドバスのセグメントにリンクマスタデバイスが複数存在する場合に、設定可能最大数取得部が、フィールドバスを介して各リンクマスタデバイスの設定可能最大数を取得するステップと、サブスケジュール設定部が、取得された各リンクマスタデバイスの設定可能最大数のうちの最小値に基づいて、サブスケジュールを設定するステップと、を更に備える。これにより、セグメントにおける全てのリンクマスタデバイスが設定可能な数のサブスケジュールが設定される。これにより、セグメントにおける全てのリンクマスタデバイスが実行可能なスケジュールを各リンクマスタデバイスに送信することができる。
【発明の効果】
【００２８】
本発明によれば、例えばＴの周期を有するサブスケジュールにおいて、制御ループをＴ／ｉの実行周期でｉ回実行させることが可能となる。これにより、制御ループの実行周期の数（種類）が、設定可能なサブスケジュールの最大値（設定可能最大数）より大きい場合でも、制御ループの実行周期のｉ倍の周期を有するサブスケジュールが設定されている場合に、当該制御ループを所望の実行周期で実行させることができる。
【図面の簡単な説明】
【００２９】
【図１】本発明の第１実施形態におけるフィールド機器管理システムの概略構成を説明するブロック図である。
【図２】図１に示したフィールド装置と機能ブロックとの関係を説明するブロック図である。
【図３】図２に示した機能ブロックにより構成される制御ループの例を説明するイメージ図である。
【図４】図２に示した機能ブロックにより構成される制御ループの例を説明するイメージ図である。
【図５】図２に示した機能ブロックにより構成される制御ループの例を説明するイメージ図である。
【図６】図２に示した機能ブロックにより構成される制御ループの例を説明するイメージ図である。
【図７】図２に示した機能ブロックにより構成される制御ループの例を説明するイメージ図である。
【図８】図３に示した制御ループの実行タイミングを説明する図である。
【図９】図４に示した制御ループの実行タイミングを説明する図である。
【図１０】図５に示した制御ループの実行タイミングを説明する図である。
【図１１】図６に示した制御ループの実行タイミングを説明する図である。
【図１２】図７に示した制御ループの実行タイミングを説明する図である。
【図１３】図１に示したスケジュール作成装置の動作を説明するフローチャートである。
【図１４】本発明の第２実施形態におけるフィールド機器管理システムの概略構成を説明するブロック図である。
【図１５】図１４に示したスケジュール作成装置の動作を説明するフローチャートである。
【発明を実施するための形態】
【００３０】
以下に本発明の実施の形態を説明する。以下の図面の記載において、同一又は類似の部分には同一又は類似の符号で表している。但し、図面は模式的なものである。したがって、具体的な寸法などは以下の説明を照らし合わせて判断するべきものである。また、図面相互間においても互いの寸法の関係や比率が異なる部分が含まれていることは勿論である。
【００３１】
［第１実施形態］
図１乃至図１３は、本発明の第１実施形態を示すためのものである。図１は、本発明の第１実施形態におけるフィールド機器管理システムの概略構成を説明するブロック図である。図１に示すように、フィールド機器管理システム１００は、フィールドバスのセグメント（以下、単にセグメントという）１０と、コントローラ２０と、本発明に係るスケジュール作成装置３０とを備える。
【００３２】
セグメント１０は、複数のフィールド機器１１Ａ〜１１Ｊと、リンクマスタデバイス１２とを含む。各フィールド機器１１Ａ〜１１Ｊと、リンクマスタデバイス１２とは、フィールドバスＦに接続しており、相互に通信可能となっている。
【００３３】
フィールドバスＦは、前述の規格化（標準化）されたファウンデーションフィールドバス(Foundation fieldbus)プロトコルを、通信仕様として用いるネットワークである。また、セグメント１０は、フィールドバスＦの基本構成であり、１本の伝送媒体からなる１つの伝送路を意味するフィールドバス用語である。
【００３４】
各フィールド機器１１Ａ〜１１Ｊは、プラント内に装備される各種の機器であり、フィールバスＦを介して双方向に通信可能なフィールバス適合の機器である。各フィールド機器１１Ａ〜１１Ｊとしては、例えば、流量センサ、圧力センサ及び温度センサ等の各種センサや、流量制御弁および圧力制御弁等のバルブ（弁）、ポンプ及びファン等のアクチュエータが該当する。
【００３５】
リンクマスタデバイス１２は、リンクアクティブスケジューラ(Link Active Scheduler、以下ＬＡＳという)機能を有するＬＡＳ部１２１と、記憶部１２２とを有する機器である。
【００３６】
ＬＡＳ部１２１は、フィールドバスＦ上で行われる周期的通信、非周期的通信などを含む全ての通信を制御するためのネットワーク制御機能を有する。ＬＡＳ部１２１は、例えば、周期的通信を起動するためのトリガフレームの送出、非周期的通信を行うために各フィールド機器１１Ａ〜１１Ｊに送信許可を与えるフレームの送出などの機能を有する。なお、以下において、特に必要な場合を除き、周期的通信のみを説明し、非周期的通信については説明を省略する。
【００３７】
記憶部１２２は、メモリなどの記憶手段であり、マクロサイクルデータ１２２ａと、サブスケジュールデータ１２２ｂと、スケジュールプログラム１２２ｃとを記憶する。
【００３８】
ここで、スケジュールは、後述する制御ループの周期的動作の実行タイミングを定めたものである。マクロサイクルは、スケジュールの基準周期を意味するフィールドバス用語であり、スケジュールに対して１つ設定されるものである。サブスケジュールは、制御ループを実行させる実行データを含み、複数設定されるものである。本実施形態では、スケジュールは複数のサブスケジュールを使用して実施（実行）される。
【００３９】
マクロサイクルデータ１２２ａは、マクロサイクルに関する情報、例えば周期の情報を含む。サブスケジュールデータ１２２ｂは、サブスケジュールに関する情報、例えば各サブスケジュールの周期、設定可能なサブスケジュールの数の最大値（以下、設定可能最大数という）などの情報を含む。スケジュールプログラム１２２ｃは、複数のサブスケジュールをマージして作成され、制御ループの周期的動作がマクロサイクルの周期で繰り返されるようにスケジューリングされたプログラムである。ＬＡＳ部１２１は、このスケジュールプログラム１２２ｃに基づいて、セグメント１０における動作及び通信を制御している。
【００４０】
コントローラ２０は、例えば、ＣＰＵ（図示省略）、メモリなどの記憶手段（図示省略）、及びデータ通信（データ送受信）のためのインターフェース（図示省略）を備える。コントローラ２０は、フィールドバスＦに接続しており、各フィールド機器１１Ａ〜１１Ｊ及びリンクマスタデバイス１２と相互に通信可能であるとともに、スケジュール作成装置３０に接続して相互に通信可能となっている。
【００４１】
スケジュール作成装置３０は、リンクマスタデバイス１２が使用するスケジュールプログラムを作成するための装置である。スケジュール作成装置３０は、入出力インターフェース部３１と、記憶部３２と、設定部３３と、実行データ生成部３４と、スケジュールプログラム作成部３５と、データロード部３６と、を備える。
【００４２】
入出力インターフェース部３１は、キーボードやマウスなどの入力手段と、ディスプレイやプリンタなどの出力手段との間でデータ通信（データ送受信）を行うためのものである。入出力インターフェース部３１は、例えば、スケジュール作成装置３０により実行されるプログラム（ソフトウエア）により、ユーザに対してＧＵＩ(Graphical User Interface)を提供するようにしてもよい。
【００４３】
記憶部３２は、メモリなどの記憶手段であり、リンクマスタデバイス１２の記憶部１２２と同様のマクロサイクルデータ３２ａ、サブスケジュールデータ３２ｂ、及びスケジュールプログラム１２２ｃとを記憶する。また、記憶部３２は、後述する機能ブロックに関する情報、例えば機能ブロックの定義の情報を含む機能ブロックデータ１３を記憶する。
【００４４】
設定部３３は、入出力インターフェース部３１を介して入力される後述の制御ループの実行周期に基づいて、複数のサブスケジュールを設定する。
【００４５】
実行データ生成部３４は、設定部３３により設定されたサブスケジュールにおいて、制御ループを実行させる実行データを生成する。
【００４６】
スケジュールプログラム作成部３５は、実行データ生成部３４により生成された実行データを含むサブスケジュールを用いて、スケジュールプログラム３２ｃを作成する。
【００４７】
データロード部３６は、スケジュールプログラム作成部３５により作成されたスケジュールプログラム３２ｃを含むデータを、フィールドバスＦを介してリンクマスタデバイス１２に送信する。
【００４８】
機能ブロック(Function Block)は、制御システムを構築するに必要な単位機能を機能ブロック化したものを意味するフィールドバス用語である。具体的には、機能ブロックは、セグメント１０を構成する機器、例えば、各フィールド機器１１Ａ〜１１Ｊに実行される機能を定義したものである。機能ブロックに定義される機能は、測定値、例えば、電圧値、温度値、流量値などを各フィールド機器１１Ａ〜１１Ｊに取得させたり、アルゴリズム又は計算、例えば、微分、積分、加算、減算、乗算、除算などを行わせたり、計装、例えばバルブ開閉、炉調整、ボイラ調整などを制御させたり、或いはその他の機能を行わせるものである。
【００４９】
図２は、図１に示したフィールド装置と機能ブロックとの関係を説明するブロック図である。図２に示すように、図１に示した機能ブロックデータ１３は、アナログ入力（以下、ＡＩという）機能を有するＡＩ機能ブロック（ＡＩ１）１３ａ、比例・積分・微分（以下、ＰＩＤという）機能を有するＰＩＤ機能ブロック（ＰＩＤ１）１３ｂ、アナログ出力（以下、ＡＯという）機能を有するＡＯ機能ブロック（ＡＯ１）１３ｃ、ＡＩ機能を有するＡＩ機能ブロック（ＡＩ２）１３ｄ、ＰＩＤ機能を有するＰＩＤ機能ブロック（ＰＩＤ２）１３ｅ、ＡＯ機能を有するＡＯ機能ブロック（ＡＯ２）１３ｆ、ＡＩ機能を有するＡＩ機能ブロック（ＡＩ３）１３ｇ、ＰＩＤ機能を有するＰＩＤ機能ブロック（ＰＩＤ３）１３ｈ、ＡＯ機能を有するＡＯ機能ブロック（ＡＯ３）１３ｉ、ＡＩ機能を有するＡＩ機能ブロック（ＡＩ４）１３ｊ、ＰＩＤ機能を有するＰＩＤ機能ブロック（ＰＩＤ４）１３ｋ、ＡＯ機能を有するＡＯ機能ブロック（ＡＯ４）１３ｌ、ＡＩ機能を有するＡＩ機能ブロック（ＡＩ５）１３ｍ、ＰＩＤ機能を有するＰＩＤ機能ブロック（ＰＩＤ５）１３ｎ、及びＡＯ機能を有するＡＯ機能ブロック（ＡＯ５）１３ｏ、の情報を含む。
【００５０】
ＡＩ機能ブロック（ＡＩ１）１３ａはフィールド機器１１Ａにより実行される機能を定義し、ＰＩＤ機能ブロック（ＰＩＤ１）１３ｂとＡＯ機能ブロック（ＡＯ１）１３ｃとは、フィールド機器１１Ｂにより実行される機能を定義する。ＡＩ機能ブロック（ＡＩ２）１３ｄはフィールド機器１１Ｃにより実行される機能を定義し、ＰＩＤ機能ブロック（ＰＩＤ２）１３ｅとＡＯ機能ブロック（ＡＯ２）１３ｆとは、フィールド機器１１Ｄにより実行される機能を定義する。ＡＩ機能ブロック（ＡＩ３）１３ｇはフィールド機器１１Ｅにより実行される機能を定義し、ＰＩＤ機能ブロック（ＰＩＤ３）１３ｈとＡＯ機能ブロック（ＡＯ３）１３ｉとは、フィールド機器１１Ｆにより実行される機能を定義する。ＡＩ機能ブロック（ＡＩ４）１３ｊはフィールド機器１１Ｇにより実行される機能を定義し、ＰＩＤ機能ブロック（ＰＩＤ４）１３ｋとＡＯ機能ブロック（ＡＯ４）１３ｌとは、フィールド機器１１Ｈにより実行される機能を定義する。ＡＩ機能ブロック（ＡＩ５）１３ｍはフィールド機器１１Ｉにより実行される機能を定義し、ＰＩＤ機能ブロック（ＰＩＤ５）１３ｎとＡＯ機能ブロック（ＡＯ５）１３ｏは、フィールド機器１１Ｊにより実行される機能を定義する。
【００５１】
なお、本実施形態では、セグメント１０を構成する各フィールド機器１１Ａ〜１１Ｊにより実行される機能ブロックのみを示したが、これに限定されず、フィールドバスＦに接続される他の機器、例えば、他のセグメントを構成するフィールド機器が実行する機能を機能ブロックとして定義してもよい。
【００５２】
図３乃至図７は、図２に示した機能ブロックにより構成される制御ループの例を説明するイメージ図である。図３乃至図７に示すように、図２に示した各機能ブロック１３ａ〜１３ｏは、少なくとも１つの入力、及び／又は少なくとも１つの出力を含む。各機能ブロック１３ａ〜１３ｏは、例えば、入出力インターフェース部３１を介するユーザの操作により、相互に接続（結合）される。このように、機能ブロックを接続（結合）することにより、スケジュールの制御対象となる制御ループが形成（構成）される。
【００５３】
図３に示す例では、ＡＩ機能ブロック（ＡＩ１）１３ａの出力は、ＰＩＤ機能ブロック（ＰＩＤ１）１３ｂの入力に接続され、ＰＩＤ機能ブロック（ＰＩＤ１）１３ｂの出力は、ＡＯ機能ブロック（ＡＯ１）１３ｃの入力に接続される。また、ＡＯ機能ブロック（ＡＯ１）１３ｃの出力は、ＰＩＤ機能ブロック（ＰＩＤ１）１３ｂの入力に接続される。このように、ＡＩ機能ブロック（ＡＩ１）１３ａ、ＰＩＤ機能ブロック（ＰＩＤ１）１３ｂ、及びＡＯ機能ブロック（ＡＯ１）１３ｃを接続（結合）することにより、制御ループ１３１を形成する。
【００５４】
図４に示す例において、ＡＩ機能ブロック（ＡＩ２）１３ｄの出力は、ＰＩＤ機能ブロック（ＰＩＤ２）１３ｅの入力に接続され、ＰＩＤ機能ブロック（ＰＩＤ２）１３ｅの出力は、ＡＯ機能ブロック（ＡＯ２）１３ｆの入力に接続される。また、ＡＯ機能ブロック（ＡＯ２）１３ｆの出力は、ＰＩＤ機能ブロック（ＰＩＤ２）１３ｅの入力に接続される。このように、ＡＩ機能ブロック（ＡＩ２）１３ｄ、ＰＩＤ機能ブロック（ＰＩＤ２）１３ｅ、及びＡＯ機能ブロック（ＡＯ２）１３ｆを接続（結合）することにより、制御ループ１３２を形成する。
【００５５】
図５に示す例において、ＡＩ機能ブロック（ＡＩ３）１３ｇの出力は、ＰＩＤ機能ブロック（ＰＩＤ３）１３ｈの入力に接続され、ＰＩＤ機能ブロック（ＰＩＤ３）１３ｈの出力は、ＡＯ機能ブロック（ＡＯ３）１３ｉの入力に接続される。また、ＡＯ機能ブロック（ＡＯ３）１３ｉの出力は、ＰＩＤ機能ブロック（ＰＩＤ３）１３ｈの入力に接続される。このように、ＡＩ機能ブロック（ＡＩ３）１３ｇ、ＰＩＤ機能ブロック（ＰＩＤ３）１３ｈ、及びＡＯ機能ブロック（ＡＯ３）１３ｉを接続（結合）することにより、制御ループ１３３を形成する。
【００５６】
図６に示す例において、ＡＩ機能ブロック（ＡＩ４）１３ｊの出力は、ＰＩＤ機能ブロック（ＰＩＤ４）１３ｋの入力に接続され、ＰＩＤ機能ブロック（ＰＩＤ４）１３ｋの出力は、ＡＯ機能ブロック（ＡＯ４）１３ｌの入力に接続される。また、ＡＯ機能ブロック（ＡＯ４）１３ｌの出力は、ＰＩＤ機能ブロック（ＰＩＤ４）１３ｋの入力に接続される。このように、ＡＩ機能ブロック（ＡＩ４）１３ｊ、ＰＩＤ機能ブロック（ＰＩＤ４）１３ｋ、及びＡＯ機能ブロック（ＡＯ４）１３ｌを接続（結合）することにより、制御ループ１３４を形成する。
【００５７】
図７に示す例において、ＡＩ機能ブロック（ＡＩ５）１３ｍの出力は、ＰＩＤ機能ブロック（ＰＩＤ５）１３ｎの入力に接続され、ＰＩＤ機能ブロック（ＰＩＤ５）１３ｎの出力は、ＡＯ機能ブロック（ＡＯ５）１３ｏの入力に接続される。また、ＡＯ機能ブロック（ＡＯ５）１３ｏの出力は、ＰＩＤ機能ブロック（ＰＩＤ５）１３ｎの入力に接続される。このように、ＡＩ機能ブロック（ＡＩ５）１３ｍ、ＰＩＤ機能ブロック（ＰＩＤ５）１３ｎ、及びＡＯ機能ブロック（ＡＯ５）１５ｏを接続（結合）することにより、制御ループ１３５を形成する。
【００５８】
なお、本実施形態では、セグメント１０に定義された各機能ブロック１３ａ〜１３ｏにより形成（構成）される制御ループのみを示したが、これに限定されず、制御ループは、フィールドバスＦの他のセグメントに定義された機能ブロックを含んでいてもよい。
【００５９】
図８は、図３に示した制御ループの実行タイミングを説明する図である。以下の説明において、特に記載した場合を除き、マクロサイクルは４０００ｍｓ、サブスケジュールの設定可能最大数は「４」であるものとする。図３に示した制御ループ１３１の実行周期が４０００ｍｓの場合、図１に示した設定部３３は、図８に示すように、スケジュール２００を構成するサブスケジュール２１０の周期として、制御ループ１３１の実行周期と同じ４０００ｍｓを設定する。これにより、スケジュール２００においてサブスケジュール２１０が１回実行される。なお、制御ループ１３１の実行周期は、図１に示した入出力インターフェース部３１を介してユーザにより入力される。次に、図１に示した実行データ生成部３４は、制御ループ１３１に対してサブスケジュール２１０を割り当てる。また、制御ループ１３１を構成するＡＩ機能ブロック（ＡＩ１）１３ａ、ＰＩＤ機能ブロック（ＰＩＤ１）１３ｂ、及びＡＯ機能ブロック（ＡＯ１）１３ｃを、サブスケジュール２１０においてそれぞれ１回実行させるために、実行データ生成部３４は、実行データ２１１、２１２、２１３を生成する。さらに、図３に示したＡＩ機能ブロック（ＡＩ１）１３ａとＰＩＤ機能ブロック（ＰＩＤ１）１３ｂとの接続は、異なる装置、すなわち、図２に示したように、フィールド装置１１Ａの機能ブロックとフィールド装置１１Ｂの機能ブロックとの接続なので、ＡＩ機能ブロック（ＡＩ１）１３ａの出力をＰＩＤ機能ブロック（ＰＩＤ１）１３ｂに入力させるために、実行データ生成部３４は、セグメント１０における通信（Ｃ１）１３１ａを実行させる実行データ２１４を生成する。このように、サブスケジュール２１０において制御ループ１３１が１回実行される。
【００６０】
生成された各実行データ２１１〜２１４は、サブスケジュール２１０において所定のタイミングで実行するために、基準時間（図３において０ｍｓ）からのオフセット時間を含む。図８に示す例では、実行データ２１１は０ｍｓのオフセット時間が設定され、実行データ２１２は２００ｍｓのオフセット時間が設定され、実行データ２１３は３３０ｍｓのオフセット時間が設定され、実行データ２１４は１７０ｍｓのオフセット時間が設定される。なお、各実行データ２１１〜２１４のオフセット時間は、入出力インターフェース部３１を介してユーザにより入力される。
【００６１】
図９は、図４に示した制御ループの実行タイミングを説明する図である。図４に示した制御ループ１３２の実行周期が２０００ｍｓの場合、図１に示した設定部３３は、図９に示すように、スケジュール２００を構成するサブスケジュール２２０の周期として、制御ループ１３２の実行周期と同じ２０００ｍｓを設定する。これにより、スケジュール２００においてサブスケジュール２１０が２回実行される。なお、制御ループ１３２の実行周期は、図１に示した入出力インターフェース部３１を介してユーザにより入力される。次に、図１に示した実行データ生成部３４は、制御ループ１３２に対してサブスケジュール２２０を割り当てる。また、制御ループ１３２を構成するＡＩ機能ブロック（ＡＩ２）１３ｄ、ＰＩＤ機能ブロック（ＰＩＤ２）１３ｅ、及びＡＯ機能ブロック（ＡＯ２）１３ｆを、サブスケジュール２２０においてそれぞれ１回実行させるために、実行データ生成部３４は、実行データ２２１、２２２、２２３を生成する。さらに、実行データ生成部３４は、図４に示したＡＩ機能ブロック（ＡＩ２）１３ｄとＰＩＤ機能ブロック（ＰＩＤ２）１３ｅとの接続は、異なる装置、すなわち、図２に示したように、フィールド装置１１Ｃの機能ブロックとフィールド装置１１Ｄの機能ブロックとの接続なので、ＡＩ機能ブロック（ＡＩ２）１３ｄの出力をＰＩＤ機能ブロック（ＰＩＤ２）１３ｆに入力させるために、セグメント１０における通信（Ｃ２）１３２ａを実行させる実行データ２２４を生成する。これにより、サブスケジュール２２０において制御ループ１３２が１回実行される。
【００６２】
生成された各実行データ２２１〜２２４は、サブスケジュール２２０において所定のタイミングで実行するために、基準時間（図９において０ｍｓ又は２０００ｍｓ）からのオフセット時間を含む。図９に示す例では、実行データ２２１は０ｍｓのオフセット時間が設定され、実行データ２２２は１４０ｍｓのオフセット時間が設定され、実行データ２２３は２７０ｍｓのオフセット時間が設定され、実行データ２１４は１１０ｍｓのオフセット時間が設定される。なお、各実行データ２２１〜２２４のオフセット時間は、入出力インターフェース部３１を介してユーザにより入力される。
【００６３】
図１０は、図５に示した制御ループの実行タイミングを説明する図である。図５に示した制御ループ１３３の実行周期が１０００ｍｓの場合、図１に示した設定部３３は、図１０に示すように、スケジュール２００を構成するサブスケジュール２３０の周期として、制御ループ１３３の実行周期と同じ１０００ｍｓを設定する。これにより、スケジュール２００においてサブスケジュール２１０が４回実行される。なお、制御ループ１３３の実行周期は、図１に示した入出力インターフェース部３１を介してユーザにより入力される。次に、図１に示した実行データ生成部３４は、制御ループ１３３に対してサブスケジュール２３０を割り当てる。また、制御ループ１３３を構成するＡＩ機能ブロック（ＡＩ３）１３ｇ、ＰＩＤ機能ブロック（ＰＩＤ３）１３ｈ、及びＡＯ機能ブロック（ＡＯ３）１３ｉを、サブスケジュール２３０においてそれぞれ１回実行させるために、実行データ生成部３４は、実行データ２３１、２３２、２３３を生成する。さらに、図５に示したＡＩ機能ブロック（ＡＩ３）１３ｇとＰＩＤ機能ブロック（ＰＩＤ３）１３ｈとの接続は、異なる装置、すなわち、図２に示したように、フィールド装置１１Ｅの機能ブロックとフィールド装置１１Ｆの機能ブロックとの接続なので、ＡＩ機能ブロック（ＡＩ３）１３ｇの出力をＰＩＤ機能ブロック（ＰＩＤ３）１３ｈに入力させるために、実行データ生成部３４は、セグメント１０における通信（Ｃ３）１３３ａを実行させる実行データ２３４を生成する。これにより、サブスケジュール２３０において制御ループ１３３が１回実行される。
【００６４】
生成された各実行データ２３１〜２３４は、サブスケジュール２３０において所定のタイミングで実行するために、基準時間（図１０において０ｍｓ、１０００ｍｓ、２０００ｍｓ、又は３０００ｍｓ）からのオフセット時間を含む。図１０に示す例では、実行データ２３１は０ｍｓのオフセット時間が設定され、実行データ２３２は１１０ｍｓのオフセット時間が設定され、実行データ２３３は２４０ｍｓのオフセット時間が設定され、実行データ２３４は８０ｍｓのオフセット時間が設定される。なお、各実行データ２３１〜２３４のオフセット時間は、入出力インターフェース部３１を介してユーザにより入力される。
【００６５】
図１１は、図６に示した制御ループの実行タイミングを説明する図である。図６に示した制御ループ１３４の実行周期が８００ｍｓの場合、図１に示した設定部３３は、図１１に示すように、スケジュール２００を構成するサブスケジュール２４０の周期として、制御ループ１３３の実行周期と同じ８００ｍｓを設定する。これにより、スケジュール２００においてサブスケジュール２１０が５回実行される。なお、制御ループ１３４の実行周期は、図１に示した入出力インターフェース部３１を介してユーザにより入力される。次に、図１に示した実行データ生成部３４は、制御ループ１３４に対してサブスケジュール２４０を割り当てる。また、制御ループ１３４を構成するＡＩ機能ブロック（ＡＩ４）１３ｊ、ＰＩＤ機能ブロック（ＰＩＤ４）１３ｋ、及びＡＯ機能ブロック（ＡＯ４）１３ｌを、サブスケジュール２４０においてそれぞれ１回実行させるために、実行データ生成部３４は、実行データ２４１、２４２、２４３を生成する。また、図６に示したＡＩ機能ブロック（ＡＩ４）１３ｊとＰＩＤ機能ブロック（ＰＩＤ４）１３ｋとの接続は、異なる装置、すなわち、図２に示すように、フィールド装置１１Ｇの機能ブロックとフィールド装置１１Ｈの機能ブロックとの接続なので、ＡＩ機能ブロック（ＡＩ４）１３ｊの出力をＰＩＤ機能ブロック（ＰＩＤ４）１３ｋに入力させるために、実行データ生成部３４は、セグメント１０における通信（Ｃ４）１３４ａを実行させる実行データ２４４を生成する。これにより、サブスケジュール２４０において制御ループ１３４が１回実行される。
【００６６】
生成された各実行データ２４１〜２４４は、サブスケジュール２４０において所定のタイミングで実行するために、基準時間（図１１において０ｍｓ、８００ｍｓ、１６００ｍｓ、２４００ｍｓ、又は３２００ｍｓ）からのオフセット時間を含む。図１１に示す例では、実行データ２４１は０ｍｓのオフセット時間が設定され、実行データ２４２は１７０ｍｓのオフセット時間が設定され、実行データ２４３は３００ｍｓのオフセット時間が設定され、実行データ２４４は１４０ｍｓのオフセット時間が設定される。なお、各実行データ２４１〜２４４のオフセット時間は、入出力インターフェース部３１を介してユーザにより入力される。
【００６７】
図７に示した制御ループ１３５の実行周期が５００ｍｓの場合、設定されたサブスケジュール２１０〜２４０の数が設定最大値（「４」）に達しているため、従来は、制御ループ１３５の実行をスケジューリングできないか、又は、設定された４つのサブスケジュール２１０〜２４０の周期のうち、最も近い周期、例えば８００ｍｓに、制御ループ１３５の実行周期を変更する等の対応が取られていた。
【００６８】
図１２は、図７に示した制御ループの実行タイミングを説明する図である。これに対し、設定されたサブスケジュール２１０〜２４０の数が設定最大値（「４」）に達している場合であって、制御ループ１３５の実行周期と同じ周期を有するサブスケジュール２１０〜２４０が存在しない場合、図１に示した実行データ作成部３４は、図１２に示すように、制御ループ１３５の実行周期のｉ倍（ｉは２以上の整数）の周期を有するサブスケジュール、例えば２倍の周期を有するサブスケジュール２３０を制御ループ１３５に対して割り当てる。なお、制御ループ１３５の実行周期は、図１に示した入出力インターフェース部３１を介してユーザにより入力される。また、制御ループ１３５を構成するＡＩ機能ブロック（ＡＩ５）１３ｍ、ＰＩＤ機能ブロック（ＰＩＤ５）１３ｎ、及びＡＯ機能ブロック（ＡＯ５）１３ｏを、サブスケジュール２３０においてそれぞれｉ回、すなわち２回実行させるために、実行データ作成部３４は、実行データ２３５ａ、２３６ａ、２３７ａと、実行データ２３５ｂ、２３６ｂ、２３７ｂと、を生成する。また、図７に示したＡＩ機能ブロック（ＡＩ５）１３ｍとＰＩＤ機能ブロック（ＰＩＤ５）１３ｎとの接続は、異なる装置、すなわち、図２に示すように、フィールド装置１１Ｉの機能ブロックとフィールド装置１１Ｊの機能ブロックとの接続なので、ＡＩ機能ブロック（ＡＩ５）１３ｍの出力をＰＩＤ機能ブロック（ＰＩＤ５）１３ｎに入力させるために、スケジュール作成装置３０はセグメント１０における通信（Ｃ５）１３５ａを２回実行する実行データ２３８ａ及び実行データ２３８ｂを生成する。このように、サブスケジュール２３０において制御ループ１３５を実行させる、実行データ２３５ａ，２３６ａ，２３７ａ，２３８ａと、実行データ２３５ｂ，２３６ｂ，２３７ｂ，２３８ｂとの２個の実行データを生成することにより、１０００ｍｓの周期を有するサブスケジュール２３０において、制御ループ１３５を１０００ｍｓ／２、すなわち５００ｍｓの実行周期で２回実行させることが可能となる。
【００６９】
なお、前述したように、制御ループ１３５の実行周期のｉ倍（ｉは２以上の整数）の周期を有し、それぞれの周期が相互に異なる複数のサブスケジュール２１０，２２０，２３０が設定されている場合に、実行データ作成部３４は、最短の周期を有するサブスケジュール２３０において実行データをｉ個、すなわち２個生成することが好ましい。これにより、例えば、最長の周期を有するサブスケジュール２１０において実行データを生成する場合、制御ループを８回実行させる必要があるため、８個の実行データを生成するのに対し、最短の周期を有するサブスケジュール２３０において実行データを生成すると２個の実行データで済み、生成する実行データの数を減少させることができる。
【００７０】
生成された各実行データ２３５ａ、２３６ａ、２３７ａ、２３８ａは、サブスケジュール２３０において所定のタイミングで実行するために、基準時間（図１２において０ｍｓ、１０００ｍｓ、２０００ｍｓ、又は３０００ｍｓ）からのオフセット時間を含む。図１２に示す例では、実行データ２３５ａは０ｍｓのオフセット時間が設定され、実行データ２３６ａは２３０ｍｓのオフセット時間が設定され、実行データ２３７ａは３６０ｍｓのオフセット時間が設定され、実行データ２３８ａは２００ｍｓのオフセット時間が設定される。なお、各実行データ２３５ａ、２３６ａ、２３７ａ、２３８ａのオフセット時間は、入出力インターフェース部３１を介してユーザにより入力される。また、生成された各実行データ２３５ｂ、２３６ｂ、２３７ｂ、２３８ｂは、サブスケジュール２３０において所定のタイミングで実行するために、基準時間（図１２において０ｍｓ、１０００ｍｓ、２０００ｍｓ、又は３０００ｍｓ）からのオフセット時間を含む。図１２に示す例では、実行データ２３５ｂは５００ｍｓのオフセット時間が設定され、実行データ２３６ｂは７３０ｍｓのオフセット時間が設定され、実行データ２３７ｂは８６０ｍｓのオフセット時間が設定され、実行データ２３８ｂは７００ｍｓのオフセット時間が設定される。なお、各実行データ２３５ｂ、２３６ｂ、２３７ｂ、２３８ｂのオフセット時間は、入出力インターフェース部３１を介してユーザにより入力されたオフセット時間に、制御ループ１３５の実行周期を加算して算出する。このように、２個の実行データ２３５ａ、２３６ａ、２３７ａ、２３８ａ、２３５ｂ、２３６ｂ、２３７ｂ、２３８ｂを生成する際に、それぞれのオフセット時間の間隔を実行周期、すなわち５００ｍｓに設定することで、容易に当該サブスケジュール２３０において制御ループ１３５を２回実行させることができる。
【００７１】
図１に示したスケジュールプログラム作成部３５は、サブスケジュール２１０〜２４０ごとに作成された実行データをマージしてスケジュールプログラム３２ｃを作成する。図１に示したデータロード部３６は、作成されたスケジュールプログラム３２ｃと、記憶部３２のマクロサイクルデータ３２ａ及びサブスケジュールデータ３２ｂを、図１に示したコントローラ２０及びフィールドバスＦを介してリンクマスタデバイス１２に送信（ロード）する。これにより、リンクマスタデバイス１２は、スケジュール作成装置３０により作成されたスケジュールプログラム３２ｃを実行することができる。
【００７２】
次に、図１３を参照しながらスケジュール作成方法及びスケジュール作成プログラムについて説明する。図１３は、図１に示したスケジュール作成装置の動作を説明するフローチャートである。ユーザの操作により制御ループが作成され、図１に示した入出力インターフェース部３１を介して制御ループの実行周期が入力されると、図１に示したスケジュール作成装置３０は、処理Ｓ３００を開始する。すなわち、図１３に示すように、図１に示す設定部３３は、図１に示した記憶部３２からサブスケジュールデータ３２ｂを読み出し、入力された制御ループの実行周期の数（種類）が、サブスケジュールの設定可能最大数より大きいか否かを判定する（Ｓ３０１）。なお、制御ループの実行周期の数とは、その種類の数を意味し、例えば、４つの制御ループが全て同じ実行周期を有する場合、制御ループの実行周期の数は「４」であるが、その種類数は１つであるため、設定部３３は、制御ループの実行周期の数（種類）を「１」として判定する。
【００７３】
Ｓ３０１の判定の結果、入力された制御ループの実行周期の数（種類）がサブスケジュールの設定可能最大数より大きい場合、設定部３３は、入力された制御ループの実行周期に基づいて、設定可能最大数までサブスケジュールの周期を設定し（Ｓ３０２）、記憶部３２にサブスケジュールデータ３２ｂを書き込む（更新する）。一方、Ｓ３０１の判定の結果、入力された制御ループの実行周期の数（種類）がサブスケジュールの設定可能最大数より大きくない場合、設定部３３は、入力された制御ループの実行周期に基づいて、サブスケジュールの周期を設定し（Ｓ３０３）、記憶部３２にサブスケジュールデータ３２ｂを書き込む（更新する）。なお、設定部３３は、Ｓ３０２又はＳ３０２において、同時に、設定された複数のサブスケジュールの周期における最小公倍数をマクロサイクルとして設定し、マクロサイクルデータ３２ａを更新するようにしてもよい。
【００７４】
図８乃至図１２に示した例の場合、サブスケジュールの設定最大値が「４」に対して、形成された制御ループ１３１〜１３５の実行周期は５つ（５種類）であるから、Ｓ３０２において、設定部３３は、例えば、実行周期の長い順、又は実行周期の入力順に、サブスケジュール２１０〜２４０の周期として、４０００ｍｓ、２０００ｍｓ、１０００ｍｓ、８００ｍｓを設定する。また、設定部３３は、マクロサイクル（スケジュール２００の周期）として、最小公倍数である４０００ｍｓを設定する。
【００７５】
本実施形態では、入力された制御ループの実行周期に基づいて、Ｓ３０２又はＳ３０３において、サブスケジュールの周期、およびマクロサイクルを自動的に設定するようにしたが、これに限定されない。例えば、あらかじめ、サブスケジュールの周期、及びマクロサイクルをユーザが入力して手動で設定しておいてもよい。この場合、処理Ｓ３００は、次のＳ３０４から開始する。
【００７６】
Ｓ３０２又はＳ３０３の後、図１に示した実行データ作成部３４は、記憶部３２からサブスケジュールデータ３２ｂを読み出し、入力された制御ループの実行周期と設定された各サブスケジュールの周期とに基づいて、各制御ループに対してサブスケジュールを割り当て可能か否か判定する（Ｓ３０４）。具体的には、実行データ作成部３４は、制御ループの実行周期と同じ周期を有するサブスケジュールが設定されている場合、又は制御ループの実行周期のｉ倍（ｉは２以上の整数）の周期を有するサブスケジュールが設定されている場合に、サブスケジュールを割り当て可能であると判定する。一方、実行データ作成部３４は、その他の場合、すなわち、制御ループの実行周期と同じ周期を有するサブスケジュールが設定されていない場合であって、制御ループの実行周期のｉ倍（ｉは２以上の整数）の周期を有するサブスケジュールが設定されていない場合に、サブスケジュールを割り当て可能ではない（割り当て不能）と判定する。
【００７７】
Ｓ３０４の判定の結果、サブスケジュールを割り当て可能である場合、実行データ作成部３４は、記憶部３２からサブスケジュールデータ３２ｂを読み出して、形成された制御ループに対してサブスケジュールを割り当てるとともに、入出力インターフェース部３１を介して入力されたオフセット時間に基づいて、制御ループごとに、各機能ブロック及び通信の実行データを生成する（Ｓ３０５）。一方、Ｓ３０４の判定の結果、サブスケジュールを割り当て不能である場合、実行データ作成部３４は、入出力インターフェース部を介してエラーを出力し（Ｓ３０６）、スケジュール作成装置３０は処理Ｓ３００を終了する。
【００７８】
なお、Ｓ３０６において、エラーを出力する前に、実行データ作成部３４は、入力された制御ループの実行周期を、設定されているサブスケジュールの周期に基づく周期に変更するか否かを問うようにしてもよい。例えば、サブスケジュールの周期として、４０００ｍｓ、２０００ｍｓ、１０００ｍｓ、８００ｍｓが設定されており、入力された制御ループの実行周期が５０１ｍｓである場合、制御ループの実行周期が５００ｍｓであれば、周期が１０００ｍｓのサブスケジュールを割り当て可能であるから、実行データ作成部３４は、入出力インターフェース部３１を介して、制御ループの実行周期を５００ｍｓに変更するか否かを問うメッセージを出力する。この場合、入力された制御ループの実行周期が５００ｍｓに変更されたときには、エラーを出力することなく、実行データ作成部３４は、Ｓ３０５のステップを行う。
【００７９】
図３乃至図６及び図８乃至図１１に示した制御ループ１３１〜１３４の例の場合、実行データ作成部３４は、Ｓ３０４で、各制御ループ１３１〜１３４に対して、同じ周期を有するサブスケジュール２１０〜２４０をそれぞれ割り当てる。次に、実行データ作成部３４は、Ｓ３０５で、スケジュール２１０において制御ループ１３１の実行データ２１１〜２１４を、スケジュール２２０において制御ループ１３２の実行データ２２１〜２２４を、スケジュール２３０において制御ループ１３３の実行データ２３１〜２３４を、スケジュール２４０において制御ループ１３４の実行データ２４１〜２４４を、それぞれ生成する。
【００８０】
また、図７及び図１２に示した制御ループ１３５の例の場合、実行データ作成部３４は、Ｓ３０４で、設定されている複数のサブスケジュール２１０〜２４０の中から、制御ループ１３５の実行周期のｉ倍（ｉは２以上の整数）の周期を有するサブスケジュールを検索する。この場合、実行データ作成部３４は、２倍の周期を有するサブスケジュール２３０と、４倍の周期を有するサブスケジュール２２０と、８倍の周期を有するサブスケジュール２１０とを検出する。ここで、実行データ作成部３４は、最短の周期を有するサブスケジュール２３０を制御ループ１３５に対して割り当てる。次に、実行データ作成部３４は、割り当てられたスケジュール２３０において制御ループ１３５を実行させる、実行データ２３５ａ、２３６ａ、２３７ａ、２３８ａと、実行データ２３５ｂ、２３６ｂ、２３７ｂ、２３８ｂとの２個生成する。これにより、１０００ｍｓの周期を有するサブスケジュール２３０において、制御ループ１３５を１０００ｍｓ／２、すなわち５００ｍｓの実行周期で２回実行させることが可能となる。
【００８１】
実行データ作成部３４により生成される、実行データ２３５ａ、２３６ａ、２３７ａ、２３８ａ、２３５ｂ、２３６ｂ、２３７ｂ、２３８ｂは、サブスケジュール２３０の開始時間を基準とするオフセット時間を含むことが好ましい。これにより、２個の実行データ２３５ａ、２３６ａ、２３７ａ、２３８ａ、２３５ｂ、２３６ｂ、２３７ｂ、２３８ｂを生成する際に、それぞれのオフセット時間の間隔を実行周期、すなわち５００ｍｓに設定することで、容易に当該サブスケジュール２３０において制御ループ１３５を２回実行させることができる。
【００８２】
なお、前述したように、制御ループ１３５の実行周期のｉ倍（ｉは２以上の整数）の周期を有し、それぞれの周期が相互に異なる複数のサブスケジュール２１０，２２０，２３０が設定され、サブスケジュールデータ３２ｂとして記憶部３２に記憶されている場合に、実行データ作成部３４は、最短の周期を有するサブスケジュール２３０において実行データをｉ個、すなわち２個生成することが好ましい。これにより、例えば、最長の周期を有するサブスケジュール２１０において実行データを生成する場合、制御ループを８回実行させる必要があるため、８個の実行データを生成するのに対し、最短の周期を有するサブスケジュール２３０において実行データを生成すると２個の実行データで済み、生成する実行データの数を減少させることができる。
【００８３】
Ｓ３０５の後、スケジュールプログラム作成部３５は、サブスケジュールごとに作成された実行データをマージしてスケジュールプログラム３２ｃを作成し（Ｓ３０６）、記憶部３２にスケジュールプログラム３２ｃを書き込む。
【００８４】
Ｓ３０６の後、データロード部３６は、記憶部３２からマクロサイクルデータ３２ａ、サブスケジュールデータ３２ｂ、及びスケジュールプログラム３２ｃを読み出し、図１に示したコントローラ２０及びフィールドバスＦを介してリンクマスタデバイス１２に送信（ロード）し（Ｓ３０７）、スケジュール作成装置３０は処理Ｓ３００を終了する。これにより、リンクマスタデバイス１２は、スケジュール作成方法又はスケジュール作成プログラムにより作成されたスケジュールを実行することが可能となる。
【００８５】
送信（ロード）されたマクロサイクルデータ３２ａ、サブスケジュールデータ３２ｂ、及びスケジュールプログラム３２ｃは、それぞれマクロサイクルデータ１２２ａ、サブスケジュールデータ１２２ｂ、スケジュールプログラム１２２ｃとして、記憶部１２２に記憶される。これにより、スケジュールプログラム３２ｃに基づいて、リンクマスタデバイス１２のＬＡＳ部１２１は、セグメント１０における周期的動作を制御することができる。
【００８６】
本実施形態では、スケジュール作成装置３０がスケジュールプログラム３２ｃを作成するようにしたが、これに限定されない。リンクマスタデバイス１２に送信（ロード）可能である限り、他の装置、例えば、コントローラ２０やリンクマスタデバイス１２自身であってもよい。また、スケジュールプログラム３２ｃを作成するのは、装置、すなわちハードウエアに限定されず、ハードウエアが実行するソフトウエア（プログラム）であってもよい。さらに、スケジュールプログラム３２ｃはソースプログラムであってもオブジェクトプログラムであってもよい。また、作成されるスケジュールは、スケジュールプログラム３２ｃのようにプログラム形式でなくても、データ形式やファイル形式であってもよい。
【００８７】
このように、本実施形態におけるスケジュール作成装置３０によれば、制御ループ１３５の実行周期のｉ倍（ｉは２以上の整数）の周期を有するサブスケジュール２３０が設定されている場合に、当該サブスケジュール２３０において当該制御ループ１３５を実行させる、実行データ２３５ａ、２３６ａ、２３７ａ、２３８ａと、実行データ２３５ｂ、２３６ｂ、２３７ｂ、２３８ｂとの２個生成する。これにより、１０００ｍｓの周期を有するサブスケジュール２３０において、制御ループ１３５を１０００ｍｓ／２、すなわち５００ｍｓの実行周期で２回実行させることが可能となる。これにより、制御ループの実行周期の数（種類）が、サブスケジュールの設定可能最大数より大きい場合でも、制御ループの実行周期のｉ倍の周期を有するサブスケジュールが設定されている場合に、当該制御ループを所望の実行周期で実行させることができる。
【００８８】
また、本実施形態におけるスケジュール作成装置３０によれば、実行データ２３５ａ、２３６ａ、２３７ａ、２３８ａ、２３５ｂ、２３６ｂ、２３７ｂ、２３８ｂは、サブスケジュール２３０の開始時間を基準とするオフセット時間を含む。これにより、２個の実行データ２３５ａ、２３６ａ、２３７ａ、２３８ａ、２３５ｂ、２３６ｂ、２３７ｂ、２３８ｂを生成する際に、それぞれのオフセット時間の間隔を実行周期、すなわち５００ｍｓに設定することで、容易に当該サブスケジュール２３０において制御ループ１３５を２回実行させることができる。
【００８９】
また、本実施形態におけるスケジュール作成装置３０によれば、制御ループ１３５の実行周期のｉ倍（ｉは２以上の整数）の周期を有し、それぞれの周期が相互に異なる複数のサブスケジュール２１０，２２０，２３０が設定されている場合に、当該複数のサブスケジュール２１０，２２０，２３０のうちの最短の周期を有するサブスケジュール２３０において２個の実行データ２３５ａ、２３６ａ、２３７ａ、２３８ａ、２３５ｂ、２３６ｂ、２３７ｂ、２３８ｂを生成する。これにより、例えば、最長の周期を有するサブスケジュール２１０において実行データを生成する場合、制御ループ１３５を８回実行させる必要があるため、８個の実行データを生成するのに対し、最短の周期を有するサブスケジュール２３０において実行データを生成すると２個の実行データで済み、生成する実行データの数を減少させることができる。これにより、作成するスケジュールプログラム３２ｃのサイズ等を小さくすることができる。
【００９０】
また、本実施形態におけるスケジュール作成装置３０によれば、制御ループ１３１〜１３５の動作タイミングを制御するリンクマスタデバイス１２に、フィールドバスＦを介してスケジュールプログラム３２ｃを送信するデータロード部３６を更に備える。これにより、リンクマスタデバイス１２は、スケジュール作成装置３０により作成されたスケジュールプログラム３２ｃを実行することができる。
【００９１】
また、本実施形態におけるスケジュール作成方法及びスケジュール作成プログラムによれば、制御ループ１３５の実行周期のｉ倍（ｉは２以上の整数）の周期を有するサブスケジュール２３０が設定されている場合に、実行データ生成部３４が、当該サブスケジュール２３０において当該制御ループ１３５を実行させる、実行データ２３５ａ、２３６ａ、２３７ａ、２３８ａと、実行データ２３５ｂ、２３６ｂ、２３７ｂ、２３８ｂとの２個生成するステップを備える。これにより、１０００ｍｓの周期を有するサブスケジュール２３０において、制御ループ１３５を１０００ｍｓ／２、すなわち５００ｍｓの実行周期で２回実行させることが可能となる。これにより、制御ループの実行周期の数（種類）が、サブスケジュールの設定可能最大数より大きい場合でも、制御ループの実行周期のｉ倍の周期を有するサブスケジュールが設定されている場合に、当該制御ループを所望の実行周期で実行させることができる。
【００９２】
また、本実施形態におけるスケジュール作成方法及びスケジュール作成プログラムによれば、実行データ２３５ａ、２３６ａ、２３７ａ、２３８ａ、２３５ｂ、２３６ｂ、２３７ｂ、２３８ｂは、サブスケジュール２３０の開始時間を基準とするオフセット時間を含む。これにより、２個の実行データ２３５ａ、２３６ａ、２３７ａ、２３８ａ、２３５ｂ、２３６ｂ、２３７ｂ、２３８ｂを生成する際に、それぞれのオフセット時間の間隔を実行周期、すなわち５００ｍｓに設定することで、容易に当該サブスケジュール２３０において制御ループ１３５を２回実行させることができる。
【００９３】
また、本実施形態におけるスケジュール作成方法及びスケジュール作成プログラムによれば、制御ループ１３５の実行周期のｉ倍（ｉは２以上の整数）の周期を有し、それぞれの周期が相互に異なる複数のサブスケジュール２１０，２２０，２３０が設定されている場合に、実行データ生成部３４が、当該複数のサブスケジュール２１０，２２０，２３０のうちの最短の周期を有するサブスケジュール２３０において２個の実行データ２３５ａ、２３６ａ、２３７ａ、２３８ａ、２３５ｂ、２３６ｂ、２３７ｂ、２３８ｂを生成する。これにより、例えば、最長の周期を有するサブスケジュール２１０において実行データを生成する場合、制御ループ１３５を８回実行させる必要があるため、８個の実行データを生成するのに対し、最短の周期を有するサブスケジュール２３０において実行データを生成すると２個の実行データで済み、生成する実行データの数を減少させることができる。これにより、作成するスケジュールプログラム３２ｃのサイズ等を小さくすることができる。
【００９４】
また、本実施形態におけるスケジュール作成方法及びスケジュール作成プログラムによれば、制御ループ１３１〜１３５の動作タイミングを制御するリンクマスタデバイス１２に、データロード部３６が、フィールドバスＦを介してスケジュールプログラム３２ｃを送信するステップを更に備える。これにより、リンクマスタデバイス１２は、スケジュール作成方法又はスケジュール作成プログラムにより作成されたスケジュールプログラム３２ｃを実行することができる。
【００９５】
［第２実施形態］
図１４及び図１５は、本発明の第２実施形態を示すためのものである。なお、特に記載がない限り、前述した実施形態と同一構成部分は同一符号をもって表し、その説明を省略する。また、図示しない構成部分は、前述した実施形態と同様とする。
【００９６】
図１４は、本発明の第２実施形態におけるフィールド機器管理システムの概略構成を説明するブロック図である。図１４に示すように、セグメント１０は、第１実施形態のリンクマスタデバイス１２と同様の構成を有する、複数のリンクマスタデバイス１２Ａ、１２Ｂ、１２Ｃとを備える。
【００９７】
各リンクマスタデバイス１２Ａ、１２Ｂ、１２Ｃには、設定可能なサブスケジュールの数の最大値、すなわち設定可能最大数が定められている。各リンクマスタデバイス１２Ａ、１２Ｂ、１２Ｃの記憶部１２２Ａ、１２２Ｂ、１２２Ｃには、それぞれの設定可能最大数が記憶されている。各リンクマスタデバイス１２Ａ、１２Ｂ、１２Ｃの設定可能最大数は、リンクマスタデバイスの能力（性能）に依存し、マルチベンダ対応のフィールドバスＦにおいては、各リンクマスタデバイス１２Ａ、１２Ｂ、１２Ｃによって設定可能最大数が異なる場合がある。以下の説明において、特に記載した場合を除き、設定可能最大数として、リンクマスタデバイス１２Ａに「４」、リンクマスタデバイス１２Ｂに「３」、リンクマスタデバイス１２Ｃに「２」が、記憶されているものとする。
【００９８】
セグメント１０に複数のリンクマスタデバイス１２Ａ、１２Ｂ、１２Ｃが存在する場合、セグメント１０において作動しているリンクマスタデバイスは１つであるが、何らかの理由で当該リンクマスタデバイスの動作が停止した場合に、待機している他のリンクマスタデバイスに自動的に切り替わり、セグメント１０におけるスケジュールの実行を継続するようになっている。例えば、各リンクマスタデバイス１２Ａ、１２Ｂ、１２Ｃの設定可能最大数が全て「２」の場合、作動中のリンクマスタデバイス１２Ａが停止したときに、リンクマスタデバイス１２Ｂ又はリンクマスタデバイス１２Ｃに切り替わり、スケジュールの実行を継続する。
【００９９】
スケジュール作成装置３０Ａは、設定可能最大数取得部３７を備える。設定可能最大数取得部３７は、フィールドバスＦ及びコントローラ２０を介して各リンクマスタデバイス１２Ａ、１２Ｂ、１２Ｃから設定可能最大数を取得する。設定可能最大数取得部３７は、例えば、セグメント１０に新たなリンクマスタデバイスが接続（設置）されたときに、設定可能最大数を取得する。
【０１００】
設定部３３は、入出力インターフェース部３１を介して入力される制御ループの実行周期と、設定可能最大数取得部３７により取得された複数の設定可能最大数のうちの最小値と、に基づいて、複数のサブスケジュールを設定する。
【０１０１】
前述の例では、リンクマスタデバイス１２Ｃに記憶された設定可能最大数「２」が最小値であるため、設定部３３は、２つのサブスケジュールを設定する。これにより、セグメント１０における全てのリンクマスタデバイス１２Ａ、１２Ｂ、１２Ｃが設定可能な数のサブスケジュールが設定される。
【０１０２】
データロード部３６は、スケジュールプログラム作成部３５により作成されたスケジュールプログラム３２ｃを含むデータを、フィールドバスＦを介して各リンクマスタデバイス１２Ａ、１２Ｂ、１２Ｃに送信する。
【０１０３】
次に、図１５を参照しながらスケジュール作成方法及びスケジュール作成プログラムについて説明する。図１５は、図１４に示したスケジュール作成装置の動作を説明するフローチャートである。図１３に示した処理Ｓ３００を実行する前に、図１４に示したスケジュール作成装置３０Ａは、処理Ｓ４００を開始する。すなわち、設定可能最大数取得部３７は、フィールドバスＦ及びコントローラ２０を介して各リンクマスタデバイス１２Ａ、１２Ｂ、１２Ｃに設定可能最大数の問い合わせ制御信号を送信し、各リンクマスタデバイス１２Ａ、１２Ｂ、１２Ｃから設定可能最大数を取得する（Ｓ４０１）。
【０１０４】
次に、設定可能最大数取得部３７は、各リンクマスタデバイス１２Ａ、１２Ｂ、１２Ｃから設定可能最大数を受信し、取得済であるか否かを判定する（Ｓ４０２）。なお、設定可能最大数取得部３７は、全てのリンクマスタデバイス１２Ａ、１２Ｂ、１２Ｃから設定可能最大数を受信した場合に取得済であると判定し、全てのリンクマスタデバイス１２Ａ、１２Ｂ、１２Ｃのうち１つでも設定可能最大数を受信していない場合には取得済でないと判定する。
【０１０５】
Ｓ４０２の判定の結果、各リンクマスタデバイス１２Ａ、１２Ｂ、１２Ｃから設定可能最大数を取得済である場合、設定可能最大数取得部３７は、各リンクマスタデバイス１２Ａ、１２Ｂ、１２Ｃから取得した設定可能最大数のうちの最小値を決定し（Ｓ４０３）、当該最小値を設定可能最大数として、記憶部３２にサブスケジュールデータ３２ｂを書き込む（更新する）。Ｓ４０３の後、スケジュール作成装置３０Ａは処理Ｓ４００を終了する。一方、Ｓ４０２の判定の結果、各リンクマスタデバイス１２Ａ、１２Ｂ、１２Ｃから設定可能最大数を取得済でない場合、設定可能最大数取得部３７は、所定時間経過後に、再度Ｓ４０１を行う。
【０１０６】
処理Ｓ４００の後、図１３に示した処理Ｓ３００において、設定部３３は、Ｓ３０１において記憶部３２からサブスケジュールデータ３２ｂを読み出し、Ｓ３０２においてＳ４０３で決定した設定可能最大数までサブスケジュールの周期を設定する。また、データロード部３６は、Ｓ３０７において、記憶部３２からマクロサイクルデータ３２ａ、サブスケジュールデータ３２ｂ、及びスケジュールプログラム３２ｃを読み出し、コントローラ２０及びフィールドバスＦを介して各リンクマスタデバイス１２Ａ、１２Ｂ、１２Ｃに送信（ロード）する。
【０１０７】
前述の例では、Ｓ４０１及びＳ４０２において、設定可能最大数取得部３７は、リンクマスタデバイス１２Ａから設定可能最大数「４」を、リンクマスタデバイス１２Ｂから設定可能最大数「３」を、リンクマスタデバイス１２Ｃから設定可能最大数「２」を、それぞれ取得する。Ｓ４０３において、設定可能最大数取得部３７は、リンクマスタデバイス１２Ｃから取得した設定可能最大数「２」が最小値であるため、設定可能最大数として「２」を記憶部３２のサブスケジュールデータ３２ｂに書き込む（更新する）。次に、設定部３３は、Ｓ３０２において２つのサブスケジュールを設定する。これにより、セグメント１０における全てのリンクマスタデバイス１２Ａ、１２Ｂ、１２Ｃが設定可能な数のサブスケジュールが設定される。
【０１０８】
本実施形態では、設定可能最大数取得部３７が各リンクマスタデバイス１２Ａ、１２Ｂ、１２Ｃから設定可能最大数を取得するようにしたが、これに限定されない。例えば、フィールドバスＦに接続される他の機器に、各リンクマスタデバイス１２Ａ、１２Ｂ、１２Ｃの設定可能最大数を記憶しておき、設定可能最大数取得部３７は、当該機器に記憶された各リンクマスタデバイス１２Ａ、１２Ｂ、１２Ｃの設定可能最大数を取得するようにしてもよい。
【０１０９】
このように、本実施形態におけるスケジュール作成装置３０Ａによれば、フィールドバスＦのセグメント１０にリンクマスタデバイス１２Ａ、１２Ｂ、１２Ｃが複数存在する場合に、フィールドバスＦを介して各リンクマスタデバイス１２Ａ、１２Ｂ、１２Ｃの設定可能最大数を取得する設定可能最大数取得部３７と、取得された各リンクマスタデバイス１２Ａ、１２Ｂ、１２Ｃの設定可能最大数のうちの最小値に基づいて、サブスケジュールを設定する設定部３３と、を備える。これにより、セグメント１０における全てのリンクマスタデバイス１２Ａ、１２Ｂ、１２Ｃが設定可能な数のサブスケジュールが設定される。これにより、セグメント１０における全てのリンクマスタデバイス１２Ａ、１２Ｂ、１２Ｃが実行可能なスケジュールプログラム３２ｃを各リンクマスタデバイス１２Ａ、１２Ｂ、１２Ｃに送信することができる。
【０１１０】
このように、本実施形態におけるスケジュール作成方法及びスケジュール作成プログラムによれば、フィールドバスＦのセグメント１０にリンクマスタデバイス１２Ａ、１２Ｂ、１２Ｃが複数存在する場合に、設定可能最大数取得部３７が、フィールドバスＦを介して各リンクマスタデバイス１２Ａ、１２Ｂ、１２Ｃの設定可能最大数を取得するステップと、設定部３３が、取得された各リンクマスタデバイス１２Ａ、１２Ｂ、１２Ｃの設定可能最大数のうちの最小値に基づいて、サブスケジュールを設定するステップと、を備える。これにより、セグメント１０における全てのリンクマスタデバイス１２Ａ、１２Ｂ、１２Ｃが設定可能な数のサブスケジュールが設定される。これにより、セグメント１０における全てのリンクマスタデバイス１２Ａ、１２Ｂ、１２Ｃが実行可能なスケジュールプログラム３２ｃを各リンクマスタデバイス１２Ａ、１２Ｂ、１２Ｃに送信することができる。
【０１１１】
なお、前述の各実施形態の構成は、組み合わせたり或いは一部の構成部分を入れ替えたりしたりしてもよい。また、本発明の構成は前述の実施形態のみに限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変更を加えてもよい。
【符号の説明】
【０１１２】
１０…セグメント、１２，１２Ａ，１２Ｂ，１２Ｃ…リンクマスタデバイス、３０，３０Ａ…スケジュール作成装置、３３…設定部、３４…実行データ生成部、３６…データロード部、３７…設定可能最大素取得部、１３１〜１３５…制御ループ、２００…スケジュール、２１０〜２４０…サブスケジュール、Ｆ…フィールドバス
【図１】
0005602643.tif 000002
【図２】
0005602643.tif 000003
【図３】
0005602643.tif 000004
【図４】
0005602643.tif 000005
【図５】
0005602643.tif 000006
【図６】
0005602643.tif 000007
【図７】
0005602643.tif 000008
【図８】
0005602643.tif 000009
【図９】
0005602643.tif 000010
【図１０】
0005602643.tif 000011
【図１１】
0005602643.tif 000012
【図１２】
0005602643.tif 000013
【図１３】
0005602643.tif 000014
【図１４】
0005602643.tif 000015
【図１５】
0005602643.tif 000016