ads-client 2.0.0-beta.3 → 2.0.0-beta.4
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/CHANGELOG.md +13 -0
- package/README.md +505 -258
- package/dist/ads-client.d.ts +280 -69
- package/dist/ads-client.js +332 -76
- package/dist/ads-client.js.map +1 -1
- package/package.json +3 -4
package/README.md
CHANGED
|
@@ -12,7 +12,7 @@ Connect to a Beckhoff TwinCAT automation system using the ADS protocol from a No
|
|
|
12
12
|
|
|
13
13
|
## v2 project status
|
|
14
14
|
|
|
15
|
-
**10.
|
|
15
|
+
**02.10.2024:** Beta 4 released! See [CHANGELOG.md](https://github.com/jisotalo/ads-client/blob/v2-dev/CHANGELOG.md) for details.
|
|
16
16
|
|
|
17
17
|
All breaking changes are (hopefully) done.
|
|
18
18
|
|
|
@@ -98,270 +98,517 @@ If the library has been useful for you or your business, Paypal can be used to s
|
|
|
98
98
|
|
|
99
99
|
[](https://www.paypal.com/donate/?business=KUWBXXCVGZZME&no_recurring=0¤cy_code=EUR)
|
|
100
100
|
|
|
101
|
+
## TwinCAT 2
|
|
102
|
+
|
|
103
|
+
The library works also with TwinCAT 2.
|
|
104
|
+
|
|
105
|
+
Please note the following things when communicating with TC2 systems:
|
|
106
|
+
* ADS port for first PLC runtime is 801 instead of 851
|
|
107
|
+
* All variable names are in UPPERCASE
|
|
108
|
+
* All data type names are in UPPERCASE
|
|
109
|
+
* Global variables are accessed with dot (`.`) prefix, without the GVL name
|
|
110
|
+
* ENUMs are always numeric values only
|
|
111
|
+
* Empty structs and function blocks (no members) can't be read
|
|
112
|
+
|
|
113
|
+
See the TwinCAT 2 tests for supported and tested features.
|
|
114
|
+
|
|
101
115
|
## Library testing
|
|
102
116
|
|
|
103
|
-
Target is that
|
|
117
|
+
Target is that library has tests for all its features, see `./test/` directory.
|
|
118
|
+
This prevents regression, thus updating the ads-client should be always safe.
|
|
119
|
+
|
|
120
|
+
PLC projects for running test suites are located in the following repository:
|
|
121
|
+
[https://github.com/jisotalo/ads-client-test-plc-project/tree/v2-dev](https://github.com/jisotalo/ads-client-test-plc-project/tree/v2-dev).
|
|
122
|
+
|
|
123
|
+
### TwinCAT 3 tests
|
|
124
|
+
|
|
125
|
+
Tests are run with command `npm run test-tc3`. TwinCAT 3 test PLC projects needs to be running in the target system.
|
|
126
|
+
|
|
127
|
+
**Results 28.09.2024:**
|
|
128
|
+
|
|
129
|
+
<details>
|
|
130
|
+
<summary>Click to show test results</summary>
|
|
131
|
+
<pre>
|
|
132
|
+
PASS test/TC3/ads-client.test.js (24.801 s)
|
|
133
|
+
√ IMPORTANT NOTE: This test requires running a specific TwinCAT 3 PLC project (https://github.com/jisotalo/ads-client-test-plc-project) (1 ms)
|
|
134
|
+
connection
|
|
135
|
+
√ client is not connected at beginning (1 ms)
|
|
136
|
+
√ checking ads client settings (1 ms)
|
|
137
|
+
√ connecting to the target (41 ms)
|
|
138
|
+
√ checking that test PLC project is active (13 ms)
|
|
139
|
+
√ checking that test PLC project version is correct (10 ms)
|
|
140
|
+
√ checking 32/64 bitness (4 ms)
|
|
141
|
+
√ caching of symbols and data types
|
|
142
|
+
√ reconnecting (34 ms)
|
|
143
|
+
resetting PLC to original state
|
|
144
|
+
√ resetting PLC (514 ms)
|
|
145
|
+
√ checking that reset was successful (8 ms)
|
|
146
|
+
√ checking that PLC is not running (11 ms)
|
|
147
|
+
√ setting IsReset to false (6 ms)
|
|
148
|
+
√ starting PLC (7 ms)
|
|
149
|
+
√ checking that test PLC project is running (505 ms)
|
|
150
|
+
testing PLC runtime stop, start, restart
|
|
151
|
+
√ stopping PLC (15 ms)
|
|
152
|
+
√ starting PLC (14 ms)
|
|
153
|
+
√ restarting PLC (528 ms)
|
|
154
|
+
system state, PLC runtime states and device information
|
|
155
|
+
√ reading TwinCAT system state (5 ms)
|
|
156
|
+
√ reading PLC runtime (port 851) state (3 ms)
|
|
157
|
+
√ reading PLC runtime (port 852) state (3 ms)
|
|
158
|
+
√ reading PLC runtime device info (3 ms)
|
|
159
|
+
√ reading TwinCAT system device info (5 ms)
|
|
160
|
+
√ reading PLC runtime symbol version (4 ms)
|
|
161
|
+
symbols and data types
|
|
162
|
+
√ reading upload info (4 ms)
|
|
163
|
+
√ reading all symbols (16 ms)
|
|
164
|
+
√ reading single symbol information (1 ms)
|
|
165
|
+
√ reading all data type information (19 ms)
|
|
166
|
+
√ reading single data type information (2 ms)
|
|
167
|
+
data conversion
|
|
168
|
+
√ converting a raw PLC value to a Javascript variable (4 ms)
|
|
169
|
+
√ converting a Javascript value to a raw PLC value (40 ms)
|
|
170
|
+
reading values
|
|
171
|
+
reading standard values
|
|
172
|
+
√ reading BOOL (16 ms)
|
|
173
|
+
√ reading BYTE (8 ms)
|
|
174
|
+
√ reading WORD (9 ms)
|
|
175
|
+
√ reading DWORD (7 ms)
|
|
176
|
+
√ reading SINT (15 ms)
|
|
177
|
+
√ reading USINT (7 ms)
|
|
178
|
+
√ reading INT (14 ms)
|
|
179
|
+
√ reading UINT (7 ms)
|
|
180
|
+
√ reading DINT (13 ms)
|
|
181
|
+
√ reading UDINT (7 ms)
|
|
182
|
+
√ reading REAL (31 ms)
|
|
183
|
+
√ reading STRING (16 ms)
|
|
184
|
+
√ reading DATE (7 ms)
|
|
185
|
+
√ reading DT (14 ms)
|
|
186
|
+
√ reading TOD (16 ms)
|
|
187
|
+
√ reading TIME (8 ms)
|
|
188
|
+
√ reading LWORD (8 ms)
|
|
189
|
+
√ reading LINT (13 ms)
|
|
190
|
+
√ reading ULINT (7 ms)
|
|
191
|
+
√ reading LREAL (31 ms)
|
|
192
|
+
√ reading WSTRING (16 ms)
|
|
193
|
+
√ reading LDATE (---- TODO: Needs TC 3.1.4026 ----)
|
|
194
|
+
√ reading LDT (---- TODO: Needs TC 3.1.4026 ----) (1 ms)
|
|
195
|
+
√ reading LTOD (---- TODO: Needs TC 3.1.4026 ----)
|
|
196
|
+
√ reading LTIME (9 ms)
|
|
197
|
+
reading standard array values
|
|
198
|
+
√ reading ARRAY OF BOOL (14 ms)
|
|
199
|
+
√ reading ARRAY OF BYTE (8 ms)
|
|
200
|
+
√ reading ARRAY OF WORD (9 ms)
|
|
201
|
+
√ reading ARRAY OF DWORD (8 ms)
|
|
202
|
+
√ reading ARRAY OF SINT (13 ms)
|
|
203
|
+
√ reading ARRAY OF USINT (7 ms)
|
|
204
|
+
√ reading ARRAY OF INT (13 ms)
|
|
205
|
+
√ reading ARRAY OF UINT (8 ms)
|
|
206
|
+
√ reading ARRAY OF DINT (16 ms)
|
|
207
|
+
√ reading ARRAY OF UDINT (7 ms)
|
|
208
|
+
√ reading ARRAY OF REAL (31 ms)
|
|
209
|
+
√ reading ARRAY OF STRING (15 ms)
|
|
210
|
+
√ reading ARRAY OF DATE (8 ms)
|
|
211
|
+
√ reading ARRAY OF DT (15 ms)
|
|
212
|
+
√ reading ARRAY OF TOD (14 ms)
|
|
213
|
+
√ reading ARRAY OF TIME (5 ms)
|
|
214
|
+
√ reading ARRAY OF LWORD (8 ms)
|
|
215
|
+
√ reading ARRAY OF LINT (16 ms)
|
|
216
|
+
√ reading ARRAY OF ULINT (7 ms)
|
|
217
|
+
√ reading ARRAY OF LREAL (26 ms)
|
|
218
|
+
√ reading ARRAY OF WSTRING (13 ms)
|
|
219
|
+
√ reading ARRAY OF LDATE (---- TODO: Needs TC 3.1.4026 ----)
|
|
220
|
+
√ reading ARRAY OF LDT (---- TODO: Needs TC 3.1.4026 ----)
|
|
221
|
+
√ reading ARRAY OF LTOD (---- TODO: Needs TC 3.1.4026 ----)
|
|
222
|
+
√ reading ARRAY OF LTIME (6 ms)
|
|
223
|
+
reading complex values
|
|
224
|
+
√ reading STRUCT (14 ms)
|
|
225
|
+
√ reading ALIAS (7 ms)
|
|
226
|
+
√ reading ENUM (44 ms)
|
|
227
|
+
√ reading POINTER (address) (8 ms)
|
|
228
|
+
√ reading SUBRANGE (8 ms)
|
|
229
|
+
√ reading UNION (22 ms)
|
|
230
|
+
√ reading FUNCTION_BLOCK (28 ms)
|
|
231
|
+
√ reading INTERFACE (8 ms)
|
|
232
|
+
reading complex array values
|
|
233
|
+
√ reading ARRAY OF STRUCT (19 ms)
|
|
234
|
+
√ reading ARRAY OF ALIAS (9 ms)
|
|
235
|
+
√ reading ARRAY OF ENUM (38 ms)
|
|
236
|
+
√ reading ARRAY OF POINTER (address) (6 ms)
|
|
237
|
+
√ reading ARRAY OF SUBRANGE (6 ms)
|
|
238
|
+
√ reading ARRAY OF UNION (8 ms)
|
|
239
|
+
√ reading ARRAY OF FUNCTION_BLOCK (27 ms)
|
|
240
|
+
√ reading ARRAY OF INTERFACE (6 ms)
|
|
241
|
+
reading special types / cases
|
|
242
|
+
√ reading ARRAY with negative index (9 ms)
|
|
243
|
+
√ reading multi-dimensional ARRAY (9 ms)
|
|
244
|
+
√ reading ARRAY OF ARRAY (7 ms)
|
|
245
|
+
√ reading STRUCT with pragma: {attribute 'pack_mode' := '1'} (8 ms)
|
|
246
|
+
√ reading STRUCT with pragma: {attribute 'pack_mode' := '8'} (8 ms)
|
|
247
|
+
√ reading an empty FUNCTION_BLOCK (7 ms)
|
|
248
|
+
√ reading an empty STRUCT (8 ms)
|
|
249
|
+
√ reading an empty ARRAY (9 ms)
|
|
250
|
+
√ reading a single BIT (15 ms)
|
|
251
|
+
√ reading a struct with BIT types (8 ms)
|
|
252
|
+
reading dereferenced POINTER and REFERENCE values
|
|
253
|
+
√ reading POINTER (value) (8 ms)
|
|
254
|
+
√ reading REFERENCE (value) (5 ms)
|
|
255
|
+
reading raw data
|
|
256
|
+
√ reading a raw value (4 ms)
|
|
257
|
+
√ reading a raw value using symbol (3 ms)
|
|
258
|
+
√ reading a raw value using path (4 ms)
|
|
259
|
+
√ reading multiple raw values (multi/sum command) (5 ms)
|
|
260
|
+
reading (misc)
|
|
261
|
+
√ reading a value using symbol (3 ms)
|
|
262
|
+
writing values
|
|
263
|
+
writing standard values
|
|
264
|
+
√ writing BOOL (22 ms)
|
|
265
|
+
√ writing BYTE (12 ms)
|
|
266
|
+
√ writing WORD (12 ms)
|
|
267
|
+
√ writing DWORD (12 ms)
|
|
268
|
+
√ writing SINT (24 ms)
|
|
269
|
+
√ writing USINT (10 ms)
|
|
270
|
+
√ writing INT (23 ms)
|
|
271
|
+
√ writing UINT (11 ms)
|
|
272
|
+
√ writing DINT (25 ms)
|
|
273
|
+
√ writing UDINT (11 ms)
|
|
274
|
+
√ writing REAL (46 ms)
|
|
275
|
+
√ writing STRING (21 ms)
|
|
276
|
+
√ writing DATE (11 ms)
|
|
277
|
+
√ writing DT (22 ms)
|
|
278
|
+
√ writing TOD (22 ms)
|
|
279
|
+
√ writing TIME (11 ms)
|
|
280
|
+
√ writing LWORD (7 ms)
|
|
281
|
+
√ writing LINT (24 ms)
|
|
282
|
+
√ writing ULINT (9 ms)
|
|
283
|
+
√ writing LREAL (44 ms)
|
|
284
|
+
√ writing WSTRING (22 ms)
|
|
285
|
+
√ writing LDATE (---- TODO: Needs TC 3.1.4026 ----)
|
|
286
|
+
√ writing LDT (---- TODO: Needs TC 3.1.4026 ----) (1 ms)
|
|
287
|
+
√ writing LTOD (---- TODO: Needs TC 3.1.4026 ----)
|
|
288
|
+
√ writing LTIME (7 ms)
|
|
289
|
+
writing standard array values
|
|
290
|
+
√ writing ARRAY OF BOOL (24 ms)
|
|
291
|
+
√ writing ARRAY OF BYTE (13 ms)
|
|
292
|
+
√ writing ARRAY OF WORD (12 ms)
|
|
293
|
+
√ writing ARRAY OF DWORD (13 ms)
|
|
294
|
+
√ writing ARRAY OF SINT (22 ms)
|
|
295
|
+
√ writing ARRAY OF USINT (12 ms)
|
|
296
|
+
√ writing ARRAY OF INT (19 ms)
|
|
297
|
+
√ writing ARRAY OF UINT (11 ms)
|
|
298
|
+
√ writing ARRAY OF DINT (22 ms)
|
|
299
|
+
√ writing ARRAY OF UDINT (12 ms)
|
|
300
|
+
√ writing ARRAY OF REAL (44 ms)
|
|
301
|
+
√ writing ARRAY OF STRING (23 ms)
|
|
302
|
+
√ writing ARRAY OF DATE (11 ms)
|
|
303
|
+
√ writing ARRAY OF DT (20 ms)
|
|
304
|
+
√ writing ARRAY OF TOD (22 ms)
|
|
305
|
+
√ writing ARRAY OF TIME (11 ms)
|
|
306
|
+
√ writing ARRAY OF LWORD (12 ms)
|
|
307
|
+
√ writing ARRAY OF LINT (21 ms)
|
|
308
|
+
√ writing ARRAY OF ULINT (12 ms)
|
|
309
|
+
√ writing ARRAY OF LREAL (46 ms)
|
|
310
|
+
√ writing ARRAY OF WSTRING (22 ms)
|
|
311
|
+
√ writing ARRAY OF LDATE (---- TODO: Needs TC 3.1.4026 ----) (1 ms)
|
|
312
|
+
√ writing ARRAY OF LDT (---- TODO: Needs TC 3.1.4026 ----) (1 ms)
|
|
313
|
+
√ writing ARRAY OF LTOD (---- TODO: Needs TC 3.1.4026 ----)
|
|
314
|
+
√ writing ARRAY OF LTIME (10 ms)
|
|
315
|
+
writing complex values
|
|
316
|
+
√ writing STRUCT (26 ms)
|
|
317
|
+
√ writing ALIAS (11 ms)
|
|
318
|
+
√ writing ENUM (49 ms)
|
|
319
|
+
√ writing POINTER (address) (14 ms)
|
|
320
|
+
√ writing SUBRANGE (17 ms)
|
|
321
|
+
√ writing UNION (46 ms)
|
|
322
|
+
√ writing FUNCTION_BLOCK (46 ms)
|
|
323
|
+
√ writing INTERFACE (13 ms)
|
|
324
|
+
writing complex array values
|
|
325
|
+
√ writing ARRAY OF STRUCT (24 ms)
|
|
326
|
+
√ writing ARRAY OF ALIAS (10 ms)
|
|
327
|
+
√ writing ARRAY OF ENUM (57 ms)
|
|
328
|
+
√ writing ARRAY OF POINTER (address) (12 ms)
|
|
329
|
+
√ writing ARRAY OF SUBRANGE (11 ms)
|
|
330
|
+
√ writing ARRAY OF UNION (16 ms)
|
|
331
|
+
√ writing ARRAY OF FUNCTION_BLOCK (48 ms)
|
|
332
|
+
√ writing ARRAY OF INTERFACE (16 ms)
|
|
333
|
+
writing special types / cases
|
|
334
|
+
√ writing ARRAY with negative index (14 ms)
|
|
335
|
+
√ writing multi-dimensional ARRAY (15 ms)
|
|
336
|
+
√ writing ARRAY OF ARRAY (16 ms)
|
|
337
|
+
√ writing STRUCT with pragma: {attribute 'pack_mode' := '1'} (14 ms)
|
|
338
|
+
√ writing STRUCT with pragma: {attribute 'pack_mode' := '8'} (16 ms)
|
|
339
|
+
√ writing an empty FUNCTION_BLOCK (8 ms)
|
|
340
|
+
√ writing an empty STRUCT (7 ms)
|
|
341
|
+
√ writing an empty ARRAY (7 ms)
|
|
342
|
+
√ writing a single BIT (36 ms)
|
|
343
|
+
√ writing a struct with BIT types (11 ms)
|
|
344
|
+
writing dereferenced POINTER and REFERENCE values
|
|
345
|
+
√ writing POINTER (value) (22 ms)
|
|
346
|
+
√ writing REFERENCE (value) (23 ms)
|
|
347
|
+
writing raw data
|
|
348
|
+
√ writing a raw value (6 ms)
|
|
349
|
+
√ writing a raw value using symbol (7 ms)
|
|
350
|
+
√ writing a raw value using path (11 ms)
|
|
351
|
+
√ writing multiple raw values (multi/sum command) (20 ms)
|
|
352
|
+
writing (misc)
|
|
353
|
+
√ writing a value using symbol (8 ms)
|
|
354
|
+
variable handles
|
|
355
|
+
√ creating and deleting a varible handle (14 ms)
|
|
356
|
+
√ reading value using a variable handle (12 ms)
|
|
357
|
+
√ writing value using a variable handle (30 ms)
|
|
358
|
+
√ creating and deleting multiple varible handles (multi/sum command) (9 ms)
|
|
359
|
+
subscriptions (ADS notifications)
|
|
360
|
+
√ subscribing and unsubscribing successfully (2033 ms)
|
|
361
|
+
√ subscribing to a changing value (10 ms) with default cycle time (3023 ms)
|
|
362
|
+
√ subscribing to a changing value (10 ms) with 10 ms cycle time (28 ms)
|
|
363
|
+
√ subscribing to a constant value with maximum delay of 2000 ms (2016 ms)
|
|
364
|
+
√ subscribing to a raw ADS address (222 ms)
|
|
365
|
+
√ subscribing using subscribeValue() (2030 ms)
|
|
366
|
+
√ subscribing to a raw ADS address using subscribeRaw() (219 ms)
|
|
367
|
+
remote procedure calls (RPC methods)
|
|
368
|
+
√ calling a RPC method (13 ms)
|
|
369
|
+
√ calling a RPC method with struct parameters (9 ms)
|
|
370
|
+
√ calling a RPC method without return value and without parameters (11 ms)
|
|
371
|
+
miscellaneous
|
|
372
|
+
√ sending read write ADS command (6 ms)
|
|
373
|
+
√ sending multiple read write ADS commands (multi/sum command) (12 ms)
|
|
374
|
+
issue specific tests
|
|
375
|
+
issue 103 (https://github.com/jisotalo/ads-client/issues/103)
|
|
376
|
+
√ calling unsubscribeAll() multiple times (should not crash to unhandled exception) (50 ms)
|
|
377
|
+
disconnecting
|
|
378
|
+
√ disconnecting client (9 ms)
|
|
379
|
+
controlling TwinCAT system service
|
|
380
|
+
√ connecting (1 ms)
|
|
381
|
+
√ setting TwinCAT system to config (4024 ms)
|
|
382
|
+
√ setting TwinCAT system to run (4018 ms)
|
|
383
|
+
√ disconnecting (2 ms)
|
|
384
|
+
handling unknown/stale ADS notifications
|
|
385
|
+
√ connecting (27 ms)
|
|
386
|
+
√ creating an unknown notification handle by forced disconnecting (1040 ms)
|
|
387
|
+
√ deleting an unknown notification handle automatically (1034 ms)
|
|
388
|
+
√ disconnecting (1 ms)
|
|
389
|
+
|
|
390
|
+
Test Suites: 1 passed, 1 total
|
|
391
|
+
Tests: 223 passed, 223 total
|
|
392
|
+
Snapshots: 0 total
|
|
393
|
+
Time: 24.889 s, estimated 25 s
|
|
394
|
+
Ran all test suites matching /TC3\\ads-client.test.js/i.
|
|
395
|
+
</pre>
|
|
396
|
+
</details>
|
|
397
|
+
|
|
398
|
+
### TwinCAT 2 tests
|
|
399
|
+
|
|
400
|
+
Tests are run with command `npm run test-tc2`. TwinCAT 2 test PLC projects needs to be running in the target system.
|
|
401
|
+
|
|
402
|
+
TwinCAT 2 tests only have features that are supported by TC2.
|
|
104
403
|
|
|
105
|
-
|
|
404
|
+
**Results 28.09.2024:**
|
|
106
405
|
|
|
107
406
|
<details>
|
|
108
407
|
<summary>Click to show test results</summary>
|
|
109
408
|
<pre>
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
data
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
reading
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
writing
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
√
|
|
278
|
-
√
|
|
279
|
-
√ writing
|
|
280
|
-
√
|
|
281
|
-
|
|
282
|
-
√
|
|
283
|
-
√
|
|
284
|
-
√
|
|
285
|
-
√
|
|
286
|
-
√
|
|
287
|
-
√
|
|
288
|
-
√
|
|
289
|
-
|
|
290
|
-
√
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
√
|
|
297
|
-
|
|
298
|
-
√
|
|
299
|
-
√
|
|
300
|
-
|
|
301
|
-
√
|
|
302
|
-
|
|
303
|
-
√
|
|
304
|
-
√
|
|
305
|
-
√
|
|
306
|
-
√
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
√ writing STRUCT with pragma: {attribute 'pack_mode' := '1'} (17 ms)
|
|
314
|
-
√ writing STRUCT with pragma: {attribute 'pack_mode' := '8'} (12 ms)
|
|
315
|
-
√ writing an empty FUNCTION_BLOCK (8 ms)
|
|
316
|
-
√ writing an empty STRUCT (8 ms)
|
|
317
|
-
√ writing an empty ARRAY (6 ms)
|
|
318
|
-
√ writing a single BIT (40 ms)
|
|
319
|
-
√ writing a struct with BIT types (15 ms)
|
|
320
|
-
writing dereferenced POINTER and REFERENCE values
|
|
321
|
-
√ writing POINTER (value) (23 ms)
|
|
322
|
-
√ writing REFERENCE (value) (21 ms)
|
|
323
|
-
writing raw data
|
|
324
|
-
√ writing a raw value (7 ms)
|
|
325
|
-
√ writing a raw value using symbol (4 ms)
|
|
326
|
-
√ writing a raw value using path (12 ms)
|
|
327
|
-
√ writing multiple raw values (multi/sum command) (20 ms)
|
|
328
|
-
writing (misc)
|
|
329
|
-
√ writing a value using symbol (4 ms)
|
|
330
|
-
variable handles
|
|
331
|
-
√ creating and deleting a varible handle (16 ms)
|
|
332
|
-
√ reading value using a variable handle (12 ms)
|
|
333
|
-
√ writing value using a variable handle (32 ms)
|
|
334
|
-
√ creating and deleting multiple varible handles (multi/sum command) (8 ms)
|
|
335
|
-
subscriptions (ADS notifications)
|
|
336
|
-
√ subscribing and unsubscribing successfully (2052 ms)
|
|
337
|
-
√ subscribing to a changing value (10 ms) with default cycle time (3031 ms)
|
|
338
|
-
√ subscribing to a changing value (10 ms) with 10 ms cycle time (36 ms)
|
|
339
|
-
√ subscribing to a constant value with maximum delay of 2000 ms (2018 ms)
|
|
340
|
-
√ subscribing to a raw ADS address (227 ms)
|
|
341
|
-
√ subscribing using subscribeValue() (2023 ms)
|
|
342
|
-
√ subscribing to a raw ADS address using subscribeRaw() (217 ms)
|
|
343
|
-
remote procedure calls (RPC methods)
|
|
344
|
-
√ calling a RPC method (13 ms)
|
|
345
|
-
√ calling a RPC method with struct parameters (11 ms)
|
|
346
|
-
√ calling a RPC method without return value and without parameters (9 ms)
|
|
347
|
-
miscellaneous
|
|
348
|
-
√ sending read write ADS command (9 ms)
|
|
349
|
-
√ sending multiple read write ADS commands (multi/sum command) (9 ms)
|
|
350
|
-
issue specific tests
|
|
351
|
-
issue 103 (https://github.com/jisotalo/ads-client/issues/103)
|
|
352
|
-
√ calling unsubscribeAll() multiple times (should not crash to unhandled exception) (51 ms)
|
|
353
|
-
disconnecting
|
|
354
|
-
√ disconnecting client (8 ms)
|
|
355
|
-
controlling TwinCAT system service
|
|
356
|
-
√ connecting (2 ms)
|
|
357
|
-
√ setting TwinCAT system to config (2021 ms)
|
|
358
|
-
√ setting TwinCAT system to run (2022 ms)
|
|
359
|
-
√ disconnecting (1 ms)
|
|
360
|
-
handling unknown/stale ADS notifications
|
|
361
|
-
√ connecting (29 ms)
|
|
362
|
-
√ creating an unknown notification handle by forced disconnecting (1037 ms)
|
|
363
|
-
√ deleting an unknown notification handle automatically (1028 ms)
|
|
364
|
-
√ disconnecting (1 ms)
|
|
409
|
+
PASS test/TC2/ads-client.test.js (26.971 s)
|
|
410
|
+
√ IMPORTANT NOTE: This test requires running a specific TwinCAT 2 PLC project (https://github.com/jisotalo/ads-client-test-plc-project)
|
|
411
|
+
connection
|
|
412
|
+
√ client is not connected at beginning
|
|
413
|
+
√ checking ads client settings
|
|
414
|
+
√ connecting to the target (35 ms)
|
|
415
|
+
√ checking that test PLC project is active (58 ms)
|
|
416
|
+
√ checking that test PLC project version is correct (9 ms)
|
|
417
|
+
√ checking 32/64 bitness (2 ms)
|
|
418
|
+
√ caching of symbols and data types (1 ms)
|
|
419
|
+
√ reconnecting (22 ms)
|
|
420
|
+
resetting PLC to original state
|
|
421
|
+
√ resetting PLC (507 ms)
|
|
422
|
+
√ checking that reset was successful (5 ms)
|
|
423
|
+
√ checking that PLC is not running (8 ms)
|
|
424
|
+
√ setting IsReset to false (3 ms)
|
|
425
|
+
√ starting PLC (5 ms)
|
|
426
|
+
√ checking that test PLC project is running (506 ms)
|
|
427
|
+
testing PLC runtime stop, start, restart
|
|
428
|
+
√ stopping PLC (13 ms)
|
|
429
|
+
√ starting PLC (10 ms)
|
|
430
|
+
√ restarting PLC (523 ms)
|
|
431
|
+
system state, PLC runtime states and device information
|
|
432
|
+
√ reading TwinCAT system state (2 ms)
|
|
433
|
+
√ reading PLC runtime (port 801) state (2 ms)
|
|
434
|
+
√ reading PLC runtime device info (2 ms)
|
|
435
|
+
√ reading TwinCAT system device info (2 ms)
|
|
436
|
+
√ reading PLC runtime symbol version (2 ms)
|
|
437
|
+
symbols and data types
|
|
438
|
+
√ reading upload info (2 ms)
|
|
439
|
+
√ reading all symbols (15 ms)
|
|
440
|
+
√ reading single symbol information
|
|
441
|
+
√ reading all data type information (33 ms)
|
|
442
|
+
√ reading single data type information (9 ms)
|
|
443
|
+
data conversion
|
|
444
|
+
√ converting a raw PLC value to a Javascript variable (7 ms)
|
|
445
|
+
√ converting a Javascript value to a raw PLC value (41 ms)
|
|
446
|
+
reading values
|
|
447
|
+
reading standard values
|
|
448
|
+
√ reading BOOL (12 ms)
|
|
449
|
+
√ reading BYTE (6 ms)
|
|
450
|
+
√ reading WORD (6 ms)
|
|
451
|
+
√ reading DWORD (7 ms)
|
|
452
|
+
√ reading SINT (11 ms)
|
|
453
|
+
√ reading USINT (7 ms)
|
|
454
|
+
√ reading INT (11 ms)
|
|
455
|
+
√ reading UINT (7 ms)
|
|
456
|
+
√ reading DINT (13 ms)
|
|
457
|
+
√ reading UDINT (6 ms)
|
|
458
|
+
√ reading REAL (19 ms)
|
|
459
|
+
√ reading STRING (10 ms)
|
|
460
|
+
√ reading DATE (4 ms)
|
|
461
|
+
√ reading DT (9 ms)
|
|
462
|
+
√ reading TOD (8 ms)
|
|
463
|
+
√ reading TIME (6 ms)
|
|
464
|
+
√ reading LREAL (26 ms)
|
|
465
|
+
reading standard array values
|
|
466
|
+
√ reading ARRAY OF BOOL (9 ms)
|
|
467
|
+
√ reading ARRAY OF BYTE (5 ms)
|
|
468
|
+
√ reading ARRAY OF WORD (5 ms)
|
|
469
|
+
√ reading ARRAY OF DWORD (4 ms)
|
|
470
|
+
√ reading ARRAY OF SINT (10 ms)
|
|
471
|
+
√ reading ARRAY OF USINT (6 ms)
|
|
472
|
+
√ reading ARRAY OF INT (9 ms)
|
|
473
|
+
√ reading ARRAY OF UINT (6 ms)
|
|
474
|
+
√ reading ARRAY OF DINT (10 ms)
|
|
475
|
+
√ reading ARRAY OF UDINT (3 ms)
|
|
476
|
+
√ reading ARRAY OF REAL (18 ms)
|
|
477
|
+
√ reading ARRAY OF STRING (9 ms)
|
|
478
|
+
√ reading ARRAY OF DATE (7 ms)
|
|
479
|
+
√ reading ARRAY OF DT (11 ms)
|
|
480
|
+
√ reading ARRAY OF TOD (9 ms)
|
|
481
|
+
√ reading ARRAY OF TIME (4 ms)
|
|
482
|
+
√ reading ARRAY OF LREAL (24 ms)
|
|
483
|
+
reading complex values
|
|
484
|
+
√ reading STRUCT (15 ms)
|
|
485
|
+
√ reading ALIAS (8 ms)
|
|
486
|
+
√ reading ENUM (16 ms)
|
|
487
|
+
√ reading POINTER (address) (6 ms)
|
|
488
|
+
√ reading SUBRANGE (6 ms)
|
|
489
|
+
√ reading FUNCTION_BLOCK (23 ms)
|
|
490
|
+
reading complex array values
|
|
491
|
+
√ reading ARRAY OF STRUCT (12 ms)
|
|
492
|
+
√ reading ARRAY OF ALIAS (6 ms)
|
|
493
|
+
√ reading ARRAY OF ENUM (20 ms)
|
|
494
|
+
√ reading ARRAY OF POINTER (address) (5 ms)
|
|
495
|
+
√ reading ARRAY OF SUBRANGE (3 ms)
|
|
496
|
+
√ reading ARRAY OF FUNCTION_BLOCK (22 ms)
|
|
497
|
+
reading special types / cases
|
|
498
|
+
√ reading ARRAY with negative index (8 ms)
|
|
499
|
+
√ reading multi-dimensional ARRAY (5 ms)
|
|
500
|
+
√ reading ARRAY OF ARRAY (5 ms)
|
|
501
|
+
reading dereferenced POINTER values
|
|
502
|
+
√ reading POINTER (value) (5 ms)
|
|
503
|
+
reading raw data
|
|
504
|
+
√ reading a raw value (3 ms)
|
|
505
|
+
√ reading a raw value using symbol (2 ms)
|
|
506
|
+
√ reading a raw value using path (2 ms)
|
|
507
|
+
√ reading multiple raw values (multi/sum command) (4 ms)
|
|
508
|
+
reading (misc)
|
|
509
|
+
√ reading a value using symbol (3 ms)
|
|
510
|
+
writing values
|
|
511
|
+
writing standard values
|
|
512
|
+
√ writing BOOL (22 ms)
|
|
513
|
+
√ writing BYTE (10 ms)
|
|
514
|
+
√ writing WORD (8 ms)
|
|
515
|
+
√ writing DWORD (10 ms)
|
|
516
|
+
√ writing SINT (18 ms)
|
|
517
|
+
√ writing USINT (6 ms)
|
|
518
|
+
√ writing INT (16 ms)
|
|
519
|
+
√ writing UINT (8 ms)
|
|
520
|
+
√ writing DINT (13 ms)
|
|
521
|
+
√ writing UDINT (7 ms)
|
|
522
|
+
√ writing REAL (30 ms)
|
|
523
|
+
√ writing STRING (14 ms)
|
|
524
|
+
√ writing DATE (6 ms)
|
|
525
|
+
√ writing DT (15 ms)
|
|
526
|
+
√ writing TOD (15 ms)
|
|
527
|
+
√ writing TIME (8 ms)
|
|
528
|
+
√ writing LREAL (28 ms)
|
|
529
|
+
writing standard array values
|
|
530
|
+
√ writing ARRAY OF BOOL (14 ms)
|
|
531
|
+
√ writing ARRAY OF BYTE (7 ms)
|
|
532
|
+
√ writing ARRAY OF WORD (7 ms)
|
|
533
|
+
√ writing ARRAY OF DWORD (9 ms)
|
|
534
|
+
√ writing ARRAY OF SINT (13 ms)
|
|
535
|
+
√ writing ARRAY OF USINT (7 ms)
|
|
536
|
+
√ writing ARRAY OF INT (15 ms)
|
|
537
|
+
√ writing ARRAY OF UINT (7 ms)
|
|
538
|
+
√ writing ARRAY OF DINT (13 ms)
|
|
539
|
+
√ writing ARRAY OF UDINT (9 ms)
|
|
540
|
+
√ writing ARRAY OF REAL (25 ms)
|
|
541
|
+
√ writing ARRAY OF STRING (17 ms)
|
|
542
|
+
√ writing ARRAY OF DATE (7 ms)
|
|
543
|
+
√ writing ARRAY OF DT (18 ms)
|
|
544
|
+
√ writing ARRAY OF TOD (18 ms)
|
|
545
|
+
√ writing ARRAY OF TIME (10 ms)
|
|
546
|
+
√ writing ARRAY OF LREAL (35 ms)
|
|
547
|
+
writing complex values
|
|
548
|
+
√ writing STRUCT (19 ms)
|
|
549
|
+
√ writing ALIAS (10 ms)
|
|
550
|
+
√ writing ENUM (25 ms)
|
|
551
|
+
√ writing POINTER (address) (13 ms)
|
|
552
|
+
√ writing SUBRANGE (12 ms)
|
|
553
|
+
√ writing FUNCTION_BLOCK (39 ms)
|
|
554
|
+
writing complex array values
|
|
555
|
+
√ writing ARRAY OF STRUCT (24 ms)
|
|
556
|
+
√ writing ARRAY OF ALIAS (11 ms)
|
|
557
|
+
√ writing ARRAY OF ENUM (28 ms)
|
|
558
|
+
√ writing ARRAY OF POINTER (address) (14 ms)
|
|
559
|
+
√ writing ARRAY OF SUBRANGE (11 ms)
|
|
560
|
+
√ writing ARRAY OF FUNCTION_BLOCK (48 ms)
|
|
561
|
+
writing special types / cases
|
|
562
|
+
√ writing ARRAY with negative index (18 ms)
|
|
563
|
+
√ writing multi-dimensional ARRAY (13 ms)
|
|
564
|
+
√ writing ARRAY OF ARRAY (12 ms)
|
|
565
|
+
√ writing an empty FUNCTION_BLOCK (7 ms)
|
|
566
|
+
writing dereferenced POINTER and REFERENCE values
|
|
567
|
+
√ writing POINTER (value) (15 ms)
|
|
568
|
+
writing raw data
|
|
569
|
+
√ writing a raw value (7 ms)
|
|
570
|
+
√ writing a raw value using symbol (4 ms)
|
|
571
|
+
√ writing a raw value using path (10 ms)
|
|
572
|
+
√ writing multiple raw values (multi/sum command) (11 ms)
|
|
573
|
+
writing (misc)
|
|
574
|
+
√ writing a value using symbol (5 ms)
|
|
575
|
+
variable handles
|
|
576
|
+
√ creating and deleting a varible handle (12 ms)
|
|
577
|
+
√ reading value using a variable handle (6 ms)
|
|
578
|
+
√ writing value using a variable handle (19 ms)
|
|
579
|
+
√ creating and deleting multiple varible handles (multi/sum command) (5 ms)
|
|
580
|
+
subscriptions (ADS notifications)
|
|
581
|
+
√ subscribing and unsubscribing successfully (2010 ms)
|
|
582
|
+
√ subscribing to a changing value (10 ms) with default cycle time (3018 ms)
|
|
583
|
+
√ subscribing to a changing value (10 ms) with 10 ms cycle time (30 ms)
|
|
584
|
+
√ subscribing to a constant value with maximum delay of 2000 ms (2010 ms)
|
|
585
|
+
√ subscribing to a raw ADS address (220 ms)
|
|
586
|
+
√ subscribing using subscribeValue() (2010 ms)
|
|
587
|
+
√ subscribing to a raw ADS address using subscribeRaw() (218 ms)
|
|
588
|
+
miscellaneous
|
|
589
|
+
√ sending read write ADS command (7 ms)
|
|
590
|
+
√ sending multiple read write ADS commands (multi/sum command) (10 ms)
|
|
591
|
+
issue specific tests
|
|
592
|
+
issue 103 (https://github.com/jisotalo/ads-client/issues/103)
|
|
593
|
+
√ calling unsubscribeAll() multiple times (should not crash to unhandled exception) (28 ms)
|
|
594
|
+
disconnecting
|
|
595
|
+
√ disconnecting client (6 ms)
|
|
596
|
+
controlling TwinCAT system service
|
|
597
|
+
√ connecting (2 ms)
|
|
598
|
+
√ setting TwinCAT system to config (5248 ms)
|
|
599
|
+
√ setting TwinCAT system to run (6303 ms)
|
|
600
|
+
√ disconnecting (1 ms)
|
|
601
|
+
handling unknown/stale ADS notifications
|
|
602
|
+
√ connecting (23 ms)
|
|
603
|
+
√ creating an unknown notification handle by forced disconnecting (1033 ms)
|
|
604
|
+
√ deleting an unknown notification handle automatically (1021 ms)
|
|
605
|
+
√ disconnecting (1 ms)
|
|
606
|
+
|
|
607
|
+
Test Suites: 1 passed, 1 total
|
|
608
|
+
Tests: 164 passed, 164 total
|
|
609
|
+
Snapshots: 0 total
|
|
610
|
+
Time: 27.056 s
|
|
611
|
+
Ran all test suites matching /TC2\\ads-client.test.js/i.
|
|
365
612
|
</pre>
|
|
366
613
|
</details>
|
|
367
614
|
|