@synapticon/motion-master-client 6.0.0-alpha.115 → 6.0.0-alpha.117
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.
- package/dist/generated/Api.d.ts +30 -1
- package/dist/generated/Api.js +27 -0
- package/dist/generated/data-contracts.d.ts +268 -6
- package/package.json +1 -1
package/dist/generated/Api.d.ts
CHANGED
|
@@ -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, FullFirmwareDescriptors, 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
|
/**
|
|
@@ -1079,6 +1079,14 @@ export declare class Api<SecurityDataType = unknown> extends HttpClient<Security
|
|
|
1079
1079
|
* @request GET:/api/devices/{slavePosition}/plant-model
|
|
1080
1080
|
*/
|
|
1081
1081
|
getDevicePlantModel: (slavePosition: number, params?: RequestParams) => Promise<import("./http-client.js").HttpResponse<IdentifiedPlantModel, void>>;
|
|
1082
|
+
/**
|
|
1083
|
+
* @description Reads the device's `.hardware_description` and `.variant` and assembles the full firmware descriptors it accepts: the device's own, and the assembly's where the hardware description names one. These are the descriptors `firmware-compatibility` compares a package against, without a package to compare.
|
|
1084
|
+
*
|
|
1085
|
+
* @name GetDeviceFirmwareDescriptors
|
|
1086
|
+
* @summary Read the firmware descriptors a device accepts
|
|
1087
|
+
* @request GET:/api/devices/{slavePosition}/firmware-descriptors
|
|
1088
|
+
*/
|
|
1089
|
+
getDeviceFirmwareDescriptors: (slavePosition: number, params?: RequestParams) => Promise<import("./http-client.js").HttpResponse<FullFirmwareDescriptors, void>>;
|
|
1082
1090
|
/**
|
|
1083
1091
|
* @description Reads the device's `.hardware_description` and `.variant`, assembles the full firmware descriptors it accepts, and compares them against the descriptor in `filename`. **A mismatch is a `200` carrying `compatible: false`**, not an error status: the client asked a question and got an answer, and the body names both descriptors so it can say which hardware the package was for. A `4xx` means the question could not be asked — the filename is not a package name, or the hardware description could not be read. **Nothing acts on the answer.** The firmware installation procedure writes whatever it is given, on purpose, so this exists to tell a user before they start.
|
|
1084
1092
|
*
|
|
@@ -1206,6 +1214,27 @@ export declare class Api<SecurityDataType = unknown> extends HttpClient<Security
|
|
|
1206
1214
|
* @request POST:/api/hardware-description/parse
|
|
1207
1215
|
*/
|
|
1208
1216
|
parseHardwareDescription: (data: string, params?: RequestParams) => Promise<import("./http-client.js").HttpResponse<HardwareDescription, void>>;
|
|
1217
|
+
/**
|
|
1218
|
+
* @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.
|
|
1219
|
+
*
|
|
1220
|
+
* @name GetIcMuEncoderStatus
|
|
1221
|
+
* @summary Decode an iC-MU encoder status word
|
|
1222
|
+
* @request GET:/api/ic-mu-encoder-status
|
|
1223
|
+
*/
|
|
1224
|
+
getIcMuEncoderStatus: (query: {
|
|
1225
|
+
/**
|
|
1226
|
+
* The word, in decimal or in hexadecimal with a 0x prefix.
|
|
1227
|
+
* @example "0x1000"
|
|
1228
|
+
*/
|
|
1229
|
+
encoderStatus: string;
|
|
1230
|
+
}, params?: RequestParams) => Promise<import("./http-client.js").HttpResponse<{
|
|
1231
|
+
/**
|
|
1232
|
+
* @format int64
|
|
1233
|
+
* @example 4096
|
|
1234
|
+
*/
|
|
1235
|
+
encoderStatus: number;
|
|
1236
|
+
encoderStatusBits: IcMuStatusBit[];
|
|
1237
|
+
}, void>>;
|
|
1209
1238
|
/**
|
|
1210
1239
|
* @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
1240
|
*
|
package/dist/generated/Api.js
CHANGED
|
@@ -778,6 +778,19 @@ export class Api extends HttpClient {
|
|
|
778
778
|
format: "json",
|
|
779
779
|
...params,
|
|
780
780
|
});
|
|
781
|
+
/**
|
|
782
|
+
* @description Reads the device's `.hardware_description` and `.variant` and assembles the full firmware descriptors it accepts: the device's own, and the assembly's where the hardware description names one. These are the descriptors `firmware-compatibility` compares a package against, without a package to compare.
|
|
783
|
+
*
|
|
784
|
+
* @name GetDeviceFirmwareDescriptors
|
|
785
|
+
* @summary Read the firmware descriptors a device accepts
|
|
786
|
+
* @request GET:/api/devices/{slavePosition}/firmware-descriptors
|
|
787
|
+
*/
|
|
788
|
+
getDeviceFirmwareDescriptors = (slavePosition, params = {}) => this.request({
|
|
789
|
+
path: `/api/devices/${slavePosition}/firmware-descriptors`,
|
|
790
|
+
method: "GET",
|
|
791
|
+
format: "json",
|
|
792
|
+
...params,
|
|
793
|
+
});
|
|
781
794
|
/**
|
|
782
795
|
* @description Reads the device's `.hardware_description` and `.variant`, assembles the full firmware descriptors it accepts, and compares them against the descriptor in `filename`. **A mismatch is a `200` carrying `compatible: false`**, not an error status: the client asked a question and got an answer, and the body names both descriptors so it can say which hardware the package was for. A `4xx` means the question could not be asked — the filename is not a package name, or the hardware description could not be read. **Nothing acts on the answer.** The firmware installation procedure writes whatever it is given, on purpose, so this exists to tell a user before they start.
|
|
783
796
|
*
|
|
@@ -901,6 +914,20 @@ export class Api extends HttpClient {
|
|
|
901
914
|
format: "json",
|
|
902
915
|
...params,
|
|
903
916
|
});
|
|
917
|
+
/**
|
|
918
|
+
* @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.
|
|
919
|
+
*
|
|
920
|
+
* @name GetIcMuEncoderStatus
|
|
921
|
+
* @summary Decode an iC-MU encoder status word
|
|
922
|
+
* @request GET:/api/ic-mu-encoder-status
|
|
923
|
+
*/
|
|
924
|
+
getIcMuEncoderStatus = (query, params = {}) => this.request({
|
|
925
|
+
path: `/api/ic-mu-encoder-status`,
|
|
926
|
+
method: "GET",
|
|
927
|
+
query: query,
|
|
928
|
+
format: "json",
|
|
929
|
+
...params,
|
|
930
|
+
});
|
|
904
931
|
/**
|
|
905
932
|
* @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
933
|
*
|
|
@@ -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`. For `set-integral-limits` the `compute` step holds the inputs it read, and the `write` step `limits`, each with `object`, `before` and `after`, and `skipped`, the limit objects the drive does not have.
|
|
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-
|
|
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`
|
|
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`
|
|
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
|
-
* `
|
|
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.
|
|
3
|
+
"version": "6.0.0-alpha.117",
|
|
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": {
|