JP2589791B2 - ループ制御装置 - Google Patents

ループ制御装置

Info

Publication number
JP2589791B2
JP2589791B2 JP31385088A JP31385088A JP2589791B2 JP 2589791 B2 JP2589791 B2 JP 2589791B2 JP 31385088 A JP31385088 A JP 31385088A JP 31385088 A JP31385088 A JP 31385088A JP 2589791 B2 JP2589791 B2 JP 2589791B2
Authority
JP
Japan
Prior art keywords
control
execution
machine language
task
cycle
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP31385088A
Other languages
English (en)
Other versions
JPH02159603A (ja
Inventor
尚 齋藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Japan Tobacco Inc
Original Assignee
Japan Tobacco Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Japan Tobacco Inc filed Critical Japan Tobacco Inc
Priority to JP31385088A priority Critical patent/JP2589791B2/ja
Publication of JPH02159603A publication Critical patent/JPH02159603A/ja
Application granted granted Critical
Publication of JP2589791B2 publication Critical patent/JP2589791B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Landscapes

  • Control By Computers (AREA)

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明は、一般的にはプロセス制御におけるループ制
御を行うのにデジタル計算機(CPU)を用いたループ制
御装置に係り、より詳細には制御対象とするループ数を
増大することができるようにしたループ制御装置に関す
るものである。
〔従来の技術〕
従来この種の装置の一例として、第19図に示すよう
に、制御対象とするループ数に応じて制御周期を切換え
て制御を行うようにしたものがる。すなわち、制御対象
のループ数が少ないとき(CPUの負荷が重いとき)第19
図(a)に示すように、例えば200msecの速い制御周期
でA/D変換等によるサンプリング、PID等のアルゴリズム
によるMV算出、D/A変換等による制御出力等の一連の制
御動作を行い、制御対象のループ数が多いとき(CPUの
負荷が重いとき)第19図(b)に示すように、例えば1s
ecの遅い制御周期で全ループの制御動作を行っている。
他の装置例として、第20図に示すように、制御対象の
ループの特性に応じて制御対象毎に制御周期を換えて制
御を行うようにしたものがある。すなわち、積分時間を
長く取る必要があるプロセスを制御する場合、CPUの負
荷を軽減するために1つのCPUに複数の制御周期を持た
せ、ループ毎にその特性に応じて例えば1,2,4secのいず
れかの制御周期を割り当てている。第20図(a)はサン
プリング動作の期間を示し、サンプリング周期は制御周
期の最大公約数に定められ、この期間内に全ループの制
御が行われるようにしている。なお、この方式では、A/
D変換等によるサンプリングはサンプリング周期を守る
ため一連の制御動作から切り離して行っている。第20図
(b),(c)及び(d)は1sec,2sec,4sec周期のMV算
出、D/A変換等による制御出力の動作期間をそれぞれ示
し、4sec周期の動作期間は次のサンプリング動作前に終
了していることが条件となる。
〔発明が解決しようとする課題〕
第19図について上述した従来装置では、制御対象のル
ープの特性の違い、すなわち速い応答性を持つループと
遅い応答性を持つループとがあるにも拘ず、CPUの負荷
という要因で一括して制御周期が決定されている。ま
た、ループ数が少々多い程度(CPUの負荷が若干重い程
度)のときCPUの空き時間が多く、ハードウエア資源の
有効活用ができず、制御ループの総数が多くとれないと
いう問題点がある。
一方、第20図について上述した従来装置では、全ての
制御周期の最大公約数時間例えば1sec内で全ての制御周
期の制御動作が終了していなければならないという制限
が付いているため、最大公約数時間内で一部の制御周期
の制御動作を行うときコンピュータ(CPU)の空き時間
が多く、ハードウエア資源の有効活用ができないという
問題がある。
上述した従来の装置の問題点は、CPUの駆動形態とし
てシングルタスクと呼ばれる方式を採用しているため生
じるものであり、この問題点を解消するにはマルチタス
ク動作とすればよいということは分かっているが、従来
装置ではテーブルに記憶されているパラメータを固定の
ファームウエアが静的なワークエリア1組を使いながら
インタプリトする、すなわち解釈実行する方式を採用し
ているため、マルチタスク化することができなかった。
よって本発明は、制御動作を効率的におこなって、複
数の制御周期のうちの1つがそれぞれ割り当てられてい
る制御対象を制御することのできる数、すなわち制御す
ることのできるループ数を増大できるようにしたループ
制御装置を提供することを課題としている。
〔課題を解決するための手段〕
上記課題を解決するため本発明により成されたループ
制御装置は、第1図の基本構成図に示す如く、複数の制
御周期のうちの1つがそれぞれ割り当てられている制御
対象Aからその制御量を入力する入力手段Bと、制御対
象Aにその制御操作量を出力する出力手段Cと、制御対
象Aをその制御周期毎に制御するためのループ制御機能
情報を機械語で格納する機械語記憶手段Dと、前記複数
の制御周期の各々での前記機械語の実行に先立ち、該機
械語で使用する前記入力手段Bに入力されている制御量
を格納する制御量記憶手段Eと、各制御周期毎に前記機
械語を前記制御量記憶手段Eに格納されている制御量を
用いて実行し、該実行により得られる制御操作量を前記
出力手段Cから制御対象Aに出力する制御実行手段F
と、各制御周期毎に設けられ、前記制御実行手段Fによ
る機械語の実行中に発生する情報をその実行の終了まで
格納する記憶手段Gと、前記制御実行手段Fによる制御
実行動作を管理する管理手段Hとを備える。
前記管理手段Hは、前記制御実行手段Fによる制御周
期の長い機械語の実行を制御周期の短い機械語の実行終
了後開始させ、前記制御実行手段Fによる制御周期の長
い機械語の実行中の制御周期の短い機械語の実行開始に
応じて制御周期の長い機械語の実行を中断させ、該中断
した機械語の実行を短い制御周期の機械語の終了後に前
記制御実行手段Fに再開させる。
〔作 用〕
上記構成において、入力手段Bは複数の制御周期のう
ちの1つがそれぞれ割り当てられている制御対象Aから
その制御量を入力し、出力手段Cは制御対象Aにその制
御操作量を出力する。機械語記憶手段Dは制御対象Aを
その制御周期毎に制御するためのループ制御機能情報を
機械語で格納する。制御量記憶手段Eは前記複数の制御
周期の各々での前記機械語の実行に先立ち、該機械語で
使用する前記入力手段Bに入力されている制御量を格納
する。制御実行手段Fは各制御周期毎に対応する前記機
械語を前記制御量記憶手段Eに格納されている制御量を
用いて実行し、該実行により得られる制御操作量を前記
出力手段Cから制御対象Aに出力する。該制御実行手段
Fによる機械語の実行中に発生する情報は各制御周期毎
に設けられた記憶手段Gに格納される。前記制御実行手
段Fによる制御実行動作は管理手段Hにより管理され
る。
前記管理手段Hは、前記制御実行手段Fにより実行す
る機械語の優先順位を管理する。2つの制御周期の機械
語の実行タイミングが同時に発生した場合、制御周期の
短い機械語の実行を制御周期の長い機械語の実行に優先
させて実行し、制御周期の短い制御周期の実行終了後に
制御周期の長い機械語の実行を開始させる。また管理手
段Hは、前記制御実行手段Fが制御周期の長い機械語を
実行している最中に制御周期の短い機械語の実行タイミ
ングが発生したとき、現在実行している制御周期の長い
機械語の実行を中断させ、これに代えて制御周期の短い
機械語の実行を開始させる。そして、該中断した制御周
期の長い機械語の実行を短い制御周期の機械語が終了し
た後に前記制御実行手段Fに再開させる。
このように管理手段Hが制御周期の長い機械語の実行
を中断し、後に再開される制御を行っているが、各制御
周期毎に機械語の実行中に発生する情報を格納する記憶
手段Gが設けられているため、機械語の中断によって情
報が失われてしまうことがなく、中断された機械語の再
開実行を正常に行うことができる。
〔実施例〕
以下、本発明の実施例を図面に基づいて説明する。
第2図は本発明によるループ制御装置の一実施例を示
すブロック図であり、図示ループ制御装置は、専用のデ
ジタル計算機によって構成されている。
同図において、1aはCPUであり、予め定められた制御
プログラムに従って動作し、後述する各種の仕事を行
う。1bはEPROMであり、これには制御プログラムの他、
演算式コンパイラ、組込みサブルーチン等のプログラム
が格納されている。1cはCMOS−SRAMであり、これには計
器の情報、演算式機械語等が格納されている。1dはバッ
テリーバックアップ回路であり、これはCMOS−SRAM1cに
格納されている計器の情報、演算式機械語等を保持す
る。1eは制御動作時に必要なタイミングを作る周期タイ
マー、1fはRS−232C信号線を通じて外部との通信を行う
インターフェイスを行うシリアルインターフェイス、1g
はアドレスバス1h、データバス1i、制御バス1jからな
り、入出力ボード1k〜1nとの信号伝達を行うコモンバ
ス、1oは制御バス制御回路であり、該回路1oは制御バス
1jに読取り、書込み(命令)等や割込み、停止、アクノ
リッジ(同期信号)等を乗せる制御を行う。
上記入出力ボード1k〜1nのうちのアナログ入力ボード
1kには制御対象のプロセス中のセンサ等のアナログ信号
発生部が、アナログ出力ボード11には操作器等のアナロ
グ信号動作部が、デジタル入力ボード1mにはスイッチ等
のデジタル信号発生部が、そしてデジタル出力ボード1n
には電磁弁等のデジタル信号動作部がそれぞれ接続され
ている。
上述した構成の専用デジタル計算機からなるループ制
御装置は、制御を行うに当たって後述する演算式コンパ
イラによって演算式機械語を生成する方式をとっている
ため高速で動作することができるようになっている。
上記EPROM1bには、演算式コンパイラ、汎用組込みサ
ブルーチン等が収容されていて、演算式コンパイラは、
SRAM1cに格納されている未変換文字列からなる制御ソー
スプログラムの意味を解読してSRAM1cの所定エリアにCP
U1aが直接実行できる機械語で格納する。勿論、文字は
予め規定された文法に従って記述されていなければなら
ない。演算式は、A/D変換、SVの算出、PID演算等のルー
プ制御ロジックを記述した式である。
汎用組込みサブルーチンは制御ループ情報であり、こ
れらとしては、入出力命令及び制御用ロジックを簡単に
記述できるようにサブルーチン形式で開放されたもの
で、演算式中で一定の形式でコールすることにより、PI
D等のロジックを知らなくても設計が可能となり、これ
にはA/D変換、D/A変換、PID演算、カスケード接続、折
れ線近似、フィルタ演算等があり、これらは200msec、5
00msec、1000msec、の各周期の機械語からコールされる
ことにより実行される。
SRAM1cは、第3図のRAMマップに示すように、演算式
文字列エリア(200msec、500msec、1000msec)、200mse
c周期機械語エリア、500msec周期機械語エリア、1000ms
ec機械語エリア、A/D変換値使用フラグエリア、A/D変換
値バッファエリア、A/D変換値テーブルエリア、制御ル
ープ情報記憶エリア、起動許可フラグエリア、起動中フ
ラグエリア、タスクIスタックエリア、タスクIIスタッ
クエリア、タスクIIIスタックエリア、タスクIVスタッ
クエリア、レジスタ退避エリア等の各種のエリアを有
し、各エリアの使い方については後述する。
上述した構成のループ制御装置の制御動作の概略を第
4図を参照して説明する。制御動作は、準備段階と実行
段階とに大別される。
まず準備段階では、図中で示すように、例えばシリ
アルインターフェイス1fを介して外部から入力されSRMA
1cの演算式文字列エリアに格納している200msec周期で
実行する制御ソースプログラムをEPROM1bに格納されて
いるコンパイラにかけ、字句解析、構文解析、機械語生
成を行う。続いて,で示すように、同様にSRAM1cの
演算式文字列エリアに格納している500msec,1000msec周
期で実行する制御ソースプログラムをEPROM1bに格納さ
れているコンパイラにかけ、の場合と同様の処理を行
う。続いてで示すように、でのコンパイラによる処
理により生成した200msec周期で実行する機械語をSRMA1
cの200msec周期機械語エリアに書込む。また及びで
示すように、及びでのコンパイラによる処理により
生成した500msec,1000msec周期で実行する機械語をそれ
ぞれSRAM1cの500msec周期機械語エリア、1000msec周期
機械語エリアにそれぞれ書込む。更に,,で示す
ように、上記コンパイラの構文解析により、アナログ入
力の全チャンネルについて、各チャンネルに入力される
アナログ信号が200msec、500msec、1000msecのどの周期
の制御に使用されるかを判定し、その結果により作成し
たフラグをSRM1cのA/D変換値使用フラグエリアに格納す
る。以上により準備段階を終えて次に制御実行に移る。
制御実行においては、EPROM1bに格納されているマル
チタスク管理プログラムにより、まずにおいて優先順
位最高位ですなわち真先に全チャンネルのA/D変換を行
うタスクIに起動をかけ、このタスクIによりにおい
て100msec周期で全チャンネルについてのA/D変換を行わ
せ、このA/D変換により得たA/D変換値をでSRAM1cのA/
D変換値バッファエリアに書込む。
全てのチャンネルをハードウエアでサンプリングして
A/D変換する周期が一定でなければならないので、全制
御周期200msec,500msec,1000msecの最大公約数時間周期
100msec毎にアナログ入力の全チャンネルについてA/D変
換を行い、各制御周期における制御実行の際にこのA/D
変換した値を参照できるようにする。100msec毎に全チ
ャンネルについて一定のチャンネル順に(例えば1,2,3,
・・・・N)A/D変換を行えば、各チャンネルそれぞれ
におけるサンプリング間隔は100msecとなる。このよう
にすれば、制御に使用しないチャンネルについても100m
sec毎にA/D変換を行う無駄があるが、実際には1チャン
ネル当たりのA/D変換に要する時間は60〜80μsec程度な
ので全体からみるとそれほど大きくなく問題にならな
い。
再び第4図に戻って説明を続けると、マルチタスク管
理は、続いてにおいて優先順位2番目で200msec周期
でのA/D変換値更新及び機械語コーツを行うタスクIIに
起動をかける。このタスクIIの実行により、まずで、
200msec周期で使用しているアナログチャンネルについ
てのデータを上記A/D変換値バッファエリアから同じSRA
M1c中のA/D変換値テーブルエリアに転送し、次にで、
上記で作成されるSRAM1cの200msec周期機械語エリア
に記憶されている200msec周期機械語をコールする。そ
の後において、コールされた機械語のプログラムによ
り、SRAM1cの制御ループ情報記憶エリアに対してREAD/W
RITEのアクセスを行う。この機械語の実行には、制御量
の読込み即ちA/D変換値の読込みが含まれるが、これは
において機械語がA/D変換値テーブルエリアからA/D変
換値を読込むこによって行う。
その後マルチタスク管理は、において優先順位3番
目で500msecでのA/D変換値更新及び機械語コールを行う
タスクIIIに起動をかける。このタスクIIIの実行によ
り、まずで、500msec周期で使用しているアナログチ
ャンネルについてのデータを上記A/D変換値バッファエ
リアから同じSRAM1c中のA/D変換値テーブルエリアに転
送し、次にで、上記で作成されSRAM1cの500msec周
期機械語エリアに記憶されている500msec周期機械語を
コールする。その後において、コールされた機械語の
プログラムにより、SRAM1cの制御ループ情報記憶エリア
に対してREAD/WRITEのアクセスを行う。この機械語の実
行には、制御量の読込み即ちA/D変換値の読込みが含ま
れるが、これはにおいて機械語がA/D変換値テーブル
エリアからA/D変換値を読込むことによって行う。
更にその後マルチタスク管理は、において優先順位
4番目で1000msec周期でのA/D変換値更新及び機械語コ
ールを行うタスクIVに起動をかける。このタスクIVの実
行により、まずで1000msec周期で使用しているアナロ
グチャンネルについてのデータを上記A/D変換値バッフ
ァエリアから同じSRAM1c中のA/D変換値テーブルエリア
に転送し、次にで、上記で作成されSRAM1cに記憶さ
れている1000msec周期機械語をコールする。その後に
おいて、コールされた機械語のプログラムにより、SRAM
1cの制御ループ情報記憶エリアに対してREAD/WRITEのア
クセスを行う。この機械語の実行には、制御量の読込み
即ちA/D変換値の読込みが含まれるが、これはにおい
て機械語がA/D変換値テーブルエリアからA/D変換値を読
込むことによって行う。
なお、A/D変換値使用フラグは上記,,におけ
る200msec,500msec,1000msecの各周期に関するA/D変換
値バッファエリアからA/D変換値テーブルエリアへの転
送時に参照される。
上記A/D変換値の更新の仕方を、第5図を参照しても
っと具体的に以下説明する、 第5図において、まず最初に複数ある制御周期の最大
公約数時間周期100msecで全チャンネルについてA/D変換
を行い、その変換値を矢印(a)で示すようにA/D変換
バッファエリアに書込む。その後、各周期の制御プログ
ラムをコンパイルした段階で作成されている各制御周期
で使用されるチャンネルを指定するA/D変換値使用フラ
グに基づいて、各制御周期の機械語実行で実際に使用す
るA/D変換値を確定するために、このフラグがオン
「1」のチャンネルについてA/D変換値バッファエリア
の値をSRAM1cのA/D変換値テーブルエリアに矢印(b)
で示すように転送する。続いて、機械語実行時に、A/D
変換値テーブルエリアにある全てのA/D変換値を矢印
(c)で示すようにアクセス(読み込み)する。
以上の構成において、200msec,500msec及び1000msec
の3つの制御周期でループ制御を行う場合について説明
する。
上記制御ソースプログラムとして次の演算式文字列、 が記述されている場合、 ADC(‥‥);は、A/D変換されたデジタルデータをPV
に変換するサブルーチンをコールすること、 SV(‥‥)XXX;は、SV(目標値)のセット、 PiD(‥‥);は、SVとPVにより操作量MVを算出する
サブルーチンコールすること、 DAC(‥‥);は、MVをD/A変換するためのデジタルデ
ータへ変換するサブルーチンをコールすること、 をそれぞれ意味する。
ここで、処理時間が、ADC(‥‥);で1msec、SV(‥
‥)=XXX;で0.1msec、PiD(‥‥);で5msec、DAC(‥
‥);で0.9msecの合計7msecを要する仕様であるとする
と、200msecでは上述のような記述が15ループ(7×15
=105msec)、500msecでは上述のような記述が10ループ
(7×10=70msec)及び1000msecでは上述のような記述
が30ループ(7×30=210msec)だけされているとき、2
00、500及び1000msecの最少公倍数1000msecの間に計算
に要するCPU時間は、105×5(200msecが5回)+70×
2(500msecが2回)+210(1000msecが1回)=875mse
cである。従って、高速(200msec)、中速(500mse
c)、低速(1000msec)の制御周期でそれぞれ15、10、3
0ループの制御が可能である。
この点、従来方式は、200msecと1000msecの2つの制
御周期をもつ場合、200msec周期が10ループのとき1000m
sec周期は(200−7×10)÷7=18すなわち最大18ルー
プしかとれなかった。また、従来方式では、200、500、
1000msecの3つの制御周期をもつ場合、200msecが10ル
ープ、500msecが4ループのとき、1000msec周期は、(2
00−7×10−7×4)÷7=14すなわち最大14ループし
かとれなかった。
そして、サンプリング周期を守るためは、200msecの
周期で制御されるループについてのADC(…)が参照す
るA/D変換値の更新、500msecの周期で制御されるループ
についてのADC(…)が参照するA/D変換値の更新、1000
msecの周期で制御されるループについてのADC(…)が
参照するA/D変換値の更新がそれぞれ必要である。
ループ制御の実行は周期タイマ1eによる一定周期毎の
割込みにより行われ、その概略を第6図を参照して説明
する。
同図において、においてタイマー割込みがかかる
と、マルチタスク管理が時刻管理を行い、まず、、
、においてタスクI、II、III、IVを100、200、50
0、1000msecでそれぞれ起動する。これに対してタスク
I、II、III、IVはその終了により、、、で示
すようにマルチタスク管理をコールする。タスクIはど
の制御周期について実行開始させるかを判定し、で実
行開始のタイミングとなっているタスクII〜IVについて
起動許可フラグをオンする。この仕事はマルチタスク管
理を介して行われる。
次にマルチタスク管理はにおいて、上記、、
、によるコールに基づいて起動許可フラグを読取
り、どのタスクを起動するかについて判定する。マルチ
タスク管理はまたにおいて、上記、、、によ
るコールに基づいて起動中フラグを読取り、どのタスク
を起動するかについて判定する。上記判定によりタスク
II〜IVに起動をかける際、においてそのタスクの起動
許可フラグをオフにすと共に、においてそのタスクの
起動中フラグをオフする。そして、タスクII〜IVの実行
が終了したらにおいてそのタスクの起動中フラグをオ
フする。
タイマ割込みのとき、において、レジスタ、プログ
ラムカウンタ(PC)、スタックポインタ(SP)等の内容
をレジスタ退避エリアに退避する。また起動中フラグの
オンによりそのタスクの続行を行うときには、その続行
するタスクに対応するレジスタ退避エリアから退避して
いるレジスタ、PC、SP等の内容を読込む。
上述したループ制御装置の動作の詳細を、予め定めた
制御プログラムに従ってCPU1aが行う仕事を示す第7図
乃至第16図のフローチャートを参照して以下説明する。
CPU1aは装置電源がオンすることにより動作をスター
トし、その最初のステップS1において各種の初期化を行
う。その後ステップS2に進み、ここでSRAM1cの200msec
演算式文字列エリアに200msec周期実行ソースプログラ
ムが入力されるのを待ち、入力があると該入力されたソ
ースプログラムを次のステップS3においてEPROM1bに格
納されているコンパイラによりコンパイルする。
続いてステップS4に進み、ここでSRAM1cの500msec演
算式文字列エリアに500msec周期実行ソースプログラム
が入力されるのを待ち、入力があると該入力したソース
プログラムを次のステップS5においてEPROM1bに格納さ
れているコンパイラによりコンパイルする。
更にその後ステップS6に進み、ここでSRAMの1000msec
演算式文字列エリアに1000msec周期実行ソースプログラ
ムが入力されるのを待ち、入力があると該入力したソー
スプログラムを次のステップSにおいてQPROM1bに格納
されているコンパイラによりコンパイルする。次にステ
ップS7に進み、ここで制御開始の指令入力を待ち、指令
入力があるとステップS8に進み、ここで制御実行を行
う。
上記ステップS3、S5及びS7における各周期実行ソース
プログラムのコンパイルは、第8図に示すフローチャー
トに従って行われる。すなわち、第8図の各周期実行ソ
ースプログラムのコンパイルでは、まずステップS31に
おいてプログラムを記述している未変換文字列の字句解
析を行い、次のステップS32において構文解析を行う。
ステップS32の構文解析では、本来の構文解析の他、A/D
変換値使用フラグのセットも行う。その後ステップS33
に進み、ここで上記解析に基づいて機械語の生成を行っ
た後、第7図のフローチャートに戻る。
上述した第8図のフローチャートは、200msec、500ms
ec、1000msec周期実行ソースプログラムのコンパイルに
共通である。
次に、第8図のフローチャート中の上記ステップS32
におけるA/D変換値使用フラグのセットのためのフロー
チャートを第9図を参照して説明する。まずステップS3
21においてSRAM1cのA/D変換値使用フラグエリアに記憶
されているその制御周期における全チャンネルのフラグ
をクリア、すなわち0にする。次にステップS322に進
み、ここで上記構文解析の結果により周期実行ソースプ
ログラムの字句がエンドコードであるか否かを判定し、
判定がYESであるときには第7図のフローチャートに戻
る。そして判定がNOのときにはステップS323に進み、こ
こでプログラム記述がADC(…)であるか否か、すなわ
ちA/D変換のためのものであるか否か判定し、判定がNO
のときにはステップS326に進み、YESのときにはステッ
プS324に進む。ステップS326では、プログラムの次の字
句にステップS322或いはS323での判定の実行を移す。こ
れに対してステップS324では、ADC(…,X)の‥‥の後
のX、すなわち引数で指定されたアナログ入力チャンネ
ルを読取る。次にステップS325に進み、ここでステップ
S424で読取ったその制御周期におけるアナログ入力チャ
ンネル(CH)のフラグを「1」にしてからステップ326
に進む。以上説明した第9図のフローチャートは、当該
演算式文字列のソースプログラムにおいてループ制御に
使用することが指定されているアナログ入力チャンネル
を特定するためのものである。
続いて、第7図のフローチャート中の上記ステップS7
における制御実行のためのフローチャートを第10図以降
を参照して説明する。制御実行はタイマ割込みにより例
えば5或いは10msec毎に行われ、タイマ割込みが発生す
ると、ステップS91において、タイマ割込みの直前に動
いていたタスクを判別し、タイマ割込み時点の全レジス
タ、PC、SP等の内容をそのタスクのレジスタ退避エリア
に格納する。その後ステップS92に進み、ここで今回の
タイマ割込みが100msecのタイミングのものか否かを例
えば割込みカウンタのカウント値により判定し、判定が
YESのときはステップS93に、NOのときはステップS94に
それぞれ進む。ステップS93ではタスクIを行い、ステ
ップS94ではレジスタ退避エリアに退避しているレジス
タ、PC、SP等の内容をそれぞれ復帰する。ステップS94
の実行後ステップS95に進み、ここでタイマ割込み直前
のPCより実行する。
次に、第10図のフローチャート中の上記ステップS93
におけるタスクIのためのフローチャートを第11図を参
照して説明する。タスクIはその最初のステップS931に
おいて、タスクIの起動のタイミングが200、500、1000
msecのものであるかを判定する。判定がYESのときはス
テップS932に、NOのときはステップS936にそれぞれ進
む。ステップS932では、全チャンネルについてA/D変換
し、その変換値をA/D変換値バッファに書込む。ステッ
プS932の実行後ステップS933に進み、ここで起動が200m
secのタイミングのものであるか否か判定し、判定がNO
のときはステップS934に進む。ステップS934において
は、起動が500msecのタイミングのものであるか否かを
判定し、このステップS934の判定がNOのときにはステッ
プS935に進む。ステップS935では、起動が1000msecのも
のか否かを判定し、判定がNOのときにはステップS936に
進み、ここでマルチタスクをコールする。
上記ステップS933の判定がYESすなわち200msecの起動
のときには、ステップS937に進みここでタスクIIの起動
許可フラグをオンした後、ステップS934に進む。また上
記ステップS934の判定がYESすなわち500msecの起動のと
きには、ステップS938に進みここでタスクIIIの起動許
可フラグをオンした後、ステップS935に進む。更に上記
ステップS935の判定がYESすなわち1000msecの起動のと
きには、ステップS939に進みここでタスクIVの起動許可
フラグをオンしてからステップS936に進む。
上記ステップS939におけるマルチタスクのためのフロ
ーチャートを第12図を参照して説明する。マルチタスク
コールでは、その最初のステップS9391において、コー
ルしたタスクを判別し、そのタスクについての起動中フ
ラグをオフする。その後ステップS9392に進み、ここで
タスクIIの起動許可フラグがオンであるか否かを判定
し、判定がNOのときにはステップS9393に進む。ステッ
プS9393においては、タスクIIの起動中フラグがオンで
あるか否かを判定し、判定がNOのときにはステップS939
4に進む。ステップS9394においてはタスクIIIの起動許
可フラグがオンであるか否か判定し、判定がNOときには
ステップS9395に進む。ステップS9395においては、タス
クIIIの起動中フラグがオンであるか否か判定し、判定
がNOのときにはステップS9396に進む。ステップS9396に
おいては、タスクIVの起動許可フラグがオンであるか否
かを判定し、判定がNOのときにはステップS9397に進
む。ステップS9397においては、タスクIVの起動中フラ
グがオンであるか否かを判定し、判定がNOのときにはス
テップS9398に進む。ステップS9398においては、無限ル
ープの実行すなわちタイマ割込み待ちを行う。
上記ステップS9392の判定がYESのときにはステップS9
401に進み、ここでタスクIIの起動中フラグがオンであ
るか否かを判定し、判定がYESのときにはステップS9402
に、判定がNOのときにはステップS9403にそれぞれ進
む。ステップS9402では過負荷の検出とシステムのスト
ップのための仕事を行う。またステップS9403ではタス
クIIの起動許可フラグをオフし、起動中フラグをオンし
た後、ステップS9404に進み、ここでタスクIIを実行す
る。
上記ステップS9393の判定がYESのときにはステップS9
405に進み、ここでタスクIIのレジスタ退避エリアから
レジスタ等を復帰し、そのPCよりプログラムの実行を再
開する。
上記ステップS9394の判定がYESのときにはステップS9
406に進み、ここでタスクIIIの起動中フラグがオンであ
るか否かを判定し、判定がYESのときにはステップS9407
に、判定がNOのときにはステップS9408にそれぞれ進
む。ステップS9407では、上記ステップS9402と同様に過
負荷の検出とシステムのストップのための仕事を行う。
またステップS9408ではタスクIIIの起動許可フラグをオ
フし、起動中フラグをオンした後、ステップS9409に進
み、ここでタスクIIIを実行する。
上記ステップS9395の判定がYESのときにはステップS9
410に進み、ここでタスクIIIのレジスタ退避エリアから
レジスタ等を復帰し、そのPCよりプログラムの実行を再
開する、 上記ステップS9397の判定がYESのときにはステップS9
411に進み、ここでタスクIVの起動中フラグがオンであ
るか否かを判定し、判定がYESのときにはステップS9412
に、判定がNOのときにはステップS9413にそれぞれ進
む。ステップS9412では、上記ステップS9402と同様に過
負荷の検出とシステムのストップのための仕事を行う。
またステップS9413ではタスクIVの起動許可フラグをオ
フし、起動中フラグをオンした後、ステップS9414に進
み、ここでタスクIVを実行する。
そして、上記ステップS9397の判定がYESのときにはス
テップS9415に進み、ここでタスクIVのレジスタ退避エ
リアからレジスタ等を復帰し、そのPCよりプログラムの
実行を再開する。
第12図について上述したフローチャート中のステップ
S9404、S9409及びS9414におけるタスクII、III及びIVの
フローチャートを第13図乃至第15図を参照してそれぞれ
説明する。
まずタスクIIにおいては、その最初のステップS94041
で200msec周期実行がアクセスするA/D変換値の更新を行
う。次にステップS94042において200msec周期の機械語
の実行を行い、その後次のステップS94043においてマル
チタスク管理のコールを行う。タスクIIの場合と同様
に、タスクIIIにおいては第14図に示すステップS94091
乃至S94093の仕事を、タスクIVにおいては第15図に示す
ステップS94141乃至S94142の仕事をそれぞれ行う。
上述した各タスクにおけるA/D変換値の更新は、第16
図のフローチャートに従って次のように行われる。まず
ステップS411においてCHに1をセットし、次のステップ
S412においてCH内の数値により指定されるチャンネルの
A/D変換値使用フラグが「1」すなわち使用となってい
るか否か判定する。該ステップの判定がYESのときはス
テップS413に進み、ここでA/D変換値バッファエリア中
のCHで指定されるチャンネルのA/D変換値をA/D変換値テ
ーブルエリア中のCHで指定されるチャンネルに転送す
る。続いてステップS414に進み、ここで現在のCHの数値
にプラス1した数値をセットした後ステップS415に進
む。ステップS415においては、CHの数値が最大チャンネ
ル数Nより大きいか否かを判定し、判定がYESのときに
はこの更新動作を終了して各タスクの次のステップに進
み、判定がNOのときにはステップS412に戻る。上記ステ
ップS412の判定がNOのときすなわちA/D変換値使用フラ
グが「1」でないときにはステップS413を飛ばしてステ
ップS414に進む。以上により、タスクII、III及びIVに
おいて使用する全てのチャンネルのA/D変換値がSRAM1c
のA/D変換値テーブルエリアに格納されるようになる。
第11図及び第12図、第13図、第14図並びに第15図につ
いてそれぞれ上述したタスクI、II、III、IVの実行の
際に各タスクの実行の途中で発生するデータ等をWRITE/
READして使用するワークエリアを、第3図のRAMマップ
に示したように、タスクIスタック、タスクIIスタッ
ク、タスクIIIスタック、タスクIVスタックとしてSRAM1
c上にそれぞれ確保している。これらタスクスタック
は、例えばタスクIのメインルーチンの実行中には第17
図(a)に示すような状態にあり、このメインルーチン
の実行中に例えばA/D変換サブルーチンのコールが行わ
れた場合には、第17図(b)に示すようにスタックエリ
アにメインルーチンの戻り番地がPCの内容により書き込
まれると共に、第17図(c)に示すようにスタックエリ
アの残部がコールされたサブルーチンで使用されるダイ
ナミックな変数領域として確保される。上述のようなス
タックエリアの使用分の先頭は通常CPUに1つだけあSP
すなわちスタックポインタにより指示され、変数領域は
各タスクスタックの最大値により指示される。変数領域
の内容はサブルーチンの実行が終わりメインルーチンに
戻るまで確保され、例えサブルーチンの実行の途中にタ
イマ割込みが入り、中断されても保持される。また割込
みによりタスクが中断されたとき、SPの内容はPCの内容
と共ににレジスタ退避エリアに退避されているので、割
り込んだタスクが終了したときこの退避しているSPとPC
の内容により、割り込まれたタスクを元の位置から再開
することができる。そしてサブルーチンの実行が終わる
と、第17図(d)に示すようにタスクスタックに確保し
ていたダイナミックな変数領域を開放すると共に、第17
図(e)に示すようにタスクタックに書き込まれている
PCにより割り込まれる前のメインサブルーチンの元の位
置に戻る。
以上の説明から明らかなように、本発明によるプルー
制御装置の上述した実施例では、タイマ割込みのうち第
18図(a)に示すような特に100msec毎のタイミングに
おいてタイマ割込みが生じると、第18図(b)に示すよ
うにタスクIが起動される。タスクIでは、0、200、4
00、500、600及び800msec等のタイミングでの起動時
に、全てのチャンネルのA/D変換を行い、100、300、700
及び900msec等のタイミングではA/D変換を行わずに直ち
にぬける。
0、200、400、600及び800msecのタイミングでのタイ
マ割込みでは、タスクIでのA/D変換の終了後、第18図
(c)に示すようにタスクIIが起動される。また0及び
500msecのタイミングでのタイマ割込みでは、タスクII
の終了後、第18図(d)に示すようにタスクIIIが起動
される。タスクIIIは、第18図(d)に示されているよ
うにタスクI及びタスクIIの起動により中断され、タス
クI及びタスクIIの終了により再開される。更に0msec
のタイミングでのタイマ割込みでは、タスクIIIの終了
後、第18図(e)に示すようにタスクIVが起動される。
タスクIVは、第18図(e)に示すようにタスクI、タス
クII及びタスクIVの起動により中断され、タスクII或い
はタスクIVの終了により再開される。
以上により、制御周期の短い優先順位の高いタスクが
実行されていない空き時間を利用して優先順位の低いタ
スクが実行されるようになり、CPUを制御に有効利用す
ることができる。
〔効 果〕
以上説明したように本発明によれば、制御周期の長い
機械語の実行を中断して制御周期の短い機械語の実行を
割り込ませることにより、制御周期毎の機械語をマルチ
タスク的に実行させているため、制御に使用するコンピ
ュータ(CPU)の能力を制御実行に最大限に割り当てる
ことができるようになり、制御対象(ループ)数の増大
を図ることができる。
【図面の簡単な説明】
第1図は本発明によるループ制御装置の基本構成図を示
すブロック図、 第2図は本発明によるループ制御装置の一実施例を示す
ブロック図、 第3図は第2図中のSRAM内に形成されている記憶エリア
を示す図、 第4図は第2図の装置の動作の一部分の概略を説明する
ための説明図、 第5図は第4図に示した動作の一部分の詳細を示す説明
図、 第6図は第2図の装置の動作のたの一部分の概略を説明
するための説明図、 第7図乃至第16図は第2図の装置が制御を行うために予
め定めたプログラムに従って行う仕事を示すフローチャ
ート図、 第17図は制御実行のためのタスクスタックの使い方を説
明するための説明図、 第18図は第2図の装置によるループ制御の動作タイミン
グを示すタイミングチャート図、 第19図及び第20図は従来装置による制御の動作タイミン
グをそれぞれ示すタイミングチャート図である。 A……制御対象、B……入力手段、C……出力手段、D
……機械語記憶手段、E……制御量記憶手段、F……制
御実行手段、G……記憶手段、H……管理手段。

Claims (1)

    (57)【特許請求の範囲】
  1. 【請求項1】複数の制御周期のうちの1つがそれぞれ割
    り当てられている制御対象からその制御量を入力する入
    力手段と、 制御対象にその制御操作量を出力する出力手段と、 制御対象をその制御周期毎に制御するためのループ制御
    機能情報を機械語で格納する機械語記憶手段と、 前記複数の制御周期の各々での前記機械語の実行に先立
    ち、該機械語で使用する前記入力手段に入力されている
    制御量を格納する制御量記憶手段と、 各制御周期毎に前記機械語を前記制御量記憶手段に格納
    されている制御量を用いて実行し、該実行により得られ
    る制御操作量を前記出力手段から制御対象に出力する制
    御実行手段と、 各制御周期毎に設けられ、前記制御実行手段による機械
    語の実行中に発生する情報をその実行の終了まで格納す
    る記憶手段と、 前記制御実行手段による制御実行動作を管理する管理手
    段とを備え、 前記管理手段は、前記制御実行手段による制御周期の長
    い機械語の実行を制御周期の短い機械語の実行終了後開
    始させ、前記制御実行手段による制御周期の長い機械語
    の実行中の制御周期の短い機械語の実行開始に応じて制
    御周期の長い機械語の実行を中断させ、該中断した機械
    語の実行を短い制御周期の機械語の終了後に前記制御実
    行手段に再開させる、 ことを特徴とするループ制御装置。
JP31385088A 1988-12-14 1988-12-14 ループ制御装置 Expired - Lifetime JP2589791B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP31385088A JP2589791B2 (ja) 1988-12-14 1988-12-14 ループ制御装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP31385088A JP2589791B2 (ja) 1988-12-14 1988-12-14 ループ制御装置

Publications (2)

Publication Number Publication Date
JPH02159603A JPH02159603A (ja) 1990-06-19
JP2589791B2 true JP2589791B2 (ja) 1997-03-12

Family

ID=18046259

Family Applications (1)

Application Number Title Priority Date Filing Date
JP31385088A Expired - Lifetime JP2589791B2 (ja) 1988-12-14 1988-12-14 ループ制御装置

Country Status (1)

Country Link
JP (1) JP2589791B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2799077B2 (ja) * 1990-12-27 1998-09-17 株式会社東芝 プログラムコントローラ
JP2007233930A (ja) * 2006-03-03 2007-09-13 Shimadzu System Solutions Co Ltd 分散制御システム用シミュレータ
JP4849033B2 (ja) * 2007-03-19 2011-12-28 富士電機株式会社 プログラマブルコントローラ
JP2010160600A (ja) 2009-01-07 2010-07-22 Yamatake Corp 情報処理装置、スケジューラ、及びスケジューリング方法

Also Published As

Publication number Publication date
JPH02159603A (ja) 1990-06-19

Similar Documents

Publication Publication Date Title
JP3832517B2 (ja) ロボット用コントローラ及びその制御方法
US6823517B1 (en) Multi-tasking-real-time operating system for microprocessors with limited memory that constrains context switching to occur only at task level
JP2692609B2 (ja) マルチタスクのプログラムデバッグ方法とその装置
JPH0766329B2 (ja) 情報処理装置
RU96119968A (ru) Система обработки и способ ее функционирования
JP2589791B2 (ja) ループ制御装置
JPH0683615A (ja) 命令セットエミュレーションを行う計算機
JP2003177943A (ja) 概略マルチタスクソフトウェアのシミュレーションを行う方法、装置及びプログラム
JP2000353092A (ja) 情報処理装置及びそのレジスタファイル切替方法
CN116795481A (zh) 嵌入式实时操作系统仿真方法、装置和存储介质
JPH07281909A (ja) リアルタイム・タスク周期実行管理システム
JP2001255912A (ja) モーションプログラムの実行方法
JPH0410081B2 (ja)
JPH05282160A (ja) リアルタイム・シミュレーション開発機構
JP3137094B2 (ja) シミュレーション方法、シミュレーション装置及びその記録媒体
Costescu et al. QMotor 3.0-An object oriented system for PC control program implementation and tuning
JPH10232775A (ja) プリフェッチ機構
JPH06266553A (ja) 計算機システム
JPH03288906A (ja) Pcの命令実行方式
JPH03172958A (ja) 同期処理方法および並列処理システムおよび並列処理方法および並列化プログラム生成装置
JPH01189732A (ja) タスク起動制御方法
JPH04111132A (ja) マルチポインタ制御方法およびマルチポインタ制御装置
JPH06161826A (ja) データ駆動型計算機のシミュレーションシステム
JPH10149294A (ja) オペレーティングシステム
JPH04311225A (ja) マイクロプロセッサ命令実行方式