2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
日本工業規格 JIS
B 8440-1995
産業用ロボット−中間コードSTROLIC
Industrial robots−Intermediate code STROLIC
1. 適用範囲 この規格は,種々の産業用ロボット(以下,ロボットという。)間での,中間コードレベル
における動作プログラムの移植性を高めるために,ロボットコントローラ(1)用中間コード(2)STROLIC
(Standard Robot Language in Intermediate Code) (以下,STROLICという。)の記述形式及び機能について規
定する。
中間コードに関する規格は,
(1) 中間コードの割付方法,
(2) 中間コードによるデータ構造表現,
(3) 中間コードの機能別割付表,
(4) システム関数の中間コード割付表
からなる。
注(1) ロボットコントローラ(以下,コントローラという。)は,STROLICの解釈をする処理系(イ
ンタプリタ),アクチュエータを駆動するサーボ系などからなる。
(2) この規格でいう中間コードは,ロボットシステム内部で使用されるもので,利用者が使用する
プログラム言語とは独立に設計されている。利用者は,任意のプログラム言語を選択できる。
ロボット用プログラム言語の一例として,SLIM (JIS B 8439) がある。
2. 用語の定義 この規格で用いる主な用語の定義は,次のとおりとする。
(1) プログラム装置 利用者がプログラムを用意するための装置。STROLICコードは,この装置によって
生成され,通信回線で接続されたコントローラに伝送される。上位計算機ともいう。
(2) プログラム STROLICコードの並び。
(3) 処理系定義 各処理系ごとの定義。各処理系は,その処理方法及び意味を何らかの形で定義化しなけ
ればならない。概念を,紛らわしくない文脈で明確な文章で表現する。
(4) 例外状態 中間コードが,STROLIC仕様に従って動作できない又は動作していないことを,処理系が
認識した状態とする。
(5) 拡張 STROLIC仕様に対する記述形式・機能の変更。ただし,拡張に際してSTROLIC仕様に合致す
るプログラムを排除してはならない。
(6) 動作領域 動作領域とは,ロボットの動作が保証される空間。
備考 JIS B 0134における“作業領域”,“可動領域”などのいずれに該当するかは,処理系に依存す
る。
(7) 座標系 STROLICが扱う座標系は,ロボットのベース座標系及びエンドエフェクタのツール座標系が
ある。
2
B 8440-1995
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
(8) タスク STROLICの処理系の外で,同時並行的に実行される実行単位。
(9) プロセス STROLICの処理系の中で,同時並行的に実行される実行単位。
3. 規定事項 この規格の規定事項は,次のとおりとする。
(1) STROLICによるコードの構文。
(2) STROLICで表現されたコードによって制御されるロボットシステムに対して入出力できるデータの
形式,数値の表現の精度及び範囲。
(3) STROLICで表現されたコードによって制御されるロボットシステムの動作。
(4) STROLICで表現されたコードの意味の解釈に関する事項。
(5) 検出されなければならない誤り及び例外状態並びにそれらの処理方法。
4. STROLICへの規格合致性
4.1
規格合致性 この規格では,次の二つの合致性を定める。
(1) STROLICで表現されたコードの規格合致性。
(2) STROLICで表現されたコードを処理する処理系の規格合致性。
4.2
コードの規格合致性 STROLICで表現されたコードは,次の条件を満たすとき,コードの規格合致
性をもつ。
(1) STROLICプログラム中の各々のコードが,この規格で定める正しい構文に従っていること。
(2) STROLICプログラム中の各々のコードが,この規格で明示的に定める正しい意味をもっていること。
(3) STROLICプログラム中のコードの列が,全体としてこの規格で明示的に定める正しい意味をもつ正し
いプログラムを構成していること。
4.3
処理系の規格合致性 処理系は,次の条件を満たすとき,処理系の規格合致性をもつ。
(1) コードの規格合致性をもつプログラムを受け入れて実行できること。
(2) コードの規格合致性をもたないプログラムに対しては,これを実行できないことを報告できること。
(3) 誤り及び例外状態を,この規格の定めるところに従って解釈し実行できること(4.4及び4.5参照)。
(4) コードの規格合致性をもつプログラム中の各々のコードの意味を,この規格の定めるところに従って
実行できること。
(5) コードの規格合致性をもつプログラム中の全体としての意味を,この規格の定めるところに従って実
行できること。
(6) 数値については,この規格で定める精度及び範囲を処理できること。
(7) この規格で“規定しない”としている機能及び“処理系定義”としている機能に対する動作を,明確
に定義してあること。
4.4
誤りの処理 コード及びプログラム中の構文上又は意味上の誤りがあることを,必ずしも報告しな
くてもよい。
4.5
例外状態の処理 例外状態の処理は,次による。
(1) 処理系の規格合致性をもつ処理系は,この規格で定める例外状態を,すべて報告しなければならない。
ただし,例外状態を処理する機能を備えている場合は,例外状態を報告しなくてもよい。
(2) 処理系の規格合致性をもつ処理系は,例外状態を検出したとき,プログラムの実行を停止する。プロ
グラムの実行が停止すると,ロボットの動作も停止する。ただし,例外処理手続を規定している場合
は,その手続による。この例外処理の規定がある場合であっても,処理系のハードウェア,操作環境
3
B 8440-1995
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
などの制約によって,例外処理の手続がとれない場合は,プログラムの実行を終了する。
(3) この規格では,プログラムの実行の停止及びロボットの動作の停止について処理系定義とし,例外状
態の検出の順序及び処理の順序については規定しない。
4.6
拡張の規格合致性 処理系の規格合致性をもつ処理系は,拡張した言語仕様で表現されたプログラ
ムを受け入れてもよい。この処理系がそのようなプログラムを受け入れる場合には,STROLIC仕様に合致
していない部分を報告する必要はない。ただし,この場合であって,コードがSTROLIC仕様に合致して
いないとき,処理系は,誤りを報告するか又は合致していない部分の構文規則及び意味をあらかじめ与え
ておかなければならない。
5. STROLIC
5.1
STROLICコードの構文 STROLICコードの構文は,次による。
STROLICコード = データコード | 機能コード
データコード = 評価抑制データ | 数値データ | 文字列データ |
間接参照 | 配列データ |
レコードデータ | 関数データ |
ベクトルデータ | 同次変換データ |
ポーズデータ
機能コード = STROLIC関数 | 利用者コード
5.2
STROLICコードの意味 中間コードは,バイト列で表現する。中間コードには,データを表すタグ
付きデータ及び機能を表す機能コードがある。機能コードは,2バイト(又は4バイト)を単位とするビ
ット列の並びであり,ビットパターンがもつ意味とその並びがもつ意味とで解釈される。機能コードでは
先に現れたバイトが上位のビットを構成する。
参考 中間コードは,シリアルライン上を送られたり,ファイルに直接書き込まれることを想定して
いるが,印刷可能でない文字及びASCIIコードにおける制御文字を含むので,実際の伝送又は
ファイル操作において,制御用コードの取扱いに注意する。
6. 評価抑制データ
6.1
評価抑制データの構文 評価抑制子の構文は,次による。
評価抑制子データ=評価抑制タグ( データ頭部 | 機能コード )
データ頭部 = 評価抑制タグ | 間接参照タグ | データタグ部
データタグ部 = 1バイト整数タグ | 2バイト整数タグ|
4バイト整数タグ | 4バイト実数タグ |
8バイト実数タグ |
配列タグ 長さ 配列要素タグ |
文字列タグ 長さ | レコードタグ 長さ |
関数タグ 長さ | ベクトルタグ |
同次変換タグ | ポーズタグ 長さ
長さ = 整数データ
4
B 8440-1995
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
6.2
評価抑制子の意味 一般の中間コードは,フェッチされると,それぞれ決まった評価が行われる。
例えば,変数を評価すると,その値が得られる。しかし,評価を行わずに,そのままスタックに積みたい
場合がある。このとき,評価抑制子#を用いる。評価抑制の対象は,ユーザ変数,関数及びタグがある。
ユーザ変数及び関数の場合は,コードそのものが結果となる。タグの場合は,1バイトのタグコードが
結果となる。長さをもつタグの場合には,長さ情報までを含めたバイト列,配列の場合,長さの情報及び
要素の型を表すタグまでのバイト列が結果となる。
可変の長さをもつデータ構造では,その長さがそのデータ構造の長さに対応したバイト数を表す。長さ
は,正の整数値とする。長さは,タグ付きの整数で表す。したがって,127以下の値ならタグ付きの1バ
イトの整数を用い,それ以上なら2バイト又は4バイトの整数を用いる。
7. 数値データ
7.1
数値データの構文 数値データの構文は,次による。
数値データ = 整数データ | 実数データ
整数データ = 1バイト整数 | 2バイト整数 | 4バイト整数
1バイト整数 = 1バイト整数タグ 1バイト整数値
2バイト整数 = 2バイト整数タグ 2バイト整数値
4バイト整数 = 4バイト整数タグ 4バイト整数値
実数データ = 4バイト実数 | 8バイト実数
4バイト実数 = 4バイト実数タグ 4バイト実数値
8バイト実数 = 8バイト実数タグ 8バイト実数値
7.2
数値データの意味 整数には,1バイト整数,2バイト整数,4バイト整数の三つがある。1バイト
整数は,タグF1の後に1バイトの整数値が続く。2バイト整数では,タグF2の後に2バイトの整数値が
上位バイト・下位バイトの順で続く。4バイト整数も同様である。
実数には,4バイト実数と8バイト実数との二つがある。4バイト実数では,タグF5の後に4バイトの
実数値が上位バイトから下位バイトへと続く。8バイト実数の場合も同様である。実数の表現形式は,参
考2の表現を推奨する。
8. 間接参照
8.1
間接参照の構文 間接参照の構文は,次による。
間接参照 = 間接参照タグ 利用者コード
8.2
間接参照の意味 間接参照では,続く2バイトで表されるユーザコードの中身を用いた間接参照を
行う。
9. 配列データ
9.1
配列データの構文 配列データの構文は,次による。
配列データ = 配列タグ 長さ 配列要素タグ { 配列要素 }*
配列要素タグ = データタグ部
配列要素 = タグなしデータコード
5
B 8440-1995
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
9.2
配列データの意味 配列データは,配列を表す。配列とは,同一の型のデータを並べたものである。
配列データは,配列タグ,データの長さ,配列要素タグに続く配列要素の並びである。配列要素タグは,
配列要素に対応する型のタグを用いる。配列要素は,データコードからタグを取除いた部分(タグなしデ
ータコード)で表現する。
長さは,配列要素の全量をバイトで表した値であり,配列タグ,長さ及び配列要素タグの長さは含まな
い。
10. 文字列データ
10.1 文字列データの構文 文字列データの構文は,次による。
文字列データ = 文字列タグ 長さ { 文字 }*
10.2 文字列データの意味 文字列は,文字データ(バイト)の並びである。文字コード系には依存しな
い。特に漢字コードを含むことを妨げない。文字列は,文字列タグに続いて文字列の長さがあり,その後
に文字データが並ぶ。
長さは,文字データの長さをバイト数で表した値であり,タグ及び長さの長さは含まない。
11. レコードデータ
11.1 レコードデータの構文 レコードデータの構文は,次による。
レコードデータ = レコードタグ 長さ { レコード要素 }*
レコード要素 = タグなしデータコード
11.2 レコードデータの意味 レコードデータは,レコード構造体を表す。レコード構造体とは,型の異
なるデータの集まりである。レコードデータの内部構造は,STROLICでは関知しない。内部構造のアクセ
スは,利用者の責任である。レコードデータは,レコードタグに続き,データの長さがあり,その後にレ
コードの要素データが並ぶ。レコード要素にはタグを付けず,データコードからタグを取除いた部分(タ
グなしデータコード)を並べて表現する。
長さは,レコード・データの長さをバイト数で表した値であり,タグ及び長さは含まない。
12. 関数データ
12.1 関数データの構文 関数データの構文は,次による。
関数データ = 関数タグ 長さ { STROLICコード }*
12.2 関数データの意味 ユーザ関数の表現である。コードの列の部分には,関数の本体を,中間コード
で表す。関数の本体の中では,分岐関係の中間コードを用いることができる。関数のコードの列は,関数
定義の終了のコード “END” で終わっていなければならない。
長さは,関数のコードの長さをバイト数で表した値であり,タグ及び長さは含まない。
13. ベクトルデータ
13.1 ベクトルデータの構文 ベクトルデータの構文は,次による。
ベクトルデータ = ベクトルタグ { ベクトル要素 }3
ベクトル要素 = 4バイト実数値
6
B 8440-1995
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
13.2 ベクトルデータの意味 ベクトルは,三つの実数データの集まりで,全体で14バイトの長さをもつ。
各実数値は,4バイト(単精度)で,実数を示すタグはもたない。3次元ベクトル値を表す。ベクトルタグ
をVec,3実数値をそれぞれx,y,zとするとき,
Vec x y z
は,ベクトル
[x,y,z]
を表す。
14. 同次変換データ
14.1 同次変換データの構文 同次変換データの構文は,次による。
同次変換データ = 同次変換タグ { 同次変換要素 }12
同次変換要素 = 4バイト実数値
14.2 同次変換データの意味 同次変換データは,12個の実数データからなり,全体で50バイトの長さを
もつ。各実数値は,4バイト(単精度)で,実数を示すタグはもたない。3行×4列の変換行列を表す。同
次変換タグをTrn,それに続く各実数値をPx,Py,Pz,Nx,Ny,Nz,Ox,Oy,Oz,Ax,Ay,Azとする
と,
Trn Px Py Pz Nx Ny Nz Ox Oy Oz Ax Ay Az
は,同次変換マトリクス
Nx Ox Ax Px
Ny Oy Ay Py
Nz Oz Az Pz
0
0
0
1
を表す。
15. ポーズデータ
15.1 ポーズデータの構文 ポーズデータの構文は,次による。
ポーズデータ = ポーズタグ 長さ { ポーズ要素 }*
ポーズ要素 = 数値データ
15.2 ポーズデータの意味 ポーズの表現である。ポーズとは,空間上の位置の情報のほか,その位置で
のロボットの姿勢及びその他のパラメータの総合体である。
また,その内部表現は,各インプリメントに依存して様々である。したがって,ここではその内部表現
には関与しない。ポーズにかかわる一まとまりの情報を,ポーズデータと呼ぶ。
長さは,ポーズデータの長さをバイト数で表した値であり,タグ及び長さは含まない。
長さ以下のデータの構成は,処理系定義とする。STROLICでは関知しない。ただし,各処理系は,この
表現と同次変換データの表現との間の相互変換の関数(TRNとPNT)を提供しなくてはならない。この変
換に際し,同次変換データの表現だけでは表しきれない情報については,仮想マシン内に状態パラメータ
(これを,コンフィギュレーションと呼ぶ)を設ける。コンフィギュレーション(主に,姿勢関連)は,
コンフィギュレーション情報の設定/参照の関数によって取り扱う。このコンフィギュレーション情報の
操作関数には拡張関数が用意されており,各処理系ごとの拡張に対応できる。
7
B 8440-1995
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
16. STROLIC関数
16.1 STROLIC関数の構文 STROLIC関数の構文は,次による。
STROLIC関数 = 2バイトSTROLIC関数コード
STROLIC関数は,2バイトのSTROLIC関数コードであり,表1に示すものからなる。
表1 STROLIC関数一覧表
コード
表記
機能
EF00
ADD
加算
EF01
SUB
減算
EF02
MUL
乗算
EF03
DIV
除算
EF04
PWR
べき乗
EF05
MOD
剰余
EF06
IDIV
整数除算
EF07
INC
1増加
EF08
DEC
1減少
EF09
EQU
比較・等しい
EF0A
NEQ
比較・等しくない
EF0B
LEQ
比較・小さいか等しい
EF0C
GEQ
比較・大きいか等しい
EF0D
LT
比較・小さい
EF0E
GT
比較・大きい
EF0F
AEQ
近似比較
EF10
CPL
1の補数
EF11
AND
論理積
EF12
OR
論理和
EF13
XOR
排他的論理和
EF14
BSET
ビットセット
EF15
BCLR
ビットクリア
EF16
BTST
ビットテスト
EF17
LSH
左論理シフト
EF18
RSH
右論理シフト
EF19
LSHA
左算術シフト
EF1A
RSHA
右算術シフト
EF1B
NOT
論理否定
EF1C
CONC
文字列の連結
EF1D
LNG
文字列の長さ
EF1E
MID
部分文字列の取出し
EF1F
SIN
正弦
EF20
COS
余弦
EF21
TAN
正接
EF22
ATAN
逆正接
EF23
ATAN2
逆正接(2引き数)
EF24
LN
自然対数
EF25
EXP
指数
EF26
SQRT
平方根
EF27
NEG
2の補数
EF28
ABS
絶対値
EF29
SGN
符号判定
EF2A
INT
整数化
EF2B
INT1
1バイト 整数化
8
B 8440-1995
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
コード
表記
機能
EF2C
INT2
2バイト 整数化
EF2D
INT4
4バイト 整数化
EF2E
REAL
実数化
EF2F
REAL4
4バイト 実数化
EF30
REAL8
8バイト 実数化
EF31
SEPS
近似比較パラメタ (ε) の設定
EF32
EPS
近似比較パラメタ (ε) の読出し
EF33
PI
円周率
EF34
DEGRAD
度・ラジアン変換
EF35
RADDEG
ラジアン・度変換
EF36
VLEN
ベクトル長
EF37
VADD
ベクトルの和
EF38
VSUB
ベクトルの差
EF39
VTIMES
ベクトルのスカラ倍
EF3A
VPRODI
ベクトルの内積
EF3B
VPRODO
ベクトルの外積
EF3C
TPROD
同次変換の積
EF3D
TINV
同次変換の逆変換
EF3E
TPRODV
同次変換とベクトルの積
EF3F
TRN
ポーズから同次変換への変換
EF40
PNT
同次変換からポーズヘの変換
EF41
LOC
ポーズの位置成分取出し
EF42
DEV
ポーズの並進変換
EF43
DEVH
ツール座標によるポーズの並進変換
EF44
PADD
ポーズの加算
EF45
PSUB
ポーズの減算
EF46
CONSP
ポーズデータの構成
EF47
DESTP
ポーズデータの分解
EF48
CONSV
ベクトルの構成
EF49
DESTV
ベクトルの分解
EF4A
CONSA
配列の構成
EF4B
DESTA
配列の分解
EF4C
CONSU
利用者コードの構成
EF4D
DESTU
利用者コードの分解
EF4E
DUP
スタックトップのコピー
EF4F
DROP
スタックトップの切り落とし
EF50
EXCH
スタックトップの入替え
EF51
PUSH
データのプッシュ
EF52
POP
データのポップアップ
EF53
STORE
代入
EF54
EXTB
バイト抽出
EF55
EMBB
バイト埋込み
EF56
EXTE
要素抽出
EF57
EMBE
要素埋込み
EF58
BRA
相対分岐(3)
EF59
BRF
偽条件相対分岐(3)
EF5A
BRT
真条件相対分岐(3)
EF5B
RET
復帰(3)
EF5C
END
関数宣言の終わり(3)
EF5D
NESTIN
入れ子構造の設定
EF5E
NESTOUT
入れ子構造からの復帰
9
B 8440-1995
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
コード
表記
機能
EF5F
NPUSH
外側の入れ子レベルのデータのプッシュ
EF60
NPOP
外側の入れ子レベルのデータのポップアップ
EF61
DCL
変数宣言
EF62
FREE
変数の解放
EF63
VAR
DCL,FREEの始まり
EF64
FDEF
関数定義の始まり
EF65
BAL
サブルーチンの呼出し
EF66
GRET
関数実行の強制終了
EF67
ALLOC
領域の割付け
EF68
ALLOCZ
領域の割付け
EF69
ACLR
領域のクリア
EF6A
ARELS
領域の解放
EF6B
ASIZE
領域のサイズを得る
EF6C
VERID
STROLICのバージョンIDを得る
EF6D
SYSID
処理系のバージョンIDを得る
EF6E
INIT
中間コードインタプリタの初期化
EF6F
TRON
トレース開始
EF70
TROFF
トレース終了
EF71
TRACE
トレース
EF72
SYNC
同期
EF73
ACK
肯定的応答
EF74
NAK
否定的応答
EF75
RESULT
結果要求
EF76
FXQT
関数の起動
EF77
TXQT
タスクの起動
EF78
FPREDC
関数の実行優先度
EF79
TPRECD
タスクの実行優先度
EF7A
FCYCLE
関数の周期起動指定
EF7B
TCYCLE
タスクの周期起動指定
EF7C
FDONE
関数の終了判定
EF7D
TDONE
タスクの終了判定
EF7E
FKILL
関数の強制終了
EF7F
TKILL
タスクの強制終了
EF80
FSUSPEND
関数の強制中断
EF81
TSUSPEND
タスクの強制中断
EF82
FRESUME
関数の強制再開
EF83
TRESUME
タスクの強制再開
EF84
LOCK
競合資源のロック
EF85
UNLOCK
競合資源のロック解除
EF86
EWAIT
事象の待合わせ
EF87
EWAITA
複数事象の待合わせ(AND条件)
EF88
EWAITO
複数事象の待合わせ(OR条件)
EF89
EPOP
事象の取出し
EF8A
ESIG
事象の発生
EF8B
ECLR
事象のクリア
EF8C
CHIN
チャネルからのデータ入力
EF8D
CHOUT
チャネルへのデータ出力
EF8E
SHARE
共有変数の宣言
EE00
TIME
時刻
EE01
DATE
日付
EE02
CLOCK
時計
10
B 8440-1995
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
コード
表記
機能
EE03
STIME
時刻の設定
EE04
SDATE
日付の設定
EE05
CLRCLK
内部時計のクリア
EE06
PACKTM
時刻要素データのまとめ
EE07
UNPKTM
時刻データの要素データへの分解
EE08
PACKDT
日付要素データのまとめ
EE09
UNPKDT
日付データの要素データへの分解
EE0A
CNFG
通信ポートの設定
EE0B
DOUT
出力ポートへの出力
EE0C
DIN
入力ポートからの入力
EE0D
IOWAIT
入力条件待ち
EE0E
ACT
割込みの活性化
EE0F
ACTRS
割込みの不活性化
EE10
REACT
割込みの再活性化
EE11
ACTCODE
割込みコードの定義
EE12
ACTION
割込み処理の定義
EE13
TIMER
タイマ割込みの設定
EE14
RTIMER
タイマ割込みの再設定
EE15
TACTION
タイマ割込み処理の定義
EE16
FSTAT
ファイルステータスの取出し
EE17
OUTPUT
ファイルへの書出し
EE18
INPUT
ファイルの読込み
EE19
LOUTPUT
ファイルの1行書出し
EE1A
LINPUT
ファイルの1行読込み
EE1B
FOPEN
ファイルの入出力用オープン
EE1C
FCLOSE
ファイルのクローズ
EE1D
PUTC
1文字出力
EE1E
GETC
1文字入力
EE1F
DECODE1
文字列の分解(BASIC形式)
EE20
ENCODE1
文字列の構成(BASIC形式)
EE21
DECODE2
文字列の分解(C形式)
EE22
ENCODE2
文字列の構成(C形式)
ED00
JSPEED
関節速度指定
ED01
SPEED
手先速度指定
ED02
ACCEL1
手先加速度指定
ED03
ACCEL2
時間による手先加速度指定
ED04
DECEL1
手先減速度指定
ED05
DECEL2
時間による手先減速度指定
ED06
SCONF
コンフィギュレーション設定
ED07
SCONF2
コンフィギュレーション設定2
ED08
SCONF3
コンフィギュレーション設定3
ED09
GCONF
コンフィギュレーション取出し
ED0A
GCONF2
コンフィギュレーション取出し2
ED0B
GCONF3
コンフィギュレーション取出し3
ED0C
HERE
現在ポーズの取込み
ED0D
JHERE
現在ジョイント値の取込み
ED0E
CALIB
キャリブレーション
ED0F
PAUSE
中断
ED10
DELAY
時間待ち
ED11
AJMOVE
関節角空間直線補間絶対移動
ED12
IJMOVE
関節角空間直線補間相対移動
11
B 8440-1995
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
コード
表記
機能
ED13
ALMOVE
直角座標空間直線補間絶対移動
ED14
ILMOVE
直角座標空間直線補間相対移動
ED15
HMOVE
ツール座標系直線補間移動
ED16
CMOVE1
直角座標空間円弧補間移動
ED17
CMOVE3
直角座標空間3点指定円弧補間移動
ED18
ADRIVE
関節角絶対位置移動
ED19
IDRIVE
関節角相対位置移動
ED1A
SACC
近傍精度設定
ED1B
GACC
近傍精度参照
ED1C
$WAIT
ロボットの動作完了待ち
ED1D
$DONE
ロボットの動作完了判定
ED1E
HANDOPEN
ハンドを開く
ED1F
HANDCLOSE
ハンドを閉じる
ED20
GRASP
握る
ED21
HANDDEF
ハンドの定義
ED22
HANDREF
ハンド定義の参照
ED23
HANDCHG
ハンドの交換
注(3) 関数データの中だけで有効。
16.2 STROLIC関数の意味 STROLIC関数が評価されると,あらかじめ定められた機能が実行される。
それぞれの機能については,附属書1に規定する。機能の実行に際しては,必要ならば,スタック上のデ
ータを引き数として用いる。
また,実行の結果をスタック上に置くものもある。
17. 利用者コード
17.1 利用者コードの構文 利用者コードの構文は,次による。
利用者コード = 2バイト利用者コード | 拡張利用者コード
17.2 利用者コードの意味 2バイト利用者コードは,2バイトのコードであり,16進数で1000からEAFF
の値を取る。拡張利用者コードは,4バイトのコードであり,16進数でEA001000からEBFFFFFFの値を
取る。拡張利用者コードのうち,EB001000からEB00EAFFは,2バイト利用者コードの1000からEAFF
に対応する。0000から0FFFまでは利用しない。
利用者コードには,利用者が値を代入することができる。関数データを代入すれば利用者コードは関数
コードとなり,その他のデータを代入すれば変数コードとなる。関数コードの評価では,利用者によって
定められた機能が実行される。
また,変数コードの評価では,代入されている値を取り出し,スタックへプッシュする。
18. タグ
18.1 一般 STROLICのデータコードは,タグで始まる。タグには,1バイトのタグである基本データタ
グ及び2バイトのタグである拡張データタグがある。タグコードに続くデータには,各タグごとにその長
さと意味を定める。
18.2 基本データ構造 基本データ構造は,STROLICの基本的データを表現するデータ構造で,基本デー
タタグで始まる。基本データタグを表2に示す。
12
B 8440-1995
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
表2 基本データタグ
タグ
表記
意味
F0
#
評価抑制子
F1
I1
1バイト整数
F2
I2
2バイト整数
F3
--
予約
F4
I4
4バイト整数
F5
R4
4バイト実数
F6
R8
8バイト実数
F7
Rf
間接参照
F8
--
予約
F9
Ar
配列
FA
St
文字列
FB
Rd
レコード
FC
--
予約
FD
Fn
関数
FE
(Mc)
予約(機械語関数)
FF
ext
タグ拡張(2バイトタグ)
18.3 拡張データ構造 拡張データ構造は,ロボット用データを表現するデータ構造で,拡張データタグ
(2バイト)で始まる(表3参照)。
表3 拡張データタグ
タグ
表記
意味
FF01
Vec
ベクトル
FF02
Trn
同次変換
FF03
--
予約
FF04
Pm
点(マシン表現)
FF05〜FF7F
予約
FF80〜FFFF
利用者拡張用
関連規格 JIS B 0134 産業用ロボット−用語
JIS B 8439 産業用ロボット−プログラム言語 SLIM
JIS X 0001 情報処理用語 基本用語
JIS X 0015 情報処理用語(プログラム言語)
JIS X 0201 情報交換用符号
IEEE 754 A Standard for Binary Floating Point Arithmetic
13
B 8440-1995
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
附属書1 組込関数の機能
1. 適用範囲 この附属書は,STROLICにおける組込関数の機能に関する一般的事項及び詳細について規
定する。
2. 内部割付け 組込機能を三つに大別し,以下のようにコード領域を割り付ける。
(1) EC00〜EDFF (512) ロボット制御機能の呼出し
(2) EE00〜EEFF (256) システム機能の呼出し
(3) EF00〜EFFF (256) 仮想マシン基本操作
基本操作は,仮想マシン内の基本的オペレーションを行う。システム機能の呼出しは,ロボット制御装
置の基本システム内の機能の呼出しで,入出力,時計などを含む。ロボット制御機能の呼出しは,文字ど
おり各種ロボットの制御機能を呼び出す。
3. 基準整数 中間コードは,表面記述と異なり,様々なデータの表現をコーディングしたものが取り扱
われる。各種データの表現に用いられるデータの内部表現は,主に整数である。すなわち,表面記述上の
様々なデータは,整数値に符号化されて内部で取り扱われる。このため整数表現は,単に整数を表すとい
う以上に,より重要な基本データである。中間コードでは,整数にタグ付きで可変長の表現を用いている。
しかし,コーディングにおいて,ときとしてこうした可変長のデータ表現が適していない場合がある。例
えば,ビットごとに意味のあるデータなどである。こうした目的には,基準整数として2バイト整数(I2
整数)を用いる。
4. ビット位置表現 データ単位内のビット位置を表す表し方が必要である。データ単位内でのビットの
位置は,そのビットの2のべき乗の指数で表す。したがって,最下位ビットは2の0乗であるので,第0
ビットと表す。最上位ビットは,用いるデータ単位の大きさによって,8ビットのデータ単位では2の7
乗で第7ビット,16ビット長では第15ビット,32ビット長では第31ビットと表現する。
5. 混合演算 算術演算では,内部表現の異なる数値データどうしの演算,混合演算が行えると便利であ
る。中間コードでは,長さが異なる整数データどうし,長さ(精度)が異なる実数データどうし及び整数
データと実数データとの間の演算がある。各データ間の関係を強さの表現を用い,
I1 < I2 < I4 < R4 < R8
と表した場合,混合演算では,より強い方のデータ表現に変換して演算が行われる。
また,その演算結果も,その強いデータ表現で得られる。
6. 丸めの処理 関数の引き数が整数として意味をもつ場合,実引き数が実数ならば,特別の規定のない
限り,関数の評価(実行)に先立ってあらかじめ整数に丸められる。
14
B 8440-1995
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
7. 論理値 論理操作のために,論理値の表現を定める必要がある。STROLICに,論理型のデータは存在
しない。論理データは,基準整数型 (I2) のデータに論理値をコーディングして用いる。まず,論理値の真
と偽とに対し,標準整数の1と0とを対応させる。
真・・・1
偽・・・0
また,論理値の判定の場合,スタック上のデータが,I1,I2,I4,R4,R8のいずれの型であっても,そ
の値が0ならば偽,さもなければ真と評価する。
if 論理値 = 0 then 偽 else 真
8. エラーコード 各種関数には,実行に際しエラーの発生するものがある。このような場合に,関数の
実行終了時にエラーコードが帰される。このエラーコードの割付けは,特に規定された場合を除いて,次
のルールによる。
(1) エラーコードには標準整数を用いる。
(2) 0をノーマル状態(ノーエラー)とする。
(3) エラーに対して正の整数値を小さい方から順に割り振る。
ただし,ビットに意味があるような場合,この限りではない。
9. 例外処理 組込関数一覧の例外の項に,発生する例外とその処理を記述する。しかし,一般的に発生
する例外のすべてを記述してはいない。STROLICの処理系が扱う例外として,計算機言語一般のものとロ
ボット言語特有のものがある。計算機言語一般の例外として,次のものがある。
・ 0による割算
・ 数値のオーバーフロー又はアンダーフロー
・ スタックのオーバーフロー又はアンダーフロー
・ データの型の不一致
・ 未定義のデータ
・ その他の計算機エラー
ロボット言語特有の例外として,次のものがある。
・ 動作領域外
・ 速度過大
・ その他のエラー
これらの例外が発生したとき,インタプリタは停止する。
また,例外の項に処理が記述されていない場合にも,停止する。
また,ロボットコントローラで発生する例外としては,次のものがある。
・ 非常停止
・ サーボエラー
・ 通信エラー
・ その他のコントローラエラー
これらの例外が発生したとき,サーボ電源を落とすなどロボットそのものの動作が停止するよう処置す
る。
また,例外の項にその処理が記述されていない場合にも,停止する。
15
B 8440-1995
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
なお,いずれの場合でも停止及び復旧の具体的手順については,処理系定義とする。
10. 組込関数の詳細 STROLICにおける組込関数の詳細については,附属書1表1に規定する。附属書1
表1の様式(項目及び内容)は,次のとおり。
コード
STROLIC関数のコード番号(16進数表現)
表記
コードに付けられた名前(ニーモニック)
機能
簡便に表現された関数の働き
呼出形式
関数の実行のさせ方(引き数の順番)
結果
関数の実行後スタックに残される結果
入力
引き数の型及び意味
出力
結果の型及び意味
説明
機能の詳細説明
例外
関数の実行時に発生する例外事項及びその処理
備考
その他の補足的事項
附属書1表の読み方は,次の例のとおりである。
例
コード
項目
記述
EF01
表記
SUB
機能
減算 (subtract)
呼出形式
結果
a b SUB
c
入力
出力
a :I1,I2,I4,R4,R8
b :I1,I2,I4,R4,R8
c :I1,I2,I4,R4,R8
説明
スタック上の二つの数の減算を行い,結果
をスタックへ置く。
c=a−b
例外
備考
読み方 呼出形式の例 (a b SUB) では,引き数がa,b実行すべき関数がSUBである。STROLICでは,こ
の順で評価が進むことを表している。以下,スタックが使用されているとして説明する。a及びbは,こ
の順に積まれる(つまり,bがTop of Stackになる)。関数SUBが実行されると,a,bがスタック上から
取り除かれ,結果として,数値cがスタック上に積まれる。この関数SUBは,2引き数で一つの出力の関
数である。
入力の型及びに結果の型の指定は,引き数aが任意の数値(I1,I2,I4,R4,R8の一つ)であり,引き
数bも同様である。結果cも数値であり,その型は混合演算の結果として得られる型となる。入力の型,
出力の型の欄には可能な型をコンマ (, ) で区切って並べる。
16
B 8440-1995
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
附属書1表1 組込関数
コード
EF00
表記
ADD
機能
加算 (add)
呼出形式
a b ADD
結果
c
入力
a :I1,I2,I4,R4,R8
b :I1,I2,I4,R4,R8
出力
c :I1,I2,I4,R4,R8
説明
スタック上の二つの数の加算を行い,結果をスタックへ置く。
c=a+b
例外
備考
コード
EF01
表記
SUB
機能
減算 (subtract)
呼出形式
a b SUB
結果
c
入力
a :I1,I2,I4,R4,R8
b :I1,I2,I4,R4,R8
出力
c :I1,I2,I4,R4,R8
説明
スタック上の二つの数の減算を行い,結果をスタックへ置く。
c=a−b
例外
備考
コード
EF02
表記
MUL
機能
乗算 (multiply)
呼出形式
a b MUL
結果
c
入力
a :I1,I2,I4,R4,R8
b :I1,I2,I4,R4,R8
出力
c :I1,I2,I4,R4,R8
説明
スタック上の二つの数の乗の演算を行い,結果をスタックへ置く。
c=a×b
例外
17
B 8440-1995
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
備考
コード
EF03
表記
DIV
機能
除算 (divide)
呼出形式
a b DIV
結果
c
入力
a :I1,I2,I4,R4,R8
b :I1,I2,I4,R4,R8
出力
c :R8
説明
スタック上の二つの数の除算を行い,結果をスタックへ置く。
c=a÷b
例外
0除算は,エラー検出をする。エラーに対する処理は,処理系定義とする。
備考
コード
EF04
表記
PWR
機能
べき乗 (power)
呼出形式
a b PWR
結果
c
入力
a :I1,I2,I4,R4,R8
b :I1,I2,I4,R4,R8
出力
c :I1,I2,I4,R4,R8
説明
スタック上の二つの数のべき乗の演算を行い,結果をスタックへ
置く。
c=ab
例外
b<0の場合は,0除算の場合と同じ処理を行う。
備考
コード
EF05
表記
MOD
機能
剰余 (modulo)
呼出形式
a b MOD
結果
c
入力
a :I1,I2,I4
b :I1,I2,I4
出力
c :I1,I2,I4
説明
スタック上の二つの数の剰余を取り,結果をスタックへ置く。
SGN (a) × ( |a|−INT( |a|÷|b| ) ×|b| )
例外
除数bが0の場合は,0除算と同じ処理を行う。
備考
剰余の符号
18
B 8440-1995
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
コード
EF06
表記
IDIV
機能
整数除算 (integer divide)
呼出形式
a b IDIV
結果
c
入力
a :I1,I2,I4
b :I1,I2,I4
出力
c :I1,I2,I4
説明
スタック上の二つの数の整数除算を行い,結果をスタックへ置
く。
SGN (a×b) ( INT ( |a|÷|b| ) )
例外
除数bが0の場合,0除算と同様の処理を行う。
備考
整数除算の符号
コード
EF07
表記
INC
機能
1増加 (increment)
呼出形式
a INC
結果
b
入力
a :I1,I2,I4
出力
b :I1,I2,I4
説明
スタック上の数に1の加算を行い,結果をスタックへ置く。
b=a+1
例外
備考
結果bの型は,入力aと同じとする。
正の最大値をINCすると,結果は負の最大値となる。
コード
EF08
表記
DEC
19
B 8440-1995
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
機能
1減少 (decrement)
呼出形式
a DEC
結果
b
入力
a :I1,I2,I4
出力
b :I1,I2,I4
説明
スタック上の数から1を引き,結果をスタックへ置く。
b=a−1
例外
備考
結果bの型は入力aと同じとする。
負の最大値をDECすると,結果は正の最大値となる。
コード
EF09
表記
EQU
機能
比較・等しい (equal)
呼出形式
a b EQU
結果
c
入力
a :I1,I2,I4,R4,R8
b :I1,I2,I4,R4,R8
出力
c :I2 (論理値)
説明
スタック上の二つの数の比較を行い,結果をスタックへ置く。
a=bのとき c=真
a≠bのとき c=偽
例外
備考
整数の比較の場合,入力の型が一致していないときでも,値が等しければ,結果を真とする。
実数の比較の場合,入力の型が同じでなくてはならない。
型が異なる場合,結果を偽とする。
整数と実数の比較は,結果を偽とする。
コード
EF0A
表記
NEQ
機能
比較・等しくない (not equal)
呼出形式
a b NEQ
結果
c
入力
a :I1,I2,I4,R4,R8
b :I1,I2,I4,R4,R8
出力
c :I2 (論理値)
説明
スタック上の二つの数の比較を行い,結果をスタックへ置く。
a≠bのとき c=真
a=bのとき c=偽
20
B 8440-1995
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
例外
備考
整数の比較の場合,入力の型が一致していないときでも,値が等しくなければ,結果を真とする。
実数の比較の場合,入力の型が同じでなくてはならない。
型が異なる場合,結果を真とする。
整数と実数の比較は,結果を真とする。
コード
EF0B
表記
LEQ
機能
比較・小さいか等しい (less than or equal to)
呼出形式
a b LEQ
結果
c
入力
a :I1,I2,I4,R4,R8
b :I1,I2,I4,R4,R8
出力
c :I2 (論理値)
説明
スタック上の二つの数の比較を行い,結果をスタックへ置く。
a≦bのとき c=真
a>bのとき c=偽
例外
備考
コード
EF0C
表記
GEQ
機能
比較・大きいか等しい (greater than or equal to)
呼出形式
a b GEQ
結果
c
入力
a :I1,I2,I4,R4,R8
b :I1,I2,I4,R4,R8
出力
c :I2 (論理値)
説明
スタック上の二つの数の比較を行い,結果をスタックへ置く。
a≧bのとき c=真
a<bのとき c=偽
例外
備考
コード
EF0D
表記
LT
機能
比較・小さい (less than)
呼出形式
a b LT
結果
c
入力
a :I1,I2,I4,R4,R8
b :I1,I2,I4,R4,R8
出力
c :I2 (論理値)
21
B 8440-1995
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
説明
スタック上の二つの数の比較を行い,結果をスタックへ置く。
a<bのとき c=偽
a≧bのとき c=偽
例外
備考
コード
EF0E
表記
GT
機能
比較・大きい (greater than)
呼出形式
a b GT
結果
c
入力
a :I1,I2,I4,R4,R8
b :I1,I2,I4,R4,R8
出力
c :I2 (論理値)
説明
スタック上の二つの数の比較を行い,結果をスタックへ置く。
a>bのとき c=真
a≦bのとき c=偽
例外
備考
コード
EF0F
表記
AEQ
機能
近似比較 (approximately equal)
呼出形式
a b AEQ
結果
c
入力
a :R4,R8
b :R4,R8
出力
c :I2 (論理値)
説明
スタック上の二つの数の近似比較を行い,結果をスタックへ置く。すなわち,もしabs (a−b) <εなら
結果は真,そうでなければ偽となる。
|a−b|<εのとき c=真
|a−b|≧εのとき c=偽
例外
備考
近似の許容範囲εの設定には,関数SEPSを用いる。
コード
EF10
表記
CPL
機能
1の補数 (complement)
呼出形式
a CPL
結果
b
22
B 8440-1995
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
入力
a :I1,I2,I4
出力
b :I1,I2,I4
説明
スタック上の数のビット反転を行い,結果をスタックへ置く。
例外
備考
コード
EF11
表記
AND
機能
論理積 (bitwise AND)
呼出形式
a b AND
結果
c
入力
b :I1,I2,I4
出力
c :I1,I2,I4
説明
スタック上の二つの数のビットごとの論理積を取り,結果をスタックへ置く。
例外
備考
コード
EF12
表記
OR
機能
論理和 (bitwise OR)
呼出形式
a b OR
結果
c
入力
a :I1,I2,I4
b :I1,I2,I4
出力
c :I1,I2,I4
説明
スタック上の二つの数のビットごとの論理和を取り,結果をスタックへ置く。
例外
備考
コード
EF13
表記
XOR
機能
排他的論理和 (bitwise exclusive-OR)
呼出形式
a b XOR
結果
c
入力
a :I1,I2,I4
b :I1,I2,I4
出力
c :I1,I2,I4
説明
スタック上の二つの数のビットごとの排他的論理和を取り,結果をスタックへ置く。
23
B 8440-1995
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
例外
備考
コード
EF14
表記
BSET
機能
ビットセット (bit set)
呼出形式
a b BSET
結果
c
入力
a :I1,I2,I4
b :I1,I2,I4
出力
c :I1,I2,I4
説明
入力aの第bビットを1にして,結果をスタックへ置く。
bの示すビット位置は,aの中に含まれていなくてはならない。
出力cの型は,aの型と同一である。
例外
備考
aがnビットの場合,0≦b<nでなければ,cはaと同じ値をとる。
コード
EF15
表記
BCLR
機能
ビットクリア (bit clear)
呼出形式
a b BCLR
結果
c
入力
a :I1,I2,I4
b :I1,I2,I4
出力
c :I1,I2,I4
説明
入力aの第bビットを0にして,結果をスタックへ置く。
bの示すビット位置は,aの中に含まれていなくてはならない。
出力cの型は,aの型と同一である。
例外
備考
aがnビットの場合,0≦b<nでなければ,cはaと同じ値をとる。
コード
EF16
表記
BTST
機能
ビットテスト (bit test)
呼出形式
a b BTST
結果
c
入力
a :I1,I2,I4
b :I1,I2,I4
出力
c :I2 (論理値)
説明
入力aの第bビットが1なら1を,0なら0をスタックへ置く。
bの示すビット位置は,aの中になくてはならない。
24
B 8440-1995
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
例外
備考
aがnビットの場合,0≦b<nでなければ,cは偽となる。
コード
EF17
表記
LSH
機能
左論理シフト (left shift logical)
呼出形式
a b LSH
結果
c
入力
a :I1,I2,I4
b :I1,I2,I4
出力
c :I1,I2,I4
説明
入力aをbビットだけ左論理シフトし,結果をスタックへ置く。
bが負の値をもつときは,右論理シフトが行われる。
出力cの型は,aと同じである。
例外
備考
aがnビットの場合,|b|≧nであれば,cは0となる。
コード
EF18
表記
RSH
機能
右論理シフト (right shift logical)
呼出形式
a b RSH
結果
c
入力
a :I1,I2,I4
b :I1,I2,I4
出力
c :I1,I2,I4
説明
入力aをbビットだけ右論理シフトし,結果をスタックへ置く。
bが負の値をもつときは,左論理シフトが行われる。
cの型は,aと同じである。
例外
備考
aがnビットの場合,|b|≧nであれば,cは0となる。
コード
EF19
表記
LSHA
機能
左算術シフト (left shift arithmetic)
呼出形式
a b LSHA
結果
c
入力
a :I1,I2,I4
b :I1,I2,I4
出力
c :I1,I2,I4
説明
入力aをbビットだけ左算術シフトし,結果をスタックへ置く。
25
B 8440-1995
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
bが負の値をもつときは,右算術シフトが行われる。
cの型は,aと同一となる。
例外
備考
aがnビットの場合,b≧nであれば,左へのシフトならcの符号ビットはaと同じで,符号ビット以
外はすべて0となる。
右へのシフトでは,全ビットがaの符号ビットと同じとなる。
コード
EF1A
表記
RSHA
機能
右算術シフト (right shift arithmetic)
呼出形式
a b RSHA
結果
c
入力
a :I1,I2,I4
b :I1,I2,I4
出力
c :I1,I2,I4
説明
入力aをbビット右算術シフトし,結果をスタックへ置く。
bが負の値をもつときは,左算術シフトが行われる。
cの型は,aと同一となる。
例外
備考
aがnビットの場合,b≧nであれば,左へのシフトならcの符号ビットはaと同じで,符号ビット以
外は,すべて0となる。右へのシフトでは,全ビットがaの符号ビットと同じとなる。
コード
EF1B
表記
NOT
機能
論理否定 (logical NOT)
呼出形式
a NOT
結果
b
入力
a :I1,I2,I4,R4,R8
出力
b :I2 (論理値)
説明
入力aを論理否定し,結果をスタックへ置く。
aが0の値をもつときは,真,0以外のときは,偽となる。
例外
備考
コード
EF1C
表記
CONC
機能
文字列の連結 (concatenate)
呼出形式
a b CONC
結果
c
入力
a b :St
出力
c :St
26
B 8440-1995
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
説明
文字列aに文字列bを連結し,結果をスタックに置く。
例外
備考
コード
EF1D
表記
LNG
機能
文字列の長さ (length of the string)
呼出形式
a LNG
結果
b
入力
a :St
出力
b :I1,I2,I4
説明
文字列aの長さを返す。
例外
備考
出力bをどの型で返すかは,処理系定義とする。すなわち,長さに応じて型を選んでもよいし,すべ
て14型で返してもよい。
コード
EF1E
表記
MID
機能
部分文字列の取出し (middle of the string)
呼出形式
a b c MID
結果
d
入力
a :St
b c :I1,I2,I4,R4,R8
出力
d :St
説明
文字列aのb文字目からc文字分の部分文字列を取り出し,結果をスタックへ置く。
bが1より小さい場合は,文字列aの先頭から取り出す。
cが1より小さい場合は,出力dは空の文字列とする。
b+cがaの長さを超える場合は,b文字目から最後までの文字列とする。
例外
備考
コード
EF1F
表記
SIN
機能
正弦 (sine)
呼出形式
a SIN
結果
b
入力
a :R4,R8
出力
b :R4,R8
説明
aの正弦を計算し,結果をスタックへ置く。
b=sin a
例外
備考
aは,ラジアン (radian) を単位とする。
コード
EF20
表記
COS
機能
余弦 (cosine)
呼出形式
a COS
結果
b
入力
a :R4,R8
出力
b :R4,R8
説明
aの余弦を計算し,結果をスタックへ置く。
b=cos a
例外
備考
aは,ラジアン (radian) を単位とする。
コード
EF21
表記
TAN
機能
正接 (tangent)
呼出形式
a TAN
27
B 8440-1995
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
結果
b
入力
a :R4,R8
出力
b :R4,R8
説明
aの正接を計算し,結果をスタックへ置く。
b=tan a
例外
備考
aは,ラジアン (radian) を単位とする。
コード
EF22
表記
ATAN
機能
逆正接 (arctangent)
呼出形式
a ATAN
結果
b
入力
a :R4,R8
出力
b :R4,R8
説明
aの値の逆正接を計算し,結果をスタックへ置く。
b=tan−1a(ただし,
2
2
π
π
≦
b
<
−
)
例外
備考
コード
EF23
表記
ATAN2
機能
逆正接 (arctangent) (2引き数)
呼出形式
a b ATAN2
結果
c
入力
a :R4,R8(Y座標)
b :R4,R8(X座標)
出力
c :R4,R8
説明
スタック上の値の逆正接を計算し,結果をスタックへ置く。
c=tanー1ba (b>0のとき)
c=SGN (a) ×π+tan−1ba(b<0のとき)
c=SGN (a) ×2π (b=0のとき)
例外
備考
コード
EF24
表記
LN
機能
自然対数 (natural logarithm)
呼出形式
a LN
結果
b
入力
a :R4,R8
出力
b :R4,R8
説明
スタック上の値の自然対数を計算し,結果をスタックへ置く。
b=log a
例外
a≦0の場合は,0除算の場合と同じ処理をする。
備考
コード
EF25
表記
EXP
機能
指数 (exponential)
呼出形式
a EXP
結果
b
入力
a :R4,R8
出力
b :R4,R8
説明
自然対数の底eのa乗を計算し,結果をスタックへ置く。
b=ea
例外
備考
28
B 8440-1995
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
コード
EF26
表記
SQRT
機能
平方根 (square root)
呼出形式
a SQRT
結果
b
入力
a :R4,R8
出力
b :R4,R8
説明
スタック上の値aの平方根を計算し,結果をスタックへ置く。
b=a
例外
a<0の場合は,0除算の場合と同様の処理をする。
備考
コード
EF27
表記
NEG
機能
2の補数 (negate)
呼出形式
a NEG
結果
b
入力
a :I1,I2,I4
出力
b :I1,I2,I4
説明
スタック上の値の2の補数を計算し,結果をスタックへ置く。
例外
備考
コード
EF28
表記
ABS
機能
絶対値 (absolute value)
呼出形式
a ABS
結果
b
入力
a :I1,I2,I4,R4,R8
出力
b :I1,I2,I4,R4,R8
説明
スタック上の値の絶対値を計算し,結果をスタックへ置く。
b=|a|
例外
備考
コード
EF29
表記
SGN
機能
符号判定 (sign)
呼出形式
a SGN
結果
b
入力
a :I1,I2,I4,R4,R8
出力
b :I2 (1,0又は−1)
説明
スタック上の値の符号を調べ,結果をスタックへ置く。
aが正のとき b=1
aが0のとき b=0
aが負のとき b=−1
例外
備考
コード
EF2A
表記
INT
機能
整数化 (convert to integer)
呼出形式
a INT
結果
b
入力
a :I1,I2,I4,R4,R8
出力
b :I1,I2,I4
説明
スタック上の数値を整数化し,結果をスタックへ置く。
結果の型は,必要最小限のものが選ばれる。
例外
備考
整数化とは,その数を超えない最大の整数を求めることである。
オーバフローした場合は,aと同符号のI4の最大値とする。
29
B 8440-1995
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
コード
EF2B
表記
INT1
機能
1バイト整数化 (convert to 1 byte integer)
呼出形式
a INT1
結果
b
入力
a :I1,I2,I4,R4,R8
出力
b :I1
説明
スタック上の数値を1バイト整数化し,結果をスタックへ置く。
整数化した結果が1バイトに収まらないときは,下位1バイトが取られる。
例外
備考
整数化の処理は,INTと同じである。
コード
EF2C
表記
INT2
機能
2バイト整数化 (convert to 2 byte integer)
呼出形式
a INT2
結果
b
入力
a :I1,I2,I4,R4,R8
出力
b :I2
説明
スタック上の数を2バイト整数化し,結果をスタックへ置く。
整数化した結果が2バイトに収まらないときは,下位2バイトが取られる。
例外
備考
整数化の処理は,INTと同じである。
コード
EF2D
表記
INT4
機能
4バイト整数化 (convert to 4 byte integer)
呼出形式
a INT4
結果
b
入力
a :I1,I2,I4,R4,R8
出力
b :I4
説明
スタック上の数を4バイト整数化し,結果をスタックへ置く。
整数化した結果が4バイトに収まらないときは,下位4バイトが取られる。
例外
備考
整数化の処理は,INTと同じである。
コード
EF2E
表記
REAL
機能
実数化 (convert to real)
呼出形式
a REAL
結果
b
入力
a :I1,I2,I4,R4,R8
出力
b :R4,R8
説明
スタック上の数を実数化し,結果をスタックへ置く。
aが整数の場合,bはR4となる。
aがR4,R8の場合は,そのままbとなる。
例外
備考
コード
EF2F
表記
REAL4
機能
4バイト実数化 (convert to 4 byte real)
呼出形式
a REAL4
結果
b
入力
a :I1,I2,I4,R4,R8
出力
b :R4
説明
スタック上の数を4バイト実数化し,結果をスタックへ置く。
例外
備考
入力がR8の場合,あふれが生じる可能性がある。
コード
EF30
表記
REAL8
機能
8バイト実数化 (convert to 8 byte real)
30
B 8440-1995
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
呼出形式
a REAL8
結果
b
入力
a :I1,I2,I4,R4,R8
出力
b :R8
説明
スタック上の数を8バイト実数化し,結果をスタックへ置く。
例外
備考
コード
EF31
表記
SEPS
機能
近似比較パラメタ (ε) の設定 (set epsilon value)
呼出形式
a SEPS
結果
なし
入力
a :R4,R8
出力
説明
近似比較パラメタ (ε) を設定する。
入力aは,絶対値 (|a|) を取ってから設定される。
例外
備考
コード
EF32
表記
EPS
機能
近似比較パラメタ (ε) の読出し (get epsilon value)
呼出形式
EPS
結果
なし
入力
出力
a :R8
説明
近似比較パラメタ (ε) を読み出して,結果をスタックに置く。
例外
備考
コード
EF33
表記
PI
機能
円周率 (get pi value)
呼出形式
PI
結果
a
入力
出力
a :R8
説明
円周率πの値を取り出し,スタックに置く。
例外
備考
コード
EF34
表記
DEGRAD
機能
度・ラジアン変換 (convert from degree to radian)
呼出形式
a DEGRAD
結果
b
入力
a :R4,R8
出力
b :R4,R8
説明
スタック上の度による角度値をラジアンに変換し,結果をスタックへ置く。型は変わらない。
例外
備考
コード
EF35
表記
RADDEG
機能
ラジアン・度変換 (convert from radian to degree)
呼出形式
a RADDEG
結果
b
入力
a :R4,R8
出力
b :R4,R8
説明
スタック上のラジアンによる角度値を度に変換し,結果をスタックへ置く。型は変わらない。
例外
31
B 8440-1995
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
備考
コード
EF36
表記
VLEN
機能
ベクトル長 (vector length)
呼出形式
a VLEN
結果
b
入力
a :Vec
出力
b :R4
説明
スタック上のベクトルの長さを計算し,結果をスタックへ置く。
)
(
2
2
2
z
y
x
b
+
+
=
ただし,x,y,zは,ベクトルaのx,y,zの各成分とする。
例外
備考
コード
EF37
表記
VADD
機能
ベクトルの和 (vector add)
呼出形式
a b VADD
結果
c
入力
a :Vec
b :Vec
出力
c :Vec
説明
スタック上のベクトルの和を計算し,結果をスタックへ置く。
c=a+b
例外
備考
コード
EF38
表記
VSUB
機能
ベクトルの差 (vector subtract)
呼出形式
a b VSUB
結果
c
入力
a :Vec
b :Vec
出力
c :Vec
説明
スタック上のベクトルの差を計算し,結果をスタックへ置く。
c=a−b
例外
備考
コード
EF39
表記
VTIMES
機能
ベクトルのスカラ倍 (scalar product of vector)
呼出形式
a b VTIMES
結果
c
入力
a :Vec
b :I1,I2,I4,R4,R8
出力
c :Vec
説明
スタック上のベクトルaの各要素をb倍し,結果をスタックへ置
く。
c=b・a
例外
備考
コード
EF3A
表記
VPRODI
機能
ベクトルの内積 (inner product of vectors)
呼出形式
a b VPRODI
結果
c
入力
a :Vec
32
B 8440-1995
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
b :Vec
出力
c :R4
説明
スタック上のベクトルの内積を計算し,結果をスタックへ置く。
c=a・b
=axbx+ayby+azbz
ただし,ax,ay,az,bx,by,bzは,ベクトルa,bのx,y,zの各成分を表す。
例外
備考
コード
EF3B
表記
VPRODO
機能
ベクトルの外積 (outer product of vectors, vector product)
呼出形式
a b VPRODO
結果
c
入力
a :Vec
b :Vec
出力
c :Vec
説明
スタック上のベクトルの外積を計算し,結果をスタックへ置く。
c =a×b
cx=aybz−azby
cy=azbx−axbz
cz=axby−aybx
ただし,ax,ay,az,bx,by,bzは,ベクトルa,bのx,y,zの各
成分を表す。
例外
備考
コード
EF3C
表記
TPROD
機能
同次変換の積 (product of two transformation matrices)
呼出形式
a b TPROD
結果
c
入力
a :Trn(同次変換行列A)
b :Trn(同次変換行列B)
出力
c :Trn(同次変換行列C)
説明
スタック上の二つの変換行列の積を計算し,結果をスタックへ置
く。
C=A×B
例外
備考
コード
EF3D
表記
TINV
機能
同次変換の逆変換 (inverse of atransformation matrix)
呼出形式
a TINV
結果
b
入力
a :Trn(同次変換行列A)
出力
b :Trn(同次変換行列B)
説明
スタック上の変換行列の逆行列を計算し,結果をスタックへ置く。
B=A−1
例外
逆行列が求まらない場合,エラーを出して,停止することを推奨する。
備考
数学的には同次変換行列には逆行列は必ず存在するが,行列Aが同次変換行列になっていない,又は
計算上の誤差によって,逆行列が求められないことがある。停止以外の処理としては,次のものが考
えられる。
① 警告をだす(続行可能)
② 疑似逆行列で代用する
コード
EF3E
表記
TPRODV
機能
同次変換とベクトルの積 (product of a transformation matrix and a vector)
33
B 8440-1995
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
呼出形式
a b TPRODV
結果
c
入力
a :Trn(行列A)
b :Vec(ベクトルb)
出力
c :Vec(ベクトルc)
説明
スタック上の同次変換行列とベクトルの積を計算し,結果をスタックへ置く。
c=A・b
例外
備考
コード
EF3F
表記
TRN
機能
ポーズから同次変換への変換 (conversion from pose to transformation matrix)
呼出形式
a TRN
結果
b
入力
a :Pm
出力
b :Trn
説明
ポーズaから,同次変換の情報を取り出し,結果をスタックへ置く。
例外
備考
コード
EF40
表記
PNT
機能
同次変換からポーズへの変換 (conversion from transformation matrix to pose)
呼出形式
a PNT
結果
b
入力
a :Trn(行列A)
出力
b :Pm
説明
同次変換行列Aのデータをもとに,ポーズデータbを作る。
ポーズデータを決定するために必要なその他の情報は,現在の状態のコンフィギュレーション情報を
用いる。
例外
備考
コンフィギュレーション情報については,config関連関数を参照のこと。
コード
EF41
表記
LOC
機能
ポーズの位置成分取出し (get location from pose data)
呼出形式
a LOC
結果
b
入力
a :Pm
出力
b :Vec
説明
ロボット座標系におけるポーズの位置(x,y,z成分)を,ベクトルの形で取り出す。
例外
備考
コード
EF42
表記
DEV
機能
ポーズの並進変換 (deviation)
呼出形式
a b DEV
結果
c
入力
a :Pm
b :Vec
出力
c :Pm
説明
ポーズaに,ロボット座標系における並進偏差bを施して得られるポーズをつくり,結果をスタック
へ置く。
例外
備考
ベクトルbは,ポーズデータに対し,x,y,z成分の偏差を指定する。
コード
EF43
表記
DEVH
機能
ツール座標によるポーズの並進変換 (deviation in tool coordinate)
呼出形式
a b DEVH
34
B 8440-1995
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
結果
c
入力
a :Tm
b :Vec
出力
c :Tm
説明
ポーズaに,ツール(ハンド)座標系による並進偏差bを施して得られるポーズをつくり,結果をス
タックへ置く。
ツール座標系は,現在組み付けられているハンドのものを用いる。
例外
備考
ベクトルbは,ポーズデータに対し,x,y,z成分の偏差を指定する。
コード
EF44
表記
PADD
機能
ポーズの加算 (pose add)
呼出形式
a b PADD
結果
c
入力
a :Pm 被加数
b :Pm 加数
出力
a :Pm ポーズの和
説明
二つのポーズの和のポーズを作る。結果のポーズは処理系依存とするが,以下の条件を満たさなくて
はならない。
P1,P2,P3をポーズ,ただしP1は現在ポーズ,P3=P2+P1とする。
このとき,次の二つのMOVE関数は,位置,姿勢を含めて同じ結果となる。
P2 ILMOVE
P3 ALMOVE
例外
備考
PSUB,ALMOVE,ILMOVE参照
コード
EF45
表記
PSUB
機能
ポーズの減算 (pose subtract)
呼出形式
a b PSUB
結果
c
入力
a :Pm 被減数
b :Pm 減数
出力
a :Pm ポーズの差
説明
二つのポーズの差のポーズを作る。結果のポーズは処理系依存とするが,以下の条件を満たさなくて
はならない。
P1,P2,P3をポーズ,ただしP1は現在ポーズ,P3=P2−P1とする。
このとき,次の二つのMOVE関数は,位置,姿勢を含めて同じ結果となる。
P2 ALMOVE
P3 ILMOVE
例外
備考
PADD,ALMOVE,ILMOVE参照
コード
EF46
表記
CONSP
機能
ポーズデータの構成 (construction of a pose)
呼出形式
a1 … an n CONSP
結果
b
入力
a1,…,an :任意の型 要素データ
n :I1,I2,I4 要素データ数
出力
b :Pm
説明
スタック上の要素データa1,…,anを使ってポーズデータbを作り,結果をスタックへ置く。
要素データの数,型及び順序は,処理系定義であるポーズデータの構造に従う。
例外
備考
コード
EF47
表記
DESTP
機能
ポーズデータの分解 (destruction of a pose)
35
B 8440-1995
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
呼出形式
a DESTP
結果
b1 … bn n
入力
a :Pm
出力
b1,…,bn :任意の型 要素データ
n :I2
説明
スタック上のポーズデータaを要素データb1,…,bnに分解し,結果をスタックへ置く。
スタックトップには要素数nが置かれる。
要素データの数,型及び順序は,処理系定義であるポーズデータの構造に従う。
例外
備考
コード
EF48
表記
CONSV
機能
ベクトルの構成 (construction of a vector)
呼出形式
a b c CONSV
結果
d
入力
a,b,c :I1,I2,I4,R4,R8 ベクトルの要素
出力
d :Vec
説明
スタック上の三つの数値から,aをx成分,bをy成分,cをz成
分とするベクトルデータdをつくり,結果をスタックへ置く。
例外
備考
ベクトルの要素を整数型データで与えてもよい。この場合には,
実数に変換して処理する。
コード
EF49
表記
DESTV
機能
ベクトルの分解 (destruction of a vector)
呼出形式
a DESTV
結果
b c d
入力
a :Vec
出力
b,c,d :R4ベクトルの各成分
説明
ベクトルデータaを,x成分b,y成分c,z成分dの各成分に分解し,結果をスタックへ置く。
例外
備考
コード
EF4A
表記
CONSA
機能
配列の構成 (construction of an array)
呼出形式
a1 … an n #t CONSA
結果
b
入力
a1,…,an :任意の型 要素型のデータ
n
:I1,I2,I4 要素の数
t
:タグ 要素型を示すタグ
出力
b
:Ar
説明
スタック上の要素データa1,…,anを使って配列データbを作り,結果をスタックへ置く。
要素数nは,スタック上にある要素データの数を示す。
タグtは,配列要素の型を示す。各々の配列要素は,指定された要素型に合わせて必要に応じて変換
される。
例外
a1,…,anのいずれかが,tで指定された要素型に変換できない。
備考
コード
EF4B
表記
DESTA
機能
配列の分解 (destruction of an array)
呼出形式
a DESTA
結果
b1 … bn n
入力
a
:Ar
出力
b1,…,bn :配列要素の型 要素データ
n
:I1,I2,I4 要素数
説明
配列aを要素に分解し,結果をスタックへ置く。
36
B 8440-1995
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
要素は,添え字の小さいものから順にプッシュする。
最後に(スタックトップに)要素数をプッシュする。
例外
備考
コード
EF4C
表記
CONSU
機能
利用者コードの構成 (construction of a user code)
呼出形式
a CONSU
結果
#b
入力
a :I1,I2,I4,R4,R8 コード値
出力
b :U 利用者コード
説明
スタック上の数値データaと同じコード値をもつ利用者コードに評価抑制タグを付けて,結果をスタ
ックへ置く。
例外
aが,許される利用者コード番号の範囲にない場合。
備考
コード
EF4D
表記
DESTU
機能
利用者コードの分解 (destruction of a user code)
呼出形式
#a DESTU
結果
b
利用者コード
入力
a :U
出力
b :I2,I4 コード値
説明
評価抑制タグ付き利用者コードaを整数データに変換し,結果をスタックへ置く。
例外
備考
コード
EF4E
表記
DUP
機能
スタックトップのコピー (duplicate)
呼出形式
a DUP
結果
a a
入力
a :任意の型のデータ
出力
a :任意の型のデータ(入力と同じ)
説明
スタックの一番上にあるデータを複写して,スタックに置く。
例外
スタックが空の場合,スタックアンダフローエラーとなる。
備考
コード
EF4F
表記
DROP
機能
スタックトップの切り落とし (drop)
呼出形式
a DROP
結果
なし
入力
a :任意の型のデータ
出力
説明
スタックの一番上にあるデータを一つ取り去る。
スタックが空の場合は,何もしない。
例外
備考
コード
EF50
表記
EXCH
機能
スタックトップの入替え (exchange)
呼出形式
a b EXCH
結果
c d
入力
a :任意の型のデータ
b :任意の型のデータ
出力
c :任意の型のデータ(cはbと同じ)
d :任意の型のデータ(dはaと同じ)
説明
スタックの上から二つのデータa,bの順序を入れ替える。
37
B 8440-1995
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
スタックには,二つ以上のデータがなくてはならない。
一つ以下のときは,何もしない。
例外
備考
コード
EF51
表記
PUSH
機能
データのプッシュ (push)
呼出形式
#a PUSH
結果
b
入力
a :U
出力
b :任意の型のデータ
説明
利用者コードaに代入されているデータ値bを,スタックへ置く。
例外
利用者コードaが定義されていない,又は値が定義されていない。
備考
コード
EF52
表記
POP
機能
データのポップアップ (pop)
呼出形式
a #b POP
結果
なし
入力
a :任意の型のデータ
b :U
出力
説明
データaを利用者コードbへ格納する。
例外
備考
関数STOREを用いて次のように書いても同じである。
#b a STORE
コード
EF53
表記
STORE
機能
代入 (store)
呼出形式
#a b STORE
結果
なし
入力
a :U
b :任意の型のデータ
出力
説明
利用者コードaへ値bを代入する。
例外
備考
関数POPを用いて次のように書いても同じである。
b #a POP
コード
EF54
表記
EXTB
機能
バイト抽出 (extract bytes)
呼出形式
#a b #c EXT
結果
d
入力
a :U
b :I1,I2,I4
c :データタグT
出力
d :c型の値
説明
利用者コードaのデータのbバイト目から,cで決まる数のデータを取り出し,タグcをつけて,c型
のデータとしてスタックに置く。
取り出すデータは,利用者コードaに割り付けられた領域内に納まっていなくてはならない。
例外
次のいずれかの場合,プログラム停止エラーとなる。
・
利用者コードaに,領域が割り付けられていないとき。
・
b<0のとき。
・
取り出すデータの最終位置が,aに割り付けられた領域を超えているとき。
備考
コード
EF55
表記
EMBB
38
B 8440-1995
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
機能
バイト埋込み (embed bytes)
呼出形式
#a b c EMB
結果
なし
入力
a :U
b :I1,I2,I4
c :任意の型のデータ
出力
説明
利用者コードaのbバイト目から,cのタグを除いた部分のデータを埋め込む。
データ位置は,利用者コードaに割り付けられた領域内に納まらなくてはならない。
例外
次のいずれかの場合,プログラム停止エラーとなる。
・
利用者コードaに,領域が割り付けられていないとき。
・
b<0のとき。
・
書き込むデータの最終位置が,aに割り付けられた領域を超えているとき。
備考
コード
EF56
表記
EXTE
機能
要素抽出 (extract element)
呼出形式
#a b EXTE
結果
c
入力
a :U 利用者コード
b :I1,I2,I4 要素の位置
出力
c :I1,R4など 抽出された値
説明
利用者コードaのデータのb番目の要素を取り出し,スタックに置く。
利用者コードは,ここでは,配列,文字列,ベクトル,同次変換のいずれかでなくてはならない。
bは,要素の位置を表し,最初の要素は,0番目と数える。
配列の場合は,結果は配列要素の型と同じ型となる。
文字列の場合は,bバイト目の1バイトが1バイト整数として得られる。
ベクトル及び同次変換では,結果はR4型となる。
例外
次のいずれかの場合,プログラム停止エラーとなる。
・
利用者コードが,配列,文字列,ベクトル,同次変換以外のとき。
・
利用者コードaに代入されていないとき。
・
b<0のとき。
・
取り出すデータがaに割り付けられた領域を超えているとき。
備考
コード
EF57
表記
EMBE
機能
要素埋込み (embed element)
呼出形式
#a b c EMBE
結果
なし
入力
a :U
利用者コード
b :I1,I2,I4
要素の位置
c :I1,R4など
埋め込むデータ
出力
説明
利用者コードaに代入されているデータのb番目の位置に,cのタグを除いた部分のデータを埋め込
む。
データ位置は,利用者コードaに割り付けられた領域内に納まらなくてはならない。利用者コードは,
ここでは,配列,文字列,ベクトル,同次変換のいずれかでなくてはならない。
bは要素の位置を表し,最初の要素は0番目と数える。
配列の場合は,cは配列要素の型と同じ型でなければならない。
文字列の場合は,cは1バイトに丸められ,bバイト目の1バイトに埋め込まれる。ただし,cは数値
データでなくてはならない。
ベクトル及び同次変換の場合は,R4型に変換されて埋め込まれる。ただし,cは数値データでなくて
はならない。
39
B 8440-1995
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
例外
次のいずれかの場合,プログラム停止エラーとなる。
・
利用者コードが,配列,文字列,ベクトル,同次変換以外のとき。
・
利用者コードaに代入されていないとき。
・
利用者コードの要素の型とcの型が対応しないとき。
・
b<0のとき。
・
書き込むデータがaに割り付けられた領域を超えているとき。
備考
コード
EF58
表記
BRA
機能
相対分岐 (branch, goto)
呼出形式
a BRA
結果
なし
入力
a :I1,I2,I4
出力
説明
関数内で次に実行する命令の位置を,現在の位置からaバイトだけ相対移動する。a=0ならBRAの
直後の命令へ移動する。
この命令は,関数内でだけ有効であり,移動先も同じ関数内でなくてはならない。
例外
関数内でないときの処置は,処理系定義とするが,何もしないこと (no effect) を推奨する。
移動先が同じ関数内でないとき,プログラム停止となる。
備考
コード
EF59
表記
BRF
機能
偽条件相対分岐 (branch if false)
呼出形式
a b BRF
結果
なし
入力
a :I1,I2,I4
b :I1,I2,I4
出力
説明
aの値が0のとき(偽のとき),関数内で次に実行する命令の位置を,現在の位置からbバイトだけ相
対移動する。
b=0ならBRFの直後の命令へ移動する。
この命令は,関数内でだけ有効であり,移動先も同じ関数内でなくてはならない。
例外
関数内でないときの処置は,処理系定義とするが,何もしないこと (no effect) を推奨する。
移動先が同じ関数内でないとき,プログラム停止となる。
備考
コード
EF5A
表記
BRT
機能
真条件相対分岐 (branch if true)
呼出形式
a b BRT
結果
なし
入力
a :I1,I2,I4
b :I1,I2,I4
出力
説明
aの値が1のとき(真のとき),関数内で次に実行する命令の位置を,現在の位置からbバイトだけ相
対移動する。
b=0ならBRTの直後の命令へ移動する。
この命令は,関数内でだけ有効であり,移動先も同じ関数内でなくてはならない。
例外
関数内でないときの処置は,処理系定義とするが,何もしないこと (no effect) を推奨する。
移動先が同じ関数内でないとき,プログラム停止となる。
備考
コード
EF5B
表記
RET
機能
復帰 (return)
呼出形式
RET
結果
なし
入力
40
B 8440-1995
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
出力
説明
関数の実行を終了し,呼び出した側に戻る。
例外
対応する戻り先が定義されていないRETの実行は,プログラム停止エラーとなる。
備考
コード
EF5C
表記
END
機能
関数宣言の終わり (end of function)
呼出形式
END
結果
なし
入力
出力
説明
関数の宣言における関数の本体のコードの並びの終わりを示す。
例外
備考
コード
EF5D
表記
NESTIN
機能
入れ子構造の設定 (nest in)
呼出形式
a NESTIN
結果
なし
入力
a :I1,I2,I4入れ子レベル(非負)
出力
説明
現在の入れ子レベルを保存し,入れ子レベルaの局所変数空間を設定する。
一番外側の空間は,レベル0とする。
利用者変数は,指定されている局所変数空間に置かれる。
レベルnで宣言された利用者変数uが,すでにレベルmでも宣言されていたとき,レベルmの利用者
変数uは,レベルnでは直接には参照されない。
例外
備考
入れ子レベルは,順番に大きくなるよう指定することが望ましい。
コード
EF5E
表記
NESTOUT
機能
入れ子構造からの復帰 (nest out)
呼出形式
NESTOUT
結果
なし
入力
出力
説明
現在の入れ子レベルnの局所変数空間を開放し,保存してある入れ子レベルを回復する。
例外
備考
コード
EF5F
表記
NPUSH
機能
外側の入れ子レベルのデータのプッシュ (nested data push)
呼出形式
#a b NPUSH
結果
c
入力
a :U
b :I1,I2,I4 入れ子レベル
出力
c :任意の型のデータ
説明
入れ子レベルbで定義された利用者コードaが保持しているデータ値cを,スタックへ置く。
例外
入れ子レベルbが定義されていないとき。
利用者コードaが入れ子レベルbで定義されていないか,又は値が定義されていないとき。
備考
入れ子レベルbは,NESTINで定義する。
コード
EF60
表記
NPOP
機能
外側の入れ子レベルのデータのポップアップ (nested data pop)
呼出形式
a #b c NPOP
結果
なし
入力
a :任意の型のデータ
b :U
41
B 8440-1995
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
c :I1,I2,I4 入れ子レベル
出力
説明
データaを入れ子レベルcで定義された利用者コードbへ格納する。
例外
入れ子レベルbが定義されていないとき。
備考
入れ子レベルbは,NESTINで定義する。
コード
EF61
表記
DCL
機能
変数宣言 [declaration of variable(s)]
呼出形式
VAR #u1 #u2 … #un DCL
結果
なし
入力
VAR :VAR関数コード
U1,…,Un :利用者コード
出力
説明
利用者コードu1,…,unを変数表に登録する。
利用者コードui (i=1,…,n) が変数表に既に登録されているとき,重複して登録されるが,新しい
登録が有効となる。
例外
備考
コード
EF62
表記
FREE
機能
変数の解放 (free)
呼出形式
VAR #u1 #u2 … #un FREE
結果
なし
入力
VAR
:VAR関数コード
u1,…,un :利用者コード
出力
説明
利用者コードu1,…,unを変数表から削除する。
変数表に同一利用者コードui (i=1,…,n) が複数定義されているときは,最近定義されたUiを無効
とし,古い定義を有効とする。
例外
備考
存在しない利用者コードUiを指定しても何も起こらない。
コード
EF63
表記
VAR
機能
DCL,FREEの始まり (variable)
呼出形式
VAR
結果
VAR
入力
出力
説明
関数のコードVARそのものを,スタック上に置く。
変数の宣言 (DCL),及び解放 (FREE) をする関数における利用者コードの並びの始まりを示す。
例外
備考
コード
EF64
表記
FDEF
機能
関数定義の始まり (function definition)
呼出形式
#a FDEF
結果
なし
入力
a :U (利用者コード)
出力
説明
関数を利用者コードaに設定する。関数定義全体としては,
#a FDEF b
のようになり,関数コードFDEFに続く関数型データb(関数タグFnから始まりENDまでのデータ)
を,スタックを経由せずに直接利用者コードに設定する。
例外
42
B 8440-1995
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
備考
関数STOREを用いて,
#a b STORE
としても効果は同様である。ただしこの場合は,データはスタックを経由する。
コード
EF65
表記
BAL
機能
サブルーチンの呼出し (branch and link, call)
呼出形式
a BAL
結果
なし
入力
a :I1,I2,I4
出力
説明
現在の位置(BALコードの直後)をリターンスタックに積み,そこからaバイトだけ相対移動する。
この命令は,関数内でだけ有効であり,移動先も同じ関数内でなくてはならない。
例外
関数内でないときの処置は,処理系定義とするが,何もしないこと (no effect) を推奨する。
移動先が同じ関数内でないとき,プログラム停止となる。
備考
RET関数で復帰できる。
別の関数へ飛ぶことは,許されない。
コード
EF66
表記
GRET
機能
関数実行の強制終了 (grand return)
呼出形式
GRET
結果
なし
入力
出力
説明
関数呼出しの状態を保持するリターンスタックをすべてクリアし,入力ストリームからの入力待ちと
なる。
この命令は,関数内でだけ有効である。
例外
関数内でないときの処置は,処理系定義とするが,何もしないこと (no effect) を推奨する。
備考
リターンスタックをクリアするので,関数の実行に戻ることはできない。
コード
EF67
表記
ALLOC
機能
領域の割付け (allocate)
呼出形式
a #b #c ALLOC
結果
d
入力
a :I1,I2,I4,R4,R8
b :タグ
c :U (利用者コード)
出力
d :I1,I2,I4
d>0のとき,確保した領域の大きさ
d<0のとき,確保に不足する量
説明
aの値にタグの長さを加えたバイト数の領域を確保し,利用者コードCに割り付ける。
確保した領域には,タグbが書き込まれる。
a=0を指定したしたときは,確保可能な最大量が得られる。このとき確保は行わない。
指定した大きさの領域が確保できないときは,不足する量が負の値で返される。この場合も領域の確
保は行わない。
例外
備考
通常,代入では,必要に応じて領域が自動的に確保される。
この命令は,主に,配列の領域をあらかじめ確保したいときに用いる。
コード
EF68
表記
ALLOCZ
機能
領域の割付け (allocate and zero clear)
呼出形式
a #b ALLOCZ
結果
d
入力
a :I1,I2,I4,R4,R8
b :タグ
c :U (利用者コード)
出力
d :I1,I2,I4
43
B 8440-1995
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
d>0のとき,確保した領域の大きさ
d<0のとき,確保に不足する量
説明
関数ALLOCと同様に,領域を確保する。
さらに,確保した領域を,Nullコードで初期化する。
例外
備考
コード
EF69
表記
ACLR
機能
領域のクリア (area clear)
呼出形式
#a ACLR
結果
なし
入力
a :U (利用者コード)
出力
説明
利用者コードaに割り付けられた領域を,Nullコードで初期化する。
領域が割り付けられていない場合は,何もしない。
例外
備考
コード
EF6A
表記
ARELS
機能
領域の解放 (area release)
呼出形式
#a ARELS
結果
なし
入力
a :U (利用者コード)
出力
説明
利用者コードaに割り付けられた領域を解放する。
領域が割り付けられていない場合は,何もしない。
例外
備考
コード
EF6B
表記
ASIZE
機能
領域のサイズを得る (area size)
呼出形式
#a ASIZE
結果
b
入力
a :U (利用者コード)
出力
b :I2,I4
説明
利用者コードaに割り付けられた領域のサイズを得る。
領域が割り付けられていない場合は,−1(I2型)を返す。
例外
備考
コード
EF6C
表記
VERID
機能
STROLICのバージョンIDを得る (version ID)
呼出形式
VERID
結果
a
入力
出力
a :St
説明
STROLIC規格のバージョンを識別できるコードを文字列で取り出す。ただし,その文字列の先頭部分
は,次に示す文字列でなくてはならない。
STROLIC JIS B 8440-1994
例外
備考
コード
EF6D
表記
SYSID
機能
処理系のIDを得る (system ID)
呼出形式
SYSID
結果
a
入力
44
B 8440-1995
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
出力
a :St
説明
処理系を識別できるコードを,文字列で取り出す。
例外
備考
取り出される文字列の内容は処理系定義であるが,処理系の名前,バージョン,提供機関,リリース
時期を入れることを推奨する。
コード
EF6E
表記
INIT
機能
中間コードインタプリタの初期化 (initialize)
呼出形式
INIT
結果
なし
入力
出力
説明
中間コードのインタプリタを初期化する。すなわち,インタプリタの内部状態をリセットするととも
に,データ領域の初期化を行う。
例外
備考
コード
EF6F
表記
TRON
機能
トレースの開始 (trace on)
呼出形式
TRON
結果
なし
入力
出力
説明
トレースフラグをオンにする。
例外
備考
関数TRACEを参照。
コード
EF70
表記
TROFF
機能
トレースの終了 (trace off)
呼出形式
TROFF
結果
なし
入力
出力
説明
トレースフラグをオフにする。
例外
備考
関数TRACEを参照。
コード
EF71
表記
TRACE
機能
トレース (trace)
呼出形式
a TRACE
結果
なし
入力
a :任意の型
出力
説明
トレースフラグがオンならaをコンソールに出力する。
オフなら何も出力しない。
いずれの場合も,aはスタックから取り除かれる。
コンソール出力の形式は,処理系定義とする。
例外
備考
aとして行番号,文番号,ラベルなどを用いると実行のトレース
が,変数の値を用いれば代入のトレースが行える。
コード
EF72
表記
SYNC
機能
同期 (synchronize)
呼出形式
SYNC
結果
なし
入力
出力
45
B 8440-1995
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
説明
コントローラと上位計算機との間の同期を行う。
このコードを実行すると,応答(ACK又はNAK)を上位計算機に送る。
例外
備考
スタックの状態は,変わらない。
コード
EF73
表記
ACK
機能
肯定的応答 (acknowledge)
呼出形式
なし
結果
なし
入力
出力
説明
同期 (SYNC) に対する肯定的応答コード。
このコードは実行されることはなく,単にSTROLICの表現形式で上位計算機に応答するだけである。
例外
備考
ACKとNAKの使い分けについては処理系定義とするが,コントローラが正常状態にあるときは,
ACK,そうでないときは,NAKを応答するという使い方が考えられる。
コード
EF74
表記
NAK
機能
否定的応答 (negative acknowledge)
呼出形式
なし
結果
なし
入力
出力
説明
同期 (SYNC) に対する否定的応答コード。
このコードは実行されることはなく,単にSTROLICの表現形式で上位計算機に応答するだけである。
例外
備考
ACKとNAKの使い分けについては処理系定義とするが,コント
ローラが正常状態にあるときは,ACK,そうでないときは,NAK
を応答するという使い方が考えられる。
コード
EF75
表記
RESULT
機能
結果要求 (result)
呼出形式
a RESULT
結果
なし
入力
a :I1,I2,I4,R4,R8,Ar,St,Rd,Fn,Vec,Trn,Pm
出力
説明
上位計算機にaの値を送る。
例外
備考
上位計算機からコントローラ内の情報を取り出したいときに使用する。
コード
EF76
表記
FXQT
機能
関数の起動 (execution of function)
呼出形式
#a b FXQT
結果
c
入力
a :Fn
b :I1,I2,I4,R4,R8 プロセス番号
出力
c :I2
説明
STROLIC関数aをプロセス番号bで起動する。
プロセス番号は,正の整数とする。
出力cは,正常に起動されたとき0,起動に失敗したとき次のエラー番号とする。
aが関数でないとき −1
システムの制約により起動できないとき −2
例外
備考
並行処理機能の一つである。
コード
EF77
表記
TXQT
機能
タスクの起動 (execution of task)
46
B 8440-1995
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
呼出形式
a TXQT
結果
b
入力
a :I1,I2,I4,R4,R8 タスク番号
出力
b :I2
説明
タスク番号aで識別されるタスクを起動する。
タスク番号は,正の整数とする。
出力bは,正常に起動されたとき0,起動に失敗したとき次のエラー番号とする。
aがすでに起動されているとき −1
システムの制約により起動できないとき −2
例外
備考
並行処理機能の一つである。
タスクについては,使用するマルチタスクOSに依存する。
コード
EF78
表記
FPREDC
機能
関数の実行優先度 (function precedence)
呼出形式
a b FPRECD
結果
c
入力
a :I1,I2,I4,R4,R8 プロセス番号
b :I1,I2,I4,R4,R8 優先度
出力
c :I2
説明
プロセス番号aで識別されるSTROLIC関数の実行優先度を指定する。優先度bは,正の整数で値が
小さいほど優先度が高い。
結果Cの値は次のとおりとする。
実行終了のとき 0
実行中のとき 1
待ち状態のとき 2
例外
備考
並行処理機能の一つである。
プロセス番号については,関数FXQTを参照。
優先度のデフォルト値は,処理系による。
コード
EF79
表記
TPRECD
機能
タスクの実行優先度 (task precedence)
呼出形式
a b TPRECD
結果
c
入力
a :I1,I2,I4,R4,R8 タスク番号
b :I1,I2,I4,R4,R8 優先度
出力
c :I2
説明
タスク番号aで識別されるタスクの実行優先度を指定する。優先度bは,正の整数で値が小さいほど
優先度が高い。
結果cの値は,次のとおりとする。
実行終了のとき 0
実行中のとき 1
待ち状態のとき 2
例外
備考
並行処理機能の一つである。
タスク番号については,関数TXQTを参照。
優先度のデフォルト値は,処理系による。
コード
EF7A
表記
FCYCLE
機能
関数の周期起動指定 (function cycle)
呼出形式
a b FCYCLE
結果
c
入力
a :I1,I2,I4,R4,R8 プロセス番号
b :I1,I2,I4,R4,R8 周期起動定数
47
B 8440-1995
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
出力
c :I2
説明
プロセス番号aで識別されるSTROLIC関数の周期起動を指定する。周期起動定数bは,正の整数で0
なら周期起動しない。非0で周期起動の間隔を指定する。
結果cの値は,次のとおりとする。
実行終了のとき 0
実行中のとき 1
待ち状態のとき 2
例外
備考
並行処理機能の一つである。
プロセス番号については,関数FXQTを参照。
周期起動定数の単位は,処理系定義であるがmsecとすることを推奨する。
コード
EF7B
表記
TCYCLE
機能
タスクの周期起動指定 (task cycle)
呼出形式
a b TCYCLE
結果
c
入力
a :I1,I2,I4,R4,R8 タスク番号
b :I1,I2,I4,R4,R8 周期起動定数
出力
c :I2
説明
タスク番号aで識別されるタスクの周期起動定数を指定する。周期起動定数bは,正の整数で0なら
周期起動しない。非0で周期起動の間隔を指定する。
結果cの値は,次のとおりとする。
実行終了のとき 0
実行中のとき 1
待ち状態のとき 2
例外
備考
並行処理機能の一つである。
タスク番号については,関数TXQTを参照。
周期起動定数の単位は,処理系定義であるがmsecとすることを推奨する。
コード
EF7C
表記
FDONE
機能
関数の終了判定 (function done)
呼出形式
a FDONE
結果
b
入力
a :I1,I2,I4,R4,R8 プロセス番号
出力
b :I2
説明
プロセス番号aで識別されるSTROLIC関数の実行終了を判定する。
bの値は,次のとおりとする。
実行終了のとき 0
実行中のとき 1
待ち状態のとき 2
中断状態のとき 3
例外
備考
並行処理機能の一つである。
プロセス番号については,関数FXQTを参照。
コード
EF7D
表記
TDONE
機能
タスクの終了判定 (task done)
呼出形式
a TDONE
結果
b
入力
a :I1,I2,I4,R4,R8 タスク番号
出力
b :I2
説明
タスク番号aで識別されるタスクの実行終了を判定する。
bの値は,次のとおりとする。
実行終了のとき 0
48
B 8440-1995
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
実行中のとき 1
待ち状態のとき 2
中断状態のとき 3
例外
備考
並行処理機能の一つである。
関数TXQTを参照。
コード
EF7E
表記
FKILL
機能
関数の強制終了 (kill function)
呼出形式
a FKILL
結果
b
入力
a :I1,I2,I4,R4,R8 プロセス番号
出力
b :I2
説明
プロセス番号aで識別されるSTROLIC関数の実行を強制終了する。
bの値は,次のとおりとする。
強制終了できたとき 0
プロセスaが実行中でないとき 1
例外
備考
並行処理機能の1つである。
プロセス番号については,関数FXQTを参照。
コード
EF7F
表記
TKILL
機能
タスクの強制終了 (kill task)
呼出形式
a TKILL
結果
b
入力
a :I1,I2,I4,R4,R8 タスク番号
出力
b :I2
説明
タスク番号aで識別されるタスクの実行を強制終了する。
bの値は,次のとおりとする。
強制終了できたとき 0
タスクaが実行中でないとき 1
例外
備考
並行処理機能の一つである。
関数TXQTを参照。
コード
EF80
表記
FSUSPEND
機能
関数の強制中断 (suspend function)
呼出形式
a FSUSPEND
結果
b
入力
a :I1,I2,I4,R4,R8 プロセス番号
出力
b :I2
説明
プロセス番号aで識別されるSTROLIC関数の実行を強制中断する。
bの値は,次のとおりとする。
強制中断できたとき 0
プロセスaが実行中でないとき 1
例外
備考
並行処理機能の一つである。
プロセス番号については,関数FXQTを参照。
コード
EF81
表記
TSUSPEND
機能
タスクの強制中断 (suspend task)
呼出形式
a TSUSPEND
結果
b
入力
a :I1,I2,I4,R4,R8 タスク番号
出力
b :I2
説明
タスク番号aで識別されるタスクの実行を強制中断する。
49
B 8440-1995
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
bの値は,次のとおりとする。
強制中断できたとき 0
タスクaが実行中でないとき 1
例外
備考
並行処理機能の一つである。
関数TXQTを参照。
コード
EF82
表記
FRESUME
機能
関数の強制再開 (resume function)
呼出形式
a FRESUME
結果
b
入力
a :I1,I2,I4,R4,R8 プロセス番号
出力
b :I2
説明
プロセス番号aで識別されるSTROLIC関数の実行を強制再開する。
bの値は,次のとおりとする。
強制再開できたとき 0
プロセスaが中断中でないとき 1
例外
備考
並行処理機能の一つである。
プロセス番号については,関数FXQTを参照。
コード
EF83
表記
TRESUME
機能
タスクの強制再開 (resume task)
呼出形式
a TRESUME
結果
b
入力
a :I1,I2,I4,R4,R8 タスク番号
出力
b :I2
説明
タスク番号aで識別されるタスクの実行を強制再開する。
bの値は,次のとおりとする。
強制再開できたとき 0
タスクaが中断中でないとき 1
例外
備考
並行処理機能の一つである。
関数TXQTを参照。
コード
EF84
表記
LOCK
機能
競合資源のロック (reseource lock)
呼出形式
a LOCK
結果
なし
入力
a :I1,I2,I4,R4,R8 事象フラグ番号
出力
説明
競合資源の排他制御のために,番号aで指定された事象フラグをオンにする。
フラグがすでにオンになっている場合,オフになるまで待つ。
例外
備考
並行処理機能の一つである。
コード
EF85
表記
UNLOCK
機能
競合資源のロック解除 (reseource unlock)
呼出形式
a UNLOCK
結果
b
入力
a :I1,I2,I4,R4,R8 事象フラグ番号
出力
b :I2
説明
競合資源の開放のために,番号aで指定された事象フラグをオフにする。
結果bは,0となる。
フラグがすでにオフになっている場合,bは1とする。
例外
50
B 8440-1995
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
備考
並行処理機能の一つである。
コード
EF86
表記
EWAIT
機能
事象の待合わせ (event wait)
呼出形式
a EWAIT
結果
なし
入力
a :I1,I2,I4,R4,R8 事象フラグ番号
出力
説明
番号aで指定した事象フラグがオンになるまで,すなわち事象が発生するまで待つ。待ちが解かれる
とき,事象フラッグはオフになる。同じ事象フラッグで待っているタスク又はプロセスの中で待ちが
解かれるものはただ一つである。
例外
備考
並行処理機能の一つである。
コード
EF87
表記
EWAITA
機能
複数事象の待合わせ(AND条件) [multi event wait (and)]
呼出形式
a1 a2 … an n EWAITA
結果
なし
入力
a1 :I1,I2,I4,R4,R8 事象フラグ番号
n :I1,I2,I4,R4,R8 事象の個数
出力
説明
指定した複数事象のすべてが発生するまで待つ。待ちが解かれるとき,指定されたすべての事象フラ
ッグはオフとなる。同じ事象フラッグで待っているタスク又はプロセスの中で待ちが解かれるものは
ただ一つである。
例外
備考
並行処理機能の一つである。
事象の待合わせEWAITを参照。
コード
EF88
表記
EWAITO
機能
複数事象の待合わせ(OR条件) [multi event wait (or)]
呼出形式
a1 a2 … an n EWAITO
結果
なし
入力
a1 :I1,I2,I4,R4,R8 事象フラグ番号
n :I1,I2,I4,R4,R8 事象の個数
出力
説明
事象バッファをクリアし,指定した複数事象のいずれかが発生するまで待つ。いずれかの事象が発生
すると待ちが解かれる。このとき発生したすべての事象フラッグは,その事象フラッグ番号が事象バ
ッファに格納され,同時にオフとなる。発生した事象フラッグと同じ事象フラッグで待っているタス
ク又はプロセスの中で待ちが解かれるものはただ一つである。
例外
備考
並行処理機能の一つである。
事象の待合わせの関数EWAITを参照。
事象バッファからの取出しは,関数EPOPを参照。
コード
EF89
表記
EPOP
機能
事象の取出し (pop up event)
呼出形式
EPOP
結果
a
入力
出力
a :I2 事象フラグ番号
説明
事象バッファから事象を取り出す。
結果は,事象フラグ番号であり,事象の存在しないときは,0となる。
例外
備考
並行処理機能の一つである。
関数EWAITOを参照。
事象バッファから取り出される順序は,処理系に依存する。
51
B 8440-1995
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
コード
EF8A
表記
ESIG
機能
事象の発生 (signal evevt)
呼出形式
a ESIG
結果
なし
入力
a :I1,I2,I4,R4,R8 事象フラグ番号
出力
説明
番号aで指定した事象フラグをオンにして事象を発生させる。
例外
備考
並行処理機能の一つである。
コード
EF8B
表記
ECLR
機能
事象のクリア (clear event)
呼出形式
a1 a2 … an n ECLR
結果
なし
入力
a1 :I1,I2,I4,R4,R8 事象フラグ番号
n :I1,I2,I4,R4,R8 事象の個数
出力
説明
指定した事象フラグをクリアする。
n=0のとき,全部のフラグをクリアする。
例外
備考
並行処理機能の一つである。
コード
EF8C
表記
CHIN
機能
チャネルからのデータ入力 (channel in)
呼出形式
a CHIN
結果
b
入力
a :I1,I2,I4,R4,R8 チャネル番号
出力
b :任意の型 入力データ
説明
チャネル番号aで識別されるチャネルからデータを入力する。チャネル番号には事象フラッグが用い
られる。事象フラッグがオンになるのを待ってデータを取り込む。データが取り込まれると事象フラ
ッグはオフとなる。
例外
備考
並行処理機能の一つである。
事象フラグを介して同期が取られた送り手と受け手とのデータ交換路をチャネルと呼び,データの送
り手は同じチャネルに対しCHOUTを実行する。
コード
EF8D
表記
CHOUT
機能
チャネルへのデータ出力 (channel out)
呼出形式
a b CHOUT
結果
なし
入力
a :I1,I2,I4,R4,R8 チャネル番号
b :任意の型
出力データ
出力
説明
チャネル番号aで識別されるチャネルへデータbを出力する。チャネル番号には事象フラッグが用い
られる。
事象フラッグがオフになるのを待ってデータを送る。データを送りだすと事象フラッグはオンとなる。
例外
備考
並行処理機能の一つである。
事象フラグを介して同期が取られた送り手と受け手とのデータ交換路をチャネルと呼び,データの受
け手は同じチャネルに対しCHINを実行する。
コード
EF8E
表記
SHARE
機能
共有変数の宣言 (share variable)
呼出形式
#a b SHARE
結果
なし
入力
a :任意の型
共有する変数
52
B 8440-1995
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
b :I1,I2,I4
共有変数番号
出力
説明
変数aを,共有変数番号bをもつ共有変数として宣言する。
例外
備考
並行処理機能の一つで,他のタスクと変数を共有する機能である。
共有変数のための番号の扱いは,マルチタスクOS及び処理系に依存する。
コード
EE00
表記
TIME
機能
時刻 (get time)
呼出形式
TIME
結果
a
入力
出力
a :St
説明
時刻を文字列表現でスタックへ置く。
表現は処理系定義とするが,HH : MM : SS(24時間表記)を推奨する。
この場合,HHは時間で00〜23,MMは分で00〜59,SSは秒で00〜59の値を取る。
例外
備考
コード
EE01
表記
DATE
機能
日付 (get date)
呼出形式
DATE
結果
a
入力
出力
a :St
説明
日付を文字列表現でスタックへ置く。
表現は処理系定義とするが,YYYY/MM/DDを推奨する。この場合,YYYYは年で1900〜2100,MM
は月で01〜12,DDは日でり01〜31の値を取る。
例外
備考
コード
EE02
表記
CLOCK
機能
内部時計 (get clock)
呼出形式
CLOCK
結果
a
入力
出力
a :I4
説明
内部時計の現在の値を取り出して,スタックへ置く。
単位は処理系定義とするが,msecを用いることを推奨する。
例外
備考
内部時計は,停止しない。
内部時計の最大値は,処理系に依存する。
コード
EE03
表記
STIME
機能
時刻の設定 (set time)
呼出形式
a STIME
結果
なし
入力
a :St
出力
説明
時刻を設定する。
例外
文字列が時刻表現に合致しないとき,警告をコンソールに出して,時刻設定は行わない。
備考
コード
EE04
表記
SDATE
機能
日付の設定 (set date)
呼出形式
a SDATE
結果
なし
53
B 8440-1995
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
入力
a :St
出力
説明
日付を設定する。
例外
文字列が日付表現に合致しないとき,警告をコンソールに出して,日付設定は行わない。
備考
コード
EE05
表記
CLRCLK
機能
内部時計のクリア (clear clock)
呼出形式
CLRCLK
結果
なし
入力
出力
説明
内部時計の値を0に設定する。
例外
備考
内部時計は,停止しない。
コード
EE06
表記
PACKTM
機能
時刻要素データのまとめ (pack time)
呼出形式
a b c PACKTM
結果
d
入力
a :I1,I2,I4,R4,R8 時
b :I1,I2,I4,R4,R8 分
c :I1,I2,I4,R4,R8 秒
出力
d :St 時刻表現文字列
説明
時a,分b,秒cを時刻表現文字列dにまとめる。
a,b,cが実数型の場合には,あらかじめ整数に丸める。
時刻の表現は,処理系定義とする。
例外
時,分,秒の値が所定の範囲内にないとき,その値を0として処理する。
備考
コード
EE07
表記
UNPKTM
機能
時刻データの要素データへの分解 (unpack time)
呼出形式
a UNPKTM
結果
b c d
入力
a :St 時刻表現文字列
出力
b :I2 時
c :I2 分
d :I2 秒
説明
時刻表現文字列aを,時b,分c,秒dに分解する。
時刻の表現は,処理系定義とする。
例外
文字列aが時刻表現に合致しないとき,時,分,秒の一部又は全部を0として処理する。
備考
コード
EE08
表記
PACKDT
機能
日付要素データのまとめ (pack date)
呼出形式
a b c PACKDT
結果
d
入力
a :I1,I2,I4,R4,R8 年
b :I1,I2,I4,R4,R8 月
c :I1,I2,I4,R4,R8 日
出力
d :St 日付表現文字列
説明
年a,月b,日cを日付表現文字列dにまとめる。
a,b,cが実数型の場合には,あらかじめ整数に丸める。
日付の表現は,処理系定義とする。
例外
年,月,日の値が所定の範囲内にないとき,処理系の定めた範囲の下限の値を用いる。
備考
54
B 8440-1995
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
コード
EE09
表記
UNPKDT
機能
日付データの要素データへの分解 (unpack date)
呼出形式
a UNPKDT
結果
b c d
入力
a :St 日付表現文字列
出力
b :I2 年
c :I2 月
d :I2 日
説明
日付表現文字列aを,年b,月c,日dに分解する。
日付の表現は,処理系定義とする。
例外
文字列aが日付表現に合致しないとき,年,月,日の一部又は全部を処理系の定めた範囲の下限の値
として処理する。
備考
コード
EE0A
表記
CNFG
機能
通信ポートの設定 (configuration of communication port)
呼出形式
a b c d CNFG
結果
なし
入力
a :I2 通信ポート番号
b :I2 フロー制御/RS制御
ビット1 RS制御(0:無,1:有)
ビット0 フロー制御(0:無,1:有)
c :I2 通信速度 (bps)
1 300bps,2 1200bps
3 2400bps,4 4800bps
5 9600bps,6 19200bps
d :I2 形式
ビット5 データ長 (0:7,1:8)
ビット3 パリティ(0:無,1:有)
ビット2 パリティ(0:奇,1:偶)
ビット1,0 ストップビット
0 1 1bit
1 0 1.5bits
1 1 2bits
出力
説明
通信ポートの初期化を行う。ポート番号とファイル番号の対応は,あらかじめ処理系で決められてい
るものとする。
入力のbとdにおいて,指定されていないビットは,0とする。
例外
不正な設定値があるときは,設定を行わない。
備考
コード
EE0B
表記
DOUT
機能
出力ポートへの出力 (data output)
呼出形式
a b DOUT
結果
なし
入力
a :I1,I2,I4,R4,R8 出力ポート番号
b :I2 出力データ
出力
説明
ポートaへデータbを出力する。
ポート番号の値は,あらかじめ整数に丸める。
ポートaが8ビットポートの場合,データbの下位8ビットを使用する。
例外
指定されたポートが存在しない場合,警告を発し,出力は行わない。
備考
コード
EE0C
表記
DIN
55
B 8440-1995
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
機能
入力ポートからの入力 (data input)
呼出形式
a DIN
結果
b
入力
a :I1,I2,I4,R4,R8 入力ポート番号
出力
b :I2 入力されたデータ
説明
ポートaからデータを入力し,結果をスタックへ置く。
ポート番号の値は,あらかじめ整数に丸める。
ポートaが8ビットポートの場合,データbの上位8ビットは0とする。
例外
指定されたポートが存在しない場合,警告を発し,入力は行わない。
備考
コード
EE0D
表記
IOWAIT
機能
入力条件待ち (input wait)
呼出形式
a b c d IOWAIT
結果
e f
入力
a :I1,I2,I4,R4,R8 ポート番号
b :I2 マスクパターン
c :I2 待ち条件
1のときand
2のときor
d :I1,I2,I4,R4,R8 タイムアウト時間
出力
e :I2 マスクした値
f :I2 タイムアウトフラグ
説明
ポートaから読み込んだ値を,マスクパターンbでマスクしたビットがオンになるまで待つ。
待ち条件が1のときは,すべてのビットがオンになるまで待ち,2のときは,いずれかのビットがオ
ンになるまで待つ。
d時間経過しても入力条件が発生しない場合には,タイムアウトとなり,タイムアウトフラグfを1
として,待ちは解かれる。
待ち条件が成立した場合には,フラグfは0とする。
タイムアウト時間dの単位は,処理系定義とする。
なお,ポート番号aが実数で与えられた場合には,あらかじめ整数に丸める。
例外
備考
コード
EE0E
表記
ACT
機能
割込みの活性化 (activate interrupt)
呼出形式
a ACT
結果
なし
入力
a :I1,I2,I4 割込みレベル番号
出力
説明
割込みレベルaの割込みを受け付けるようにする。
例外
備考
ACTRS,REACT参照。
コード
EE0F
表記
ACTRS
機能
割込みの不活性化 (reset interrupt activity)
呼出形式
a ACTRS
結果
なし
入力
a :I1,I2,I4 割込みレベル
出力
説明
割込みレベルaの割込みを受け付けないようにする。
割込みレベルaが,0のときは,すべての割込みが禁止される。
例外
備考
ACT,REACTを参照。
コード
EE10
表記
REACT
56
B 8440-1995
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
機能
割込みの再活性化 (reactivate interrupt)
呼出形式
REACT
結果
なし
入力
出力
説明
ACTRSによって最近禁止された割込みレベルの割込みを受け付けるようにする。
例外
備考
回復される割込みは,最近禁止された一回だけである。
ACT,ACTRSを参照。
コード
EE11
表記
ACTCODE
機能
割込みコードの定義 (define intrrupt code)
呼出形式
a b c ACTCODE
結果
なし
入力
a :I1,I2,I4 割込みコード
b :I1,I2,I4 割込みレベル
c :Fn,Mc,U 割込み検出手続
出力
説明
割込みレベルbをもつ割込みコードaを定義する。
割込みの検出には,Cの手続を用いる。
例外
備考
ACTIONを参照。
コード
EE12
表記
ACTION
機能
割込み処理の定義 (define interrupt action)
呼出形式
a b ACTION
結果
なし
入力
a :I1,I2,I4 割込みコード
b :Fn,Mc,U 割込み処理
出力
説明
割込みコードaの割込み発生時の処理を定義する。
例外
備考
ACTCODEを参照。
コード
EE13
表記
TIMER
機能
タイマ割込みの設定 (set timer interrupt)
呼出形式
a TIMER
結果
なし
入力
a :I1,I2,I4,R4,R8 タイムアウト時間
出力
説明
タイムアウト時間を設定し,タイマ割込みを活性化する。
タイムアウト時間に0又は負の値を設定した場合,タイマ割込みは,不活性となる。
例外
備考
コード
EE14
表記
RTIMER
機能
タイマ割込みの再設定 (reactivate timer interrupt)
呼出形式
RTIMER
結果
なし
入力
出力
説明
タイマ割込みによって最近禁止された割込みを受け付るようにする。
タイマ割込みは,再起動されない。
例外
備考
コード
EE15
表記
TACTION
57
B 8440-1995
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
機能
タイマ割込み処理の定義 (define timer action)
呼出形式
a TACTION
結果
なし
入力
a :Fn,Mc,U 割込み処理
出力
説明
タイマ割込み発生時の処理を定義する。
例外
備考
コード
EE16
表記
FSTAT
機能
ファイルステータスの取出し (file status)
呼出形式
a FSTAT
結果
b
入力
a :I1,I2,I4,R4,R8 ファイル番号
出力
b :I2 ファイルのステータス
説明
ファイルのステータスを取り出し,結果をスタックへ置く。
bit-0 EOF
bit-1 not opened
bit-2 I/O error
ファイルの終端に達しているとき,ビット0が1となる。
ファイルがオープンされていないとき,ビット1が1となる。
ファイルアクセスに失敗したとき,ビット2が1となる。
ポート番号aが実数で与えられた場合,あらかじめ整数に丸める。
例外
備考
コード
EE17
表記
OUTPUT
機能
ファイルへの書出し (output)
呼出形式
a b OUTPUT
結果
なし
入力
a :I1,I2,I4,R4,R8 ファイル番号
b :任意の型のデータ 書き出すデータ
出力
説明
bをa番のファイルへ書き出す。書き出される値は,テキストに変換される。データの区切り文字は,
処理系定義とするが,空白を用いることを推奨する。
ポート番号aが実数で与えられた場合,あらかじめ整数に丸める。
例外
ファイル書込みエラーは,プログラム停止。
備考
コード
EE18
表記
INPUT
機能
ファイルの読込み (input)
呼出形式
a INPUT
結果
b
入力
a :I1,I2,I4,R4,R8 ファイル番号
出力
b :任意の型のデータ 読み込んだデータ
説明
a番のファイルから読み込んだデータをスタックへ置く。
型は,データの表現形式から決定される。
ポート番号aが実数で与えられた場合,あらかじめ整数に丸める。
例外
ファイル読込みエラーは,プログラム停止。
備考
INPUTを実行する前に,FSTATを用いてファイルのオープン状態及びEOF状態を調べることができ
る。
コード
EE19
表記
LOUTPUT
機能
ファイルの1行書出し (line output)
呼出形式
a b LOUTPUT
結果
なし
58
B 8440-1995
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
入力
a :I1,I2,I4,R4,R8 ファイル番号
b :任意の型のデータ 書き出すデータ
出力
説明
データをファイルへ書き出す。データに続けて改行文字が書き出される。データの変換は,OUTPUT
に準じる。
ポート番号aが実数で与えられた場合,あらかじめ整数に丸める。
例外
ファイル書込みエラーは,プログラム停止。
備考
OUTPUT参照。
コード
EE1A
表記
LINPUT
機能
ファイルの1行読込み (line input)
呼出形式
a #t LINPUT
結果
c
入力
a :I1,I2,I4,R4,R8 ファイル番号
t :タグ
出力
c :t型のデータ 読み込んだデータ
説明
ファイルから1行読み込み,タグtに従って値を取り出し,結果をスタックへ置く。1行の最大長及び
データの区切り文字は,処理系定義とする。
ポート番号aが実数で与えられた場合,あらかじめ整数に丸める。
例外
ファイル読込みエラーは,プログラム停止。
備考
コード
EE1B
表記
FOPEN
機能
ファイルの入出力用オープン (file open)
呼出形式
a b FOPEN
結果
なし
入力
a :I1,I2,I4,R4,R8 ファイル番号
b :I2 オープンモード
出力
説明
ファイルを指定されたモードでオープンする。モードは整数で,次による。
1のとき read(読込み)
2のとき write(書出し)
4のとき append(追加)
ポート番号aが実数で与えられた場合,あらかじめ整数に丸める。
例外
ファイルのオープンに失敗したときは,プログラム停止。
備考
コード
EE1C
表記
FCLOSE
機能
ファイルのクローズ (file close)
呼出形式
a FCLOSE
結果
なし
入力
a :I1,I2,I4,R4,R8 ファイル番号
出力
説明
ファイルをクローズする。
ポート番号aが実数で与えられた場合,あらかじめ整数に丸める。
例外
ファイルクローズエラーは,プログラム停止。
備考
コード
EE1D
表記
PUTC
機能
1文字出力 (put a character)
呼出形式
a b PUTC
結果
なし
入力
a :I1,I2,I4,R4,R8 ファイル番号
b :I2 書き出すデータ(8ビット)
出力
59
B 8440-1995
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
説明
ファイルへ1文字書き出す。
ポート番号aが実数で与えられた場合,あらかじめ整数に丸める。
例外
ファイル書込みエラーは,プログラム停止。
備考
コード
EE1E
表記
GETC
機能
1文字入力
呼出形式
a GETC
結果
b
入力
a :I1,I2,I4,R4,R8 ファイル番号
出力
b :I2 読み込んだ文字(8ビット)
説明
ファイルから1文字読み込み,結果をスタックへ置く。
ポート番号aが実数で与えられた場合,あらかじめ整数に丸める。
例外
ファイル読込みエラーは,プログラム停止。
備考
コード
EE1F
表記
DECODE1
機能
文字列の分解(BASIC形式)
呼出形式
a #b DECODE1
結果
c
入力
a :St データ文字列
b :t 取り出したいデータ型のタグ
出力
c :指定した型 取り出したデータ
説明
データ文字列aを,タグbの指定に従って分解した結果をスタックへ置く。
例外
変換エラーは,プログラム停止。
備考
コード
EE20
表記
ENCODE1
機能
文字列の構成(BASIC形式)
呼出形式
a b1 … bn n ENCODE1
結果
c
入力
a
:St フォーマット文字列
b1,…,bn :任意の型 データ
n
:I1,I2,I4,R4,R8 データ数
出力
c
:St 構成された文字列
説明
任意の型のデータを,フォーマット文字列に従って変換し,構成された文字列をスタックへ置く。
フォーマット文字列の働きは,附属書2を参照。
例外
変換エラーは,プログラム停止。
備考
コード
EE21
表記
DECODE2
機能
文字列の分解(C形式)
呼出形式
a b #c1 … #cn n DECODE2
結果
d
入力
a :St フォーマット文字列
b :St データ文字列
c1 :U 結果の入る変数
n :I1,I2,I4,R4,R8 データ数
出力
d :I2 分解された数
説明
データ文字列を,フォーマット文字列の指定に従って分解して格納し,分解できた数をスタックへ置
く。
フォーマット文字列の働きは,附属書2を参照。
例外
変換エラーは,プログラム停止。
備考
コード
EE22
表記
ENCODE2
機能
文字列の構成(C形式)
60
B 8440-1995
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
呼出形式
a b1 … bn n ENCODE2
結果
c
入力
a
:St フォーマット文字列
b1,…,bn :任意の型 データ
出力
c
:St 構成された文字列
説明
任意の型のデータを,フォーマット文字列に従って変換し,構成された文字列をスタックに置く。
フォーマット文字列の働きは,附属書2を参照。
例外
変換エラーは,プログラム停止。
備考
コード
ED00
表記
JSPEED
機能
関節速度指定 (joint speed)
呼出形式
a JSPEED
結果
b
入力
a :I1,I2,I4,R4,R8 関節速度比率
出力
b :I2 エラーフラグ
説明
移動時の関節速度を比率で指定する。最高速度を100%とし,0〜100の値を指定する。既定値は処理
系依存とする。
フラグbは,例外が発生しなければ,0値。発生すれば非0値。
フラグbの詳細は,処理系定義とする。
コントローラは,このコードを実行完了後,再度実行されるまで指定値を保持する。
例外
指定値が負値又は最大値を超過した場合,実現不可能となり,出力は非0値となる(旧値を保持する)。
備考
AJMOVE,IJMOVE,ADRIVE,IDRIVEの4関数でだけ有効である。
コード
ED01
表記
SPEED
機能
手先速度指定 (speed)
呼出形式
a SPEED
結果
b
入力
a :I1,I2,I4,R4,R8 手先の速度を指定する数値
出力
b :I2 エラーフラグ
説明
手先効果器 (end effector) の直角座標系における移動速度を指定する。
単位は処理系定義とするが,m/sを推奨する。
フラグbは,例外が発生しなければ,0値。発生すれば非0値。
フラグbの詳細は,処理系定義とする。
コントローラは,このコードを実行完了後,再度実行されるまで指定値を保持する。
例外
指定値が負値又は最大値を超過した場合,実現不可能となり,出力は非0値となる(旧値を保持する)。
備考
直角座標系の動作命令(ALMOVE,ILMOVE,HMOVE,CMOVE1,CMOVE3の5関数)でだけ有効
である。
コード
ED02
表記
ACCEL1
機能
手先加速度指定(acceleration)
呼出形式
a ACCEL1
結果
b
入力
a :I1,I2,I4,R4,R8 手先の加速度を指定する数値
出力
b :I2 エラーフラグ
説明
手先効果器(ende effector)の直角座標系での加速度を指定する。
単位は処理系定義とするが,加速度を数値として与える場合にはm/s2を推奨し,また,最大加速度に
対する割合で指定する場合には%を推奨する。
フラグbは,例外が発生しなければ,0値。発生すれば非0値。
フラグbの詳細は,処理系定義とする。
コントローラは,このコードを実行完了後,ACCEL1,ACCEL2のいずれかが再度実行されるまで指
定値を保持する。
加速度を数値で指定した場合の関節座標系の動作命令への影響については,処理系定義とする。
例外
指定値が,実現不可能な場合,若しくは負値又は最大値を超過した場合。
61
B 8440-1995
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
備考
加速度を数値で指定した場合,関節座標系の動作命令(AJMOVE,IJMOVE,ADRIVE,IDRIVEの4
関数)において指定された接線加速度を維持するには,角加速度の複雑な制御が必要となる。
コード
ED03
表記
ACCEL2
機能
時間による手先加速度指定 (acceleration by time)
呼出形式
a ACCEL2
結果
b
入力
a :I1,I2,I4,R4,R8 最大速度に達するまでの時間
出力
b :I2 エラーフラグ
説明
最大速度に達するまでの時間を指定することによって,加速度を指定する。
単位は処理系定義とするが,秒を推奨する。
フラグbは,例外が発生しなければ,0値。発生すれば非0値。
フラグbの詳細は,処理系定義とする。
コントローラは,このコードを実行完了後,ACCEL1,ACCEL2のいずれかが再度実行されるまで指
定値を保持する。
例外
指定値が,実現不可能な場合,若しくは負値又は最大値を超過した場合。
備考
コード
ED04
表記
DECEL1
機能
手先減速度指定 (deceleration)
呼出形式
a DECEL1
結果
b
入力
a :I1,I2,I4,R4,R8 手先の減速度を指定する数値
出力
b :I2 エラーフラグ
説明
手先効果器 (end effector) の直角座標系での減速度を指定する。
単位は処理系定義とするが,減速度を数値として与える場合にはm/s2を推奨し,また,最大減速度に
対する割合で指定する場合には%を推奨する。
フラグbは,例外が発生しなければ,0値。発生すれば非0値。
フラグbの詳細は,処理系定義とする。
コントローラは,このコードを実行完了後,DECEL1,DECEL2のいずれかが再度実行されるまで指
定値を保持する。
加速度を数値で指定した場合の関節座標系の動作命令への影響については,処理系定義とする。
例外
指定値が,実現不可能な場合,若しくは負値又は最大値を超過した場合。
備考
減速度を数値で指定した場合,関節座標系の動作命令(AJMOVE,IJMOVE,ADRIVE,IDRIVEの4
関数)において指定された接線加速度を維持するには,角加速度の複雑な制御が必要となる。
コード
ED05
表記
DECEL2
機能
時間による手先減速度指定 (deceleration by time)
呼出形式
a DECEL2
結果
b
入力
a :I1,I2,I4,R4,R8 最大速度から停止するまでの時間
出力
b :I2 エラーフラグ
説明
最大速度から速度0に達するまでの時間を指定することによって,加速度を指定する。
単位は処理系定義とするが,秒を推奨する。
フラグbは,例外が発生しなければ,0値。発生すれば非0値。
フラグbの詳細は,処理系定義とする。
コントローラは,このコードを実行完了後,DECEL1,DECEL2のいずれかが再度実行されるまで指
定値を保持する。
例外
指定値が,実現不可能な場合,若しくは負値又は最大値を超過した場合。
備考
コード
ED06
表記
SCONF
機能
コンフィギュレーション設定 (set configuration)
呼出形式
a SCONF
結果
b
入力
a :I2 コンフィギュレーション指定
62
B 8440-1995
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
出力
b :I2 エラーフラグ
説明
ロボットのコンフィギュレーションパラメタ(標準コンフィギュレーション)を設定する。このパラ
メタの効果は,次のロボット制御の実行時に有効となる。
ビット位置
意味 (0/1)
第0ビット
第1ビット
第2ビット
右腕系/左腕系 (righty/lefty)
ひじ(肘)部位置 (above/below)
手首振り (flip/noflip)
ロボットに定義されていない形態を指定した場合,その指定を無視する。
その他のビットの扱いは,処理系定義とする。
フラグbは,例外が発生しなければ,0値。発生すれば非0値。
フラグbの詳細は,処理系定義とする。
コントローラは,この関数を実行完了後,再度実行されるまで指定値を保持する。
例外
備考
この関数は,直角座標系移動に影響する。指定されたコンフィギュレーションが現在の設定と異なっ
ている場合の処置は,処理系定義とする。
これを回避するためには,いったん関節座標系移動を用いてコンフィギュレーションを合わせた後,
直角座標系移動を実行する,などの対処が考えられる。
コード
ED07
表記
SCONF2
機能
コンフィギュレーション設定2 (set configuration-2)
呼出形式
a SCONF2
結果
b
入力
a :I2 コンフィギュレーション指定
出力
b :I2 エラーフラグ
説明
ロボットのコンフィギュレーションパラメタ(拡張コンフィギュレーション)を設定する。このパラ
メタの効果は,次のロボット制御の実行時に有効となる。
コンフィギュレーション指定aによって指定される拡張コンフィギュレーションの意味及びビット位
置は,処理系定義とする。ロボットに定義されていないコンフィギュレーションを指定した場合,そ
の指定は無視する。
フラグbは,例外が発生しなければ,0値。発生すれば非0値。
フラグbの詳細は,処理系依存とする。
コントローラは,このコードを実行完了後,再度実行されるまで指定値を保持する。
例外
備考
この関数は,ロボットコントローラに固有のコンフィギュレーション設定を行うものであり,主要な
コンフィギュレーション設定はSCONFで行う。
コード
ED08
表記
SCONF3
機能
コンフィギュレーション設定3 (set configuration-3)
呼出形式
a b SCONF3
結果
c
入力
a :I2 コンフィギュレーション指定番号
b :I1,I2,I4,R4,R8 設定値
出力
c :I2 エラーフラグ
説明
ロボットのコンフィギュレーションパラメタ(拡張量コンフィギュレーション)を設定する。このパ
ラメタの効果は次のロボット制御の実行時に有効となる。
拡張量コンフィギュレーションを指定する番号aとその設定値bの意味は,処理系定義とする。ロボ
ットに定義されていないコンフィギュレーションを指定した場合,その指定を無視する。
フラグcは,例外が発生しなければ,0値。発生すれば非0値。
フラグbの詳細は,処理系定義とする。
コントローラは,このコードを実行完了後,再度実行されるまで指定値を保持する。
例外
備考
この関数は,ロボットコントローラに固有のコンフィギュレーション設定を行うものであり,主要な
コンフィギュレーション設定はSCONFで行う。
63
B 8440-1995
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
コード
ED09
表記
GCONF
機能
コンフィギュレーション取出し (get configuration)
呼出形式
GCONF
結果
a
入力
出力
a :I2 コンフィギュレーションパラメタ
説明
現在設定されているコンフィギュレーションパラメタ(標準コンフィギュレーション)を取り出す。
例外
備考
コンフィギュレーションパラメタの意味及び表現については,SCONFを参照。
ロボットの構造によって意味のないビット値は,暗黙値0がセットされる。
コード
ED0A
表記
GCONF2
機能
コンフィギュレーション取出し2 (get configuration-2)
呼出形式
GCONF2
結果
c
入力
出力
a :I2 コンフィギュレーションパラメタ
説明
現在設定されているコンフィギュレーションパラメタ(拡張コンフィギュレーション)を取り出す。
例外
備考
コンフィギュレーションパラメタの意味と表現については,SCONF2を参照。
ロボットの構造によって意味のないビット値は,暗黙値0がセットされる。
コード
ED0B
表記
GCONF3
機能
コンフィギュレーション取出し3 (get configuration-3)
呼出形式
a GCONF3
結果
b
入力
a :I2 コンフィギュレーション指定番号
出力
b :I1,I2,I4,R4,R8 コンフィギュレーションの値
説明
現在設定されているコンフィギュレーションパラメタ(拡張量コンフィギュレーション)から,形態
指定番号aに指定されている値を取り出す。
例外
備考
コンフィギュレーションパラメタの意味と表現については,SCONF3を参照。
ロボットの構造によって意味のないビット値は,暗黙値0がセットされる。
コード
ED0C
表記
HERE
機能
現在ポーズの取込み (get current pose)
呼出形式
HERE
結果
a
入力
出力
a :Pm
説明
ロボットの現在ポーズを取り出し,スタックに置く。
例外
備考
移動命令実行中でも現在ポーズを取り出すことを原則とする。ただし,処理系によっては,コントロ
ーラの処理速度に問題を生ずるなどの理由によって,ポーズの取り出しが移動完了後となることもあ
る。
コード
ED0D
表記
JHERE
機能
現在ジョイント値の取込み (get current joint)
呼出形式
JHERE
結果
a
入力
出力
a :Ar of (I4,R4) ジョイント値
説明
ロボットの現在のジョイント値を取り出し,スタックに置く。
例外
64
B 8440-1995
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
備考
処理系は,I4又はR4のいずれかの型で取り出せばよい。
移動命令実行中でも現在ジョイント値を取り出すことを原則とする。ただし,処理系によっては,コ
ントローラの処理速度に問題を生ずるなどの理由によって,ジョント値の取り出しが移動完了後とな
ることもある。
コード
ED0E
表記
CALIB
機能
キャリブレーション (calibration)
呼出形式
CALIB
結果
なし
入力
出力
説明
ロボットの機械的位置姿勢とコントローラの保持している設定値とを一致させる。この働きの詳細は,
処理系定義である。
例外
備考
キャリブレーションの内容は,処理系に依存する。このとき,ロボットが位置姿勢を変更することも
ある。
コード
ED0F
表記
PAUSE
機能
中断 (pause)
呼出形式
a PAUSE
結果
b
入力
a :St メッセージ
出力
b :I2 エラーフラグ
説明
指定されたメッセージを標準出力装置に表示して,オペレータの指示があるまでプログラムの実行を
中断する。
また,ロボットが動作中の場合にはコントローラに動作中断を指示し,ロボットは速やかに停止する。
停止の方法については,処理系定義とする。
再開の方法は,ロボットコントローラの機能に依存するが,通常はコントローラにつけられた再開ボ
タンが押されるか,再開指令が入力されることによる。
フラグbは,例外が発生しなければ,0値。発生すれば非0値。
フラグbの詳細は,処理系定義とする。
例外
標準出力装置が定義されていない。
備考
表示機能のないロボットの場合は,標準出力装置の未定義を例外扱いとしない。
コード
ED10
表記
DELAY
機能
時間待ち (delay)
呼出形式
a DELAY
結果
b
入力
a :I1,I2,I4,R4,R8 待ち時間
出力
b :I2 エラーフラグ
説明
待ち時間aで指定した時間だけ,プログラムの実行を遅らせる。
aの単位は処理系定義とするが,msecを推奨する。
この関数の実行中にプログラム実行が強制終了された場合,残計数は0となる。
また,中断又は割込みが発生した場合,残計数は保存され,その後再開した場合は残計数から継続す
る。
フラグbは,例外が発生しなければ,0値。発生すれば非0値。
フラグbの詳細は,処理系定義とする。
例外
指定値が限界値を超えている。
備考
コード
ED11
表記
AJMOVE
機能
関節角空間直線補間絶対移動 (absolute joint move)
呼出形式
a AJMOVE
結果
b
入力
a :Pm 又は Ar of Pm
出力
b :I2 エラーフラグ
65
B 8440-1995
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
説明
関節角空間の直線補間によって,現在ポーズから,指定ポーズ又は指定ポーズ列を移動する。
ポーズの座標値は,ロボットのベース座標系で絶対指定される。
移動終了を待たずに次の命令の実行へ進む。
フラグbは,例外が発生しなければ,0値。発生すれば非0値。
フラグbの詳細は,処理系定義とする。
例外
指定ポーズ(目的地)が,未定義の場合。
指定ポーズ(目的地)が,動作領域外の場合。
備考
移動動作の完了を待つときは,$DONE関数を用いる。
コンフィギュレーションを変えることがある。
コード
ED12
表記
IJMOVE
機能
関節角空間直線補間相対移動 (incremental joint move)
呼出形式
a IJMOVE
結果
b
入力
a :Pm 又は Ar of Pm
出力
b :I2 エラーフラグ
説明
関節角空間の直線補間によって,現在ポーズから,指定ポーズ又は指定ポーズ列を移動する。
ポーズの座標値は,移動開始位置からの相対位置で表現される。
移動終了を待たずに次の命令の実行へ進む。
フラグbは,例外が発生しなければ,0値。発生すれば非0値。
フラグbの詳細は,処理系定義とする。
例外
指定ポーズ(列)が,未定義の場合。
指定ポーズ(列)が,動作領域外の場合。
備考
移動動作の完了を待つときは,$DONE関数を用いる。
コンフィギュレーションを変えることがある。
コード
ED13
表記
ALMOVE
機能
直角座標空間直線補間絶対移動 (absolute linear move)
呼出形式
a ALMOVE
結果
b
入力
a :Pm 又は Ar of Pm
出力
b :I2 エラーフラグ
説明
直角座標空間の直線補間によって,現在ポーズから,指定ポーズ又は指定ポーズ列を移動する。
ポーズの座標値は,ロボットのベース座標系で絶対指定される。
移動終了を待たずに次の命令の実行へ進む。
フラグbは,例外が発生しなければ,0値。発生すれば非0値。
フラグbの詳細は,処理系定義とする。
例外
指定ポーズが,未定義の場合。
指定ポーズが,動作領域外の場合。
移動中に特異解が,発生した場合。
移動中に補間ポーズが,動作領域を超えた場合。
備考
移動動作の完了を待つときは,$DONE関数を用いる。
コード
ED14
表記
ILMOVE
機能
直角座標系直線補間相対移動 (incremental linear move)
呼出形式
a ILMOVE
結果
b
入力
a :Pm 又は Ar of Pm
出力
b :I2 エラーフラグ
説明
直角座標空間の直線補間によって,現在ポーズから,指定ポーズ又は指定ポーズ列を移動する。
ポーズの座標値は,移動開始位置からの相対位置で表現される。
移動終了を待たずに次の命令の実行へ進む。
フラグbは,例外が発生しなければ,0値。発生すれば非0値。
フラグbの詳細は,処理系定義とする。
例外
指定ポーズが,未定義の場合。
66
B 8440-1995
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
指定ポーズが,動作領域外の場合。
移動中に特異解が,発生した場合。
移動中に補間ポーズが,動作領域を超えた場合。
備考
移動動作の完了を待つときは,$DONE関数を用いる。
現在ポーズをP1,目標ポーズをP2とし,P3=P2−P1とすると,次の二つのMOVE関数は位置,姿
勢を含めて同じ結果となる。
P2 ALMOVE
P3 ILMOVE
なお,ポーズの演算に関しては,PADD,PSUBを参照のこと。
コード
ED15
表記
HMOVE
機能
ツール座標系直線補間移動 (hand move)
呼出形式
a HMOVE
結果
b
入力
a :Pm 又は Ar of Pm
出力
b :I2 エラーフラグ
説明
ハンド(ツール)座標系で表現された指定ポーズ又は指定ポーズ列を直線移動する。
移動終了を待たずに次の命令の実行へ進む。
フラグbは,例外が発生しなければ,0値。発生すれば非0値。
フラグbの詳細は,処理系定義とする。
例外
指定ポーズが,未定義の場合。
指定ポーズが,動作領域外の場合。
移動中に特異解が,発生した場合。
移動中に補間ポーズが,動作領域を超えた場合。
備考
移動動作の完了を待つときは,$DONE関数を用いる。
コード
ED16
表記
CMOVE1
機能
直角座標空間円弧補間移動 (circular move-1)
呼出形式
a b c d CMOVE1
結果
e
入力
a :I1,I2,I4,R4,R8 平面指定
b :I1,I2,I4,R4,R8 回転角
c :Pm 回転中心ポーズ
d :I1,I2,I4,R4,R8 姿勢指定
出力
e :I2 エラーフラグ
説明
現在ポーズから,指定平面a,回転中心c,回転角bで決まるポーズまで,円弧補間による移動をする。
移動終了を待たずに次の命令の実行へ進む。
aは,ロボット座標系における平面指定であり,1のときxy平面,2のときyz平面,3のときzx平面
を指す。
bは,b≧0のとき反時計回り,b<0のとき時計回りとする。
dは,移動に伴う姿勢の変化を指定し,1のとき回転変換され,2のとき現在姿勢を保ち,3のとき処
理系依存の姿勢となる。
フラグeは,例外が発生しなければ,0値。発生すれば非0値。
フラグeの詳細は,処理系定義とする。
例外
指定ポーズが,未定義の場合。
補間ポーズが,動作領域外の場合。
移動中に特異解が,発生した場合。
半径が,コントローラの定める限界値を超えた場合,直線移動となる。
備考
移動動作の完了を待つときは,$DONE関数を用いる。
メーカは,限界半径の仕様値を明記する。
コード
ED17
表記
CMOVE3
機能
直角座標空間3点指定円弧補間移動 (circular move-3)
呼出形式
a b CMOVE3
結果
c
67
B 8440-1995
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
入力
a :Pm 経由ポーズ
b :Pm 目的ポーズ
出力
c :I2 エラーフラグ
説明
現在ポーズ,経由ポーズ,目的ポーズで決まる円弧上を移動する。
移動終了を待たずに次の命令の実行へ進む。
フラグcは,例外が発生しなければ,0値。発生すれば非0値。
フラグcの詳細は,処理系定義とする。
例外
指定ポーズが,未定義の場合。
補間ポーズが,動作領域外の場合。
移動中に特異解が,発生した場合。
3点で平面が決定できないとき。
備考
提供機関は,限界半径の仕様値を明記すること。
円弧の半径が,コントローラの定める限界値を超えた場合は,直線移動とみなしてもよい。
移動動作の完了を待つときは,$DONE関数を用いる。
コード
ED18
表記
ADRIVE
機能
関節角絶対位置移動 (absolute joint drive)
呼出形式
a ADRIVE
結果
b
入力
a :Ar of (I1,I2,I4,R4,R8) 関節角パラメタ
出力
b :I2 エラーフラグ
説明
ロボットアームの関節角絶対位置aへ移動する。
aの単位(例えば,パルス又は角度),及び配列要素と関節との対応については,処理系定義とする。
動作終了を待たずに次の命令の実行へ進む。
フラグbは,例外が発生しなければ,0値。発生すれば非0値。
フラグbの詳細は,処理系定義とする。
例外
指定パラメタが可動範囲外の場合。
備考
移動動作の完了を待つときは,$DONE関数を用いる。
コード
ED19
表記
IDRIVE
機能
関節角相対位置移動 (incremental joint drive)
呼出形式
a IDRIVE
結果
b
入力
a :Ar of (I1,I2,I4,R4,R8) 関節角パラメタ
出力
b :I2 エラーフラグ
説明
ロボットアームの関節角を増分量aだけ増やす移動をする。
aの単位(例えば,パルス又は角度),及び配列要素と関節との対応については,処理系定義とする。
動作終了を待たずに次の命令の実行へ進む。
フラグbは,例外が発生しなければ,0値。発生すれば非0値。
フラグbの詳細は,処理系定義とする。
例外
可動範囲の限界を超えようとする場合。
備考
移動動作の完了を待つときは,$DONE関数を用いる。
各関節は同時刻に移動を開始し,同時に動作完了することが望ましい。
コード
ED1A
表記
SACC
機能
近傍精度設定 (set accuracy)
呼出形式
a SACC
結果
b
入力
a :I1,I2,I4,R4,R8 近傍指定パラメタ
出力
b :I2 エラーフラグV
説明
ロボットアームの位置決め精度を,指定位置に対してどのくらい近傍であるかによって定義する。パ
ラメタの具体的な値は処理系定義とするが,すべて正の値であって,0直は最高位置決め精度を表す。
また,初期値は,処理系定義であるが,0値(最高精度)とすることを推奨する。
フラグbは,例外が発生しなければ,0値。発生すれば非0値。
フラグbの詳細は,処理系定義とする
68
B 8440-1995
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
例外
パラメタが許される値以外の場合。
備考
サーボ系は,このパラメタで決まる精度基準に達した所で次の制御に移行する。パラメタの意味は,
精度を表すレベル番号のこともあれば,近傍系の値(球なら半径,箱なら一辺の大きさなど)のこと
もある
コード
ED1B
表記
GACC
機能
近傍精度参照 (get accuracy)
呼出形式
GACC
結果
a
入力
出力
a :I2,R4 近傍精度パラメタ
説明
現在設定されている近傍精度パラメタの値を取り出す。
例外
備考
処理系は,I2又はR4のいずれかの型で取り出す。
コード
ED1C
表記
$WAIT
機能
ロボットの動作完了待ち (wait)
呼出形式
a $WAIT
結果
b
入力
a :I1,I2,I4,R4,R8 タイムアウト時間
出力
b :I2 完了状態
説明
最も最近に出された動作指令に対するロボットの動作完了を待つ。
a時間経過しても動作完了しない場合には,タイムアウトとなり,完了状態bを1として,待ちは解
かれる。
タイムアウト時間aの単位は,処理系定義とする。
正常完了ならば,完了状態bは0値。エラーが発生すれば負値。
エラー時の完了状態bの詳細は,処理系定義とする。
例外
備考
手先効果器の完了をこの関数で検出できるかは,処理系に依存する。手先効果器の完了を検出する場
合,完了状態値2を用いることを推奨する。
すなわち,ロボットも手先効果器も共に動作中なら完了状態を3,手先効果器だけ動作中なら完了状
態を2,ロボットだけ動作中なら完了状態を1とする。
コード
ED1D
表記
$DONE
機能
ロボットの動作完了判定 (done)
呼出形式
$DONE
結果
a
入力
出力
a :I2 完了状態
説明
ロボットの動作完了状態を取り出す。
完了状態aは,動作中なら1,正常完了していれば0,異常完了していれば負値。
例外
備考
手先効果器の完了をこの関数で検出できるかは,処理系に依存する。手先効果器の完了を検出する場
合,完了状態値2を用いることを推奨する。
すなわち,ロボットも手先効果器も共に動作中なら完了状態を3,手先効果器だけ動作中なら完了状
態を2,ロボットだけ動作中なら完了状態を1とする。
コード
ED1E
表記
HANDOPEN
機能
ハンドを開く (hand open)
呼出形式
HANDO
結果
なし
入力
出力
説明
現在のハンド(手先効果器)を開く。
開閉動作の完了を待たずに次の命令へ進む。
例外
69
B 8440-1995
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
備考
ハンドの開閉を量で指定するとき,又は複数のパラメタを指定するときには,GRASPを用いる。
開閉動作に時間を要する場合には,DELAY又は$DONEを併用する。
コード
ED1F
表記
HANDCLOSE
機能
ハンドを閉じる (hand close)
呼出形式
HANDCLOSE
結果
なし
入力
出力
説明
現在のハンド(手先効果器)を閉じる。
開閉動作の完了を待たずに次の命令へ進む。
例外
備考
ハンドの開閉を量で指定するとき,又は複数のパラメタを指定するときには,GRASPを用いる。
開閉動作に時間を要する場合には,DELAY又は$DONEを併用する。
コード
ED20
表記
GRASP
機能
握り (grasp)
呼出形式
a1 … an n GRASP
結果
b
入力
a1,…,an :I1,I2,I4,R4,R8 把握パラメタ
n :I1,I2,I4,R4,R8 パラメタ数
出力
b :I2 エラーフラグ
説明
指定されたハンド(手先効果器)にパラメタa1,…,anを送り,制御する。
把握動作の完了を待たずに次の命令へ進む。
パラメタの意味は,ハンドに依存する。
パラメタ数nが実数で与えられた場合,あらかじめ整数に丸める。
フラグbは,例外が発生しなければ,0値。発生すれば非0値。
例外
手先が定義されていない。
パラメタの値が不正である。
備考
コード
ED21
表記
HANDDEF
機能
ハンドの定義 (hand definition)
呼出形式
a1 … an n b HANDDEF
結果
c
入力
a1,…,an :任意の型 ハンド定義のパラメタ
n :I1,I2,I4,R4,R8 パラメタ数
b :I1,I2,I4,R4,R8 ハンド番号
出力
c :I2 エラーフラグ
説明
ハンド番号bを宣言し,それに付随する情報(ハンドの種類,ハンド座標系など)を定義する。
指定されるパラメタは,ハンドに依存する。
パラメタ数n及びハンド番号bが実数で与えられた場合,あらかじめ整数に丸める。
フラグcは,例外が発生しなければ,0値。発生すれば非0値。
例外
ハンド番号,パラメタ数,パラメタ(型,値)が不正である。
処理系で許されるハンド定義数を超えた。
備考
複数のハンドを指定する場合,ハンド番号は必ずしも連続している必要はない。
コード
ED22
表記
HANDREF
機能
ハンド定義の参照 (hand reference)
呼出形式
a HANDREF
結果
b1 … bn n
入力
a :I1,I2,I4,R4,R8 ハンド番号V
出力
b1,…,bn :任意の型 ハンド定義のパラメタ
n :I2 パラメタ数
説明
ハンド番号aで指定したハンド(手先効果器)の情報を取り出す。
ハンド番号が定義されていないときは,パラメタ数nを−1とする。
70
B 8440-1995
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
例外
備考
コード
ED23
表記
HANDCHG
機能
ハンドの交換 (hand change)
呼出形式
a HANDCHG
結果
入力
a :I1,I2,I4,R4,R8 ハンド番号
出力
b :I2 エラーフラグ
説明
指定されたハンド(手先効果器)に論理的に交換する。
フラグbは,例外が発生しなければ,0値。発生すれば非0値。
なお,ハンド番号aが実数で与えられた場合,あらかじめ整数に丸める。
例外
ハンド番号が未定義のとき。
備考
ハンドの物理的交換をすることは限らない。
71
B 8440-1995
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
附属書2 書式変換
1. 適用範囲 この附属書は,STROLICにおける書式変換に関しての書式指定について規定する。
備考 データの文字による表現と処理系の内部表現との変換を,書式変換という。書式変換では,変
換を指示する書式指定に従ってデータの表現形式が変換される。
2. 書式指定
(1) BASIC形式 書式指定は,ANSI FULL-BASICに従う。
(2) C形式 書式指定は,基本的にANSI Cに従う。ただし,以下の点が異なる。
・ 書式文字列中のu,l,L,hについては,意味をもたない。
・ %cについては,STROLICの整数型データが対応する。
72
B 8440-1995
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
参考1 中間コード・マシン
序文 この参考は,本体及び附属書の規定に関連する事柄を補足するもので,規定の一部ではない。
1. 中間コードマシン概要 中間コードの実行を行う仮想のマシンの構成を述べる。実際のインプリメン
トに際し,このとおりに作る必要はない。あくまで概念的なモデルである。
ロボット言語は,利用者が使用する入力形式言語であり,統一的文法をもつ。これを利用者とロボット
とのマン・マシン・インタフェースとしてとらえるなら,中間コードはロボットの制御盤と外部のコンピ
ュータとのマシン・マシン・インタフェースとして定義される。各種“機能”のロボット制御盤上での実
現には,“機能”を手続あるいは関数のパッケージとして準備する方法が行われ,それらの呼出しによって
“機能”を実現する。したがって,中間コード表現に用いる文法は,入力用言語で用いられるより単純,
かつ,原始的で十分である。
この中間コードは,
(1) スタックの利用
(2) 逆ポーランド記法の採用
(3) タグによるデータ構造の表現
を採用し,単純な処理系を想定しているので,その文法も,関数の処理手続として,
(1) スタックから実引き数の値を必要なだけ取り,演算する。
(2) 演算結果をスタック上に置く。
だけであり,データ構造のスタックヘの積み方としては,
(3) タグによって続くデータを解釈する。
を想定しているだけである。
なお,これらの中間コードにおける文法は,入力用言語の文法を規定するものではない。
2. 仮想マシン構成 仮想マシン(インタプリタ)は,入力ストリーム,スタック,変数表,ヒープ,リ
ターンスタックから構成される。
73
B 8440-1995
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
(1) 入力ストリーム インタプリタは,一つの入力ストリームをもつ。入力ストリームからは,中間コー
ドがバイト順に送り込まれる。インタプリタは,入力された中間コードを順次その場で実行していく。
入力ストリームにデータを送る側を,プログラム装置と呼ぶ。
(2) スタック(データ用) インタプリタは,スタック・マシンであり,すべての操作はスタックを中心
に実行される。スタックにプッシュ/ポップされるデータはすべてタグ付きで,その長さは一定して
はいない。
(3) 変数表 変数及び関数は,中間コード上では特定のコード表現で表されている。この変数コードや関
数コードは,インタプリタ内のヒープ領域に実際の場所が取られている。この対応関係は,変数表で
管理する。すなわち,変数及び関数は,変数表を引くことでヒープ上の位置を知ることができる。変
数と関数の区別は,変数表上にはない。ヒープ領域に格納されている値を見ることで判定する。
(4) ヒープ インタプリタ内には,ヒープ領域と呼ばれるエリアがある。このエリアは,必要に応じて,
利用者関数及び利用者変数の領域が(動的に)確保される。ヒープ上のデータはすべてタグ付きで格
納されている。格納されている値のタグが関数ならば,そこには関数の本体が格納されているし,そ
れ以外ならばその値,例えば,2バイト整数のタグならば2バイト整数値が(タグ付きで)格納され
ている。
(5) リターン・スタック 関数の呼出に対し,その戻りを制御するためにリターン・スタックがデータ用
のスタックとは別に用意されている。ここに,関数の呼出し及び戻りに関する情報が保持されている。
(6) その他 仮想マシンは,出力ストリームをもっている。仮想マシンは,プログラム装置から送られて
くる中間コードを順次実行していく。しかし,ときには仮想マシンからプログラム装置へ情報を送る
必要もある。このとき,出力ストリームを用いる。
また,仮想マシンは,コンフィギュレーションと呼ぶ状態パラメータをもっている。コンフィギュ
レーションの多くはロボットの姿勢,形態に関するパラメータで,設定/参照を行うことができる。
このパラメータは,実行時の必要に応じて制御装置などで参照される。標準のコンフィギュレーショ
ンとしては次の三つがある。
(a) 右腕系/左腕系 (RIGHTY/LEFTY)
(b) ひじ部位置 (ABOVE/BELOW)
(c) 手首振り (FLIP/NOFLIP)
3. 仮想マシン動作
(1) 入力ストリームから順次バイト列を取り込む。
(2) タグのときは,データであると判断し,各々のタグの定義に従って,その個数分データを取り込み,
スタックヘプッシュする。
(3) タグでなければ関数(利用者関数,組込関数)又は変数(利用者変数)であると判断し,次のバイト
を取り込んで,2バイトで関数一覧表を引いて変数又は関数の評価を行う。
4. 利用者関数及び利用者変数の評価 利用者関数及び変数は,インタプリタ内の変数表にあらかじめリ
ストされている。変数表は,利用者関数,変数のコード及びその実体の存在するヒープ上の位置へのポイ
ンタから成っている。この表を引くことによって利用者変数又は関数の実体を取り出し,評価することが
できる。取り出した実体が関数の場合は,利用者関数の評価が行われる。そうでなければ利用者変数の評
価が行われる。
74
B 8440-1995
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
(1) 利用者変数の評価 その値を取り出し,スタックヘプッシュする。このときプッシュされる値は,タ
グ付きのままである。評価を行わずに利用者変数コードそのものをスタックヘプッシュしたい場合は,
評価抑制子を用いる。
(2) 利用者関数の評価 関数本体の評価(実行)を行う。利用者関数の本体も,また,中間コードで書か
れている。インタプリタは,現在のコードのフェッチを中断し,関数本体の中間コードを順にフェッ
チして実行する。飛越し関係の中間コードは,利用者関数の中でしか使用することはできない。
RETURN命令の実行によって関数の評価は終了し,元の制御の流れに戻る。
5. 利用者関数及び利用者変数の定義 利用者変数/関数の定義には,変数の定義 (DEF) を用いる。変
数の定義では,まず,定義の開始を示すVAR関数が置かれる。それに続いて評価抑制子付きの利用者コー
ドが並び,そして最後に定義関数DEFが置かれて終了する。
VAR #u1 #u2 #u3 … #un DEF
VAR関数は,自身をスタック上ヘプッシュする。続いて,定義する利用者コードがプッシュされる。最
後にDEF関数の実行で,中間コードマシンの変数表に利用者コードが登録される。登録された直後の利用
者コードは,値も,値を入れる領域も与えられてはいない。これらは,この利用者コードヘの値の代入が
行われたときに決定される。
u1…unの利用者コードは,異なっていなくてはならない。しかし,異なる変数定義で同一の利用者コー
ドが現れてもかまわない。この場合より後から定義されたものが有効となるが,先の定義が無効となるわ
けではない。後から定義された利用者コードが解放 (FREE) されると先の定義が再び有効となる。
VAR #u1 #u2 #u3 … #un FREE
6. 利用者変数への代入
利用者コードへ値を設定するときは,代入 (STORE) を用いる。代入に先立って,利用者コードが定義
されていなくてはならない。
#u val STORE
#uは評価抑制子付きの利用者コード,valは設定する値。代入ではヒープ領域に値が置かれ,そこへの
ポインタが変数テーブル中に格納される。すでに変数に値が設定されているときは,この時点でヒープ領
域の解放が行われる。ただし,解放する領域の再利用が可能なときは,それを行ってもよい。
7. 構造をもつデータの要素 配列データ,レコードデータ及び文字列データは,構造をもつデータであ
る。構造をもつデータの要素は,タグなしで構造データ中に並べられている。構造をもつデータ中の要素
の参照は抽出 (extract) によって,設定は埋込み (embed) によってそれぞれ行うことができる。
○抽出 (extract) 構造をもつデータの要素の参照は,抽出関数EXTによって行われる。抽出関数では,
構造をもつデータ内の位置と抽出するデータの型(タグ)を与えて要素を取り出す。
st of #t EXT
stは,構造をもつデータで,普通は構造をもつデータが代入されている利用者コードが評価抑制子付き
で書かれる。ofは,オフセットで構造をもつデータのデータ部分の先頭をゼロとして数えたバイト位置で
ある。#tは,取り出す要素の型をタグの形で与える。
例 部分文字列
75
B 8440-1995
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
長さ8の文字列“ABCDEGFH”の第3文字目(バイト位置2)から,長さ3の文字列“CDE”
が取り出される。
○埋込み (embed) 構造をもつデータの一部分にデータを書き込むには,埋込み関数EMBを用いる。
st of elm EMB
stは,構造をもつデータで,普通は構造をもつデータが代入されている利用者コードが評価抑制子付き
で書かれる。ofは,オフセットで構造をもつデータのデータ部分の先頭をゼロとして数えたバイト位置で
ある。elmは,埋め込むデータである。
8. ブロック構造 STROLICでは,変数表を用いて利用者変数の評価を行う。このとき,ただ一つの変数
表によって利用者変数を評価すると,すべての変数は,全域的(グローバル)となる。これに対し,STROLIC
ではブロック構造をもつ表面言語の出力に対応できるように,変数表の局所化の機能が用意されている。
この局所化された構造を入れ子構造と呼ぶ。
入れ子構造の設定 NESTIN
入れ子構造の解除 NESTOUT
入れ子構造には入れ子レベルが与えられる。一番外側は,入れ子レベル0である。変数の評価は,現在
の入れ子構造からより外側の入れ子レベルの低い構造へと探していき,初めて見つかった構造の所で評価
が行われる。特別に,より外側の構造の変数を評価するために入れ子レベル付きのデータのプッシュ/ポ
ップがある。
入れ子レベル付きプッシュ NPUSH
入れ子レベル付きポップ NPOP
同じ入れ子レベルをもつ構造のより外側の変数は,参照できない。しかし,より内側の構造が解除され
ると見えるようになる。指定できる入れ子レベルは,処理系の定める深さまでである。この深さは,16〜
32くらいあれば実用上問題はない。
9. マルチタスク STROLICでは,マルチタスクの機能を用意する。マルチタスクの実現には,二つのタ
イプがある。一つは中間コードマシンの上で並行的に実行するもので,二つ目は,STROLIC処理系が乗っ
ているマルチタスクOSによるものである。STROLICでは,両方の並行処理をサポートしている。中間コ
ードマシン内での並行実行を行う場合,プロセスと呼ばれる。STROLIC利用者関数の実行が同時並行的に
行われる。一方,マルチタスクOSに依存する並行処理をタスクと呼ぶ。STROLICの中では,プロセスも
タスクも番号で識別される。これをそれぞれプロセス番号,タスク番号と呼ぶ。
起動 FXQT,TXQT
起動補助 FPREDC,TPRECD,FCYCLE,TCYCLE
終了判定 FDONE,TDONE
強制終了 FKILL,TKILL
同時並行的に実行されるプロセス間及びタスク間では,同期をとったり,データの交換を行ったりでき
るようにする必要がある。この目的のためにイベントフラグが用意されている。イベントフラグは,1ビ
ットのオン/オフフラグで同期又は排他制御に用いる。イベントフラグも番号で識別される。
76
B 8440-1995
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
ロック LOCK
ロック解除 UNLOCK
イベント待ち EWAIT,EWAITA,EWAITO,EPOP
イベント発生 ESIG
イベントクリア ECLR
プロセスの間でのデータの共有には,グローバル変数を用いる。グローバル変数は,二つのプロセス
(STROLIC関数)から共に参照することができる。別のタスクと共有するデータの場合は,共有変数宣言
が必要である。共有変数宣言では,変数に共有変数番号が割り付けられ,別のタスクは,この共有変数番
号を頼りに共有変数への参照を実現する。データの排他制御は,イベントフラグを用いて利用者が行う必
要がある。
他に,1 : 1の単方向のデータ交換を簡便に行うためにチャネルが用意されている。一つのチャネルは,
一つのイベントフラグとスタックとを介したデータ交換で実現される。
チャネル入力 CHIN
チャネル出力 CHOUT
77
B 8440-1995
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
参考2 実数の表現
序文 この参考は,本体及び附属書の規定に関連する事柄を補足するもので,規定の一部ではない。
この規格で使用する実数の表現は,IEEE 754の規格に準じることを推奨する。ただし数としての実数の
ビット構成だけを使用し,非数についてはこれを定めない。
実数は,以下に示すように四つ又は八つのバイトの並びで表現し,それらを第0バイトから第3バイト
又は第7バイトとする。バイトの並びの中で先行するバイトは上位のビットに,後のバイトは下位のビッ
トを構成する。バイト内の各ビットは,MSBが上位のビットに,LBSが下位のビットとなる。
実数は,符号,指数,仮数の三つから構成される。符号は数の符号を表す。指数は2の指数で中央値が
0を表す,いわゆるゲタ履き表現である。仮数は,正規化された2進小数で最初の1ビットは(常に1で
あるので)省略する。ただし,0は例外とする。
1. 単精度実数 単精度実数は,4バイト(32ビット)で表す。
符号 1ビット
指数 8ビット(2の指数でゲタ履き表現)
仮数 23ビット [仮数の先頭の1ビット (2−1) を省略]
2. 倍精度実数 倍精度実数は,8バイト(64ビット)で表す。
符号 1ビット
指数 11ビット(2の指数でゲタ履き表現)
仮数 52ビット[仮数の先頭の1ビット (2−1) を省略]
78
B 8440-1995
2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。
ロボット言語JIS原案作成専門委員会 構成表
氏名
所属
(委員長)
新 井 民 夫
東京大学
松 元 明 弘
東洋大学
伊佐山 建 志
通商産業省
吉 田 藤 夫
工業技術院
柿 倉 正 義
工業技術院電子技術総合研究所
高 島 覺
財団法人機械振興協会
黒 澤 豊 樹
黒澤R&G技術事務所
石 井 博
株式会社小野技術研究所
鈴 木 和 彦
日本電装株式会社
吉 田 邦 夫
日本ビクター株式会社
斎 藤 和 春
セイコーエプソン株式会社
川 村 敏 和
株式会社東芝
西 本 克 史
富士通株式会社
針 木 和 夫
株式会社不二越
佐 藤 和 克
松下電器産業株式会社
中 村 寿 夫
石川島播磨重工業株式会社
松 島 幹 治
川崎重工業株式会社
村 上 悦 三
株式会社ダイヘン
毛 利 峻 治
株式会社日立製作所
原 龍 一
ファナック株式会社
奥 井 得 博
富士電機株式会社
高 木 裕 明
ぺんてる株式会社
森 俊 二
三菱電機株式会社
田 中 雅 人
株式会社安川電機
松 本 博 志
株式会社ユーシン精機