1
2 '''
3 Created on 25.06.2013
4 @author: lehmann
5 '''
6
7 from ctypes import *
8
9
10 PLCTYPE_BOOL = c_bool
11 PLCTYPE_BYTE = c_byte
12 PLCTYPE_DATE = c_int32
13 PLCTYPE_DINT = c_int32
14 PLCTYPE_DT = c_int32
15 PLCTYPE_DWORD = c_int32
16 PLCTYPE_INT = c_int16
17 PLCTYPE_LREAL = c_double
18 PLCTYPE_REAL = c_float
19 PLCTYPE_SINT = c_int8
20 PLCTYPE_STRING = c_char
21 PLCTYPE_TIME = c_int32
22 PLCTYPE_TOD = c_int32
23 PLCTYPE_UDINT = c_uint32
24 PLCTYPE_UINT = c_uint16
25 PLCTYPE_USINT = c_uint8
26 PLCTYPE_WORD = c_int16
27
28
29
30 INDEXGROUP_MEMORYBYTE = 0x4020
31
32 INDEXGROUP_MEMORYBIT = 0x4021
33
34 INDEXGROUP_MEMORYSIZE = 0x4025
35
36 INDEXGROUP_RETAIN = 0x4030
37
38 INDEXGROUP_RETAINSIZE = 0x4035
39
40 INDEXGROUP_DATA = 0x4040
41
42 INDEXGROUP_DATASIZE = 0x4045
43
44
45 PORT_LOGGER = 100
46 PORT_EVENTLOGGER = 110
47 PORT_IO = 300
48 PORT_SPECIALTASK1 = 301
49 PORT_SPECIALTASK2 = 302
50 PORT_NC = 500
51 PORT_SPS1 = 801
52 PORT_SPS2 = 811
53 PORT_SPS3 = 821
54 PORT_SPS4 = 831
55 PORT_NOCKE = 900
56 PORT_SYSTEMSERVICE = 10000
57 PORT_SCOPE = 14000
58
59
60 ADSSTATE_INVALID = 0
61 ADSSTATE_IDLE = 1
62 ADSSTATE_RESET = 2
63 ADSSTATE_INIT = 3
64 ADSSTATE_START = 4
65 ADSSTATE_RUN = 5
66 ADSSTATE_STOP = 6
67 ADSSTATE_SAVECFG = 7
68 ADSSTATE_LOADCFG = 8
69 ADSSTATE_POWERFAILURE = 9
70 ADSSTATE_POWERGOOD = 10
71 ADSSTATE_ERROR = 11
72 ADSSTATE_SHUTDOWN = 12
73 ADSSTATE_SUSPEND = 13
74 ADSSTATE_RESUME = 14
75 ADSSTATE_CONFIG = 15
76 ADSSTATE_RECONFIG = 16
77
78
79 ADSTRANS_NOTRANS = 0
80 ADSTRANS_CLIENTCYCLE = 1
81 ADSTRANS_CLIENT1REQ = 2
82 ADSTRANS_SERVERCYCLE = 3
83 ADSTRANS_SERVERONCHA = 4
84
86 _fields_=[("version", c_byte),
87 ("revision", c_byte),
88 ("build", c_short)]
90 '''
91 @summary: contains version number, revision number, build number of the ADS-DLL
92
93 @ivar version: version number
94 @type version: int
95
96 @ivar revision: revision number
97 @type revision: int
98
99 @ivar build: build number
100 @type build: int
101 '''
103 '''
104 @param stAdsVersion: ctypes structure with the version info
105 @type stAdsVersion: adsPy.SAdsVersion
106 '''
107 self.version = stAdsVersion.version
108 self.revision = stAdsVersion.revision
109 self.build = stAdsVersion.build
110
112 '''
113 @summary: structure containing the netId and port of an ADS device
114 '''
115 _fields_ = [("netId", c_ubyte * 6),
116 ("port", c_ushort)]
118 '''
119 @summary: wrapper for SAmsAddr-structure, needed to adress an ADS device
120
121 @type stAmsAddr: SAmsAddr
122 @ivar stAmsAddr: ctypes-structure SAmsAddr
123
124 @type errCode: int
125 @ivar errCode: error code
126 '''
127 - def __init__(self, errCode, stAmsAddr):
128 self.stAmsAddr = stAmsAddr
129 self.errCode = errCode
130
132 '''
133 @summary: textual representation of the AMS adress
134 @rtype: string
135 @return: textual representation of the AMS adress
136 '''
137 tmpList = [str(self.stAmsAddr.netId[i]) for i in range(sizeof(self.stAmsAddr.netId))]
138 netId = ".".join(tmpList) + ": "+ str(self.stAmsAddr.port)
139 return netId
140
142 '''
143 @summary: returns port number
144 '''
145 return int(self.stAmsAddr.port)
146
148 '''
149 @summary: sets port number
150 '''
151 self.stAmsAddr.port = c_ushort(value)
152
154 '''
155 @summary: access to the c-types structure SAmsAddr
156 '''
157 return self.stAmsAddr
158
160 '''
161 @summary: Sets the AMS-adress according to the given string containing the IP-adress
162
163 @type adrString: string
164 @param adrString: ip-adress of an ADS device
165 '''
166 a = adrString.split(".")
167
168 if not len(a)==6:
169 return
170
171 for i in range(len(a)):
172 self.stAmsAddr.netId[i] = c_ubyte(int(a[i]))
173
175 _fields_ = [("cbLength", c_ulong),
176 ("nTransMode", c_ulong),
177 ("nMaxDelay", c_ulong),
178 ("nCycleTime", c_ulong)]
179