@synapticon/motion-master-client 6.0.0-alpha.115 → 6.0.0-alpha.116

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- import { AlStatusCode, AutoTuningError, AutoTuningRunRequest, AutoTuningRunResponse, AutoTuningStatus, BrakeState, CaptureSummary, Cia402Status, DcSyncStatus, DeviceDiagnostics, DeviceFile, DeviceParameter, Encoders, EscRegister, EsiParseResult, FirmwareCompatibility, FirmwarePackageName, FoeErrorCode, GameLoopHealth, HardwareDescription, HrdRecording, IcHausRegister, IcMuRestoreFile, IdentifiedPlantModel, IntegroVariant, IntegroVariantOption, MailboxErrorCode, Monitoring, ObjectDataTypeInfo, OperationModes, OutputStageResult, ParameterCacheEntry, ParameterValue, PdoMapping, PdoMappingRequest, ProcedureListing, ProcedureRequest, ProcedureSnapshot, ProcessDataWatchdog, ProcessImageObject, SdoAbortCode, SlaveConfig, SlaveInformationInterface, UserCacheListing } from "./data-contracts.js";
1
+ import { AlStatusCode, AutoTuningError, AutoTuningRunRequest, AutoTuningRunResponse, AutoTuningStatus, BrakeState, CaptureSummary, Cia402Status, DcSyncStatus, DeviceDiagnostics, DeviceFile, DeviceParameter, Encoders, EscRegister, EsiParseResult, FirmwareCompatibility, FirmwarePackageName, FoeErrorCode, GameLoopHealth, HardwareDescription, HrdRecording, IcHausRegister, IcMuRestoreFile, IcMuStatusBit, IdentifiedPlantModel, IntegroVariant, IntegroVariantOption, MailboxErrorCode, Monitoring, ObjectDataTypeInfo, OperationModes, OutputStageResult, ParameterCacheEntry, ParameterValue, PdoMapping, PdoMappingRequest, ProcedureListing, ProcedureRequest, ProcedureSnapshot, ProcessDataWatchdog, ProcessImageObject, SdoAbortCode, SlaveConfig, SlaveInformationInterface, UserCacheListing } from "./data-contracts.js";
2
2
  import { HttpClient, RequestParams } from "./http-client.js";
3
3
  export declare class Api<SecurityDataType = unknown> extends HttpClient<SecurityDataType> {
4
4
  /**
@@ -1206,6 +1206,27 @@ export declare class Api<SecurityDataType = unknown> extends HttpClient<Security
1206
1206
  * @request POST:/api/hardware-description/parse
1207
1207
  */
1208
1208
  parseHardwareDescription: (data: string, params?: RequestParams) => Promise<import("./http-client.js").HttpResponse<HardwareDescription, void>>;
1209
+ /**
1210
+ * @description Decodes an encoder status word, the value of 0x2111:04 or 0x2113:04, into the same bits the `ic-mu-encoder-status` procedure reports. Bus-independent: it reads nothing from a drive, so a value from a log can be decoded with no hardware present. A `GET` with a query, like `/api/firmware-package-name`, because the input is one number.
1211
+ *
1212
+ * @name GetIcMuEncoderStatus
1213
+ * @summary Decode an iC-MU encoder status word
1214
+ * @request GET:/api/ic-mu-encoder-status
1215
+ */
1216
+ getIcMuEncoderStatus: (query: {
1217
+ /**
1218
+ * The word, in decimal or in hexadecimal with a 0x prefix.
1219
+ * @example "0x1000"
1220
+ */
1221
+ encoderStatus: string;
1222
+ }, params?: RequestParams) => Promise<import("./http-client.js").HttpResponse<{
1223
+ /**
1224
+ * @format int64
1225
+ * @example 4096
1226
+ */
1227
+ encoderStatus: number;
1228
+ encoderStatusBits: IcMuStatusBit[];
1229
+ }, void>>;
1209
1230
  /**
1210
1231
  * @description Decodes a `circulo_integrated_encoder_<sensor port>_config.bin` supplied in the request body. The `ic-mu-encoder-configuration` procedure writes this file. It holds `[address, value]` pairs of iC-MU registers, and the drive writes them into the encoder when the iC-MU reports a corrupted EEPROM. Each pair comes back with the iC-MU register at its address. The file is refused when the drive would refuse it: an odd length, or more than 66 bytes.
1211
1232
  *
@@ -901,6 +901,20 @@ export class Api extends HttpClient {
901
901
  format: "json",
902
902
  ...params,
903
903
  });
904
+ /**
905
+ * @description Decodes an encoder status word, the value of 0x2111:04 or 0x2113:04, into the same bits the `ic-mu-encoder-status` procedure reports. Bus-independent: it reads nothing from a drive, so a value from a log can be decoded with no hardware present. A `GET` with a query, like `/api/firmware-package-name`, because the input is one number.
906
+ *
907
+ * @name GetIcMuEncoderStatus
908
+ * @summary Decode an iC-MU encoder status word
909
+ * @request GET:/api/ic-mu-encoder-status
910
+ */
911
+ getIcMuEncoderStatus = (query, params = {}) => this.request({
912
+ path: `/api/ic-mu-encoder-status`,
913
+ method: "GET",
914
+ query: query,
915
+ format: "json",
916
+ ...params,
917
+ });
904
918
  /**
905
919
  * @description Decodes a `circulo_integrated_encoder_<sensor port>_config.bin` supplied in the request body. The `ic-mu-encoder-configuration` procedure writes this file. It holds `[address, value]` pairs of iC-MU registers, and the drive writes them into the encoder when the iC-MU reports a corrupted EEPROM. Each pair comes back with the iC-MU register at its address. The file is refused when the drive would refuse it: an odd length, or more than 66 bytes.
906
920
  *
@@ -451,7 +451,7 @@ export interface ProgressStep {
451
451
  /** @example "succeeded" */
452
452
  status: "idle" | "running" | "succeeded" | "failed";
453
453
  /**
454
- * What the step produced, if anything — shape is per procedure. Absent when the step produced nothing. For `os-command` it is an object with `status`, `data`, `errorCode` when the drive sent one, and `fsBuffer` when the request asked to read bulk data. For `read-object-dictionary` it is an object with `byteCount` and `values`, one entry per object with its `index`, `subindex` and `value`. For `ic-mu-encoder-status` the `read-registers` step holds an array of `IcMuEncoderStatus`, and for `ic-mu-encoder-configuration` the `verify` step holds one. For `ic-mu-calibration` the `validate` step holds an `IcMuCalibrationPlan`, each `iteration-<n>` step an `IcMuCalibrationIteration`, and the `validation` step an `IcMuCalibrationValidation`.
454
+ * What the step produced, if anything — shape is per procedure. Absent when the step produced nothing. For `os-command` it is an object with `status`, `data`, `errorCode` when the drive sent one, and `fsBuffer` when the request asked to read bulk data. For `read-object-dictionary` it is an object with `byteCount` and `values`, one entry per object with its `index`, `subindex` and `value`. For `ic-mu-encoder-status` the `read-registers` step holds an array of `IcMuEncoderStatus`, and for `ic-mu-encoder-configuration` the `verify` step holds one. For `ic-mu-calibration` the `validate` step holds an `IcMuCalibrationPlan`, each `iteration-<n>` step an `IcMuCalibrationIteration`, and the `validation` step an `IcMuCalibrationValidation`. For `ic-mu-key-registers` the `read-key-registers` step holds an array of `IcMuKeyRegister`, for `ic-mu-eeprom-export` the `read-eeprom` step an array of `IcMuEepromByte`, and for `ic-mu-i2c-register` the `i2c-transfer` step an `IcMuI2cTransfer`. For `ic-mu-restore-file` the `restore-file` step holds `file` and `entries`, the pairs written, as `IcMuRestoreFile` lists them. For `open-loop-field-control` the `validate` step holds an `OpenLoopFieldPlan`. For `ic-mu-eeprom-erase` the `read-eeprom` step holds the 77 erased bytes as `IcMuEepromByte`, and the `delete-restore-file` step the `file` it deleted, or null with a `reason`. For `controller-auto-tuning` the `drive-configuration` step holds the `DriveConfig` sent to the auto-tuning program, the `noise` step `noiseRpm` and a `warning`, the `compute` step a `ControllerTuningComputed`, and the `write` step a `ControllerTuningWrite`.
455
455
  * @example {"status":1,"data":[1,2,3,4,5,6]}
456
456
  */
457
457
  value?: any;
@@ -594,6 +594,11 @@ export interface Encoders {
594
594
  }
595
595
  /** A drive's brake configuration and current state — the parts of object 0x2004 that decide what commanding the brake will actually do. Returned by every brake endpoint, so the outcome of a release or engage arrives in the same shape as a plain read. */
596
596
  export interface BrakeState {
597
+ /**
598
+ * Whether the drive has the brake object 0x2004. A drive with no brake, such as one running Jasper firmware, has none: then `status` is `notConfigured`, `softwareControllable` is false, and release and engage write nothing and succeed.
599
+ * @example true
600
+ */
601
+ present: boolean;
597
602
  /**
598
603
  * Brake state (0x2004:07). A brake is spring-engaged, so `engaged` is also its powered-off state.
599
604
  * @example "engaged"
@@ -1102,6 +1107,163 @@ export interface IcMuEncoderStatus {
1102
1107
  /** @example 56 */
1103
1108
  maxAccelerationKrpmPerSecond: number;
1104
1109
  }[];
1110
+ /**
1111
+ * The encoder status word, 0x2111:04 for encoder 1 and 0x2113:04 for encoder 2, read with an SDO upload. It is a snapshot, not a live view of the chips. The drive writes it after a BiSS error bit and at start-up: iC-MU STATUS1 in bits 0-7, the iC-PVL status in bits 8-15 and iC-MU STATUS0 in bits 16-23, each with only the bits the drive watches. 0 means that nothing was latched since the drive started. The drive sets the word to 0 again only when a change of the encoder configuration object, 0x2110 or 0x2112, restarts the encoder; `ic-mu-encoder-configuration` does not clear it. The chips themselves are not read, because a read of STATUS1 clears the iC-MU errors.
1112
+ * @format int64
1113
+ * @example 4096
1114
+ */
1115
+ encoderStatus: number;
1116
+ /** One entry for each set bit of encoderStatus, lowest bit first. */
1117
+ encoderStatusBits: IcMuStatusBit[];
1118
+ }
1119
+ /** The `validate` step of `open-loop-field-control`: the move in the electrical units the drive takes, as OS command 2 writes them. */
1120
+ export interface OpenLoopFieldPlan {
1121
+ /** @example 360 */
1122
+ angleDegrees: number;
1123
+ /**
1124
+ * 0x2003:01.
1125
+ * @example 5
1126
+ */
1127
+ polePairs: number;
1128
+ /**
1129
+ * The end electrical angle. The drive takes 2π as 6.28, so this is the mechanical angle times the pole pairs times 6280 / 360.
1130
+ * @example 31400
1131
+ */
1132
+ angleEndMilliRadian: number;
1133
+ /** @example 3 */
1134
+ speedRadPerSecond: number;
1135
+ /** @example 523 */
1136
+ accelerationRadPerSquaredSecond: number;
1137
+ /** @example 1000 */
1138
+ lengthEndPerMille: number;
1139
+ /** @example 10000 */
1140
+ lengthRatePerMillePerSecond: number;
1141
+ /**
1142
+ * The velocity of the motor shaft the rounded speed gives.
1143
+ * @example 5.73
1144
+ */
1145
+ velocityRpm: number;
1146
+ }
1147
+ /** The `compute` step of `controller-auto-tuning`: what the auto-tuning program tuned for, and the gains it returned in SI units, before the conversion to the drive's units. */
1148
+ export interface ControllerTuningComputed {
1149
+ /** @example true */
1150
+ full: boolean;
1151
+ /** Position tuning only. */
1152
+ controllerType?: "PI-P" | "P-PI";
1153
+ /**
1154
+ * The damping ratio the program chose, or the one the request gave.
1155
+ * @example 0.9
1156
+ */
1157
+ dampingRatio: number;
1158
+ /**
1159
+ * Position tuning only. The settling time the program chose, or the one given.
1160
+ * @example 120
1161
+ */
1162
+ settlingTimeMs?: number;
1163
+ /**
1164
+ * Velocity tuning only. The bandwidth the program chose, or the one given.
1165
+ * @example 40.8
1166
+ */
1167
+ bandwidthHz?: number;
1168
+ /**
1169
+ * Kp and Ki of the position loop, in (rad/s)/rad and (rad/s)/(rad·s), and of the velocity loop, in Nm/(rad/s) and Nm/(rad/s·s). A velocity tuning returns zeros for the position loop.
1170
+ * @example {"position":{"kp":30,"ki":4},"velocity":{"kp":0.05,"ki":2.5}}
1171
+ */
1172
+ gains: object;
1173
+ /** The stability margins and other figures a full tuning reports, as the program renders them. Null for a tuning to targets. */
1174
+ state: any | null;
1175
+ }
1176
+ /** The `write` step of `controller-auto-tuning`: each gain object, its value before and after the write, in the drive's units, and the Kd objects the drive does not have. */
1177
+ export interface ControllerTuningWrite {
1178
+ gains: {
1179
+ /** @example "0x2011:01" */
1180
+ object: string;
1181
+ /** @example 1.5 */
1182
+ before: number;
1183
+ /** @example 5.24 */
1184
+ after: number;
1185
+ }[];
1186
+ /** @example ["0x2011:03"] */
1187
+ skipped: string[];
1188
+ /** Set when a full tuning computed the gains with a noise of 0, because the motor moved or the noise recording failed. */
1189
+ warning: string | null;
1190
+ }
1191
+ /** One key register of an iC-MU, read from its RAM: the step value of `ic-mu-key-registers` is a list of 33 of them, in the order of the restore file. */
1192
+ export interface IcMuKeyRegister {
1193
+ /** @example 82 */
1194
+ ramAddress: number;
1195
+ /**
1196
+ * Where the EEPROM keeps the register. RAM 0x00-0x18 is EEPROM 0x00-0x18, and RAM 0x52-0x59 is EEPROM 0x19-0x20.
1197
+ * @example 25
1198
+ */
1199
+ eepromAddress: number;
1200
+ /** @example 47 */
1201
+ value: number;
1202
+ /** The iC-MU register at `ramAddress`, as `/api/meta/ic-haus-registers` lists it, or null for an address the register map does not list. */
1203
+ register: IcHausRegister | null;
1204
+ }
1205
+ /** One byte of the EEPROM of an iC-MU encoder: the step value of `ic-mu-eeprom-export` is a list of 77 of them, 0x00-0x4C. 0x00-0x3F is the configuration of the iC-MU and 0x40-0x4C that of the iC-PVL. The `read-eeprom` step of `ic-mu-eeprom-erase` holds the same list, read back after the erase. */
1206
+ export interface IcMuEepromByte {
1207
+ /** @example 64 */
1208
+ address: number;
1209
+ /** @example 40 */
1210
+ value: number;
1211
+ }
1212
+ /** The step value of `ic-mu-i2c-register`. */
1213
+ export interface IcMuI2CTransfer {
1214
+ /** @example "ic-pvl" */
1215
+ target: "eeprom" | "ic-pvl" | "ic-pvl-status";
1216
+ /**
1217
+ * The I²C device id with the R/W bit, as written to I2C_DEVID (0x5E).
1218
+ * @example 195
1219
+ */
1220
+ deviceId: number;
1221
+ /** @example false */
1222
+ write: boolean;
1223
+ /** @example 16 */
1224
+ registerAddress: number;
1225
+ /**
1226
+ * The byte read or written.
1227
+ * @example 240
1228
+ */
1229
+ value: number;
1230
+ }
1231
+ /** One set bit of the encoder status word. A set bit that the drive masks out has no name, title, description or remedy. */
1232
+ export interface IcMuStatusBit {
1233
+ /**
1234
+ * The bit in the encoder status word.
1235
+ * @example 12
1236
+ */
1237
+ bit: number;
1238
+ /**
1239
+ * The chip the bit comes from, null for bits 24-31.
1240
+ * @example "iC-PVL"
1241
+ */
1242
+ chip: "iC-MU" | "iC-PVL" | null;
1243
+ /**
1244
+ * The status register of the chip, null for bits 24-31.
1245
+ * @example "STATUS"
1246
+ */
1247
+ register: "STATUS0" | "STATUS1" | "STATUS" | null;
1248
+ /**
1249
+ * The bit in that register.
1250
+ * @example 4
1251
+ */
1252
+ registerBit: number;
1253
+ /**
1254
+ * The datasheet name.
1255
+ * @example "BAT_ERR"
1256
+ */
1257
+ name: string | null;
1258
+ /** @example "Battery error" */
1259
+ title: string | null;
1260
+ /** @example "The battery voltage is too low (iC-PVL datasheet, Elec. Char. No. 404). The position is not valid." */
1261
+ description: string | null;
1262
+ /**
1263
+ * What to do, null where there is nothing to do.
1264
+ * @example "Change the battery, then reset the fault of the drive."
1265
+ */
1266
+ remedy: string | null;
1105
1267
  }
1106
1268
  /** What an iC-MU calibration decided before the motor moved. */
1107
1269
  export interface IcMuCalibrationPlan {
@@ -1167,6 +1329,16 @@ export interface IcMuCalibrationIteration {
1167
1329
  * @example 8.9
1168
1330
  */
1169
1331
  recordedRevolutions: number;
1332
+ /**
1333
+ * The master periods MU_3SL calculated from the recording. Reported as the library gives it; nothing judges it.
1334
+ * @example 32
1335
+ */
1336
+ calculatedMasterPeriods?: number;
1337
+ /**
1338
+ * The fewest samples MU_3SL saw in one master period of the recording. Reported as the library gives it; nothing judges it.
1339
+ * @example 12.5
1340
+ */
1341
+ minimalSamplesPerMasterPeriod?: number;
1170
1342
  /** Present when the recording covered less than one turn of the ring. */
1171
1343
  warning?: string;
1172
1344
  /** The permissible nonius phase error. */
@@ -1191,6 +1363,16 @@ export interface IcMuCalibrationValidation {
1191
1363
  samples: number;
1192
1364
  /** @example 8.9 */
1193
1365
  recordedRevolutions: number;
1366
+ /**
1367
+ * As in IcMuCalibrationIteration.
1368
+ * @example 32
1369
+ */
1370
+ calculatedMasterPeriods?: number;
1371
+ /**
1372
+ * As in IcMuCalibrationIteration.
1373
+ * @example 12.5
1374
+ */
1375
+ minimalSamplesPerMasterPeriod?: number;
1194
1376
  warning?: string;
1195
1377
  phaseRangeLimit: number;
1196
1378
  /** A curve over the ring: at most 720 points of [ring angle in degrees, value]. The value is in the unit of phaseRangeLimit. */
@@ -1243,7 +1425,7 @@ export interface ProcedureRequest {
1243
1425
  */
1244
1426
  command?: number[];
1245
1427
  /**
1246
- * Ceiling on the whole command. Not a liveness check — the drive fails a command no service acknowledges within 5 s on its own — so size it for the command being run. Hitting it aborts the command on the drive.
1428
+ * Ceiling on the whole command. Not a liveness check — the drive fails a command no service acknowledges within 5 s on its own — so size it for the command being run. Hitting it aborts the command on the drive. For `open-loop-field-control` it is how long the move may take after the drive is enabled, from 1000 ms, with 60000 ms as its default.
1247
1429
  * @min 1
1248
1430
  * @max 600000
1249
1431
  * @default 1000
@@ -1266,25 +1448,30 @@ export interface ProcedureRequest {
1266
1448
  /** `os-command` only, and required when `fsBuffer` is `write`: the bytes to send, base64-encoded into this JSON string. Rejected for the other two directions rather than ignored, so a request that names one and forgets the other is told rather than running a command that moves nothing. (Deliberately not `format: byte`, for the reason spelled out on `packageContent`.) */
1267
1449
  fsBufferData?: string;
1268
1450
  /**
1269
- * `encoder-register-communication`, `ic-mu-calibration-mode`, `ignore-biss-status-bits`, `ic-mu-encoder-configuration` and `ic-mu-calibration`: the encoder ordinal of the OS commands, which picks the drive's encoder to address. Encoder 1 is the encoder configured in 0x2110 and encoder 2 the one configured in 0x2112, so the ordinal picks a configuration object rather than a kind of encoder. Required for `ic-mu-encoder-configuration` and `ic-mu-calibration`, because a default would write the EEPROM of an encoder that nobody named.
1451
+ * `encoder-register-communication`, `ic-mu-calibration-mode`, `ignore-biss-status-bits`, `ic-mu-encoder-configuration`, `ic-mu-calibration`, `ic-mu-key-registers`, `ic-mu-eeprom-export`, `ic-mu-i2c-register`, `ic-mu-restore-file` and `ic-mu-eeprom-erase`: the encoder ordinal of the OS commands, which picks the drive's encoder to address. Encoder 1 is the encoder configured in 0x2110 and encoder 2 the one configured in 0x2112, so the ordinal picks a configuration object rather than a kind of encoder. Required for every `ic-mu-` procedure that takes it, because a default would address an encoder that nobody named.
1270
1452
  * @default 1
1271
1453
  * @example 1
1272
1454
  */
1273
1455
  encoderOrdinal?: 1 | 2;
1274
1456
  /**
1275
- * `encoder-register-communication` only: false reads the register, true writes `value` into it. Either way the drive reports what the register holds afterwards.
1457
+ * `encoder-register-communication` and `ic-mu-i2c-register`: false reads, true writes `value`. `encoder-register-communication` reports what the register holds afterwards; `ic-mu-i2c-register` reports the byte it wrote.
1276
1458
  * @default false
1277
1459
  */
1278
1460
  write?: boolean;
1279
1461
  /**
1280
- * `encoder-register-communication` only, and required for it: the register to access. The map belongs to the encoder chip rather than to the drive's firmware.
1462
+ * `encoder-register-communication` and `ic-mu-i2c-register`, and required for both: the register to access. For `encoder-register-communication` the map belongs to the encoder chip rather than to the drive's firmware. For `ic-mu-i2c-register` it is an address on `target`: an EEPROM address, or an iC-PVL register.
1281
1463
  * @min 0
1282
1464
  * @max 255
1283
1465
  * @example 117
1284
1466
  */
1285
1467
  registerAddress?: number;
1286
1468
  /**
1287
- * `encoder-register-communication` only: the byte to write into the register. Ignored when reading.
1469
+ * `ic-mu-i2c-register` only, and required for it: what the I²C transfer of the iC-MU addresses. `eeprom` is the EEPROM that holds the configuration of the iC-MU and the iC-PVL, `ic-pvl` every iC-PVL register, and `ic-pvl-status` only the status and command registers of the iC-PVL, where the command register is 0x01. The server picks the I²C device id from `target` and `write`.
1470
+ * @example "eeprom"
1471
+ */
1472
+ target?: "eeprom" | "ic-pvl" | "ic-pvl-status";
1473
+ /**
1474
+ * `encoder-register-communication` and `ic-mu-i2c-register`: the byte to write. Ignored when reading. `ic-mu-i2c-register` requires it for a write.
1288
1475
  * @min 0
1289
1476
  * @max 255
1290
1477
  * @default 0
@@ -1314,6 +1501,11 @@ export interface ProcedureRequest {
1314
1501
  * @example "18-microamperes"
1315
1502
  */
1316
1503
  batteryMode?: "default" | "6-microamperes" | "10-microamperes" | "18-microamperes" | "36-microamperes" | "72-microamperes";
1504
+ /**
1505
+ * `ic-mu-encoder-configuration` only: writes the configured registers to the restore file of the sensor port, `circulo_integrated_encoder_<sensor port>_config.bin`. The drive writes that file back into the encoder when the iC-MU reports a corrupted EEPROM. False keeps the file there now. The drive keeps a restore file only for sensor ports 1 and 2.
1506
+ * @default true
1507
+ */
1508
+ writeRestoreFile?: boolean;
1317
1509
  /**
1318
1510
  * `ic-mu-calibration` only: where the ring of an external encoder on sensor port 3 to 5 sits. Required there, and refused for port 1, which is always inner, and port 2, which is always outer. The calibration starts from the values measured for that position.
1319
1511
  * @example "inner"
@@ -1373,6 +1565,76 @@ export interface ProcedureRequest {
1373
1565
  * @example 2
1374
1566
  */
1375
1567
  finalState?: 1 | 2 | 3 | 4 | 8;
1568
+ /**
1569
+ * `open-loop-field-control` only, and required for it: how far to turn the motor shaft, in mechanical degrees. Negative turns the other way.
1570
+ * @example 360
1571
+ */
1572
+ angle?: number;
1573
+ /**
1574
+ * `open-loop-field-control` only: the highest velocity of the motor shaft, in rpm. The drive takes whole electrical rad/s, so a slow move is rounded; the `validate` step reports the velocity the drive runs.
1575
+ * @default 5
1576
+ * @example 5
1577
+ */
1578
+ velocity?: number;
1579
+ /**
1580
+ * `open-loop-field-control` only: the acceleration and the deceleration of the motor shaft, in rpm/s.
1581
+ * @default 1000
1582
+ * @example 1000
1583
+ */
1584
+ acceleration?: number;
1585
+ /**
1586
+ * `open-loop-field-control` only: the current of the rotating field, in per mille of the rated current.
1587
+ * @default 1000
1588
+ * @example 1000
1589
+ */
1590
+ fieldLength?: number;
1591
+ /**
1592
+ * `open-loop-field-control` only: how fast the field length rises from 0, in per mille of the rated current per second.
1593
+ * @default 10000
1594
+ * @example 10000
1595
+ */
1596
+ fieldLengthRate?: number;
1597
+ /**
1598
+ * `controller-auto-tuning` only, and required for it: the controller to tune.
1599
+ * @example "position"
1600
+ */
1601
+ controller?: "position" | "velocity";
1602
+ /**
1603
+ * `controller-auto-tuning` only, position tuning only: the structure of the cascaded position controller the gains are computed for. PI-P puts the integral action in the position loop, P-PI in the velocity loop.
1604
+ * @default "PI-P"
1605
+ * @example "PI-P"
1606
+ */
1607
+ controllerType?: "PI-P" | "P-PI";
1608
+ /**
1609
+ * `controller-auto-tuning` only: true lets the auto-tuning program choose the damping ratio and the settling time or the bandwidth, from the drive configuration and the velocity noise. False computes the gains for `dampingRatioPermil` and `settlingTimeMs` or `bandwidthMilliHz`.
1610
+ * @default true
1611
+ * @example true
1612
+ */
1613
+ full?: boolean;
1614
+ /**
1615
+ * `controller-auto-tuning` only, when `full` is false: the damping ratio of the closed loop, in per mille.
1616
+ * @min 400
1617
+ * @max 2000
1618
+ * @default 1000
1619
+ * @example 1000
1620
+ */
1621
+ dampingRatioPermil?: number;
1622
+ /**
1623
+ * `controller-auto-tuning` only, position tuning only, when `full` is false: the time the step response takes to stay within 5 % of the target.
1624
+ * @min 20
1625
+ * @max 1000
1626
+ * @default 200
1627
+ * @example 200
1628
+ */
1629
+ settlingTimeMs?: number;
1630
+ /**
1631
+ * `controller-auto-tuning` only, velocity tuning only, when `full` is false: the bandwidth of the closed velocity loop, in mHz.
1632
+ * @min 200
1633
+ * @max 100000
1634
+ * @default 5000
1635
+ * @example 5000
1636
+ */
1637
+ bandwidthMilliHz?: number;
1376
1638
  [key: string]: any;
1377
1639
  }
1378
1640
  export interface OutputStageResult {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@synapticon/motion-master-client",
3
- "version": "6.0.0-alpha.115",
3
+ "version": "6.0.0-alpha.116",
4
4
  "description": "Isomorphic TypeScript client for Motion Master: the generated HTTP API client, the WebSocket connection, and helpers.",
5
5
  "license": "MIT",
6
6
  "repository": {