>サイトトップへ >このカテゴリの一覧へ

日本工業規格

JIS

 B

8439

-1992

産業用ロボット−プログラム言語 SLIM

Industrial robots

−Programming language SLIM

1.

適用範囲  この規格は,主として組立作業に用いる種々の産業用ロボット(以下,ロボットという。)

間での,動作プログラムの移植性を高めるためのプログラム言語 SLIM (Standard Language for Industrial

Manipulators)

(以下,SLIM という。

)の記述形式及び機能(以下,言語仕様という。

)について規定する。

備考1.  この規格で規定する構文の記述方法を,附属書に規定する。

2.

この規格の引用規格を,次に示す

JIS X 0001

  情報処理用語(基本用語)

JIS X 0015

  情報処理用語(プログラム言語)

JIS X 0201

  情報交換用符号

2.

用語の定義  この規格で用いる主な用語の定義は,次によるほか,JIS X 0001 及び JIS X 0015 による。

(1)

処理系定義  プログラムの処理方法・意味について,処理系ごとに定める定義。この場合,処理系ご

とにプログラムの処理方法・意味を具体的に成文化しておかなければならない。

(2)

拡張  SLIM の言語仕様と規格合致性をもつプログラムを排除しない範囲で,SLIM の言語仕様を変更

すること。

備考  規格合致性については,4.に規定する。

(3)

例外状態  プログラムが,SLIM の言語仕様に従って動作できないこと又は動作していないことを,

処理系が認識したときの状態。

(4)

丸め  高精度の数値から低精度の数値を得る方法。実数値から整数値を得る場合,元の値に 0.5 を加

えた値に対してそれを超えない最大の整数値を結果とする。

3.

規定事項  この規格の規定事項は,次による。

(1) SLIM

の言語仕様によるプログラムの構文。

(2) SLIM

で書かれたプログラムによって制御されるロボットシステムに対して入出力できるデータ形式

並びに数値表現の精度及び範囲。

(3) SLIM

で書かれたプログラムによって制御されるロボットシステムの動作。

(4) SLIM

で書かれたプログラムの意味の解釈に関する事項。

(5)

検出されなければならない誤り及び例外状態並びにそれらの処理方法。

4.

SLIM

への規格合致性

4.1

規格合致性  この規格では,次の二つの規格合致性を定める。

(1) SLIM

で書かれたプログラムの規格合致性。


2

B 8439-1992

(2) SLIM

で書かれたプログラムを処理する処理系の規格合致性。

4.2

プログラムの規格合致性  プログラムは,次の条件を満たすとき,プログラムの規格合致性をもつ。

(1)

プログラム中の各々の文が,この規格で定める正しい構文に従っていること。

(2)

プログラム中の各々の文が,この規格で明示的に定める正しい意味をもっていること。

(3)

プログラム中の文の列が,全体としてこの規格で明示的に定める正しい意味をもつ正しいプログラム

を構成していること。

4.3

処理系の規格合致性  処理系は,次の条件を満たすとき,処理系の規格合致性をもつ。

(1)

プログラムの規格合致性をもつプログラムを受け入れて処理できること。

(2)

プログラムの規格合致性をもたないプログラムに対しては,これを受け入れられないことを報告でき

ること。

(3)

誤り及び例外状態を,この規格の定めるところに従って解釈し処理できること(4.4 及び 4.5 参照)

(4)

プログラムの規格合致性をもつプログラム中の各々の文の意味を,この規格の定めるところに従って

解釈できること。

(5)

プログラムの規格合致性をもつプログラムの全体としての意味を,この規格の定めるところに従って

解釈できること。

(6)

数値については,少なくともこの規格で定める精度及び範囲を処理できること。

(7)

この規格で“規定しない”としている機能及び“処理系定義”としている機能に対する動作を明確に

定義してあること。

4.4

誤りの処理  処理系の規格合致性をもつ処理系は,プログラムに構文上の誤り又は意味上の誤りが

あることを必ずしも報告しなくともよい。

4.5

例外状態の処理  例外状態の処理は,次による。

(1)

処理系の規格合致性をもつ処理系は,

この規格で定める例外状態を,

すべて報告しなければならない。

ただし,例外状態を処理する機能を備えている場合は,例外状態を報告しなくてもよい。

(2)

処理系の規格合致性をもつ処理系は,例外状態を検出したとき,プログラムの実行を停止しなければ

ならない。ただし,例外処理手続を規定している場合は,その手続によらなければならない。この例

外処理の規定がある場合であっても,処理系のハードウェア,操作環境などの制約によって例外処理

の手続がとれない場合は,プログラムの実行を終了しなければならない。

(3)

この規格では,例外状態の検出の順序及び処理の順序については規定しない。

4.6

拡張の規格合致性  処理系の規格合致性をもつ処理系は,拡張した言語仕様で書かれたプログラム

を受け入れてもよい。この処理系がそのようなプログラムを受け入れる場合には,SLIM の言語仕様に合

致していない部分を報告する必要はない。ただし,この場合であって,文その他の要素が SLIM の言語仕

様に定める構文規則に合致していないときは,処理系は,誤りを報告するか又は合致していない部分の構

文規則及び意味をあらかじめ与えておかなければならない。

5.

プログラム要素

5.1

文字  SLIM で使用する文字 (character) は,表 による。


3

B 8439-1992

表 1  SLIM 用文字の組

ABCDEFGHIJKL

MNOPQRSTUVWX

英字 (letter)

YZ

数字 (digit)

0123456789

!”

’#$%&(  )*+−

,/:;=<>?@‛ `〔

記号 (symbol)

¥〕^{  }−|

空白 (space)

空白文字

下線 (underscore)  _

処理系定義文字

処理系で使用可能な上記以外の文字

備考1.  英小文字の使用は,処理系に依存するものとする。

2.

情報交換用の符号系は,JIS X 0201 の 7 単位又は 8 単位の符号系を用いることが望ましい。

5.2

識別子

5.2.1

構文  識別子 (identifier) の構文は,図 による。

図 1  識別子 (identifier)

5.2.2

意味  識別子の文字数の制限については,処理系定義とする。ただし,この文字数の制限は,8 文

字以上でなければならない。

また,識別子の少なくとも先頭の 8 文字までは,識別可能でなければならない。

6.

定数

6.1

構文  定数の構文は,次の(1)(10)による。

(1)

符号なし整数  符号なし整数 (unsigned integer) の構文は,図 による。

図 2  符号なし整数 (unsigned integer)

(2)

符号なし数  符号なし数 (unsigned number) の構文は,図 による。


4

B 8439-1992

図 3  符号なし数 (unsigned number)

(3)

角度値  角度値(

1

) (degree number)

の構文は,

図 による。

図 4  角度値 (degree number)

(

1

)

“ラジアン”でなく,

“度”によって角度を表現したいときに用いる(

例参照)。

例 90 度の正弦を示す例:SIN (90DEG)

参考 90DEG は,

2

π

ラジアンを度数表現で表記したものであって,定数 90 を意味するものでは

ない。

(4)  16

進数  16 進数 (hexadecimal number) の構文は,図 による。

図 5  16 進数 (hexadecimal number)

1. 10進数の16を16進数で表した場合の例:&H10

2. 10進数の255を16進数で表した場合の例:&HFF

(5)  2

進数  2 進数 (binary number) の構文は,図 による。

図 6  進数 (binary number) 

1. 10進数の4を2進数で表した場合の例:&B0100

2. 10進数の15を2進数で表した場合の例:&B1111

(6)

符号なし定数  符号なし定数 (unsigned constant) の構文は,図 による。


5

B 8439-1992

図 7  符号なし定数 (unsigned constant)

(7)

定数  定数 (constant) の構文は,図 による。

図 8  定数 (constant)

1.  −10.5E−10

2.  +90DEG

3.  −&H0F

(8)

正定数  正定数 (positive constant) の構文は,図 による。

図 9  正定数 (positive constant)

(9)

文字列  文字列 (string) の構文は,図 10 による。

図 10  文字列 (string)

備考  文字列の要素として”を用いるときは,”を二つ続ける(例参照)。

例  文字の列 EXAMPLE OF  “A”  を表す例:  “EXAMPLE OF”” A ”””

(10)

ポーズ定数  ポーズ定数 (pose constant) の構文は,図 11 による。


6

B 8439-1992

図 11  ポーズ定数 (pose constant)

6.2

意味  定数の意味は,次による。

(1)

算術型の定数[6.1(1)(8)]は,その定数によって表現される数を値とする。符号なし整数の文字 E は,

10

のべき乗を示す。E の直後の符号を省略したときは,正符号が省略されているとみなされる。有効

数字のけた数については,処理系定義とする。ただし,10 進 6 けた以上の精度でなければならない。

(2)

各処理系の許容する定数の最大値・最小値を機械最大値・機械最小値という。この実際の数値につい

ては,処理系定義とする。

(3)

角度は,ラジアンで表す。これを度数で表現する場合には,6.1(3)の角度値を用いる。

(4)

文字列の値は,記号”で挟まれたすべての文字の列とする。この場合,空白も意味をもつ。文字列の

長さとは,記号”によって挟まれた文字列の長さである。各処理系の許容する文字列の最大長は,処

理系定義とする。

(5)

ポーズ定数は,ロボットの位置・姿勢・形態を表す定数である。ポーズ定数を構成する算術式には,

変数を含んでいてはならない。

また,算術式の個数 及び意味については,処理系定義とする。

6.3

例外状態  定数の例外状態は,次による。

(1)

数値定数が,正の機械最大値又は負の機械最小値の範囲外であるとき。この場合,それぞれ機械最大

値又は機械最小値として処理を続行してもよい。

(2)

文字列が,その制限長を超えているとき。

(3)

ポーズ定数の要素式の数が,足りないとき。

7.

変数

7.1

構文  変数の構文は,次の(1)(9)による。

(1)

算術変数  算術変数 (arithmetic variable) の構文は,図 12 による。

図 12  算術変数 (arithmetic variable)

(2)

単純変数  単純変数 (simple variable) の構文は,図 13 による。

図 13  単純変数 (simplevariable)

(3)

算術型後置子  算術型後置子  (arithmetic type postposition)  の構文は,図 14 による。


7

B 8439-1992

図 14  算術型後置子  (arithmetic type postposition)

(4)

文字列変数  文字列変数 (string variable) の構文は,図 15 による。

図 15  文字列変数 (string variable)

(5)

部分文字列指定  部分文字列指定 (substring qualifier) の構文は,図 16 による。

図 16  部分文字列指定 (substring qualifier)

(6)

文字列型後置子  文字列型後置子  (string type postposition)  の構文は,図 17 による。

図 17  文字列型後置子  (string type postposition)

(7)

添字  添字 (subscription) の構文は,図 18 による。

図 18  添字 (subscription)

(8)

ポーズ変数  ポーズ変数 (pose variable) の構文は,図 19 による。

図 19  ポーズ変数 (pose variable)

(9)

番号付きポーズ変数  番号付きポーズ変数  (numbered pose variable)  の構文は,図 20 による。


8

B 8439-1992

図 20  番号付きポーズ変数  (numbered pose variable)

7.2

意味  変数の意味は,次による。

備考  プログラムの実行中は,常に,算術変数は数値に,文字列変数は文字列値に,ポーズ変数及び

番号付きポーズ変数はポーズ値に結び付けられている。変数に結び付けられた値は,プログラ

ムの文の実行によって,陰に陽に変わることがある。

(1)

ポーズ名称は,あらかじめポーズ変数宣言[10.1(6)参照]で宣言しておかなければならない。

(2)

ポーズ番号の下限は 1 とし,上限については処理系定義とする。

(3)

ポーズ番号式を用いた番号付きポーズ変数は,その評価値と同一のポーズ番号をもつ番号付きポーズ

変数とみなされる。例えば,P [I]  で I の値が 5 の場合は,P5 とみなされる。

(4) P005

,P05,P5 などは,同一の番号付きポーズ変数を表す。

(5)

変数名には,予約語(キーワード)を含んでもよいが,予約語だけの変数名は許されない。

(6) FN

で始まる識別子は,関数名称であるとみなされるため,変数名としては使用できない。

(7)

表 に示す変数は,特別な意味をもつ組込み変数であり,他の目的で使用してはならない。

表 2  組込み変数

変数

意味

DATE$

文字列

日付を YY/MM/DD の形式で示す。

TIME$

文字列

時刻を HH : MM : SS の形式で示す。

TIMER

整数

時刻を基準時からの秒で示す。

備考  基準時については処理系定義

とする。

(8)

変数の識別は,識別子だけによる。型後置子は識別に関与しない。

(9)

配列の各要素は,添字式の値によって定まる配列の要素として参照される。添字式は,求められた値

に最も近い整数に丸められる。

(10)

文字列変数に結び付けられた文字列の長さは,0 文字から最大文字列長まで変わり得る。最大文字列

長については,処理系定義とするが,255 文字とするのが望ましい。

(11)

文字列 a$の部分文字列指定 a$ (m : n)  は,a$に結びついた文字列値の 文字目から 文字目までの部

分文字列を指定する。文字列の中の文字は,左から右に,それぞれ 1 から順に番号が付けられる。m

又は が 1 から LEN (a$)  までの範囲になければ,は MAX (m, 1)  と,は MIN [n, LEN(a$]  とする

(LEN,MAX 及び MIN は,16.参照)

さらに,ならば,次のとおりとする。

(a)  < LEN (a$)

の場合,a$ (m : n)  は,番目の文字列の直前にある空文字列とする。

(b)  LEN (a$) < m

の場合,a$ (m : n)  は,a$の直後の空文字列とする。

(12)

実行開始時に各変数に結び付けられる初期値については,処理系定義とする。

7.3

例外状態  変数の例外状態は,次による。

(1)

添字式の値が,明示的に示された配列要素の上限・下限の範囲内にないとき。この場合,プログラム


9

B 8439-1992

の続行はできない。

(2)

型後置子が,矛盾しているとき。この例外状態は,入力時に検出されることが望ましい。

(3)

ポーズ番号が,許される範囲内にないとき。この例外状態は,入力時に検出されることが望ましい。

(4)

ポーズ番号式の値が,許される範囲内にないとき。この場合,プログラムの続行はできない。

8.

演算式

8.1

演算式の構文  演算式 (expression) の構文は,図 21 による。

図 21  演算式 (expression)

8.2

算術式

8.2.1

構文  算術式の構文は,次の(1)(6)による。

(1)

算術式  算術式 (arithmetic expression) の構文は,図 22 による。

図 22  算術式 (arithmetic expression)

(2)

項  項 (term) の構文は,図 23 による。

図 23  項 (term)

(3)

算術一次子  算術一次子 (primary) の構文は,図 24 による。

図 24  算術一次子 (primary)

(4)

因子  因子 (factor) の構文は,図 25 による。


10

B 8439-1992

図 25  因子 (factor)

(5)

算術関数  算術関数 (arithmetic function) の構文は,図 26 による。

図 26  算術関数 (arithmetic function)

(6)

算術関数名  算術関数名 (arithmetic function name) の構文は,図 27 による。

図 27  算術関数名  (arithmetic function name)

8.2.2

意味  算術子の意味は,次による。

(1)

組込み関数以外の関数は,あらかじめ DEF 文で定義しておかなければならない。

(2)

+,−,*,/,MOD 及び ^ は算術演算子であり,演算子の示す数値演算を行う。ここで,^  はべ

き乗演算子である。NOT,AND,OR 及び XOR はビット操作演算子であり,ビットごとの演算を行う。

(3) 0^0

は 1 とする。

(4)

計算の精度は 10 進 6 けた以上とし,最大・最小は 10

38

以下・10

38

以上とすることが望ましい。

8.2.3

例外状態  算術式の例外状態は,次による。

(1)  0

による除算が行われたとき。この場合,被除数の符号をもった機械最大値を商とすることが望まし

い。

(2)

式の評価であふれが生じたとき。この場合,正しい符号をもった機械最大値を式の値とすることが望

ましい。

(3)

負の数値を非整数でべき乗したとき。この場合,プログラムの続行はできない。

(4)  0

を負の数値でべき乗したとき。この場合,正の機械最大値とすることが望ましい。

(5)

式の評価で下位あふれが生じたとき。この場合,例外状態であることを報告し,結果を 0 としてプロ

グラムを続行することが望ましい。

(6)

関数の実引き数の数と仮引き数の数とが合わないとき。この場合,プログラムの続行はできない。


11

B 8439-1992

8.3

文字列式

8.3.1

構文  文字列式の構文は,次の(1)(5)による。

(1)

文字列式  文字列式 (string expression) の構文は,図 28 による。

図 28  文字列式 (string expression)

(2)

文字列因子  文字列因子 (string factor) の構文は,図 29 による。

図 29  文字列因子 (string factor)

(3)

文字列一次子  文字列一次子 (string primary) の構文は,図 30 による。

図 30  文字列一次子 (string primary)

(4)

文字列関数  文字列関数 (string function) の構文は,図 31 による。

図 31  文字列関数 (string function)

(5)

文字列関数名  文字列関数名 (string function name) の構文は,図 32 による。

図 32  文字列関数名  (string function name)

8.3.2

意味  文字列式の意味は,次による。

(1)

組込み関数以外の関数は,あらかじめ 10.で規定する関数宣言で定義しておかなければならない。

(2)

+は,文字列の連結演算を行う演算子である。

8.3.3

例外状態  文字列式の例外状態は,次による。

(1)

文字列関数の実引き数の数と仮引き数の数とが合わないとき。この場合,プログラムの続行はできな

い。

8.4

ポーズ


12

B 8439-1992

8.4.1

構文  ポーズの構文は,次の(1)及び(2)による。

(1)

ポーズ  ポーズ (pose) の構文は,図 33 による。

図 33  ポーズ (pose)

(2)

並進偏差  並進偏差 (deviation) の構文は,図 34 による。

なお,ロボット座標系における例を

例 に,ハンド座標系における例を例 に示す。

図 34  並進偏差 (deviation)

1.  ロボット座標系における並進偏差の例

2.  ハンド座標系における並進偏差の例

現在ポーズ*から付随するハンド座標系  (fgh)  で  (

f,

g,

h)

だけ離れた点(ポーズ)

P002

は,次のように定義される。

P002

=*+  (

f,

g,

hH

8.4.2

意味  ポーズの意味は,次による。

(1)

+は,偏差演算を行う演算子である。

(2)  *

は,ステートメント実行時のロボットの現在ポーズを示す。

(3)

並進偏差における は,ハンド座標系での並進偏差であることを示す。ただし,ハンド座標系につい


13

B 8439-1992

ては,処理系定義とする。

8.4.3

例外状態  ポーズの例外状態は,次による。

(1)

ポーズ変数又は番号付きポーズ変数の値が,確定していないとき。この例外状態は,実行時に検出さ

れることが望ましい。

9.

プログラム構造

9.1

構文  プログラム構造の構文は,次の(1)(7)による。

(1)

プログラム  プログラム (program) の構文は,図 35 による。

図 35  プログラム (program)

(2)

区  区 (block) の構文は,図 36 による。

図 36  区 (block)

(3)

単純行  単純行 (simple line) の構文は,図 37 による。

図 37  単純行 (simple line)

(4)

行番号  行番号 (line number) の構文は,図 38 による。

図 38  行番号 (line number)

(5)

ラベル  ラベル (label) の構文は,図 39 による。

図 39  ラベル (label)

(6)

行末  行末  (end of line)  の構文は,図 40 による。

図 40  行末  (end of line)

備考  行末は行がそこで終わっていることを示す。プログラムの表記上は何も書かれていないが,処

理系によっては CR(キャリッジリターン)

,LF(ラインフィード)などの制御文字がその位置

に挿入される場合がある。


14

B 8439-1992

(7)

コメント  コメント (comment) の構文は,図 41 による。

図 41  コメント (comment)

(8)  END

行  END 行 (END line) の構文は,図 42 による。

図 42  END  (END line) 

9.2

意味  プログラム構造の意味は,次による

(1)

一つのプログラムは,行番号の値の昇順に並んだ区(ブロック)の並びとする。プログラムの最後の

行は,END 行でなければならない。プログラムの実行は,一番若い番号から始まり,次のいずれかの

場合になるまで順次実行される。

(a)

フロー制御(13.参照)によって制御が変わった場合

(b) STOP

文が実行された場合

(c) END

行に到達した場合

(d)

例外状態となった場合

(2)

行の先頭は,行番号でなければならない。行番号において先行する 0 は,意味をもたない。

(3)  1

行に書くことができる文字数は,処理系に依存する。行末 (end of line) は,この文字数に含まれな

い。

(4)

ラベル名の長さ及び命名方法は,識別子の定義に従う。

(5)

ラベル名は,別の目的で用いたり,二重に定義したりしてはならない。

(6)

コメントは,プログラムの実行に何の効果も及ぼさない。ただし,コメントを GOTO 文など分岐命令

の分岐先として用いてもよい。この場合,制御は引き続く最初の文に移る。

(7)

コメントは,1 行以内に納まっていなければならない。

10.

宣言

10.1

構文  宣言 (declaration) の構文は,次の(1)(6)による。

(1)  I/O

変数宣言  I/O 変数宣言  (declaration of I/O variable)  の構文は,図 43 による。


15

B 8439-1992

図 43  I/O 変数宣言  (declaration of I/O variable)

備考 BIT と指定された I/O 変数を BIT 型 I/O 変数という。

(2)

ハンド名称宣言  ハンド名称宣言  (declaration of hand identifier)  の構文は,図 44 による。

図 44  ハンド名称宣言  (declaration of hand identifier)

(3)

配列宣言  配列宣言  (declaration of array)  の構文は,図 45 による。

図 45  配列宣言  (declaration of array)

(4)

関数宣言  関数宣言 (declaration of function) の構文は,図 46 による。

図 46  関数宣言  (declaration of function)

1. DEF

FNPI

=3.141 592

2.  DEF FNXYZ (X, Y, Z)  =X+Y*Z+1

(5)

関数名  関数名 (function name) の構文は,図 47 による。


16

B 8439-1992

図 47  関数名 (function name)

(6)

ポーズ変数宣言  ポーズ変数宣言  (declaration of pose variable)  の構文は,図 48 による。

図 48  ポーズ変数宣言  (declaration of pose variable)

10.2

意味  宣言の意味は,次による。

(1)

ポーズ変数は,宣言してから使用することが必要である。ただし,暗黙の型宣言があるときは,この

限りではない。

(2) I/O

変数は,ロボットと周辺装置との間の入出力を行うための変数であり,この変数で入出力のポー

トアドレスを定義する。ただし,I/O ポートアドレス,マスク情報については,処理系定義とする。

また,必要ならば処理系定義のオプションを付けてもよい。

(3)

ハンドパラメータの意味については,処理系定義とする。

(4)

暗黙の型宣言の採用は,処理系に依存する。その場合,その意味については,処理系定義とする。

(5)

配列の添字は,1 から始まる。

また,配列の次元は,3 次元までである。

10.3

例外状態  宣言の例外状態は,次による。

(1) I/O

変数宣言で示されるポートアドレスが,指定可能範囲を超えているとき。この例外状態は,入力

時に検出されることが望ましい。

(2)

配列の次元が,3 次元を超えているとき。この例外状態は,入力時に検出されることが望ましい。

(3)

配列の大きさが,処理系で定義された制限を超えているとき。

(4)

宣言によって名称が,二重に定義されているとき。この例外状態は,入力時に検出されることが望ま

しい。

11

11.1

構文  文 (statement) の構文は,図 49 による。

図 49  文 (statement)

11.2

意味  文の意味は,次による。


17

B 8439-1992

(1)

文は,プログラムの個々の機能の実行を明示するものである。

(2)

代入文は,変数に結び付けられている値を変更する文である(12.参照)

(3)

フロー制御文は,プログラムの実行の順序を制御する文である(13.1 参照)

(4)

ロボット制御文は,ロボット又はロボットの周辺装置の制御を行う文である(14.参照)

(5)

入出力文は,入出力装置に対して入出力を行う文である(15.参照)

12.

代入文

12.1

代入文の構文  代入文 (assignment statement) の構文は,図 50 による。

図 50  代入文 (assignment statement)

12.2  LET

12.2.1

構文  LET 文の構文は,次の(1)(5)による。

(1)  LET

文  LET 文 (LET statement) の構文は,図 51 による。

図 51  LET  (LET statement)

(2)

算術代入  算術代入 (arithmetic assignment) の構文は,図 52 による。

図 52  算術代入 (arithmetic assignment)

(3)

文字列代入  文字列代入 (string assignment) の構文は,図 53 による。

図 53  文字列代入 (string assignment)

(4)

ポーズ代入  ポーズ代入 (pose assignment) の構文は,図 54 による。

図 54  ポーズ代入 (pose assignment)

(5)

ポーズ成分代入  ポーズ成分代入  (pose element assignment)  の構文は,図 55 による。


18

B 8439-1992

図 55  ポーズ成分代入  (pose element assignment)

12.2.2

意味  LET 文の意味は,次による。

(1)

算術代入は,算術変数に結び付けられている値を,右辺の算術式を評価して得られる値に置き換える

文である。

(2)

文字列代入は,文字列変数に結び付けられている値を,右辺の文字列式を評価して得られる値に置き

換える文である。文字列代入の左辺に部分文字列指定がある場合は,その文字列変数の部分文字列指

定で指定された部分が右辺で置き換わる。この結果として,文字列全体の長さが変わることもある。

(3)

ポーズ代入は,ポーズ変数又は番号付きポーズ変数に結び付けられている値を,右辺のポーズを評価

して得られる値に置き換える文である。

(4)

ポーズ成分代入は,ポーズ変数又は番号付きポーズ変数の X 成分,Y 成分又は Z 成分のいずれか指定

された成分を右辺の値で置き換える文である。

12.2.3

例外状態  LET 文の例外状態は,次による。

(1)

文字列の長さが,許される文字列長を超えたとき。この例外状態は,代入時に検出されることが望ま

しい。

(2)

指定されたポーズが,ロボットの可動領域を超えているとき。この例外状態は,代入時に検出される

ことが望ましい。

(3)

ポーズ変数の成分に代入した結果が,ロボットの可動領域を超えているとき。この例外状態は,代入

時に検出されることが望ましい。

12.3  HOME

12.3.1

構文  HOME 文 (HOME statement) の構文は,図 56 による。

図 56  HOME  (HOME statement) 

12.3.2

意味  HOME 文の意味は,次による。

(1) HOME

文は,ホームポーズを定義する文である。HOME 文は,通常,GOHOME 文と組み合わせて用

いられる。

備考  ホームポーズをプログラムの中で定義しておかないと,GOHOME 文を用いてホームポーズへ

動かすことはできない。

(2)

一度定義されたホームポーズは,HOME 文によって再定義されるまで有効である。

12.3.3

例外状態  HOME 文の例外状態は,次による。

(1)

指定されたポーズが,ロボットの可動領域を超えているとき。この例外状態は,代入時に検出される

ことが望ましい。

13.

フロー制御

13.1

フロー制御文


19

B 8439-1992

13.1.1

構文  フロー制御文の構文は,次の(1)(3)による。

(1)

フロー制御文  フロー制御文  (flow control statement)  の構文は,図 57 による。

図 57  フロー制御文 (flow control statement)

(2)

関係式  関係式 (relational expression) の構文は,図 58 による。

図 58  関係式 (relational expression)

備考  図 58 における=,<,>,<=,=<,>=,=>,<>又は><は,関

係演算子であり,それぞれの意味は

表 のとおり。

表 3  関係演算子

関係演算子

意味

等しい

小さい

大きい

<=,  =<

小さいか又は等しい

>=,  =>

大きいか又は等しい

<>,  ><

等しくない

(3)

アドレス  アドレス (address) の構文は,図 59 による。


20

B 8439-1992

図 59  アドレス (address)

1. GOTO

100

2. GOTO

*LABEL

3. IF

X

=1 THEN *LABEL ELSE GOTO 100

13.1.2

意味  フロー制御文の意味は,次による。

(1) GOTO

文は,行番号又はラベル名で示される文へ無条件に制御を移す文である。

(2) GOSUB

文は,行番号又はラベル名で示されるサブルーチンへ制御を移す文である。

(3) RETURN

文は,サブルーチンからその呼び出し元へ制御を戻す文である。

(4) STOP

文は,プログラムの実行を終了する文である。

(5) ON GOTO

文は,条件式で示される数値と同じ順位に書かれた行番号又はラベル名へ制御を移す文で

ある。このときの順位は,左から 1,2,………と数える。条件式で示される数値は,整数に丸められ

た後処理される。

(6) IF

文は,条件式が成立するときに THEN 以下の文を実行する。条件式が不成立のときは,ELSE 以下

の文を実行する。ELSE 以下がない場合で条件不成立のときは,次の文へ進む。

(7)

関係式において,関係演算子と第 2 演算式とを省略すると,

“<>0”が仮定される。

例  次の二つの文は等価である。

IF X THEN GOTO *LABEL1

IF X

<>0 THEN GOTO *LABEL1

(8) IF

文の THEN 及び ELSE の後ろには,それぞれ一つの文又はアドレスが書ける。

例 IF

X>100

THEN

Y

=100 ELSE Y=X

(9) IF

文の入れ子を行った場合の ELSE は,その ELSE に最も近くて対応のない THEN に対応する。

13.1.3

例外状態  フロー制御文の例外状態は,次による。

(1) GOTO

文,GOSUB 文又は IF 文の分岐先が存在しないとき。この例外状態は,入力時に検出されるこ

とが望ましい。

(2) ON

−GOTO 文の式の値が,飛び先の数の範囲外であるとき。この場合,プログラムの続行はできない。

13.2  FOR

13.2.1

構文  FOR 区の構文は,次の(1)(3)による。

(1)  FOR

区  FOR 区 (FOR block) の構文は,図 60 による。


21

B 8439-1992

図 60  FOR  (FOR block) 

(2)  FOR

行  FOR 行 (FOR line) の構文は,図 61 による。

図 61  FOR  (FOR line)

(3)  NEXT

行  NEXT 行 (NEXT line) の構文は,図 62 による。

図 62  NEXT  (NEXT line)

13.2.2

意味  FOR 区の意味は,次による。

(1) FOR

区は,FOR 行で始まり,同じ制御変数をもつ最初の NEXT 行で終わる。制御変数が省略された

NEXT

行は,その直前にある対応のない FOR 行に対応する。FOR 区は,物理的に入れ子にすること

ができるが,二つの FOR 区を交錯させてはならない。FOR 区の内側の別の FOR 区は,元の FOR 区

に完全に含まれていなければならない。

(2) FOR

行において“STEP 増分”句を省略すると,増分として+1 が想定される。

(3) FOR

区の動作は,他の文の並びを用いて定義することができる。

FOR v

=初期値 TO 終了値 STEP 増分

(区)

NEXT v

は,次と等価する。

LET own1

=終了値

LET own2

=増分

LET v

=初期値

line1 IF (v

−own1) *SGN (own2)  >0 THEN line2

(区)


22

B 8439-1992

LET v

=v+own2

GO TO line1

line2 REM

次へ進む

ただし,ここで,own1 及び own2 は,その FOR 区に関係付けられている変数とし,利用者からは

参照できない。line1 及び line2 は,その FOR 区に関係付けられている行番号とし,利用者からは参照

できない。変数 own1 及び own2 は,他の FOR 区に関係付けられている同様の変数とは別のものとす

る。

(4) FOR

区の外側から FOR 区の内側へ,RETURN 文以外の文の実行によって,制御を移してはならない。

13.2.3

例外状態  FOR 区の例外状態は,次による。

(1) FOR

行と NEXT 行との対応が,正しくないとき。

(2) FOR

区の外側から RETURN 文以外の実行で,制御を移したとき。この例外状態は,入力時に検出さ

れることが望ましい。

14.

ロボット制御文

14.1

ロボット制御文の構文  ロボット制御文 (robot control statement) の構文は,図 63 による。

備考  ロボット制御文は,ロボット制御装置及び周辺装置の制御を行う文である。

図 63  ロボット制御文  (robot control statement)

14.2

動作制御

14.2.1

構文  動作制御の構文は,次の(1)(10)による。

(1)

動作制御  動作制御 (motion control) の構文は,図 64 による。

図 64  動作制御 (motion control)

(2)  MOVE

文  MOVE 文 (MOVE statement) の構文は,図 65 による。


23

B 8439-1992

図 65  MOVE  (MOVE statement) 

(3)

補間指定  補間指定 (interpolation) の構文は,図 66 による。

図 66  補間指定 (interpolaion)

(4)

動作オプション  動作オプション (motion option) の構文は,図 67 による。

図 67  動作オプション (motion option)

(5)

続行オプション  続行オプション (continue option) の構文は,図 68 による。

図 68  続行オプション (continue option)

(6)  ROTATE

文  ROTATE 文 (ROTATE statement) の構文は,図 69 による。


24

B 8439-1992

図 69  ROTATE  (ROTATE statement)

(7)

回転面指定  回転面指定 (plane specifier) の構文は,図 70 による。

図 70  回転面指定 (plane specifier)

(8)

回転面名  回転面名 (plane identifier) の構文は,図 71 による。

図 71  回転面名 (plane identifier)

(9)  DRIVE

文  DRIVE 文 (DRIVE statement) の構文は,図 72 による。

図 72  DRIVE  (DRIVE statement)

(10) GOHOME

文  GOHOME 文 (GOHOME statement) の構文は,図 73 による。

図 73  GOHOME  (GOHOME statement) 

14.2.2

意味  動作制御の意味は,次による。

(1) MOVE

文は,ロボットを現在ポーズから,pose で示されるポーズへ移動させる文である。

1.  現在ポーズから P001を経由して P002に移動する場合の例

MOVE L, P001, P002


25

B 8439-1992

2.  ポーズ指定で*を用いた場合の例

MOVE L, P001

+  (0, 0, 10), *+ (20, 0, 0)

(2) MOVE

文において円弧補間を指定する場合の pose は,必ず二つ指定しなくてはならない。

例  現在ポーズと経由ポーズ (P001) 及び最終ポーズ (P002) によって作られる円上を移動する場合

の例:MOVE C, P001, P002

(3) MOVE

文における@は,位置決め精度を示す。位置決め精度は数値が大きいほど高精度となる。@だ

けを指定した場合には,最も低い位置決め精度となる。

また,@を指定しない場合には,最も高い位置決め精度となる。

例  現在ポーズ (*) の上方 10 へ,速度 100 で直線移動する場合の例

(並進位置決め精度は 5)

MOVE L, @5*

+  (0, 0, 10), S=100

備考  粗級を指定すると,指定点の近傍に入ったところで次の目標点への制御に移る。

(4) MOVE

文において動作オプションを用いると,移動中の速度の指定,ハンド開閉の指定又は移動時間

の指定ができる。ただし,速度の指定については,その MOVE 文の実行の間だけ有効である。

(5) MOVE

文において続行オプションを用いると,移動制御は,直後の文に引き継がれる。このとき,直

後の文は MOVE 文でなければならない。ただし,IOBLOCK ON の状態では,その間に入出力文を挟

むことができる。

(6) ROTATE

文は,指定した回転面内で指定角度だけロボットを回転させる文である。角度の正負につい

ては,指定面の法線に対して右ねじの方向を正とする。

(7) ROTATE

文において 3 点による回転面の指定をした場合には,第 1 ポーズが面の原点を示し,第 2 ポ

ーズが X 軸に乗り,第 3 のポーズが XY 平面に乗るような面を表す。

(8) DRIVE

文は,各軸を直接制御する文である。処理系は,各軸に対して回転軸であるか又は並進軸であ


26

B 8439-1992

るかを定め,かつ,その正の動作方向を定めることが必要である。

(9) GOHOME

文は,ロボットを現在ポーズからホームポーズへ移動させる文である。移動の方法につい

ては,処理系定義とする。

14.2.3

例外状態  動作制御の例外状態は,次による。

(1)

未確定のポーズがあるとき。この場合,プログラムは続行できない。

(2)

指定ポーズが,可動領域外であるとき。この場合,プログラムは続行できない。

(3) MOVE

文の補間指定において円弧補間が指定された場合で,ポーズが一つ以下又は三つ以上のとき。

この例外状態は,入力時に検出されることが望ましい。

(4)

続行オプションの指定された MOVE 文の直後に,許されない文があるとき。この例外状態は,入力時

に検出されることが望ましい。

(5) ROTATE

文で回転中心が指定面上にないとき。この場合,プログラムは続行できない。

(6) GOHOME

文に対するホームポーズの定義がないとき。この場合,プログラムは続行できない。

(7)

位置決め精度値が,処理系定義の上限と下限との間にないとき。この例外状態は,入力時に検出され

ることが望ましい。

(8)

速度値が,処理系定義の上限と下限との間にないとき。

(9)

移動時間値が,0 以下であるとき。

14.3

ハンド制御

14.3.1

構文  ハンド制御の構文は,次の(1)(4)による。

(1)

ハンド制御  ハンド制御 (end-effector control) の構文は,図 74 による。

図 74  ハンド制御 (end-effector control)

(2)  RELEASE

文  RELEASE 文 (RELEASE statement) の構文は,図 75 による。

図 75  RELEASE  (RELEASE statement)

(3)  GRASP

文  GRASP 文 (GRASP statement) の構文は,図 76 による。

図 76  GRASP  (GRASP statement)


27

B 8439-1992

(4)  CHANGE

文  CHANGE 文 (CHANGE statement) の構文は,図 77 による。

図 77  CHANGE  (CHANGE statement)

14.3.2

意味  ハンド制御の意味は,次による。

(1) RELEASE

文は,ハンドを開くことを指示する文である。

また,この文では,ハンドの開きに関するオプションを書くことができる。

なお,オプションの機能については,処理系定義とする。

(2) GRASP

文は,ハンドを閉じることを指示する文である。

また,この文では,ハンドの閉じに関するオプションを書くことができる。

なお,オプションの機能については,処理系定義とする。

(3) CHANGE

文は,ハンドをハンド名称で示されるものに変更することを宣言する文である。この宣言は,

次に CHANGE 文が実行されるまで有効である。この場合のハンド名称は,ハンド名称宣言で定義さ

れたものでなければならない。

備考 CHANGE 文は,自動的にハンドを交換するものではない。

14.3.3

例外状態  ハンド制御の例外状態は,次による。

(1) CHANGE

文で指定した名前が,ハンド名称でないとき,又は定義されていないとき。この例外状態は,

入力時に検出されることが望ましい。

14.4

入出力制御

14.4.1

構文  入出力制御の構文は,次の(1)(6)による。

(1)

入出力制御  入出力制御 (I/O control) の構文は,図 78 による。

図 78  入出力制御 (I/O control)

(2)  IN

文  IN 文 (IN statement) の構文は,図 79 による。

図 79  IN  (IN statement)

(3)  OUT

文  OUT 文 (OUT statement) の構文は,図 80 による。

図 80  OUT  (OUT statement)

(4)  SET

文  SET 文 (SET statement) の構文は,図 81 による。


28

B 8439-1992

図 81  SET  (SET statement) 

(5)  RESET

文  RESET 文 (RESET statement) の構文は,図 82 による。

図 82  RESET  (RESET statement)

(6)  IOBLOCK

文  IOBLOCK 文 (IOBLOCK statement) の構文は,図 83 による。

図 83  IOBLOCK  (IOBLOCK statement) 

14.4.2

意味  入出力制御の意味は,次による。

(1) IN

文は,I/O 変数名で示されるポートアドレスからデータを入力する文である。この場合,I/O 変数宣

言で示したマスクなどの処理は,自動的に行われる。

(2) OUT

文は,I/O 変数名で示されるポートアドレスにデータを出力する文である。この場合,I/O 変数宣

言で示したマスクなどの処理は,自動的に行われる。

(3) SET

文は,BIT 型 I/O 変数のビット出力を 1 にする文である。ここで,ALL を用いるとすべての BIT

型 I/O 変数のビット出力が 1 になる。

なお,パルス時間の単位は,ms とする。

(4) RESET

文は,BIT 型 I/O 変数のビット出力を 0 にする文である。ここで,ALL を用いるとすべての

BIT

型 I/O 変数のビット出力が 0 になる。

(5) IOBLOCK

文は,IOBLOCK ON と IOBLOCK OFF との対で用いられる。

IOBLOCK ON

と IOBLOCK OFF とで囲まれた範囲内では,ロボットが動作命令を実行中にその動作

命令に引き続く複数の I/O 命令が並列実行される。ただし,I/O 命令以外の命令が現れると,一度並列

実行は打ち切られる。しかし,もしその範囲内に別の動作命令があると,その直後にある I/O 命令か

ら並列実行が行われる。

なお,並列実行に関するタイミングについては,処理系定義とする。

14.4.3

例外状態  入出力制御の例外状態は,次による。

(1) IN

文又は OUT 文において,指定された I/O 変数が I/O 変数宣言で宣言されていないとき。この例外

状態は,入力時に検出されることが望ましい。

(2) SET

文又は RESET 文の I/O 変数の型が,BIT 型でないとき。この例外状態は,入力時に検出されるこ

とが望ましい。

(3) IOBLOCK

OFF

が,これと対応する IOBLOCK ON が実行されていないのに,実行されたとき。

14.5

速度制御


29

B 8439-1992

14.5.1

構文  速度制御の構文は,次の(1)(4)による。

(1)

速度制御  速度制御 (speed control) の構文は,図 84 による。

図 84  速度制御 (speed control)

(2)  SPEED

文  SPEED 文 (SPEED statement) の構文は,図 85 による。

図 85  SPEED  (SPEED statement)

(3)  ACCEL

文  ACCEL 文 (ACCEL statement) の構文は,図 86 による。

図 86  ACCEL  (ACCEL statement)

(4)  JSPEED

文  JSPEED 文 (JSPEED statement) の構文は,図 87 による。

図 87  JSPEED  (JSPEED statement) 

14.5.2

意味  速度制御の意味は,次による。

(1) SPEED

文は,ロボットの手先の移動速度を指定する文である。速度値の意味(具体的には,単位又は

最高速度に対する割合など)については,処理系定義とする。

(2) ACCEL

文は,加速度・減速度を指定する文である。加速度・減速度の数値の意味(具体的には,単

位又は最高速度・減速度に対する割合など)については,処理系定義とする。

(3) JSPEED

文は,軸の動作速度を指定する文である。速度値の意味(具体的には,単位又は最高速度に

対する割合など)については,処理系定義とする。

14.6

時間制御

14.6.1

構文  時間制御の構文は,次の(1)(3)による。

(1)

時間制御  時間制御 (timer control) の構文は,図 88 による。

図 88  時間制御 (timer control)

(2)  DELAY

文  DELAY 文 (DELAY statement) の構文は,図 89 による。


30

B 8439-1992

図 89  DELAY  (DELAY statement)

(3)  WAIT

文  WAIT 文 (WAIT statement) の構文は,図 90 による。

図 90  WAIT  (WAIT statement) 

14.6.2

意味  時間制御の意味は,次による。

(1) DELAY

文は,指定された時間だけプログラムの実行を待つ文である。待ち時間の単位については,

処理系定義とする。

(2) WAIT

文は,関係式が成立するまでプログラムの実行を待つ文である。タイムアウト時間の単位につ

いては,処理系定義とする。

備考  タイムアウトが発生したときは,オペレータに報告することが望ましい。

14.7

停止制御

14.7.1

構文  停止制御の構文は,次の(1)(3)による。

(1)

停止制御  停止制御 (termination control) の構文は,図 91 による。

図 91  停止制御 (termination control)

(2)  HOLD

文  HOLD 文 (HOLD statement) の構文は,図 92 による。

図 92  HOLD  (HOLD statement)

(3)  HALT

文  HALT 文 (HALT statement) の構文は,図 93 による。

図 93  HALT  (HALT statement)

14.7.2

意味  停止制御の意味は,次による。

(1) HOLD

文は,プログラムの実行を一時停止する文である。一時停止したときは,コンソールに数値又

は文字が規定形式で出力される。再起動すると,プログラムは,HOLD 文の次の文から実行される。

(2) HALT

文は,プログラムの実行を停止する文である。停止したときは,コンソールに数値又は文字が

規定形式で出力される。再起動すると,プログラムは,その先頭から実行される。

備考  これらの命令文は,プログラムを停止するものであるが,実際のロボットの停止とのずれが最

小限になることが望ましい。

14.8

形態制御


31

B 8439-1992

14.8.1

構文  形態制御の構文は,次の(1)(4)による。

(1)

形態制御  形態制御 (configuration control) の構文は,図 94 による。

図 94  形態制御 (configuration control)

(2)

左腕系右腕系形態  左腕系右腕系形態  (arm system configuration)  の構文は,図 95 による。

図 95  左腕系右腕系形態  (arm system configuration)

備考 LEFTY 及び RIGHTY は,次のような形態をいう。

(3)

ひじ形態  ひじ形態  (elbow system configuration)  の構文は,図 96 による。

図 96  ひじ形態  (elbow system configuration)

備考 ABOVE 及び BELOW は,次のような形態をいう。

(4)

手首形態  手首形態 (wrist system configuration) の構文は,図 97 による。


32

B 8439-1992

図 97  手首形態  (wrist system configuration)

備考 FLIP 及び NONFLIP は,次のような形態をいう。NONFLIP

は,FLIP の形態から,手首部の姿勢を変えずに,腕を腕の
軸回りに 180°回転させた形態である(矢印の向きが反対

になることでこのことを表している。

14.8.2

意味  形態制御の意味は,次による。

(1)

形態制御文は,ロボットの形態を一意的に決定するための補助的な情報を指定する文である。

(2)

これらの形態指定は,一度指定すると,次に指定するまで有効である。

(3)

これらの形態指定の採用については,処理系定義とする。

(4)

形態が指定されていない場合の形態値については,処理系定義とする。

(5)

異なる系の形態指定は,コンマで区切って一つの文に並べて書くことができる。しかし,同一系の形

態の指定を一つの文に並べて書くことはできない。

15.

入出力文

15.1

入出力文の構文  入出力文 (input/output statement) の構文は,図 98 による。

図 98  入出力文 (input/output statement)

15.2  PRINT

15.2.1

構文  PRINT 文の構文は,次の(1)及び(2)による。

(1)  PRINT

文  PRINT 文 (PRINT statement) の構文は,図 99 による。

図 99  PRINT  (PRINT statement)

(2)

印字句切り  印字句切り (separator) の構文は,図 100 による。


33

B 8439-1992

図 100  印字句切り (separator)

15.2.2

意味  PRINT 文の意味は,次による。

(1)

数式は,結果が 0 又は正ならば 1 文字の空白が,負ならば−の符号が付き,その直後に 10 進数表現の

数値が続き,最後には一つの空白が付いて出力される。処理系では,指数・仮数の出力有効けたにつ

いて定めておかなければならない。この場合,指数は 2 けた,仮数は 6 けた以上の有効けたがあるこ

とが望ましい。

(2)

整数として正確に表される数は,小数点以下なしの形式で出力される。

(3)

指数部なしで精度を落とさずに表現できる数は,指数部なしで出力される。この場合,例えば仮数の

出力有効けたが 6 のとき,10

6

は .000001 と,10

7

は 1.E−7 と出力される。

(4)

文宇式列は,文字列データが出力される。

(5)

ポーズの出力については,処理系定義とする。

(6)

データ項目の印字が行幅を超えるときは,行末を出力してからデータ項目が出力される。

(7)

印字句切り“,

”は,印字位置に応じて次のように出力される。

(a)

現在位置が右端のときは,行末  (end of line)  が出力される。

(b)

出力すべきデータが行幅を超えるときは,行末を出力し,次行に出力される。

(c)

上記以外のときは,1 文字以上の空白を出力し,次の印字欄に出力される。

(d)

印字行は,一定の個数の印字欄に分割される。印字欄の幅と個数については,処理系定義とする。

(8)

印字句切り“;”は,最後に出力した位置の直後から出力される。ただし,データ出力は(7)(a)及び(b)

に従う。文字列の場合,出力途中で行端に達すると,そこで行末を出力し,残りは次行から出力され

る。

(9) PRINT

文が印字句切りで終わっていないときは,最後に行末が出力される。

15.3  INPUT

15.3.1

構文  INPUT 文 (INPUT statement) の構文は,図 101 による。

図 101  INPUT  (INPUT statement)

15.3.2

意味  INPUT 文の意味は,次による。

(1) INPUT

文を実行すると,入力要求(プロンプト)が出力される。ユーザは,それに応じて入力データ


34

B 8439-1992

を入力する。

備考  プロンプトの形式は,?△(△は空白を表す。)又は識別名?△を推奨するが,詳細については,

処理系定義とする。

(2)

入力データの型は,入力される変数の型と一致していなければならない。特に,位置変数のときは,

処理系で定められた形式で,定められた数だけ入力しなければならない。

また,これらの形式は,PRINT 文による出力と対応していなければならない。

(3)

入力データに下位あふれが発生すると,結果は 0 となる。

15.3.3

例外状態  INPUT 文の例外状態は,次による。

備考  入力の誤りに対しては,再入力を要求してもよい。

(1)

入力データが大きすぎて,あふれが発生したとき。

(2)

データ数が,指定された変数の数より多いとき。

(3)

データの型が,一致しないとき。

16.

組込み関数

16.1

構文  組込み関数の構文は,(1)(3)による。

(1)

組込み関数  組込み関数 (implementation-supplied function) の構文は,図 102 による。

図 102  組込み関数 (implementation-supplied function)

(2)

算術組込み関数  算術組込み関数 (implementation-supplied arithmetic function) の構文は,図 103 によ

る。


35

B 8439-1992

図 103  算術組込み関数  (implementation-supplied arithmetic function)

(3)

文字列組込み関数  文字列組込み関数  (implementation-supplied string function)  の構文は,図 104 によ

る。

図 104  文字列組込み関数  (implementation-supplied string function)

16.2

意味  組込み関数の意味は,次による。

(1)

組込み関数は,あらかじめ定められた算法(アルゴリズム)によって結果が求められる関数である。

(2)

算術組込み関数の引き数の数及び型並びに関数の値は,

表 による。


36

B 8439-1992

表 4  算術組込み関数

関数の種類

関数

引き数の数 引き数の型

関数の値

平方根

SQR

  1

算術式

平方根値

SIN

  1

算術式

正弦値

COS

  1

算術式

余弦値

TAN

  1

算術式

正接値

ATN

  1

算術式

逆正接値

三角関数

ATN2

  2

算術式

逆正接値

MAX

≧2

算術式

最大値

最大値最小値

MIN

≧2

算術式

最小値

絶対値 ABS

  1

算術式

絶対値

POSX

  1

ポーズ

ポーズの x 成分値

POSY

  1

ポーズ

ポーズの y 成分値

ポーズ成分抽出

POSZ

  1

ポーズ

ポーズの z 成分値

距離 DIST    2

ポーズ

2

点間の距離値

DEGRAD

  1

算術式

ラジアン値

単位変換

RADDEG

  1

算術式

度数値

ORD

  1

文字列式

文字コード値

VAL

  1

文字列式

数値

文字列変換

STRPOS

  2

文字列式

部分文字列の位置

文字列長 LEN

  1

文字列式

文字列の長さ

備考1. ATN2の場合において,出力

θ

は,−

π<

θ

πの値となる。

また,出力角の符号は,

y

の符号と同じとなる。このとき,

y

x

=0 であってはならない。

2. POSX

,POSY 又は POSZ は,与えられたポーズ情報の並進位置の x

y

又は 成分を取り出す関数である。

3. DIST

は,ポーズで表現された 2 点間の距離を求める関数である。

4. ORD

は,文字列の先頭の文字を文字コードに変換する関数である。

5. VAL

は,文字列で表現された数値を値に変換する関数である。

6. STRPOS

は,第 1 引き数の文字列の中で第 2 引き数の文字列と一致

する最初の部分文字列の位置を求める関数である。この位置が見つ
からない場合には,結果が 0 となる。

7. LEN

は,文字列の長さを求める関数である。

参考 DEGRAD の引き数はラジアンの値であるので,角度値(例えば,

90DEG

)を用いると,意図する結果にはならないので注意が必要であ

る。

(3)

文字列組込み関数の引き数の数及び型並びに関数の値は,

表 による。


37

B 8439-1992

表 5  文字列組込み関数

関数の種類

関数

引き数の数 引き数の型

関数の値

CHR$ 1

算術式

コードの文字化

STR$ 1

算術式 10 進文字列

BIN$ 1

算術式

2

進文字列

HEX$ 1

算術式 16 進文字列

文字列変換

MIRROR$ 1

文字列式

ミラー反転文字列

LEFT$ 2

文字列式 
算術式

左部分文字列

RIGHT$ 2

文字列式 
算術式

右部分文字列

部分文字列

MID$ 3

文字列式 
算術式 
算術式

中央部分文字列

備考1. CHR$は,式の値を文字コードとしての意味をもつ長さ1の文字列に

変換する関数である。

2. STR$

は,数値を値から文字列表現に変換する関数である。

3. BIN$

は,数値を値から 2 進文字列表現に変換する関数である。

4. HEX$

は,数値を値から 16 進文字列表現に変換する関数である。

5. MIRROR$

は,文字列の 2 進数のビットの並びを逆転した文字列に

変換する関数である。

6. RIGHT$

(LEFT$)

は,第 1 引き数の文字列の右(左)から第 2 引き

数で指定された長さの部分文字列を求める関数である。この場合,

長さ 0 を指定すると空の文字列が結果となる。

7. MID$

は,第 1 引き数の文字列の第 2 引き数で指定された位置から

第 3 引き数で指定された長さの部分文字列を求める関数である。こ

の場合,長さを省略すると文字列の終わりまでが結果となる。

また,長さ 0 を指定すると空の文字列が結果となる。

16.3

例外状態  組込み関数の例外状態は,次による。

(1)

引き数の数が合わないとき。この例外状態は,入力時に検出することが望ましい。

(2)

引き数の型が合わないとき。この例外状態は,入力時に検出することが望ましい。

(3)

数値計算であふれが起こったとき。

(4)

数値計算で 0 除算が起こったとき。

(5) ATN2

の二つの引き数がともに 0 であるとき。

(6)

部分文字列の長さが負のとき。


38

B 8439-1992

附属書  構文の記述方法

1.

適用範囲  この附属書は,SLIM によるプログラムの構文の記述方法について規定する。

2.

構文の構成  構文は,構文図によって記述する。構文図は,構文要素で構成し,その並び順を矢印で

示して表す。

3.

構文要素  構文要素の記述例とその説明を附属書表 に示す。

附属書表 1  構文要素の記述例

構文要素の標記例

説明

この内にある文字列又は記号(この場合,FN)を

そのまま記述すべきことを示す。

この内に示す名称の定数,文など(この場合,

block

)を記述することを示す。

A

を 3 回繰り返すことを示している。

B

を 2 回まで繰り返してよいことを示している。

この場合 “C”, “C, C” 又は  “C, C, C”  のいずれ
かを記述することを示している。

 

括弧内は,この構文要素の意味・解説用に付けた
名称を示す。

この例では,ここで用いる正数 (positive number) 
を特に変数長と呼ぶことを示している。

4.

空白の挿入  空白の挿入については,次による。

(1)

構文図の中で実線で結ばれている構文要素の間は一つ以上の空白を置くことができる。隣り合う構文

要素で左の構文要素の最後の文字と右の構文要素の初めの文字とがともに英字又は数字の場合には,

一つ以上の空白で区切らなくてはならない。

(2)

構文図の中で二重線で結ばれた構文要素の間には,空白を置いてはならない。


39

B 8439-1992

ロボット言語 JIS 原案作成専門委員会  構成表

氏名

所属

(委員長)

新  井  民  夫

東京大学

松  元  明  弘

東洋大学

伊佐山  建  志

通商産業省

吉  田  藤  夫

工業技術院

柿  倉  正  義

工業技術院電子技術総合研究所

高  島      覺

財団法人機械振興協会

黒  澤  豊  樹

黒澤 R&G 技術事務所

石  井      博

株式会社小野技術研究所

鈴  木  和  彦

日本電装株式会社

吉  田  邦  夫

日本ビクター株式会社

斎  藤  和  春

セイコーエプソン株式会社.

川  村  敏  和

株式会社東芝

西  本  克  史

富士通株式会社

針  木  和  夫

株式会社不二越

佐  藤  和  克

松下電器産業株式会社

中  村  寿  夫

石川島播磨重工業株式会社

松  島  幹  治

川崎重工業株式会社

村  上  悦  三

株式会社ダイヘン

毛  利  峻  治

株式会社日立製作所

原      龍  一

ファナック株式会社

奥  井  得  博

富士電機株式会社

高  木  裕  明

ぺんてる株式会社

森      俊  二

三菱電機株式会社

田  中  雅  人

株式会社安川電機

松  本  博  志

株式会社ユーシン精機