ロボゼロ資料館

ROBOMIC(ブログ)

週刊ロボゼロ(デアゴ)

JO-ZEROホームページ

ホーム

コマンド

Header

戻る
Enter content here...

書式

Enter content here...

記述サンプル

Enter content here...

解説

Enter content here...

変数

戻る

整数変数

表記:V00からV127までの128個
範囲:-32767〜32767

サーボ変数

表記:R01からR24までの24個
範囲:0から3000

1次元配列変数

表記:(VXX, (NXX, (SXX, (RXX
範囲:XXは0から722までの723個


演算代入式

戻る

計算を行う

書式

代入項 = 演算項1 演算子1 演算項2

記述サンプル

V00 = 100
V00 = V00 + 100
V00 = V00 + V01 + 100 / 3
(N100 = V00

解説

16bit符号付整数の演算を行う。

右辺の演算結果を左辺に代入。

右辺の演算は左側から行われる。

演算子の優先順位、括弧などを用いた優先順位指定はない。

演算項と演算子は半角の空白で区切る必要がある。

演算項は整数変数、サーボ変数、1次元配列変数、固定整数値が使用できる。

演算子は+、-、*、/、AND、OR、EXORが使用可能。

コメント記述

戻る

コメント行

書式

; コメント文

記述サンプル

;コメント行の記述を行います。
;
;何も記述しなくてもよい(上記)

解説

半角セミコロン「;」で開始
セミコロン以降は2バイト文字可
最大80文字まで記述可 

ラベル記述

戻る

ジャンプ先のラベル名を記述

書式

:ラベル名

記述サンプル

:START
:LOOP
:END
:BACK

解説

半角「:」で開始

ラベル名は最大80文字まで、半角英数字に限らず日本語文字も利用可能

半角英数字が 使用可能

英字については大文字のみ使用可能

スクリプトに使用されているキーワード(予約語)は使用不可

 

 

CALL

戻る

サブルーチンコール

書式

CALL ( ラベル名 )

記述サンプル

CALL(SUBROUTINE01)

:SUBROUTINE01
RETURN

解説

よく使う処理手続きをひとまとめ(サブルーチン)にし、呼び出して使用

最大16ネストまでサブルーチン呼び出し可能

サブルーチンから呼び出し元に復帰する場合はRETURN命令を使用

戻る

JUMP

無条件分岐

書式

JUMP ( ラベル名 )

記述サンプル

JUMP(START)
JUMP(LOOP)
JUMP(END) 

解説

指定されたラベル行に無条件で分岐

戻る

JUMPIF

条件分岐

書式

JUMPIF ( 項1 , 条件 , 項2 , ラベル名 )

記述サンプル

JUMPIF(V00,<,100,LOOP)
JUMPIF(V00,#,10,LOOP)
JUMPIF(V00,=,10,LOOP)

解説

条件を指定し、条件が正立する場合のみ分岐

条件は=、>、>=、<、<=、#(NOT)

MOTIONCALL

戻る

登録済みモーション呼出し命令

書式

MOTIONCALL (n)
(n:モーション管理番号)

記述サンプル

MOTIONCALL(54)

解説

登録済みモーションの管理番号を指定し、モーション再生を実行 

指定されたモーション管理番号をもつデータが存在しない場合、正しく動作しないため番号指定には十分注意が必要

これを使うことはお勧めできません(Micono)

RETURN

戻る

サブルーチン復帰

書式

RETURN

記述サンプル

CALL(SUBROUTINE01)

:SUBROUTINE01
RETURN

解説

サブルーチンから呼び出し元へ復帰する場合に記述

ネスティングは自動的に処理されるので必ず呼び出しと復帰は対でなければならない。

MOTORSPEED

戻る

モータースピード設定

書式

MOTORSPEED (n)

記述サンプル

MOTORSPEED(1)

MOTORSPEED(0) 


V00=200

MOTORSPEED


解説

モーターの動作速度を設定する

パラメータが0の場合、動作速度がリアルタイムになる

ラメータが1の場合、動作速度が3秒固定になる

通常、本コマンドは使用しないが、電源投入時など、起動時の挙動を抑えるために使用

パラメータは固定数値のみ

パラメータなしの場合、V00の値が5ms単位で実行速度になる

実行後、WAIT(10)程度の待ち時間の実行が必要である

MOVE

戻る

サーボモータ動作制御

書式

MOVE (サーボ1,...,サーボ24,速度)

記述サンプル

;1秒でホームポジションに復帰する
MOVE(0,0,0,0,0,0,0,0,0,0,0,0,

0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,2400)

;サーボ、時間には変数が使える
MOVE(0,0,0,0,0,0,0,0,0,0,V10,0,
0,0,0,V20,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,V00)

;サーボ1番のみ-30°動かす
MOVE(-300,X,X,X,X,X,X,X,X,X,X,
X,X,
X,X,X,X,X,X,X,X,X,X,X,2400)

解説

サーボn :ホームポジションからの 相対角度 を0.1°単位で指定する

指定できる値の範囲は、-3000から+3000 であるが、ホームポジションの位置により有効範囲が異なる

つまり、 サーボの可動可能角度は-150.0°から+150.0°なので、もし ホームポジションの位置が60°(600)だった場合、その角度からプラス方向には残り90°可動可能であり、マイナス方向には-210°可動可能である為、サーボ有効範囲は-2100から+900となる

変数指定の場合(V10等)その変数が持っている値が目標位置となる。 未指定(X)の場合、動作対象からはずれ、現在の位置を保持

サーボの値には、 定数値 V変数 未指定(X) を用いることができ、 変数指定の場合、その変数が持っている値が目標位置となり、未指定(X)の場合、現在の位置を保持、つまり動かない

速度 :時間指定で指定。 2400 を指定すると約1秒で動作が終了する速度で動く

有効値は、1 ~ 32000 である が、サーボ自体がもつ最大速度以上のスピードにはならない。

速度の値には、 定数値 V変数 を用いることができる。


WAIT

戻る

待機

書式

WAIT (n)

n: 1〜200 (1=5ms)

記述サンプル

WAIT(1)
WAIT(200)

解説

時間待ちを行うためのコマンドであり、 待機時間は1カウントから200カウントまで指定できる。

1カウントは5ミリ秒であり、指定したカウント数の間、プログラムの実行が停止する。

値の指定は、 固定数値 のみ可能である。

サーボ直接作動

戻る

サーボモータ位置指定移動

書式

Ryy = m

Ryy = Ryy + n

yy: 1〜23のサーボ番号
m: -1500〜1500 (-0.1°単位)
n: -3000〜3000 (-0.1°単位)

記述サンプル

R01 = 90
R01 = 180
R01 = 2500 

R01 = R01 + 1500
R02 = R02 - 2500

解説

サーボモータ変数に値を代入することで、 サーボの直接動作させることができる。

計算結果がサーボの動作範囲内でなくてはならない。


HOMEPOS

戻る

ホームポジション復帰

書式

HOMEPOS

記述サンプル

V00=200
MOTORSPEED
HOMEPOS
WAIT(200)

解説

すべてのサーボモータの位置をホームポジションに戻す。

その動作速度はMOTORSPEEDであらかじめ設定しておくとよい。

HOMESET

戻る

ホームポジション定義

書式

HOMESET (サーボ1,,,,,サーボ24)

サーボn:絶対値

記述サンプル

HOMESET(600,1500,1500,1500,
1500,1950,2180,1050,600,1500,
1040,1500,1500,1960,1500,2400,
1950,820,1500,1500,1500,1500,
1500,2400)

解説

24個のサーボのホームポジションの値を定義します。

この値を基準として、MOVEなどが動作します。

GETSVSTATUS

戻る

サーボモータ情報取得

書式

GETSVSTATUS ( n )
n : サーボ番号

記述サンプル

GETSVSTATUS(1)

解説

情報を取得したいサーボの番号で指定する。

取得するデータはサーボ内メモリアドレス2AHから35Hの値であり、取得した値はV00からV05までの変数に格納される。

V00(2A-2B):現在位置(下位)
V01(2C-2D):現在位置(上位)
V02(2E-2F):現在時間(下位)
V03(30-31):現在時間(上位)
V04(32-33):現在スピード(下位)
V05(34-35):現在スピード(上位)

POWER

戻る

モーターパワー設定

書式

POWER

記述サンプル

V01=1
V02=0

V23=1
POWER

WAIT(10)

解説

モーターごとに駆動のON、OFFを指定する。

モータ1はV00、モータ2はV01、モータ24はV23に対応し、各変数にパラメータに1=ON、0=OFFを設定した後、POWERを実行する。

なお、実行後、WAIT(10)程度の待ち時間命令を実行する必要がある。

 

SVREAD

戻る

モータ位置情報一括読み出し

書式

SVREAD

記述サンプル

SVREAD

解説

24個のサーボモータ位置情報を変数V00から23に読み込む。

TORQUESET

戻る
Enter content here...

書式

TORQUESET

記述サンプル

V01=100
V02=10
    ・
    ・

V23=50
TORQUESET

WAIT(10)

解説

24個のモーターの最大出力を0〜100のパーセンテージで指定。

サーボ1〜24の出力値は、それぞれV00~23に設定し、TORQUESETをする。

なお、実行後、WAIT(10)程度の待ち時間命令を実行する必要がる。

FJUMP

戻る

ファイル間分岐

書式

V00= n
FJUMP

n : 5から63

記述サンプル

V00 = 7
FJUMP

解説

SDカードに保存されているファイル番号5〜63を番号を指定して実行する。

サブルーチンコールするこごはできません。

分岐先ファイル番号を変数V00に代入した後、FJUMPを実行する。

SDREAD

戻る

SDカードデータ読込み

書式

SDREAD

記述サンプル

V00=1
V01=6
V02=0
V03=0
SDREAD

解説

SDカードに記録されているファイルの任意の位置からデータを読み込む。

V00-03に値を設定し、SDREADを実行

V00:読込み場所
V00=0の場合 V651から72個
V00=1の場合 V133から512個

V01:ファイル番号

V02-03:ファイル位置
V02:下位セクター
V03: 上位セクター

※1セクター=512バイト

SDWRITE

戻る

SDカードデータ書き込み

書式

SDWRITE

記述サンプル

V00=1
V01=6
V02=0
V03=0
SDWRITE

解説

データをSDカードのファイルの任意の位置に書き込みます。

V00-03に値を設定し、SDREADを実行

V00:書込むデータ
V00=0 V651から72バイト
V00=1 V133から512バイト

V01:ファイル番号
V01=6

V02-03:書込みセクター
V02 下位セクター
V03 上位セクター

※1セクター=512バイト

INPUTADC

戻る

アナログ入力ポートデータ取得

書式

Vxxx = INPUTADC (ADn)

ADn: 1〜7

記述サンプル

V00 = INPUTADC(0)
V01 = INPUTADC(7)

解説

アナログ入力ポートのデータを取得する。

入力ポートは

  • 0から5までが外部入力
  • 6は未使用
  • 7はバッテリー電圧
  • 1:+5V
  • 2:使用不可(バッテリー電圧)
  • 3:AD4 IN
  • 4:AD5 IN
  • 5:AD6 IN
  • 6:DI5
  • 7:DI6
  • 8:DI7
  • 9:GND
  • 10:GND

バッテリー電圧は3分圧された結果

※このポート情報はHSWB-3Fのもので4Fに関してこれと同じではありません。例えば4Fでは2番がバッテリー電圧です。

値範囲は0から5VのDCを8ビット分解能で処理され、5V=255、0V=0となる

拡張AD入力ポートを用いる場合:

  • 拡張AD入力は随時配列変数(N256から(N263に転送
  • 値を判定する場合は直接参照するか整数変数に代入して参照してください。
  • ADEX0~7は(N256から(N263に代入される。

INPUTD

戻る

デジタル入力ポートデータ取得

書式

Vxxx = INPUTD

記述サンプル

V00 = INPUTD
V00 = V00 AND 1
JUMPIF(V00,=,0,BIT0LOW)

解説

デジタル入力ポートD7からD0の状況を変数に代入

入力結果はD7をMSB、D0をLSBとした符号なしバイナリーデータで変数に格納される。

IRTX

戻る

赤外線発光ダイオード駆動

書式

IRTX

記述サンプル

V00 = 0 - 5120
V01 = 0 - 1
IRTX

解説

変数V00及び変数V01に格納されている データ(有効長4バイト)を赤外線発光ダイオードから家電協フォーマットで送信する。

※HSEB-4Fには、赤外線出力のポートがない。

SOUND

戻る

音声再生

書式

SOUND

記述サンプル

V00=62
V01=235
V02=0
V03=192
V04=0
SOUND

解説

音声ファイルを再生する。

V00:音声ファイル番号

V01-02:再生開始位置(セクター)
V02: 下位2バイト
V03: 上位2バイト

V03-04:再生時間(セクター)
V03: 下位2バイト
V04: 上位2バイト

上記設定後、SOUND命令を実行。

1セクターの時間は約4.5ms
セクター値=n秒/0.0468


タイマー

戻る

時間取得

書式

(N127
Vxxx = (N127

記述サンプル

(N127 = 0
JUMPIF((N127,>,100,JIKAN)

解説

配列変数(N127は5ミリ秒ごとに1カウントアップされるタイマー変数になっている。

値を初期化する場合は任意の数値を代入。

値を呼び出す場合は通常の代入式、条件分岐を利用。

変数一覧

Home

汎用変数(0-128)

-32768~+32767
汎用符号付2バイト整数変数
サーボパラメータ設定に使われる&汎用

サーボパラメータ(0-23)

0-23はサーボのパラメータとしても使われる

電波式無線受信機(120-126)

無線受信機用端子からの値がセットされる。

カウントアップタイマ(127)

タイマー変数
5m秒ごとに+1カウントされる

+32767を越えると-32768に戻り、カウントアップが継続される

MOVE命令用倍率指定(128)

初期値は1が代入されている。2以上を代入するとMOVE命令の実行速度が上がる

値は:1,2,4,8,16

カウントダウンタイマ(129)

タイマー変数
5m秒ごとに-1カウントされる
システム用なので書き込みは 禁止

赤外線受信データ(130-131)

新規の受信を行うためにはその都度、数値0を代入し、初期化する必要がある。

ROBOXEROの赤外線リモコンは130のみを使用しており、131は未使用で「0」

音声再生状態(132)

音声再生セクタ数のダウンカウンタ

音声再生中は1以上、再生終了時は0が代入される

読み書きバッファ(133-388)

SDREAD, SDWRITEの命令で V00=1 とした場合に使用する領域

2バイト単位でアクセスする。512バイト分256変数を使用

ジャイロ制御(389-408)

389:ON-OFF 0=OFF, 1=ON
390:ジャイロ0入力値;0-255
391:ジャイロ1入力値:0-255
392:ジャイロ2入力値;0-255
393:ジャイロ0中央値:通常128
394:ジャイロ1中央値:通常128
395:ジャイロ2中央値:通常128
396:係数0:サーボ17
397:係数1: サーボ15
398:係数2: サーボ8
399:係数3: サーボ10
400:係数4: サーボ6
401 :係数5: サーボ18
402 :係数6: サーボ14
403 :係数7: サーボ7
404 :係数8: サーボ11
405 :係数9: サーボ19
406 :係数10: サーボ6
407 :係数11: サーボ24

408 :係数12: サーボ1

オフセット=(入力値ー中央値)X係数
係数0−4がジャイロ0入力値を使用
係数5−8がジャイロ1入力値を使用
係数9ー12がジャイロ2入力値を使用

サーボ指定情報(409-456)

409-459までひとつのサーボごとに2変数x24個=48変数

  1. 指定位置(絶対値)
  2. 動作速度( 書き込み禁止

ホームポジション(457-480)

サーボ出力軸の絶対値での指定
457から480の値が、サーボの1から24番のサーボのホームポジションの値を示している。

サーボ動作速度(481-504)

481-504の24個の変数に個々のサーボごとに動作速度を指定する

1=10m秒, 2=20m秒

サーボス現在状態(505-648)

505-648の変数には、ひとつのサーボごとに6変数x24サーボ=144の領域を利用

  1. 位置(10mV単位)
  2. 速度
  3. 付加(deg/sec)
  4. 温度(mA)
  5. 電圧(10mV単位)
  6. 予備​

バッファー(649-720)

通信バッファー
パソコンとの通信の際、この649-720の72個の変数(144バイト)を使用する。

SDREAD, SDWRITEの命令で V00=0 とした場合に使用する領域でもある

※ここで書いた変種一覧のオリジナルデータは、 JO-ZEROのページ にあります。

端子、スイッチ

Home

端子

ディップスイッチ

ジャイロ端子

アナログ・デジタル入力端子

RS306MD型番

Back

RS

  • ”Robot Servo”の略で、ロボット用サーボの意味
  • 現行のロボット用サーボでは、制御方式によらず全機種”RS”

A

  • サーボのサイズによる大区分で、数字1桁
  • 数が小さいほど小型で、大きいほど大型
    (※出力トルクではなく、寸法の大小)
  • 現行のロボット用サーボでは3、4、6の3種類があるが、数値についての具体的な意味はなく、あくまで大雑把な大きさ別の目安
  • ロボゼロは「3」で、どちらかというと小さ目

BB

  • 大区分の中での機種ごとの連番で、数字2桁が入る
  • 単純に01から割り振られていく
  • 開発順と発売順が異なったり、あるいは双葉電子工業から一般販売されない機種もあるため番号が抜けることがある
  • ロボゼロは「06」で、双葉電子工業から一般販売されない部類

C

  • サーボの制御方式を表すもので、アルファベット1文字が入る
  • 現在使われている文字と、それに対応する制御方式は
    • "C":コマンド方式
    • "M":コマンド方式+PWM方式両用
    • "P":PWM方式
  • ロボゼロは「M」で、コマンド方式+PWM方式両用

※RS405CBはコマンド方式とPWM方式両方に対応しているが、製品のコンセプトとしてはコマンド方式が主であるため”C”としている。

D

  • サーボの制御方式を表すもので、アルファベット1文字が入る
  • 現在使われている文字と、それに対応する制御方式は
    • "C":コマンド方式
    • "M":コマンド方式+PWM方式両用
    • "P":PWM方式
  • ロボゼロは「M」で、コマンド方式+PWM方式両用

※RS405CBはコマンド方式とPWM方式両方に対応しているが、製品のコンセプトとしてはコマンド方式が主であるため”C”としている。

E

  • 販売元のメーカーを表すもので、アルファベット1文字が入る
  • 双葉電子工業版以外が販売されていない機種については省略される
  • 現行の双葉電子工業製品は全てFutabaの”F”
  • ロボゼロは「D」で、デアゴスティーニの"D"

F

  • サーボのケーブル長とボトムケースの仕様を表すもので、数字1桁またはアルファベット1文字が入る。
  • 配線長バリエーションが無い機種については省略される
  • ボトムケースの仕様は数字とアルファベットで次のように分かれる
    1. 数字:ボトムケースにフリーホーン用軸無し
    2. アルファベット:ボトムケースにフリーホーン用軸有り
  • ケーブル長は次のようになります。
    1. 数字:ケーブルの長さ = 50×数字 [mm]
    2. アルファベット:A、B、C、・・・を1、2、3、・・・と数字に置き換え、あとは数字と同様にケーブルの長さ=50×(置き換えた数字)[mm]
      ※コネクタ部とケースの中に隠れている部分を足した長さです
  • ロボゼロはアルファベットが入るタイプで、"C"=150mm , "F"=300mmといった文字が入ると思われる

通信

Home

Under Construction...

特徴

  • PWM方式とコマンド方式に対応し、自動的に切り替わる
  • コマンド方式により、双方向通信が可能で、サーボの状況のフィードバックが得られる。

通信機能

  • レート:115200bps(工場出荷) 9600, 14400, 19200, 28800, 38400, 57600, 76800, 115200, 153600, 230400bpsに対応
  • データビット:8bit
  • パリティ:なし
  • ストップビット:1bit
  • フロー制御:なし
  • 通信プロトコル:非同期半二重

パケットの種類

  • ショートパケット:ひとつのサーボに対して送る場合
  • ロングパケット:複数のサーボに送る場合
  • リターンパケット:サーボから返信されてくるパケット

ショートパケットの構成

  • Header(2byte): 0xFAAF
  • ID(1):サーボのID サーボに割り振った1〜127のID番号 ※工場出荷時のIDは1、※255で全IDのサーボ
  • Flag(1):bit6:ROMへの書き込み,bit5:サーボの再起動,bit4:工場出荷時に,bit3-0:リターンパケットのアドレス指定
  • Address(1):サーボのメモリーのアドレス
  • Length(1):Dataのバイト数
  • Count(1):サーボの数
  • Data(可変):送信するデータ(メモリーに書き込むデータ)
  • Sum(1):チェックサム(=誤り検出)。IDからDataまでをXORした値

ロングパケットの構成

Under construction...

Under Construction...