equal
deleted
inserted
replaced
23 (* *) |
23 (* *) |
24 (* C T U *) |
24 (* C T U *) |
25 (* *) |
25 (* *) |
26 (******************) |
26 (******************) |
27 |
27 |
|
28 |
28 FUNCTION_BLOCK CTU |
29 FUNCTION_BLOCK CTU |
29 VAR_INPUT |
30 VAR_INPUT |
30 CU : BOOL; |
31 CU : BOOL; |
31 R : BOOL; |
32 R : BOOL; |
32 PV : INT; |
33 PV : INT; |
33 END_VAR |
34 END_VAR |
34 VAR_OUTPUT |
35 VAR_OUTPUT |
35 Q : BOOL; |
36 Q : BOOL; |
36 CV : INT; |
37 CV : INT; |
37 END_VAR |
38 END_VAR |
38 IF R THEN CV := 0 ; |
39 VAR |
39 ELSIF CU AND (CV < PV) |
40 CU_T: R_TRIG; |
|
41 END_VAR |
|
42 |
|
43 CU_T(CU); |
|
44 IF R THEN CV := 0 ; |
|
45 ELSIF CU_T.Q AND (CV < PV) |
40 THEN CV := CV+1; |
46 THEN CV := CV+1; |
41 END_IF ; |
47 END_IF ; |
42 Q := (CV >= PV) ; |
48 Q := (CV >= PV) ; |
43 END_FUNCTION_BLOCK |
49 END_FUNCTION_BLOCK |
44 |
50 |
51 END_VAR |
57 END_VAR |
52 VAR_OUTPUT |
58 VAR_OUTPUT |
53 Q : BOOL; |
59 Q : BOOL; |
54 CV : DINT; |
60 CV : DINT; |
55 END_VAR |
61 END_VAR |
56 IF R THEN CV := 0 ; |
62 VAR |
57 ELSIF CU AND (CV < PV) |
63 CU_T: R_TRIG; |
|
64 END_VAR |
|
65 |
|
66 CU_T(CU); |
|
67 IF R THEN CV := 0 ; |
|
68 ELSIF CU_T.Q AND (CV < PV) |
58 THEN CV := CV+1; |
69 THEN CV := CV+1; |
59 END_IF ; |
70 END_IF ; |
60 Q := (CV >= PV) ; |
71 Q := (CV >= PV) ; |
61 END_FUNCTION_BLOCK |
72 END_FUNCTION_BLOCK |
62 |
73 |
69 END_VAR |
80 END_VAR |
70 VAR_OUTPUT |
81 VAR_OUTPUT |
71 Q : BOOL; |
82 Q : BOOL; |
72 CV : LINT; |
83 CV : LINT; |
73 END_VAR |
84 END_VAR |
74 IF R THEN CV := 0 ; |
85 VAR |
75 ELSIF CU AND (CV < PV) |
86 CU_T: R_TRIG; |
|
87 END_VAR |
|
88 |
|
89 CU_T(CU); |
|
90 IF R THEN CV := 0 ; |
|
91 ELSIF CU_T.Q AND (CV < PV) |
76 THEN CV := CV+1; |
92 THEN CV := CV+1; |
77 END_IF ; |
93 END_IF ; |
78 Q := (CV >= PV) ; |
94 Q := (CV >= PV) ; |
79 END_FUNCTION_BLOCK |
95 END_FUNCTION_BLOCK |
80 |
96 |
87 END_VAR |
103 END_VAR |
88 VAR_OUTPUT |
104 VAR_OUTPUT |
89 Q : BOOL; |
105 Q : BOOL; |
90 CV : UDINT; |
106 CV : UDINT; |
91 END_VAR |
107 END_VAR |
92 IF R THEN CV := 0 ; |
108 VAR |
93 ELSIF CU AND (CV < PV) |
109 CU_T: R_TRIG; |
|
110 END_VAR |
|
111 |
|
112 CU_T(CU); |
|
113 IF R THEN CV := 0 ; |
|
114 ELSIF CU_T.Q AND (CV < PV) |
94 THEN CV := CV+1; |
115 THEN CV := CV+1; |
95 END_IF ; |
116 END_IF ; |
96 Q := (CV >= PV) ; |
117 Q := (CV >= PV) ; |
97 END_FUNCTION_BLOCK |
118 END_FUNCTION_BLOCK |
98 |
119 |
105 END_VAR |
126 END_VAR |
106 VAR_OUTPUT |
127 VAR_OUTPUT |
107 Q : BOOL; |
128 Q : BOOL; |
108 CV : ULINT; |
129 CV : ULINT; |
109 END_VAR |
130 END_VAR |
110 IF R THEN CV := 0 ; |
131 VAR |
111 ELSIF CU AND (CV < PV) |
132 CU_T: R_TRIG; |
|
133 END_VAR |
|
134 |
|
135 CU_T(CU); |
|
136 IF R THEN CV := 0 ; |
|
137 ELSIF CU_T.Q AND (CV < PV) |
112 THEN CV := CV+1; |
138 THEN CV := CV+1; |
113 END_IF ; |
139 END_IF ; |
114 Q := (CV >= PV) ; |
140 Q := (CV >= PV) ; |
115 END_FUNCTION_BLOCK |
141 END_FUNCTION_BLOCK |
116 |
142 |
135 END_VAR |
161 END_VAR |
136 VAR_OUTPUT |
162 VAR_OUTPUT |
137 Q : BOOL; |
163 Q : BOOL; |
138 CV : INT; |
164 CV : INT; |
139 END_VAR |
165 END_VAR |
|
166 VAR |
|
167 CD_T: R_TRIG; |
|
168 END_VAR |
|
169 |
|
170 CD_T(CD); |
140 IF LD THEN CV := PV ; |
171 IF LD THEN CV := PV ; |
141 ELSIF CD AND (CV > 0) |
172 ELSIF CD_T.Q AND (CV > 0) |
142 THEN CV := CV-1; |
173 THEN CV := CV-1; |
143 END_IF ; |
174 END_IF ; |
144 Q := (CV <= 0) ; |
175 Q := (CV <= 0) ; |
145 END_FUNCTION_BLOCK |
176 END_FUNCTION_BLOCK |
146 |
177 |
153 END_VAR |
184 END_VAR |
154 VAR_OUTPUT |
185 VAR_OUTPUT |
155 Q : BOOL; |
186 Q : BOOL; |
156 CV : DINT; |
187 CV : DINT; |
157 END_VAR |
188 END_VAR |
|
189 VAR |
|
190 CD_T: R_TRIG; |
|
191 END_VAR |
|
192 |
|
193 CD_T(CD); |
158 IF LD THEN CV := PV ; |
194 IF LD THEN CV := PV ; |
159 ELSIF CD AND (CV > 0) |
195 ELSIF CD_T.Q AND (CV > 0) |
160 THEN CV := CV-1; |
196 THEN CV := CV-1; |
161 END_IF ; |
197 END_IF ; |
162 Q := (CV <= 0) ; |
198 Q := (CV <= 0) ; |
163 END_FUNCTION_BLOCK |
199 END_FUNCTION_BLOCK |
164 |
200 |
171 END_VAR |
207 END_VAR |
172 VAR_OUTPUT |
208 VAR_OUTPUT |
173 Q : BOOL; |
209 Q : BOOL; |
174 CV : LINT; |
210 CV : LINT; |
175 END_VAR |
211 END_VAR |
|
212 VAR |
|
213 CD_T: R_TRIG; |
|
214 END_VAR |
|
215 |
|
216 CD_T(CD); |
176 IF LD THEN CV := PV ; |
217 IF LD THEN CV := PV ; |
177 ELSIF CD AND (CV > 0) |
218 ELSIF CD_T.Q AND (CV > 0) |
178 THEN CV := CV-1; |
219 THEN CV := CV-1; |
179 END_IF ; |
220 END_IF ; |
180 Q := (CV <= 0) ; |
221 Q := (CV <= 0) ; |
181 END_FUNCTION_BLOCK |
222 END_FUNCTION_BLOCK |
182 |
223 |
189 END_VAR |
230 END_VAR |
190 VAR_OUTPUT |
231 VAR_OUTPUT |
191 Q : BOOL; |
232 Q : BOOL; |
192 CV : UDINT; |
233 CV : UDINT; |
193 END_VAR |
234 END_VAR |
|
235 VAR |
|
236 CD_T: R_TRIG; |
|
237 END_VAR |
|
238 |
|
239 CD_T(CD); |
194 IF LD THEN CV := PV ; |
240 IF LD THEN CV := PV ; |
195 ELSIF CD AND (CV > 0) |
241 ELSIF CD_T.Q AND (CV > 0) |
196 THEN CV := CV-1; |
242 THEN CV := CV-1; |
197 END_IF ; |
243 END_IF ; |
198 Q := (CV <= 0) ; |
244 Q := (CV <= 0) ; |
199 END_FUNCTION_BLOCK |
245 END_FUNCTION_BLOCK |
200 |
246 |
207 END_VAR |
253 END_VAR |
208 VAR_OUTPUT |
254 VAR_OUTPUT |
209 Q : BOOL; |
255 Q : BOOL; |
210 CV : ULINT; |
256 CV : ULINT; |
211 END_VAR |
257 END_VAR |
|
258 VAR |
|
259 CD_T: R_TRIG; |
|
260 END_VAR |
|
261 |
|
262 CD_T(CD); |
212 IF LD THEN CV := PV ; |
263 IF LD THEN CV := PV ; |
213 ELSIF CD AND (CV > 0) |
264 ELSIF CD_T.Q AND (CV > 0) |
214 THEN CV := CV-1; |
265 THEN CV := CV-1; |
215 END_IF ; |
266 END_IF ; |
216 Q := (CV <= 0) ; |
267 Q := (CV <= 0) ; |
217 END_FUNCTION_BLOCK |
268 END_FUNCTION_BLOCK |
218 |
269 |
235 VAR_OUTPUT |
286 VAR_OUTPUT |
236 QU : BOOL; |
287 QU : BOOL; |
237 QD : BOOL; |
288 QD : BOOL; |
238 CV : INT; |
289 CV : INT; |
239 END_VAR |
290 END_VAR |
|
291 VAR |
|
292 CD_T: R_TRIG; |
|
293 CU_T: R_TRIG; |
|
294 END_VAR |
|
295 |
|
296 CD_T(CD); |
|
297 CU_T(CU); |
|
298 |
240 IF R THEN CV := 0 ; |
299 IF R THEN CV := 0 ; |
241 ELSIF LD THEN CV := PV ; |
300 ELSIF LD THEN CV := PV ; |
242 ELSE |
301 ELSE |
243 IF NOT (CU AND CD) THEN |
302 IF NOT (CU_T.Q AND CD_T.Q) THEN |
244 IF CU AND (CV < PV) |
303 IF CU_T.Q AND (CV < PV) |
245 THEN CV := CV+1; |
304 THEN CV := CV+1; |
246 ELSIF CD AND (CV > 0) |
305 ELSIF CD_T.Q AND (CV > 0) |
247 THEN CV := CV-1; |
306 THEN CV := CV-1; |
248 END_IF; |
307 END_IF; |
249 END_IF; |
308 END_IF; |
250 END_IF ; |
309 END_IF ; |
251 QU := (CV >= PV) ; |
310 QU := (CV >= PV) ; |
264 VAR_OUTPUT |
323 VAR_OUTPUT |
265 QU : BOOL; |
324 QU : BOOL; |
266 QD : BOOL; |
325 QD : BOOL; |
267 CV : DINT; |
326 CV : DINT; |
268 END_VAR |
327 END_VAR |
|
328 VAR |
|
329 CD_T: R_TRIG; |
|
330 CU_T: R_TRIG; |
|
331 END_VAR |
|
332 |
|
333 CD_T(CD); |
|
334 CU_T(CU); |
|
335 |
269 IF R THEN CV := 0 ; |
336 IF R THEN CV := 0 ; |
270 ELSIF LD THEN CV := PV ; |
337 ELSIF LD THEN CV := PV ; |
271 ELSE |
338 ELSE |
272 IF NOT (CU AND CD) THEN |
339 IF NOT (CU_T.Q AND CD_T.Q) THEN |
273 IF CU AND (CV < PV) |
340 IF CU_T.Q AND (CV < PV) |
274 THEN CV := CV+1; |
341 THEN CV := CV+1; |
275 ELSIF CD AND (CV > 0) |
342 ELSIF CD_T.Q AND (CV > 0) |
276 THEN CV := CV-1; |
343 THEN CV := CV-1; |
277 END_IF; |
344 END_IF; |
278 END_IF; |
345 END_IF; |
279 END_IF ; |
346 END_IF ; |
280 QU := (CV >= PV) ; |
347 QU := (CV >= PV) ; |
293 VAR_OUTPUT |
360 VAR_OUTPUT |
294 QU : BOOL; |
361 QU : BOOL; |
295 QD : BOOL; |
362 QD : BOOL; |
296 CV : LINT; |
363 CV : LINT; |
297 END_VAR |
364 END_VAR |
|
365 VAR |
|
366 CD_T: R_TRIG; |
|
367 CU_T: R_TRIG; |
|
368 END_VAR |
|
369 |
|
370 CD_T(CD); |
|
371 CU_T(CU); |
|
372 |
298 IF R THEN CV := 0 ; |
373 IF R THEN CV := 0 ; |
299 ELSIF LD THEN CV := PV ; |
374 ELSIF LD THEN CV := PV ; |
300 ELSE |
375 ELSE |
301 IF NOT (CU AND CD) THEN |
376 IF NOT (CU_T.Q AND CD_T.Q) THEN |
302 IF CU AND (CV < PV) |
377 IF CU_T.Q AND (CV < PV) |
303 THEN CV := CV+1; |
378 THEN CV := CV+1; |
304 ELSIF CD AND (CV > 0) |
379 ELSIF CD_T.Q AND (CV > 0) |
305 THEN CV := CV-1; |
380 THEN CV := CV-1; |
306 END_IF; |
381 END_IF; |
307 END_IF; |
382 END_IF; |
308 END_IF ; |
383 END_IF ; |
309 QU := (CV >= PV) ; |
384 QU := (CV >= PV) ; |
322 VAR_OUTPUT |
397 VAR_OUTPUT |
323 QU : BOOL; |
398 QU : BOOL; |
324 QD : BOOL; |
399 QD : BOOL; |
325 CV : UDINT; |
400 CV : UDINT; |
326 END_VAR |
401 END_VAR |
|
402 VAR |
|
403 CD_T: R_TRIG; |
|
404 CU_T: R_TRIG; |
|
405 END_VAR |
|
406 |
|
407 CD_T(CD); |
|
408 CU_T(CU); |
|
409 |
327 IF R THEN CV := 0 ; |
410 IF R THEN CV := 0 ; |
328 ELSIF LD THEN CV := PV ; |
411 ELSIF LD THEN CV := PV ; |
329 ELSE |
412 ELSE |
330 IF NOT (CU AND CD) THEN |
413 IF NOT (CU_T.Q AND CD_T.Q) THEN |
331 IF CU AND (CV < PV) |
414 IF CU_T.Q AND (CV < PV) |
332 THEN CV := CV+1; |
415 THEN CV := CV+1; |
333 ELSIF CD AND (CV > 0) |
416 ELSIF CD_T.Q AND (CV > 0) |
334 THEN CV := CV-1; |
417 THEN CV := CV-1; |
335 END_IF; |
418 END_IF; |
336 END_IF; |
419 END_IF; |
337 END_IF ; |
420 END_IF ; |
338 QU := (CV >= PV) ; |
421 QU := (CV >= PV) ; |
351 VAR_OUTPUT |
434 VAR_OUTPUT |
352 QU : BOOL; |
435 QU : BOOL; |
353 QD : BOOL; |
436 QD : BOOL; |
354 CV : ULINT; |
437 CV : ULINT; |
355 END_VAR |
438 END_VAR |
|
439 VAR |
|
440 CD_T: R_TRIG; |
|
441 CU_T: R_TRIG; |
|
442 END_VAR |
|
443 |
|
444 CD_T(CD); |
|
445 CU_T(CU); |
|
446 |
356 IF R THEN CV := 0 ; |
447 IF R THEN CV := 0 ; |
357 ELSIF LD THEN CV := PV ; |
448 ELSIF LD THEN CV := PV ; |
358 ELSE |
449 ELSE |
359 IF NOT (CU AND CD) THEN |
450 IF NOT (CU_T.Q AND CD_T.Q) THEN |
360 IF CU AND (CV < PV) |
451 IF CU_T.Q AND (CV < PV) |
361 THEN CV := CV+1; |
452 THEN CV := CV+1; |
362 ELSIF CD AND (CV > 0) |
453 ELSIF CD_T.Q AND (CV > 0) |
363 THEN CV := CV-1; |
454 THEN CV := CV-1; |
364 END_IF; |
455 END_IF; |
365 END_IF; |
456 END_IF; |
366 END_IF ; |
457 END_IF ; |
367 QU := (CV >= PV) ; |
458 QU := (CV >= PV) ; |