第 13 章
13.5 ジャンプサブルーチン命令 (JSR), サブルーチン命令 (SBR), および リターン命令 (RET)
説明:
JSR命令、SBR命令、およびRET命令によって、ラダープログラム内でサ ブルーチンにジャンプし、実行終了後ジャンプした元の位置まで戻ります。JSR命令は、プロセッサに対し指定したサブルーチンファイルにジャンプす るように指示します。また、必要な場合、サブルーチンに引き渡すパラメー タおよびサブルーチンから受取るパラメータを定義します。SBR命令は入 力パラメータを格納するヘッダ命令です。パラメータを引き渡す場合に限 り、SBR命令を指定してください。RET命令は、サブルーチンを終了し、
また必要な場合、メインプログラム内のJSR命令に戻すパラメータを格納 します。
重要:SBR命令は、サブルーチンを含むプログラムファイルの最初のラン グ内の最初の命令として指定する必要があります。
複数のプログラムで実行する部分をサブルーチンファイルとして作成するこ とによって、メモリを節約することができます。
ただし、アプリケーションがネスト(入れ子)したり、または比較的長いサ ブルーチンを必要とする場合などは、即時入力および即時出力命令(IIN, IOT)を使用して、サブルーチン内のクリティカルなI/Oを更新してくださ い。そうしなければ、サブルーチンすべての実行後、メインプログラムの終 わりに達するまで、プロセッサはI/Oを更新することはできません。また、
サブルーチンはスキャン後に実行されることはありません。
ラング ラング ラング
ラング ラング ラング
ラング ラング ラング
この例では、整数ファイル7, ワード10, ビット5 がFalse (0)にリセットされると、NXT命令の次 のラングにジャンプする。
整数ファイル7, ワード10, ビット5がTrue (1)に セットされると、N7:0に0を初期設定し、NXT 命令までラングを実行する。XT命令に達すると、
N7:0の値をインクリメントし、FOR命令にジャ ンプする。N7:0が10より小さい場合、ループが 実行されます。N7:0が10になると、NXT命令の 次のラングにジャンプする。
整数ファイル7, ワード5, ビット0がTrue (1)に セットされると、ループを終了してNXT命令の次 のラングにジャンプする。
N7:10 ] [ 5
N7:10 ] / [ 5
FOR
NXT NEXT
Label number 0
FOR
Label number 0
Index N7:0
Initial value 0 Terminal value 10
Step size 1
[ BRK ]
JSR
RET
JUMP TO SUBROUTINE Program file number Input parameter Return parameter
RETURN ( ) Return parameter SUB
SUBROUTINE Input parameter
13.5.1 パラメータの引き渡し
サブルーチンの機能によって、サブルーチンがデータの算術演算または論理 演算を実行し、メインプログラムに結果を戻すことができるように、実行前 にサブルーチンに指定した値を引き渡すことができます。
例えば、複数の工程処理用の代表的なサブルーチンを書き、次に前もってサ ブルーチンに各工程の設定値を引き渡したり、メインプログラムを指定した り、またアプリケーション条件に従って設定値を引き渡すことができます。
以下に示すパラメータを引き渡すことができます。
整数アドレスに浮動小数点データを引き渡すと、データ値の小数点部分は切 り捨てられます。
重要:データを引き渡す場合、浮動小数点および整数データとアドレスを 混ぜないでください。精度を欠くことになります。
パラメータの引き渡し 例:
以下の図に、メイン・プログラム・ファイルとサブルーチンファイル間にパ ラメータを引き渡す方法を説明します。
タイプ 例
プログラム定数(整数) 256 プログラム定数(浮動小数点) 23.467 論理エレメントアドレス N7:0 論理構造アドレス C5:0.ACC
メイン・ラダー・プログラム
●
●
サブルーチンファイル090
実行がサブルーチンファイル にジャンプすると、論理アド レスに格納されているプログ ラム定数および値がSBR命令 に引き渡される。
サブルーチンの実行が開始さ れると、値およびプログラム 定数が、サブルーチン内の論 理アドレスに格納される。
値が戻される。
実行が再開する。
●
●
●
●
JSR
SBR
RET SUBRUTINE
Input parameter N43:0
Input parameter N43:1
Input parameter N10:3
JUMP TO SUBRUTINE
Program file number 90
Input parameter N16:23
Input parameter N16:24
Input parameter 231
Retuen parameter N19:11 Return parameter N19:12 ] [
] [ ] / [
] [ ( ) ( )
プログラム制御命令(MCR, JMP, LBL, FOR, NXT, BRK, JSR, SBR, RET, TND, AFI, ONS, OSR, OSF, SFR, EOT, UIE, UID) 13-9
13.5.2 オペランドの入力
これらの命令をプログラミングするためには、以下のオペランドを指定しな ければなりません。
以下の手順で、入力パラメータまたはリターンパラメータを指定してくださ い。
• JSR命令を指定すると、入力パラメータの指定が要求されます。入力パ
ラメータを入力して、[Enter]キーを押します。さらに、別の入力パラ メータの指定が要求されます。指定する入力パラメータがこれ以上ない
場合、[Enter]キーを押します。次に、入力パラメータと同じ方法でリ
ターンパラメータの指定が要求されます。合計8つを超える入力パラ メータ、またはリターンパラメータを指定することはできません。
• サブルーチンに対するJSR命令の入力数として、SBR命令内の入力パラ メータアドレス数と同じ、またはそれ以上の数値を指定してください。
入力数が入力を受取るアドレス数よりも少ないと、ランタイムエラーの 原因になります。
• RET命令のリターンパラメータ数は、リターンを受取るJSR命令内のリ
ターンアドレス数と同じ、またはそれ以上の数値を指定してください。
出力数がリターンを受取るアドレスよりも少ないと、ランタイムエラー の原因になります。
オペランド 定義
Program file number サブルーチンファイルのプログラムファイル番号
Input parameter (JSR) サブルーチンに引き渡すプログラム定数またはパラメータ
のアドレス(オプション)
Input parameter (SBR) サブルーチンに引き渡されたデータを格納すアドレス(オ
プション)
Return parameter (JSR) サブルーチンから受取るデータを格納するアドレス(オプ
ション)
Return parameter (RET) メインプログラム内のJSR命令に戻すプログラム定数また はパラメータのアドレス(オプション)
13.5.3 サブルーチンファイルのネスト
プログラムファイル内に、最大8つのサブルーチンをネスト(入れ子に)す ることができます。これは、サブルーチンが7レベル以下である限り、メイ ンプログラムからサブルーチンへ、そして別のサブルーチンへというように プログラムの流れを指示できることを意味します。
プログラムの流れを逆方向に戻す場合は、逆の手順を行ないます。RET命 令を実行すると、JSR命令の次の命令に自動的に戻ります。プロセッサは、
メインプログラムに戻るまでこの手順を行ないます。
13.5.4 JSR 命令の使用
JSR命令が指定されたラングがTrus (1)にセットされると、Program File (プ ログラムファイル)に指定されたサブルーチンファイルにジャンプします。
また、必要であれば、引き渡すパラメータとサブルーチンから受取るパラ メータを定義します。
JSR命令をプログラミングするときは、以下の点に注意してください。
• メイン・プログラム・ファイル以外の各サブルーチンファイルは、
Program File (プログラムファイル)に指定された、固有のファイルを持
つ必要があります。
• サブルーチンファイル内の最初のSBR命令以外の場所にジャンプするこ とはできません。
• 最大8つのサブルーチンファイルをネスト(入れ子に)できます。
13.5.5 SBR 命令の使用
SBR命令はオプションで、パラメータを格納するためのヘッダ命令です。
パラメータを引き渡す場合のみSBR命令を使用します。パラメータを引き 渡す場合、サブルーチンの最初のラングの最初の命令としてSBR命令を指 定する必要があります。また、このラングにも出力命令が必要です。SBR 命令はプログラム定数およびJSR命令から引き渡されたデータテーブル値 を格納します。
メインプログラム
レベル1
サブルーチンファイル90
レベル2
サブルーチンファイル91
レベル3
サブルーチンファイル92
( ) SBR
RET 90
JSR
91 JSR
( ) SBR
RET 92 JSR
( ) SBR
RET
プログラム制御命令(MCR, JMP, LBL, FOR, NXT, BRK, JSR, SBR, RET, TND, AFI, ONS, OSR, OSF, SFR, EOT, UIE, UID) 13-11
13.5.6 RET 命令の使用
RET命令によって、サブルーチンの実行を終了し、対応するJSB命令の次 の命令にプログラムの実行を戻します。また、前のサブルーチンまたはメイ ンプログラムにデータを戻します。
すべてのサブルーチンには、実行可能なRET命令を指定する必要がありま す。RET命令を指定したラングは、条件付きにすることができます。この 方法を使用する場合、ある条件がTrue (1)のときサブルーチンの一部分だけ を実行するプログラムを作成することができます。ただし、最初のRET命 令のラング条件がFalse (0)の場合、必ずサブルーチンから実行を戻すため に、サブルーチンの終わりに無条件ラング内の別のRET命令を指定してく ださい。
重要:プロセッサフォルトを防ぐために、パラメータを戻すときはプログ ラム内にのみRET命令を使用してください。パラメータを戻さない ときは、サブルーチンのENDステートメントによってメインプログ ラムに戻ります。
JSR, SBR, および RET 命令の例:
JSR命令が指定されたラングがTrue (1)にセットの場合は、JSR命令で指定 したサブルーチンファイルにジャンプします。また、プロセッサは、サブ ルーチンに3種類の値(N16:23に格納した値、N16:24に格納した値、およ び定数231)も引き渡します。その後、プロセッサはサブルーチンロジック を実行します。
サブルーチン内のRET命令を実行すると、メインプログラム内のJSR命令 に続く命令に戻ります。サブルーチンは、メインプログラムに2種類の値を 戻します。N43:3に格納された値はN19:11に戻され、N43:4に格納された値
はN19:12に戻されます。
メインプログラム
サブルーチン
(ロジック回路を入力してください。) ] [
( ) JSR
JUMP TO SUBRUTINE
Program file number 90 Input parameter N16:23 Input parameter N16:24
Input parameter 231
Return parameter N19:11 Return parameter N19:12 SBR
SUBRUTINE
Input parameter N43:0 Input parameter N43:1 Input parameter N10:3
RET RETURN ( )
Return parameter N43:3 Return parameter N43:4