以下に本発明の実施の形態を説明する。以下の図面の記載において、同一又は類似の部分には同一又は類似の符号で表している。但し、図面は模式的なものである。したがって、具体的な寸法などは以下の説明を照らし合わせて判断するべきものである。また、図面相互間においても互いの寸法の関係や比率が異なる部分が含まれていることは勿論である。
[第1実施形態]
図1乃至図13は、本発明の第1実施形態を示すためのものである。図1は、本発明の第1実施形態におけるフィールド機器管理システムの概略構成を説明するブロック図である。図1に示すように、フィールド機器管理システム100は、フィールドバスのセグメント(以下、単にセグメントという)10と、コントローラ20と、本発明に係るスケジュール作成装置30とを備える。
セグメント10は、複数のフィールド機器11A〜11Jと、リンクマスタデバイス12とを含む。各フィールド機器11A〜11Jと、リンクマスタデバイス12とは、フィールドバスFに接続しており、相互に通信可能となっている。
フィールドバスFは、前述の規格化(標準化)されたファウンデーションフィールドバス(Foundation fieldbus)プロトコルを、通信仕様として用いるネットワークである。また、セグメント10は、フィールドバスFの基本構成であり、1本の伝送媒体からなる1つの伝送路を意味するフィールドバス用語である。
各フィールド機器11A〜11Jは、プラント内に装備される各種の機器であり、フィールバスFを介して双方向に通信可能なフィールバス適合の機器である。各フィールド機器11A〜11Jとしては、例えば、流量センサ、圧力センサ及び温度センサ等の各種センサや、流量制御弁および圧力制御弁等のバルブ(弁)、ポンプ及びファン等のアクチュエータが該当する。
リンクマスタデバイス12は、リンクアクティブスケジューラ(Link Active Scheduler、以下LASという)機能を有するLAS部121と、記憶部122とを有する機器である。
LAS部121は、フィールドバスF上で行われる周期的通信、非周期的通信などを含む全ての通信を制御するためのネットワーク制御機能を有する。LAS部121は、例えば、周期的通信を起動するためのトリガフレームの送出、非周期的通信を行うために各フィールド機器11A〜11Jに送信許可を与えるフレームの送出などの機能を有する。なお、以下において、特に必要な場合を除き、周期的通信のみを説明し、非周期的通信については説明を省略する。
記憶部122は、メモリなどの記憶手段であり、マクロサイクルデータ122aと、サブスケジュールデータ122bと、スケジュールプログラム122cとを記憶する。
ここで、スケジュールは、後述する制御ループの周期的動作の実行タイミングを定めたものである。マクロサイクルは、スケジュールの基準周期を意味するフィールドバス用語であり、スケジュールに対して1つ設定されるものである。サブスケジュールは、制御ループを実行させる実行データを含み、複数設定されるものである。本実施形態では、スケジュールは複数のサブスケジュールを使用して実施(実行)される。
マクロサイクルデータ122aは、マクロサイクルに関する情報、例えば周期の情報を含む。サブスケジュールデータ122bは、サブスケジュールに関する情報、例えば各サブスケジュールの周期、設定可能なサブスケジュールの数の最大値(以下、設定可能最大数という)などの情報を含む。スケジュールプログラム122cは、複数のサブスケジュールをマージして作成され、制御ループの周期的動作がマクロサイクルの周期で繰り返されるようにスケジューリングされたプログラムである。LAS部121は、このスケジュールプログラム122cに基づいて、セグメント10における動作及び通信を制御している。
コントローラ20は、例えば、CPU(図示省略)、メモリなどの記憶手段(図示省略)、及びデータ通信(データ送受信)のためのインターフェース(図示省略)を備える。コントローラ20は、フィールドバスFに接続しており、各フィールド機器11A〜11J及びリンクマスタデバイス12と相互に通信可能であるとともに、スケジュール作成装置30に接続して相互に通信可能となっている。
スケジュール作成装置30は、リンクマスタデバイス12が使用するスケジュールプログラムを作成するための装置である。スケジュール作成装置30は、入出力インターフェース部31と、記憶部32と、設定部33と、実行データ生成部34と、スケジュールプログラム作成部35と、データロード部36と、を備える。
入出力インターフェース部31は、キーボードやマウスなどの入力手段と、ディスプレイやプリンタなどの出力手段との間でデータ通信(データ送受信)を行うためのものである。入出力インターフェース部31は、例えば、スケジュール作成装置30により実行されるプログラム(ソフトウエア)により、ユーザに対してGUI(Graphical User Interface)を提供するようにしてもよい。
記憶部32は、メモリなどの記憶手段であり、リンクマスタデバイス12の記憶部122と同様のマクロサイクルデータ32a、サブスケジュールデータ32b、及びスケジュールプログラム122cとを記憶する。また、記憶部32は、後述する機能ブロックに関する情報、例えば機能ブロックの定義の情報を含む機能ブロックデータ13を記憶する。
設定部33は、入出力インターフェース部31を介して入力される後述の制御ループの実行周期に基づいて、複数のサブスケジュールを設定する。
実行データ生成部34は、設定部33により設定されたサブスケジュールにおいて、制御ループを実行させる実行データを生成する。
スケジュールプログラム作成部35は、実行データ生成部34により生成された実行データを含むサブスケジュールを用いて、スケジュールプログラム32cを作成する。
データロード部36は、スケジュールプログラム作成部35により作成されたスケジュールプログラム32cを含むデータを、フィールドバスFを介してリンクマスタデバイス12に送信する。
機能ブロック(Function Block)は、制御システムを構築するに必要な単位機能を機能ブロック化したものを意味するフィールドバス用語である。具体的には、機能ブロックは、セグメント10を構成する機器、例えば、各フィールド機器11A〜11Jに実行される機能を定義したものである。機能ブロックに定義される機能は、測定値、例えば、電圧値、温度値、流量値などを各フィールド機器11A〜11Jに取得させたり、アルゴリズム又は計算、例えば、微分、積分、加算、減算、乗算、除算などを行わせたり、計装、例えばバルブ開閉、炉調整、ボイラ調整などを制御させたり、或いはその他の機能を行わせるものである。
図2は、図1に示したフィールド装置と機能ブロックとの関係を説明するブロック図である。図2に示すように、図1に示した機能ブロックデータ13は、アナログ入力(以下、AIという)機能を有するAI機能ブロック(AI1)13a、比例・積分・微分(以下、PIDという)機能を有するPID機能ブロック(PID1)13b、アナログ出力(以下、AOという)機能を有するAO機能ブロック(AO1)13c、AI機能を有するAI機能ブロック(AI2)13d、PID機能を有するPID機能ブロック(PID2)13e、AO機能を有するAO機能ブロック(AO2)13f、AI機能を有するAI機能ブロック(AI3)13g、PID機能を有するPID機能ブロック(PID3)13h、AO機能を有するAO機能ブロック(AO3)13i、AI機能を有するAI機能ブロック(AI4)13j、PID機能を有するPID機能ブロック(PID4)13k、AO機能を有するAO機能ブロック(AO4)13l、AI機能を有するAI機能ブロック(AI5)13m、PID機能を有するPID機能ブロック(PID5)13n、及びAO機能を有するAO機能ブロック(AO5)13o、の情報を含む。
AI機能ブロック(AI1)13aはフィールド機器11Aにより実行される機能を定義し、PID機能ブロック(PID1)13bとAO機能ブロック(AO1)13cとは、フィールド機器11Bにより実行される機能を定義する。AI機能ブロック(AI2)13dはフィールド機器11Cにより実行される機能を定義し、PID機能ブロック(PID2)13eとAO機能ブロック(AO2)13fとは、フィールド機器11Dにより実行される機能を定義する。AI機能ブロック(AI3)13gはフィールド機器11Eにより実行される機能を定義し、PID機能ブロック(PID3)13hとAO機能ブロック(AO3)13iとは、フィールド機器11Fにより実行される機能を定義する。AI機能ブロック(AI4)13jはフィールド機器11Gにより実行される機能を定義し、PID機能ブロック(PID4)13kとAO機能ブロック(AO4)13lとは、フィールド機器11Hにより実行される機能を定義する。AI機能ブロック(AI5)13mはフィールド機器11Iにより実行される機能を定義し、PID機能ブロック(PID5)13nとAO機能ブロック(AO5)13oは、フィールド機器11Jにより実行される機能を定義する。
なお、本実施形態では、セグメント10を構成する各フィールド機器11A〜11Jにより実行される機能ブロックのみを示したが、これに限定されず、フィールドバスFに接続される他の機器、例えば、他のセグメントを構成するフィールド機器が実行する機能を機能ブロックとして定義してもよい。
図3乃至図7は、図2に示した機能ブロックにより構成される制御ループの例を説明するイメージ図である。図3乃至図7に示すように、図2に示した各機能ブロック13a〜13oは、少なくとも1つの入力、及び/又は少なくとも1つの出力を含む。各機能ブロック13a〜13oは、例えば、入出力インターフェース部31を介するユーザの操作により、相互に接続(結合)される。このように、機能ブロックを接続(結合)することにより、スケジュールの制御対象となる制御ループが形成(構成)される。
図3に示す例では、AI機能ブロック(AI1)13aの出力は、PID機能ブロック(PID1)13bの入力に接続され、PID機能ブロック(PID1)13bの出力は、AO機能ブロック(AO1)13cの入力に接続される。また、AO機能ブロック(AO1)13cの出力は、PID機能ブロック(PID1)13bの入力に接続される。このように、AI機能ブロック(AI1)13a、PID機能ブロック(PID1)13b、及びAO機能ブロック(AO1)13cを接続(結合)することにより、制御ループ131を形成する。
図4に示す例において、AI機能ブロック(AI2)13dの出力は、PID機能ブロック(PID2)13eの入力に接続され、PID機能ブロック(PID2)13eの出力は、AO機能ブロック(AO2)13fの入力に接続される。また、AO機能ブロック(AO2)13fの出力は、PID機能ブロック(PID2)13eの入力に接続される。このように、AI機能ブロック(AI2)13d、PID機能ブロック(PID2)13e、及びAO機能ブロック(AO2)13fを接続(結合)することにより、制御ループ132を形成する。
図5に示す例において、AI機能ブロック(AI3)13gの出力は、PID機能ブロック(PID3)13hの入力に接続され、PID機能ブロック(PID3)13hの出力は、AO機能ブロック(AO3)13iの入力に接続される。また、AO機能ブロック(AO3)13iの出力は、PID機能ブロック(PID3)13hの入力に接続される。このように、AI機能ブロック(AI3)13g、PID機能ブロック(PID3)13h、及びAO機能ブロック(AO3)13iを接続(結合)することにより、制御ループ133を形成する。
図6に示す例において、AI機能ブロック(AI4)13jの出力は、PID機能ブロック(PID4)13kの入力に接続され、PID機能ブロック(PID4)13kの出力は、AO機能ブロック(AO4)13lの入力に接続される。また、AO機能ブロック(AO4)13lの出力は、PID機能ブロック(PID4)13kの入力に接続される。このように、AI機能ブロック(AI4)13j、PID機能ブロック(PID4)13k、及びAO機能ブロック(AO4)13lを接続(結合)することにより、制御ループ134を形成する。
図7に示す例において、AI機能ブロック(AI5)13mの出力は、PID機能ブロック(PID5)13nの入力に接続され、PID機能ブロック(PID5)13nの出力は、AO機能ブロック(AO5)13oの入力に接続される。また、AO機能ブロック(AO5)13oの出力は、PID機能ブロック(PID5)13nの入力に接続される。このように、AI機能ブロック(AI5)13m、PID機能ブロック(PID5)13n、及びAO機能ブロック(AO5)15oを接続(結合)することにより、制御ループ135を形成する。
なお、本実施形態では、セグメント10に定義された各機能ブロック13a〜13oにより形成(構成)される制御ループのみを示したが、これに限定されず、制御ループは、フィールドバスFの他のセグメントに定義された機能ブロックを含んでいてもよい。
図8は、図3に示した制御ループの実行タイミングを説明する図である。以下の説明において、特に記載した場合を除き、マクロサイクルは4000ms、サブスケジュールの設定可能最大数は「4」であるものとする。図3に示した制御ループ131の実行周期が4000msの場合、図1に示した設定部33は、図8に示すように、スケジュール200を構成するサブスケジュール210の周期として、制御ループ131の実行周期と同じ4000msを設定する。これにより、スケジュール200においてサブスケジュール210が1回実行される。なお、制御ループ131の実行周期は、図1に示した入出力インターフェース部31を介してユーザにより入力される。次に、図1に示した実行データ生成部34は、制御ループ131に対してサブスケジュール210を割り当てる。また、制御ループ131を構成するAI機能ブロック(AI1)13a、PID機能ブロック(PID1)13b、及びAO機能ブロック(AO1)13cを、サブスケジュール210においてそれぞれ1回実行させるために、実行データ生成部34は、実行データ211、212、213を生成する。さらに、図3に示したAI機能ブロック(AI1)13aとPID機能ブロック(PID1)13bとの接続は、異なる装置、すなわち、図2に示したように、フィールド装置11Aの機能ブロックとフィールド装置11Bの機能ブロックとの接続なので、AI機能ブロック(AI1)13aの出力をPID機能ブロック(PID1)13bに入力させるために、実行データ生成部34は、セグメント10における通信(C1)131aを実行させる実行データ214を生成する。このように、サブスケジュール210において制御ループ131が1回実行される。
生成された各実行データ211〜214は、サブスケジュール210において所定のタイミングで実行するために、基準時間(図3において0ms)からのオフセット時間を含む。図8に示す例では、実行データ211は0msのオフセット時間が設定され、実行データ212は200msのオフセット時間が設定され、実行データ213は330msのオフセット時間が設定され、実行データ214は170msのオフセット時間が設定される。なお、各実行データ211〜214のオフセット時間は、入出力インターフェース部31を介してユーザにより入力される。
図9は、図4に示した制御ループの実行タイミングを説明する図である。図4に示した制御ループ132の実行周期が2000msの場合、図1に示した設定部33は、図9に示すように、スケジュール200を構成するサブスケジュール220の周期として、制御ループ132の実行周期と同じ2000msを設定する。これにより、スケジュール200においてサブスケジュール210が2回実行される。なお、制御ループ132の実行周期は、図1に示した入出力インターフェース部31を介してユーザにより入力される。次に、図1に示した実行データ生成部34は、制御ループ132に対してサブスケジュール220を割り当てる。また、制御ループ132を構成するAI機能ブロック(AI2)13d、PID機能ブロック(PID2)13e、及びAO機能ブロック(AO2)13fを、サブスケジュール220においてそれぞれ1回実行させるために、実行データ生成部34は、実行データ221、222、223を生成する。さらに、実行データ生成部34は、図4に示したAI機能ブロック(AI2)13dとPID機能ブロック(PID2)13eとの接続は、異なる装置、すなわち、図2に示したように、フィールド装置11Cの機能ブロックとフィールド装置11Dの機能ブロックとの接続なので、AI機能ブロック(AI2)13dの出力をPID機能ブロック(PID2)13fに入力させるために、セグメント10における通信(C2)132aを実行させる実行データ224を生成する。これにより、サブスケジュール220において制御ループ132が1回実行される。
生成された各実行データ221〜224は、サブスケジュール220において所定のタイミングで実行するために、基準時間(図9において0ms又は2000ms)からのオフセット時間を含む。図9に示す例では、実行データ221は0msのオフセット時間が設定され、実行データ222は140msのオフセット時間が設定され、実行データ223は270msのオフセット時間が設定され、実行データ214は110msのオフセット時間が設定される。なお、各実行データ221〜224のオフセット時間は、入出力インターフェース部31を介してユーザにより入力される。
図10は、図5に示した制御ループの実行タイミングを説明する図である。図5に示した制御ループ133の実行周期が1000msの場合、図1に示した設定部33は、図10に示すように、スケジュール200を構成するサブスケジュール230の周期として、制御ループ133の実行周期と同じ1000msを設定する。これにより、スケジュール200においてサブスケジュール210が4回実行される。なお、制御ループ133の実行周期は、図1に示した入出力インターフェース部31を介してユーザにより入力される。次に、図1に示した実行データ生成部34は、制御ループ133に対してサブスケジュール230を割り当てる。また、制御ループ133を構成するAI機能ブロック(AI3)13g、PID機能ブロック(PID3)13h、及びAO機能ブロック(AO3)13iを、サブスケジュール230においてそれぞれ1回実行させるために、実行データ生成部34は、実行データ231、232、233を生成する。さらに、図5に示したAI機能ブロック(AI3)13gとPID機能ブロック(PID3)13hとの接続は、異なる装置、すなわち、図2に示したように、フィールド装置11Eの機能ブロックとフィールド装置11Fの機能ブロックとの接続なので、AI機能ブロック(AI3)13gの出力をPID機能ブロック(PID3)13hに入力させるために、実行データ生成部34は、セグメント10における通信(C3)133aを実行させる実行データ234を生成する。これにより、サブスケジュール230において制御ループ133が1回実行される。
生成された各実行データ231〜234は、サブスケジュール230において所定のタイミングで実行するために、基準時間(図10において0ms、1000ms、2000ms、又は3000ms)からのオフセット時間を含む。図10に示す例では、実行データ231は0msのオフセット時間が設定され、実行データ232は110msのオフセット時間が設定され、実行データ233は240msのオフセット時間が設定され、実行データ234は80msのオフセット時間が設定される。なお、各実行データ231〜234のオフセット時間は、入出力インターフェース部31を介してユーザにより入力される。
図11は、図6に示した制御ループの実行タイミングを説明する図である。図6に示した制御ループ134の実行周期が800msの場合、図1に示した設定部33は、図11に示すように、スケジュール200を構成するサブスケジュール240の周期として、制御ループ133の実行周期と同じ800msを設定する。これにより、スケジュール200においてサブスケジュール210が5回実行される。なお、制御ループ134の実行周期は、図1に示した入出力インターフェース部31を介してユーザにより入力される。次に、図1に示した実行データ生成部34は、制御ループ134に対してサブスケジュール240を割り当てる。また、制御ループ134を構成するAI機能ブロック(AI4)13j、PID機能ブロック(PID4)13k、及びAO機能ブロック(AO4)13lを、サブスケジュール240においてそれぞれ1回実行させるために、実行データ生成部34は、実行データ241、242、243を生成する。また、図6に示したAI機能ブロック(AI4)13jとPID機能ブロック(PID4)13kとの接続は、異なる装置、すなわち、図2に示すように、フィールド装置11Gの機能ブロックとフィールド装置11Hの機能ブロックとの接続なので、AI機能ブロック(AI4)13jの出力をPID機能ブロック(PID4)13kに入力させるために、実行データ生成部34は、セグメント10における通信(C4)134aを実行させる実行データ244を生成する。これにより、サブスケジュール240において制御ループ134が1回実行される。
生成された各実行データ241〜244は、サブスケジュール240において所定のタイミングで実行するために、基準時間(図11において0ms、800ms、1600ms、2400ms、又は3200ms)からのオフセット時間を含む。図11に示す例では、実行データ241は0msのオフセット時間が設定され、実行データ242は170msのオフセット時間が設定され、実行データ243は300msのオフセット時間が設定され、実行データ244は140msのオフセット時間が設定される。なお、各実行データ241〜244のオフセット時間は、入出力インターフェース部31を介してユーザにより入力される。
図7に示した制御ループ135の実行周期が500msの場合、設定されたサブスケジュール210〜240の数が設定最大値(「4」)に達しているため、従来は、制御ループ135の実行をスケジューリングできないか、又は、設定された4つのサブスケジュール210〜240の周期のうち、最も近い周期、例えば800msに、制御ループ135の実行周期を変更する等の対応が取られていた。
図12は、図7に示した制御ループの実行タイミングを説明する図である。これに対し、設定されたサブスケジュール210〜240の数が設定最大値(「4」)に達している場合であって、制御ループ135の実行周期と同じ周期を有するサブスケジュール210〜240が存在しない場合、図1に示した実行データ作成部34は、図12に示すように、制御ループ135の実行周期のi倍(iは2以上の整数)の周期を有するサブスケジュール、例えば2倍の周期を有するサブスケジュール230を制御ループ135に対して割り当てる。なお、制御ループ135の実行周期は、図1に示した入出力インターフェース部31を介してユーザにより入力される。また、制御ループ135を構成するAI機能ブロック(AI5)13m、PID機能ブロック(PID5)13n、及びAO機能ブロック(AO5)13oを、サブスケジュール230においてそれぞれi回、すなわち2回実行させるために、実行データ作成部34は、実行データ235a、236a、237aと、実行データ235b、236b、237bと、を生成する。また、図7に示したAI機能ブロック(AI5)13mとPID機能ブロック(PID5)13nとの接続は、異なる装置、すなわち、図2に示すように、フィールド装置11Iの機能ブロックとフィールド装置11Jの機能ブロックとの接続なので、AI機能ブロック(AI5)13mの出力をPID機能ブロック(PID5)13nに入力させるために、スケジュール作成装置30はセグメント10における通信(C5)135aを2回実行する実行データ238a及び実行データ238bを生成する。このように、サブスケジュール230において制御ループ135を実行させる、実行データ235a,236a,237a,238aと、実行データ235b,236b,237b,238bとの2個の実行データを生成することにより、1000msの周期を有するサブスケジュール230において、制御ループ135を1000ms/2、すなわち500msの実行周期で2回実行させることが可能となる。
なお、前述したように、制御ループ135の実行周期のi倍(iは2以上の整数)の周期を有し、それぞれの周期が相互に異なる複数のサブスケジュール210,220,230が設定されている場合に、実行データ作成部34は、最短の周期を有するサブスケジュール230において実行データをi個、すなわち2個生成することが好ましい。これにより、例えば、最長の周期を有するサブスケジュール210において実行データを生成する場合、制御ループを8回実行させる必要があるため、8個の実行データを生成するのに対し、最短の周期を有するサブスケジュール230において実行データを生成すると2個の実行データで済み、生成する実行データの数を減少させることができる。
生成された各実行データ235a、236a、237a、238aは、サブスケジュール230において所定のタイミングで実行するために、基準時間(図12において0ms、1000ms、2000ms、又は3000ms)からのオフセット時間を含む。図12に示す例では、実行データ235aは0msのオフセット時間が設定され、実行データ236aは230msのオフセット時間が設定され、実行データ237aは360msのオフセット時間が設定され、実行データ238aは200msのオフセット時間が設定される。なお、各実行データ235a、236a、237a、238aのオフセット時間は、入出力インターフェース部31を介してユーザにより入力される。また、生成された各実行データ235b、236b、237b、238bは、サブスケジュール230において所定のタイミングで実行するために、基準時間(図12において0ms、1000ms、2000ms、又は3000ms)からのオフセット時間を含む。図12に示す例では、実行データ235bは500msのオフセット時間が設定され、実行データ236bは730msのオフセット時間が設定され、実行データ237bは860msのオフセット時間が設定され、実行データ238bは700msのオフセット時間が設定される。なお、各実行データ235b、236b、237b、238bのオフセット時間は、入出力インターフェース部31を介してユーザにより入力されたオフセット時間に、制御ループ135の実行周期を加算して算出する。このように、2個の実行データ235a、236a、237a、238a、235b、236b、237b、238bを生成する際に、それぞれのオフセット時間の間隔を実行周期、すなわち500msに設定することで、容易に当該サブスケジュール230において制御ループ135を2回実行させることができる。
図1に示したスケジュールプログラム作成部35は、サブスケジュール210〜240ごとに作成された実行データをマージしてスケジュールプログラム32cを作成する。図1に示したデータロード部36は、作成されたスケジュールプログラム32cと、記憶部32のマクロサイクルデータ32a及びサブスケジュールデータ32bを、図1に示したコントローラ20及びフィールドバスFを介してリンクマスタデバイス12に送信(ロード)する。これにより、リンクマスタデバイス12は、スケジュール作成装置30により作成されたスケジュールプログラム32cを実行することができる。
次に、図13を参照しながらスケジュール作成方法及びスケジュール作成プログラムについて説明する。図13は、図1に示したスケジュール作成装置の動作を説明するフローチャートである。ユーザの操作により制御ループが作成され、図1に示した入出力インターフェース部31を介して制御ループの実行周期が入力されると、図1に示したスケジュール作成装置30は、処理S300を開始する。すなわち、図13に示すように、図1に示す設定部33は、図1に示した記憶部32からサブスケジュールデータ32bを読み出し、入力された制御ループの実行周期の数(種類)が、サブスケジュールの設定可能最大数より大きいか否かを判定する(S301)。なお、制御ループの実行周期の数とは、その種類の数を意味し、例えば、4つの制御ループが全て同じ実行周期を有する場合、制御ループの実行周期の数は「4」であるが、その種類数は1つであるため、設定部33は、制御ループの実行周期の数(種類)を「1」として判定する。
S301の判定の結果、入力された制御ループの実行周期の数(種類)がサブスケジュールの設定可能最大数より大きい場合、設定部33は、入力された制御ループの実行周期に基づいて、設定可能最大数までサブスケジュールの周期を設定し(S302)、記憶部32にサブスケジュールデータ32bを書き込む(更新する)。一方、S301の判定の結果、入力された制御ループの実行周期の数(種類)がサブスケジュールの設定可能最大数より大きくない場合、設定部33は、入力された制御ループの実行周期に基づいて、サブスケジュールの周期を設定し(S303)、記憶部32にサブスケジュールデータ32bを書き込む(更新する)。なお、設定部33は、S302又はS302において、同時に、設定された複数のサブスケジュールの周期における最小公倍数をマクロサイクルとして設定し、マクロサイクルデータ32aを更新するようにしてもよい。
図8乃至図12に示した例の場合、サブスケジュールの設定最大値が「4」に対して、形成された制御ループ131〜135の実行周期は5つ(5種類)であるから、S302において、設定部33は、例えば、実行周期の長い順、又は実行周期の入力順に、サブスケジュール210〜240の周期として、4000ms、2000ms、1000ms、800msを設定する。また、設定部33は、マクロサイクル(スケジュール200の周期)として、最小公倍数である4000msを設定する。
本実施形態では、入力された制御ループの実行周期に基づいて、S302又はS303において、サブスケジュールの周期、およびマクロサイクルを自動的に設定するようにしたが、これに限定されない。例えば、あらかじめ、サブスケジュールの周期、及びマクロサイクルをユーザが入力して手動で設定しておいてもよい。この場合、処理S300は、次のS304から開始する。
S302又はS303の後、図1に示した実行データ作成部34は、記憶部32からサブスケジュールデータ32bを読み出し、入力された制御ループの実行周期と設定された各サブスケジュールの周期とに基づいて、各制御ループに対してサブスケジュールを割り当て可能か否か判定する(S304)。具体的には、実行データ作成部34は、制御ループの実行周期と同じ周期を有するサブスケジュールが設定されている場合、又は制御ループの実行周期のi倍(iは2以上の整数)の周期を有するサブスケジュールが設定されている場合に、サブスケジュールを割り当て可能であると判定する。一方、実行データ作成部34は、その他の場合、すなわち、制御ループの実行周期と同じ周期を有するサブスケジュールが設定されていない場合であって、制御ループの実行周期のi倍(iは2以上の整数)の周期を有するサブスケジュールが設定されていない場合に、サブスケジュールを割り当て可能ではない(割り当て不能)と判定する。
S304の判定の結果、サブスケジュールを割り当て可能である場合、実行データ作成部34は、記憶部32からサブスケジュールデータ32bを読み出して、形成された制御ループに対してサブスケジュールを割り当てるとともに、入出力インターフェース部31を介して入力されたオフセット時間に基づいて、制御ループごとに、各機能ブロック及び通信の実行データを生成する(S305)。一方、S304の判定の結果、サブスケジュールを割り当て不能である場合、実行データ作成部34は、入出力インターフェース部を介してエラーを出力し(S306)、スケジュール作成装置30は処理S300を終了する。
なお、S306において、エラーを出力する前に、実行データ作成部34は、入力された制御ループの実行周期を、設定されているサブスケジュールの周期に基づく周期に変更するか否かを問うようにしてもよい。例えば、サブスケジュールの周期として、4000ms、2000ms、1000ms、800msが設定されており、入力された制御ループの実行周期が501msである場合、制御ループの実行周期が500msであれば、周期が1000msのサブスケジュールを割り当て可能であるから、実行データ作成部34は、入出力インターフェース部31を介して、制御ループの実行周期を500msに変更するか否かを問うメッセージを出力する。この場合、入力された制御ループの実行周期が500msに変更されたときには、エラーを出力することなく、実行データ作成部34は、S305のステップを行う。
図3乃至図6及び図8乃至図11に示した制御ループ131〜134の例の場合、実行データ作成部34は、S304で、各制御ループ131〜134に対して、同じ周期を有するサブスケジュール210〜240をそれぞれ割り当てる。次に、実行データ作成部34は、S305で、スケジュール210において制御ループ131の実行データ211〜214を、スケジュール220において制御ループ132の実行データ221〜224を、スケジュール230において制御ループ133の実行データ231〜234を、スケジュール240において制御ループ134の実行データ241〜244を、それぞれ生成する。
また、図7及び図12に示した制御ループ135の例の場合、実行データ作成部34は、S304で、設定されている複数のサブスケジュール210〜240の中から、制御ループ135の実行周期のi倍(iは2以上の整数)の周期を有するサブスケジュールを検索する。この場合、実行データ作成部34は、2倍の周期を有するサブスケジュール230と、4倍の周期を有するサブスケジュール220と、8倍の周期を有するサブスケジュール210とを検出する。ここで、実行データ作成部34は、最短の周期を有するサブスケジュール230を制御ループ135に対して割り当てる。次に、実行データ作成部34は、割り当てられたスケジュール230において制御ループ135を実行させる、実行データ235a、236a、237a、238aと、実行データ235b、236b、237b、238bとの2個生成する。これにより、1000msの周期を有するサブスケジュール230において、制御ループ135を1000ms/2、すなわち500msの実行周期で2回実行させることが可能となる。
実行データ作成部34により生成される、実行データ235a、236a、237a、238a、235b、236b、237b、238bは、サブスケジュール230の開始時間を基準とするオフセット時間を含むことが好ましい。これにより、2個の実行データ235a、236a、237a、238a、235b、236b、237b、238bを生成する際に、それぞれのオフセット時間の間隔を実行周期、すなわち500msに設定することで、容易に当該サブスケジュール230において制御ループ135を2回実行させることができる。
なお、前述したように、制御ループ135の実行周期のi倍(iは2以上の整数)の周期を有し、それぞれの周期が相互に異なる複数のサブスケジュール210,220,230が設定され、サブスケジュールデータ32bとして記憶部32に記憶されている場合に、実行データ作成部34は、最短の周期を有するサブスケジュール230において実行データをi個、すなわち2個生成することが好ましい。これにより、例えば、最長の周期を有するサブスケジュール210において実行データを生成する場合、制御ループを8回実行させる必要があるため、8個の実行データを生成するのに対し、最短の周期を有するサブスケジュール230において実行データを生成すると2個の実行データで済み、生成する実行データの数を減少させることができる。
S305の後、スケジュールプログラム作成部35は、サブスケジュールごとに作成された実行データをマージしてスケジュールプログラム32cを作成し(S306)、記憶部32にスケジュールプログラム32cを書き込む。
S306の後、データロード部36は、記憶部32からマクロサイクルデータ32a、サブスケジュールデータ32b、及びスケジュールプログラム32cを読み出し、図1に示したコントローラ20及びフィールドバスFを介してリンクマスタデバイス12に送信(ロード)し(S307)、スケジュール作成装置30は処理S300を終了する。これにより、リンクマスタデバイス12は、スケジュール作成方法又はスケジュール作成プログラムにより作成されたスケジュールを実行することが可能となる。
送信(ロード)されたマクロサイクルデータ32a、サブスケジュールデータ32b、及びスケジュールプログラム32cは、それぞれマクロサイクルデータ122a、サブスケジュールデータ122b、スケジュールプログラム122cとして、記憶部122に記憶される。これにより、スケジュールプログラム32cに基づいて、リンクマスタデバイス12のLAS部121は、セグメント10における周期的動作を制御することができる。
本実施形態では、スケジュール作成装置30がスケジュールプログラム32cを作成するようにしたが、これに限定されない。リンクマスタデバイス12に送信(ロード)可能である限り、他の装置、例えば、コントローラ20やリンクマスタデバイス12自身であってもよい。また、スケジュールプログラム32cを作成するのは、装置、すなわちハードウエアに限定されず、ハードウエアが実行するソフトウエア(プログラム)であってもよい。さらに、スケジュールプログラム32cはソースプログラムであってもオブジェクトプログラムであってもよい。また、作成されるスケジュールは、スケジュールプログラム32cのようにプログラム形式でなくても、データ形式やファイル形式であってもよい。
このように、本実施形態におけるスケジュール作成装置30によれば、制御ループ135の実行周期のi倍(iは2以上の整数)の周期を有するサブスケジュール230が設定されている場合に、当該サブスケジュール230において当該制御ループ135を実行させる、実行データ235a、236a、237a、238aと、実行データ235b、236b、237b、238bとの2個生成する。これにより、1000msの周期を有するサブスケジュール230において、制御ループ135を1000ms/2、すなわち500msの実行周期で2回実行させることが可能となる。これにより、制御ループの実行周期の数(種類)が、サブスケジュールの設定可能最大数より大きい場合でも、制御ループの実行周期のi倍の周期を有するサブスケジュールが設定されている場合に、当該制御ループを所望の実行周期で実行させることができる。
また、本実施形態におけるスケジュール作成装置30によれば、実行データ235a、236a、237a、238a、235b、236b、237b、238bは、サブスケジュール230の開始時間を基準とするオフセット時間を含む。これにより、2個の実行データ235a、236a、237a、238a、235b、236b、237b、238bを生成する際に、それぞれのオフセット時間の間隔を実行周期、すなわち500msに設定することで、容易に当該サブスケジュール230において制御ループ135を2回実行させることができる。
また、本実施形態におけるスケジュール作成装置30によれば、制御ループ135の実行周期のi倍(iは2以上の整数)の周期を有し、それぞれの周期が相互に異なる複数のサブスケジュール210,220,230が設定されている場合に、当該複数のサブスケジュール210,220,230のうちの最短の周期を有するサブスケジュール230において2個の実行データ235a、236a、237a、238a、235b、236b、237b、238bを生成する。これにより、例えば、最長の周期を有するサブスケジュール210において実行データを生成する場合、制御ループ135を8回実行させる必要があるため、8個の実行データを生成するのに対し、最短の周期を有するサブスケジュール230において実行データを生成すると2個の実行データで済み、生成する実行データの数を減少させることができる。これにより、作成するスケジュールプログラム32cのサイズ等を小さくすることができる。
また、本実施形態におけるスケジュール作成装置30によれば、制御ループ131〜135の動作タイミングを制御するリンクマスタデバイス12に、フィールドバスFを介してスケジュールプログラム32cを送信するデータロード部36を更に備える。これにより、リンクマスタデバイス12は、スケジュール作成装置30により作成されたスケジュールプログラム32cを実行することができる。
また、本実施形態におけるスケジュール作成方法及びスケジュール作成プログラムによれば、制御ループ135の実行周期のi倍(iは2以上の整数)の周期を有するサブスケジュール230が設定されている場合に、実行データ生成部34が、当該サブスケジュール230において当該制御ループ135を実行させる、実行データ235a、236a、237a、238aと、実行データ235b、236b、237b、238bとの2個生成するステップを備える。これにより、1000msの周期を有するサブスケジュール230において、制御ループ135を1000ms/2、すなわち500msの実行周期で2回実行させることが可能となる。これにより、制御ループの実行周期の数(種類)が、サブスケジュールの設定可能最大数より大きい場合でも、制御ループの実行周期のi倍の周期を有するサブスケジュールが設定されている場合に、当該制御ループを所望の実行周期で実行させることができる。
また、本実施形態におけるスケジュール作成方法及びスケジュール作成プログラムによれば、実行データ235a、236a、237a、238a、235b、236b、237b、238bは、サブスケジュール230の開始時間を基準とするオフセット時間を含む。これにより、2個の実行データ235a、236a、237a、238a、235b、236b、237b、238bを生成する際に、それぞれのオフセット時間の間隔を実行周期、すなわち500msに設定することで、容易に当該サブスケジュール230において制御ループ135を2回実行させることができる。
また、本実施形態におけるスケジュール作成方法及びスケジュール作成プログラムによれば、制御ループ135の実行周期のi倍(iは2以上の整数)の周期を有し、それぞれの周期が相互に異なる複数のサブスケジュール210,220,230が設定されている場合に、実行データ生成部34が、当該複数のサブスケジュール210,220,230のうちの最短の周期を有するサブスケジュール230において2個の実行データ235a、236a、237a、238a、235b、236b、237b、238bを生成する。これにより、例えば、最長の周期を有するサブスケジュール210において実行データを生成する場合、制御ループ135を8回実行させる必要があるため、8個の実行データを生成するのに対し、最短の周期を有するサブスケジュール230において実行データを生成すると2個の実行データで済み、生成する実行データの数を減少させることができる。これにより、作成するスケジュールプログラム32cのサイズ等を小さくすることができる。
また、本実施形態におけるスケジュール作成方法及びスケジュール作成プログラムによれば、制御ループ131〜135の動作タイミングを制御するリンクマスタデバイス12に、データロード部36が、フィールドバスFを介してスケジュールプログラム32cを送信するステップを更に備える。これにより、リンクマスタデバイス12は、スケジュール作成方法又はスケジュール作成プログラムにより作成されたスケジュールプログラム32cを実行することができる。
[第2実施形態]
図14及び図15は、本発明の第2実施形態を示すためのものである。なお、特に記載がない限り、前述した実施形態と同一構成部分は同一符号をもって表し、その説明を省略する。また、図示しない構成部分は、前述した実施形態と同様とする。
図14は、本発明の第2実施形態におけるフィールド機器管理システムの概略構成を説明するブロック図である。図14に示すように、セグメント10は、第1実施形態のリンクマスタデバイス12と同様の構成を有する、複数のリンクマスタデバイス12A、12B、12Cとを備える。
各リンクマスタデバイス12A、12B、12Cには、設定可能なサブスケジュールの数の最大値、すなわち設定可能最大数が定められている。各リンクマスタデバイス12A、12B、12Cの記憶部122A、122B、122Cには、それぞれの設定可能最大数が記憶されている。各リンクマスタデバイス12A、12B、12Cの設定可能最大数は、リンクマスタデバイスの能力(性能)に依存し、マルチベンダ対応のフィールドバスFにおいては、各リンクマスタデバイス12A、12B、12Cによって設定可能最大数が異なる場合がある。以下の説明において、特に記載した場合を除き、設定可能最大数として、リンクマスタデバイス12Aに「4」、リンクマスタデバイス12Bに「3」、リンクマスタデバイス12Cに「2」が、記憶されているものとする。
セグメント10に複数のリンクマスタデバイス12A、12B、12Cが存在する場合、セグメント10において作動しているリンクマスタデバイスは1つであるが、何らかの理由で当該リンクマスタデバイスの動作が停止した場合に、待機している他のリンクマスタデバイスに自動的に切り替わり、セグメント10におけるスケジュールの実行を継続するようになっている。例えば、各リンクマスタデバイス12A、12B、12Cの設定可能最大数が全て「2」の場合、作動中のリンクマスタデバイス12Aが停止したときに、リンクマスタデバイス12B又はリンクマスタデバイス12Cに切り替わり、スケジュールの実行を継続する。
スケジュール作成装置30Aは、設定可能最大数取得部37を備える。設定可能最大数取得部37は、フィールドバスF及びコントローラ20を介して各リンクマスタデバイス12A、12B、12Cから設定可能最大数を取得する。設定可能最大数取得部37は、例えば、セグメント10に新たなリンクマスタデバイスが接続(設置)されたときに、設定可能最大数を取得する。
設定部33は、入出力インターフェース部31を介して入力される制御ループの実行周期と、設定可能最大数取得部37により取得された複数の設定可能最大数のうちの最小値と、に基づいて、複数のサブスケジュールを設定する。
前述の例では、リンクマスタデバイス12Cに記憶された設定可能最大数「2」が最小値であるため、設定部33は、2つのサブスケジュールを設定する。これにより、セグメント10における全てのリンクマスタデバイス12A、12B、12Cが設定可能な数のサブスケジュールが設定される。
データロード部36は、スケジュールプログラム作成部35により作成されたスケジュールプログラム32cを含むデータを、フィールドバスFを介して各リンクマスタデバイス12A、12B、12Cに送信する。
次に、図15を参照しながらスケジュール作成方法及びスケジュール作成プログラムについて説明する。図15は、図14に示したスケジュール作成装置の動作を説明するフローチャートである。図13に示した処理S300を実行する前に、図14に示したスケジュール作成装置30Aは、処理S400を開始する。すなわち、設定可能最大数取得部37は、フィールドバスF及びコントローラ20を介して各リンクマスタデバイス12A、12B、12Cに設定可能最大数の問い合わせ制御信号を送信し、各リンクマスタデバイス12A、12B、12Cから設定可能最大数を取得する(S401)。
次に、設定可能最大数取得部37は、各リンクマスタデバイス12A、12B、12Cから設定可能最大数を受信し、取得済であるか否かを判定する(S402)。なお、設定可能最大数取得部37は、全てのリンクマスタデバイス12A、12B、12Cから設定可能最大数を受信した場合に取得済であると判定し、全てのリンクマスタデバイス12A、12B、12Cのうち1つでも設定可能最大数を受信していない場合には取得済でないと判定する。
S402の判定の結果、各リンクマスタデバイス12A、12B、12Cから設定可能最大数を取得済である場合、設定可能最大数取得部37は、各リンクマスタデバイス12A、12B、12Cから取得した設定可能最大数のうちの最小値を決定し(S403)、当該最小値を設定可能最大数として、記憶部32にサブスケジュールデータ32bを書き込む(更新する)。S403の後、スケジュール作成装置30Aは処理S400を終了する。一方、S402の判定の結果、各リンクマスタデバイス12A、12B、12Cから設定可能最大数を取得済でない場合、設定可能最大数取得部37は、所定時間経過後に、再度S401を行う。
処理S400の後、図13に示した処理S300において、設定部33は、S301において記憶部32からサブスケジュールデータ32bを読み出し、S302においてS403で決定した設定可能最大数までサブスケジュールの周期を設定する。また、データロード部36は、S307において、記憶部32からマクロサイクルデータ32a、サブスケジュールデータ32b、及びスケジュールプログラム32cを読み出し、コントローラ20及びフィールドバスFを介して各リンクマスタデバイス12A、12B、12Cに送信(ロード)する。
前述の例では、S401及びS402において、設定可能最大数取得部37は、リンクマスタデバイス12Aから設定可能最大数「4」を、リンクマスタデバイス12Bから設定可能最大数「3」を、リンクマスタデバイス12Cから設定可能最大数「2」を、それぞれ取得する。S403において、設定可能最大数取得部37は、リンクマスタデバイス12Cから取得した設定可能最大数「2」が最小値であるため、設定可能最大数として「2」を記憶部32のサブスケジュールデータ32bに書き込む(更新する)。次に、設定部33は、S302において2つのサブスケジュールを設定する。これにより、セグメント10における全てのリンクマスタデバイス12A、12B、12Cが設定可能な数のサブスケジュールが設定される。
本実施形態では、設定可能最大数取得部37が各リンクマスタデバイス12A、12B、12Cから設定可能最大数を取得するようにしたが、これに限定されない。例えば、フィールドバスFに接続される他の機器に、各リンクマスタデバイス12A、12B、12Cの設定可能最大数を記憶しておき、設定可能最大数取得部37は、当該機器に記憶された各リンクマスタデバイス12A、12B、12Cの設定可能最大数を取得するようにしてもよい。
このように、本実施形態におけるスケジュール作成装置30Aによれば、フィールドバスFのセグメント10にリンクマスタデバイス12A、12B、12Cが複数存在する場合に、フィールドバスFを介して各リンクマスタデバイス12A、12B、12Cの設定可能最大数を取得する設定可能最大数取得部37と、取得された各リンクマスタデバイス12A、12B、12Cの設定可能最大数のうちの最小値に基づいて、サブスケジュールを設定する設定部33と、を備える。これにより、セグメント10における全てのリンクマスタデバイス12A、12B、12Cが設定可能な数のサブスケジュールが設定される。これにより、セグメント10における全てのリンクマスタデバイス12A、12B、12Cが実行可能なスケジュールプログラム32cを各リンクマスタデバイス12A、12B、12Cに送信することができる。
このように、本実施形態におけるスケジュール作成方法及びスケジュール作成プログラムによれば、フィールドバスFのセグメント10にリンクマスタデバイス12A、12B、12Cが複数存在する場合に、設定可能最大数取得部37が、フィールドバスFを介して各リンクマスタデバイス12A、12B、12Cの設定可能最大数を取得するステップと、設定部33が、取得された各リンクマスタデバイス12A、12B、12Cの設定可能最大数のうちの最小値に基づいて、サブスケジュールを設定するステップと、を備える。これにより、セグメント10における全てのリンクマスタデバイス12A、12B、12Cが設定可能な数のサブスケジュールが設定される。これにより、セグメント10における全てのリンクマスタデバイス12A、12B、12Cが実行可能なスケジュールプログラム32cを各リンクマスタデバイス12A、12B、12Cに送信することができる。
なお、前述の各実施形態の構成は、組み合わせたり或いは一部の構成部分を入れ替えたりしたりしてもよい。また、本発明の構成は前述の実施形態のみに限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変更を加えてもよい。