@synapticon/motion-master-client 6.0.0-alpha.114 → 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.
- package/dist/generated/Api.d.ts +31 -43
- package/dist/generated/Api.js +28 -0
- package/dist/generated/data-contracts.d.ts +539 -9
- 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, 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
|
/**
|
|
@@ -538,48 +538,7 @@ export declare class Api<SecurityDataType = unknown> extends HttpClient<Security
|
|
|
538
538
|
name: string;
|
|
539
539
|
/** How the space is reached, which is what decides whether the register communication service can read it at all. */
|
|
540
540
|
addressing: string;
|
|
541
|
-
registers:
|
|
542
|
-
/**
|
|
543
|
-
* The address, or the first of a printed range.
|
|
544
|
-
* @example 15
|
|
545
|
-
*/
|
|
546
|
-
address: number;
|
|
547
|
-
/**
|
|
548
|
-
* The last address of the range; equal to address for a single-address row.
|
|
549
|
-
* @example 15
|
|
550
|
-
*/
|
|
551
|
-
lastAddress: number;
|
|
552
|
-
/**
|
|
553
|
-
* The fields rendered as the datasheet prints the row. "RESERVED" for a reserved row.
|
|
554
|
-
* @example "SPO_MT(3:0) | MPC(3:0)"
|
|
555
|
-
*/
|
|
556
|
-
layout: string;
|
|
557
|
-
/** The named pieces of this register, most significant bit first. Empty when reserved. */
|
|
558
|
-
fields: {
|
|
559
|
-
/**
|
|
560
|
-
* The datasheet's own name for the field.
|
|
561
|
-
* @example "SPO_MT"
|
|
562
|
-
*/
|
|
563
|
-
name: string;
|
|
564
|
-
/**
|
|
565
|
-
* The field's own bit slice as the register map prints it, empty where it prints a bare name. Not the position within the byte.
|
|
566
|
-
* @example "3:0"
|
|
567
|
-
*/
|
|
568
|
-
bits: string;
|
|
569
|
-
/**
|
|
570
|
-
* The datasheet's one-line description of the field.
|
|
571
|
-
* @example "Offset external multiturn"
|
|
572
|
-
*/
|
|
573
|
-
description: string;
|
|
574
|
-
}[];
|
|
575
|
-
/** @example false */
|
|
576
|
-
reserved: boolean;
|
|
577
|
-
/**
|
|
578
|
-
* Reachable over SPI only, so the register communication service cannot touch it.
|
|
579
|
-
* @example false
|
|
580
|
-
*/
|
|
581
|
-
spiOnly: boolean;
|
|
582
|
-
}[];
|
|
541
|
+
registers: IcHausRegister[];
|
|
583
542
|
}[], any>>;
|
|
584
543
|
/**
|
|
585
544
|
* @description The register map of the Integro's internal (Kübler) encoder — the reference table for POST /api/devices/{slavePosition}/procedures/kuebler-register-communication, and documentation in its own right. Static: it describes the encoder type, not any connected device, so it needs no bus and no scan. Transcribed from the vendor's own draft table, then corrected against what the encoder really does: the draft calls four registers not implemented that the encoder calibration sequence reads or writes, and leaves out four more. Each entry carries the width, the access type, whether the encoder implements it, and the vendor's bit definitions verbatim, which for a bit-field register is the only place its meaning is recorded. A register the draft does not document says so in `definition`, because a reader has nowhere else to look. `format` says how to read the assembled value, because signedness is not uniform and one register is not a single number at all: `unsigned`, `signed`, `bitField` (the number means nothing on its own), or `signedHalves` — two signed 16-bit values packed into 32 bits, which register 0x3C is the only case of. `readableInOneCommand` says whether one command can carry the register, since the command's length byte caps at 4 bytes. Every register fits today, so it is true for all of them.
|
|
@@ -1247,6 +1206,35 @@ export declare class Api<SecurityDataType = unknown> extends HttpClient<Security
|
|
|
1247
1206
|
* @request POST:/api/hardware-description/parse
|
|
1248
1207
|
*/
|
|
1249
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>>;
|
|
1230
|
+
/**
|
|
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.
|
|
1232
|
+
*
|
|
1233
|
+
* @name ParseIcMuRestoreFile
|
|
1234
|
+
* @summary Parse an iC-MU restore file
|
|
1235
|
+
* @request POST:/api/ic-mu-restore-file/parse
|
|
1236
|
+
*/
|
|
1237
|
+
parseIcMuRestoreFile: (data: File, params?: RequestParams) => Promise<import("./http-client.js").HttpResponse<IcMuRestoreFile, void>>;
|
|
1250
1238
|
/**
|
|
1251
1239
|
* @description Decodes a `.variant` file supplied in the request body. Binary rather than text, hence a `POST` with bytes like `/api/sii/parse` rather than a query like `/api/firmware-package-name`. Trailing bytes past the last option are accepted: the firmware reads only as many options as the count claims and ignores the rest, so refusing padding would reject a file the drive is happy with.
|
|
1252
1240
|
*
|
package/dist/generated/Api.js
CHANGED
|
@@ -901,6 +901,34 @@ 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
|
+
});
|
|
918
|
+
/**
|
|
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.
|
|
920
|
+
*
|
|
921
|
+
* @name ParseIcMuRestoreFile
|
|
922
|
+
* @summary Parse an iC-MU restore file
|
|
923
|
+
* @request POST:/api/ic-mu-restore-file/parse
|
|
924
|
+
*/
|
|
925
|
+
parseIcMuRestoreFile = (data, params = {}) => this.request({
|
|
926
|
+
path: `/api/ic-mu-restore-file/parse`,
|
|
927
|
+
method: "POST",
|
|
928
|
+
body: data,
|
|
929
|
+
format: "json",
|
|
930
|
+
...params,
|
|
931
|
+
});
|
|
904
932
|
/**
|
|
905
933
|
* @description Decodes a `.variant` file supplied in the request body. Binary rather than text, hence a `POST` with bytes like `/api/sii/parse` rather than a query like `/api/firmware-package-name`. Trailing bytes past the last option are accepted: the firmware reads only as many options as the count claims and ignores the rest, so refusing padding would reject a file the drive is happy with.
|
|
906
934
|
*
|
|
@@ -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`.
|
|
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;
|
|
@@ -538,10 +538,10 @@ export interface HrdRecording {
|
|
|
538
538
|
/** One encoder configuration record, 0x2110 for encoder 1 or 0x2112 for encoder 2. */
|
|
539
539
|
export interface EncoderConfiguration {
|
|
540
540
|
/**
|
|
541
|
-
* The ordinal the controller fields refer to; 1 is 0x2110, 2 is 0x2112.
|
|
541
|
+
* The encoder ordinal, which the controller fields and the OS commands refer to; 1 is 0x2110, 2 is 0x2112.
|
|
542
542
|
* @example 1
|
|
543
543
|
*/
|
|
544
|
-
|
|
544
|
+
encoderOrdinal: 1 | 2;
|
|
545
545
|
/**
|
|
546
546
|
* The port the encoder is wired to (:01), 0 for none.
|
|
547
547
|
* @example 1
|
|
@@ -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"
|
|
@@ -993,6 +998,423 @@ export interface ProcedureListing {
|
|
|
993
998
|
/** The complete state of a procedure on one device — an accumulating snapshot rather than an event, which is what makes polling lossless. */
|
|
994
999
|
snapshot: ProcedureSnapshot;
|
|
995
1000
|
}
|
|
1001
|
+
export interface IcHausRegister {
|
|
1002
|
+
/**
|
|
1003
|
+
* The address, or the first of a printed range.
|
|
1004
|
+
* @example 15
|
|
1005
|
+
*/
|
|
1006
|
+
address: number;
|
|
1007
|
+
/**
|
|
1008
|
+
* The last address of the range; equal to address for a single-address row.
|
|
1009
|
+
* @example 15
|
|
1010
|
+
*/
|
|
1011
|
+
lastAddress: number;
|
|
1012
|
+
/**
|
|
1013
|
+
* The fields rendered as the datasheet prints the row. "RESERVED" for a reserved row.
|
|
1014
|
+
* @example "SPO_MT(3:0) | MPC(3:0)"
|
|
1015
|
+
*/
|
|
1016
|
+
layout: string;
|
|
1017
|
+
/** The named pieces of this register, most significant bit first. Empty when reserved. */
|
|
1018
|
+
fields: {
|
|
1019
|
+
/**
|
|
1020
|
+
* The datasheet's own name for the field.
|
|
1021
|
+
* @example "SPO_MT"
|
|
1022
|
+
*/
|
|
1023
|
+
name: string;
|
|
1024
|
+
/**
|
|
1025
|
+
* The field's own bit slice as the register map prints it, empty where it prints a bare name. Not the position within the byte.
|
|
1026
|
+
* @example "3:0"
|
|
1027
|
+
*/
|
|
1028
|
+
bits: string;
|
|
1029
|
+
/**
|
|
1030
|
+
* The datasheet's one-line description of the field.
|
|
1031
|
+
* @example "Offset external multiturn"
|
|
1032
|
+
*/
|
|
1033
|
+
description: string;
|
|
1034
|
+
}[];
|
|
1035
|
+
/** @example false */
|
|
1036
|
+
reserved: boolean;
|
|
1037
|
+
/**
|
|
1038
|
+
* Reachable over SPI only, so the register communication service cannot touch it.
|
|
1039
|
+
* @example false
|
|
1040
|
+
*/
|
|
1041
|
+
spiOnly: boolean;
|
|
1042
|
+
}
|
|
1043
|
+
/** Whether one iC-MU encoder holds the output configuration that its encoder configuration object asks for. */
|
|
1044
|
+
export interface IcMuEncoderStatus {
|
|
1045
|
+
/** @example 1 */
|
|
1046
|
+
encoderOrdinal: 1 | 2;
|
|
1047
|
+
/**
|
|
1048
|
+
* 0x21x0:01. 3 to 5 is an external encoder.
|
|
1049
|
+
* @example 1
|
|
1050
|
+
*/
|
|
1051
|
+
sensorPort: number;
|
|
1052
|
+
/**
|
|
1053
|
+
* 0x21x0:0C.
|
|
1054
|
+
* @example 19
|
|
1055
|
+
*/
|
|
1056
|
+
singleturnBits: number;
|
|
1057
|
+
/**
|
|
1058
|
+
* 0x21x0:0A, 0 where the object has none.
|
|
1059
|
+
* @example 0
|
|
1060
|
+
*/
|
|
1061
|
+
multiturnBits: number;
|
|
1062
|
+
/**
|
|
1063
|
+
* The pole pairs of the ring, null for a ring the rules do not know.
|
|
1064
|
+
* @example 32
|
|
1065
|
+
*/
|
|
1066
|
+
masterPolePairs: number | null;
|
|
1067
|
+
/**
|
|
1068
|
+
* iC-MU register 0x74.
|
|
1069
|
+
* @example 21
|
|
1070
|
+
*/
|
|
1071
|
+
hardRev: number;
|
|
1072
|
+
/**
|
|
1073
|
+
* The part register 0x74 names, null for a code no iC-MU uses.
|
|
1074
|
+
* @example "iC-MU150"
|
|
1075
|
+
*/
|
|
1076
|
+
part: string | null;
|
|
1077
|
+
/**
|
|
1078
|
+
* The low nibble of register 0x74.
|
|
1079
|
+
* @example 5
|
|
1080
|
+
*/
|
|
1081
|
+
revision: number;
|
|
1082
|
+
/**
|
|
1083
|
+
* iC-MU register 0x11.
|
|
1084
|
+
* @example 5
|
|
1085
|
+
*/
|
|
1086
|
+
outputRegister: number;
|
|
1087
|
+
/**
|
|
1088
|
+
* The value of register 0x11 the rules give, null where they do not apply.
|
|
1089
|
+
* @example 5
|
|
1090
|
+
*/
|
|
1091
|
+
expectedOutputRegister: number | null;
|
|
1092
|
+
/**
|
|
1093
|
+
* not-configured when register 0x11 holds 0xA5, configured when it holds the expected value, invalid otherwise. null without an expected value, and for another chip on an external port.
|
|
1094
|
+
* @example "configured"
|
|
1095
|
+
*/
|
|
1096
|
+
state: "not-configured" | "invalid" | "configured" | null;
|
|
1097
|
+
/** Why there is no expected value. */
|
|
1098
|
+
reason: string | null;
|
|
1099
|
+
/** @example "singleturn" */
|
|
1100
|
+
path: "singleturn" | "multiturn";
|
|
1101
|
+
/** The battery modes a configuration request can name besides default. Empty on the singleturn path and on a ring that offers no mode. */
|
|
1102
|
+
batteryModes: {
|
|
1103
|
+
/** @example "18-microamperes" */
|
|
1104
|
+
name: string;
|
|
1105
|
+
/** @example 18 */
|
|
1106
|
+
maxCurrentMicroamps: number;
|
|
1107
|
+
/** @example 56 */
|
|
1108
|
+
maxAccelerationKrpmPerSecond: number;
|
|
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;
|
|
1267
|
+
}
|
|
1268
|
+
/** What an iC-MU calibration decided before the motor moved. */
|
|
1269
|
+
export interface IcMuCalibrationPlan {
|
|
1270
|
+
/** @example 2 */
|
|
1271
|
+
encoderOrdinal: 1 | 2;
|
|
1272
|
+
/** @example 2 */
|
|
1273
|
+
sensorPort: number;
|
|
1274
|
+
/** @example "outer" */
|
|
1275
|
+
ringPosition: "inner" | "outer";
|
|
1276
|
+
/** @example "iC-MU200" */
|
|
1277
|
+
part: string;
|
|
1278
|
+
/** @example 32 */
|
|
1279
|
+
masterPolePairs: number;
|
|
1280
|
+
/** @example "motor" */
|
|
1281
|
+
shaft: "motor" | "driving";
|
|
1282
|
+
/** False when the start values of another ring are used. */
|
|
1283
|
+
startValuesMeasured: boolean;
|
|
1284
|
+
/**
|
|
1285
|
+
* On the driving shaft.
|
|
1286
|
+
* @example 0.75
|
|
1287
|
+
*/
|
|
1288
|
+
velocityRpm: number;
|
|
1289
|
+
/**
|
|
1290
|
+
* On the driving shaft.
|
|
1291
|
+
* @example 8.33
|
|
1292
|
+
*/
|
|
1293
|
+
accelerationRpmPerSecond: number;
|
|
1294
|
+
/**
|
|
1295
|
+
* The time at constant velocity.
|
|
1296
|
+
* @example 6000
|
|
1297
|
+
*/
|
|
1298
|
+
recordingMs: number;
|
|
1299
|
+
/** Whether the software position limits bound the motion. */
|
|
1300
|
+
limitedRange: boolean;
|
|
1301
|
+
warnings: string[];
|
|
1302
|
+
}
|
|
1303
|
+
/** The error that remains on one track after a recording, in LSB of its registers. */
|
|
1304
|
+
export interface IcMuTrackResidual {
|
|
1305
|
+
sineOffset: number;
|
|
1306
|
+
cosineOffset: number;
|
|
1307
|
+
gain: number;
|
|
1308
|
+
phase: number;
|
|
1309
|
+
phaseRange: 0 | 1;
|
|
1310
|
+
/** Whether the track passed the test of this iteration. */
|
|
1311
|
+
passed: boolean;
|
|
1312
|
+
}
|
|
1313
|
+
/** A curve over the ring: at most 720 points of [ring angle in degrees, value]. The value is in the unit of phaseRangeLimit. */
|
|
1314
|
+
export type IcMuCalibrationCurve = number[][];
|
|
1315
|
+
/** What one calibration iteration recorded and wrote. */
|
|
1316
|
+
export interface IcMuCalibrationIteration {
|
|
1317
|
+
/** @example 1 */
|
|
1318
|
+
iteration: number;
|
|
1319
|
+
direction: 1 | -1;
|
|
1320
|
+
/** @example 0.75 */
|
|
1321
|
+
velocityRpm: number;
|
|
1322
|
+
/**
|
|
1323
|
+
* The samples analysed.
|
|
1324
|
+
* @example 6000
|
|
1325
|
+
*/
|
|
1326
|
+
samples: number;
|
|
1327
|
+
/**
|
|
1328
|
+
* Turns of the ring the recording covered.
|
|
1329
|
+
* @example 8.9
|
|
1330
|
+
*/
|
|
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;
|
|
1342
|
+
/** Present when the recording covered less than one turn of the ring. */
|
|
1343
|
+
warning?: string;
|
|
1344
|
+
/** The permissible nonius phase error. */
|
|
1345
|
+
phaseRangeLimit: number;
|
|
1346
|
+
/** The tolerance of the pass test */
|
|
1347
|
+
tolerance: 1 | 3 | 5;
|
|
1348
|
+
/** The error that remains on one track after a recording, in LSB of its registers. */
|
|
1349
|
+
master: IcMuTrackResidual;
|
|
1350
|
+
/** The error that remains on one track after a recording, in LSB of its registers. */
|
|
1351
|
+
nonius: IcMuTrackResidual;
|
|
1352
|
+
/** A curve over the ring: at most 720 points of [ring angle in degrees, value]. The value is in the unit of phaseRangeLimit. */
|
|
1353
|
+
phaseError: IcMuCalibrationCurve;
|
|
1354
|
+
}
|
|
1355
|
+
/** The validation pass of an iC-MU calibration: the nonius phase margins the encoder now holds. It passes when both are at least 10 %. */
|
|
1356
|
+
export interface IcMuCalibrationValidation {
|
|
1357
|
+
/** @example 3 */
|
|
1358
|
+
iteration: number;
|
|
1359
|
+
direction: 1 | -1;
|
|
1360
|
+
/** @example 0.75 */
|
|
1361
|
+
velocityRpm: number;
|
|
1362
|
+
/** @example 6000 */
|
|
1363
|
+
samples: number;
|
|
1364
|
+
/** @example 8.9 */
|
|
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;
|
|
1376
|
+
warning?: string;
|
|
1377
|
+
phaseRangeLimit: number;
|
|
1378
|
+
/** A curve over the ring: at most 720 points of [ring angle in degrees, value]. The value is in the unit of phaseRangeLimit. */
|
|
1379
|
+
phaseMargin: IcMuCalibrationCurve;
|
|
1380
|
+
/** @example 78.5 */
|
|
1381
|
+
lowerMarginPercent: number;
|
|
1382
|
+
/** @example 75 */
|
|
1383
|
+
upperMarginPercent: number;
|
|
1384
|
+
/**
|
|
1385
|
+
* The smaller of the two margins.
|
|
1386
|
+
* @example 75
|
|
1387
|
+
*/
|
|
1388
|
+
marginPercent: number;
|
|
1389
|
+
/** robust from 50 %, small-displacements from 30 %, avoid-displacements from 10 %, and too-high below 10 %, where the validation fails. */
|
|
1390
|
+
marginBand: "robust" | "small-displacements" | "avoid-displacements" | "too-high";
|
|
1391
|
+
/** What the band means for the user. */
|
|
1392
|
+
marginMessage: string;
|
|
1393
|
+
passed: boolean;
|
|
1394
|
+
/** Present after a full calibration of the commutation encoder: the commutation offset must be measured again. */
|
|
1395
|
+
commutationWarning?: string;
|
|
1396
|
+
}
|
|
1397
|
+
/** A decoded iC-MU restore file, `circulo_integrated_encoder_<sensor port>_config.bin`. The drive writes these pairs into the encoder when the iC-MU reports a corrupted EEPROM. */
|
|
1398
|
+
export interface IcMuRestoreFile {
|
|
1399
|
+
/** One entry for each pair, in the order of the file. */
|
|
1400
|
+
entries: {
|
|
1401
|
+
/**
|
|
1402
|
+
* The iC-MU RAM address the drive writes the value into.
|
|
1403
|
+
* @min 0
|
|
1404
|
+
* @max 255
|
|
1405
|
+
* @example 12
|
|
1406
|
+
*/
|
|
1407
|
+
address: number;
|
|
1408
|
+
/**
|
|
1409
|
+
* @min 0
|
|
1410
|
+
* @max 255
|
|
1411
|
+
* @example 108
|
|
1412
|
+
*/
|
|
1413
|
+
value: number;
|
|
1414
|
+
/** The iC-MU register at the address, as `/api/meta/ic-haus-registers` lists it, or null for an address the register map does not list. */
|
|
1415
|
+
register: IcHausRegister | null;
|
|
1416
|
+
}[];
|
|
1417
|
+
}
|
|
996
1418
|
/** A procedure's parameters. Which fields apply is per procedure, and each descriptor reports its own in `parameters` — so this schema is open, and a procedure that takes none may be started with no body at all. The properties below are the union of every procedure's, each naming the procedure it belongs to. */
|
|
997
1419
|
export interface ProcedureRequest {
|
|
998
1420
|
/**
|
|
@@ -1003,7 +1425,7 @@ export interface ProcedureRequest {
|
|
|
1003
1425
|
*/
|
|
1004
1426
|
command?: number[];
|
|
1005
1427
|
/**
|
|
1006
|
-
* 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.
|
|
1007
1429
|
* @min 1
|
|
1008
1430
|
* @max 600000
|
|
1009
1431
|
* @default 1000
|
|
@@ -1026,25 +1448,30 @@ export interface ProcedureRequest {
|
|
|
1026
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`.) */
|
|
1027
1449
|
fsBufferData?: string;
|
|
1028
1450
|
/**
|
|
1029
|
-
* `encoder-register-communication`
|
|
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.
|
|
1030
1452
|
* @default 1
|
|
1031
1453
|
* @example 1
|
|
1032
1454
|
*/
|
|
1033
|
-
|
|
1455
|
+
encoderOrdinal?: 1 | 2;
|
|
1034
1456
|
/**
|
|
1035
|
-
* `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.
|
|
1036
1458
|
* @default false
|
|
1037
1459
|
*/
|
|
1038
1460
|
write?: boolean;
|
|
1039
1461
|
/**
|
|
1040
|
-
* `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.
|
|
1041
1463
|
* @min 0
|
|
1042
1464
|
* @max 255
|
|
1043
1465
|
* @example 117
|
|
1044
1466
|
*/
|
|
1045
1467
|
registerAddress?: number;
|
|
1046
1468
|
/**
|
|
1047
|
-
* `
|
|
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.
|
|
1048
1475
|
* @min 0
|
|
1049
1476
|
* @max 255
|
|
1050
1477
|
* @default 0
|
|
@@ -1068,6 +1495,39 @@ export interface ProcedureRequest {
|
|
|
1068
1495
|
* @example "configuration"
|
|
1069
1496
|
*/
|
|
1070
1497
|
mode?: "configuration" | "raw" | "standard";
|
|
1498
|
+
/**
|
|
1499
|
+
* `ic-mu-encoder-configuration` only, and only on the multiturn path: the current the iC-PVL draws from the battery while the drive has no power. A higher current lets it count revolutions at a higher acceleration. `default` takes iC-PVL code 0x5D for an encoder on the motor shaft and 0x68 for one on the driving shaft, and refuses an encoder that serves no controller. A ring of 16 master pole pairs takes only `default`. The `ic-mu-encoder-status` result lists the modes of each encoder with the acceleration each one allows.
|
|
1500
|
+
* @default "default"
|
|
1501
|
+
* @example "18-microamperes"
|
|
1502
|
+
*/
|
|
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;
|
|
1509
|
+
/**
|
|
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.
|
|
1511
|
+
* @example "inner"
|
|
1512
|
+
*/
|
|
1513
|
+
ringPosition?: "inner" | "outer";
|
|
1514
|
+
/**
|
|
1515
|
+
* `ic-mu-calibration` only: runs one validation pass, which reports the nonius phase margins of the calibration the encoder holds, and writes nothing to the encoder.
|
|
1516
|
+
* @default false
|
|
1517
|
+
*/
|
|
1518
|
+
measurementOnly?: boolean;
|
|
1519
|
+
/**
|
|
1520
|
+
* `ic-mu-calibration` only: after a full calibration, shows the NON_CTR error of the iC-MU in the BiSS error bit, register 0x0C = 0x2C.
|
|
1521
|
+
* @default false
|
|
1522
|
+
*/
|
|
1523
|
+
activateHealthMonitoring?: boolean;
|
|
1524
|
+
/**
|
|
1525
|
+
* `ic-mu-calibration` only: the velocity of the encoder's ring in rpm, on whichever shaft the encoder sits. Without it a motor-shaft encoder runs at the velocity measured for its ring and a driving-shaft encoder at 15 rpm. The 0.95 × 0x6080 cap still applies, and a narrow range between the software position limits replaces it with the velocity that fits.
|
|
1526
|
+
* @min 1
|
|
1527
|
+
* @max 1000
|
|
1528
|
+
* @example 90
|
|
1529
|
+
*/
|
|
1530
|
+
ringVelocity?: number;
|
|
1071
1531
|
/**
|
|
1072
1532
|
* `restore-default-parameters` only: which group of defaults to restore — all (0x1011:01), communication (0x1011:02), application (0x1011:03), or manufacturer (0x1011:04).
|
|
1073
1533
|
* @default "all"
|
|
@@ -1105,6 +1565,76 @@ export interface ProcedureRequest {
|
|
|
1105
1565
|
* @example 2
|
|
1106
1566
|
*/
|
|
1107
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;
|
|
1108
1638
|
[key: string]: any;
|
|
1109
1639
|
}
|
|
1110
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.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": {
|