motion-master-client 0.0.64 → 0.0.66
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/package.json +4 -2
- package/src/cli.d.ts +1 -0
- package/src/cli.js +161 -0
- package/src/cli.js.map +1 -0
- package/src/index.d.ts +1 -0
- package/src/index.js +1 -0
- package/src/index.js.map +1 -1
- package/src/lib/motion-master-req-res-client.d.ts +258 -179
- package/src/lib/motion-master-req-res-client.js +260 -179
- package/src/lib/motion-master-req-res-client.js.map +1 -1
- package/src/lib/os-command.d.ts +25 -0
- package/src/lib/os-command.js +33 -0
- package/src/lib/os-command.js.map +1 -0
- package/src/lib/parameter.d.ts +2 -2
- package/src/lib/parameter.js +7 -9
- package/src/lib/parameter.js.map +1 -1
- package/src/lib/types.d.ts +57 -125
- package/src/lib/types.js.map +1 -1
|
@@ -190,7 +190,7 @@ export declare class MotionMasterReqResClient {
|
|
|
190
190
|
/**
|
|
191
191
|
* Get device file list.
|
|
192
192
|
*
|
|
193
|
-
* Motion Master will use Filetransfer over EtherCAT (FoE) to
|
|
193
|
+
* Motion Master will use Filetransfer over EtherCAT (FoE) to obtain the list of files from a device.
|
|
194
194
|
* There isn't an actual command for getting the list, but rather the content of a specially named file "fs-getlist" is the file list.
|
|
195
195
|
* The list can be read like any other file from a device using the IgH EtherCAT Master for Linux CLI program:
|
|
196
196
|
*
|
|
@@ -198,34 +198,34 @@ export declare class MotionMasterReqResClient {
|
|
|
198
198
|
* $ ethercat foe_read fs-getlist
|
|
199
199
|
* ```
|
|
200
200
|
*
|
|
201
|
-
* At the time of writing this document "fs-getlist" can return a maximum of 32 files (subject to change) in the list. This is a firmware limitation.
|
|
202
|
-
* However, more than 32 files can be stored on device flash memory, but they won't appear in the list.
|
|
203
|
-
* Also note that FoE can behave differently in the bootstrap firmware which runs in the BOOT EtherCAT state and
|
|
204
|
-
* SOMANET firmware which runs in other EtherCAT states like PREOP/OP. Bootstrap tends to be buggier since it cannot be updated easily, so
|
|
201
|
+
* At the time of writing this document, "fs-getlist" can return a maximum of 32 files (subject to change) in the list. This is a firmware limitation.
|
|
202
|
+
* However, more than 32 files can be stored on the device flash memory, but they won't appear in the list.
|
|
203
|
+
* Also, note that FoE can behave differently in the bootstrap firmware, which runs in the BOOT EtherCAT state, and
|
|
204
|
+
* SOMANET firmware, which runs in other EtherCAT states like PREOP/OP. Bootstrap tends to be buggier since it cannot be updated easily, so
|
|
205
205
|
* Motion Master has certain workarounds to overcome these FoE differences and bugs.
|
|
206
206
|
*/
|
|
207
207
|
getDeviceFileList(props: GetDeviceFileListRequest, requestTimeout: number, messageId?: string): Observable<DeviceFileListStatus>;
|
|
208
208
|
/**
|
|
209
209
|
* Get device file.
|
|
210
210
|
*
|
|
211
|
-
* Motion Master uses
|
|
211
|
+
* Motion Master uses Filetransfer over EtherCAT (FoE) to read and send back the content of a file from the device flash memory.
|
|
212
212
|
*
|
|
213
213
|
* The IgH EtherCAT Master library used by Motion Master limits the file read buffer to 9KB, so any file written to flash that is larger than 9KB
|
|
214
214
|
* needs to be split into parts of max 9KB. Motion Master does this automatically on request to {@link setDeviceFile}.
|
|
215
215
|
*
|
|
216
|
-
* Upon receiving this request Motion Master will first read the list of files on a device, see {@link getDeviceFileList}.
|
|
217
|
-
* It does that in order to determine if the requested file, for example "SOMANET_CiA_402.xml"
|
|
218
|
-
* The parts are named like "SOMANET_CiA_402.xml.zip.part000"
|
|
219
|
-
* Motion Master will read all parts of the requested file, unzip it and send the content back to a client.
|
|
220
|
-
* Since the number of items in the list of files is limited to 32 (based on the firmware version) Motion Master might not see the file,
|
|
221
|
-
* but in any case it will try to read the content of it.
|
|
222
|
-
* If the file exists it will return its content
|
|
216
|
+
* Upon receiving this request, Motion Master will first read the list of files on a device, see {@link getDeviceFileList}.
|
|
217
|
+
* It does that in order to determine if the requested file, for example, "SOMANET_CiA_402.xml," has been stored in multiple parts.
|
|
218
|
+
* The parts are named like "SOMANET_CiA_402.xml.zip.part000," "SOMANET_CiA_402.xml.zip.part001," and so on.
|
|
219
|
+
* Motion Master will read all parts of the requested file, unzip it, and send the content back to a client.
|
|
220
|
+
* Since the number of items in the list of files is limited to 32 (based on the firmware version), Motion Master might not see the file,
|
|
221
|
+
* but in any case, it will try to read the content of it.
|
|
222
|
+
* If the file exists, it will return its content; otherwise, it will return the file not found error.
|
|
223
223
|
*
|
|
224
|
-
* Zipped files will be automatically unzipped and their content returned
|
|
225
|
-
* in one or multiple files depending on the size. No matter how
|
|
224
|
+
* Zipped files will be automatically unzipped, and their content returned; for example, "stack_image.svg.zip" can be stored
|
|
225
|
+
* in one or multiple files depending on the size. No matter how it's stored, it will be unzipped, and its content returned as
|
|
226
226
|
* text (SVG) instead of zipped content (binary).
|
|
227
227
|
*
|
|
228
|
-
* In BOOT EtherCAT state it's only allowed to read the .hardware_description file. This was done because
|
|
228
|
+
* In BOOT EtherCAT state, it's only allowed to read the .hardware_description file. This was done because
|
|
229
229
|
* the bootloader firmware would hang when trying to read a corrupted or missing file.
|
|
230
230
|
*
|
|
231
231
|
* If the requested file content is empty, Motion Master will return a not found error. This is subject to change now that Motion Master reads the file error codes.
|
|
@@ -234,98 +234,98 @@ export declare class MotionMasterReqResClient {
|
|
|
234
234
|
/**
|
|
235
235
|
* Set device file.
|
|
236
236
|
*
|
|
237
|
-
* Motion Master uses
|
|
237
|
+
* Motion Master uses Filetransfer over EtherCAT (FoE) to write files to the device flash memory.
|
|
238
238
|
*
|
|
239
239
|
* The IgH EtherCAT Master library used by Motion Master limits the file read buffer to 9KB, so any file written to flash that is larger than 9KB
|
|
240
240
|
* needs to be split into parts of max 9KB. Motion Master does this automatically by first zipping the content and then writing the parts.
|
|
241
|
-
* The parts are named in the following manner: "SOMANET_CiA_402.xml.zip.part000"
|
|
241
|
+
* The parts are named in the following manner: "SOMANET_CiA_402.xml.zip.part000," "SOMANET_CiA_402.xml.zip.part001," and so on.
|
|
242
242
|
*/
|
|
243
243
|
setDeviceFile(props: SetDeviceFileRequest, requestTimeout: number, messageId?: string): Observable<DeviceFileStatus>;
|
|
244
244
|
/**
|
|
245
245
|
* Delete device file.
|
|
246
246
|
*
|
|
247
|
-
* Motion Master uses
|
|
247
|
+
* Motion Master uses Filetransfer over EtherCAT (FoE) to delete files from the device flash memory.
|
|
248
248
|
*
|
|
249
249
|
* If the file to delete is written in parts, Motion Master will ensure that all parts are deleted.
|
|
250
|
-
* It does
|
|
251
|
-
*
|
|
252
|
-
* more than 32 files in the list, Motion Master will blindly try to make sure there are no file parts left in the memory (may
|
|
250
|
+
* It does this by reading the list of files on a device, see {@link getDeviceFileList}, removing all parts from that list, and then
|
|
251
|
+
* re-reading the list again to ensure that there are no leftovers if there were more than 32 files in the list. If there are still
|
|
252
|
+
* more than 32 files in the list, Motion Master will blindly try to make sure there are no file parts left in the memory (may or may not work).
|
|
253
253
|
*/
|
|
254
254
|
deleteDeviceFile(props: DeleteDeviceFileRequest, requestTimeout: number, messageId?: string): Observable<DeviceFileStatus>;
|
|
255
255
|
/**
|
|
256
256
|
* Reset device fault.
|
|
257
257
|
*
|
|
258
|
-
* When an error occurs on a device, the device will go into Fault reaction active state (transition 13) and then automatically to Fault state (transition 14).
|
|
259
|
-
* The CiA402 state of a device can be derived from the value of Statusword object (0x6041:00).
|
|
260
|
-
* In order to
|
|
258
|
+
* When an error occurs on a device, the device will go into the Fault reaction active state (transition 13) and then automatically to the Fault state (transition 14).
|
|
259
|
+
* The CiA402 state of a device can be derived from the value of the Statusword object (0x6041:00).
|
|
260
|
+
* In order to exit the Fault state and enter the Switch on disabled state (transition 15), the master must send a Fault reset command via the Controlword object (0x6040:00).
|
|
261
261
|
*
|
|
262
|
-
* When this request is sent to Motion Master, it will
|
|
263
|
-
* While resetting the fault, Motion Master will use the current Controlword value and set the Reset fault bit to 1
|
|
264
|
-
*
|
|
262
|
+
* When this request is sent to Motion Master, it will attempt to reset the fault. Resetting the fault can either succeed or fail.
|
|
263
|
+
* While resetting the fault, Motion Master will use the current Controlword value and set the Reset fault bit to 1.
|
|
264
|
+
* However, upon completion, whether successful or encountering an error, Motion Master will set it back to 0.
|
|
265
265
|
*
|
|
266
|
-
* Motion Master will return "No Fault" warning when this request is sent and device is not in Fault or Fault reaction active state.
|
|
267
|
-
* If this request is sent when device is in Fault reaction active state,
|
|
268
|
-
* wait for the automatic transition (14) to Fault state before
|
|
269
|
-
* When Motion Master sets the Controlword Fault bit to 1, it will also
|
|
270
|
-
* After a
|
|
266
|
+
* Motion Master will return a "No Fault" warning when this request is sent, and the device is not in the Fault or Fault reaction active state.
|
|
267
|
+
* If this request is sent when the device is in the Fault reaction active state, Motion Master will
|
|
268
|
+
* wait for the automatic transition (14) to the Fault state before attempting to reset the fault.
|
|
269
|
+
* When Motion Master sets the Controlword Fault bit to 1, it will also periodically check if the device is no longer in the Fault state.
|
|
270
|
+
* After a few seconds, if the device is still in the Fault state, Motion Master will give up and return a timeout error.
|
|
271
271
|
*/
|
|
272
272
|
resetDeviceFault(props: ResetDeviceFaultRequest, requestTimeout: number, messageId?: string): Observable<DeviceFaultResetStatus>;
|
|
273
273
|
/**
|
|
274
274
|
* Stop device.
|
|
275
275
|
*
|
|
276
276
|
* Motion Master will use the current value of the Controlword object and set the command on it to Quick stop.
|
|
277
|
-
* It will then wait for up to 2 seconds for a device to
|
|
278
|
-
*
|
|
277
|
+
* It will then wait for up to 2 seconds for a device to enter one of the following CiA402 states: Switch on disabled, Operation enabled, Fault.
|
|
278
|
+
* This is achieved by periodically checking the value of the Statusword object. If the device fails to enter one of those states within the specified time,
|
|
279
279
|
* Motion Master will return a timeout or a quick stop failed error.
|
|
280
280
|
*/
|
|
281
281
|
stopDevice(props: StopDeviceRequest, requestTimeout: number, messageId?: string): Observable<DeviceStopStatus>;
|
|
282
282
|
/**
|
|
283
283
|
* Start device firmware installation.
|
|
284
284
|
*
|
|
285
|
-
* When Motion Master receives this request for a device, it will
|
|
286
|
-
* -
|
|
287
|
-
* -
|
|
288
|
-
* -
|
|
289
|
-
* -
|
|
290
|
-
* - (
|
|
291
|
-
* -
|
|
285
|
+
* When Motion Master receives this request for a device, it will perform the following steps:
|
|
286
|
+
* - Switch the device to the BOOT EtherCAT state; the device will then run the bootloader instead of the firmware.
|
|
287
|
+
* - Validate the firmware package.
|
|
288
|
+
* - Delete files found in the package from the device flash memory (SOMANET_CiA_402.xml and stack_image.svg).
|
|
289
|
+
* - Write files other than the firmware binaries and SII from the package to the device (SOMANET_CiA_402.xml and stack_image.svg).
|
|
290
|
+
* - (Optional) Install the SII file using the IgH EtherCAT Master library write SII function, or SOEM EEPROM tool.
|
|
291
|
+
* - Write the firmware binaries to the device using predefined names like app_firmware.bin and com_firmware.bin.
|
|
292
292
|
*
|
|
293
293
|
* During the firmware installation, Motion Master will send progress messages back to clients.
|
|
294
|
-
* If Motion Master
|
|
294
|
+
* If Motion Master encounters a failure in any step other than SII write, it will send an error. If SII write fails, only a warning will be sent.
|
|
295
295
|
*/
|
|
296
296
|
startDeviceFirmwareInstallation(props: StartDeviceFirmwareInstallationRequest, requestTimeout: number, messageId?: string): Observable<DeviceFirmwareInstallationStatus>;
|
|
297
297
|
/**
|
|
298
298
|
* Get device log.
|
|
299
299
|
*
|
|
300
|
-
* The device log is stored in two files due to IgH EtherCAT Master library 9KB file size limitation,
|
|
301
|
-
*
|
|
300
|
+
* The device log is stored in two files due to the IgH EtherCAT Master library 9KB file size limitation, as explained in {@link getDeviceFile}.
|
|
301
|
+
* The device automatically writes the log to logging_curr.log and copies that file to logging_prev.log once it reaches 9KB.
|
|
302
302
|
* When Motion Master receives this request, it will read both of these files and return their combined contents.
|
|
303
303
|
*/
|
|
304
304
|
getDeviceLog(props: GetDeviceLogRequest, requestTimeout: number, messageId?: string): Observable<DeviceLogStatus>;
|
|
305
305
|
/**
|
|
306
306
|
* Start cogging torque recording.
|
|
307
307
|
*
|
|
308
|
-
* Cogging torque compensation (CTC) recording can be
|
|
309
|
-
* In the proto file skipping the auto-config is currently named skip_auto_tuning. The field name is deprecated and will be renamed.
|
|
308
|
+
* Cogging torque compensation (CTC) recording can be initiated with or without auto-config.
|
|
309
|
+
* In the proto file, skipping the auto-config is currently named skip_auto_tuning. The field name is deprecated and will be renamed.
|
|
310
310
|
*
|
|
311
|
-
* If CTC recording is started without auto-config,
|
|
312
|
-
* If this is not the case,
|
|
311
|
+
* If CTC recording is started without auto-config, users must ensure that the encoder on the motor shaft is used for all functions: commutation, position, and velocity.
|
|
312
|
+
* If this is not the case, Motion Master will return an invalid encoder configuration error.
|
|
313
313
|
* Recording can also fail if the position controller is not tuned.
|
|
314
314
|
*
|
|
315
|
-
* If CTC recording is started with auto-config
|
|
316
|
-
* -
|
|
317
|
-
* -
|
|
318
|
-
* -
|
|
319
|
-
* -
|
|
320
|
-
* -
|
|
315
|
+
* If CTC recording is started with auto-config, Motion Master will:
|
|
316
|
+
* - Change the encoder configuration to have all encoder functions on the motor shaft.
|
|
317
|
+
* - Disable CTC.
|
|
318
|
+
* - Change the velocity feed forward value.
|
|
319
|
+
* - Change the position and velocity filter types and cutoff frequencies.
|
|
320
|
+
* - Run iterative sharpening position controller auto-tuning to compute the optimal PID values (gains) for CTC recording.
|
|
321
321
|
*
|
|
322
|
-
* All parameter values that Motion Master changes as part of the auto-config are first stored in memory and once the CTC recording is done are reverted back.
|
|
322
|
+
* All parameter values that Motion Master changes as part of the auto-config are first stored in memory and once the CTC recording is done, they are reverted back.
|
|
323
323
|
*
|
|
324
|
-
* CTC recording is
|
|
325
|
-
* During the operation Motion Master will monitor the Cogging torque compensation state parameter (0x2008:01) to know when the recording is in progress and when it's done.
|
|
324
|
+
* CTC recording is initiated by changing the Modes of operation (0x6060) parameter value to -1 (Cogging compensation recording mode).
|
|
325
|
+
* During the operation, Motion Master will monitor the Cogging torque compensation state parameter (0x2008:01) to know when the recording is in progress and when it's done.
|
|
326
326
|
*
|
|
327
|
-
* The result of CTC recording is the cogging_torque.bin file written to device flash memory. The size of this file is 2048 bytes.
|
|
328
|
-
* Each pair of bytes represents a 16-bit signed integer value in mNm (millinewton
|
|
327
|
+
* The result of CTC recording is the cogging_torque.bin file written to the device flash memory. The size of this file is 2048 bytes.
|
|
328
|
+
* Each pair of bytes represents a 16-bit signed integer value in mNm (millinewton-meter).
|
|
329
329
|
*
|
|
330
330
|
* This request will turn the motor.
|
|
331
331
|
*/
|
|
@@ -333,26 +333,26 @@ export declare class MotionMasterReqResClient {
|
|
|
333
333
|
/**
|
|
334
334
|
* Get cogging torque data.
|
|
335
335
|
*
|
|
336
|
-
* The cogging_torque.bin file is the result of cogging torque compensation recording,
|
|
337
|
-
* The size of this file is 2048 bytes where each pair of bytes represents a 16-bit signed integer value in mNm (millinewton
|
|
336
|
+
* The cogging_torque.bin file is the result of cogging torque compensation recording, as explained in {@link startCoggingTorqueRecording}.
|
|
337
|
+
* The size of this file is 2048 bytes, where each pair of bytes represents a 16-bit signed integer value in mNm (millinewton-meter).
|
|
338
338
|
*
|
|
339
|
-
* Motion Master will read the cogging_torque.bin file, convert bytes to 16-bit signed integer values and return
|
|
339
|
+
* Motion Master will read the cogging_torque.bin file, convert the bytes to 16-bit signed integer values, and return them as an array of numbers.
|
|
340
340
|
*/
|
|
341
341
|
getCoggingTorqueData(props: GetCoggingTorqueDataRequest, requestTimeout: number, messageId?: string): Observable<CoggingTorqueDataStatus>;
|
|
342
342
|
/**
|
|
343
343
|
* Start offset detection.
|
|
344
344
|
*
|
|
345
|
-
* Running offset detection
|
|
345
|
+
* Running offset detection differs for firmwares <v5 and >=v5.
|
|
346
346
|
*
|
|
347
|
-
* For devices
|
|
348
|
-
* Before
|
|
349
|
-
* it's put into operation
|
|
350
|
-
* -
|
|
351
|
-
* -
|
|
352
|
-
* -
|
|
353
|
-
* -
|
|
354
|
-
* -
|
|
355
|
-
* -
|
|
347
|
+
* For devices running firmware >=v5, Motion Master will execute multiple OS commands.
|
|
348
|
+
* Before initiating any command, the device is switched to Modes of operation -2 (Diagnostics mode), and
|
|
349
|
+
* it's put into the operation-enabled CiA402 state. The OS commands are then executed in the following order:
|
|
350
|
+
* - Open phase detection
|
|
351
|
+
* - Phase resistance measurement
|
|
352
|
+
* - Phase inductance measurement
|
|
353
|
+
* - Pole pair detection
|
|
354
|
+
* - Motor phase order detection
|
|
355
|
+
* - Commutation offset measurement
|
|
356
356
|
*
|
|
357
357
|
* Motion Master will return an error if any of the following OS commands fail: open phase detection,
|
|
358
358
|
* phase order detection, commutation offset measurement.
|
|
@@ -361,10 +361,11 @@ export declare class MotionMasterReqResClient {
|
|
|
361
361
|
* Once the commutation offset measurement command completes, it will update the following parameter values:
|
|
362
362
|
* - 0x2001:00 Commutation angle offset to the computed offset value
|
|
363
363
|
* - 0x2009:01 Commutation offset State to 2 (OFFSET_VALID)
|
|
364
|
+
* - 0x2003:05 Motor phases inverted will be changed by the firmware
|
|
364
365
|
*
|
|
365
|
-
* For devices
|
|
366
|
-
* and it will run as a single procedure as soon as the device is switched to CiA402 operation
|
|
367
|
-
* The end result is the same
|
|
366
|
+
* For devices running firmware <5, the same Modes of operation -2 is used, but it's named Commutation offset detection mode,
|
|
367
|
+
* and it will run as a single procedure as soon as the device is switched to CiA402 operation-enabled state.
|
|
368
|
+
* The end result is the same; the procedure will update 0x2001:00 and 0x2009:01 parameter values.
|
|
368
369
|
*
|
|
369
370
|
* This request will turn the motor.
|
|
370
371
|
*/
|
|
@@ -374,13 +375,13 @@ export declare class MotionMasterReqResClient {
|
|
|
374
375
|
*/
|
|
375
376
|
startPlantIdentification(props: StartPlantModelIdentificationRequest & DeviceRefObj, requestTimeout: number, messageId?: string): Observable<PlantIdentificationStatus>;
|
|
376
377
|
/**
|
|
377
|
-
* Compute auto
|
|
378
|
+
* Compute auto-tuning gains.
|
|
378
379
|
*
|
|
379
|
-
* Auto
|
|
380
|
+
* Auto-tuning gains can be computed for the position or the velocity controller.
|
|
380
381
|
*
|
|
381
382
|
* The prerequisites for running this procedure are a configured motor and the existence of
|
|
382
|
-
* plant_model.csv file created by previously running the system identification {@link startSystemIdentification}.
|
|
383
|
-
* Motion Master will return error if the plant_model.csv file is not found.
|
|
383
|
+
* the plant_model.csv file created by previously running the system identification {@link startSystemIdentification}.
|
|
384
|
+
* Motion Master will return an error if the plant_model.csv file is not found.
|
|
384
385
|
*
|
|
385
386
|
* In OBLAC Drives, this request is called when the tuning sliders (damping ratio, bandwidth) are moved and
|
|
386
387
|
* during the CTC recording {@link startCoggingTorqueRecording} when auto-config is not skipped.
|
|
@@ -401,7 +402,7 @@ export declare class MotionMasterReqResClient {
|
|
|
401
402
|
*
|
|
402
403
|
* This request will set the mode of operation to CSP, CSV, or CST and optionally enable filtering.
|
|
403
404
|
*
|
|
404
|
-
* If filtering is enabled Motion Master will compute an intermediate target value in each cycle and
|
|
405
|
+
* If filtering is enabled, Motion Master will compute an intermediate target value in each cycle, and depending on the active mode of operation,
|
|
405
406
|
* set the value of one of 0x607A Target position, 0x60FF Target velocity, 0x6071 Target torque to that value.
|
|
406
407
|
*
|
|
407
408
|
* The target value can be updated with {@link setMotionControllerParameters}.
|
|
@@ -410,9 +411,9 @@ export declare class MotionMasterReqResClient {
|
|
|
410
411
|
/**
|
|
411
412
|
* Disable motion controller.
|
|
412
413
|
*
|
|
413
|
-
* Depending on the current CiA402 state this request will do the following:
|
|
414
|
-
* -
|
|
415
|
-
* -
|
|
414
|
+
* Depending on the current CiA402 state, this request will do the following:
|
|
415
|
+
* - If the device is in Quick stop active, it will transition to Switch on disabled state.
|
|
416
|
+
* - If the device is in Operation enabled, it will transition to Switched on state.
|
|
416
417
|
*/
|
|
417
418
|
disableMotionController(props: MotionMasterMessage.Request.IDisableMotionController & DeviceRefObj, requestTimeout: number, messageId?: string): Observable<MotionControllerStatus>;
|
|
418
419
|
/**
|
|
@@ -420,7 +421,7 @@ export declare class MotionMasterReqResClient {
|
|
|
420
421
|
*
|
|
421
422
|
* This request will update the signal generator parameter values for a device on Motion Master.
|
|
422
423
|
* The selected signal generator is then started by {@link startSignalGenerator}.
|
|
423
|
-
*
|
|
424
|
+
* The signal generator must be started within the next 60 seconds before Motion Master invalidates the previously set parameters.
|
|
424
425
|
*/
|
|
425
426
|
setSignalGeneratorParameters(props: SetSignalGeneratorParametersRequest, requestTimeout: number, messageId?: string): Observable<SignalGeneratorStatus>;
|
|
426
427
|
/**
|
|
@@ -430,7 +431,7 @@ export declare class MotionMasterReqResClient {
|
|
|
430
431
|
* previously set parameters with {@link setSignalGeneratorParameters}.
|
|
431
432
|
*
|
|
432
433
|
* Signal generators are started by changing the mode of operation, putting the device into Operation enabled CiA402 state,
|
|
433
|
-
* and setting the target value.
|
|
434
|
+
* and setting the target value. The mode of operation set depends on the type of signal generator and the selected controller:
|
|
434
435
|
* - For the simple & advanced step response and the sine wave, one of CSP, CSV, or CST is set.
|
|
435
436
|
* - For the ramp, trapezoidal, and bidirectional signal generators, also called profiles, one of the PP, PV, TQ is set.
|
|
436
437
|
*
|
|
@@ -440,29 +441,29 @@ export declare class MotionMasterReqResClient {
|
|
|
440
441
|
* Firmwares >=5.2 will support generating and running sine wave profiles on devices themselves. This will enable lossless profile
|
|
441
442
|
* execution on possibly higher frequencies. Future Motion Master versions will switch to this method.
|
|
442
443
|
*
|
|
443
|
-
* For the simple step response, Motion Master will only set the target value,
|
|
444
|
-
*
|
|
444
|
+
* For the simple step response, Motion Master will only set the target value, wait for the specified holding duration,
|
|
445
|
+
* and then send a Quick Stop command.
|
|
445
446
|
*
|
|
446
447
|
* The advanced step response is similar to the simple one, but, after the holding duration, it will set the new target
|
|
447
448
|
* multiple times depending on the shape, and then send a Quick Stop if the repeat option is set to NO. If repeat is set to YES,
|
|
448
|
-
* then the signal generator will run indefinitely and the users must stop it manually.
|
|
449
|
+
* then the signal generator will run indefinitely, and the users must stop it manually.
|
|
449
450
|
*
|
|
450
|
-
* Before running a profile, Motion Master will check if device supports the profile modes by looking at 0x6502 Supported
|
|
451
|
-
* If profile modes are not supported, then the profiles will be generated on Motion Master. This means the targets will be computed
|
|
452
|
-
* If profiles are supported, then ramp, trapezoidal, and bidirectional signal generators are run in profile mode of operation.
|
|
453
|
-
* To prepare the signal generator
|
|
454
|
-
* - 0x6081:00 Profile velocity (only for position controller)
|
|
451
|
+
* Before running a profile, Motion Master will check if the device supports the profile modes by looking at 0x6502 Supported drive modes.
|
|
452
|
+
* If profile modes are not supported, then the profiles will be generated on Motion Master. This means the targets will be computed upfront.
|
|
453
|
+
* If profiles are supported, then the ramp, trapezoidal, and bidirectional signal generators are run in profile mode of operation.
|
|
454
|
+
* To prepare the signal generator for execution, Motion Master will set the following parameters:
|
|
455
|
+
* - 0x6081:00 Profile velocity (only for the position controller)
|
|
455
456
|
* - 0x6083:00 Profile acceleration
|
|
456
457
|
* - 0x6084:00 Profile deceleration
|
|
457
458
|
* Motion Master knows when the profile has completed by comparing the demand with the actual value, taking into account the
|
|
458
459
|
* holding duration and the shape of the profile. Once the profile is considered complete, Motion Master will send a Quick Stop, but
|
|
459
460
|
* only if repeat is set to NO.
|
|
460
461
|
*
|
|
461
|
-
* The sine wave profile is generated
|
|
462
|
+
* The sine wave profile is generated upfront on Motion Master. Targets are computed for each master cycle (millisecond).
|
|
462
463
|
* Once the last computed target has been set, Motion Master will send a Quick Stop if repeat is set to NO.
|
|
463
464
|
*
|
|
464
465
|
* For all signal generators, Motion Master will check the requested target against the currently set software position limits
|
|
465
|
-
* and, if necessary, alter it
|
|
466
|
+
* and, if necessary, alter it while returning a warning.
|
|
466
467
|
*
|
|
467
468
|
* This request will turn the motor.
|
|
468
469
|
*/
|
|
@@ -470,30 +471,30 @@ export declare class MotionMasterReqResClient {
|
|
|
470
471
|
/**
|
|
471
472
|
* Stop signal generator.
|
|
472
473
|
*
|
|
473
|
-
* This request will send a Quick Stop to the device.
|
|
474
|
+
* This request will send a Quick Stop command to the device.
|
|
474
475
|
*/
|
|
475
476
|
stopSignalGenerator(props: StopSignalGeneratorRequest, requestTimeout: number, messageId?: string): Observable<SignalGeneratorStatus>;
|
|
476
477
|
/**
|
|
477
478
|
* Start monitoring device parameter values.
|
|
478
479
|
*
|
|
479
480
|
* When monitoring is started, Motion Master will begin and continue reading values from the device
|
|
480
|
-
* and send them back to a client
|
|
481
|
+
* and send them back to a client at the specified interval on the given topic.
|
|
481
482
|
*
|
|
482
483
|
* The request is made through the req/res socket {@link MotionMasterReqResSocket},
|
|
483
484
|
* but the status messages will arrive on the pub/sub socket {@link MotionMasterPubSubSocket}.
|
|
484
485
|
*
|
|
485
486
|
* The same monitoring can read both PDO and SDO values. PDO values will be updated on every Motion Master cycle (1ms).
|
|
486
|
-
* How fast
|
|
487
|
-
* so, for example, if there are 10 SDOs and it takes 20ms to read a single SDO it will take approximately 200ms for each SDO to get updated.
|
|
487
|
+
* How fast SDO values will update depends on the number of SDOs being monitored. Motion Master reads the SDO values in a sequence,
|
|
488
|
+
* so, for example, if there are 10 SDOs and it takes 20ms to read a single SDO, it will take approximately 200ms for each SDO to get updated.
|
|
488
489
|
* IgH EtherCAT Master supports non-blocking SDO reading with a request to read and check the state of the request (one of not used, busy, failed, succeeded).
|
|
489
|
-
*
|
|
490
|
+
* A future version of Motion Master will likely leverage this and update SDO values out of order as each of the requests to update SDO succeeds.
|
|
490
491
|
* This should decrease the time it takes to read multiple SDOs.
|
|
491
492
|
* If a parameter is required to be updated more frequently, it should be mapped as a PDO.
|
|
492
493
|
*
|
|
493
|
-
* Firmware versions >=5.2
|
|
494
|
-
* With SDO complete access RECORD and ARRAY subitems can be read with a single request.
|
|
494
|
+
* Firmware versions >=5.2 support SDO complete access, but it is currently not being supported in Motion Master.
|
|
495
|
+
* With SDO complete access, RECORD and ARRAY subitems can be read with a single request.
|
|
495
496
|
*
|
|
496
|
-
*
|
|
497
|
+
* The interval is given in microseconds.
|
|
497
498
|
*
|
|
498
499
|
* The topic should be unique. The previous monitoring will stop if the given topic is reused.
|
|
499
500
|
* Clients can easily stop one another's monitoring by using the same topic.
|
|
@@ -502,7 +503,7 @@ export declare class MotionMasterReqResClient {
|
|
|
502
503
|
* When the monitoring request is received, Motion Master will mark all requested parameters as stale.
|
|
503
504
|
* The first time a parameter gets refreshed from a device, it'll be marked as not stale.
|
|
504
505
|
* Motion Master won't start publishing parameter values until all parameters are marked as not stale.
|
|
505
|
-
* This was done
|
|
506
|
+
* This was done to satisfy the firmware test client applications.
|
|
506
507
|
*
|
|
507
508
|
* Stopping the ongoing monitoring is done through the req/res socket using
|
|
508
509
|
* the request message ID of the initial start monitoring message {@link stopMonitoringDeviceParameterValues}.
|
|
@@ -511,7 +512,7 @@ export declare class MotionMasterReqResClient {
|
|
|
511
512
|
/**
|
|
512
513
|
* Stop monitoring device parameter values.
|
|
513
514
|
*
|
|
514
|
-
* Message ID used for {@link startMonitoringDeviceParameterValues} uniquely identifies a monitoring and is used for stopping it.
|
|
515
|
+
* The Message ID used for {@link startMonitoringDeviceParameterValues} uniquely identifies a monitoring and is used for stopping it.
|
|
515
516
|
*/
|
|
516
517
|
stopMonitoringDeviceParameterValues(props: StopMonitoringDeviceParameterValuesRequest, messageId?: string): Observable<MonitoringParameterValuesStatus>;
|
|
517
518
|
/**
|
|
@@ -527,7 +528,7 @@ export declare class MotionMasterReqResClient {
|
|
|
527
528
|
* Set the EtherCAT network state to one of: BOOT, INIT, PRE-OP, SAFE-OP, OP.
|
|
528
529
|
* The state is set by an enum value: INIT: 1, PREOP: 2, BOOT: 3, SAFEOP: 4, OP: 5.
|
|
529
530
|
*
|
|
530
|
-
* When switching from PRE-OP to OP, MM will reinitialize slaves
|
|
531
|
+
* When switching from PRE-OP to OP, MM will reinitialize slaves to update the PDO mapping.
|
|
531
532
|
*/
|
|
532
533
|
setEthercatNetworkState(props: SetEthercatNetworkStateRequest, requestTimeout: number, messageId?: string): Observable<EthercatNetworkStateStatus>;
|
|
533
534
|
/**
|
|
@@ -539,38 +540,38 @@ export declare class MotionMasterReqResClient {
|
|
|
539
540
|
*
|
|
540
541
|
* This request will update the client timeout.
|
|
541
542
|
*
|
|
542
|
-
*
|
|
543
|
+
* The client timeout specifies how long Motion Master will wait for the client to send a ping or any other message before
|
|
543
544
|
* considering it gone and clearing the resources (stopping procedures and monitorings) related to that client.
|
|
544
545
|
*
|
|
545
|
-
*
|
|
546
|
+
* The default client timeout is 1000ms.
|
|
546
547
|
*
|
|
547
|
-
*
|
|
548
|
+
* Clients will typically change this once the socket connection is established.
|
|
548
549
|
*/
|
|
549
550
|
setSystemClientTimeout(props: SetSystemClientTimeoutRequest, messageId?: string): Observable<never>;
|
|
550
551
|
/**
|
|
551
552
|
* Start system identification.
|
|
552
553
|
*
|
|
553
|
-
* This request will run the system identification procedure which identifies the plant model.
|
|
554
|
+
* This request will run the system identification procedure, which identifies the plant model.
|
|
554
555
|
*
|
|
555
556
|
* Pre-conditions: a configured motor and configured encoders.
|
|
556
557
|
*
|
|
557
|
-
* The chirp signal that the procedure
|
|
558
|
-
* The chirp signal is generated on Motion Master and then, on every master cycle (1ms), the target torque value is set on a device.
|
|
558
|
+
* The chirp signal that the procedure generates only uses the torque controller.
|
|
559
|
+
* The chirp signal is generated on Motion Master, and then, on every master cycle (1ms), the target torque value is set on a device.
|
|
559
560
|
* Motion Master will send a Quick Stop to a device after the last target value is set.
|
|
560
561
|
*
|
|
561
|
-
* The request can fail for multiple reasons: device is in the fault state, cannot set the op mode state,
|
|
562
|
+
* The request can fail for multiple reasons: the device is in the fault state, cannot set the op mode state,
|
|
562
563
|
* or the system identification fails because not enough data points have been collected.
|
|
563
|
-
* While running the chirp signal, the data points are collected, but due to potential communication lag it can happen
|
|
564
|
-
* that master doesn't collect enough data points. If more than 80% of data points are missing, the procedure will fail.
|
|
565
|
-
* If between 20%-80% of data points are missing, only a warning will be returned.
|
|
564
|
+
* While running the chirp signal, the data points are collected, but due to potential communication lag, it can happen
|
|
565
|
+
* that the master doesn't collect enough data points. If more than 80% of data points are missing, the procedure will fail.
|
|
566
|
+
* If between 20%-80% of data points are missing, only a warning will be returned. The exact thresholds are subject to change.
|
|
566
567
|
*
|
|
567
568
|
* Before computing the plant model data based on the collected data points, Motion Master will interpolate the missing data points.
|
|
568
|
-
* Plant model data is then computed and written to plant_model.csv file on the device flash memory.
|
|
569
|
+
* Plant model data is then computed and written to the plant_model.csv file on the device flash memory.
|
|
569
570
|
* The plant model file is later used to compute the PID values using {@link computeAutoTuningGains} and {@link startFullAutoTuning}.
|
|
570
571
|
* It's also used indirectly in {@link startCoggingTorqueRecording} when auto-config is turned on.
|
|
571
572
|
* Motion Master will also update the integral limit values in 0x2011: Velocity controller and 0x2012: Position controller during this procedure.
|
|
572
573
|
*
|
|
573
|
-
* In future versions of firmware, the chirp signal would be executed on the devices themselves, so no data points will be missing
|
|
574
|
+
* In future versions of the firmware, the chirp signal would be executed on the devices themselves, so no data points will be missing,
|
|
574
575
|
* and the system identification will be able to run at higher frequencies and with higher precision.
|
|
575
576
|
*
|
|
576
577
|
* This request will turn the motor.
|
|
@@ -581,12 +582,12 @@ export declare class MotionMasterReqResClient {
|
|
|
581
582
|
*
|
|
582
583
|
* This feature is only available for firmwares >=v5. For older firmwares, Motion Master will return an error.
|
|
583
584
|
*
|
|
584
|
-
* Motion Master will read registers 0x2B and 0x2F on the specified encoder (by encoder ordinal) and then it will compute the magnet distance.
|
|
585
|
-
* The computation depends on the Circulo type, encoder port and ring revision.
|
|
585
|
+
* Motion Master will read registers 0x2B and 0x2F on the specified encoder (by encoder ordinal), and then it will compute the magnet distance.
|
|
586
|
+
* The computation depends on the Circulo type, encoder port, and ring revision.
|
|
586
587
|
*/
|
|
587
588
|
getCirculoEncoderMagnetDistance(props: MotionMasterMessage.Request.IGetCirculoEncoderMagnetDistance & DeviceRefObj, requestTimeout: number, messageId?: string): Observable<CirculoEncoderMagnetDistanceStatus>;
|
|
588
589
|
/**
|
|
589
|
-
* Start the Circulo encoder narrow
|
|
590
|
+
* Start the Circulo encoder narrow-angle calibration procedure.
|
|
590
591
|
*
|
|
591
592
|
* This feature is only available on firmwares >=v5.
|
|
592
593
|
*
|
|
@@ -594,7 +595,7 @@ export declare class MotionMasterReqResClient {
|
|
|
594
595
|
* - the firmware version is not >=v5
|
|
595
596
|
* - software position limits are set so that the required motor rotation is not possible
|
|
596
597
|
* - for SMM devices, the encoder source type is not set to None
|
|
597
|
-
* - the velocity resolution determined by the gear ratio, SI unit velocity and feed constant is not high enough
|
|
598
|
+
* - the velocity resolution determined by the gear ratio, SI unit velocity, and feed constant is not high enough
|
|
598
599
|
*
|
|
599
600
|
* Before starting the procedure, Motion Master will do the following:
|
|
600
601
|
* - send OS command 14 (Ignore BiSS status bits) so that no firmware warnings or errors are raised during the procedure.
|
|
@@ -603,45 +604,43 @@ export declare class MotionMasterReqResClient {
|
|
|
603
604
|
* - change the values of some device parameters: profile acceleration, deceleration, max motor speed, etc.
|
|
604
605
|
*
|
|
605
606
|
* The parameter values Motion Master sets depend on the type of the device (fetched from the hardware description file).
|
|
606
|
-
* Once the operation has completed, Motion Master will
|
|
607
|
+
* Once the operation has completed, Motion Master will roll back all of the above parameters to their initial values.
|
|
607
608
|
*
|
|
608
609
|
* Procedure:
|
|
609
610
|
* - The procedure is run in velocity profile mode of operation.
|
|
610
611
|
* - The procedure will do multiple iterations until the encoder data is satisfactory.
|
|
611
612
|
* - The procedure can fail for various reasons: data out of range, motor too slow, bad data, internal error, etc.
|
|
612
613
|
* - The procedure will run a maximum of 13 calibration iterations, up to 2 mins in total.
|
|
613
|
-
* - One iteration turns the motor in one direction and then the next one reverses the direction.
|
|
614
|
+
* - One iteration turns the motor in one direction, and then the next one reverses the direction.
|
|
614
615
|
* - Each iteration will record encoder data into HRD files (4kHz) that contain the raw data from the specified encoder.
|
|
615
|
-
* - Motion Master will remove previous high
|
|
616
|
+
* - Motion Master will remove previous high-resolution data (HRD) files after each iteration. HRD streaming is configured/started using OS commands.
|
|
616
617
|
* - After each iteration, which lasts ~6 seconds, the recorded data in HRD files is read and passed to the iC House library.
|
|
617
|
-
* - The recorded data is sliced into 32-bit
|
|
618
|
+
* - The recorded data is sliced into 32-bit pairs of values of master and nonius track data. Motion Master creates two arrays out of this data and
|
|
618
619
|
* passes that to the iC House library which computes the new calibration parameters depending on encoder type sine and cosine offset, gain, etc.
|
|
619
620
|
* - The iterations are being repeated until the encoder (raw) data satisfies a certain threshold.
|
|
620
621
|
*
|
|
621
622
|
* The result of a successful calibration is setting multiple parameters into registers of the specified encoder.
|
|
622
623
|
*
|
|
623
624
|
* At the end of the procedure Motion Master will rotate the motor back to the starting position and run commutation offset detection.
|
|
624
|
-
* There will also be a final iteration
|
|
625
|
+
* There will also be a final iteration that only measures the values of a (now) calibrated encoder for display.
|
|
625
626
|
*
|
|
626
627
|
* This request will turn the motor.
|
|
627
|
-
*
|
|
628
|
-
* @todo improve documentation
|
|
629
628
|
*/
|
|
630
629
|
startCirculoEncoderNarrowAngleCalibrationProcedure(props: StartCirculoEncoderNarrowAngleCalibrationProcedureRequest, requestTimeout: number, messageId?: string): Observable<CirculoEncoderNarrowAngleCalibrationProcedureStatus>;
|
|
631
630
|
/**
|
|
632
|
-
* Get device
|
|
631
|
+
* Get device CiA402 state.
|
|
633
632
|
*/
|
|
634
633
|
getDeviceCia402State(props: GetDeviceCiA402StateRequest, requestTimeout: number, messageId?: string): Observable<DeviceCiA402StateStatus>;
|
|
635
634
|
/**
|
|
636
|
-
* Set device
|
|
635
|
+
* Set device CiA402 state.
|
|
637
636
|
*/
|
|
638
637
|
setDeviceCia402State(props: SetDeviceCiA402StateRequest, requestTimeout: number, messageId?: string): Observable<DeviceCiA402StateStatus>;
|
|
639
638
|
/**
|
|
640
639
|
* Get system log.
|
|
641
640
|
*
|
|
642
|
-
* The system log represents the collected standard output from Motion Master process.
|
|
641
|
+
* The system log represents the collected standard output from the Motion Master process.
|
|
643
642
|
*
|
|
644
|
-
* This request will return the
|
|
643
|
+
* This request will return the entire system log, which can be a maximum of approximately 2MB.
|
|
645
644
|
*
|
|
646
645
|
* The log level can be set as an environmental variable when the Motion Master process is started.
|
|
647
646
|
* The log level can be selected in the OBLAC Drives Update Service expert mode before installing a release.
|
|
@@ -661,42 +660,42 @@ export declare class MotionMasterReqResClient {
|
|
|
661
660
|
/**
|
|
662
661
|
* Start device SII restore.
|
|
663
662
|
*
|
|
664
|
-
* This request uses the EEPROM tool from SOEM to overwrite the SII portion of EEPROM on a device.
|
|
663
|
+
* This request uses the EEPROM tool from SOEM to overwrite the SII portion of the EEPROM on a device.
|
|
665
664
|
*
|
|
666
665
|
* Motion Master will verify the provided SII file before writing it to EEPROM. It will:
|
|
667
|
-
* -
|
|
668
|
-
* -
|
|
669
|
-
* -
|
|
666
|
+
* - Check the file content length,
|
|
667
|
+
* - Compute CRC from a part of the SII file content and compare it to the CRC inside the file,
|
|
668
|
+
* - Check the SII category types in the category header.
|
|
670
669
|
*
|
|
671
|
-
* Unlike IgH EtherCAT Master which identifies interfaces by MAC address, the SOEM tool requires an adapter name.
|
|
672
|
-
* Before calling SOEM tool Motion Master will find the adapter name by looking into /sys/class/net.
|
|
670
|
+
* Unlike IgH EtherCAT Master, which identifies interfaces by MAC address, the SOEM tool requires an adapter name.
|
|
671
|
+
* Before calling the SOEM tool, Motion Master will find the adapter name by looking into /sys/class/net.
|
|
673
672
|
*
|
|
674
|
-
* The SOEM tool binary is
|
|
673
|
+
* The SOEM tool binary is delivered as a part of the Motion Master Docker image.
|
|
675
674
|
*/
|
|
676
675
|
startDeviceSiiRestore(props: StartDeviceSiiRestoreRequest, requestTimeout: number, messageId?: string): Observable<DeviceSiiRestoreStatus>;
|
|
677
676
|
/**
|
|
678
|
-
* Start open
|
|
677
|
+
* Start open-loop field control.
|
|
679
678
|
*
|
|
680
|
-
* The precondition for running the open
|
|
679
|
+
* The precondition for running the open-loop field control is to have a configured motor.
|
|
681
680
|
* No encoder configuration or offset detection is required.
|
|
682
681
|
*
|
|
683
|
-
* Open
|
|
682
|
+
* Open-loop field control is started by changing the Modes of operation (0x6060) parameter value to -3 (Open-loop field mode) and
|
|
684
683
|
* setting the CiA402 state to Ready to switch on.
|
|
685
|
-
* After that, Motion Master will run several OS commands that configure the open
|
|
686
|
-
* -
|
|
687
|
-
* -
|
|
688
|
-
* -
|
|
689
|
-
* -
|
|
690
|
-
* -
|
|
691
|
-
* -
|
|
692
|
-
* -
|
|
693
|
-
*
|
|
694
|
-
* After the configuration Motion Master will switch device to Operation enabled CiA402 state and the profile will start.
|
|
695
|
-
*
|
|
696
|
-
* While the open
|
|
684
|
+
* After that, Motion Master will run several OS commands that configure the open-loop field control parameters:
|
|
685
|
+
* - Start angle [milliradian]
|
|
686
|
+
* - End angle [milliradian]
|
|
687
|
+
* - Max rotational speed [radian/s]
|
|
688
|
+
* - Rotational acceleration [radian/s^2]
|
|
689
|
+
* - Start length [permille of rated torque]
|
|
690
|
+
* - End length [permille of rated torque]
|
|
691
|
+
* - Length speed [permille of rated torque]
|
|
692
|
+
*
|
|
693
|
+
* After the configuration, Motion Master will switch the device to Operation enabled CiA402 state, and the profile will start.
|
|
694
|
+
*
|
|
695
|
+
* While the open-loop field control is running, Motion Master will monitor the target reached bit in the statusword.
|
|
697
696
|
* When the target reached bit becomes 1, Motion Master will stop the procedure by changing the CiA402 state to Switched on.
|
|
698
697
|
*
|
|
699
|
-
* Motion Master will return an error if the device goes out of Operation enabled state before target reached bit becomes 1.
|
|
698
|
+
* Motion Master will return an error if the device goes out of the Operation enabled state before the target reached bit becomes 1.
|
|
700
699
|
* There is no timeout on the Motion Master side.
|
|
701
700
|
*
|
|
702
701
|
* This request will turn the motor.
|
|
@@ -707,21 +706,21 @@ export declare class MotionMasterReqResClient {
|
|
|
707
706
|
*/
|
|
708
707
|
computeFullAutoTuningGains(props: ComputeFullAutoTuningGainsRequest, requestTimeout: number, messageId?: string): Observable<FullAutoTuningStatus>;
|
|
709
708
|
/**
|
|
710
|
-
* Start full auto
|
|
709
|
+
* Start full auto-tuning.
|
|
711
710
|
*
|
|
712
|
-
* The preconditions for running the full auto
|
|
713
|
-
* and
|
|
711
|
+
* The preconditions for running the full auto-tuning are a properly configured motor, brake, and encoders,
|
|
712
|
+
* and having executed the offset detection and the system identification procedures.
|
|
714
713
|
*
|
|
715
|
-
* In order to successfully run the full auto
|
|
714
|
+
* In order to successfully run the full auto-tuning procedure, the motor must not rotate, and the device must not be in CiA402 Operation enabled.
|
|
716
715
|
*
|
|
717
|
-
* Motion Master will try to read the plant_model.csv file and if doesn't exist it will return an error.
|
|
716
|
+
* Motion Master will try to read the plant_model.csv file, and if it doesn't exist, it will return an error.
|
|
718
717
|
*
|
|
719
|
-
* Before the operation starts, Motion Master will measure the actual velocity for 500ms at a standstill
|
|
720
|
-
* The noise is then sent, along with some other parameters (velocity feedback filter, feed forward,
|
|
718
|
+
* Before the operation starts, Motion Master will measure the actual velocity for 500ms at a standstill to determine the encoder noise.
|
|
719
|
+
* The noise is then sent, along with some other parameters (velocity feedback filter, feed forward, DC link voltage, firmware version, and similar)
|
|
721
720
|
* and data to a proprietary computation algorithm.
|
|
722
|
-
* ADC current ratio which is used in the computation script is determined by the firmware version and the device hardware
|
|
721
|
+
* ADC current ratio, which is used in the computation script, is determined by the firmware version and the device hardware ID (e.g., 9500, 9501, 8501...).
|
|
723
722
|
*
|
|
724
|
-
* Full auto
|
|
723
|
+
* Full auto-tuning will compute the PID gains, and Motion Master will update the parameter values in the velocity or position controller, depending on the request.
|
|
725
724
|
*
|
|
726
725
|
* Motion Master will return the damping ratio, settling time, and bandwidth values when the procedure completes. UI will use these values to update the sliders in the Tuning screen.
|
|
727
726
|
*
|
|
@@ -729,27 +728,29 @@ export declare class MotionMasterReqResClient {
|
|
|
729
728
|
*/
|
|
730
729
|
startFullAutoTuning(props: StartFullAutoTuningRequest, requestTimeout: number, messageId?: string): Observable<FullAutoTuningStatus>;
|
|
731
730
|
/**
|
|
732
|
-
* Stop full auto
|
|
731
|
+
* Stop full auto-tuning.
|
|
733
732
|
*
|
|
734
733
|
* Motion Master has only one exit point for this procedure, which is after the computation algorithm ends.
|
|
735
734
|
* This means that, once stopped, the procedure will compute the gains, but Motion Master will not update the controller parameters.
|
|
736
|
-
*
|
|
735
|
+
* A previously started full auto-tuning request will complete with an aborted error.
|
|
737
736
|
*/
|
|
738
737
|
stopFullAutoTuning(props: StopFullAutoTuningRequest, requestTimeout: number, messageId?: string): Observable<FullAutoTuningStatus>;
|
|
739
738
|
/**
|
|
740
739
|
* Start Circulo encoder configuration.
|
|
741
740
|
*
|
|
742
|
-
* The preconditions for this procedure are to have Circulo device with internal encoders and
|
|
741
|
+
* The preconditions for this procedure are to have a Circulo device with internal encoders and firmware >=v5.
|
|
743
742
|
*
|
|
744
|
-
* This procedure will set various internal encoder registers based on the hardware description, Circulo device type and the encoder ordinal.
|
|
743
|
+
* This procedure will set various internal encoder registers based on the hardware description, Circulo device type, and the encoder ordinal.
|
|
745
744
|
*
|
|
746
|
-
* Before updating the registers, Motion Master will send an OS command to ignore the BiSS status bits.
|
|
745
|
+
* Before updating the registers, Motion Master will send an OS command to ignore the BiSS status bits.
|
|
746
|
+
* Once the procedure is done, the value of this register will be reverted.
|
|
747
747
|
*
|
|
748
748
|
* Depending on the setup, this procedure can take up to 30 seconds.
|
|
749
749
|
*
|
|
750
|
-
* This procedure can fail if it's already running, if it's not supported because of the firmware version,
|
|
750
|
+
* This procedure can fail if it's already running, if it's not supported because of the firmware version,
|
|
751
|
+
* or if the hardware description file is missing.
|
|
751
752
|
*
|
|
752
|
-
* While this procedure runs, Motion Master will
|
|
753
|
+
* While this procedure runs, Motion Master will report its progress.
|
|
753
754
|
*/
|
|
754
755
|
startCirculoEncoderConfiguration(props: StartCirculoEncoderConfigurationRequest, requestTimeout: number, messageId?: string): Observable<CirculoEncoderConfigurationStatus>;
|
|
755
756
|
/**
|
|
@@ -759,7 +760,7 @@ export declare class MotionMasterReqResClient {
|
|
|
759
760
|
/**
|
|
760
761
|
* Start OS command.
|
|
761
762
|
*
|
|
762
|
-
* This request will execute an OS command and return
|
|
763
|
+
* This request will execute an OS command and return the result as a byte array.
|
|
763
764
|
*
|
|
764
765
|
* Motion Master will check if an OS command is already running and use a mutex to ensure only one OS command runs at a time.
|
|
765
766
|
*
|
|
@@ -770,23 +771,47 @@ export declare class MotionMasterReqResClient {
|
|
|
770
771
|
* The OS command can timeout if it takes longer than the provided timeout in milliseconds, in which case Motion Master will return an error.
|
|
771
772
|
*/
|
|
772
773
|
startOsCommand(props: StartOsCommandRequest, requestTimeout: number, messageId?: string): Observable<OsCommandStatus>;
|
|
774
|
+
/**
|
|
775
|
+
* Send request.
|
|
776
|
+
*
|
|
777
|
+
* Create a Motion Master message with the provided request, optionally generate a unique message ID,
|
|
778
|
+
* and then send the message through the socket.
|
|
779
|
+
*
|
|
780
|
+
* @returns the message ID
|
|
781
|
+
*/
|
|
773
782
|
sendRequest(request: MotionMasterMessage.IRequest, messageId?: string): string;
|
|
783
|
+
/**
|
|
784
|
+
* Get the device serial number by device address.
|
|
785
|
+
*
|
|
786
|
+
* This function does not make any requests; instead, it utilizes the previously mapped device serial number to an instance of a device.
|
|
787
|
+
*/
|
|
774
788
|
getSerialNumberByDeviceAddress(deviceAddress: number): string | undefined;
|
|
789
|
+
/**
|
|
790
|
+
* Resolve a device.
|
|
791
|
+
*
|
|
792
|
+
* Resolves the device object by its reference, which can be a position, serial number, or device address.
|
|
793
|
+
*
|
|
794
|
+
* This function will make requests to retrieve the list of devices and the .hardware_description file for each device,
|
|
795
|
+
* but only if it has not been previously retrieved for this session.
|
|
796
|
+
*
|
|
797
|
+
* @throws errors if the device reference is invalid
|
|
798
|
+
*/
|
|
775
799
|
resolveDevice(deviceRef: DeviceRef | DeviceRefObj, requestTimeout?: number): Observable<Device>;
|
|
776
800
|
/**
|
|
777
801
|
* Resolve device address.
|
|
778
802
|
*
|
|
779
|
-
* This method should return device address by device reference object,
|
|
780
|
-
* or throw an
|
|
803
|
+
* This method should return the device address by a device reference object,
|
|
804
|
+
* or throw an error if the device address cannot be found.
|
|
781
805
|
*
|
|
782
|
-
*
|
|
806
|
+
* Refer to the description of this class for more information.
|
|
783
807
|
*/
|
|
784
808
|
resolveDeviceAddress(deviceRef: DeviceRef | DeviceRefObj, requestTimeout?: number): Observable<number>;
|
|
785
809
|
/**
|
|
786
810
|
* Get devices.
|
|
787
811
|
*
|
|
788
|
-
*
|
|
789
|
-
*
|
|
812
|
+
* Retrieve device information from Motion Master.
|
|
813
|
+
*
|
|
814
|
+
* For each device in the list, read its .hardware_description file and assign its content to the device.
|
|
790
815
|
*/
|
|
791
816
|
getDevices(requestTimeout?: number): Observable<Device[]>;
|
|
792
817
|
getParameterValue<T extends ParameterValueType = number>(deviceParameterId: string, loadFromCache?: boolean, requestTimeout?: number, messageId?: string): Observable<T>;
|
|
@@ -951,6 +976,60 @@ export declare class MotionMasterReqResClient {
|
|
|
951
976
|
* If you want to initiate a new set-point while the previous one is still being executed, you need to generate another rising edge of the new set-point bit in the controlword.
|
|
952
977
|
*/
|
|
953
978
|
applySetPoint(deviceRef: DeviceRef): Promise<void>;
|
|
979
|
+
/**
|
|
980
|
+
* Run OS command.
|
|
981
|
+
*
|
|
982
|
+
* The OS command is a standard way of triggering actions or services that cannot be accommodated through a single SDO upload/download.
|
|
983
|
+
*
|
|
984
|
+
* The Dictionary object 0x1023 is used for executing OS commands. The following is the subindex list and their meanings:
|
|
985
|
+
*
|
|
986
|
+
* - 1: Command (OCTET_STRING), 8 bytes
|
|
987
|
+
* - Byte 0: OS command ID, OS commands are identified by number, and here we specify which OS command to run, for example, 0 is encoder register communication
|
|
988
|
+
* - Byte 1-7: Service request data, the remaining 7 bytes serve as arguments to the OS command, specifying details such as what register to read the value from
|
|
989
|
+
* - 2: Status (UNSIGNED8), 1 byte
|
|
990
|
+
* - 0: last command completed, no errors, no response data
|
|
991
|
+
* - 1: last command completed, no errors, response data available
|
|
992
|
+
* - 2: last command completed, error, no response data
|
|
993
|
+
* - 3: last command completed, error, response data available
|
|
994
|
+
* - 100-200: command executing with percentage (100 = 0%, 200 = 100%)
|
|
995
|
+
* - 255: command executing (if percentage display is not supported)
|
|
996
|
+
* - 3: Response (OCTET_STRING), 8 bytes
|
|
997
|
+
* - Byte 0: Same as subindex 2
|
|
998
|
+
* - Byte 1: unused
|
|
999
|
+
* - Byte 2-7: Service response data, if the last command completed with response data, it will be available in these 6 bytes, for example, the value of the BiSS register
|
|
1000
|
+
*
|
|
1001
|
+
* Note that:
|
|
1002
|
+
* - As soon as the value of 1: Command Byte 0 changes, the OS command will start to execute.
|
|
1003
|
+
* - If the last command completed with response data, it will be available in bytes 2-7 of 3: Response subindex.
|
|
1004
|
+
* - The value of subindex 2: Status will be the same as that of 3: Response Byte 0.
|
|
1005
|
+
*
|
|
1006
|
+
* All possible cases of 0x1023:03 Response subindex:
|
|
1007
|
+
*
|
|
1008
|
+
* | Description | Byte 0 | Byte 1 | Byte 2 | Byte 3 | Byte 4 | Byte 5 | Byte 6 | Byte 7 |
|
|
1009
|
+
* |-------------------------------------------------------|:-------:|:------:|:-------------:|:------:|:------:|:------:|:------:|:------:|
|
|
1010
|
+
* | Command in progress with percentage | 100-200 | - | - | - | - | - | - | - |
|
|
1011
|
+
* | Command in progress without percentage | 255 | - | - | - | - | - | - | - |
|
|
1012
|
+
* | Command completed without errors and without response | 0 | - | - | - | - | - | - | - |
|
|
1013
|
+
* | Command completed without errors and with response | 1 | - | Data | Data | Data | Data | Data | Data |
|
|
1014
|
+
* | Command completed with error and without response | 2 | - | - | - | - | - | - | - |
|
|
1015
|
+
* | Command completed with error and with response | 3 | - | OS error code | Data | Data | Data | Data | Data |
|
|
1016
|
+
*
|
|
1017
|
+
* Note that in the case of "Command completed without errors and with response," 6 bytes can be used for data.
|
|
1018
|
+
* However, only 5 bytes are available in the case of "Command completed with error and with response."
|
|
1019
|
+
* This limitation arises because Byte 2 in the latter response is allocated for the OS error code.
|
|
1020
|
+
* The OS error code serves to indicate the reason behind the error occurrence.
|
|
1021
|
+
*
|
|
1022
|
+
* 0x1023: OS command is used in combination with 0x1024: OS command mode object.
|
|
1023
|
+
* In our firmware, only the values 0 and 3 from the 0x1024 command mode object (USINT) are handled, and their meanings are as follows:
|
|
1024
|
+
* - 0: Execute the next command immediatelly (default)
|
|
1025
|
+
* - 3: Abort the current command and all commands in the buffer
|
|
1026
|
+
*
|
|
1027
|
+
* Note that if
|
|
1028
|
+
* TODO: ensure that command was aborted, must switch to 0 after the OS command was aborted
|
|
1029
|
+
*
|
|
1030
|
+
* @returns
|
|
1031
|
+
*/
|
|
1032
|
+
runOsCommand(): void;
|
|
954
1033
|
/**
|
|
955
1034
|
* Set halt bit.
|
|
956
1035
|
*
|