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/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.09.2024:** Beta 3 released! See [CHANGELOG.md](https://github.com/jisotalo/ads-client/blob/v2-dev/CHANGELOG.md) for details.
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
  [![Donate](https://img.shields.io/badge/Donate-PayPal-yellow)](https://www.paypal.com/donate/?business=KUWBXXCVGZZME&no_recurring=0&currency_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 all functions of the library are always tested before releasing.
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
- `npm test` results - updated 24.08.2024
404
+ **Results 28.09.2024:**
106
405
 
107
406
  <details>
108
407
  <summary>Click to show test results</summary>
109
408
  <pre>
110
- IMPORTANT NOTE: This test requires running a specific PLC project locally (https://github.com/jisotalo/ads-client-test-plc-project)
111
- connection
112
- √ client is not connected at beginning (1 ms)
113
- checking ads client settings (1 ms)
114
- connecting to the target (42 ms)
115
- checking that test PLC project is active (12 ms)
116
- √ checking that test PLC project version is correct (12 ms)
117
- caching of symbols and data types (1 ms)
118
- reconnecting (34 ms)
119
- resetting PLC to original state
120
- resetting PLC (511 ms)
121
- checking that reset was successful (9 ms)
122
- checking that PLC is not running (11 ms)
123
- setting IsReset to false (6 ms)
124
- starting PLC (8 ms)
125
- checking that test PLC project is running (504 ms)
126
- testing PLC runtime stop, start, restart
127
- stopping PLC (16 ms)
128
- starting PLC (13 ms)
129
- restarting PLC (533 ms)
130
- system state, PLC runtime states and device information
131
- reading TwinCAT system state (6 ms)
132
- reading PLC runtime (port 851) state (6 ms)
133
- √ reading PLC runtime (port 852) state (6 ms)
134
- √ reading PLC runtime device info (5 ms)
135
- √ reading TwinCAT system device info (7 ms)
136
- √ reading PLC runtime symbol version (3 ms)
137
- symbols and data types
138
- reading upload info (4 ms)
139
- √ reading all symbols (15 ms)
140
- √ reading single symbol information (1 ms)
141
- √ reading all data type information (14 ms)
142
- √ reading single data type information (2 ms)
143
- data conversion
144
- converting a raw PLC value to a Javascript variable (3 ms)
145
- √ converting a Javascript value to a raw PLC value (42 ms)
146
- reading values
147
- reading standard values
148
- reading BOOL (15 ms)
149
- √ reading BYTE (8 ms)
150
- √ reading WORD (8 ms)
151
- √ reading DWORD (5 ms)
152
- √ reading SINT (12 ms)
153
- √ reading USINT (6 ms)
154
- √ reading INT (16 ms)
155
- √ reading UINT (8 ms)
156
- √ reading DINT (16 ms)
157
- √ reading UDINT (8 ms)
158
- √ reading REAL (31 ms)
159
- √ reading STRING (15 ms)
160
- √ reading DATE (7 ms)
161
- √ reading DT (16 ms)
162
- √ reading TOD (11 ms)
163
- √ reading TIME (5 ms)
164
- √ reading LWORD (7 ms)
165
- √ reading LINT (13 ms)
166
- reading ULINT (8 ms)
167
- √ reading LREAL (24 ms)
168
- √ reading WSTRING (14 ms)
169
- √ reading LDATE (---- TODO: Needs TC 3.1.4026 ----) (1 ms)
170
- √ reading LDT (---- TODO: Needs TC 3.1.4026 ----)
171
- √ reading LTOD (---- TODO: Needs TC 3.1.4026 ----)
172
- √ reading LTIME (4 ms)
173
- reading standard array values
174
- √ reading ARRAY OF BOOL (13 ms)
175
- √ reading ARRAY OF BYTE (7 ms)
176
- √ reading ARRAY OF WORD (9 ms)
177
- √ reading ARRAY OF DWORD (7 ms)
178
- √ reading ARRAY OF SINT (16 ms)
179
- √ reading ARRAY OF USINT (8 ms)
180
- √ reading ARRAY OF INT (15 ms)
181
- √ reading ARRAY OF UINT (6 ms)
182
- √ reading ARRAY OF DINT (14 ms)
183
- √ reading ARRAY OF UDINT (4 ms)
184
- reading ARRAY OF REAL (28 ms)
185
- √ reading ARRAY OF STRING (14 ms)
186
- √ reading ARRAY OF DATE (8 ms)
187
- √ reading ARRAY OF DT (16 ms)
188
- √ reading ARRAY OF TOD (16 ms)
189
- √ reading ARRAY OF TIME (8 ms)
190
- √ reading ARRAY OF LWORD (8 ms)
191
- reading ARRAY OF LINT (16 ms)
192
- √ reading ARRAY OF ULINT (8 ms)
193
- √ reading ARRAY OF LREAL (28 ms)
194
- √ reading ARRAY OF WSTRING (13 ms)
195
- √ reading ARRAY OF LDATE (---- TODO: Needs TC 3.1.4026 ----)
196
- √ reading ARRAY OF LDT (---- TODO: Needs TC 3.1.4026 ----) (1 ms)
197
- √ reading ARRAY OF LTOD (---- TODO: Needs TC 3.1.4026 ----)
198
- reading ARRAY OF LTIME (3 ms)
199
- reading complex values
200
- √ reading STRUCT (15 ms)
201
- √ reading ALIAS (8 ms)
202
- reading ENUM (38 ms)
203
- √ reading POINTER (address) (9 ms)
204
- reading SUBRANGE (8 ms)
205
- √ reading UNION (22 ms)
206
- √ reading FUNCTION_BLOCK (33 ms)
207
- √ reading INTERFACE (7 ms)
208
- reading complex array values
209
- reading ARRAY OF STRUCT (17 ms)
210
- √ reading ARRAY OF ALIAS (8 ms)
211
- reading ARRAY OF ENUM (42 ms)
212
- reading ARRAY OF POINTER (address) (8 ms)
213
- reading ARRAY OF SUBRANGE (6 ms)
214
- reading ARRAY OF UNION (8 ms)
215
- reading ARRAY OF FUNCTION_BLOCK (31 ms)
216
- reading ARRAY OF INTERFACE (5 ms)
217
- reading special types / cases
218
- reading ARRAY with negative index (6 ms)
219
- reading multi-dimensional ARRAY (5 ms)
220
- reading ARRAY OF ARRAY (8 ms)
221
- reading STRUCT with pragma: {attribute 'pack_mode' := '1'} (4 ms)
222
- reading STRUCT with pragma: {attribute 'pack_mode' := '8'} (6 ms)
223
- reading an empty FUNCTION_BLOCK (7 ms)
224
- reading an empty STRUCT (6 ms)
225
- reading an empty ARRAY (8 ms)
226
- reading a single BIT (14 ms)
227
- reading a struct with BIT types (6 ms)
228
- reading dereferenced POINTER and REFERENCE values
229
- reading POINTER (value) (7 ms)
230
- reading REFERENCE (value) (6 ms)
231
- reading raw data
232
- reading a raw value (4 ms)
233
- reading a raw value using symbol (4 ms)
234
- reading a raw value using path (4 ms)
235
- reading multiple raw values (multi/sum command) (5 ms)
236
- reading (misc)
237
- reading a value using symbol (3 ms)
238
- writing values
239
- writing standard values
240
- √ writing BOOL (20 ms)
241
- √ writing BYTE (12 ms)
242
- √ writing WORD (12 ms)
243
- √ writing DWORD (10 ms)
244
- √ writing SINT (24 ms)
245
- √ writing USINT (11 ms)
246
- √ writing INT (20 ms)
247
- √ writing UINT (10 ms)
248
- writing DINT (20 ms)
249
- √ writing UDINT (9 ms)
250
- √ writing REAL (47 ms)
251
- √ writing STRING (22 ms)
252
- √ writing DATE (11 ms)
253
- √ writing DT (20 ms)
254
- √ writing TOD (24 ms)
255
- writing TIME (10 ms)
256
- √ writing LWORD (13 ms)
257
- √ writing LINT (21 ms)
258
- √ writing ULINT (9 ms)
259
- √ writing LREAL (38 ms)
260
- √ writing WSTRING (20 ms)
261
- √ writing LDATE (---- TODO: Needs TC 3.1.4026 ----)
262
- writing LDT (---- TODO: Needs TC 3.1.4026 ----)
263
- √ writing LTOD (---- TODO: Needs TC 3.1.4026 ----)
264
- √ writing LTIME (12 ms)
265
- writing standard array values
266
- √ writing ARRAY OF BOOL (22 ms)
267
- writing ARRAY OF BYTE (12 ms)
268
- √ writing ARRAY OF WORD (12 ms)
269
- writing ARRAY OF DWORD (10 ms)
270
- √ writing ARRAY OF SINT (22 ms)
271
- √ writing ARRAY OF USINT (9 ms)
272
- √ writing ARRAY OF INT (21 ms)
273
- √ writing ARRAY OF UINT (11 ms)
274
- writing ARRAY OF DINT (23 ms)
275
- √ writing ARRAY OF UDINT (12 ms)
276
- writing ARRAY OF REAL (38 ms)
277
- writing ARRAY OF STRING (22 ms)
278
- writing ARRAY OF DATE (11 ms)
279
- √ writing ARRAY OF DT (18 ms)
280
- writing ARRAY OF TOD (23 ms)
281
- writing ARRAY OF TIME (12 ms)
282
- writing ARRAY OF LWORD (12 ms)
283
- writing ARRAY OF LINT (24 ms)
284
- writing ARRAY OF ULINT (12 ms)
285
- writing ARRAY OF LREAL (48 ms)
286
- writing ARRAY OF WSTRING (22 ms)
287
- writing ARRAY OF LDATE (---- TODO: Needs TC 3.1.4026 ----) (1 ms)
288
- writing ARRAY OF LDT (---- TODO: Needs TC 3.1.4026 ----)
289
- √ writing ARRAY OF LTOD (---- TODO: Needs TC 3.1.4026 ----)
290
- writing ARRAY OF LTIME (12 ms)
291
- writing complex values
292
- writing STRUCT (25 ms)
293
- writing ALIAS (11 ms)
294
- writing ENUM (54 ms)
295
- √ writing POINTER (address) (13 ms)
296
- writing SUBRANGE (19 ms)
297
- writing UNION (46 ms)
298
- writing FUNCTION_BLOCK (38 ms)
299
- writing INTERFACE (12 ms)
300
- writing complex array values
301
- writing ARRAY OF STRUCT (21 ms)
302
- writing ARRAY OF ALIAS (13 ms)
303
- writing ARRAY OF ENUM (48 ms)
304
- writing ARRAY OF POINTER (address) (14 ms)
305
- writing ARRAY OF SUBRANGE (14 ms)
306
- writing ARRAY OF UNION (15 ms)
307
- √ writing ARRAY OF FUNCTION_BLOCK (44 ms)
308
- writing ARRAY OF INTERFACE (18 ms)
309
- writing special types / cases
310
- writing ARRAY with negative index (17 ms)
311
- writing multi-dimensional ARRAY (14 ms)
312
- writing ARRAY OF ARRAY (16 ms)
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