JPH09325808A - 駆動機器の制御方法 - Google Patents

駆動機器の制御方法

Info

Publication number
JPH09325808A
JPH09325808A JP14155196A JP14155196A JPH09325808A JP H09325808 A JPH09325808 A JP H09325808A JP 14155196 A JP14155196 A JP 14155196A JP 14155196 A JP14155196 A JP 14155196A JP H09325808 A JPH09325808 A JP H09325808A
Authority
JP
Japan
Prior art keywords
instruction
parallel execution
parallel
executed
operation instruction
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.)
Pending
Application number
JP14155196A
Other languages
English (en)
Inventor
Yukihisa Matsumoto
行央 松本
Yoshiyuki Okano
義之 岡野
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.)
Denso Corp
Original Assignee
Denso Corp
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 Denso Corp filed Critical Denso Corp
Priority to JP14155196A priority Critical patent/JPH09325808A/ja
Publication of JPH09325808A publication Critical patent/JPH09325808A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Numerical Control (AREA)
  • Manipulator (AREA)

Abstract

(57)【要約】 【課題】 分岐或いはジャンプした先の動作命令が並列
実行の対象となっているか否かを容易に判定する。 【解決手段】 CPU(インタプリタ)は、プログラム
中に並列実行宣言文である「E MUL」が記述されて
いたときは、次のステップのロボットに対する動作命令
を実行すると同時に、それ以降のロボット以外に対する
動作命令(非動作命令)を並列実行する。つまり、動作
命令が並列実行対象の場合は、その動作命令の直前に並
列実行宣言文が記述されているので、分岐或いはジャン
プ先の動作命令の直前に並列実行宣言文が存在するか否
かによりその動作命令が並列実行の対象となっているか
否かを容易に判定することができる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、駆動機器の動作を
命令する動作命令と入出力命令等の非動作命令とを並列
実行する駆動機器の制御方法に関する。
【0002】
【従来の技術】近年、ロボット或いはラインの設備機器
としては、ロボットを動作させるための動作命令と入出
力命令等の非動作命令とを並列に実行させることにより
サイクルタイムを短縮させることを目的としたインタプ
リタ機能を備えたものが増えてきつつある。
【0003】
【発明が解決しようとする課題】例えば(社)日本産業
用ロボット工業会が作成した産業用ロボット言語“SL
IM”にも同様なインタプリタ機能として“IOBLO
CK”文がある。これはロボットの動作とその動作に引
続いて記述されたI/O命令を並列実行する宣言文であ
り、図12に示すような使い方となる。
【0004】即ち、インタプリタは、ステップ4100
の「IOBLOCK ON」を解読したときは、ステッ
プ4110の「MOVE P,P0001」の動作命令
を実行すると同時に、ステップ4120の「SETI0
1」、ステップ4130の「SETI02」の非動作命
令を並列実行する。これにより、ロボットがポイントP
0001に動作すると同時に、I/Oの出力1番地がオ
ンすると共に出力2番地がオンする。
【0005】また、インタプリタは、上記並列実行を終
了したときは、ステップ4140の「MOVE P,P
0002」の動作命令を実行すると同時に、ステップ4
150の「SETI03」の非動作命令を並列実行す
る。これにより、ロボットがポイントP0002に動作
すると同時に、I/Oの出力3番地がオンする。
【0006】さらに、インタプリタは、上記並列実行を
終了したときは、ステップ4160の「MOVE P,
P0003」の動作命令を実行すると同時に、ステップ
4170の「SETI04」、ステップ4180の「I
=0」を実行する。このとき、「I=0」は並列処理を
中断することを示しているので、ロボットがポイントP
0003に動作すると同時にI/Oの出力4番地がオン
するという並列処理が実行されると共に、それらの並列
処理の実行が終了するまで待機状態となる。そして、イ
ンタプリタは、並列処理が終了したときはステップ41
90の「SETI05」を実行するので、I/Oの出力
5番地がオンする。
【0007】続いて、インタプリタは、「IOBLOC
K OFF」を解読したときは、並列実行が終了したと
判断して以後の命令を順に実行する。要するに、図中に
示した(1),(2),(3)に対応した動作命令実行
中に各々のI/O命令を並列実行するのである。
【0008】ところで、SLIMでは、並列実行可能な
非動作命令はI/O命令に限定され、I/Oの入力に応
じてステップ分岐するという命令、或いは無条件ジャン
プ命令への対応の記述は規定されていないのが一般的で
ある。
【0009】しかしながら、実際にロボットの動作をプ
ログラムする場合には、I/O入力の値に応じてステッ
プ分岐或いはジャンプする必要があることから、このよ
うなステップ分岐或いはジャンプに対応する記述を規定
することがあるものの、ステップ分岐或いはジャンプし
たステップ以降に記載された動作命令が並列実行の対象
となっているのか否かが分り難く、プログラムの構成
上、動作命令が並列実行の対象となるか否かを容易に判
別できることが望まれている。
【0010】本発明は上記事情に鑑みてなされたもの
で、その目的は、駆動機器に対する動作命令とそれ以外
の非動作命令とを並列実行する機能において、分岐或い
はジャンプした先の動作命令が並列実行の対象となって
いるか否かを容易に判定することができる駆動機器の制
御方法を提供することにある。
【0011】
【課題を解決するための手段】請求項1の発明によれ
ば、並列実行の対象となる動作命令は並列実行宣言文直
後の動作命令のみに有効であるので、非動作命令により
分岐或いはジャンプした先の動作命令の直前に並列実行
宣言文が存在するか否かにより動作命令が並列実行の対
象となっているか否かを容易に判定することができる。
【0012】請求項2の発明によれば、並列実行宣言文
の有効範囲が明確化される。請求項3の発明によれば、
並列実行中の動作命令のステップと非動作命令のステッ
プとを表示するので、何れの動作動作と非動作命令を並
列実行しているのかを容易に確認することができる。
【0013】請求項4の発明によれば、並列実行時に瞬
時停止による停止命令が発行されたときは、動作命令及
び非動作命令共に中断する。これにより、駆動機器が瞬
時に停止すると共に、入出力命令等の非動作命令も停止
する。そして、再起動すると、動作命令の残りを実行す
ると共に、非動作命令は停止した命令の次の命令から実
行する。これにより、駆動機器は残された動作命令を実
行すると同時に、駆動機器の動作以外の動作も残された
非動作命令を並列実行する。
【0014】請求項5の発明によれば、並列実行時に瞬
時停止による停止指令の発行に応じて停止したときは、
並列実行を停止した動作命令のステップと非動作命令の
ステップとを表示するので、並列実行中であった動作命
令と非動作命令とを確認することができる。
【0015】請求項6の発明によれば、並列実行時にス
テップ停止により停止命令が発行されたときは、並列実
行が終了してから停止する。これにより、駆動機器は並
列実行中の動作命令を終了してから停止すると共に、入
出力命令等の非動作命令も並列実行中の非動作命令を実
行してから終了する。そして、再起動すると、並列実行
の次の命令から実行する。これにより、並列実行中の動
作命令及び非動作命令を確実に実行して次の動作命令及
び非動作命令を実行することができる。
【0016】請求項7の発明によれば、並列実行時に停
止指令の発行に応じて停止したときは、並列実行を停止
した動作命令のステップと非動作命令の最後の命令のス
テップとを表示するので、並列実行が終了したときの動
作命令と非動作命令とを確認することができる。
【0017】
【発明の実施の形態】以下、本発明をロボットの制御方
法に適用した一実施例を図1乃至図11を参照して説明
する。図2はロボットの制御装置を示している。この図
2において、制御装置1には、ロボットの位置指令を計
算したり、サーボモータの制御演算を行うためのCPU
2、制御プログラムや各種データが予め格納されたRO
M3、CPU2が演算を行う際にデータを一時格納した
り、ユーザプログラムを格納するためのRAM4、駆動
機器としてのロボット装置5のサーボモータ6に設けら
れた回転位置検出用のセンサからの出力信号に基づきサ
ーボモータ6の回転位置や回転速度を算出する位置検出
回路7、CPU2で演算された電流指令値に応じてサー
ボモータ6に通電するためのPWM信号を生成し、各軸
サーボモータ6のアンプ8に出力するための電流制御回
路9、外部のモニタ付き操作パネル10との間で信号を
入出力するための入出力インタフェース11、各種入出
力機器12、これら各部を接続するバスライン13等か
ら構成されている。
【0018】図1は、ロボット装置5の動作とそれ以外
の機器の動作とを並列動作するためのユーザープログラ
ムの一例である。このユーザープログラムはRAM4に
記憶されており、CPU2は、ROM3に記憶されたイ
ンタプリタプログラムに基づいてRAM4に記憶された
ユーザープログラムを解読しながらロボット装置5を制
御するようになっている。
【0019】即ち、図1において、ステップ10の「E
MUL」は、ロボット動作(動作命令)とI/O命令
(非動作命令)とを並列実行することを宣言するもの
で、次のステップ20の「MVEP0001」のみが動
作命令として有効となる。従って、CPU2が「E M
UL」を解読したときは、次のステップ20の「MVE
P0001」という動作命令とそれ以降に記載されてい
る非動作命令とを並列実行するものと判断する。
【0020】さて、CPU2は、「MVEP0001」
という動作命令を解読すると、ロボット装置5に対して
ポイントP0001に動作するように指令する。これに
より、ロボット装置5はポイントP0001に向かって
動作するように制御される。
【0021】また、CPU2は、ステップ30の「ON
1」を解読したときは、出力1番地をONする。続い
て、CPU2は、ステップ40の「JI 2−1」を解
読したときは、入力2番地がONならばステップ110
の「LABL 1」へジャンプし、入力2番地がOFF
ならば次のステップ50に移行する。この場合、入力2
番地がOFFの場合は、次のステップ50は「E MU
L」であるので、新たな並列動作の開始であると判断
し、ステップ40を実行してから待機状態となる。
【0022】以上の動作により、ロボット装置5が動作
開始位置からポイントP0001への動作中に出力1番
地がONするという並列実行が行われると共に、入力2
番地がOFFの場合は並列実行が終了するまでステップ
40で待機状態となる。
【0023】さて、CPU2は、ステップ50の「E
MUL」を解読したときは、新たな並列実行の開始と判
断し、次のステップ60の「MVEP0002」を解読
してロボット装置5にポイントP0002に動作するこ
とを指令すると共に、次のステップ70の「ON 3」
を解読して出力3番地をONする。
【0024】ここで、CPU2は、ステップ80の「E
MUL END」を解読したときは、並列実行は中止
と判断し、ステップ80で待機状態となる。以上の動作
により、ロボット装置5がポイントP0001からP0
002への動作中に出力3番地がONする。
【0025】次に、CPU2は、ステップ90の「ON
4」を解読したときは出力4番地をONし、ステップ
100の「JMP2」を解読したときは無条件にステッ
プ170の「LABL 2」にジャンプする。このステ
ップ170の「LABL 2」は実行命令ではないの
で、CPU2は、次のステップ180の「END」を解
読することにより、プログラムの実行を終了する。
【0026】一方、CPU2は、ステップ40の「JI
2−1」を解読したときに入力2番地がONしていた
ときは、ステップ110の「LABL 1」にジャンプ
する。続いて、CPU2は、ステップ120の「E M
UL」を解読することにより新たな並列実行の開始と判
断し、ステップ120で待機状態となる。
【0027】以上の動作により、ロボット装置5が初期
位置からポイントP0001への動作中に出力1番地が
ONすると共に、入力2番地がONの場合は並列実行が
終了するまでステップ120で待機状態となる。
【0028】そして、CPU2は、ステップ120の
「E MUL」を解読したときは、新たな並列実行を開
始すると判断し、次のステップ130の「MVEP00
03」という動作命令を解読し、ロボット装置5に対し
てポイントP0003に動作するように指令すると同時
に、ステップ140の「ON 5」を解読して出力5番
地をONする。
【0029】ここで、CPU2は、次のステップ150
の「E MUL END」を解読することにより並列実
行が終了したと判断し、ステップ150で待機状態とな
る。以上の動作により、ロボット装置5がポイントP0
002からP0003への動作中に出力5番地がONす
る。続いて、CPU2は、ステップ160の「ON
6」を解読することにより6番地をONしてから、ステ
ップ180の「END」によりプログラムの実行を終了
する。
【0030】要するに、以上のプログラムは、ロボット
装置5が動作開始位置からポイントP0001への動作
中に出力1番地をONし、2番地の入力に応じてポイン
トP0001からP0002若しくはP0003に動作
する。このとき、P0002へ動作する場合は出力3番
地をONし、P0002に到達してから出力4番地をO
Nすると共に、P0003へ動作する場合は出力5番地
をONし、P0003に到達してから出力6番地をON
するというものである。
【0031】次に、上述のように動作命令と非動作命令
との並列実行するための手法について説明する。CPU
2は、一定時間毎に入力する割込みタイミング毎に割込
みプログラムを実行することにより並列実行を実行する
と共に、その並列実行が終了するまでバッファに動作命
令のステップ及びロボット装置5の到達位置を一時的に
記憶するようになっている。
【0032】ここで、CPU2は、割込み命令が与えら
れたときは割込みプログラムを実行することによりバッ
ファに管理している到達位置を割込み間隔に対応した距
離に分割してロボット装置5に順に出力する。これによ
り、ロボット装置5には到達位置が細分化された状態で
順に与えられるので、ロボット装置5は与えられる到達
位置を順に通過するように動作する。
【0033】以上のようにして、CPU2は、非動作命
令の実行中において一定時間毎に動作命令を実行するこ
とにより、動作命令と非動作命令とを容易に並列動作さ
せることができる。
【0034】ところで、バッファには動作命令のステッ
プ番号が保管されるものの、このステップ番号は後述す
る表示用と停止後の参照のみに使用されるのみで、実際
の並列実行時にCPU2がアクセスすることはないか
ら、CPU2の負担が大きくなることはない。
【0035】さて、CPU2は、通常のプログラムを実
行(動作命令のみ、または非動作命令のみの1種類しか
動作していない状態)しているときは、モニタ付き操作
パネル10のモニタには図3に示すように実行している
プログラム名と実行中の命令を表示しているが、上述し
たように動作命令と非動作命令とを並列実行している場
合には、同時に2ステップ実行しているので、非動作命
令のステップを表示した場合にはどの動作命令が実行さ
れているかが判別できなくなる。また、動作命令のステ
ップを表示した場合にはどの非動作命令を実行している
のかが判別できなくなる。
【0036】そこで、CPU2は、並列実行時には、図
4に示すように現在実行中の動作命令のステップと非動
作命令のステップとを表示することにより、現在何れの
動作命令と非動作命令とが実行されているのかを容易に
判別できるようにした。
【0037】次に、各種停止命令が発行されたときの停
止方法、再起動方法及び表示内容について説明する。ま
ず、図5に示すような通常のプログラム実行時において
各種停止命令が発行されたときの場合について説明す
る。 ロボット停止(モータ電源OFF)、或いは瞬時停止
の場合……ステップ10の動作命令実行時に停止指令が
発行されたときは、瞬時に処理を中断して停止する。こ
のとき、モニタには図6に示すように表示され、再起動
はステップ10の残り(中断された位置)から起動す
る。
【0038】また、ステップ20のタイム命令実行時に
停止指令が発行されたときは、瞬時に処理を中断して停
止する。このとき、モニタには図7に示すように表示さ
れ、再起動はステップ30から起動する。また、ステッ
プ30のI/O命令実行時に停止指令が発行されたとき
は、命令処理を終了して停止する。このとき、モニタに
は図8に示すように表示され、再起動はステップ40か
ら起動する。
【0039】ステップ停止の場合……ステップ10の
動作命令実行時に停止指令が発行されたときは、動作を
終了し停止する。このとき、モニタには図6に示すよう
に表示され、再起動はステップ20から起動する。ま
た、ステップ20のタイム命令実行時に停止指令が発行
されたときは、命令処理を終了して停止する。このと
き、モニタには図7に示すように表示され、再起動はス
テップ30から起動する。また、ステップ30のI/O
命令実行時に停止指令が発行されたときは、命令処理を
終了して停止する。このとき、モニタには図8に示すよ
うに表示され、再起動はステップ40から起動する。
【0040】次に、図9に示すような動作命令と非動作
命令との並列実行時に各種停止命令が発行されたときの
場合について説明する。 ロボット停止(モータ電源OFF)、瞬時停止の場合
……ステップ20の動作命令とステップ30のタイム命
令が並列実行時に停止指令が発行されたときは、動作命
令処理及びタイム命令処理は共に瞬時に中断して停止す
る。このとき、モニタには図10に示すように表示さ
れ、再起動はステップ20の動作命令とステップ40の
ON命令とから並列実行する。
【0041】ステップ停止の場合……ステップ20の
動作命令とステップ30のタイム命令の並列実行時にス
テップ停止指令が発行されたときは、動作命令処理が終
了したら停止する。ステップ30〜50の処理は動作命
令と並列に実行するための「E MUL END」命令
によりステップ20の動作終了まで待機する。このと
き、モニタには図11に示すように表示され、再起動は
ステップ70の「OFF」命令から起動する。
【0042】上記ロボットの制御方法によれば、並列実
行宣言は当該並列実行宣言の次のステップの動作命令の
みに有効としたので、並列実行中の非動作命令が分岐命
令或いはジャンプ命令により離れたステップに移行する
にしても、分岐先或いはジャンプ先以降の動作命令の直
前に並列実行宣言文が存在しているか否かによりその動
作命令が並列実行の対象となっているか否かを容易に判
定することができる。従って、分岐先或いはジャンプ先
以降の動作命令が並列実行の対象となっているか否かが
分り難い従来例のプログラム構成と違って、動作命令が
並列実行の対象となるか否かを容易に判別することがで
きる。
【0043】また、並列実行対象の動作命令は、並列実
行宣言から次の並列実行宣言若しくは並列実行停止命令
まで有効であるので、並列実行対象の動作命令の有効範
囲を容易に判定することができる。本発明は、ロボット
装置に代えて、生産ラインの設備装置に適用するように
してもよい。
【図面の簡単な説明】
【図1】本発明の一実施例を示すプログラム
【図2】全体の構成を示す概略図
【図3】通常実行中の表示状態を示すモニタの正面図
【図4】並列実行中の表示状態を示すモニタの正面図
【図5】通常実行を示すプログラム
【図6】停止指令により停止されたときの表示状態を示
すモニタの正面図
【図7】停止指令により停止されたときの他の表示状態
を示すモニタの正面図
【図8】停止指令により停止されたときの他の表示状態
を示すモニタの正面図
【図9】並列実行を示すプログラム
【図10】並列実行中に停止したときの表示状態を示す
モニタの正面図
【図11】並列実行を終了したときの表示状態を示すモ
ニタの正面図
【図12】従来例を示す図1相当図
【符号の説明】
1は制御装置、2はCPU、3はROM、4はRAM、
5はロボット装置(駆動機器)、6はサーボモータ、7
は位置検出回路、9は電流制御回路、10はモニタ付き
操作パネル、11は入出力インタフェース、12は各種
入出力機器、13はバスラインである。

Claims (7)

    【特許請求の範囲】
  1. 【請求項1】 並列実行宣言文で宣言された駆動機器に
    対する動作命令と駆動機器以外に対する動作命令とを並
    列実行する駆動機器の制御方法において、 前記並列実行宣言文直後の動作命令のみを有効として判
    断することを特徴とする駆動機器の制御方法。
  2. 【請求項2】 並列実行宣言文は、次の並列実行宣言文
    若しくは並列実行停止命令まで有効であることを特徴と
    する請求項1記載の駆動機器の制御方法。
  3. 【請求項3】 並列実行中の動作命令のステップと非動
    作命令のステップとを表示することを特徴とする請求項
    1または2記載の駆動機器の制御方法。
  4. 【請求項4】 並列実行時に瞬時停止による停止指令が
    発行されたときは、動作命令及び非動作命令共に中断し
    て停止すると共に、再起動されたときは動作命令の残り
    を実行し且つ非動作命令は停止した非動作命令の次の命
    令から実行することを特徴とする請求項1乃至3の何れ
    かに記載の駆動機器の制御方法。
  5. 【請求項5】 並列実行時に瞬時停止による停止指令の
    発行に応じて停止したときは、並列実行を停止した動作
    命令のステップと非動作命令のステップとを表示するこ
    とを特徴とする請求項4記載の駆動機器の制御方法。
  6. 【請求項6】 並列実行時にステップ停止による停止指
    令が発行されたときは、並列実行が終了してから停止す
    ると共に、再起動されたときは並列実行の次の命令から
    実行することを特徴とする請求項1乃至3の何れかに記
    載の駆動機器の制御方法。
  7. 【請求項7】 並列実行時に停止指令の発行に応じて停
    止したときは、並列実行を停止した動作命令のステップ
    と並列実行対象となっている非動作命令の最後のステッ
    プを表示することを特徴とする請求項6記載の駆動機器
    の制御方法。
JP14155196A 1996-06-04 1996-06-04 駆動機器の制御方法 Pending JPH09325808A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP14155196A JPH09325808A (ja) 1996-06-04 1996-06-04 駆動機器の制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP14155196A JPH09325808A (ja) 1996-06-04 1996-06-04 駆動機器の制御方法

Publications (1)

Publication Number Publication Date
JPH09325808A true JPH09325808A (ja) 1997-12-16

Family

ID=15294602

Family Applications (1)

Application Number Title Priority Date Filing Date
JP14155196A Pending JPH09325808A (ja) 1996-06-04 1996-06-04 駆動機器の制御方法

Country Status (1)

Country Link
JP (1) JPH09325808A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11305806A (ja) * 1998-02-23 1999-11-05 Dennoo:Kk 制御装置およびそのプログラム作成方法
US6591152B1 (en) 1998-02-23 2003-07-08 Denno Co., Ltd. Control system

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11305806A (ja) * 1998-02-23 1999-11-05 Dennoo:Kk 制御装置およびそのプログラム作成方法
US6591152B1 (en) 1998-02-23 2003-07-08 Denno Co., Ltd. Control system

Similar Documents

Publication Publication Date Title
JPH01274202A (ja) ループ制御装置
JPH09325808A (ja) 駆動機器の制御方法
JP2002373008A (ja) 数値制御装置
EP0757305B1 (en) A control processor
JPH08106320A (ja) 自動機械及び自動機械の制御方法
JP2880658B2 (ja) マルチタスクプログラムの暴走検出装置
WO1990007739A1 (en) Control method for robot
JPH0683652A (ja) マイクロコンピュ−タシステム
JP2963676B2 (ja) プログラマブルコントローラ
JP2005301334A (ja) モーションコントローラ
JPS6249502A (ja) プログラマブルコントロ−ラ
JP2906754B2 (ja) ロボットの制御方法
JPH05224713A (ja) プログラマブルコントローラの表示方法
JPH0736510A (ja) プログラマブルコントローラ
JPS61240341A (ja) マイクロプログラム制御装置
JPH08190417A (ja) 数値制御装置
JPH11224126A (ja) モーション制御装置
JPH09204208A (ja) ロボット装置における制御方法
JPH06209596A (ja) ステッピングモータ制御シミュレータ
JPS63305449A (ja) マイクロプロセツサシステム
JP2009099068A (ja) モーションコントローラおよびモーションプログラム有効軸判別方法
JPH0540510A (ja) 制御装置
JPH03196204A (ja) プログラマブルコントローラ
JPS61218380A (ja) 電動機の制御装置
JPS63116212A (ja) 数値制御装置

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20040806

A131 Notification of reasons for refusal

Effective date: 20040817

Free format text: JAPANESE INTERMEDIATE CODE: A131

A521 Written amendment

Effective date: 20041008

Free format text: JAPANESE INTERMEDIATE CODE: A523

A02 Decision of refusal

Effective date: 20041124

Free format text: JAPANESE INTERMEDIATE CODE: A02