40#ifndef __RCB4_BASE_CLASS_H__
41#define __RCB4_BASE_CLASS_H__
125 MotionRomAddress = 0x0b80
304 bool getConfig(
unsigned short *confData);
308 int moveComToRamCmd(
byte *txData,
int destAddr,
byte destData[],
int destDataSize);
319 int moveComToDeviceCmd (
byte *txData,
byte icsNum,
byte offset,
byte dataArray[],
int dataArraySize);
320 int moveComToDeviceCmd (
byte *txData,
byte idNum,
byte sioNum,
byte offset,
byte dataArray[],
int dataArraySize);
322 int moveComToDeviceCmd (
byte idNum,
byte sioNum,
byte offset,
byte dataArray[],
int dataArraySize);
325 int moveDeviceToComCmd(
byte *txData,
byte idNum,
byte sioNum,
byte offset,
byte dataSize);
329 int callCmd(
byte *txData,
long romAddr);
341 int setParametersBaseCmd (
byte *txData,
byte servoParameter,ServoData servoDatas[],
byte servoCount);
344 int setSpeedCmd (
byte *txData,ServoData servoDatas[],
byte servoCount);
345 int setSpeedCmd (ServoData servoData[],
byte servoCount);
347 int setStretchCmd (
byte *txData,ServoData servoDatas[],
byte servoCount);
376 bool setPio (
unsigned short pioData);
406 bool suspend(
unsigned short *config);
414 bool setKrrData (
unsigned short buttonData,
byte adData[4]);
432 byte getUserCounter(
int counterNum);
RCB4を動かすため初期設定やコマンドをまとめたクラスです。 このクラスをベースに派生させることで様々な通信形式に対応できるようになります。
Definition Rcb4BaseClass.h:50
byte CheckSum(byte dataBytes[])
コマンドのチェックサムを計算します
Definition Rcb4BaseClass.cpp:986
static constexpr int IcsDeviceDataSize
ICS1つのデータサイズ
Definition Rcb4BaseClass.h:203
int runSingleServoCmd(byte *txData, ServoData servoData, byte frame)
指定したサーボモータを1個だけ動かすコマンドを作成します
Definition Rcb4BaseClass.cpp:536
bool setFreePos(ServoData servoDatas[], byte servoCount)
指定したサーボモータ単体をフリーにします
Definition Rcb4BaseClass.cpp:1479
bool moveComToRamCmdSynchronize(int scrAddr, byte destData[], int destDataSize)
MoveコマンドでRAM上のデータをCOMに転送します
Definition Rcb4BaseClass.cpp:1125
static constexpr int Version
バージョン番号
Definition Rcb4BaseClass.h:53
bool setKrrButtonData(unsigned short buttonData)
KRRの領域にボタンデータを送信する(疑似的にボタンデータを送る)
Definition Rcb4BaseClass.cpp:1344
int moveComToDeviceCmd(byte *txData, byte icsNum, byte offset, int data)
COMからのデータをICSに展開するコマンドを生成する(short 2byteバージョン)
Definition Rcb4BaseClass.cpp:218
bool setHoldPos(ServoData servoDatas[], byte servoCount)
指定した複数のサーボモータにトルクをかけます
Definition Rcb4BaseClass.cpp:1500
int getSinglePos(byte id, byte sio)
指定したサーボモータのポジションデータを取得します
Definition Rcb4BaseClass.cpp:1519
unsigned short getPioMode()
現在のPIOの入出力状態を取得します
Definition Rcb4BaseClass.cpp:1226
int acknowledgeCmd()
ackコマンドの生成
Definition Rcb4BaseClass.cpp:944
int64_t setServoNo(ServoData servoDatas[], byte servoCount)
複数サーボモータにアクセスするときにコマンドで「動作させるサーボの指定」部分を作成
Definition Rcb4BaseClass.cpp:617
virtual bool synchronize(byte txBuf[], byte txLen, byte rxBuf[], byte rxLen)
ICS通信の送受信
bool resume()
モーションを再開させます
Definition Rcb4BaseClass.cpp:1705
byte icsNum2id(byte id, byte sio)
IDとSIOの番号からICS番号に変更します
Definition Rcb4BaseClass.cpp:1580
static int userCounterAddr(int counterNum)
カウンターのRAMのアドレスを取得する
Definition Rcb4BaseClass.cpp:2129
long motionAddr2motionNum(byte motionNum)
モーション番号からモーションの先頭アドレスを求めます
Definition Rcb4BaseClass.cpp:1743
bool setServoStretch(ServoData servoDatas[], byte servoCount)
指定したサーボモータのストレッチを変更します
Definition Rcb4BaseClass.cpp:1564
KRR_BUTTON
KRRが受信するボタンデータの定義
Definition Rcb4BaseClass.h:165
@ KRR_BUTTON_S2
シフト2 左奥
Definition Rcb4BaseClass.h:176
@ KRR_BUTTON_UP
↑
Definition Rcb4BaseClass.h:167
@ KRR_BUTTON_SQUARE
□
Definition Rcb4BaseClass.h:174
@ KRR_BUTTON_TRIANGLE
△
Definition Rcb4BaseClass.h:171
@ KRR_BUTTON_RIGHT
→
Definition Rcb4BaseClass.h:169
@ KRR_BUTTON_DOWN
↓
Definition Rcb4BaseClass.h:168
@ KRR_BUTTON_CROSS
×
Definition Rcb4BaseClass.h:172
@ KRR_BUTTON_CIRCLE
○
Definition Rcb4BaseClass.h:173
@ KRR_BUTTON_FALSE
エラー値(受信失敗等)
Definition Rcb4BaseClass.h:179
@ KRR_BUTTON_NONE
何も押されていない
Definition Rcb4BaseClass.h:166
@ KRR_BUTTON_S4
シフト4 右奥
Definition Rcb4BaseClass.h:178
@ KRR_BUTTON_LEFT
←
Definition Rcb4BaseClass.h:170
@ KRR_BUTTON_S1
シフト1 左手前
Definition Rcb4BaseClass.h:175
@ KRR_BUTTON_S3
シフト3 右手前
Definition Rcb4BaseClass.h:177
bool setPioMode(unsigned short pioModeData)
現在のPIOの入出力状態を変更します
Definition Rcb4BaseClass.cpp:1256
CommandTypes
RCB4のコマンドの定義
Definition Rcb4BaseClass.h:71
@ ServoParam
ストレッチやスピードを変更するためのコマンド値
Definition Rcb4BaseClass.h:77
@ Move
Move命令のコマンド値
Definition Rcb4BaseClass.h:72
@ Jump
Jump命令のコマンド値
Definition Rcb4BaseClass.h:73
@ AckCheck
ACKチェック用のコマンド値
Definition Rcb4BaseClass.h:78
@ None
何もなし
Definition Rcb4BaseClass.h:79
@ ConstFrameServo
サーボモータ複数に対してのコマンド値
Definition Rcb4BaseClass.h:76
@ SingleServo
サーボモータ1つに対して命令のコマンド値
Definition Rcb4BaseClass.h:75
@ Call
Call命令のコマンド値
Definition Rcb4BaseClass.h:74
bool setServoDefaultMixing(byte id, byte sio, byte mixNum, int addr, char gain)
指定したサーボモータのミキシングを設定する(ユーザ変数ミキシング)
Definition Rcb4BaseClass.cpp:1817
bool setUserParmeter(int userParamNum, short data)
ユーザ変数の値を設定する
Definition Rcb4BaseClass.cpp:1991
static int adRamAddr(int adPort)
指定したADポート番号のアドレスを返す
Definition Rcb4BaseClass.cpp:1295
bool checkCheckSum(byte dataBytes[])
送られてきたコマンドのチェックサムがあっているか確認します
Definition Rcb4BaseClass.cpp:1029
int setStretchCmd(byte *txData, ServoData servoDatas[], byte servoCount)
指定したサーボモータを複数個ストレッチを変えるコマンドの生成
Definition Rcb4BaseClass.cpp:895
int callCmd(byte *txData, long romAddr)
指定したアドレスにジャンプ(CALL)するコマンドを生成します
Definition Rcb4BaseClass.cpp:487
unsigned short getPio()
現在のPIOの状態を取得します
Definition Rcb4BaseClass.cpp:1182
SioNum
Sioコネクタの番号の定義
Definition Rcb4BaseClass.h:153
@ SIO5_8
SIO5-8を示す値
Definition Rcb4BaseClass.h:155
@ SIO1_4
SIO1-4を示す値
Definition Rcb4BaseClass.h:154
static constexpr int AdcCount
AD変換器のチャンネル数)
Definition Rcb4BaseClass.h:194
DeviceAddrOffset
(ICS)デバイスの設定値が格納されている各先頭のアドレスからの順番
Definition Rcb4BaseClass.h:134
@ PositionAddressOffset
RAM、ROM上のポジションデータの位置
Definition Rcb4BaseClass.h:139
@ CategoryAddressOffset
システム設定RAMアドレス(RAM)(0x00固定)
Definition Rcb4BaseClass.h:135
@ IDAddressOffset
RAM、ROM上のIDデータの位置
Definition Rcb4BaseClass.h:136
@ frameAddressOffset
RAM、ROM上のフレーム数データ(補間速度・スピード)の位置
Definition Rcb4BaseClass.h:140
@ MotorPositionAddressOffset
RAM、ROM上の実測値データの位置
Definition Rcb4BaseClass.h:138
@ TrimAddressOffset
RAM、ROM上のトリムデータの位置
Definition Rcb4BaseClass.h:137
@ Mixing2AddressOffset
(17)RAM、ROM上のミキシング2データの位置
Definition Rcb4BaseClass.h:143
@ Mixing1AddressOffset
(14)RAM、ROM上のミキシング1データの位置
Definition Rcb4BaseClass.h:141
@ Mixing1RatioAddressOffset
(16)RAM、ROM上のミキシング1倍率データの位置
Definition Rcb4BaseClass.h:142
@ Mixing2RatioAddressOffset
(19)RAM、ROM上のミキシング2データの位置
Definition Rcb4BaseClass.h:144
int moveRamToComCmd(byte *txData, int scrAddr, int scrDataSize)
RAMのデータをCOMに送るコマンドを生成する
Definition Rcb4BaseClass.cpp:163
int runConstFrameServoCmd(byte *txData, ServoData servoDatas[], byte servoCount, byte frame)
指定したサーボモータを複数個動かすコマンドの生成
Definition Rcb4BaseClass.cpp:717
bool resetProgramCounter()
プロフラムカウンタをリセットします
Definition Rcb4BaseClass.cpp:1681
bool checkuning(byte *txData)
データ通信中で、送信バッファに値を入れようとしているかチェックする
Definition Rcb4BaseClass.cpp:84
AckType
ACKの値
Definition Rcb4BaseClass.h:60
@ Nack
NACKの値 (0x15)
Definition Rcb4BaseClass.h:62
@ Ack
ACKの値 (0x06)
Definition Rcb4BaseClass.h:61
bool setServoPos(ServoData servoDatas[], byte servoCount, byte frame)
指定したサーボモータ複数を動作させます
Definition Rcb4BaseClass.cpp:1461
bool _isSynchronize
現在送受信中(synchronize)か判断します true:実行中 false:待機中
Definition Rcb4BaseClass.h:288
byte txBuf[128]
送信用バッファ
Definition Rcb4BaseClass.h:283
SubMoveCmd
moveコマンドのサブコマンドの定義
Definition Rcb4BaseClass.h:88
@ DeviceToCom
Device(ICS)の値をCOMへ
Definition Rcb4BaseClass.h:91
@ ComToDevice
COMからの数値をDevice(ICS)へ
Definition Rcb4BaseClass.h:92
@ ComToRam
COMからの数値をRAMへ
Definition Rcb4BaseClass.h:90
@ RamToCom
RAMの値をCOMへ
Definition Rcb4BaseClass.h:89
bool getConfig()
RCB4のコンフィグデータを読み取る
Definition Rcb4BaseClass.cpp:39
static constexpr int CounterCount
カウンターの数
Definition Rcb4BaseClass.h:205
bool resetServoMixing(byte id, byte sio, byte mixNum)
指定したサーボモータのミキシングをOFFにします
Definition Rcb4BaseClass.cpp:1948
int moveDeviceToComCmd(byte *txData, byte icsNum, byte offset, byte dataSize)
ICSのデータをCOMに転送するコマンドを生成する
Definition Rcb4BaseClass.cpp:402
int moveComToRamCmd(byte *txData, int destAddr, byte destData[], int destDataSize)
COMからRAMにデータを転送するコマンドを生成する
Definition Rcb4BaseClass.cpp:106
bool setServoUserParmeterMixing(byte id, byte sio, byte mixNum, int userParamNum, char gain)
指定したサーボモータのミキシングを設定する(ユーザ変数ミキシング)
Definition Rcb4BaseClass.cpp:1861
bool checkReverceCmd(byte dataBytes[], byte cmd)
返信データが簡易的チェックをします
Definition Rcb4BaseClass.cpp:1060
static constexpr int IcsDeviceSize
ICSのデバイスの数定義 本当は36だが、KRRは含めない
Definition Rcb4BaseClass.h:202
RamAddr
RAMに保存されているアドレスの一覧
Definition Rcb4BaseClass.h:101
@ ProgramCounterRamAddress
プログラムカウンター設定アドレス(RAM)(0x02固定)
Definition Rcb4BaseClass.h:103
@ KrrButtonDataAddress
KRRのボタンデータが記録されているアドレス
Definition Rcb4BaseClass.h:107
@ PioModeAddres
PIOの入出力設定
Definition Rcb4BaseClass.h:105
@ PioAddress
PIOポート値
Definition Rcb4BaseClass.h:106
@ ConfigRamAddress
システム設定RAMアドレス(RAM)(0x00固定)
Definition Rcb4BaseClass.h:102
@ KrrPa1Address
PA1データ(この後2byteずつデータが続く)
Definition Rcb4BaseClass.h:108
@ AdcRamAddress
AD変換器0の値のアドレス(0x22固定)
Definition Rcb4BaseClass.h:104
@ UserParmeterRamAddress
ユーザ変数1のアドレス(この後2byteずつデータが続く)
Definition Rcb4BaseClass.h:110
@ CounterRamAddress
Counter1のアドレス(この後1byteずつデータが続く)
Definition Rcb4BaseClass.h:109
static constexpr int MotionSingleDataCount
1モーションあたりのデータバイト数
Definition Rcb4BaseClass.h:198
unsigned short getAdData(int adPort)
現在指定したADの値を取得します
Definition Rcb4BaseClass.cpp:1273
int setSpeedCmd(byte *txData, ServoData servoDatas[], byte servoCount)
指定したサーボモータを複数個スピードを変えるコマンドの生成
Definition Rcb4BaseClass.cpp:859
bool setServoAdMixing(byte id, byte sio, byte mixNum, int adPort, char gain)
指定したサーボモータのミキシングを設定する(ユーザ変数ミキシング)
Definition Rcb4BaseClass.cpp:1883
bool setKrrData(unsigned short buttonData, byte adData[4])
KRRの領域にデータをすべて送信する(疑似的にボタンデータを送る)
Definition Rcb4BaseClass.cpp:1316
static constexpr int UserParmeterCount
ユーザ変数のカス
Definition Rcb4BaseClass.h:206
bool checkAcknowledge()
ackコマンドを送信
Definition Rcb4BaseClass.cpp:958
bool setUserCounter(int counterNum, byte data)
ユーザカウンタを設定する
Definition Rcb4BaseClass.cpp:2078
static constexpr int AdcSingleDataCount
AD変換器単体のデータバイト数
Definition Rcb4BaseClass.h:195
static constexpr long MotionDataCount
モーションデータ全体の最大バイト数
Definition Rcb4BaseClass.h:200
bool setServoSpeed(ServoData servoDatas[], byte servoCount)
指定したサーボモータのスピードを変更します
Definition Rcb4BaseClass.cpp:1546
static constexpr int AdcDataCount
AD変換器全体のデータバイト数
Definition Rcb4BaseClass.h:196
unsigned short moveRamToComCmdSynchronize(int scrAddr, byte scrDataSize, byte rxDara[])
MoveコマンドでRAM上のデータをCOMに転送します
Definition Rcb4BaseClass.cpp:1089
static int userParmeterAddr(int userParamNum)
ユーザ変数のRAMアドレスを取得する
Definition Rcb4BaseClass.cpp:2054
bool sortServoDatas(ServoData servoDatas[], byte ServoCount)
複数サーボモータにアクセスするときにサーボの順番の指定があるのでソートする
Definition Rcb4BaseClass.cpp:646
short getUserParmeter(int userParamNum)
指定したユーザ変数の値を取得する
Definition Rcb4BaseClass.cpp:2019
bool setCheckSum(byte dataBytes[])
コマンドのチェックサムを計算し、最後尾にいれます
Definition Rcb4BaseClass.cpp:1006
static constexpr int MaxMotionCount
モーションの最大数)
Definition Rcb4BaseClass.h:199
bool setFreeSingleServo(byte id, byte sio)
指定したサーボモータ単体をフリーにします
Definition Rcb4BaseClass.cpp:1426
int getMotionPlayNum(void)
現在動いているモーションの番号を取得します
Definition Rcb4BaseClass.cpp:1764
bool setPio(unsigned short pioData)
現在のPIOの状態を変更します
Definition Rcb4BaseClass.cpp:1211
byte rxBuf[128]
受信用バッファ
Definition Rcb4BaseClass.h:284
bool setKrrAdData(byte paPort, byte adData)
KRRの領域にボタンデータを送信する(疑似的にボタンデータを送る)
Definition Rcb4BaseClass.cpp:1371
int setParametersBaseCmd(byte *txData, byte servoParameter, ServoData servoDatas[], byte servoCount)
指定したサーボモータを複数個パラメータを変えるコマンドの生成
Definition Rcb4BaseClass.cpp:791
bool setMotionNum(byte motionNum)
指定したモーションにジャンプします
Definition Rcb4BaseClass.cpp:1664
ConfigData configData
コンフィグデータの格納場所
Definition Rcb4BaseClass.h:245
bool suspend()
モーションを一時停止させます
Definition Rcb4BaseClass.cpp:1624
bool setHoldSingleServo(byte id, byte sio)
指定したサーボモータ単体にトルクをかけます
Definition Rcb4BaseClass.cpp:1443
bool setServoMixGain(byte id, byte sio, byte mixNum, char gain)
指定したサーボモータのミキシングゲインのみを変更します
Definition Rcb4BaseClass.cpp:1904
bool motionPlay(int motionNum)
指定したモーションを再生させます
Definition Rcb4BaseClass.cpp:1601
bool setSingleServo(byte id, byte sio, int pos, byte frame)
指定したサーボモータ単体を動作させます
Definition Rcb4BaseClass.cpp:1394
bool SynchronizeAck(byte *txData)
何かしらコマンドを送って、ACKが返ってくるか確認
Definition Rcb4BaseClass.cpp:1159
bool isSynchronize()
通信中かどうか返す関数
Definition Rcb4BaseClass.h:302
RomAddr
ROMに保存されているアドレスの一覧
Definition Rcb4BaseClass.h:122
@ MainLoopCmd
メインループが回る最初のアドレス
Definition Rcb4BaseClass.h:124
@ StartupCmdRomAddress
スタートアップモーションを再生するコマンドのアドレス
Definition Rcb4BaseClass.h:123
サーボモータのIDおよびSIOとポジションの何かしらデータを格納します。
Definition Rcb4BaseClass.h:188
byte Id
ICS機器のID番号の格納場所
Definition Rcb4BaseClass.h:189
int Data
ポジションデータやその他データを入れる
Definition Rcb4BaseClass.h:191
byte Sio
sioの番号(1 or 2)
Definition Rcb4BaseClass.h:190
2byteのコンフィグデータを容易にアクセスできるよう共用体にします
Definition Rcb4BaseClass.h:215
byte EnableServoResponse
b2: 補間動作終了メッセージスイッチ
Definition Rcb4BaseClass.h:223
byte Baudrate
b6, b7 COMボーレートレジスタ[6:7]※何かとかぶらないか確認
Definition Rcb4BaseClass.h:226
byte ProgramError
b10 プログラムエラーフラグ
Definition Rcb4BaseClass.h:229
byte GreenLED
b15 LEDレジスタ
Definition Rcb4BaseClass.h:232
byte EnableReferenceTable
b3:ベクタジャンプスイッチ
Definition Rcb4BaseClass.h:224
byte EnableRunEeprom
b1: EEPROMプログラム実行スイッチ
Definition Rcb4BaseClass.h:222
unsigned short word
16ビットWORDデータ(ConfigDataを一度にアクセスできるように)
Definition Rcb4BaseClass.h:242
byte CarrayFlag
b9 キャリーフラグ
Definition Rcb4BaseClass.h:228
byte Frame
b4, b5 出力周期レジスタ[4:5]
Definition Rcb4BaseClass.h:225
byte ZeroFlag
b8 ゼロフラグ
Definition Rcb4BaseClass.h:227
byte EnableSio
b0:ICSスイッチ
Definition Rcb4BaseClass.h:221
byte low
low 8 bit
Definition Rcb4BaseClass.h:239
byte IcsBaudrate
b13,b14 ICSスイッチボーレートレジスタ[13:14] ※何かとかぶらないか確認
Definition Rcb4BaseClass.h:231
byte high
high 8 bit
Definition Rcb4BaseClass.h:240
byte RFU
b11,b12 未使用
Definition Rcb4BaseClass.h:230
4byte(long型)のデータをアクセスできるよう共用体にします
Definition Rcb4BaseClass.h:263
uint32_t dword
DoubleWord(long)
Definition Rcb4BaseClass.h:266
8byte(long long型)のデータをアクセスできるよう共用体にします
Definition Rcb4BaseClass.h:273
uint64_t qword
QuadWord(long long)
Definition Rcb4BaseClass.h:277
2byte(short型)のデータをアクセスできるよう共用体にします
Definition Rcb4BaseClass.h:254
uint16_t word
WordByte(short)
Definition Rcb4BaseClass.h:256