ads-client 2.0.0-beta.1 → 2.0.0-beta.3

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,13 +12,12 @@ Connect to a Beckhoff TwinCAT automation system using the ADS protocol from a No
12
12
 
13
13
  ## v2 project status
14
14
 
15
- **24.08.2024:** Beta 1 released!
15
+ **10.09.2024:** Beta 3 released! See [CHANGELOG.md](https://github.com/jisotalo/ads-client/blob/v2-dev/CHANGELOG.md) for details.
16
16
 
17
- All breaking changes are (hopefully) now done.
17
+ All breaking changes are (hopefully) done.
18
18
 
19
19
  * See [milestone #2](https://github.com/jisotalo/ads-client/milestone/2) for tasks to be done.
20
20
  * See [MIGRATION.md](https://github.com/jisotalo/ads-client/blob/v2-dev/MIGRATION.md) for guide of migrating v1->v2
21
- * See [CHANGELOG.md](https://github.com/jisotalo/ads-client/blob/v2-dev/CHANGELOG.md) for some more changes
22
21
  * Clone repository and open `docs/index.html` in browser for documentation
23
22
 
24
23
  ## Getting started
@@ -28,15 +27,24 @@ README is under construction.
28
27
  ### Install
29
28
  `npm install ads-client@beta`
30
29
 
31
- ### Create a client
32
-
30
+ ### Import the client
33
31
  ```js
32
+ //Javascript:
34
33
  const { Client } = require('ads-client');
35
34
 
35
+ //Typescript:
36
+ import { Client } from 'ads-client';
37
+ ```
38
+
39
+ ### Create a client and connect
40
+
41
+ ```js
36
42
  const client = new Client({
37
43
  targetAmsNetId: "localhost",
38
44
  targetAdsPort: 851
39
45
  });
46
+
47
+ await client.connect();
40
48
  ```
41
49
 
42
50
  ### Read a value
@@ -44,6 +52,11 @@ const client = new Client({
44
52
  ```js
45
53
  const res = await client.readValue('GVL_Example.StringValue');
46
54
  console.log(res.value);
55
+
56
+ //Typescript:
57
+ const res = await client.readValue<string>('GVL_Example.StringValue');
58
+ console.log(res.value); //res.value is typed as string (instead of any)
59
+
47
60
  ```
48
61
 
49
62
  ### Write a value
@@ -59,6 +72,16 @@ await client.subscribe({
59
72
  cycleTime: 100,
60
73
  callback: (data, subscription) => console.log(`${data.timestamp}: Value changed to ${data.value}`)
61
74
  });
75
+
76
+ //Typescript:
77
+ await client.subscribe<number>({
78
+ target: 'GVL_Example.ChangingValue',
79
+ cycleTime: 100,
80
+ callback: (data, subscription) => {
81
+ //data.value is typed as string (instead of any)
82
+ console.log(`${data.timestamp}: Value changed to ${data.value}`);
83
+ }
84
+ });
62
85
  ```
63
86
 
64
87
  ## Support
@@ -84,256 +107,261 @@ Target is that all functions of the library are always tested before releasing.
84
107
  <details>
85
108
  <summary>Click to show test results</summary>
86
109
  <pre>
87
- √ IMPORTANT NOTE: This test requires running a specific PLC project locally (https://github.com/jisotalo/ads-client-test-plc-project)
88
- connection
89
- √ client is not connected at beginning (1 ms)
90
- √ checking ads client settings (1 ms)
91
- √ connecting to the target (31 ms)
92
- √ checking that test PLC project is active (13 ms)
93
- √ checking that test PLC project version is correct (10 ms)
94
- √ caching of symbols and data types (1 ms)
95
- √ reconnecting (36 ms)
96
- resetting PLC to original state
97
- √ resetting PLC (514 ms)
98
- √ checking that reset was successful (8 ms)
99
- √ checking that PLC is not running (12 ms)
100
- √ setting IsReset to false (4 ms)
101
- √ starting PLC (8 ms)
102
- √ checking that test PLC project is running (506 ms)
103
- testing PLC runtime stop, start, restart
104
- √ stopping PLC (16 ms)
105
- √ starting PLC (15 ms)
106
- √ restarting PLC (538 ms)
107
- system state, PLC runtime states and device information
108
- √ reading TwinCAT system state (7 ms)
109
- √ reading PLC runtime (port 851) state (5 ms)
110
- √ reading PLC runtime (port 852) state (5 ms)
111
- √ reading PLC runtime device info (4 ms)
112
- √ reading TwinCAT system device info (5 ms)
113
- √ reading PLC runtime symbol version (5 ms)
114
- symbols and data types
115
- √ reading upload info (4 ms)
116
- √ reading all symbols (15 ms)
117
- √ reading single symbol information (2 ms)
118
- √ reading all data type information (19 ms)
119
- √ reading single data type information (2 ms)
120
- data conversion
121
- √ converting a raw PLC value to a Javascript variable (5 ms)
122
- √ converting a Javascript value to a raw PLC value (40 ms)
123
- reading values
124
- reading standard values
125
- √ reading BOOL (15 ms)
126
- √ reading BYTE (8 ms)
127
- √ reading WORD (7 ms)
128
- √ reading DWORD (6 ms)
129
- √ reading SINT (11 ms)
130
- √ reading USINT (6 ms)
131
- √ reading INT (13 ms)
132
- √ reading UINT (7 ms)
133
- √ reading DINT (15 ms)
134
- √ reading UDINT (8 ms)
135
- √ reading REAL (32 ms)
136
- √ reading STRING (15 ms)
137
- √ reading DATE (8 ms)
138
- √ reading DT (13 ms)
139
- √ reading TOD (16 ms)
140
- √ reading TIME (9 ms)
141
- √ reading LWORD (8 ms)
142
- √ reading LINT (12 ms)
143
- √ reading ULINT (7 ms)
144
- √ reading LREAL (29 ms)
145
- √ reading WSTRING (12 ms)
146
- √ reading LDATE (---- TODO: Needs TC 3.1.4026 ----)
147
- √ reading LDT (---- TODO: Needs TC 3.1.4026 ----)
148
- √ reading LTOD (---- TODO: Needs TC 3.1.4026 ----)
149
- √ reading LTIME (7 ms)
150
- reading standard array values
151
- √ reading ARRAY OF BOOL (13 ms)
152
- √ reading ARRAY OF BYTE (8 ms)
153
- √ reading ARRAY OF WORD (7 ms)
154
- √ reading ARRAY OF DWORD (8 ms)
155
- √ reading ARRAY OF SINT (13 ms)
156
- √ reading ARRAY OF USINT (7 ms)
157
- √ reading ARRAY OF INT (15 ms)
158
- √ reading ARRAY OF UINT (8 ms)
159
- √ reading ARRAY OF DINT (16 ms)
160
- √ reading ARRAY OF UDINT (10 ms)
161
- √ reading ARRAY OF REAL (31 ms)
162
- √ reading ARRAY OF STRING (15 ms)
163
- √ reading ARRAY OF DATE (3 ms)
164
- √ reading ARRAY OF DT (14 ms)
165
- √ reading ARRAY OF TOD (14 ms)
166
- √ reading ARRAY OF TIME (8 ms)
167
- √ reading ARRAY OF LWORD (4 ms)
168
- √ reading ARRAY OF LINT (10 ms)
169
- √ reading ARRAY OF ULINT (4 ms)
170
- √ reading ARRAY OF LREAL (24 ms)
171
- √ reading ARRAY OF WSTRING (13 ms)
172
- √ reading ARRAY OF LDATE (---- TODO: Needs TC 3.1.4026 ----)
173
- √ reading ARRAY OF LDT (---- TODO: Needs TC 3.1.4026 ----)
174
- √ reading ARRAY OF LTOD (---- TODO: Needs TC 3.1.4026 ----)
175
- √ reading ARRAY OF LTIME (6 ms)
176
- reading complex values
177
- √ reading STRUCT (15 ms)
178
- √ reading ALIAS (5 ms)
179
- √ reading ENUM (41 ms)
180
- √ reading POINTER (address) (7 ms)
181
- √ reading SUBRANGE (7 ms)
182
- √ reading UNION (23 ms)
183
- √ reading FUNCTION_BLOCK (29 ms)
184
- √ reading INTERFACE (9 ms)
185
- reading complex array values
186
- √ reading ARRAY OF STRUCT (18 ms)
187
- √ reading ARRAY OF ALIAS (8 ms)
188
- √ reading ARRAY OF ENUM (40 ms)
189
- √ reading ARRAY OF POINTER (address) (7 ms)
190
- √ reading ARRAY OF SUBRANGE (7 ms)
191
- √ reading ARRAY OF UNION (8 ms)
192
- √ reading ARRAY OF FUNCTION_BLOCK (32 ms)
193
- √ reading ARRAY OF INTERFACE (6 ms)
194
- reading special types / cases
195
- √ reading ARRAY with negative index (7 ms)
196
- √ reading multi-dimensional ARRAY (8 ms)
197
- √ reading ARRAY OF ARRAY (8 ms)
198
- √ reading STRUCT with pragma: {attribute 'pack_mode' := '1'} (9 ms)
199
- √ reading STRUCT with pragma: {attribute 'pack_mode' := '8'} (9 ms)
200
- √ reading an empty FUNCTION_BLOCK (7 ms)
201
- √ reading an empty STRUCT (8 ms)
202
- √ reading an empty ARRAY (7 ms)
203
- √ reading a single BIT (14 ms)
204
- √ reading a struct with BIT types (8 ms)
205
- reading dereferenced POINTER and REFERENCE values
206
- √ reading POINTER (value) (8 ms)
207
- √ reading REFERENCE (value) (8 ms)
208
- reading raw data
209
- √ reading a raw value (5 ms)
210
- √ reading a raw value using symbol (3 ms)
211
- √ reading a raw value using path (2 ms)
212
- √ reading multiple raw values (multi/sum command) (5 ms)
213
- reading (misc)
214
- √ reading a value using symbol (5 ms)
215
- writing values
216
- writing standard values
217
- √ writing BOOL (23 ms)
218
- √ writing BYTE (11 ms)
219
- √ writing WORD (9 ms)
220
- √ writing DWORD (9 ms)
221
- √ writing SINT (24 ms)
222
- √ writing USINT (12 ms)
223
- √ writing INT (22 ms)
224
- √ writing UINT (11 ms)
225
- √ writing DINT (22 ms)
226
- √ writing UDINT (9 ms)
227
- √ writing REAL (47 ms)
228
- √ writing STRING (24 ms)
229
- √ writing DATE (12 ms)
230
- √ writing DT (22 ms)
231
- √ writing TOD (23 ms)
232
- √ writing TIME (12 ms)
233
- √ writing LWORD (12 ms)
234
- √ writing LINT (25 ms)
235
- √ writing ULINT (12 ms)
236
- √ writing LREAL (47 ms)
237
- √ writing WSTRING (21 ms)
238
- √ writing LDATE (---- TODO: Needs TC 3.1.4026 ----)
239
- √ writing LDT (---- TODO: Needs TC 3.1.4026 ----)
240
- √ writing LTOD (---- TODO: Needs TC 3.1.4026 ----)
241
- √ writing LTIME (11 ms)
242
- writing standard array values
243
- √ writing ARRAY OF BOOL (25 ms)
244
- √ writing ARRAY OF BYTE (12 ms)
245
- √ writing ARRAY OF WORD (10 ms)
246
- √ writing ARRAY OF DWORD (13 ms)
247
- √ writing ARRAY OF SINT (18 ms)
248
- √ writing ARRAY OF USINT (9 ms)
249
- √ writing ARRAY OF INT (19 ms)
250
- √ writing ARRAY OF UINT (12 ms)
251
- √ writing ARRAY OF DINT (19 ms)
252
- √ writing ARRAY OF UDINT (10 ms)
253
- √ writing ARRAY OF REAL (48 ms)
254
- √ writing ARRAY OF STRING (25 ms)
255
- √ writing ARRAY OF DATE (11 ms)
256
- √ writing ARRAY OF DT (21 ms)
257
- √ writing ARRAY OF TOD (25 ms)
258
- √ writing ARRAY OF TIME (12 ms)
259
- √ writing ARRAY OF LWORD (13 ms)
260
- √ writing ARRAY OF LINT (23 ms)
261
- √ writing ARRAY OF ULINT (12 ms)
262
- √ writing ARRAY OF LREAL (48 ms)
263
- √ writing ARRAY OF WSTRING (23 ms)
264
- √ writing ARRAY OF LDATE (---- TODO: Needs TC 3.1.4026 ----)
265
- √ writing ARRAY OF LDT (---- TODO: Needs TC 3.1.4026 ----) (1 ms)
266
- √ writing ARRAY OF LTOD (---- TODO: Needs TC 3.1.4026 ----)
267
- √ writing ARRAY OF LTIME (12 ms)
268
- writing complex values
269
- √ writing STRUCT (22 ms)
270
- √ writing ALIAS (11 ms)
271
- √ writing ENUM (54 ms)
272
- √ writing POINTER (address) (17 ms)
273
- √ writing SUBRANGE (20 ms)
274
- √ writing UNION (48 ms)
275
- √ writing FUNCTION_BLOCK (47 ms)
276
- √ writing INTERFACE (15 ms)
277
- writing complex array values
278
- √ writing ARRAY OF STRUCT (26 ms)
279
- √ writing ARRAY OF ALIAS (13 ms)
280
- √ writing ARRAY OF ENUM (55 ms)
281
- √ writing ARRAY OF POINTER (address) (16 ms)
282
- √ writing ARRAY OF SUBRANGE (11 ms)
283
- √ writing ARRAY OF UNION (13 ms)
284
- √ writing ARRAY OF FUNCTION_BLOCK (48 ms)
285
- √ writing ARRAY OF INTERFACE (15 ms)
286
- writing special types / cases
287
- √ writing ARRAY with negative index (17 ms)
288
- √ writing multi-dimensional ARRAY (16 ms)
289
- √ writing ARRAY OF ARRAY (16 ms)
290
- √ writing STRUCT with pragma: {attribute 'pack_mode' := '1'} (14 ms)
291
- √ writing STRUCT with pragma: {attribute 'pack_mode' := '8'} (14 ms)
292
- √ writing an empty FUNCTION_BLOCK (7 ms)
293
- √ writing an empty STRUCT (8 ms)
294
- √ writing an empty ARRAY (7 ms)
295
- √ writing a single BIT (39 ms)
296
- √ writing a struct with BIT types (15 ms)
297
- writing dereferenced POINTER and REFERENCE values
298
- √ writing POINTER (value) (21 ms)
299
- √ writing REFERENCE (value) (21 ms)
300
- writing raw data
301
- √ writing a raw value (7 ms)
302
- √ writing a raw value using symbol (5 ms)
303
- √ writing a raw value using path (16 ms)
304
- √ writing multiple raw values (multi/sum command) (18 ms)
305
- writing (misc)
306
- √ writing a value using symbol (7 ms)
307
- variable handles
308
- √ creating and deleting a varible handle (14 ms)
309
- √ reading value using a variable handle (10 ms)
310
- √ writing value using a variable handle (31 ms)
311
- √ creating and deleting multiple varible handles (multi/sum command) (9 ms)
312
- subscriptions (ADS notifications)
313
- √ subscribing and unsubscribing successfully (2036 ms)
314
- √ subscribing to a changing value (10 ms) with default cycle time (3028 ms)
315
- √ subscribing to a changing value (10 ms) with 10 ms cycle time (27 ms)
316
- √ subscribing to a constant value with maximum delay of 2000 ms (2036 ms)
317
- √ subscribing to a raw ADS address (229 ms)
318
- √ subscribing using subscribeSymbol() (2020 ms)
319
- √ subscribing to a raw ADS address using subscribeRaw() (219 ms)
320
- remote procedure calls (RPC methods)
321
- √ calling a RPC method (15 ms)
322
- √ calling a RPC method with struct parameters (14 ms)
323
- √ calling a RPC method without return value and without parameters (9 ms)
324
- miscellaneous
325
- √ sending read write ADS command (6 ms)
326
- √ sending multiple read write ADS commands (multi/sum command) (10 ms)
327
- issue specific tests
328
- issue 103 (https://github.com/jisotalo/ads-client/issues/103)
329
- √ calling unsubscribeAll() multiple times (should not crash to unhandled exception) (51 ms)
330
- disconnecting
331
- √ disconnecting client (5 ms)
332
- controlling TwinCAT system service
333
- √ connecting (1 ms)
334
- √ setting TwinCAT system to config (2022 ms)
335
- √ setting TwinCAT system to run (2027 ms)
336
- √ disconnecting (2 ms)
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)
337
365
  </pre>
338
366
  </details>
339
367