MDX-15,20の制御用library

Committer:
suupen
Date:
Sun Nov 27 12:14:47 2016 +0000
Revision:
6:b61356230acf
Parent:
5:bd414d8e483f
Child:
7:54af1616e69e
motor control??????????;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
suupen 1:1751fee99a0d 1 #include "MDX20.h"
suupen 1:1751fee99a0d 2 #include "BufferedSerial.h"
suupen 1:1751fee99a0d 3
suupen 6:b61356230acf 4 #define DEBUG
suupen 6:b61356230acf 5 #ifdef DEBUG
suupen 6:b61356230acf 6 #define DEBUG_PRINT(...) printf(__VA_ARGS__)
suupen 6:b61356230acf 7 #else
suupen 6:b61356230acf 8 #define DEBUG_PRINT(...)
suupen 6:b61356230acf 9 #endif // DEBUG
suupen 6:b61356230acf 10
suupen 6:b61356230acf 11
suupen 6:b61356230acf 12 LocalFileSystem local("local");
suupen 1:1751fee99a0d 13
suupen 1:1751fee99a0d 14 MDX20::MDX20(PinName tx, PinName rx, PinName cts) : _serial(tx, rx), _cts(cts, PullUp)
suupen 1:1751fee99a0d 15 {
suupen 1:1751fee99a0d 16
suupen 1:1751fee99a0d 17 _serial.baud(9600);
suupen 1:1751fee99a0d 18 _serial.format(8,Serial::None,1);
suupen 6:b61356230acf 19
suupen 6:b61356230acf 20
suupen 6:b61356230acf 21
suupen 1:1751fee99a0d 22 }
suupen 1:1751fee99a0d 23
suupen 1:1751fee99a0d 24 MDX20::~MDX20()
suupen 1:1751fee99a0d 25 {
suupen 1:1751fee99a0d 26 }
suupen 1:1751fee99a0d 27
suupen 2:8446eb1774c4 28 void MDX20::clearPositon(void)
suupen 2:8446eb1774c4 29 {
suupen 2:8446eb1774c4 30 D_position[Z_x] = 0;
suupen 2:8446eb1774c4 31 D_position[Z_y] = 0;
suupen 2:8446eb1774c4 32 D_position[Z_z] = 0;
suupen 2:8446eb1774c4 33 }
suupen 3:3bf2936b8d9b 34
suupen 2:8446eb1774c4 35 void MDX20::answerPositon(int16_t *position)
suupen 2:8446eb1774c4 36 {
suupen 2:8446eb1774c4 37 *(position + Z_x) = D_position[Z_x];
suupen 2:8446eb1774c4 38 *(position + Z_y) = D_position[Z_y];
suupen 2:8446eb1774c4 39 *(position + Z_z) = D_position[Z_z];
suupen 2:8446eb1774c4 40
suupen 3:3bf2936b8d9b 41 }
suupen 3:3bf2936b8d9b 42
suupen 3:3bf2936b8d9b 43 void MDX20::answerPositonMillimeter(float *position)
suupen 3:3bf2936b8d9b 44 {
suupen 3:3bf2936b8d9b 45 *(position + Z_x) = (float)D_position[Z_x] * countToMillimeter;
suupen 3:3bf2936b8d9b 46 *(position + Z_y) = (float)D_position[Z_y] * countToMillimeter;
suupen 3:3bf2936b8d9b 47 *(position + Z_z) = (float)D_position[Z_z] * countToMillimeter;
suupen 3:3bf2936b8d9b 48
suupen 3:3bf2936b8d9b 49 }
suupen 3:3bf2936b8d9b 50
suupen 3:3bf2936b8d9b 51
suupen 3:3bf2936b8d9b 52 void MDX20::integralPosition(char *str)
suupen 3:3bf2936b8d9b 53 {
suupen 3:3bf2936b8d9b 54 char strData[100];
suupen 3:3bf2936b8d9b 55 char *p;
suupen 3:3bf2936b8d9b 56 static uint8_t AorR = 'A'; // 'A'=absolute 'R'=relative
suupen 3:3bf2936b8d9b 57
suupen 3:3bf2936b8d9b 58 strcpy(strData, str);
suupen 3:3bf2936b8d9b 59
suupen 3:3bf2936b8d9b 60 if( 0 == strncmp("^PA", strData, 3)) {
suupen 3:3bf2936b8d9b 61 AorR = 'A';
suupen 5:bd414d8e483f 62 return;
suupen 3:3bf2936b8d9b 63 } else if( 0 == strncmp("^PR", strData, 3)) {
suupen 3:3bf2936b8d9b 64 AorR = 'R';
suupen 6:b61356230acf 65 *(str + 2) = 'A'; // MDX-20に送信するときは相対値から絶対値にする(この関数の中で相対値から絶対値にしているため)
suupen 5:bd414d8e483f 66 return;
suupen 5:bd414d8e483f 67 }
suupen 5:bd414d8e483f 68
suupen 5:bd414d8e483f 69 // コマンド中の","を" "に置き換える
suupen 5:bd414d8e483f 70 while ((p = strchr(strData, ','))!=NULL) *p = ' ';
suupen 5:bd414d8e483f 71
suupen 6:b61356230acf 72 int16_t a[3] = {0,0,0};
suupen 5:bd414d8e483f 73
suupen 5:bd414d8e483f 74 if(strncmp(str, "!ZZ",3) == 0) {
suupen 6:b61356230acf 75 sscanf((strData + 3), "%d %d %d", &a[0], &a[1], &a[2]);
suupen 5:bd414d8e483f 76 } else if(strncmp(str, "Z",1) == 0) {
suupen 6:b61356230acf 77 sscanf((strData + 1), "%d %d %d", &a[0], &a[1], &a[2]);
suupen 5:bd414d8e483f 78 } else if(strncmp(str, "^PU",3) == 0) {
suupen 6:b61356230acf 79 sscanf((strData + 3), "%d %d", &a[0], &a[1]);
suupen 6:b61356230acf 80 a[2] = SHRT_MAX;
suupen 5:bd414d8e483f 81 } else if(strncmp(str, "^PD",3) == 0) {
suupen 6:b61356230acf 82 sscanf((strData + 3), "%d %d", &a[0], &a[1]);
suupen 6:b61356230acf 83 a[2] = SHRT_MAX;
suupen 6:b61356230acf 84 } else if(strncmp(str, "!ZM",3) == 0) {
suupen 6:b61356230acf 85 sscanf((strData + 3), "%d", &a[2]);
suupen 6:b61356230acf 86 a[0] = SHRT_MAX;
suupen 6:b61356230acf 87 a[1] = SHRT_MAX;
suupen 6:b61356230acf 88
suupen 6:b61356230acf 89 } else {
suupen 6:b61356230acf 90 return;
suupen 3:3bf2936b8d9b 91 }
suupen 3:3bf2936b8d9b 92
suupen 3:3bf2936b8d9b 93 if(AorR == 'A') {
suupen 6:b61356230acf 94 if(a[0] != SHRT_MAX) {
suupen 6:b61356230acf 95 D_position[Z_x] = a[0] + D_userOriginPosition[Z_x];
suupen 6:b61356230acf 96 }
suupen 6:b61356230acf 97 if(a[1] != SHRT_MAX) {
suupen 6:b61356230acf 98 D_position[Z_y] = a[1] + D_userOriginPosition[Z_y];
suupen 6:b61356230acf 99 }
suupen 6:b61356230acf 100 if(a[2] != SHRT_MAX) {
suupen 6:b61356230acf 101 D_position[Z_z] = a[2] + D_userOriginPosition[Z_z];
suupen 5:bd414d8e483f 102 }
suupen 3:3bf2936b8d9b 103 } else {
suupen 6:b61356230acf 104 // controler axis move data change to absolute from relative
suupen 6:b61356230acf 105 if(a[0] != SHRT_MAX) {
suupen 6:b61356230acf 106 D_position[Z_x] += a[0];
suupen 6:b61356230acf 107 }
suupen 6:b61356230acf 108 if(a[1] != SHRT_MAX) {
suupen 6:b61356230acf 109 D_position[Z_y] += a[1];
suupen 6:b61356230acf 110 }
suupen 6:b61356230acf 111 if(a[2] != SHRT_MAX) {
suupen 6:b61356230acf 112 D_position[Z_z] += a[2];
suupen 5:bd414d8e483f 113 }
suupen 3:3bf2936b8d9b 114 }
suupen 6:b61356230acf 115 translationToControlerAxisMoveDataFromRMLAxisMoveData(str);
suupen 6:b61356230acf 116 // DEBUG_PRINT("x=%d y=%d z=%d \n", D_position[Z_x], D_position[Z_y], D_position[Z_z]);
suupen 3:3bf2936b8d9b 117 wait(0.1);
suupen 3:3bf2936b8d9b 118 }
suupen 3:3bf2936b8d9b 119
suupen 6:b61356230acf 120 void MDX20::translationToControlerAxisMoveDataFromRMLAxisMoveData(char *str)
suupen 6:b61356230acf 121 {
suupen 6:b61356230acf 122 char buffer[50];
suupen 6:b61356230acf 123
suupen 6:b61356230acf 124 if(strncmp(str, "!ZZ",3) == 0) {
suupen 6:b61356230acf 125 sprintf(buffer,"!ZZ%d,%d,%d;\r\n",D_position[Z_x], D_position[Z_y], D_position[Z_z]);
suupen 6:b61356230acf 126 strcpy(str, buffer);
suupen 6:b61356230acf 127 } else if(strncmp(str, "Z",1) == 0) {
suupen 6:b61356230acf 128 sprintf(buffer,"Z%d,%d,%d;\r\n",D_position[Z_x], D_position[Z_y], D_position[Z_z]);
suupen 6:b61356230acf 129 strcpy(str, buffer);
suupen 6:b61356230acf 130 } else if(strncmp(str, "^PU",3) == 0) {
suupen 6:b61356230acf 131 sprintf(buffer,"^PU%d,%d;\r\n",D_position[Z_x], D_position[Z_y]);
suupen 6:b61356230acf 132 strcpy(str, buffer);
suupen 6:b61356230acf 133 } else if(strncmp(str, "^PD",3) == 0) {
suupen 6:b61356230acf 134 sprintf(buffer,"^PD%d,%d;\r\n",D_position[Z_x], D_position[Z_y]);
suupen 6:b61356230acf 135 strcpy(str, buffer);
suupen 6:b61356230acf 136 } else if(strncmp(str, "!ZM",3) == 0) {
suupen 6:b61356230acf 137 sprintf(buffer,"!ZM%d;\r\n",D_position[Z_z]);
suupen 6:b61356230acf 138 strcpy(str, buffer);
suupen 6:b61356230acf 139 } else {
suupen 6:b61356230acf 140 // nothing
suupen 6:b61356230acf 141 }
suupen 6:b61356230acf 142 }
suupen 6:b61356230acf 143
suupen 6:b61356230acf 144
suupen 3:3bf2936b8d9b 145 uint8_t MDX20::xyOrigin(void)
suupen 2:8446eb1774c4 146 {
suupen 6:b61356230acf 147 char buffer[50];
suupen 3:3bf2936b8d9b 148 uint8_t ans;
suupen 3:3bf2936b8d9b 149 D_userOriginPosition[Z_x] = D_position[Z_x];
suupen 3:3bf2936b8d9b 150 D_userOriginPosition[Z_y] = D_position[Z_y];
suupen 5:bd414d8e483f 151 // D_userOriginPosition[Z_z] = 0;
suupen 6:b61356230acf 152 FILE *fp;
suupen 3:3bf2936b8d9b 153
suupen 6:b61356230acf 154 fp = fopen("/local/OriginX.ini", "w");
suupen 6:b61356230acf 155 sprintf(buffer,"%d",D_userOriginPosition[Z_x]);
suupen 6:b61356230acf 156 fprintf(fp, buffer);
suupen 6:b61356230acf 157 fclose(fp);
suupen 6:b61356230acf 158
suupen 6:b61356230acf 159 fp = fopen("/local/OriginY.ini", "w");
suupen 6:b61356230acf 160 sprintf(buffer,"%d",D_userOriginPosition[Z_y]);
suupen 6:b61356230acf 161 fprintf(fp, buffer);
suupen 6:b61356230acf 162 fclose(fp);
suupen 3:3bf2936b8d9b 163
suupen 3:3bf2936b8d9b 164 return ans;
suupen 3:3bf2936b8d9b 165 }
suupen 3:3bf2936b8d9b 166
suupen 3:3bf2936b8d9b 167 uint8_t MDX20::zOrigin(void)
suupen 3:3bf2936b8d9b 168 {
suupen 6:b61356230acf 169 char buffer[50];
suupen 3:3bf2936b8d9b 170 uint8_t ans;
suupen 5:bd414d8e483f 171 D_userOriginPosition[Z_z] = D_position[Z_z];
suupen 6:b61356230acf 172
suupen 6:b61356230acf 173 FILE *fp = fopen("/local/OriginZ.ini", "w");
suupen 6:b61356230acf 174 sprintf(buffer,"%d",D_userOriginPosition[Z_z]);
suupen 6:b61356230acf 175 fprintf(fp, buffer);
suupen 6:b61356230acf 176 fclose(fp);
suupen 3:3bf2936b8d9b 177
suupen 5:bd414d8e483f 178 /* Z0 command use
suupen 5:bd414d8e483f 179 sprintf(buffer, "!ZO%d;",0); // 今いる位置をZ原点にするので"0"を設定する
suupen 5:bd414d8e483f 180 // printf("%s\r\n",buffer);
suupen 5:bd414d8e483f 181 ans &= sendData(buffer);
suupen 5:bd414d8e483f 182 */
suupen 3:3bf2936b8d9b 183 return ans;
suupen 3:3bf2936b8d9b 184 }
suupen 2:8446eb1774c4 185
suupen 1:1751fee99a0d 186 /**
suupen 1:1751fee99a0d 187 * MDX-15/20へのデータ送信
suupen 1:1751fee99a0d 188 * @@para *data : データ一行の先頭アドレス
suupen 1:1751fee99a0d 189 * @@para uint8_t : 0:送信キャンセル 1:送信完了
suupen 1:1751fee99a0d 190 */
suupen 1:1751fee99a0d 191 uint8_t MDX20::sendData(char* data)
suupen 1:1751fee99a0d 192 {
suupen 1:1751fee99a0d 193 uint8_t ans = 0; // 0:送信キャンセル 1:送信完了
suupen 6:b61356230acf 194 char buffer[50];
suupen 6:b61356230acf 195 strcpy(buffer, data);
suupen 1:1751fee99a0d 196
suupen 2:8446eb1774c4 197 while(_cts != 0) {}
suupen 2:8446eb1774c4 198 wait(0.1); // このwait timeがないとMDX-20からのwait指示を読み飛ばす
suupen 3:3bf2936b8d9b 199
suupen 6:b61356230acf 200 if(strncmp(buffer, "!MC0", 4) == 0) {
suupen 6:b61356230acf 201 motorState = false;
suupen 6:b61356230acf 202 } else if(strncmp(buffer, "!MC1", 4) == 0) {
suupen 6:b61356230acf 203 motorState = true;
suupen 6:b61356230acf 204 } else {
suupen 6:b61356230acf 205 // nothing
suupen 6:b61356230acf 206 }
suupen 6:b61356230acf 207
suupen 6:b61356230acf 208 DEBUG_PRINT("send = %s\r\n",buffer);
suupen 6:b61356230acf 209 integralPosition(buffer);
suupen 6:b61356230acf 210 _serial.printf("%s\r\n",buffer);
suupen 6:b61356230acf 211
suupen 2:8446eb1774c4 212 ans = 1;
suupen 2:8446eb1774c4 213
suupen 1:1751fee99a0d 214 return (ans);
suupen 1:1751fee99a0d 215 }
suupen 1:1751fee99a0d 216
suupen 6:b61356230acf 217
suupen 3:3bf2936b8d9b 218 uint8_t MDX20::reciveData(void)
suupen 3:3bf2936b8d9b 219 {
suupen 3:3bf2936b8d9b 220 char ans = 0;
suupen 3:3bf2936b8d9b 221 while(_serial.readable()) {
suupen 3:3bf2936b8d9b 222 ans = _serial.getc();
suupen 3:3bf2936b8d9b 223 }
suupen 3:3bf2936b8d9b 224 return ans;
suupen 3:3bf2936b8d9b 225 }
suupen 3:3bf2936b8d9b 226
suupen 1:1751fee99a0d 227 int MDX20::putc(int c)
suupen 1:1751fee99a0d 228 {
suupen 1:1751fee99a0d 229 _serial.putc(c);
suupen 1:1751fee99a0d 230 return c;
suupen 1:1751fee99a0d 231 }
suupen 1:1751fee99a0d 232
suupen 2:8446eb1774c4 233 uint8_t MDX20::initial(void)
suupen 2:8446eb1774c4 234 {
suupen 2:8446eb1774c4 235 uint8_t ans;
suupen 6:b61356230acf 236 char buffer[50];
suupen 2:8446eb1774c4 237 clearPositon();
suupen 6:b61356230acf 238 FILE *fp;
suupen 6:b61356230acf 239
suupen 6:b61356230acf 240 fp = fopen("/local/ORIGINX.INI", "r");
suupen 6:b61356230acf 241 if ( fp != NULL ) {
suupen 6:b61356230acf 242 if(NULL != fgets(buffer, sizeof(buffer), fp)) {
suupen 6:b61356230acf 243 D_userOriginPosition[Z_x] = atoi(buffer);
suupen 6:b61356230acf 244 } else {
suupen 6:b61356230acf 245 // nothing
suupen 6:b61356230acf 246 }
suupen 6:b61356230acf 247 fclose(fp);
suupen 6:b61356230acf 248
suupen 6:b61356230acf 249 } else {
suupen 6:b61356230acf 250 // nothing
suupen 6:b61356230acf 251 }
suupen 6:b61356230acf 252
suupen 6:b61356230acf 253 fp = fopen("/local/ORIGINY.INI", "r");
suupen 6:b61356230acf 254 if ( fp != NULL ) {
suupen 6:b61356230acf 255 if(NULL != fgets(buffer, sizeof(buffer), fp)) {
suupen 6:b61356230acf 256 D_userOriginPosition[Z_y] = atoi(buffer);
suupen 6:b61356230acf 257 } else {
suupen 6:b61356230acf 258 // nothing
suupen 6:b61356230acf 259 }
suupen 6:b61356230acf 260 fclose(fp);
suupen 6:b61356230acf 261
suupen 6:b61356230acf 262
suupen 6:b61356230acf 263 } else {
suupen 6:b61356230acf 264 // nothing
suupen 6:b61356230acf 265 }
suupen 6:b61356230acf 266
suupen 6:b61356230acf 267 fp = fopen("/local/ORIGINZ.INI", "r");
suupen 6:b61356230acf 268 if ( fp != NULL ) {
suupen 6:b61356230acf 269 if(NULL != fgets(buffer, sizeof(buffer), fp)) {
suupen 6:b61356230acf 270 D_userOriginPosition[Z_z] = atoi(buffer);
suupen 6:b61356230acf 271 } else {
suupen 6:b61356230acf 272 // nothing
suupen 6:b61356230acf 273 }
suupen 6:b61356230acf 274 fclose(fp);
suupen 6:b61356230acf 275
suupen 6:b61356230acf 276 } else {
suupen 6:b61356230acf 277 // nothing
suupen 6:b61356230acf 278 }
suupen 6:b61356230acf 279
suupen 6:b61356230acf 280 ans &= sendData("^IN;");
suupen 6:b61356230acf 281 ans &= sendData("!MC0;");
suupen 6:b61356230acf 282 ans &= sendData("!ZO0;");
suupen 6:b61356230acf 283 ans &= sendData("!ZO0;"); // Z axis origin initialaize
suupen 6:b61356230acf 284 ans &= sendData("^PA;");
suupen 6:b61356230acf 285
suupen 6:b61356230acf 286 sprintf(buffer,"Z%d,%d,%d;",-D_userOriginPosition[Z_x], -D_userOriginPosition[Z_y], -D_userOriginPosition[Z_z]);
suupen 6:b61356230acf 287
suupen 6:b61356230acf 288 ans &= sendData(buffer);
suupen 6:b61356230acf 289
suupen 2:8446eb1774c4 290 return (ans);
suupen 2:8446eb1774c4 291 }
suupen 2:8446eb1774c4 292
suupen 4:b01a67ab40cf 293 uint8_t MDX20::motorOff(void)
suupen 4:b01a67ab40cf 294 {
suupen 4:b01a67ab40cf 295 uint8_t ans;
suupen 6:b61356230acf 296 ans &= sendData("!MC0;");
suupen 4:b01a67ab40cf 297 return (ans);
suupen 4:b01a67ab40cf 298 }
suupen 4:b01a67ab40cf 299
suupen 6:b61356230acf 300 uint8_t MDX20::motorOn(void)
suupen 6:b61356230acf 301 {
suupen 6:b61356230acf 302 uint8_t ans;
suupen 6:b61356230acf 303 ans &= sendData("!MC1;");
suupen 6:b61356230acf 304 return (ans);
suupen 6:b61356230acf 305 }
suupen 6:b61356230acf 306
suupen 6:b61356230acf 307
suupen 3:3bf2936b8d9b 308 uint8_t MDX20::userOriginInitial(void)
suupen 3:3bf2936b8d9b 309 {
suupen 6:b61356230acf 310 char buffer[50];
suupen 3:3bf2936b8d9b 311 uint8_t ans;
suupen 3:3bf2936b8d9b 312
suupen 6:b61356230acf 313 ans &= sendData("^PA;");
suupen 6:b61356230acf 314 ans &= sendData("!MC0;");
suupen 3:3bf2936b8d9b 315
suupen 6:b61356230acf 316 sprintf(buffer, "Z%d,%d,%d;",0, 0, 0);
suupen 3:3bf2936b8d9b 317 ans &= sendData(buffer);
suupen 3:3bf2936b8d9b 318
suupen 3:3bf2936b8d9b 319 return ans;
suupen 3:3bf2936b8d9b 320 }
suupen 3:3bf2936b8d9b 321
suupen 2:8446eb1774c4 322 uint8_t MDX20::final(void)
suupen 2:8446eb1774c4 323 {
suupen 3:3bf2936b8d9b 324 uint8_t ans;
suupen 6:b61356230acf 325 ans &= sendData("!MC0;");
suupen 6:b61356230acf 326 ans &= sendData("^PA;");
suupen 6:b61356230acf 327 ans &= sendData("Z0,0,0;");
suupen 2:8446eb1774c4 328 clearPositon();
suupen 6:b61356230acf 329 ans &= sendData("^IN;");
suupen 2:8446eb1774c4 330 return (ans);
suupen 3:3bf2936b8d9b 331 }
suupen 5:bd414d8e483f 332 /*
suupen 2:8446eb1774c4 333 uint8_t MDX20::zeroSetting(void)
suupen 2:8446eb1774c4 334 {
suupen 2:8446eb1774c4 335 uint8_t ans;
suupen 2:8446eb1774c4 336
suupen 2:8446eb1774c4 337 ans &= sendData("!X00");
suupen 2:8446eb1774c4 338 ans &= sendData("!Y00");
suupen 2:8446eb1774c4 339 ans &= sendData("!Z00");
suupen 2:8446eb1774c4 340 clearPositon();
suupen 2:8446eb1774c4 341 return (ans);
suupen 2:8446eb1774c4 342 }
suupen 5:bd414d8e483f 343 */
suupen 5:bd414d8e483f 344
suupen 2:8446eb1774c4 345 uint8_t MDX20::XYZMove(int16_t x, int16_t y, int16_t z)
suupen 2:8446eb1774c4 346 {
suupen 2:8446eb1774c4 347 uint8_t ans;
suupen 6:b61356230acf 348 char buffer[50];
suupen 2:8446eb1774c4 349
suupen 6:b61356230acf 350 ans &= sendData("!MC0;");
suupen 6:b61356230acf 351 strcpy(buffer, "^PR;");
suupen 6:b61356230acf 352 ans &= sendData(buffer);
suupen 6:b61356230acf 353 sprintf(buffer, "Z%05d,%05d,%05d;",x, y, z);
suupen 2:8446eb1774c4 354 ans &= sendData(buffer);
suupen 2:8446eb1774c4 355
suupen 2:8446eb1774c4 356 return (ans);
suupen 2:8446eb1774c4 357 }
suupen 6:b61356230acf 358
suupen 6:b61356230acf 359 void MDX20::offsetXAxisAdjustment(int16_t axisData)
suupen 6:b61356230acf 360 {
suupen 6:b61356230acf 361 XYZMove(axisData, 0, 0);
suupen 6:b61356230acf 362 // D_userOriginPosition[Z_x] = 0;
suupen 6:b61356230acf 363
suupen 6:b61356230acf 364 }
suupen 6:b61356230acf 365
suupen 6:b61356230acf 366 void MDX20::offsetYAxisAdjustment(int16_t axisData)
suupen 6:b61356230acf 367 {
suupen 6:b61356230acf 368 XYZMove(0, axisData, 0);
suupen 6:b61356230acf 369 // D_userOriginPosition[Z_y] = 0;
suupen 6:b61356230acf 370
suupen 6:b61356230acf 371 }
suupen 6:b61356230acf 372
suupen 6:b61356230acf 373 void MDX20::offsetZAxisAdjustment(int16_t axisData)
suupen 6:b61356230acf 374 {
suupen 6:b61356230acf 375 XYZMove(0, 0, axisData);
suupen 6:b61356230acf 376 // D_userOriginPosition[Z_z] = 0;
suupen 6:b61356230acf 377
suupen 6:b61356230acf 378 }
suupen 6:b61356230acf 379
suupen 6:b61356230acf 380 void MDX20::userOriginPositionInitial(void)
suupen 6:b61356230acf 381 {
suupen 6:b61356230acf 382 D_userOriginPosition[Z_x] = 0;
suupen 6:b61356230acf 383 D_userOriginPosition[Z_y] = 0;
suupen 6:b61356230acf 384 D_userOriginPosition[Z_z] = 0;
suupen 6:b61356230acf 385 }
suupen 6:b61356230acf 386
suupen 6:b61356230acf 387 int32_t MDX20::motorStateCheck(void)
suupen 6:b61356230acf 388 {
suupen 6:b61356230acf 389 return motorState;
suupen 6:b61356230acf 390 }
suupen 6:b61356230acf 391