• 検索結果がありません。

ジャンプサブルーチン命令 (JSR), サブルーチン命令 (SBR), および リターン命令 (RET)

ドキュメント内 JA (ページ 161-166)

第 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, ビット5True (1) セットされると、N7:00を初期設定し、NXT 命令までラングを実行する。XT命令に達すると、

N7:0の値をインクリメントし、FOR命令にジャ ンプする。N7:010より小さい場合、ループが 実行されます。N7:010になると、NXT命令の 次のラングにジャンプする。

整数ファイル7, ワード5, ビット0True (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

ドキュメント内 JA (ページ 161-166)