motion-master-client 0.0.336 → 0.0.338
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 +1 -1
- package/src/api.js +2 -2
- package/src/api.js.map +1 -1
- package/src/lib/data-monitoring.d.ts +134 -38
- package/src/lib/data-monitoring.js +164 -47
- package/src/lib/data-monitoring.js.map +1 -1
- package/src/lib/limited-range-system-identification.d.ts +7 -3
- package/src/lib/limited-range-system-identification.js +58 -4
- package/src/lib/limited-range-system-identification.js.map +1 -1
- package/src/lib/operators.d.ts +2 -1
- package/src/lib/operators.js +9 -1
- package/src/lib/operators.js.map +1 -1
- package/src/lib/util.d.ts +36 -0
- package/src/lib/util.js +54 -1
- package/src/lib/util.js.map +1 -1
|
@@ -6,38 +6,85 @@ const device_parameter_1 = require("./device-parameter");
|
|
|
6
6
|
const parameter_1 = require("./parameter");
|
|
7
7
|
const util_1 = require("./util");
|
|
8
8
|
/**
|
|
9
|
-
*
|
|
9
|
+
* Tracks and collects device parameter values over time.
|
|
10
10
|
*
|
|
11
|
-
* Unlike {@link MotionMasterClient#startMonitoring}, which returns an
|
|
12
|
-
*
|
|
11
|
+
* Unlike {@link MotionMasterClient#startMonitoring}, which returns an
|
|
12
|
+
* observable that does not complete on its own, this class provides
|
|
13
|
+
* explicit control over starting, stopping, and collecting monitoring
|
|
14
|
+
* data. It supports exporting the data in CSV format and provides
|
|
15
|
+
* statistical analysis of the sampling intervals.
|
|
13
16
|
*/
|
|
14
17
|
class DataMonitoring {
|
|
18
|
+
/**
|
|
19
|
+
* Creates a new `DataMonitoring` instance for collecting device parameter values.
|
|
20
|
+
*
|
|
21
|
+
* @param client - The Motion Master client used to communicate with the device.
|
|
22
|
+
* @param ids - An array of device parameter IDs to monitor. Each ID can be a string
|
|
23
|
+
* or a tuple `[deviceRef, index, subindex]`.
|
|
24
|
+
* @param monitoringInterval - The interval, in milliseconds, at which parameter
|
|
25
|
+
* values should be sampled.
|
|
26
|
+
* @param config - Optional monitoring configuration, such as filters or buffering
|
|
27
|
+
* options.
|
|
28
|
+
*/
|
|
15
29
|
constructor(client, ids, monitoringInterval, config) {
|
|
16
30
|
this.client = client;
|
|
17
31
|
this.ids = ids;
|
|
18
32
|
this.monitoringInterval = monitoringInterval;
|
|
19
33
|
this.config = config;
|
|
20
34
|
/**
|
|
21
|
-
*
|
|
35
|
+
* Stores the collected monitoring data.
|
|
22
36
|
*
|
|
23
|
-
*
|
|
37
|
+
* Each element of the outer array represents a single monitoring sample,
|
|
38
|
+
* which is an array of parameter values corresponding to {@link ids}.
|
|
39
|
+
* Use {@link clear} to reset this array before starting a new monitoring session.
|
|
24
40
|
*/
|
|
25
41
|
this.data = [];
|
|
26
42
|
/**
|
|
27
|
-
*
|
|
28
|
-
*
|
|
43
|
+
* Determines whether incoming monitoring data should be collected.
|
|
44
|
+
*
|
|
45
|
+
* When `true`, each emitted value from the monitoring observable is
|
|
46
|
+
* appended to the {@link data} array. Set to `false` to receive data
|
|
47
|
+
* without storing it.
|
|
29
48
|
*/
|
|
30
49
|
this.collect = true;
|
|
31
50
|
/**
|
|
32
|
-
*
|
|
51
|
+
* Internal flag indicating whether monitoring has been stopped.
|
|
52
|
+
*
|
|
53
|
+
* Used by {@link start} and {@link stop} to control the observable pipeline.
|
|
54
|
+
* When `true`, the observable returned by `start` completes on the next emission.
|
|
33
55
|
*/
|
|
34
|
-
this.
|
|
56
|
+
this.stopped = false;
|
|
35
57
|
}
|
|
36
58
|
/**
|
|
37
|
-
*
|
|
59
|
+
* Indicates whether monitoring has been stopped.
|
|
60
|
+
*
|
|
61
|
+
* @returns `true` if {@link stop} has been called and the internal
|
|
62
|
+
* stop flag is set, otherwise `false`.
|
|
63
|
+
*/
|
|
64
|
+
get isStopped() {
|
|
65
|
+
return this.stopped;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Indicates whether monitoring is currently active.
|
|
69
|
+
*
|
|
70
|
+
* @returns `true` if monitoring has been started via {@link start} and
|
|
71
|
+
* has not yet been stopped, otherwise `false`.
|
|
72
|
+
*/
|
|
73
|
+
get isStarted() {
|
|
74
|
+
return !this.stopped;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Generates a CSV header string from the monitored parameter IDs.
|
|
78
|
+
*
|
|
79
|
+
* Each parameter ID in {@link ids} is converted to a string representation
|
|
80
|
+
* using {@link makeParameterId}. String IDs are parsed with
|
|
81
|
+
* {@link splitDeviceParameterId}, while tuple IDs `[deviceRef, index, subindex]`
|
|
82
|
+
* are converted directly.
|
|
38
83
|
*
|
|
39
84
|
* @example
|
|
40
|
-
* 0x6040:00,0x6060:00,0x6071:00,0x607A:00,0x60FF:00
|
|
85
|
+
* // Possible output: "0x6040:00,0x6060:00,0x6071:00,0x607A:00,0x60FF:00"
|
|
86
|
+
*
|
|
87
|
+
* @returns A comma-separated string representing the header for CSV export.
|
|
41
88
|
*/
|
|
42
89
|
get header() {
|
|
43
90
|
return this.ids
|
|
@@ -53,21 +100,28 @@ class DataMonitoring {
|
|
|
53
100
|
.join(',');
|
|
54
101
|
}
|
|
55
102
|
/**
|
|
56
|
-
* Converts the collected data
|
|
103
|
+
* Converts the collected monitoring data into CSV (Comma-Separated Values) format.
|
|
104
|
+
*
|
|
105
|
+
* The first row contains the CSV header generated from {@link header},
|
|
106
|
+
* followed by one row per collected sample in {@link data}. Each row
|
|
107
|
+
* represents the parameter values at a given monitoring interval.
|
|
108
|
+
*
|
|
109
|
+
* @returns A string representing the collected data in CSV format,
|
|
110
|
+
* ready for export or analysis.
|
|
57
111
|
*/
|
|
58
112
|
get csv() {
|
|
59
113
|
const rows = this.data.map((values) => values.join(','));
|
|
60
114
|
return [this.header, ...rows].join('\n');
|
|
61
115
|
}
|
|
62
116
|
/**
|
|
63
|
-
* Finds the index of the timestamp field in the
|
|
117
|
+
* Finds the zero-based index of the timestamp field in the monitored parameters.
|
|
64
118
|
*
|
|
65
|
-
* The timestamp field is identified
|
|
66
|
-
* IDs may be strings (parsed using
|
|
67
|
-
* in the form `[deviceRef, index, subindex]`.
|
|
119
|
+
* The timestamp field is identified as object 0x20F0 with subindex 0x00.
|
|
120
|
+
* Parameter IDs in {@link ids} may be strings (parsed using
|
|
121
|
+
* {@link splitDeviceParameterId}) or tuples in the form `[deviceRef, index, subindex]`.
|
|
68
122
|
*
|
|
69
|
-
* @returns The
|
|
70
|
-
*
|
|
123
|
+
* @returns The index of the timestamp entry in {@link ids}, or `-1` if
|
|
124
|
+
* no timestamp field exists.
|
|
71
125
|
*/
|
|
72
126
|
get timestampIndex() {
|
|
73
127
|
const indexOfTimestamp = this.ids.findIndex((id) => {
|
|
@@ -82,12 +136,16 @@ class DataMonitoring {
|
|
|
82
136
|
return indexOfTimestamp;
|
|
83
137
|
}
|
|
84
138
|
/**
|
|
85
|
-
* Extracts the timestamp
|
|
139
|
+
* Extracts the timestamp values from the collected monitoring data.
|
|
86
140
|
*
|
|
87
|
-
*
|
|
88
|
-
*
|
|
141
|
+
* The timestamp column is determined by {@link timestampIndex}, which
|
|
142
|
+
* locates the entry corresponding to object 0x20F0:00 in the monitored
|
|
143
|
+
* parameter list. If no timestamp index is found, an empty array is
|
|
144
|
+
* returned.
|
|
89
145
|
*
|
|
90
|
-
* @returns An array of numeric timestamps
|
|
146
|
+
* @returns An array of numeric timestamps aligned with the collected
|
|
147
|
+
* monitoring samples, or an empty array if no timestamp field
|
|
148
|
+
* is configured.
|
|
91
149
|
*/
|
|
92
150
|
get timestamps() {
|
|
93
151
|
if (this.timestampIndex === -1) {
|
|
@@ -96,12 +154,18 @@ class DataMonitoring {
|
|
|
96
154
|
return this.data.map((values) => values[this.timestampIndex]);
|
|
97
155
|
}
|
|
98
156
|
/**
|
|
99
|
-
* Returns
|
|
157
|
+
* Returns the time differences (in milliseconds) between consecutive
|
|
158
|
+
* timestamp values.
|
|
159
|
+
*
|
|
160
|
+
* Each duration is computed as:
|
|
161
|
+
*
|
|
162
|
+
* `durations[i] = timestamps[i] - timestamps[i - 1]`
|
|
100
163
|
*
|
|
101
|
-
*
|
|
102
|
-
*
|
|
164
|
+
* If fewer than two timestamps are available, an empty array is
|
|
165
|
+
* returned.
|
|
103
166
|
*
|
|
104
|
-
*
|
|
167
|
+
* @returns An array of durations representing the time between
|
|
168
|
+
* successive timestamp samples.
|
|
105
169
|
*/
|
|
106
170
|
get durations() {
|
|
107
171
|
if (this.timestamps.length < 2) {
|
|
@@ -114,45 +178,98 @@ class DataMonitoring {
|
|
|
114
178
|
return durations;
|
|
115
179
|
}
|
|
116
180
|
/**
|
|
117
|
-
* Returns a
|
|
181
|
+
* Returns a statistical analysis of the measured timestamp durations.
|
|
118
182
|
*
|
|
119
|
-
*
|
|
120
|
-
*
|
|
121
|
-
*
|
|
122
|
-
*
|
|
123
|
-
*
|
|
183
|
+
* The analysis is computed by {@link analyzeTimeDurations}, which
|
|
184
|
+
* includes a variety of metrics such as minimum, maximum, mean,
|
|
185
|
+
* median, standard deviation, percentiles, and interquartile range.
|
|
186
|
+
* It also provides filtered statistics based on outlier removal using
|
|
187
|
+
* the IQR method.
|
|
124
188
|
*
|
|
125
|
-
* @returns An object containing both raw and filtered
|
|
189
|
+
* @returns An object containing both raw and filtered duration
|
|
190
|
+
* statistics for the monitoring session.
|
|
126
191
|
*/
|
|
127
192
|
get analysis() {
|
|
128
193
|
return (0, util_1.analyzeTimeDurations)(this.durations);
|
|
129
194
|
}
|
|
130
195
|
/**
|
|
131
|
-
* Clears
|
|
196
|
+
* Clears all previously collected monitoring data.
|
|
197
|
+
*
|
|
198
|
+
* This resets the {@link data} array to an empty state. Call this
|
|
199
|
+
* method before {@link start} if you want to begin a new monitoring
|
|
200
|
+
* session with no existing samples.
|
|
132
201
|
*/
|
|
133
202
|
clear() {
|
|
134
203
|
this.data.length = 0;
|
|
135
204
|
}
|
|
136
205
|
/**
|
|
137
|
-
* Starts monitoring and
|
|
206
|
+
* Starts a new monitoring session and returns an observable that emits
|
|
207
|
+
* device parameter values as they arrive.
|
|
208
|
+
*
|
|
209
|
+
* This method first calls {@link stop} to ensure any existing session is cleanly
|
|
210
|
+
* terminated. It then resets the internal state and, if `clear` is true,
|
|
211
|
+
* removes all previously collected data.
|
|
212
|
+
*
|
|
213
|
+
* The returned observable emits values until {@link stop} is called,
|
|
214
|
+
* at which point the internal {@link stopped} flag is set, causing the stream to
|
|
215
|
+
* complete on its next emission via `takeWhile()`. This mechanism ensures that
|
|
216
|
+
* all internal and external subscriptions are cleanly shut down, preventing
|
|
217
|
+
* resource leaks.
|
|
138
218
|
*
|
|
139
|
-
*
|
|
219
|
+
* If {@link collect} is enabled, each emitted value is also appended to the
|
|
220
|
+
* {@link data} array for later retrieval or analysis.
|
|
221
|
+
*
|
|
222
|
+
* @param clear - Whether to clear previously collected data in {@link data} before
|
|
223
|
+
* starting the monitoring session. Defaults to `false`.
|
|
224
|
+
* @returns An observable that emits arrays of parameter values until
|
|
225
|
+
* the monitoring is stopped or the source observable completes.
|
|
140
226
|
*/
|
|
141
|
-
start() {
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
227
|
+
start(clear = false) {
|
|
228
|
+
this.stop(); // Ensure any previous monitoring is stopped
|
|
229
|
+
this.stopped = false;
|
|
230
|
+
if (clear)
|
|
231
|
+
this.clear();
|
|
232
|
+
const source$ = this.client.startMonitoring(this.ids, this.monitoringInterval, this.config, 5000);
|
|
233
|
+
const monitored$ = this.collect
|
|
234
|
+
? source$.pipe((0, rxjs_1.tap)((values) => this.data.push(values)), (0, rxjs_1.takeWhile)(() => !this.stopped))
|
|
235
|
+
: source$.pipe((0, rxjs_1.takeWhile)(() => !this.stopped));
|
|
236
|
+
// Defensive cleanup: Guarantees that the subscription reference is cleared
|
|
237
|
+
// and the state flag (this.stopped) is set to true on *any* stream
|
|
238
|
+
// completion, protecting against unexpected termination of the source observable.
|
|
239
|
+
this.subscription = monitored$.subscribe({
|
|
240
|
+
complete: () => {
|
|
241
|
+
var _a;
|
|
242
|
+
(_a = this.subscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();
|
|
243
|
+
this.subscription = undefined;
|
|
244
|
+
this.stopped = true;
|
|
245
|
+
},
|
|
246
|
+
error: (err) => {
|
|
247
|
+
var _a;
|
|
248
|
+
console.error('DataMonitoring stream terminated by error:', err);
|
|
249
|
+
(_a = this.subscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();
|
|
250
|
+
this.subscription = undefined;
|
|
251
|
+
this.stopped = true;
|
|
252
|
+
},
|
|
253
|
+
});
|
|
254
|
+
// Return observable for external subscription
|
|
255
|
+
return monitored$;
|
|
150
256
|
}
|
|
151
257
|
/**
|
|
152
|
-
*
|
|
258
|
+
* Stops the active monitoring session and unsubscribes from the source observable.
|
|
259
|
+
*
|
|
260
|
+
* This method sets the internal stop flag, causing the observable created in {@link start}
|
|
261
|
+
* to complete on its next emission. If a subscription was created during `start()`,
|
|
262
|
+
* it is explicitly unsubscribed and cleared. This ensures that no monitoring pipeline
|
|
263
|
+
* remains active and prevents resource leaks when creating new `DataMonitoring` instances.
|
|
264
|
+
*
|
|
265
|
+
* Calling this method has no effect if monitoring is not currently active.
|
|
153
266
|
*/
|
|
154
267
|
stop() {
|
|
155
|
-
this.
|
|
268
|
+
this.stopped = true;
|
|
269
|
+
if (this.subscription) {
|
|
270
|
+
this.subscription.unsubscribe();
|
|
271
|
+
this.subscription = undefined;
|
|
272
|
+
}
|
|
156
273
|
}
|
|
157
274
|
}
|
|
158
275
|
exports.DataMonitoring = DataMonitoring;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-monitoring.js","sourceRoot":"","sources":["../../../../../libs/motion-master-client/src/lib/data-monitoring.ts"],"names":[],"mappings":";;;AAAA,+
|
|
1
|
+
{"version":3,"file":"data-monitoring.js","sourceRoot":"","sources":["../../../../../libs/motion-master-client/src/lib/data-monitoring.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Subject } from 'rxjs';
|
|
1
|
+
import { Subject, Subscription } from 'rxjs';
|
|
2
2
|
import { MotionMasterClient } from './motion-master-client';
|
|
3
3
|
import { ChirpSignalOptions } from './os-command';
|
|
4
4
|
import { DeviceRef } from './types';
|
|
@@ -12,13 +12,13 @@ import { DeviceRef } from './types';
|
|
|
12
12
|
*/
|
|
13
13
|
export interface LimitedRangeSystemIdentificationOptions extends ChirpSignalOptions {
|
|
14
14
|
/**
|
|
15
|
-
* The
|
|
15
|
+
* The symmetric position excursion limit (±value), expressed in
|
|
16
16
|
* position units. This defines the maximum allowable deviation from the
|
|
17
17
|
* reference position during chirp excitation. As the position error approaches
|
|
18
18
|
* this limit, the adaptive algorithm reduces the position-loop Kp to keep the
|
|
19
19
|
* joint within the bounded range.
|
|
20
20
|
*/
|
|
21
|
-
|
|
21
|
+
rangeLimit: number;
|
|
22
22
|
/**
|
|
23
23
|
* The minimum admissible excursion limit used as a lower bound in internal
|
|
24
24
|
* scaling calculations. This value prevents division by very small ranges and
|
|
@@ -47,6 +47,10 @@ export declare class LimitedRangeSystemIdentification {
|
|
|
47
47
|
* Indicates whether the system identification procedure is currently running.
|
|
48
48
|
*/
|
|
49
49
|
isRunning: boolean;
|
|
50
|
+
/**
|
|
51
|
+
* Subscription for data monitoring during the procedure.
|
|
52
|
+
*/
|
|
53
|
+
dataMonitoringSubscription?: Subscription;
|
|
50
54
|
/**
|
|
51
55
|
* Creates a new instance of the limited-range system identification routine.
|
|
52
56
|
*
|
|
@@ -35,7 +35,7 @@ class LimitedRangeSystemIdentification {
|
|
|
35
35
|
constructor(client, deviceRef, options = {
|
|
36
36
|
hrdStreamingDuration: 3200,
|
|
37
37
|
modesOfOperation: cia402_1.ModesOfOperation.CYCLIC_SYNC_POSITION_MODE,
|
|
38
|
-
|
|
38
|
+
rangeLimit: 10000,
|
|
39
39
|
rangeLimitMin: 1000,
|
|
40
40
|
signalType: os_command_1.SystemIdentificationOsCommandSignalType.LINEAR_WITH_CONSTANT_AMPLITUDE,
|
|
41
41
|
startFrequency: 1000,
|
|
@@ -73,6 +73,7 @@ class LimitedRangeSystemIdentification {
|
|
|
73
73
|
* @throws Will throw an error if any of the device requests fail.
|
|
74
74
|
*/
|
|
75
75
|
start() {
|
|
76
|
+
var _a, _b;
|
|
76
77
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
77
78
|
// Small delay to ensure subscribers to notifications$ are ready
|
|
78
79
|
yield (0, util_1.resolveAfter)(1);
|
|
@@ -98,6 +99,9 @@ class LimitedRangeSystemIdentification {
|
|
|
98
99
|
this.notifications$.next(`Warning: startProcedure is currently ${this.options.startProcedure}, but WAIT_FOR_HRD_STREAMING_TO_START (2) is required. Setting the correct start procedure automatically.`);
|
|
99
100
|
this.options.startProcedure = os_command_1.SystemIdentificationOsCommandStartProcedure.WAIT_FOR_HRD_STREAMING_TO_START;
|
|
100
101
|
}
|
|
102
|
+
const gearRatio = yield this.client.request.getGearRatio(this.deviceRef);
|
|
103
|
+
const rangeLimitEff = this.options.rangeLimit * gearRatio;
|
|
104
|
+
this.notifications$.next(`Effective range limit (considering gear ratio ${gearRatio}): ${rangeLimitEff}`);
|
|
101
105
|
// Variables to hold original configurations for restoration later
|
|
102
106
|
let encCom;
|
|
103
107
|
let encPos;
|
|
@@ -107,11 +111,14 @@ class LimitedRangeSystemIdentification {
|
|
|
107
111
|
[this.deviceRef, 0x6064, 0x00], // Position actual value
|
|
108
112
|
], 1000 // 1 ms interval
|
|
109
113
|
);
|
|
114
|
+
dataMonitoring.collect = false;
|
|
110
115
|
let positionFeedbackFilterType;
|
|
111
116
|
let pKp;
|
|
112
117
|
let pKi;
|
|
113
118
|
let pKd;
|
|
114
119
|
let pCtrlStrategy;
|
|
120
|
+
let minPosLmt;
|
|
121
|
+
let maxPosLmt;
|
|
115
122
|
try {
|
|
116
123
|
// Ensure the drive is in the "Switch On Disabled" state before any motion commands
|
|
117
124
|
this.notifications$.next('Transitioning to "Switch On Disabled" state...');
|
|
@@ -131,6 +138,40 @@ class LimitedRangeSystemIdentification {
|
|
|
131
138
|
encCom = yield this.client.request.upload(this.deviceRef, 0x2010, 0x0c);
|
|
132
139
|
encPos = yield this.client.request.upload(this.deviceRef, 0x2012, 0x09);
|
|
133
140
|
this.notifications$.next(`Encoder configurations retrieved: ENC_COM = ${encCom}, ENC_POS = ${encPos}`);
|
|
141
|
+
// ENC_POS is set to a valid but different configuration than ENC_COM
|
|
142
|
+
// Adjust position limits to account for differing encoder resolutions before switching to ENC_COM
|
|
143
|
+
if (encPos > 0 && encPos !== encCom) {
|
|
144
|
+
this.notifications$.next('Reading software position limits...');
|
|
145
|
+
minPosLmt = yield this.client.request.upload(this.deviceRef, 0x607d, 0x01);
|
|
146
|
+
maxPosLmt = yield this.client.request.upload(this.deviceRef, 0x607d, 0x02);
|
|
147
|
+
this.notifications$.next(`Software position limits: Min = ${minPosLmt}, Max = ${maxPosLmt}`);
|
|
148
|
+
if (minPosLmt !== -2147483648 || maxPosLmt === 2147483647) {
|
|
149
|
+
this.notifications$.next('Reading encoder resolution for commutation configuration...');
|
|
150
|
+
const resCom = yield this.client.request.upload(this.deviceRef, encCom === 1 ? 0x2110 : 0x2112, 0x03);
|
|
151
|
+
this.notifications$.next(`Encoder resolution for commutation configuration: ${resCom}`);
|
|
152
|
+
this.notifications$.next('Reading encoder resolution for position configuration...');
|
|
153
|
+
const resPos = yield this.client.request.upload(this.deviceRef, encPos === 1 ? 0x2110 : 0x2112, 0x03);
|
|
154
|
+
this.notifications$.next(`Encoder resolution for position configuration: ${resPos}`);
|
|
155
|
+
if (minPosLmt !== -2147483648) {
|
|
156
|
+
let adjustedMinPosLmt = Math.round(minPosLmt * gearRatio * (resCom / resPos));
|
|
157
|
+
if (adjustedMinPosLmt < -2147483648) {
|
|
158
|
+
adjustedMinPosLmt = -2147483648;
|
|
159
|
+
}
|
|
160
|
+
this.notifications$.next(`Adjusting minimum position limit from ${minPosLmt} to ${adjustedMinPosLmt}...`);
|
|
161
|
+
yield this.client.request.download(this.deviceRef, 0x607d, 0x01, adjustedMinPosLmt);
|
|
162
|
+
this.notifications$.next('Minimum position limit adjusted.');
|
|
163
|
+
}
|
|
164
|
+
if (maxPosLmt !== 2147483647) {
|
|
165
|
+
let adjustedMaxPosLmt = Math.round(maxPosLmt * gearRatio * (resCom / resPos));
|
|
166
|
+
if (adjustedMaxPosLmt > 2147483647) {
|
|
167
|
+
adjustedMaxPosLmt = 2147483647;
|
|
168
|
+
}
|
|
169
|
+
this.notifications$.next(`Adjusting maximum position limit from ${maxPosLmt} to ${adjustedMaxPosLmt}...`);
|
|
170
|
+
yield this.client.request.download(this.deviceRef, 0x607d, 0x02, adjustedMaxPosLmt);
|
|
171
|
+
this.notifications$.next('Maximum position limit adjusted.');
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
}
|
|
134
175
|
// If ENC_COM and ENC_POS do not match, update ENC_POS to match ENC_COM
|
|
135
176
|
if (encCom !== encPos) {
|
|
136
177
|
this.notifications$.next('Encoder configurations do not match. Updating ENC_POS to match ENC_COM...');
|
|
@@ -144,7 +185,6 @@ class LimitedRangeSystemIdentification {
|
|
|
144
185
|
this.notifications$.next(`Encoder resolution: ${resolution}`);
|
|
145
186
|
// Calculate adjusted limit range min based on feed constant and encoder resolution
|
|
146
187
|
this.notifications$.next('Calculating limit range based on feed constant and resolution...');
|
|
147
|
-
const rangeLimitEff = this.options.rangeLimitEff;
|
|
148
188
|
// feed constant is not disabled and greater than resolution
|
|
149
189
|
const ratio = feedConstant !== 0xffffffff && feedConstant > resolution ? feedConstant / resolution : 1;
|
|
150
190
|
const rangeLimitMin = Math.round(this.options.rangeLimitMin * ratio);
|
|
@@ -253,9 +293,8 @@ class LimitedRangeSystemIdentification {
|
|
|
253
293
|
// Stop data monitoring
|
|
254
294
|
this.notifications$.next('Stopping data monitoring...');
|
|
255
295
|
dataMonitoring.stop();
|
|
296
|
+
(_a = this.dataMonitoringSubscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();
|
|
256
297
|
this.notifications$.next('Data monitoring stopped.');
|
|
257
|
-
const analysis = dataMonitoring.analysis;
|
|
258
|
-
this.notifications$.next(`Data monitoring analysis: ${JSON.stringify(analysis.filteredStats, null, 2)}`);
|
|
259
298
|
// Start the system identification procedure without the chirp signal in order to only compute the plant model
|
|
260
299
|
this.notifications$.next('Starting system identification procedure on Motion Master to compute plant model...');
|
|
261
300
|
const deviceRefObj = (0, device_1.makeDeviceRefObj)(this.deviceRef);
|
|
@@ -273,6 +312,7 @@ class LimitedRangeSystemIdentification {
|
|
|
273
312
|
// Stop data monitoring
|
|
274
313
|
this.notifications$.next('Stopping data monitoring...');
|
|
275
314
|
dataMonitoring.stop();
|
|
315
|
+
(_b = this.dataMonitoringSubscription) === null || _b === void 0 ? void 0 : _b.unsubscribe();
|
|
276
316
|
this.notifications$.next('Data monitoring stopped.');
|
|
277
317
|
// Ensure the drive is in the "Switch On Disabled" after the procedure
|
|
278
318
|
this.notifications$.next('Transitioning to "Switch On Disabled" state...');
|
|
@@ -294,6 +334,20 @@ class LimitedRangeSystemIdentification {
|
|
|
294
334
|
this.notifications$.next(`Failed to restore ENC_POS: ${err instanceof Error ? err.message : err}`);
|
|
295
335
|
}
|
|
296
336
|
}
|
|
337
|
+
// Restore original position limits if they were changed
|
|
338
|
+
if (minPosLmt !== undefined && maxPosLmt !== undefined) {
|
|
339
|
+
this.notifications$.next('Restoring original position limits...');
|
|
340
|
+
try {
|
|
341
|
+
yield this.client.request.downloadMany([
|
|
342
|
+
[this.deviceRef, 0x607d, 0x01, minPosLmt],
|
|
343
|
+
[this.deviceRef, 0x607d, 0x02, maxPosLmt],
|
|
344
|
+
]);
|
|
345
|
+
this.notifications$.next('Position limits restored.');
|
|
346
|
+
}
|
|
347
|
+
catch (err) {
|
|
348
|
+
this.notifications$.next(`Failed to restore position limits: ${err instanceof Error ? err.message : err}`);
|
|
349
|
+
}
|
|
350
|
+
}
|
|
297
351
|
// Restore the position feedback filter if it was changed
|
|
298
352
|
if (positionFeedbackFilterType !== undefined && positionFeedbackFilterType !== 0) {
|
|
299
353
|
this.notifications$.next('Restoring the position feedback filter...');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"limited-range-system-identification.js","sourceRoot":"","sources":["../../../../../libs/motion-master-client/src/lib/limited-range-system-identification.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"limited-range-system-identification.js","sourceRoot":"","sources":["../../../../../libs/motion-master-client/src/lib/limited-range-system-identification.ts"],"names":[],"mappings":"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"}
|
package/src/lib/operators.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Observable, UnaryFunction } from 'rxjs';
|
|
1
|
+
import { Observable, UnaryFunction, MonoTypeOperatorFunction } from 'rxjs';
|
|
2
2
|
import { IMotionMasterMessage, MotionMasterMessage, ParameterValueType, StatusKey } from './types';
|
|
3
3
|
import { DeviceParameter } from './device-parameter';
|
|
4
4
|
import { MotionMasterReqResClient } from './motion-master-req-res-client';
|
|
@@ -18,3 +18,4 @@ export declare function selectMotionMasterMessageByTopic<T>(topic: string): Unar
|
|
|
18
18
|
export declare function selectMotionMasterMessageStatusByKey<T>(key: keyof MotionMasterMessage.IStatus): UnaryFunction<Observable<IMotionMasterMessage>, Observable<T>>;
|
|
19
19
|
export declare function mapMonitoringParameterValuesStatusMessageToParameterValues(): UnaryFunction<Observable<IMotionMasterMessage>, Observable<ParameterValueType[]>>;
|
|
20
20
|
export declare function mapMonitoringParameterValuesStatusMessageToDeviceParameters(request: MotionMasterReqResClient): UnaryFunction<Observable<IMotionMasterMessage>, Observable<DeviceParameter[]>>;
|
|
21
|
+
export declare function takeUntilCompleteOrError<T>(notifier$: Observable<any>): MonoTypeOperatorFunction<T>;
|
package/src/lib/operators.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.mapMonitoringParameterValuesStatusMessageToDeviceParameters = exports.mapMonitoringParameterValuesStatusMessageToParameterValues = exports.selectMotionMasterMessageStatusByKey = exports.selectMotionMasterMessageByTopic = exports.transformMotionMasterMessageToStatus = exports.extendStatus = exports.selectMotionMasterMessageStatusByMessageId = void 0;
|
|
3
|
+
exports.takeUntilCompleteOrError = exports.mapMonitoringParameterValuesStatusMessageToDeviceParameters = exports.mapMonitoringParameterValuesStatusMessageToParameterValues = exports.selectMotionMasterMessageStatusByKey = exports.selectMotionMasterMessageByTopic = exports.transformMotionMasterMessageToStatus = exports.extendStatus = exports.selectMotionMasterMessageStatusByMessageId = void 0;
|
|
4
4
|
const rxjs_1 = require("rxjs");
|
|
5
5
|
const request_status_resolver_1 = require("./request-status-resolver");
|
|
6
6
|
const parameter_1 = require("./parameter");
|
|
@@ -80,4 +80,12 @@ function mapMonitoringParameterValuesStatusMessageToDeviceParameters(request) {
|
|
|
80
80
|
}));
|
|
81
81
|
}
|
|
82
82
|
exports.mapMonitoringParameterValuesStatusMessageToDeviceParameters = mapMonitoringParameterValuesStatusMessageToDeviceParameters;
|
|
83
|
+
function takeUntilCompleteOrError(notifier$) {
|
|
84
|
+
// Transform notifier to emit a value on complete or error
|
|
85
|
+
const stop$ = notifier$.pipe((0, rxjs_1.materialize)(), // Convert next/error/complete to Notification objects
|
|
86
|
+
(0, rxjs_1.filter)((n) => n.kind === 'C' || n.kind === 'E') // Only react to complete or error
|
|
87
|
+
);
|
|
88
|
+
return (0, rxjs_1.takeUntil)(stop$);
|
|
89
|
+
}
|
|
90
|
+
exports.takeUntilCompleteOrError = takeUntilCompleteOrError;
|
|
83
91
|
//# sourceMappingURL=operators.js.map
|
package/src/lib/operators.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"operators.js","sourceRoot":"","sources":["../../../../../libs/motion-master-client/src/lib/operators.ts"],"names":[],"mappings":";;;AAAA,+
|
|
1
|
+
{"version":3,"file":"operators.js","sourceRoot":"","sources":["../../../../../libs/motion-master-client/src/lib/operators.ts"],"names":[],"mappings":"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"}
|