AdsLib
Loading...
Searching...
No Matches
AdsDef.h
Go to the documentation of this file.
1// SPDX-License-Identifier: MIT
6#pragma once
7
8#include <cstdint>
9#include <string>
10
11#define ADS_TCP_SERVER_PORT 0xBF02
12
14// AMS Ports
15enum AMSPORT : uint16_t {
16 AMSPORT_LOGGER = 100,
17 AMSPORT_R0_RTIME = 200,
18 AMSPORT_R0_TRACE = (AMSPORT_R0_RTIME + 90),
19 AMSPORT_R0_IO = 300,
20 AMSPORT_R0_SPS = 400,
21 AMSPORT_R0_NC = 500,
22 AMSPORT_R0_ISG = 550,
23 AMSPORT_R0_PCS = 600,
24 AMSPORT_R0_PLC = 801,
25 AMSPORT_R0_PLC_RTS1 = 801,
26 AMSPORT_R0_PLC_RTS2 = 811,
27 AMSPORT_R0_PLC_RTS3 = 821,
28 AMSPORT_R0_PLC_RTS4 = 831,
29 AMSPORT_R0_PLC_TC3 = 851
30};
31
33// ADS Cmd Ids
34#define ADSSRVID_INVALID 0x00
35#define ADSSRVID_READDEVICEINFO 0x01
36#define ADSSRVID_READ 0x02
37#define ADSSRVID_WRITE 0x03
38#define ADSSRVID_READSTATE 0x04
39#define ADSSRVID_WRITECTRL 0x05
40#define ADSSRVID_ADDDEVICENOTE 0x06
41#define ADSSRVID_DELDEVICENOTE 0x07
42#define ADSSRVID_DEVICENOTE 0x08
43#define ADSSRVID_READWRITE 0x09
44
46// ADS reserved index groups
47#define ADSIGRP_SYMTAB 0xF000
48#define ADSIGRP_SYMNAME 0xF001
49#define ADSIGRP_SYMVAL 0xF002
50
51#define ADSIGRP_SYM_HNDBYNAME 0xF003
52#define ADSIGRP_SYM_VALBYNAME 0xF004
53#define ADSIGRP_SYM_VALBYHND 0xF005
54#define ADSIGRP_SYM_RELEASEHND 0xF006
55#define ADSIGRP_SYM_INFOBYNAME 0xF007
56#define ADSIGRP_SYM_VERSION 0xF008
57#define ADSIGRP_SYM_INFOBYNAMEEX 0xF009
58
59#define ADSIGRP_SYM_DOWNLOAD 0xF00A
60#define ADSIGRP_SYM_UPLOAD 0xF00B
61#define ADSIGRP_SYM_UPLOADINFO 0xF00C
62#define ADSIGRP_SYM_DOWNLOAD2 0xF00D
63#define ADSIGRP_SYM_DT_UPLOAD 0xF00E
64#define ADSIGRP_SYM_UPLOADINFO2 0xF00F
65
66#define ADSIGRP_SYMNOTE 0xF010
74#define ADSIGRP_SUMUP_READ 0xF080
75
81#define ADSIGRP_SUMUP_WRITE 0xF081
82
88#define ADSIGRP_SUMUP_READWRITE 0xF082
89
94#define ADSIGRP_SUMUP_READEX 0xF083
95
101#define ADSIGRP_SUMUP_READEX2 0xF084
102
108#define ADSIGRP_SUMUP_ADDDEVNOTE 0xF085
109
115#define ADSIGRP_SUMUP_DELDEVNOTE 0xF086
116
117#define ADSIGRP_IOIMAGE_RWIB 0xF020
118#define ADSIGRP_IOIMAGE_RWIX 0xF021
119#define ADSIGRP_IOIMAGE_RISIZE 0xF025
120#define ADSIGRP_IOIMAGE_RWOB 0xF030
121#define ADSIGRP_IOIMAGE_RWOX 0xF031
122#define ADSIGRP_IOIMAGE_ROSIZE 0xF035
123#define ADSIGRP_IOIMAGE_CLEARI 0xF040
124#define ADSIGRP_IOIMAGE_CLEARO 0xF050
125#define ADSIGRP_IOIMAGE_RWIOB 0xF060
127#define ADSIGRP_DEVICE_DATA 0xF100
128#define ADSIOFFS_DEVDATA_ADSSTATE 0x0000
129#define ADSIOFFS_DEVDATA_DEVSTATE 0x0002
132// Global Return codes
133#define ERR_GLOBAL 0x0000
134
135#define GLOBALERR_TARGET_PORT (0x06 + ERR_GLOBAL)
136#define GLOBALERR_MISSING_ROUTE (0x07 + ERR_GLOBAL)
137#define GLOBALERR_NO_MEMORY (0x19 + ERR_GLOBAL)
138#define GLOBALERR_TCP_SEND (0x1A + ERR_GLOBAL)
141// Router Return codes
142#define ERR_ROUTER 0x0500
143
144#define ROUTERERR_PORTALREADYINUSE (0x06 + ERR_ROUTER)
145#define ROUTERERR_NOTREGISTERED (0x07 + ERR_ROUTER)
146#define ROUTERERR_NOMOREQUEUES (0x08 + ERR_ROUTER)
149// ADS Return codes
150#define ADSERR_NOERR 0x00
151#define ERR_ADSERRS 0x0700
152
153#define ADSERR_DEVICE_ERROR (0x00 + ERR_ADSERRS)
154#define ADSERR_DEVICE_SRVNOTSUPP (0x01 + ERR_ADSERRS)
155#define ADSERR_DEVICE_INVALIDGRP (0x02 + ERR_ADSERRS)
156#define ADSERR_DEVICE_INVALIDOFFSET (0x03 + ERR_ADSERRS)
157#define ADSERR_DEVICE_INVALIDACCESS (0x04 + ERR_ADSERRS)
158#define ADSERR_DEVICE_INVALIDSIZE (0x05 + ERR_ADSERRS)
159#define ADSERR_DEVICE_INVALIDDATA (0x06 + ERR_ADSERRS)
160#define ADSERR_DEVICE_NOTREADY (0x07 + ERR_ADSERRS)
161#define ADSERR_DEVICE_BUSY (0x08 + ERR_ADSERRS)
162#define ADSERR_DEVICE_INVALIDCONTEXT (0x09 + ERR_ADSERRS)
163#define ADSERR_DEVICE_NOMEMORY (0x0A + ERR_ADSERRS)
164#define ADSERR_DEVICE_INVALIDPARM (0x0B + ERR_ADSERRS)
165#define ADSERR_DEVICE_NOTFOUND (0x0C + ERR_ADSERRS)
166#define ADSERR_DEVICE_SYNTAX (0x0D + ERR_ADSERRS)
167#define ADSERR_DEVICE_INCOMPATIBLE (0x0E + ERR_ADSERRS)
168#define ADSERR_DEVICE_EXISTS (0x0F + ERR_ADSERRS)
169#define ADSERR_DEVICE_SYMBOLNOTFOUND (0x10 + ERR_ADSERRS)
170#define ADSERR_DEVICE_SYMBOLVERSIONINVALID (0x11 + ERR_ADSERRS)
171#define ADSERR_DEVICE_INVALIDSTATE (0x12 + ERR_ADSERRS)
172#define ADSERR_DEVICE_TRANSMODENOTSUPP (0x13 + ERR_ADSERRS)
173#define ADSERR_DEVICE_NOTIFYHNDINVALID (0x14 + ERR_ADSERRS)
174#define ADSERR_DEVICE_CLIENTUNKNOWN (0x15 + ERR_ADSERRS)
175#define ADSERR_DEVICE_NOMOREHDLS (0x16 + ERR_ADSERRS)
176#define ADSERR_DEVICE_INVALIDWATCHSIZE (0x17 + ERR_ADSERRS)
177#define ADSERR_DEVICE_NOTINIT (0x18 + ERR_ADSERRS)
178#define ADSERR_DEVICE_TIMEOUT (0x19 + ERR_ADSERRS)
179#define ADSERR_DEVICE_NOINTERFACE (0x1A + ERR_ADSERRS)
180#define ADSERR_DEVICE_INVALIDINTERFACE (0x1B + ERR_ADSERRS)
181#define ADSERR_DEVICE_INVALIDCLSID (0x1C + ERR_ADSERRS)
182#define ADSERR_DEVICE_INVALIDOBJID (0x1D + ERR_ADSERRS)
183#define ADSERR_DEVICE_PENDING (0x1E + ERR_ADSERRS)
184#define ADSERR_DEVICE_ABORTED (0x1F + ERR_ADSERRS)
185#define ADSERR_DEVICE_WARNING (0x20 + ERR_ADSERRS)
186#define ADSERR_DEVICE_INVALIDARRAYIDX (0x21 + ERR_ADSERRS)
187#define ADSERR_DEVICE_SYMBOLNOTACTIVE (0x22 + ERR_ADSERRS)
188#define ADSERR_DEVICE_ACCESSDENIED (0x23 + ERR_ADSERRS)
189#define ADSERR_DEVICE_LICENSENOTFOUND (0x24 + ERR_ADSERRS)
190#define ADSERR_DEVICE_LICENSEEXPIRED (0x25 + ERR_ADSERRS)
191#define ADSERR_DEVICE_LICENSEEXCEEDED (0x26 + ERR_ADSERRS)
192#define ADSERR_DEVICE_LICENSEINVALID (0x27 + ERR_ADSERRS)
193#define ADSERR_DEVICE_LICENSESYSTEMID (0x28 + ERR_ADSERRS)
194#define ADSERR_DEVICE_LICENSENOTIMELIMIT (0x29 + ERR_ADSERRS)
195#define ADSERR_DEVICE_LICENSEFUTUREISSUE (0x2A + ERR_ADSERRS)
196#define ADSERR_DEVICE_LICENSETIMETOLONG (0x2B + ERR_ADSERRS)
197#define ADSERR_DEVICE_EXCEPTION (0x2C + ERR_ADSERRS)
198#define ADSERR_DEVICE_LICENSEDUPLICATED (0x2D + ERR_ADSERRS)
199#define ADSERR_DEVICE_SIGNATUREINVALID (0x2E + ERR_ADSERRS)
200#define ADSERR_DEVICE_CERTIFICATEINVALID (0x2F + ERR_ADSERRS)
202#define ADSERR_CLIENT_ERROR (0x40 + ERR_ADSERRS)
203#define ADSERR_CLIENT_INVALIDPARM (0x41 + ERR_ADSERRS)
204#define ADSERR_CLIENT_LISTEMPTY (0x42 + ERR_ADSERRS)
205#define ADSERR_CLIENT_VARUSED (0x43 + ERR_ADSERRS)
206#define ADSERR_CLIENT_DUPLINVOKEID (0x44 + ERR_ADSERRS)
207#define ADSERR_CLIENT_SYNCTIMEOUT (0x45 + ERR_ADSERRS)
208#define ADSERR_CLIENT_W32ERROR (0x46 + ERR_ADSERRS)
209#define ADSERR_CLIENT_TIMEOUTINVALID (0x47 + ERR_ADSERRS)
210#define ADSERR_CLIENT_PORTNOTOPEN (0x48 + ERR_ADSERRS)
211#define ADSERR_CLIENT_NOAMSADDR (0x49 + ERR_ADSERRS)
212#define ADSERR_CLIENT_SYNCINTERNAL (0x50 + ERR_ADSERRS)
213#define ADSERR_CLIENT_ADDHASH (0x51 + ERR_ADSERRS)
214#define ADSERR_CLIENT_REMOVEHASH (0x52 + ERR_ADSERRS)
215#define ADSERR_CLIENT_NOMORESYM (0x53 + ERR_ADSERRS)
216#define ADSERR_CLIENT_SYNCRESINVALID (0x54 + ERR_ADSERRS)
217#define ADSERR_CLIENT_SYNCPORTLOCKED (0x55 + ERR_ADSERRS)
219#pragma pack( push, 1)
220
224struct AmsNetId {
226 uint8_t b[6];
227
228 AmsNetId(uint32_t ipv4Addr = 0);
229 AmsNetId(const std::string& addr);
230 AmsNetId(uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t);
231 operator bool() const;
232};
233
237struct AmsAddr {
240
242 uint16_t port;
243};
244
250 uint8_t version;
251
253 uint8_t revision;
254
256 uint16_t build;
257};
258
259enum ADSTRANSMODE {
260 ADSTRANS_NOTRANS = 0,
261 ADSTRANS_CLIENTCYCLE = 1,
262 ADSTRANS_CLIENTONCHA = 2,
263 ADSTRANS_SERVERCYCLE = 3,
264 ADSTRANS_SERVERONCHA = 4,
265 ADSTRANS_SERVERCYCLE2 = 5,
266 ADSTRANS_SERVERONCHA2 = 6,
267 ADSTRANS_CLIENT1REQ = 10,
268 ADSTRANS_MAXMODES
269};
270
271enum ADSSTATE : uint16_t {
272 ADSSTATE_INVALID = 0,
273 ADSSTATE_IDLE = 1,
274 ADSSTATE_RESET = 2,
275 ADSSTATE_INIT = 3,
276 ADSSTATE_START = 4,
277 ADSSTATE_RUN = 5,
278 ADSSTATE_STOP = 6,
279 ADSSTATE_SAVECFG = 7,
280 ADSSTATE_LOADCFG = 8,
281 ADSSTATE_POWERFAILURE = 9,
282 ADSSTATE_POWERGOOD = 10,
283 ADSSTATE_ERROR = 11,
284 ADSSTATE_SHUTDOWN = 12,
285 ADSSTATE_SUSPEND = 13,
286 ADSSTATE_RESUME = 14,
287 ADSSTATE_CONFIG = 15,
288 ADSSTATE_RECONFIG = 16,
289 ADSSTATE_STOPPING = 17,
290 ADSSTATE_INCOMPATIBLE = 18,
291 ADSSTATE_EXCEPTION = 19,
292 ADSSTATE_MAXSTATES
293};
294
325 uint32_t cbLength;
326
331 uint32_t nTransMode;
332
334 uint32_t nMaxDelay;
335
336 union {
338 uint32_t nCycleTime;
339 uint32_t dwChangeFilter;
340 };
341};
342
348 uint64_t nTimeStamp;
349
352
354 uint32_t cbSampleSize;
355};
356
363typedef void (* PAdsNotificationFuncEx)(const AmsAddr* pAddr, const AdsNotificationHeader* pNotification,
364 uint32_t hUser);
365
366#define ADSSYMBOLFLAG_PERSISTENT ((uint32_t)(1 << 0))
367#define ADSSYMBOLFLAG_BITVALUE ((uint32_t)(1 << 1))
368#define ADSSYMBOLFLAG_REFERENCETO ((uint32_t)(1 << 2))
369#define ADSSYMBOLFLAG_TYPEGUID ((uint32_t)(1 << 3))
370#define ADSSYMBOLFLAG_TCCOMIFACEPTR ((uint32_t)(1 << 4))
371#define ADSSYMBOLFLAG_READONLY ((uint32_t)(1 << 5))
372#define ADSSYMBOLFLAG_CONTEXTMASK ((uint32_t)0xF00)
373
384 uint32_t entryLength; // length of complete symbol entry
385 uint32_t iGroup; // indexGroup of symbol: input, output etc.
386 uint32_t iOffs; // indexOffset of symbol
387 uint32_t size; // size of symbol ( in bytes, 0 = bit )
388 uint32_t dataType; // adsDataType of symbol
389 uint32_t flags; // see ADSSYMBOLFLAG_*
390 uint16_t nameLength; // length of symbol name (null terminating character not counted)
391 uint16_t typeLength; // length of type name (null terminating character not counted)
392 uint16_t commentLength; // length of comment (null terminating character not counted)
393};
394
399 uint32_t indexGroup;
400 uint32_t indexOffset;
401 uint32_t cbLength;
402};
403#pragma pack( pop )
404
405enum nSystemServiceIndexGroups : uint32_t {
406 SYSTEMSERVICE_FOPEN = 120,
407 SYSTEMSERVICE_FCLOSE = 121,
408 SYSTEMSERVICE_FREAD = 122,
409 SYSTEMSERVICE_FWRITE = 123,
410 SYSTEMSERVICE_FDELETE = 131,
411};
void(* PAdsNotificationFuncEx)(const AmsAddr *pAddr, const AdsNotificationHeader *pNotification, uint32_t hUser)
Type definition of the callback function required by the AdsSyncAddDeviceNotificationReqEx() function...
Definition: AdsDef.h:363
This structure contains all the attributes for the definition of a notification.
Definition: AdsDef.h:323
uint32_t nTransMode
Definition: AdsDef.h:331
uint32_t nCycleTime
Definition: AdsDef.h:338
uint32_t cbLength
Definition: AdsDef.h:325
uint32_t nMaxDelay
Definition: AdsDef.h:334
This structure is also passed to the callback function.
Definition: AdsDef.h:346
uint64_t nTimeStamp
Definition: AdsDef.h:348
uint32_t hNotification
Definition: AdsDef.h:351
uint32_t cbSampleSize
Definition: AdsDef.h:354
This structure describes the header of ADS symbol information.
Definition: AdsDef.h:383
This structure is used to provide ADS symbol information for ADS SUM commands.
Definition: AdsDef.h:398
The structure contains the version number, revision number and build number.
Definition: AdsDef.h:248
uint8_t version
Definition: AdsDef.h:250
uint16_t build
Definition: AdsDef.h:256
uint8_t revision
Definition: AdsDef.h:253
The complete address of an ADS device can be stored in this structure.
Definition: AdsDef.h:237
uint16_t port
Definition: AdsDef.h:242
AmsNetId netId
Definition: AdsDef.h:239
The NetId of and ADS device can be represented in this structure.
Definition: AdsDef.h:224
uint8_t b[6]
Definition: AdsDef.h:226