equal
deleted
inserted
replaced
16 * Counter function blocks |
16 * Counter function blocks |
17 * ----------------------- |
17 * ----------------------- |
18 *) |
18 *) |
19 |
19 |
20 |
20 |
|
21 |
|
22 (******************) |
|
23 (* *) |
|
24 (* C T U *) |
|
25 (* *) |
|
26 (******************) |
|
27 |
21 FUNCTION_BLOCK CTU |
28 FUNCTION_BLOCK CTU |
22 VAR_INPUT |
29 VAR_INPUT |
23 CU : BOOL; |
30 CU : BOOL; |
24 R : BOOL; |
31 R : BOOL; |
25 PV : INT; |
32 PV : INT; |
26 END_VAR |
33 END_VAR |
27 VAR_OUTPUT |
34 VAR_OUTPUT |
28 Q : BOOL; |
35 Q : BOOL; |
29 CV : INT; |
36 CV : INT; |
30 END_VAR |
37 END_VAR |
31 |
38 IF R THEN CV := 0 ; |
32 VAR RRR : REAL; END_VAR |
39 ELSIF CU AND (CV < PV) |
33 RRR := 9.9; |
40 THEN CV := CV+1; |
34 |
41 END_IF ; |
35 IF R THEN CV := 0 ; |
42 Q := (CV >= PV) ; |
36 ELSIF CU AND (CV < PV) |
43 END_FUNCTION_BLOCK |
37 THEN CV := CV+1; |
44 |
38 END_IF ; |
45 |
39 Q := (CV >= PV) ; |
46 FUNCTION_BLOCK CTU_DINT |
40 END_FUNCTION_BLOCK |
47 VAR_INPUT |
|
48 CU : BOOL; |
|
49 R : BOOL; |
|
50 PV : DINT; |
|
51 END_VAR |
|
52 VAR_OUTPUT |
|
53 Q : BOOL; |
|
54 CV : DINT; |
|
55 END_VAR |
|
56 IF R THEN CV := 0 ; |
|
57 ELSIF CU AND (CV < PV) |
|
58 THEN CV := CV+1; |
|
59 END_IF ; |
|
60 Q := (CV >= PV) ; |
|
61 END_FUNCTION_BLOCK |
|
62 |
|
63 |
|
64 FUNCTION_BLOCK CTU_LINT |
|
65 VAR_INPUT |
|
66 CU : BOOL; |
|
67 R : BOOL; |
|
68 PV : LINT; |
|
69 END_VAR |
|
70 VAR_OUTPUT |
|
71 Q : BOOL; |
|
72 CV : LINT; |
|
73 END_VAR |
|
74 IF R THEN CV := 0 ; |
|
75 ELSIF CU AND (CV < PV) |
|
76 THEN CV := CV+1; |
|
77 END_IF ; |
|
78 Q := (CV >= PV) ; |
|
79 END_FUNCTION_BLOCK |
|
80 |
|
81 |
|
82 FUNCTION_BLOCK CTU_UDINT |
|
83 VAR_INPUT |
|
84 CU : BOOL; |
|
85 R : BOOL; |
|
86 PV : UDINT; |
|
87 END_VAR |
|
88 VAR_OUTPUT |
|
89 Q : BOOL; |
|
90 CV : UDINT; |
|
91 END_VAR |
|
92 IF R THEN CV := 0 ; |
|
93 ELSIF CU AND (CV < PV) |
|
94 THEN CV := CV+1; |
|
95 END_IF ; |
|
96 Q := (CV >= PV) ; |
|
97 END_FUNCTION_BLOCK |
|
98 |
|
99 |
|
100 FUNCTION_BLOCK CTU_ULINT |
|
101 VAR_INPUT |
|
102 CU : BOOL; |
|
103 R : BOOL; |
|
104 PV : ULINT; |
|
105 END_VAR |
|
106 VAR_OUTPUT |
|
107 Q : BOOL; |
|
108 CV : ULINT; |
|
109 END_VAR |
|
110 IF R THEN CV := 0 ; |
|
111 ELSIF CU AND (CV < PV) |
|
112 THEN CV := CV+1; |
|
113 END_IF ; |
|
114 Q := (CV >= PV) ; |
|
115 END_FUNCTION_BLOCK |
|
116 |
|
117 |
|
118 |
|
119 |
|
120 |
|
121 |
|
122 |
|
123 (******************) |
|
124 (* *) |
|
125 (* C T D *) |
|
126 (* *) |
|
127 (******************) |
41 |
128 |
42 |
129 |
43 FUNCTION_BLOCK CTD |
130 FUNCTION_BLOCK CTD |
44 VAR_INPUT |
131 VAR_INPUT |
45 CD : BOOL; |
132 CD : BOOL; |
56 END_IF ; |
143 END_IF ; |
57 Q := (CV <= 0) ; |
144 Q := (CV <= 0) ; |
58 END_FUNCTION_BLOCK |
145 END_FUNCTION_BLOCK |
59 |
146 |
60 |
147 |
|
148 FUNCTION_BLOCK CTD_DINT |
|
149 VAR_INPUT |
|
150 CD : BOOL; |
|
151 LD : BOOL; |
|
152 PV : DINT; |
|
153 END_VAR |
|
154 VAR_OUTPUT |
|
155 Q : BOOL; |
|
156 CV : DINT; |
|
157 END_VAR |
|
158 IF LD THEN CV := PV ; |
|
159 ELSIF CD AND (CV > 0) |
|
160 THEN CV := CV-1; |
|
161 END_IF ; |
|
162 Q := (CV <= 0) ; |
|
163 END_FUNCTION_BLOCK |
|
164 |
|
165 |
|
166 FUNCTION_BLOCK CTD_LINT |
|
167 VAR_INPUT |
|
168 CD : BOOL; |
|
169 LD : BOOL; |
|
170 PV : LINT; |
|
171 END_VAR |
|
172 VAR_OUTPUT |
|
173 Q : BOOL; |
|
174 CV : LINT; |
|
175 END_VAR |
|
176 IF LD THEN CV := PV ; |
|
177 ELSIF CD AND (CV > 0) |
|
178 THEN CV := CV-1; |
|
179 END_IF ; |
|
180 Q := (CV <= 0) ; |
|
181 END_FUNCTION_BLOCK |
|
182 |
|
183 |
|
184 FUNCTION_BLOCK CTD_UDINT |
|
185 VAR_INPUT |
|
186 CD : BOOL; |
|
187 LD : BOOL; |
|
188 PV : UDINT; |
|
189 END_VAR |
|
190 VAR_OUTPUT |
|
191 Q : BOOL; |
|
192 CV : UDINT; |
|
193 END_VAR |
|
194 IF LD THEN CV := PV ; |
|
195 ELSIF CD AND (CV > 0) |
|
196 THEN CV := CV-1; |
|
197 END_IF ; |
|
198 Q := (CV <= 0) ; |
|
199 END_FUNCTION_BLOCK |
|
200 |
|
201 |
|
202 FUNCTION_BLOCK CTD_ULINT |
|
203 VAR_INPUT |
|
204 CD : BOOL; |
|
205 LD : BOOL; |
|
206 PV : ULINT; |
|
207 END_VAR |
|
208 VAR_OUTPUT |
|
209 Q : BOOL; |
|
210 CV : ULINT; |
|
211 END_VAR |
|
212 IF LD THEN CV := PV ; |
|
213 ELSIF CD AND (CV > 0) |
|
214 THEN CV := CV-1; |
|
215 END_IF ; |
|
216 Q := (CV <= 0) ; |
|
217 END_FUNCTION_BLOCK |
|
218 |
|
219 |
|
220 (********************) |
|
221 (* *) |
|
222 (* C T U D *) |
|
223 (* *) |
|
224 (********************) |
|
225 |
|
226 |
61 FUNCTION_BLOCK CTUD |
227 FUNCTION_BLOCK CTUD |
62 VAR_INPUT |
228 VAR_INPUT |
63 CU : BOOL; |
229 CU : BOOL; |
64 CD : BOOL; |
230 CD : BOOL; |
65 R : BOOL; |
231 R : BOOL; |
84 END_IF ; |
250 END_IF ; |
85 QU := (CV >= PV) ; |
251 QU := (CV >= PV) ; |
86 QD := (CV <= 0) ; |
252 QD := (CV <= 0) ; |
87 END_FUNCTION_BLOCK |
253 END_FUNCTION_BLOCK |
88 |
254 |
|
255 |
|
256 FUNCTION_BLOCK CTUD_DINT |
|
257 VAR_INPUT |
|
258 CU : BOOL; |
|
259 CD : BOOL; |
|
260 R : BOOL; |
|
261 LD : BOOL; |
|
262 PV : DINT; |
|
263 END_VAR |
|
264 VAR_OUTPUT |
|
265 QU : BOOL; |
|
266 QD : BOOL; |
|
267 CV : DINT; |
|
268 END_VAR |
|
269 IF R THEN CV := 0 ; |
|
270 ELSIF LD THEN CV := PV ; |
|
271 ELSE |
|
272 IF NOT (CU AND CD) THEN |
|
273 IF CU AND (CV < PV) |
|
274 THEN CV := CV+1; |
|
275 ELSIF CD AND (CV > 0) |
|
276 THEN CV := CV-1; |
|
277 END_IF; |
|
278 END_IF; |
|
279 END_IF ; |
|
280 QU := (CV >= PV) ; |
|
281 QD := (CV <= 0) ; |
|
282 END_FUNCTION_BLOCK |
|
283 |
|
284 |
|
285 FUNCTION_BLOCK CTUD_LINT |
|
286 VAR_INPUT |
|
287 CU : BOOL; |
|
288 CD : BOOL; |
|
289 R : BOOL; |
|
290 LD : BOOL; |
|
291 PV : LINT; |
|
292 END_VAR |
|
293 VAR_OUTPUT |
|
294 QU : BOOL; |
|
295 QD : BOOL; |
|
296 CV : LINT; |
|
297 END_VAR |
|
298 IF R THEN CV := 0 ; |
|
299 ELSIF LD THEN CV := PV ; |
|
300 ELSE |
|
301 IF NOT (CU AND CD) THEN |
|
302 IF CU AND (CV < PV) |
|
303 THEN CV := CV+1; |
|
304 ELSIF CD AND (CV > 0) |
|
305 THEN CV := CV-1; |
|
306 END_IF; |
|
307 END_IF; |
|
308 END_IF ; |
|
309 QU := (CV >= PV) ; |
|
310 QD := (CV <= 0) ; |
|
311 END_FUNCTION_BLOCK |
|
312 |
|
313 |
|
314 FUNCTION_BLOCK CTUD_UDINT |
|
315 VAR_INPUT |
|
316 CU : BOOL; |
|
317 CD : BOOL; |
|
318 R : BOOL; |
|
319 LD : BOOL; |
|
320 PV : UDINT; |
|
321 END_VAR |
|
322 VAR_OUTPUT |
|
323 QU : BOOL; |
|
324 QD : BOOL; |
|
325 CV : UDINT; |
|
326 END_VAR |
|
327 IF R THEN CV := 0 ; |
|
328 ELSIF LD THEN CV := PV ; |
|
329 ELSE |
|
330 IF NOT (CU AND CD) THEN |
|
331 IF CU AND (CV < PV) |
|
332 THEN CV := CV+1; |
|
333 ELSIF CD AND (CV > 0) |
|
334 THEN CV := CV-1; |
|
335 END_IF; |
|
336 END_IF; |
|
337 END_IF ; |
|
338 QU := (CV >= PV) ; |
|
339 QD := (CV <= 0) ; |
|
340 END_FUNCTION_BLOCK |
|
341 |
|
342 |
|
343 FUNCTION_BLOCK CTUD_ULINT |
|
344 VAR_INPUT |
|
345 CU : BOOL; |
|
346 CD : BOOL; |
|
347 R : BOOL; |
|
348 LD : BOOL; |
|
349 PV : ULINT; |
|
350 END_VAR |
|
351 VAR_OUTPUT |
|
352 QU : BOOL; |
|
353 QD : BOOL; |
|
354 CV : ULINT; |
|
355 END_VAR |
|
356 IF R THEN CV := 0 ; |
|
357 ELSIF LD THEN CV := PV ; |
|
358 ELSE |
|
359 IF NOT (CU AND CD) THEN |
|
360 IF CU AND (CV < PV) |
|
361 THEN CV := CV+1; |
|
362 ELSIF CD AND (CV > 0) |
|
363 THEN CV := CV-1; |
|
364 END_IF; |
|
365 END_IF; |
|
366 END_IF ; |
|
367 QU := (CV >= PV) ; |
|
368 QD := (CV <= 0) ; |
|
369 END_FUNCTION_BLOCK |