(57)【特許請求の範囲】
【請求項１】
定型処理機能ブロックを所定の制御周期で実行する定周期実行型シーケンス制御部と、
ユーザにより生成された非定型処理機能ブロックを保持する非定型処理機能ブロック格納部と、
前記制御周期中の空き時間に前記非定型処理機能ブロック格納部より呼び出される前記非定型処理機能ブロックを実行するタイムシェア実行型シーケンス制御部と、
を具備するシーケンス制御装置において、
前記非定型処理機能ブロック格納部に保持され、タイムシェア実行型シーケンス制御部で実行するタイムシェア実行型非定型処理機能ブロックと、
前記非定型処理機能ブロック格納部に保持され、定期的に決められた処理を行いたい場合に用いる定周期実行型非定型処理機能ブロックと、
エンジニアにより記述された、前記定型処理機能ブロックとタイムシェア実行型非定型処理機能ブロックと定周期実行型非定型処理機能ブ ロックの実行順序に基づき、定周期実行型シーケンス処理部で処理される定型処理機能ブロックと定周期実行型非定型処理機能ブロックが混在した機能ブロック の実行順序を規定した定周期実行リンク並びにタイムシェア実行型シーケンス制御部で処理されるタイムシェア実行型非定型処理機能ブロックの実行順序を規定 したタイムシェア実行リンクとを生成する実行リンク生成部と、を備え、
前記定周期実行型シーケンス制御部は、前記定周期実行リンクに基づいてシーケンス制御を実行することを特徴とするシーケンス制御装置。
【請求項２】
前記定周期実行型シーケンス制御部は、基本制御周期とこれよりは速い中速制御周期及び高速制御周期の少なくともいずれかの制御周期で実行されることを特徴とする請求項１に記載のシーケンス制御装置。
【請求項３】
前記非定型処理機能ブロックは、所定行のプログラム単位で実行され、前記制御周期中に前記前記定周期実行型シーケンス制御部より呼び出されて実行される前記非定型処理機能ブロックから前記定型処理機能ブロックへの切換えは、前記プログラム単位の最終行の処理の終了後に実行されることを特徴とする請求項１または２に記載のシーケンス制御装置。
【請求項４】
前記制御周期中に前記定周期実行型シーケンス制御部より呼び出されて実行される前記非定型処理機能ブロックは、繰り返し処理を前記基本制御周期内で１ループに制限したことを特徴とする請求項１乃至３のいずれかに記載のシーケンス制御装置。
【請求項５】
前記制御周期中に前記定周期実行型シーケンス制御部より呼び出されて実行される前記非定型処理機能ブロックは、前方の指定アドレスへジャンプ処理した際にその基本制御周期での処理を中断することを特徴とする請求項１乃至４のいずれかに記載のシーケンス制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、定型処理機能ブロックを所定の制御周期で実行する定周期実行型シーケンス制御部と、ユーザにより生成された非定型機能ブロックを保持する非定型機能ブロック格納部と、前記制御周期中の空き時間に前記非定型機能ブロック格納部より呼び出される前記非定型機能ブロックを実行するタイムシェア実行型シーケンス制御部と、を具備するシーケンス制御装置に関するものである。
【背景技術】
【０００２】
図７は、従来のシーケンス制御装置を有するプロセス制御システムの構成例を示す機能ブロック図である。分散型制御システムを構成する制御ステーション１０は、制御アプリケーション２０及び本発明の対象となるシーケンス制御装置３０を実装する。
【０００３】
制御ステーション１０は、制御バス４０を介して分散型制御システムを構成する上位装置５０と通信すると共に、フィールドバス６０を介してフィールド機器７１，７２，…７Ｎと通信し、これらを制御する。
【０００４】
制御バス４０上には、制御ステーション１０及び上位装置５０と通信するエンジニアリングステーション８０が接続され、ビルダ８１により上位装置５０で稼動する操作・監視用アプリケーションや制御ステーション１０で稼動する制御アプリケーション２０及びシーケンス制御装置３０で稼動するシーケンス機能ブロックを生成してダウンロードする。
【０００５】
シーケンス制御装置３０は、タイマー制御部３１、イベント制御部３２、定周期実行型シーケンス制御部３３、タイムシェア実行型シーケンス制御部３４、非定型処理機能ブロック格納部３５を備え、登録されている複数の機能ブロックを、テーブルに規定されている実行順序や処理優先度に応じて実行する。
【０００６】
イベント制御部３２は、タイマー制御部３１から通知されたイベントタイミングで、シーケンスの実行順序や処理優先度等に基づいて、定周期実行型シーケンス制御部３３及びタイムシェア実行型シーケンス制御部３４に所定のシーケンス制御の実行要求をする。
【０００７】
定周期実行型シーケンス制御部３３は、所定の制御周期で定型処理機能ブロックを実行する。定型処理機能ブロックは、処理機能が固定化されており、与えられた定型処理を高速で実行するが、ユーザによるカスタマイズには対応していない。
【０００８】
タイムシェア実行型シーケンス制御部３４は、制御周期中の空き時間を利用して、前記非定型処理機能ブロック格納部３５より呼び出される非定型機能ブロックを実行する。非定型処理機能ブロックは、ビルダ８１でユーザにより自由にカスタマイズでき、前記非定型処理機能ブロック格納部３５にダウンロードされ、タイムシェア実行型シーケンス制御部３４から呼び出されて実行される。
【０００９】
所定の制御周期で確実に実行される定型処理機能ブロックは、定期的に決められた処理を行うシーケンスを制御し、非定型処理機能ブロックは、制御周期中の空き時間を利用して時間的な制約が低く、自由なカスタマイズを必要とするシーケンスを制御する。
【００１０】
以後、非定型処理機能ブロックは、ＳＥＢＯＬ（SEquence and Batch Oriented Language）機能ブロックと呼称する。ＳＥＢＯＬは、一般的な汎用プログラミング言語が持つ操作のほかに、バッチ制御に特化した特性を備えたプログラミング言語である。
【００１１】
図８は、従来のシーケンス制御装置における実行リンク生成部の動作を説明する機能ブロック図である。エンジニアは、実行順序定義画面９１に定型処理機能ブロック（PID,SIO,PVI01,PVI02）とＳＥＢＯＬ機能ブロック（SEBOL01,SEBOL02）の実行順を記述する。
【００１２】
更に制御ドローイング画面９２上に、部品化された機能ブロックを部品パレット（図示せず）等から選択して実行順に貼り付けて記述することにより、シーケンスを構築することが可能である。
【００１３】
エンジニアが制御ドローイング９２上に記述した内容を実行リンク生成部９３に渡して処理することにより、定周期実行型シーケンス処理部３３で処理される定型処理機能ブロック（PID,SIO,PVI01,PVI02）の実行順序を規定した定周期実行リンク９４並びにタイムシェア実行型シーケンス制御部３４で処理されるＳＥＢＯＬ機能ブロック（SEBOL01,SEBOL02）の実行順序を規定したタイムシェア実行リンク９５が生成される。
【００１４】
図９は、従来のシーケンス制御装置のシーケンス処理の流れを説明するタイムチャートである。定周期実行型シーケンス制御部３３は、基本制御周期とこれよりは速い中速制御周期及び高速制御周期の少なくともいずれかの制御周期で実行される。
【００１５】
シーケンス制御装置３０では、複数のプログラム単位がその処理優先度に応じて処理を行う。ここでいう複数のプログラム単位とは、高速制御周期Ｔ１、中速制御周期Ｔ２、基本制御周期Ｔ３（例：１秒）のそれぞれで実行されるプログラムである。
【００１６】
図９（Ａ）に示す高速制御周期Ｔ１では、定型処理機能ブロックＡ，Ｂ，Ｃが周期的に実行される。図９（Ｂ）に示す中速制御周期Ｔ２では、定型処理機能ブロックＡ´，Ｂ´，Ｃ´が周期的に実行される。図９（Ｃ）に示す基本制御周期Ｔ３では、定型処理機能ブロックａ，ｂ，ｃが周期的に実行される。
【００１７】
高速、中速、基本制御周期の個々のプログラム単位は、複数の制御ドローイング（図８：９２）から構成される。例えば、基本制御周期で実行される定型処理機能ブロックａの制御ドローイング１００は、複数の機能ブロック１０１乃至１０５から構成される。
【００１８】
各制御周期の機能ブロックは、それぞれ定期的に決められた処理を実行し、処理が完了する前に優先度の高い機能ブロックの処理タイミングに到達したら現在の処理を中断して優先度の高い処理を行った後に中断した処理を再開する。処理の中断は、機能ブロック（例：１０１乃至１０５）の境界で行われる。
【００１９】
図９（Ｄ）は、高速、中速、基本制御周期で実行される定型処理機能ブロック間に生じる空き時間を利用する空き時間プロセスであり、高速、中速、基本制御周期における定型処理機能ブロックが稼動していないタイミングでプログラム単位中最も低い優先度で処理される。
【００２０】
空き時間処理のプログラム単位は、複数の機能ブロック２００から構成される。各機能ブロックは、複数行のプログラミング言語よりなるＳＥＢＯＬ機能ブロックから構成される。
【００２１】
ＳＥＢＯＬ機能ブロックの実行単位は機能ブロック単位ではなく、各機能ブロックを構成するＳＥＢＯＬ複数行（例：２０行）単位で行い、ＳＥＢＯＬ２０行の実行後は、次の機能ブロックのＳＥＢＯＬ２０行を順次実行することにより処理を進める。
【００２２】
高速、中速、基本制御周期では、一定量の処理を一定間隔で行いたい処理（ＳＥＢＯＬ機能ブロック以外のブロック）を実行し、空き時間処理では時間的な制約の低い処理（ＳＥＢＯＬ機能ブロック）を実行する。空き時間処理の中断はＳＥＢＯＬ２０行の境界で行われる。
【先行技術文献】
【特許文献】
【００２３】
【特許文献１】特開平０８−０７６８３６号公報
【非特許文献】
【００２４】
【特許文献２】CENTUM VP リファレンス SEBOL編、資料番号 IM 33M01A30-40、横河電機株式会社
【発明の概要】
【発明が解決しようとする課題】
【００２５】
ＳＥＢＯＬ機能ブロックは、ユーザによる記述、設定の自由度が高く処理時間の変動のブレが大きい。そのため空き時間処理で実行し、空き時間処理で処理しきれない場合は次基本周期の空き時間処理へ処理を持ち越させることを前提とし、それを利点としてきた。
【００２６】
しかしその反面、高速、中速、基本制御周期の処理負荷が重く、空き時間が発生しない場合には長時間に亘り処理できない可能性があり、ＳＥＢＯＬ機能ブロックで定期的に決められた処理を行いたい場合に実行保証ができない問題があった。
【００２７】
本発明の目的は、定周期実行型シーケンス制御部が定型処理機能ブロックを実行する制御周期中でＳＥＢＯＬ機能ブロックを動作させることを可能とするシーケンス制御装置を実現することにある。
【課題を解決するための手段】
【００２８】
このような課題を達成するために、本発明は次の通りの構成になっている。
（１）定型処理機能ブロックを所定の制御周期で実行する定周期実行型シーケンス制御部と、
ユーザにより生成された非定型処理機能ブロックを保持する非定型処理機能ブロック格納部と、
前記制御周期中の空き時間に前記非定型処理機能ブロック格納部より呼び出される前記非定型処理機能ブロックを実行するタイムシェア実行型シーケンス制御部と、
を具備するシーケンス制御装置において、
前記非定型処理機能ブロック格納部に保持され、タイムシェア実行型シーケンス制御部で実行するタイムシェア実行型非定型処理機能ブロックと、
前記非定型処理機能ブロック格納部に保持され、定期的に決められた処理を行いたい場合に用いる定周期実行型非定型処理機能ブロックと、
エンジニアにより記述された、前記定型処理機能ブロックとタイムシェア実行型非定型処理機能ブロックと定周期実行型非定型処理機能ブ ロックの実行順序に基づき、定周期実行型シーケンス処理部で処理される定型処理機能ブロックと定周期実行型非定型処理機能ブロックが混在した機能ブロック の実行順序を規定した定周期実行リンク並びにタイムシェア実行型シーケンス制御部で処理されるタイムシェア実行型非定型処理機能ブロックの実行順序を規定 したタイムシェア実行リンクとを生成する実行リンク生成部と、を備え、
前記定周期実行型シーケンス制御部は、前記定周期実行リンクに基づいてシーケンス制御を実行することを特徴とするシーケンス制御装置。
【００２９】
（２）前記定周期実行型シーケンス制御部は、基本制御周期とこれよりは速い中速制御周期及び高速制御周期の少なくともいずれかの制御周期で実行されることを特徴とする（１）に記載のシーケンス制御装置。
【００３０】
（３）前記非定型処理機能ブロックは、所定行のプログラム単位で実行され、前記制御周期中に前記前記定周期実行型シーケンス制御部より呼び出されて実行される前記非定型処理機能ブロックから前記定型処理機能ブロックへの切換えは、前記プログラム単位の最終行の処理の終了後に実行されることを特徴とする（１）または（２）に記載のシーケンス制御装置。
【００３１】
（４）前記制御周期中に前記定周期実行型シーケンス制御部より呼び出されて実行される前記非定型処理機能ブロックは、繰り返し処理を前記基本制御周期内で１ループに制限したことを特徴とする（１）乃至（３）のいずれかに記載のシーケンス制御装置。
【００３２】
（５）前記制御周期中に前記定周期実行型シーケンス制御部より呼び出されて実行される前記非定型処理機能ブロックは、前方の指定アドレスへジャンプ処理した際にその基本制御周期での処理を中断することを特徴とする（１）乃至（４）のいずれかに記載のシーケンス制御装置。
【発明の効果】
【００３３】
本発明によれば、次のような効果を期待することができる。
（１）本発明により、ＳＥＢＯＬ機能ブロックの実行形態として、時間的な制約が低く、ＳＥＢＯＬ機能ブロックの処理内容が多い場合に用いる既存のタイムシェア実行型ＳＥＢＯＬに加えて、ＳＥＢＯＬ機能ブロックで定期的に決められた処理を行いたい場合に用いる定周期実行型ＳＥＢＯＬを新たな実行形態として追加することができる。
【００３４】
（２）ユーザは、プロセス制御の要件に合わせて、タイムシェア実行型ＳＥＢＯＬと定周期実行型ＳＥＢＯＬの２種類の実行形態を選択することができ、ＳＥＢＯＬ機能ブロックの汎用性を向上させることができる。
【図面の簡単な説明】
【００３５】
【図１】本発明を適用したシーケンス制御装置を有するプロセス制御システムの一実施例を示す機能ブロック図である。
【図２】本発明のシーケンス制御装置における実行リンク生成部の動作を説明する機能ブロック図である。
【図３】本発明シーケンス制御装置のシーケンス処理の流れを説明するタイムチャートである。
【図４】タイムシェア実行型ＳＥＢＯＬが備えるバッファの一般構成を示す機能ブロック図である。
【図５】タイムシェア実行型ＳＥＢＯＬと定周期実行型ＳＥＢＯＬのバッファ競合を説明する機能ブロック図である。
【図６】バッファ競合を生じないタイムシェア実行型ＳＥＢＯＬと定周期実行型ＳＥＢＯＬのバッファ構成を示す機能ブロック図である。
【図７】従来のシーケンス制御装置を有するプロセス制御システムの構成例を示す機能ブロック図である。
【図８】従来のシーケンス制御装置における実行リンク生成部の動作を説明する機能ブロック図である。
【図９】従来のシーケンス制御装置のシーケンス処理の流れを説明するタイムチャートである。図である。
【発明を実施するための形態】
【００３６】
以下本発明を、図面を用いて詳細に説明する。図１は、本発明を適用したシーケンス制御装置を有するプロセス制御システムの一実施例を示す機能ブロック図である。図７で説明した従来構成と同一要素には同一符号を付して説明を省略する。
【００３７】
図１において、図７の従来構成に追加される本発明の特徴部は、定周期実行型シーケンス制御部３００が、非定型処理機能ブロック格納部３５にアクセスし、格納されているＳＥＢＯＬ機能ブロックを呼び出して実行可能とした構成にある。
【００３８】
図２は、本発明のシーケンス制御装置における実行リンク生成部の動作を説明する機能ブロック図である。図８に示す従来の動作との差を説明する。エンジニアは、実行順序定義画面９１´に定型処理機能ブロック（PID,SIO,PVI01,PVI02）とＳＥＢＯＬ機能ブロック（SEBOL(P),SEBOL(T)）の実行順を記述する。
【００３９】
ここで、ＳＥＢＯＬ機能ブロックSEBOL(P)は、定周期実行型シーケンス制御部３００が非定型処理機能ブロック格納部３５から呼び出して実行するＳＥＢＯＬ機能ブロックである。ＳＥＢＯＬ機能ブロックSEBOL(T)は、従来同様にタイムシェア実行型シーケンス制御部３４が非定型処理機能ブロック格納部３５から呼び出して実行するＳＥＢＯＬ機能ブロックである。
【００４０】
更に制御ドローイング画面９２´上に、部品化された機能ブロックを部品パレット（図示せず）等から選択して実行順に貼り付けて記述することによりシーケンスを構築することが可能である。
【００４１】
エンジニアが制御ドローイング９２´上に記述した内容を実行リンク生成部９３´に渡して処理することにより、定周期実行型シーケンス処理部３００で処理される定型処理機能ブロックとＳＥＢＯＬ機能ブロックが混在した機能ブロック（PID, SEBOL(P),SIO,PVI01,PVI02）の実行順序を規定した定周期実行リンク９４´並びにタイムシェア実行型シーケンス制御部３４で処理されるＳＥＢＯＬ機能ブロック（SEBOL(T)）の実行順序を規定したタイムシェア実行リンク９５´が生成される。
【００４２】
ユーザは、定周期実行型シーケンス制御部３００が非定型処理機能ブロック格納部３５から呼び出して実行するＳＥＢＯＬ機能ブロックについては、SEBOL(P)のように識別表記をして実行順序定義９１´及び制御ドローイング９２´に登録することにより、実行リンク生成部９３´が制御周期実行リンク９４´に登録する。
【００４３】
定周期実行型シーケンス制御部３００は、ＳＥＢＯＬ機能ブロックを直接実行することができないため、高速、中速、基本制御周期の実行リンクでＳＥＢＯＬ機能ブロックが出現した場合に、非定型処理機能ブロック格納部３５からＳＥＢＯＬ機能ブロック呼び出して実行する。
【００４４】
図３は、本発明シーケンス制御装置のシーケンス処理の流れを説明するタイムチャートである。図９に示した従来構成と同様に、基本制御周期Ｔ３で実行される定型処理機能ブロックａの制御ドローイング１００は、複数の機能ブロック１０１乃至１０５から構成される。従来技術との相違は、機能ブロック１０２がＳＥＢＯＬ機能ブロックSEBOL(P)である点である。
【００４５】
ＳＥＢＯＬ機能ブロックは、定周期実行型シーケンス制御部３００から処理される場合も、タイムシェア実行型シーケンス制御部３４から処理される場合も、基本的には同一の動作を行うが、以下の点で処理が異なる。
【００４６】
高速、中速、基本制御周期で動作するＳＥＢＯＬ機能ブロック（SEBOL(P)）では、ＳＥＢＯＬ２０行単位で処理を中断せず最後まで処理を継続する。ただし、優先度の高い制御周期の処理タイミング、外部デバイスへのアクセス、プログラミング言語で中断を意味する命令文が出現した場合には中断する。
【００４７】
中断は、ＳＥＢＯＬ２０行の境界で行われ、優先度の高い制御周期による中断に関しては、同一周期内で優先度の高い制御周期の実行完了後に中断されていたＳＥＢＯＬ機能ブロックの処理を再開する。
【００４８】
また、従来のＳＥＢＯＬ機能ブロックは、プログラミング言語の記述内容によらず、基本周期時間の枯渇時には処理を中断するが、定周期実行型シーケンス制御部３００で実行される定周期実行型ＳＥＢＯＬは、基本周期時間が枯渇しても処理を最後まで行う仕様であるため、プログラミング言語の記述内容によっては無限ループが発生し処理が終わらなくなる可能性がある。
【００４９】
定周期実行型ＳＥＢＯＬにおいて、無限ループ発生の要因として考えられる文処理は、特定条件下での繰り返し処理（while、repeat、for）及び指定アドレスへのジャンプ処理(goto)である。
【００５０】
そこで、これらの文処理に対して、定周期実行型ＳＥＢＯＬでは、繰り返し処理（while、repeat、for）は、基本制御周期内に１ループまでとし、指定アドレスへのジャンプ処理(goto)に関しては、前方アドレスにジャンプした際にその基本周期での処理を中断する仕様とすることで、定周期実行型ＳＥＢＯＬでの無限ループを回避することができる。
【００５１】
図４は、タイムシェア実行型ＳＥＢＯＬが備えるバッファの一般構成を示す機能ブロック図である。従来の空き時間処理で発生した外部デバイスへのアクセスを行ったＳＥＢＯＬ機能ブロック４００は、要求の応答があるまで止まる。デバイスからの応答を待つ間バッファ５００を用いてアクセス要求を保持することにより処理を保留し、他のＳＥＢＯＬ機能ブロックの処理を行う。
【００５２】
バッファは、要求の応答があった際に解放される仕様である。バッファ数は有限であるため、応答までに時間がかかる場合や、外部デバイスへの要求がバッファサイズ越えて頻発する場合などにおいてはバッファあふれが発生する。あふれた要求は待ち行列６００に記憶され、バッファＦＵＬＬ状態が外部デバイスからの応答により改善される際にあふれた要求は待ち行列６００からバッファ５００に積み替えられる処理が行われる。
【００５３】
図５は、タイムシェア実行型ＳＥＢＯＬと定周期実行型ＳＥＢＯＬのバッファ競合を説明する機能ブロック図である。これは、本発明で高速、中速、基本制御周期で動作する定周期実行型ＳＥＢＯＬを追加した場合の問題である。
【００５４】
図４に示すように、タイムシェア実行型ＳＥＢＯＬ４００の場合は、単一のプログラム単位でバッファ５００及び待ち行列６００を管理していたため問題にならなかったが、定周期実行型ＳＥＢＯＬ７００とタイムシェア実行型ＳＥＢＯＬ４００の２つのプログラム単位から１つのバッファの管理を行った場合に、処理タイミングが早い処理、例えば定周期実行型ＳＥＢＯＬ７００が全てのバッファ５００を占有してしまう。
【００５５】
その結果、タイムシェア実行型ＳＥＢＯＬ４００の処理が全く行えなくなる可能性がある。これにより、定周期実行型ＳＥＢＯＬ７００とタイムシェア実行型ＳＥＢＯＬ４００）の処理パフォーマンスに極端な差が発生する可能性がある。
【００５６】
図６は、バッファ競合を生じないタイムシェア実行型ＳＥＢＯＬと定周期実行型ＳＥＢＯＬのバッファ構成を示す機能ブロック図である。基本的な構成や動作は従来と同じであるが、タイムシェア実行型ＳＥＢＯＬ４００専用のバッファ５００と待ち行列６００に追加して、定周期実行型ＳＥＢＯＬ７００専用のバッファ８００と待ち行列９００をそれぞれ独立して設けた構成を特徴とする。
【００５７】
タイムシェア実行型ＳＥＢＯＬ４００は、タイムシェア型ＳＥＢＯＬ用のバッファ５００と待ち行列６００で要求の送受信を行ない、定周期実行型ＳＥＢＯＬ７００は定周期実行型ＳＥＢＯＬ用のバッファ８００と待ち行列９００で要求の送受信を行なう。
【００５８】
このように、タイムシェア実行型ＳＥＢＯＬと定周期実行型ＳＥＢＯＬがそれぞれに専用バッファ及び待ち行列を持つことにより、片側の要求が全てのバッファを占有することがなくなる。これにより、タイムシェア実行型ＳＥＢＯＬと定周期実行型ＳＥＢＯＬの処理効率に差が発生する問題が解決される。
【符号の説明】
【００５９】
１０  制御ステーション
２０  制御アプリケーション
３０  シーケンス制御装置
３１  タイマー制御部
３２  イベント制御部
３４  タイムシェア実行型シーケンス制御部
３５  非定型処理機能ブロック格納部
４０  制御バス
５０  上位装置
６０  フィールドバス
７１，７２，…７Ｎ  フィールド機器
８０  エンジニアリングステーション
８１  ビルダ
３００  定周期実行型シーケンス制御部
【図１】
0005120424.tif 000002
【図２】
0005120424.tif 000003
【図３】
0005120424.tif 000004
【図４】
0005120424.tif 000005
【図５】
0005120424.tif 000006
【図６】
0005120424.tif 000007
【図７】
0005120424.tif 000008
【図８】
0005120424.tif 000009
【図９】
0005120424.tif 000010