1
+ <?xml version =" 1.0" encoding =" utf-8" ?>
2
+ <TcPlcObject Version =" 1.1.0.1" ProductVersion =" 3.1.4024.12" >
3
+ <POU Name =" MAIN" Id =" {af726fc5-8ad0-4774-86c1-258758d62ada}" SpecialFunc =" None" >
4
+ <Declaration ><![CDATA[ // Copyright (c) 2024 Loupe (https://loupe.team), provided under the MIT License.
5
+ PROGRAM MAIN
6
+ VAR
7
+ myRobotLink : TcAbbLinkin;
8
+ userSetConfigurationNow : BOOL := TRUE;
9
+ userConnectStartNow : BOOL := TRUE;
10
+ userConnectStopNow : BOOL;
11
+
12
+ userGetCtrlStateNow : BOOL;
13
+ userGetCtrlStateStatus : AbbLinkinRequestStatus_Typ;
14
+ userGetCtrlStateResult : STRING;
15
+
16
+ userGetOpModeNow : BOOL;
17
+ userGetOpModeStatus : AbbLinkinRequestStatus_Typ;
18
+ userGetOpModeResult : STRING;
19
+
20
+ userGetRapidStateNow : BOOL;
21
+ userGetRapidStateStatus : AbbLinkinRequestStatus_Typ;
22
+ userGetRapidStateResult : STRING;
23
+
24
+ userGetIoBoolNow : BOOL;
25
+ userGetIoBoolStatus : AbbLinkinRequestStatus_Typ;
26
+ userGetIoBoolResult : BOOL;
27
+
28
+ userGetIoLrealNow : BOOL;
29
+ userGetIoLrealStatus : AbbLinkinRequestStatus_Typ;
30
+ userGetIoLrealResult : LREAL;
31
+
32
+ userGetIoDintNow : BOOL;
33
+ userGetIoDintStatus : AbbLinkinRequestStatus_Typ;
34
+ userGetIoDintResult : DINT;
35
+
36
+
37
+ userSetIoBoolNow : BOOL;
38
+ userSetIoBoolValue : BOOL := 1;
39
+ userSetIoBoolStatus : AbbLinkinRequestStatus_Typ;
40
+ userSetIoDintNow : BOOL;
41
+ userSetIoDintValue : DINT := 57;
42
+ userSetIoDintStatus : AbbLinkinRequestStatus_Typ;
43
+ userSetIoLrealNow : BOOL;
44
+ userSetIoLrealValue : LREAL := 41.123456;
45
+ userSetIoLrealStatus : AbbLinkinRequestStatus_Typ;
46
+
47
+
48
+ userGetSymbolBoolNow : BOOL;
49
+ userGetSymbolBoolResult : BOOL;
50
+ userGetSymbolBoolStatus : AbbLinkinRequestStatus_Typ;
51
+ userGetSymbolNumNow : BOOL;
52
+ userGetSymbolNumResult : LREAL;
53
+ userGetSymbolNumStatus : AbbLinkinRequestStatus_Typ;
54
+ userGetSymbolStringNow : BOOL;
55
+ userGetSymbolStringResult : STRING;
56
+ userGetSymbolStringStatus : AbbLinkinRequestStatus_Typ;
57
+
58
+ userSetSymbolBoolNow : BOOL;
59
+ userSetSymbolBoolValue : BOOL := 1;
60
+ userSetSymbolBoolStatus : AbbLinkinRequestStatus_Typ;
61
+ userSetSymbolDintNow : BOOL;
62
+ userSetSymbolDintValue : DINT := -57;
63
+ userSetSymbolDintStatus : AbbLinkinRequestStatus_Typ;
64
+ userSetSymbolLrealNow : BOOL;
65
+ userSetSymbolLrealValue : LREAL := -41.123456;
66
+ userSetSymbolLrealStatus : AbbLinkinRequestStatus_Typ;
67
+ userSetSymbolStringNow : BOOL;
68
+ userSetSymbolStringValue : STRING := 'test String';
69
+ userSetSymbolStringStatus : AbbLinkinRequestStatus_Typ;
70
+ userSetSymbolWStringNow : BOOL;
71
+ userSetSymbolWStringValue : WSTRING := "test WString";
72
+ userSetSymbolWStringStatus : AbbLinkinRequestStatus_Typ;
73
+
74
+
75
+ userPowerOffNow : BOOL;
76
+ userPowerOffStatus : AbbLinkinRequestStatus_Typ;
77
+ userPowerOnNow : BOOL;
78
+ userPowerOnStatus : AbbLinkinRequestStatus_Typ;
79
+ userRapidResetNow : BOOL;
80
+ userRapidResetStatus : AbbLinkinRequestStatus_Typ;
81
+ userRapidStopNow : BOOL;
82
+ userRapidStopStatus : AbbLinkinRequestStatus_Typ;
83
+ userRapidStartNow : BOOL;
84
+ userRapidStartStatus : AbbLinkinRequestStatus_Typ;
85
+
86
+
87
+ userAckErrorNow : BOOL;
88
+ END_VAR
89
+ ]]> </Declaration >
90
+ <Implementation >
91
+ <ST ><![CDATA[ // Set configuration
92
+ if userSetConfigurationNow then
93
+ myRobotLink.configuration.rwsIpAddress := '127.0.0.1';
94
+ myRobotLink.configuration.rwsTcpPort := 80;
95
+ myRobotLink.configuration.rwsVersion := ABBLINKIN_RWS_API_VERSION.V2;
96
+ myRobotLink.configuration.rwsUsername := 'Default User';
97
+ myRobotLink.configuration.rwsPassword := 'robotics';
98
+ //myRobotLink.configuration.tlsAllowRwsCertSelfSigned := TRUE;
99
+ myRobotLink.configuration.tlsAllowRwsCertSelfSigned := FALSE;
100
+ myRobotLink.configuration.tlsCAFile := 'C:\TwinCAT\3.1\Config\Certificates\TcAbbLinkinCA.pem';
101
+
102
+ userSetConfigurationNow := FALSE;
103
+ END_IF
104
+
105
+
106
+ // Cyclic
107
+ myRobotLink.Cyclic();
108
+
109
+
110
+ IF userConnectStartNow THEN
111
+ myRobotLink.Connect();
112
+ userConnectStartNow := FALSE;
113
+ END_IF
114
+
115
+ IF userConnectStopNow THEN
116
+ myRobotLink.Disconnect();
117
+ userConnectStopNow := FALSE;
118
+ END_IF
119
+
120
+
121
+ IF userGetCtrlStateNow THEN
122
+ myRobotLink.GetCtrlState(ADR(userGetCtrlStateStatus), ADR(userGetCtrlStateResult));
123
+ userGetCtrlStateNow := FALSE;
124
+ END_IF
125
+
126
+
127
+ IF userGetOpModeNow THEN
128
+ myRobotLink.GetOpMode(ADR(userGetOpModeStatus), ADR(userGetOpModeResult));
129
+ userGetOpModeNow := FALSE;
130
+ END_IF
131
+
132
+
133
+ IF userGetRapidStateNow THEN
134
+ myRobotLink.GetRapidState(ADR(userGetRapidStateStatus), ADR(userGetRapidStateResult));
135
+ userGetRapidStateNow := FALSE;
136
+ END_IF
137
+
138
+
139
+ IF userGetIoBoolNow THEN
140
+ myRobotLink.GetIODigital(signal := 'myInputDIG', pStatus := ADR(userGetIoBoolStatus), pResult := ADR(userGetIoBoolResult));
141
+ userGetIoBoolNow := FALSE;
142
+ END_IF
143
+
144
+ IF userGetIoLrealNow THEN
145
+ myRobotLink.GetIOAnalog(signal := 'myInputANA', pStatus := ADR(userGetIoLrealStatus), pResult := ADR(userGetIoLrealResult));
146
+ userGetIoLrealNow := FALSE;
147
+ END_IF
148
+
149
+ IF userGetIoDintNow THEN
150
+ myRobotLink.GetIOGroup(signal := 'myInputGRP', pStatus := ADR(userGetIoDintStatus), pResult := ADR(userGetIoDintResult));
151
+ userGetIoDintNow := FALSE;
152
+ END_IF
153
+
154
+
155
+ IF userSetIoBoolNow THEN
156
+ myRobotLink.SetIO('myInputDIG', userSetIoBoolValue, ADR(userSetIoBoolStatus));
157
+ userSetIoBoolNow := FALSE;
158
+ END_IF
159
+ IF userSetIoDintNow THEN
160
+ myRobotLink.SetIO('myInputGRP', userSetIoDintValue, ADR(userSetIoDintStatus));
161
+ userSetIoDintNow := FALSE;
162
+ END_IF
163
+ IF userSetIoLrealNow THEN
164
+ myRobotLink.SetIO('myInputANA', userSetIoLrealValue, ADR(userSetIoLrealStatus));
165
+ userSetIoLrealNow := FALSE;
166
+ END_IF
167
+
168
+
169
+ IF userGetSymbolBoolNow THEN
170
+ myRobotLink.GetSymbolBool(symbolUrl := 'RAPID/T_ROB1/Module1/myRapidBool', pStatus := ADR(userGetSymbolBoolStatus), pResult := ADR(userGetSymbolBoolResult));
171
+ userGetSymbolBoolNow := FALSE;
172
+ END_IF
173
+ IF userGetSymbolNumNow THEN
174
+ myRobotLink.GetSymbolNum(symbolUrl := 'RAPID/T_ROB1/Module1/myRapidNum', pStatus := ADR(userGetSymbolNumStatus), pResult := ADR(userGetSymbolNumResult));
175
+ userGetSymbolNumNow := FALSE;
176
+ END_IF
177
+ IF userGetSymbolStringNow THEN
178
+ myRobotLink.GetSymbolString(symbolUrl := 'RAPID/T_ROB1/Module1/myRapidString', pStatus := ADR(userGetSymbolStringStatus), pResult := ADR(userGetSymbolStringResult));
179
+ userGetSymbolStringNow := FALSE;
180
+ END_IF
181
+
182
+
183
+ IF userSetSymbolBoolNow THEN
184
+ myRobotLink.SetSymbol('RAPID/T_ROB1/Module1/myRapidBool', userSetSymbolBoolValue, ADR(userSetSymbolBoolStatus));
185
+ userSetSymbolBoolNow := FALSE;
186
+ END_IF
187
+ IF userSetSymbolDintNow THEN
188
+ myRobotLink.SetSymbol('RAPID/T_ROB1/Module1/myRapidNum', userSetSymbolDintValue, ADR(userSetSymbolDintStatus));
189
+ userSetSymbolDintNow := FALSE;
190
+ END_IF
191
+ IF userSetSymbolLrealNow THEN
192
+ myRobotLink.SetSymbol('RAPID/T_ROB1/Module1/myRapidNum', userSetSymbolLrealValue, ADR(userSetSymbolLrealStatus));
193
+ userSetSymbolLrealNow := FALSE;
194
+ END_IF
195
+ IF userSetSymbolStringNow THEN
196
+ myRobotLink.SetSymbol('RAPID/T_ROB1/Module1/myRapidString', userSetSymbolStringValue, ADR(userSetSymbolStringStatus));
197
+ userSetSymbolStringNow := FALSE;
198
+ END_IF
199
+ IF userSetSymbolWStringNow THEN
200
+ myRobotLink.SetSymbol('RAPID/T_ROB1/Module1/myRapidString', userSetSymbolWStringValue, ADR(userSetSymbolWStringStatus));
201
+ userSetSymbolWStringNow := FALSE;
202
+ END_IF
203
+
204
+
205
+ IF userPowerOffNow THEN
206
+ myRobotLink.PowerOff(ADR(userPowerOffStatus));
207
+ userPowerOffNow := FALSE;
208
+ END_IF
209
+ IF userPowerOnNow THEN
210
+ myRobotLink.PowerOn(ADR(userPowerOnStatus));
211
+ userPowerOnNow := FALSE;
212
+ END_IF
213
+ IF userRapidResetNow THEN
214
+ myRobotLink.RapidReset(ADR(userRapidResetStatus));
215
+ userRapidResetNow := FALSE;
216
+ END_IF
217
+ IF userRapidStopNow THEN
218
+ myRobotLink.RapidStop(ADR(userRapidStopStatus));
219
+ userRapidStopNow := FALSE;
220
+ END_IF
221
+ IF userRapidStartNow THEN
222
+ myRobotLink.RapidStart(ADR(userRapidStartStatus));
223
+ userRapidStartNow := FALSE;
224
+ END_IF
225
+
226
+
227
+ IF userAckErrorNow THEN
228
+ myRobotLink.AckError();
229
+ userAckErrorNow := FALSE;
230
+ END_IF
231
+
232
+ ]]> </ST >
233
+ </Implementation >
234
+ <LineIds Name =" MAIN" >
235
+ <LineId Id =" 1207" Count =" 140" />
236
+ <LineId Id =" 2" Count =" 0" />
237
+ </LineIds >
238
+ </POU >
239
+ </TcPlcObject >
0 commit comments