Rcb4Class 2.0.0
Loading...
Searching...
No Matches
Rcb4BaseClass.h
Go to the documentation of this file.
1
32/*
33* Rcb4BaseClass.h
34*
35* Created: 2017/06/13 4:34:57
36* Author: Kondo Kagaku Co.,Ltd.
37*/
38
39
40#ifndef __RCB4_BASE_CLASS_H__
41#define __RCB4_BASE_CLASS_H__
42
43#include "Arduino.h"
44
50{
51//variables
52public:
53 static constexpr int Version = 220;
54
59 enum AckType: byte
60 {
61 Ack = 0x06,
62 Nack = 0x15
63 };
64
65 //コマンドの列挙型
70 enum CommandTypes: byte
71 {
72 Move = 0x00,
73 Jump = 0x0B,
74 Call = 0x0C,
75 SingleServo = 0x0F,
77 ServoParam = 0x12,
78 AckCheck = 0xFE,
79 None = 0xFF
80 };
81
82 //moveコマンドで使うサブコマンド)
87 enum SubMoveCmd: byte
88 {
89 RamToCom = 0x20,
90 ComToRam = 0x02,
91 DeviceToCom = 0x21,
92 ComToDevice = 0x12,
93 };
94
95 //RAMに保存されている先頭アドレス一覧
100 enum RamAddr: unsigned short
101 {
104 AdcRamAddress = 0x0022,
105 PioModeAddres = 0x0038,
106 PioAddress = 0x003A,
108 KrrPa1Address = 0x0352,
111
112 //StartupCmdRomAddress = 0x0444, //!< スタートアップモーションを再生するコマンドのアドレス
113 //MainLoopCmd = 0x044B //!< メインループが回る最初のアドレス
114 };
115
116 //ROMに保存されている先頭アドレス一覧)
121 enum RomAddr: long
122 {
124 MainLoopCmd = 0x044B,
125 MotionRomAddress = 0x0b80
126 };
127
128 //デバイスアドレスのオフセットの定義(基準アドレスからどれくらい離れているか)
146
147 //SIO番号の定義
152 enum SioNum:byte
153 {
154 SIO1_4 = 0x01,
155 SIO5_8 = 0x02
156 };
157
158 //KRR用のボタンの定義
164 enum KRR_BUTTON : unsigned short
165 {
167 KRR_BUTTON_UP = 0x0001,
175 KRR_BUTTON_S1 = 0x0200,
176 KRR_BUTTON_S2 = 0x0400,
177 KRR_BUTTON_S3 = 0x0800,
178 KRR_BUTTON_S4 = 0x1000,
179 KRR_BUTTON_FALSE = 0xFFFF
180 };
181
188 {
189 byte Id;
190 byte Sio;
191 int Data;
192 };
193
194 static constexpr int AdcCount = 11;
195 static constexpr int AdcSingleDataCount = 2;
196 static constexpr int AdcDataCount = AdcCount * AdcSingleDataCount;
197
198 static constexpr int MotionSingleDataCount = 2048;
199 static constexpr int MaxMotionCount = 120;
200 static constexpr long MotionDataCount = 2048 * 120;
201
202 static constexpr int IcsDeviceSize = 35;
203 static constexpr int IcsDeviceDataSize = 20;
204
205 static constexpr int CounterCount = 10;
206 static constexpr int UserParmeterCount = 20;
207
208public:
209
210
215typedef union {
217 /* @struct bit
218 @brief 各項目を指定できます
219 */
220 struct {
221 byte EnableSio :1;
225 byte Frame :2;
226 byte Baudrate :2;
227 byte ZeroFlag :1;
228 byte CarrayFlag :1;
229 byte ProgramError :1;
230 byte RFU :1;
231 byte IcsBaudrate :2;
232 byte GreenLED :1;
233 } bit;
235 /* @struct byte
236 @brief byte単位でアクセスできます
237 */
238 struct {
239 byte low;
240 byte high;
241 } byte;
242 unsigned short word;
243 } ConfigData;
244
246
247protected:
248
249
254 typedef union {
255 uint8_t byte[2];
256 uint16_t word;
257 } WordByte;
258
263 typedef union {
264 uint8_t byte[4];
265 uint16_t word[2];
266 uint32_t dword;
267 } DwordByte;
268
273 typedef union {
274 uint8_t byte[8];
275 uint16_t word[4];
276 uint32_t dword[2];
277 uint64_t qword;
278 } QwordByte;
279
280
281protected:
282
283 byte txBuf[128];
284 byte rxBuf[128];
285
286 //通信用フラグ 現在送受信中(synchronize)か判断します
287 //true:実行中 false:待機中
288 bool _isSynchronize = false;
289
290
291private:
292
293
294//functions
295public:
296
302 bool isSynchronize(){return _isSynchronize;} // (getのみ, setはクラス内でのみ可能)
303
304 bool getConfig(unsigned short *confData);
305 bool getConfig();
306
307 //command生成関数
308 int moveComToRamCmd(byte *txData,int destAddr,byte destData[],int destDataSize);
309 int moveComToRamCmd(int destAddr,byte destData[],int destDataSize);
310
311 int moveRamToComCmd(byte *txData,int scrAddr,int scrDataSize);
312 int moveRamToComCmd(int scrAddr,int scrDataSize);
313
314 int moveComToDeviceCmd (byte *txData,byte icsNum,byte offset,int data);
315 int moveComToDeviceCmd (byte *txData,byte idNum,byte sioNum,byte offset,int data);
316 int moveComToDeviceCmd (byte idNum,byte sioNum,byte offset,int data);
317 int moveComToDeviceCmd (byte icsNum,byte offset,int data);
318
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);
321 int moveComToDeviceCmd (byte icsNum,byte offset,byte dataArray[],int dataArraySize);
322 int moveComToDeviceCmd (byte idNum,byte sioNum,byte offset,byte dataArray[],int dataArraySize);
323
324 int moveDeviceToComCmd(byte *txData,byte icsNum,byte offset,byte dataSize);
325 int moveDeviceToComCmd(byte *txData,byte idNum,byte sioNum,byte offset,byte dataSize);
326 int moveDeviceToComCmd(byte icsNum, byte offset, byte dataSize);
327 int moveDeviceToComCmd(byte idNum,byte sioNum, byte offset, byte dataSize);
328
329 int callCmd(byte *txData,long romAddr);
330 int callCmd(long romAddr);
331
332 int runSingleServoCmd (byte *txData,ServoData servoData,byte frame);
333 int runSingleServoCmd (ServoData servoData,byte frame);
334
335 int runSingleServoCmd (byte *txData,byte idNum,byte sioNum,int pos,byte frame);
336 int runSingleServoCmd (byte idNum,byte sioNum,int pos,byte frame);
337
338 int runConstFrameServoCmd (byte *txData,ServoData servoDatas[],byte servoCount,byte frame);
339 int runConstFrameServoCmd (ServoData servoData[],byte servoCount,byte frame);
340
341 int setParametersBaseCmd (byte *txData, byte servoParameter,ServoData servoDatas[],byte servoCount);
342 int setParametersBaseCmd (byte servoParameter,ServoData servoData[],byte servoCount);
343
344 int setSpeedCmd (byte *txData,ServoData servoDatas[],byte servoCount);
345 int setSpeedCmd (ServoData servoData[],byte servoCount);
346
347 int setStretchCmd (byte *txData,ServoData servoDatas[],byte servoCount);
348 int setStretchCmd (ServoData servoData[],byte servoCount);
349
350 int acknowledgeCmd (byte *txData);
351 int acknowledgeCmd ();
352
353
354//データ送受信 (ここだけソースに無いので記載)///////////////////////////////////////////////////////////////////
367 virtual bool synchronize(byte txBuf[],byte txLen,byte rxBuf[],byte rxLen); //インターフェイス、子クラスで定義すること
368
369 bool checkAcknowledge();
370 bool setCheckSum(byte dataBytes[]);
371 bool checkCheckSum(byte dataBytes[]);
372 bool checkReverceCmd(byte dataBytes[],byte cmd);
373
374 //PIO
375 unsigned short getPio();
376 bool setPio (unsigned short pioData);
377 unsigned short getPioMode ();
378 bool setPioMode (unsigned short pioModeData);
379
380 //ADポート
381 unsigned short getAdData(int adPort);
382 static int adRamAddr(int adPort); //add 2025/01/21
383
384 //Single Servo
385 bool setSingleServo (byte id, byte sio,int pos,byte frame);
386 bool setSingleServo (ServoData servoData,byte frame);
387 bool setFreeSingleServo (byte id, byte sio);
388 bool setHoldSingleServo (byte id, byte sio);
389 int getSinglePos(byte id,byte sio);
390
391 //Servo
392 bool setServoPos (ServoData servoDatas[],byte servoCount,byte frame);
393 bool setFreePos (ServoData servoDatas[],byte servoCount);
394 bool setHoldPos (ServoData servoDatas[],byte servoCount);
395
396 //サーボパラメータ
397 bool setServoSpeed (ServoData servoDatas[],byte servoCount);
398 bool setServoStretch (ServoData servoDatas[],byte servoCount);
399
400 byte icsNum2id(byte id,byte sio);
401
402 //モーション再生
403 bool motionPlay(int motionNum);
404 bool setMotionNum(byte motionNum);
405 bool resetProgramCounter();
406 bool suspend(unsigned short *config);
407 bool suspend();
408 bool resume (unsigned short *configData);
409 bool resume ();
410 long motionAddr2motionNum(byte motionNum);
411 int getMotionPlayNum(void); //add 2025/01/21
412
413 //KRR受信機(受信機と同じ信号をArduinoから送信し、RCB-4をコントロールする)
414 bool setKrrData (unsigned short buttonData, byte adData[4]);
415 bool setKrrButtonData (unsigned short buttonData);
416 bool setKrrAdData (byte paPort, byte adData);
417
418 //ミキシングの設定
419 bool setServoDefaultMixing(byte id,byte sio,byte mixNum,int addr,char gain); //add 2025/01/21
420 bool setServoUserParmeterMixing(byte id,byte sio,byte mixNum,int userParamNum,char gain); //add 2025/01/21
421 bool setServoAdMixing(byte id,byte sio,byte mixNum,int adPort,char gain); //add 2025/01/21
422 bool setServoMixGain(byte id,byte sio,byte mixNum,char gain); //add 2025/01/21
423 bool resetServoMixing(byte id,byte sio,byte mixNum); //add 2025/01/21
424
425 //ユーザ変数の設定
426 bool setUserParmeter(int userParamNum,short data); //add 2025/01/21
427 short getUserParmeter(int userParamNum); //add 2025/01/21
428 static int userParmeterAddr(int userParamNum); //add 2025/01/21
429
430 //ユーザカウンタの設定
431 bool setUserCounter(int counterNum,byte data); //add 2025/01/21
432 byte getUserCounter(int counterNum); //add 2025/01/21
433 static int userCounterAddr(int counterNum); //add 2025/01/21
434
435protected:
436
437 //Rcb4BaseClass( const Rcb4BaseClass &c );
438 //Rcb4BaseClass& operator=( const Rcb4BaseClass &c );
439 byte CheckSum(byte dataBytes[]);
440 bool checkuning(byte *txData);
441 int64_t setServoNo (ServoData servoDatas[],byte servoCount);
442 bool sortServoDatas(ServoData servoDatas[],byte ServoCount);
443
444 unsigned short moveRamToComCmdSynchronize(int scrAddr,byte scrDataSize,byte rxDara[]);
445 bool moveComToRamCmdSynchronize(int scrAddr,byte destData[],int destDataSize);
446 bool SynchronizeAck(byte *txData);
447
448private:
449
450}; //Rcb4BaseClass
451
452#endif //__RCB4_BASE_CLASS_H__
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