説明

ループコントローラ

【課題】 基準となる「親」のプログラム部品に対し、同種の他の「子」のプログラム部品を簡単に同期運転を実行することができるループコントローラを提供すること
【解決手段】 時間経過に伴い出力値を求めるプログラム部品を備えたプログラマブルコントローラ用のループコントローラであり、そのプログラム部品は、同一種の物を複数備えるとともに、その複数のプログラム部品の1つが親となり、他のプログラム部品が子となるように設定し、記親に設定されたプログラム部品は、通常のプログラム運転を実行する。子に設定されたプログラム部品は、親のプログラム部品を特定する特定情報(アドレス)を有し、その特定情報に基づき、対応する親のプログラム部品から、実行中の時間データをコピーして取得し、その取得した親の時間データに基づいてプログラムを実行する機能を備えた。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は、プログラマブルコントローラに実装されるループコントローラに関するもので、特に、同一種の複数のプログラム部品(ファンクションブロック)を実行可能とした物において、それら複数の風呂グラム部品の同期をとるようにした技術に関する。
【背景技術】
【0002】
生産工場(製造現場)に設置されるFA(ファクトリーオートメーション)システムの制御をつかさどるPLC(プログラマブルロジックコントローラ)は、制御プログラムに基づいて演算実行するCPUユニット、センサやスイッチなどの入力機器を接続してそれらのオンオフ信号を入力信号として取り込む入力ユニット、アクチュエータやリレーなどの出力機器を接続してそれらに対して出力信号を送り出す出力ユニット、上位端末装置などと接続してそれと情報をやりとりする通信ユニット、各ユニットに電源を供給する電源ユニット、など複数のユニットを組み合わせることにより構成されている。そしてPLCは、入力ユニットで入力した信号をCPUユニットのI/Oメモリに取り込み(INリフレッシュ処理)、予め登録されたラダー言語で組まれた制御プログラムに基づき論理演算をし(プログラム演算実行処理)、その演算実行結果をI/Oメモリに書き込んで出力ユニットに送り出し(OUTリフレッシュ処理)、その後、ネットワーク接続された上位端末装置や表示器等と通信する(周辺サービス処理)、といった各処理をサイクリックに繰り返す。
【0003】
ところで、CPUユニットは、通常、上記したユーザプログラムを格納するRAMやシステムプログラムを格納するROMや、上記した演算処理等を実行するMPUや、演算実行する際に使用するRAM(共有メモリ,I/Oメモリ,ワークメモリ)等を備えて構成される。これに対し、CPUユニット内に、インテリジェントな高機能ボードである特殊機能モジュールを着脱可能に実装したタイプのものもある。このように高機能ボードと同様の機能をPLCを構成する別途のユニットとして実現した高機能ユニットもある。このように、CPUユニット無いに実装するボードタイプや、別構成のユニットタイプのいずれにおいても、そこにおいて実行される基本的な機能は同じである。
【0004】
この高機能モジュール(ボードタイプ),高機能ユニットで行う制御の一つとしては、例えば、温度等のアナログ値を受け、PID制御を行う等の専用のプロセス制御(アナログ制御)のプログラムを実施する機能を持つものや、時間と出力を折れ線で設定したウェイト機能付きの折れ線プログラム(時間の経過に伴い予め設定した折れ線(一次関数で特定される値を求め、設定値・目標値等の出力値として出力するプログラム)を実行するものなど、各種のものがある。上述したごとく、これらの高機能でインテリジェントな機能を実現する機器は、CPUユニット内に実装するボードタイプと、別体のユニットがあるが、本明細書では、それらを総称してループコントローラと称する。
【0005】
これらループコントローラは、CPUユニットの演算処理とは非同期に所定の制御を実行することにより、制御の高速化・高度化を図ることができるようになっている。また、ループコントローラは、自らの運転状態をCPUユニットのI/Oメモリ上に常に反映させている。
【0006】
さらに、ループコントローラを実際に使用するには、まず、予め用意された上記の各種の制御・機能を実現するためのプログラム部品(ファンクションブロック)の中から使用するプログラムを選択するとともに、そのプログラムを動作させるのに必要なパラメータを設定する。例えば、折れ線プログラムの場合、制御パターンとなる折れ線を特定するため、各ステップの時間軸条件(時間幅,単位等)と、各ステップの最終目標設定値(出力値)等を入力する。これにより、各ステップの最終も熊表設定値を、ステップの順に結ぶことにより制御パターンとなる折れ線が生成される。
【発明の開示】
【発明が解決しようとする課題】
【0007】
1つのループコントローラ内には、複数の種・或いは同一種の複数個のプログラム部品を実装することができる。この場合に、実行タイミングが来ると予め決定した適宜の順で、各プログラム部品を実行させることになる。これにより、例えば図1に示すように、工業炉1の内部の温度をループコントローラで制御するようなことができる。すなわち、工業炉で1は、炉自体が大きいため、1個の熱源を用いて工業炉1の内部全体の温度を制御しようとすると、温度ムラが発生してしまう。そこでこれを防止するために、通常複数の熱源を用いることにより、温度を均一にする。この熱源を制御するために、例えば折れ線プログラムを用いた目標値(設定温度)を指定するが、温度ムラを加味した目標値とする必要があり、熱源ごとにそれぞれに適した目標値を設けるとともに、時間の経過によって各目標値を変更させる。これにより、図1に示すように、必ずしも全ての熱源を制御する折れ線プログラムの制御パターンが一致しないが、結果として工業炉1の内部の温度ムラを可及的に抑制できるようになる。
【0008】
このように複数のプログラムを同時に実行させることにより、温度ムラの抑制を図ることが可能となる。この温度ムラの抑制を図るためには、上記の複数の熱源を制御するプログラム部品(たとえば折れ線プログラムを実行するファンクションブロック)のプログラム運転を同期させる必要がある。しかし、従来、ファンクションブロックを同期をさせるための特別な機能はなく、プログラムの進行を一時停止したり、強制的に進めたりするといった時間進行に変化を与えるような操作を実行する場合には、すべてのプログラムに対して同時に係る指令を与えるようにしていた。
【0009】
ところで、このようにプログラム進行の一時停止や、強制的に進めたりする範囲の操作であれば、その指令をすべてのプログラムに同時に与えることで同期をとることは可能である。しかし、基準となるプログラム運転においてPVスタート(運転開始時のPV(present value)と一致するポイントからプログラム運転を開始する機能)させ、他のプログラム運転も同じ開始時刻より、運転を開始するような要求に応えることは難しく、実現するためには、ユーザプログラムによって、他のプログラム運転の開始位置を修正するといった対応が必要であった。
【0010】
さらに、従来方式では、同期対象のプログラムのパラメータを設定するに際し、全てのプログラムに対して同一の時間設定を行なう必要があり、仮に、係る設定を間違えると同一タイミングで目的とする目標値の変更ができず同期運転と同等の処理・効果が得られなくなる。さらには、ステップの時間設定を変更する場合には、全てのプログラムパターンに対して係る変更を行なう必要があり、非常に煩雑である。
【0011】
この発明は、基準となるプログラム部品に対し、簡単に同期運転を実行することができるループコントローラを提供することを目的とする。
【課題を解決するための手段】
【0012】
本発明に係るループコントローラは、プログラムパターンが設定され、それを実行して出力値を求めるプログラム部品を備えたプログラマブルコントローラ用のループコントローラであって、前記プログラム部品は、同一種の物が複数備えるとともに、その複数のプログラム部品の1つが親となり、他のプログラム部品が子となるように設定され、前記親に設定されたプログラム部品は、通常のプログラム運転を実行するようにし、前記子に設定されたプログラム部品は、親のプログラム部品を特定する特定情報(アドレス)を有し、その特定情報に基づき、対応する親のプログラム部品から、同期に必要な情報を取得する手段と、その取得した情報を元に親のプログラム部品のプログラム実行に同期をとって自身のプログラム運転を行うようにした。
【0013】
このようにすると、例えば親のプログラム部品が停止・一時停止したりすると、このプログラム部品も同期して停止したり・一時停止したりする。つまり、ユーザ等からの指示は、親のプログラム部品に対して行なうだけで、それに関連する全ての子のプログラム部品も停止する。
【0014】
前記プログラムパターンは、時間経過に伴い出力値を求めるものであり、前記子に設定されたプログラム部品は、対応する親のプログラム部品に対して設定されたプログラムパターンの時間データをコピーして取得し、その取得した親の時間データに基づいてプログラムを実行するようにすることもできる。
【0015】
さらに、前記時間データは、時間軸を複数のステップに分割して構成され、親のプログラム部品に対して任意のステップを指定し、その指定したステップからプログラムの実行を行なうことができるようにすることができる。
【0016】
このようにすると、子の時間デーは親の時間データと等しくなるため、親に対する時間経過を一時停止したり、強制的に進めたりした場合には、自動的に子の時間データも同一タイミングで変更することができ、どうかを簡単かつ確実にとることができる。
【0017】
つまり、プログラム運転のプログラムパターンを設定するプログラム部品(ファンクションブロック)に対して、親か子かの設定をしておくことで、時間進行に関わる操作は親に対してのみ実行すれば良い。ステップ時間の変更も親に対してのみ実行すれば良い。基準となるプログラム運転においてPVスタートをさせた場合でも自動的に同期運転ができる。
【0018】
また、前記子に設定されたプログラム部品は、独立してプログラム実行を停止する機能を備えるとよい。本発明は、基本的には親のプログラム部品の動作に同期してこのプログラム部品も動作するため、親のプログラム部品が実行されれば、このプログラム部品も実行され、親のプログラム部品が停止すればこのプログラム部品も停止する。たとえは、ある子のプログラム部品により制御される制御対象二位所等が生じた場合、子のプログラムを単独で停止する機能を備えていると、係る場合に迅速かつ影響のあるもののみ停止できる。
【発明の効果】
【0019】
本発明では、基準となるプログラム部品に対し、同種の他のプログラム部品を簡単に同期運転を実行することができる。
【発明を実施するための最良の形態】
【0020】
図2は、本発明のループコントローラが実装されるPLC10の一例を示している。PLC10は、複数のユニットを連結して構成されている。すなわち、電源ユニット11と、CPUユニット12と、アナログ入力ユニット13と、アナログ出力ユニット14と、その他の所定のユニット15とを備えている。もちろん、PLCの構成は、図示するものに限ることなく、必要に応じて所望のユニットを追加接続可能である。本実施の形態では、ループコントローラ20は、CPUユニット12のスロット12aに実装するインナーボードタイプである。もちろん、ユニット形式として実現しても良い。
【0021】
また、CPUユニット12には、RS232Cなどのシリアルインタフェース12bを備え、そのシリアルインタフェース12bにツール40を接続すると、そのツール40を介してCPUユニット12のユーザメモリ,I/Oメモリ等のデータメモリにユーザプログラムや各種のパラメータを書き換えすることができる。本発明との関係でいうと、ループコントローラ20で使用するファンクションブロックの指定や、そのファンクションブロック(プログラム)を実行するのに必要なパラメータ等をCPUユニット12のデータモリに格納し、インナーバスを介してループコントローラ20がデータメモリに格納されたデータを取得し、所定の機能(プログラム)を実行する。
【0022】
図3は、ループコントローラ20の内部構成を示している。このループコントローラ20は、外部インタフェースとしては、RS232Cポート21を有している。このRS232Cポート21は、温度調節器などと直接シリアル通信するためのポートであり、入出力可能となっている。また、外部に対する報知機能として、LED22も備えている。このLED22は、CPUユニット12とのバスが確立していることや、ファンクションブロックやシミュレーション機能が動作中であることや、RS232Cポート21経由で、データ通信していることなどを示すものである。また、実装されたCPUユニット12との間でデータの送受をするためのインナーバスインタフェース23も備えている。このインナーバスインタフェース23を介してCPUユニット12のデータメモリとの間でデータ更新を行う。
【0023】
具体的なデータ交換は、CPUユニットメモリアクセス機能24や外部メッセージ通信処理部25が実行し、上記のバスインタフェース23を介して所定のデータを送受する。すなわち、外部メッセージ通信処理部25は、専用ツールからのパラメータ設定や、パラメータ読出を行うための、メッセージコマンドをCPUユニット12経由で受信し、それに対するレスポンスデータを送信する機能を有する。つまり、パラメータ設定のメッセージコマンドは、受信機能で受信し、受信したパラメータをパラメータ設定処理部26に渡す。すると、パラメータ設定処理部26は、外部メッセージ通信処理部25(受信機能)から取得したパラメータを記憶素子(SRAM)27に格納する。また、外部メッセージ通信処理部25が受信したメッセージがパラメータ読出の場合、受信機能からパラメータ設定処理部26を介して記憶素子27に格納された指定されたパラメータを読み出し、外部メッセージ通信処理部25の返信機能がレスポンスとしてその読み出したパラメータを返信する。また、記憶素子27はSRAMで揮発性メモリであるため、そこに記憶されたパラメータは、FROMバックアップ機能28により読み出し、不揮発性記録素子(FROM)29に記憶する。
【0024】
CPUユニットメモリアクセス機能24は、CPUユニット間バス経由で、1ワード単位で、データ送受信できる手段である。これによりCPUユニット12上のデータメモリ(I/Oメモリ)とのデータ交換を行う。すなわち、たとえばアナログ入力ユニット13を介して取得した入力データがCPUユニット12のデータメモリ(I/Oメモリ)に格納されるため、それをCPUユニットメモリアクセス機能24の入力インタフェース24aを介して取得し、ファンクションブロック31に与える。また、ファンクションブロック31により実行して得られた演算結果を指定値(指令値・設定値)は、CPUユニットメモリアクセス機能24の出力インタフェース24bからバスインタフェース23を介してCPUユニット12のデータメモリに書き込まれる。
【0025】
ファンクションブロック実行処理部31は、実装された所定のファンクションブロックを実行するものである。ファンクションブロックとしては、折れ線プログラムブロック,PIDブロック,オンオフ制御ブロック,警報ブロック,四則演算ブロックなどがある。専用ツールにより自由にプログラミングできる。さらに、ファンクションブロック実行処理部31にて実際に各ファンクションブロックを実行する際には、記憶素子(SRAM)27上にあるパラメータを用いて、各種処理を行う。
【0026】
なお、ファンクションブロック実行処理部31に格納された各ファンクションブロック(プログラム部品)は、ファンクションブロックプログラム管理部30からのコール命令を受けて実行される。このコール命令は、内部クロック30aにより予め設定されたスキャン周期に来たならば、そのファンクションブロック管理部30が発行する。
【0027】
図4は、ループコントローラ20を含むPLC10の内部構造並びに外部の装置等との接続形態の概略を示している。この図では、取得してデータの流れ・転送状態を中心に、必要な要素を図示して説明している。このPLC10では、ループコントローラ(ループコントロールボード)20を内蔵するCPUユニット12と、アナログ入力ユニット(ADユニット)13と、アナログ出力ユニット(DAユニット)14を接続している。そして、実際の制御対象41に設置したセンサから、例えば液面,圧力,温度などのアナログデータを取得するとともに、アナログ入力ユニット(ADユニット)13のI/Oメモリ13aの所定エリアに格納する。このI/Oメモリ13aに格納されたデータ(AD変換値(入力))は、I/Oバス10aを介してCPUユニット12のI/Oメモリ12cの所定エリアに転送される。
【0028】
ループコントローラ20は、予め設定されたCPUユニット12のI/Oメモリ12cの所定エリアを定期的にアクセスして取得するため、そのI/Oメモリ12cに格納されたAD変換値(入力)は、CPUユニット12のインナーバス12bを介して入力インタフェース24aが取得し、ファンクションブロック実行処理部31に渡す。ここでは、係るAD変換値(入力)を、PID制御を実行するPIDブロックに対し、入力値として渡している。PIDブロックは、与えられた入力値に基づきPID演算を行なう。そして、算出して得られた出力値は、出力インタフェース24bを介してインナーバス12b経由でCPUユニット12のI/Oメモリ12cに格納する。この格納されたデータがアナログ出力ユニット(DAユニット)14のI/Oメモリ14bに転送され、制御対象41のバルブの開度などの指令値として出力される。このようにすることにより、アナログデータに基づくPID制御が行なわれる。
【0029】
ファンクションブロック実行処理部31で実行されるファンクションブロックは、上記のPIDブロック以外にも各種の物があることはすでに説明したとおりであり、例えば折れ線プログラムを実行するファンクションブロックの場合、演算実行中は、内部タイマなどに従って逐次演算処理をし、その結果を出力インタフェース24bを介してI/Oメモリ12cに書き込むことで、アナログ出力ユニット14のI/Oメモリ14aに転送され、そのアナログ出力ユニット14に接続された熱源となるヒータ等の動作の制御を行なうことになる。そして、入力インタフェース24aを介しては、例えば、演算処理の開始タイミングの指示や、ウェイト指示や、スキップ(別のステップに飛ぶ)などの動作時間軸の変更命令などを受ける。
【0030】
次に、折れ線プログラムにおいて設定するパラメータについて説明する。折れ線プログラムは、例えば図5に示すように、時間経過(横軸)にともない縦軸の指令値が一時直線で変化する折れ線で表現され、各折れ点(頂点,谷点)ごとにステップに分けられる。その結果、通常複数のステップ(図ではA1からA6)を有し、1つのステップ内では一次関数で定義することができる。そして、設定するパラメータとしては、例えば、横軸の時間に関する条件として、ステップごとに、時間幅や、時間単位(秒、分、時間)等を設定する。また、各ステップの終了時の出力値(指令値)の目標値(B0,B1,B3,…)や最終折れ点、その他各種のパラメータを設定する。すると、1つの前のステップの終了時の出力値は、現在のステップの開始時の出力値と言うことになる。そして、各ステップの任意の場所における指令値は以下の式により求めることができる。
Y1=(T1*(Bn)−B(n−1))/T2+B(n−1) (1)
Y1:(プログラム出力値)
T1:ステップ内経過時間タイマ
T2:ステップ時間幅
B(n):ステップ(n)の目標値
n:実行中ステップNo.
【0031】
なお、係る演算処理を実行する間隔(周期)をスキャン周期等としてパラメータ登録をする。このスキャン周期は、ファンクションブロック管理部30が持つ内部クロック30aにより管理し、指定されたスキャン周期に来ると、該当するファンクションブロックに対して実行命令(CALL)する。
【0032】
また、実際の動作中に与えられる命令にともなう機能としては、一時停止命令や、ウェイト命令や、ステップ移行指令等がある。一時停止命令は、図5中に示す時間停止指令(S2)であり、この指令がONの間、指令値を保持する。ウェイト命令を受けると、出力の値をそのステップの最終値にするとともに、指定されたウェイト幅(これも、パラメータとして予め設定される)だけその値を保持する。その後次のステップに移行して時間計測を開始し、時間経過に伴う出力値の折れ線変化を行なう。例えば、図5におけるステップA1の途中でウェイト命令を受けると、出力値をB1にするとともに、そのB1の値をウェイト幅だけ保持(ホールド)し、その後、つぎのA2ステップに移行し、上記の式(1)で規定される時間経過に伴う出力値Y1を求め、出力する処理を行なうステップ以降異例は、文字通り指定されたステップに飛び、その後、時間計測を開始し、そのステップにおいて時間経過に伴う出力値の折れ線変化を行なう物である。例えば、頭5のA1のステップの実行中にA5のステップの移行命令を受けると、A5のステップに飛び、そのA5ステップを実行する。もちろん、上述した機能は基本的な動作であり、それらを組み合わせたり、さらに別の機能も備えている。
【0033】
ここで本発明では、同期運転させるプログラムについては、親子関係を持たせるようにした。そし、「親」ブロックについては、通常のパラメータの設定を行ない、従来と同様の処理に従い動作させる。これに対し、「子」ブロックは、時間軸の設定以外は通常のパラメータ(各ステップの目標値,スキャン周期等)の設定を行なう。そして、時間軸の設定を行なわない代わりに、「親」ブロックを特定する特定情報として「親」ブロックが格納・設定されるブロック番地(アドレス)を登録する。そして、「子」ブロックは、自己が実行する際の基準となる時間軸は、関連する親ブロックからの時間情報を取得し、そのときの時刻を自己の経過時間と設定した。つまり、「子」ブロックでは、時間軸に関する情報は、パラメータ登録せず、常に、関連得る親ブロックの時間軸についての情報(現在、実行中のステップNo.,そのステップでの経過時間,一時停止指令や、ウェイト命令等を受けていないかなど)を取得し、取得した時間軸についての情報を自己の時間軸に設定し、それに基づいて上述した式(1)に基づいてその「子」ブロックについての出力値を演算し、出力する。
【0034】
具体的には、「子」ブロックは、図6に示すフローチャートを実行する。なお、コールを受けた「親」ブロックは、通常の処理(従来公知の処理)をする。ファンクションブロック管理部30は、各ファンクションブロックに設定されたスキャン周期に来たら、そのファンクションブロックに対して実行命令としてコールをする。従って、各ファンクションブロックは、そのコールを受けるのを待つ(S11)。なお、このファンクション管理部30からコール命令は、全てのファンクションブロックに対して一斉に行なわれるわけではなく、所定の順(例えばアドレス順)で実行されることになる。従って、図7に示すように、まず「親」ブロックに対してコール命令が与えられ、それが実抗されると、順次子ブロックに対してコール命令がなされる。従って、各「子」ブロックは、直前の実行された「親」ブロックの時間軸情報を取得し、それをすぐに反映して追従等することができる。
【0035】
コールを受けた「子」ブロックは、「親」ブロック正当性を確認する(S12)。すなわち、その子ブロックのパラメータの1つとして設定されている親ブロックのブロック番地(アドレス)に登録されている、親ブロックが自己と同じ「折れ線プログラム」であるか否かを確認する。異なって入れば異常となり、実行エラーコードをメモリの所定エリアに登録する(S22)。なお、この所定エリアに右登録されエラーコードは、所定のタイミングでCPUユニットに呼び出され、ファンクションブロックごと操作のミスや設定値ミスをユーザに知らせることができる。
【0036】
「親」ブロックの正当性が確認されたならば、「親」ブロックに設定されたスキャン周期と、自己に設定されたスキャン周期が一致するか否かを確認する(S13)。異なるときは、実行エラーとなり、所定のエラー度を登録する(S22)。
【0037】
両者のスキャン周期が一致すれば、次は、「親」ブロック運転開始状況を確認する(S13)。すなわち、「子」ブロックは、「親」ブロックと同期して運転するため、「親」ブロックの動作指令がONになって動作開始(運転中)であるか否かを判断する。動作指令がONの場合には、対応する「親」ブロックも運転しているため、それに合わせて「子」ブロックも運転にする(S14)。つまり、その「子」ブロックに対する動作指令もONにする。そして「子」ブロックが運転開始していることを確認する(S15)。「子」ブロックに対して停止命令等が発せられている場合には、ステップ23に飛び、その「子」ブロックのみ停止する。
【0038】
「子」ブロックが運転中であれば、ついで、「親」ブロックが正常運転をしているか確認する(S16)。すなわち、「親」ブロックが実行エラーになっていないことを確認する。もし実行エラーになっている場合には、ステップS22に飛び、実行エラーコードの登録を行なう。
【0039】
さらに、「親」ブロックが正常運転している場合には、「親」ブロックの間時間軸停止中華否かを判断する(S7)。すなわち、「親」ブロックに対する時間軸停止指令がONになっているか否かを判断する。「親」ブロックの時間軸停止指令がONとなり、停止しているときは、「子」ブロックもプログラムを一時停止させる(S18))。
【0040】
一方、「親」ブロックが時間軸停止指令も受けておらず、正常に動作している場合には、「親」ブロック進捗状態を複写する(S20)。すなわち、「親」ブロックについての経過時間出力値(動作指令ONからの経過時間),ステップ出力値(実行中のステップNo.を示す),経過時間単位(時間軸(横軸)の単位),時間軸停止指令(プログラム運転を一時停止させる指令),最終折れ点到達(プログラムが最終ポイントまで実行したことを示す情報),ウェイトに関する情報(ウェイト中か否か、ウェイト幅等),各ステップの時間幅(横軸)及び時間軸(横軸)の単位を設定ならびにステップ実行中フラグ(現在実行中のステップを示すフラグ)を取得する。
【0041】
ついで、「子」ブロックの出力値を計算する(S21)。すなわち、ステップS20で取得した情報に基づき、「親」ブロックが現在どのステップを実行中で、そのステップにおける経過時間や、運転状況(一時停止,ウエイトの有無)等がわかおる。そこで、下記式に必要な情報を代入し、現在の出力を求める。

Y1=(T1*(Bn)−B(n−1))/T2+B(n−1) (1)
Y1:(プログラム出力値)
T1:ステップ内経過時間タイマ
T2:ステップ時間幅
B(n):ステップ(n)の目標値
n:実行中ステップNo.
【0042】
ここで目標値B(n),B(n−1)は、その「子」ブロックに対して予めパラメータとして設定された値であり、T1,T2,nが「親」ブロックから取得したデータである。
【0043】
また、ステップ13,15の分岐判断にて「親」ブロックが運転停止していたり、「子」ブロックが運転開始しない場合には、ステップ23に飛び、「子」ブロック・リセット処理をする。具体的には、「親」ブロック、「子」ブロックの動作指令がOFFのとき、すなわち、プログラム出力値,経過時間出力値(動作指令ONからの経過時間を示す),ステップ出力値(実行中のステップNo.を示す),(時間軸停止指令(プログラム運転を一時停止させる指令),最終折れ点到達(プログラムが最終ポイントまで実行したことを示す情報),ウェイト中等の変数を0クリアする。
【0044】
図6に示すフローチャートを、毎スキャンごとに行なう。これにより、例えばオペーレータが制御(目標値の変更を停止)をする際にも、「親」ブロックのみ対象に停止をすれば、「子」の時間も停止する。さらに、従来であれば、各制御対象(例えば熱源)の目標値の変更を同期させるプログラムを制御するためのプログラムを構築する必要があるが。本機能を使えば、基準となる「親」ブロックを指定するだけで、親に対して操作すれば、子ブロックも時間を同期して動作することができる。
【0045】
また、「子」ブロックは「親」ブロックの時間軸に同期して動作するため、例えば、下り勾配ステップ(例えば図5のA2やA6などのステップ)で、電断したときに、再開時に、その下り区間のステップから、再開させたいという要求がある場合に、「親」ブロックに対して再開時の開始ステップ(例えばA6)を指定して実行すると、「子」ブロックもそれに追従して下り勾配ステップのA6から実行することができる。
【図面の簡単な説明】
【0046】
【図1】ループコントローラが実行する複数のプログラム部品(ファンクションブロック)が同期して動作させる必要性がある制御対象の一例を示す図である。
【図2】本発明が適用されるプログラマブルコントローラの一例を示す図である。
【図3】本発明に係るループコントローラの好適な一実施の形態を示す図である。
【図4】本発明に係るループコントローラの好適な一実施の形態を示す図である。
【図5】折れ線プログラムを説明する図である。
【図6】「子」の折れ線プログラム(ファンクションブロック)の機能を説明するフローチャートである。
【図7】各ファンクションブロックの実行順を説明するフローチャートである。
【符号の説明】
【0047】
10 PLC
11 電源ユニット
12 CPUユニット
13 アナログ入力ユニット
14 アナログ出力ユニット
20 ループコントローラ
30 ファンクションブロック管理部
31 ファンクションブロック実行処理部
40 ツール

【特許請求の範囲】
【請求項1】
プログラムパターンが設定され、それを実行して出力値を求めるプログラム部品を備えたプログラマブルコントローラ用のループコントローラであって、
前記プログラム部品は、同一種の物が複数備えるとともに、その複数のプログラム部品の1つが親となり、他のプログラム部品が子となるように設定され、
前記親に設定されたプログラム部品は、通常のプログラム運転を実行するようにし、
前記子に設定されたプログラム部品は、前記親のプログラム部品を特定する特定情報(アドレス)を有し、その特定情報に基づき、対応する親のプログラム部品から、同期に必要な情報を取得する手段と、その取得した情報を元に親のプログラム部品のプログラム実行に同期をとって自身のプログラム運転を行うようにしたことを特徴とするループコントローラ。
【請求項2】
前記プログラムパターンは、時間経過に伴い出力値を求めるものであり、
前記子に設定されたプログラム部品は、対応する親のプログラム部品に対して設定されたプログラムパターンの時間データをコピーして取得し、その取得した親の時間データに基づいてプログラムを実行することを特徴とする請求項1に記載のループコントローラ。
【請求項3】
前記時間データは、時間軸を複数のステップに分割して構成され、
親のプログラム部品に対して任意のステップを指定し、その指定したステップからプログラムの実行を行なうことができるようにしたことを特徴とする請求項1または2に記載のループコントローラ。
【請求項4】
前記子に設定されたプログラム部品は、独立してプログラム実行を停止する機能を備えたことを特徴とする請求右1から3のいずれか1項に記載のループコントローラ。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate


【公開番号】特開2006−48184(P2006−48184A)
【公開日】平成18年2月16日(2006.2.16)
【国際特許分類】
【出願番号】特願2004−224873(P2004−224873)
【出願日】平成16年7月30日(2004.7.30)
【出願人】(000002945)オムロン株式会社 (3,542)
【Fターム(参考)】