|
1 (* This file includes normal standard ST and IL code. |
|
2 * This code is then included into other tests, once |
|
3 * possibly strange things have been defined. |
|
4 * |
|
5 * Including this normal code will test whether the strange |
|
6 * things somehow breack the correct parsing and compiling |
|
7 * of normal code. |
|
8 * |
|
9 * Code in this file must not use the XXXX identfier! |
|
10 *) |
|
11 |
|
12 |
|
13 |
|
14 (***************************************************************************) |
|
15 (* Test if generic IL code is not affected by any previous declarations... *) |
|
16 (***************************************************************************) |
|
17 |
|
18 |
|
19 (* Test each IL operator *) |
|
20 (* Since our compiler needs to distinguish |
|
21 * between IL and ST code, we place each IL |
|
22 * operator in a distinct function, to test whether |
|
23 * the use of that IL operator as the first IL |
|
24 * instruction does not confuse the logic |
|
25 * use to determine whether ST or IL is being parsed. |
|
26 *) |
|
27 |
|
28 function bar0005 : int |
|
29 var |
|
30 e_1, f_1 : int; |
|
31 end_var |
|
32 & 10 |
|
33 end_function |
|
34 |
|
35 |
|
36 |
|
37 function bar0006 : int |
|
38 var |
|
39 e_1, f_1 : int; |
|
40 end_var |
|
41 &N 10 |
|
42 end_function |
|
43 |
|
44 |
|
45 |
|
46 function bar0007 : int |
|
47 var |
|
48 e_1, f_1 : int; |
|
49 end_var |
|
50 ADD 10 |
|
51 end_function |
|
52 |
|
53 |
|
54 |
|
55 function bar0008 : int |
|
56 var |
|
57 e_1, f_1 : int; |
|
58 end_var |
|
59 AND TRUE |
|
60 end_function |
|
61 |
|
62 |
|
63 function bar0009 : int |
|
64 var |
|
65 e_1, f_1 : int; |
|
66 end_var |
|
67 ANDN TRUE |
|
68 end_function |
|
69 |
|
70 |
|
71 function_block bar0010 |
|
72 var |
|
73 e_1, f_1 : int; |
|
74 tt : TP; |
|
75 end_var |
|
76 CAL tt |
|
77 end_function_block |
|
78 |
|
79 |
|
80 function_block bar0011 |
|
81 var |
|
82 e_1, f_1 : int; |
|
83 tt : TP; |
|
84 end_var |
|
85 CALC tt |
|
86 end_function_block |
|
87 |
|
88 |
|
89 function_block bar0012 |
|
90 var |
|
91 e_1, f_1 : int; |
|
92 tt : TP; |
|
93 end_var |
|
94 CALCN tt |
|
95 end_function_block |
|
96 |
|
97 |
|
98 function_block bar0013 |
|
99 var |
|
100 e_1, f_1 : int; |
|
101 tt : CTUD; |
|
102 end_var |
|
103 CU tt |
|
104 end_function_block |
|
105 |
|
106 |
|
107 function_block bar0014 |
|
108 var |
|
109 e_1, f_1 : int; |
|
110 tt : CTUD; |
|
111 end_var |
|
112 CD tt |
|
113 end_function_block |
|
114 |
|
115 |
|
116 function_block bar0015 |
|
117 var |
|
118 e_1, f_1 : int; |
|
119 tt : R_TRIG; |
|
120 end_var |
|
121 CLK tt |
|
122 end_function_block |
|
123 |
|
124 |
|
125 function bar0016 : int |
|
126 var |
|
127 e_1, f_1 : int; |
|
128 end_var |
|
129 DIV e_1 |
|
130 end_function |
|
131 |
|
132 |
|
133 function bar0017 : int |
|
134 var |
|
135 e_1, f_1 : int; |
|
136 end_var |
|
137 EQ e_1 |
|
138 end_function |
|
139 |
|
140 |
|
141 function bar0018 : int |
|
142 var |
|
143 e_1, f_1 : int; |
|
144 end_var |
|
145 GE e_1 |
|
146 end_function |
|
147 |
|
148 |
|
149 function bar0019 : int |
|
150 var |
|
151 e_1, f_1 : int; |
|
152 end_var |
|
153 GT e_1 |
|
154 end_function |
|
155 |
|
156 |
|
157 function_block bar0020 |
|
158 var |
|
159 e_1, f_1 : int; |
|
160 tt : TP; |
|
161 end_var |
|
162 IN tt |
|
163 end_function_block |
|
164 |
|
165 |
|
166 function bar0021 : int |
|
167 var |
|
168 e_1, f_1 : int; |
|
169 end_var |
|
170 JMP ll |
|
171 ll: LD FALSE |
|
172 end_function |
|
173 |
|
174 |
|
175 |
|
176 function bar0022 : int |
|
177 var |
|
178 e_1, f_1 : int; |
|
179 end_var |
|
180 JMPC ll |
|
181 ll: LD FALSE |
|
182 end_function |
|
183 |
|
184 |
|
185 function bar0023 : int |
|
186 var |
|
187 e_1, f_1 : int; |
|
188 end_var |
|
189 JMPCN ll |
|
190 ll: LD FALSE |
|
191 end_function |
|
192 |
|
193 |
|
194 |
|
195 function bar0024 : int |
|
196 var |
|
197 e_1, f_1 : int; |
|
198 end_var |
|
199 LD TRUE |
|
200 end_function |
|
201 |
|
202 |
|
203 function bar0025 : int |
|
204 var |
|
205 e_1, f_1 : int; |
|
206 end_var |
|
207 LDN TRUE |
|
208 end_function |
|
209 |
|
210 |
|
211 function bar0026 : int |
|
212 var |
|
213 e_1, f_1 : int; |
|
214 end_var |
|
215 LE e_1 |
|
216 end_function |
|
217 |
|
218 |
|
219 function bar0027 : int |
|
220 var |
|
221 e_1, f_1 : int; |
|
222 end_var |
|
223 LT e_1 |
|
224 end_function |
|
225 |
|
226 |
|
227 function bar0028 : int |
|
228 var |
|
229 e_1, f_1 : int; |
|
230 end_var |
|
231 MOD e_1 |
|
232 end_function |
|
233 |
|
234 |
|
235 function bar0029 : int |
|
236 var |
|
237 e_1, f_1 : int; |
|
238 end_var |
|
239 MUL e_1 |
|
240 end_function |
|
241 |
|
242 |
|
243 function bar0030 : int |
|
244 var |
|
245 e_1, f_1 : int; |
|
246 end_var |
|
247 NE e_1 |
|
248 end_function |
|
249 |
|
250 |
|
251 function bar0031 : int |
|
252 var |
|
253 e_1, f_1 : int; |
|
254 end_var |
|
255 NOT TRUE |
|
256 end_function |
|
257 |
|
258 |
|
259 function bar0032 : int |
|
260 var |
|
261 e_1, f_1 : int; |
|
262 end_var |
|
263 OR TRUE |
|
264 end_function |
|
265 |
|
266 |
|
267 function bar0033 : int |
|
268 var |
|
269 e_1, f_1 : int; |
|
270 end_var |
|
271 ORN TRUE |
|
272 end_function |
|
273 |
|
274 |
|
275 function_block bar0034 |
|
276 var |
|
277 e_1, f_1 : int; |
|
278 tt : TP; |
|
279 end_var |
|
280 PT tt |
|
281 end_function_block |
|
282 |
|
283 |
|
284 function_block bar0035 |
|
285 var |
|
286 e_1, f_1 : int; |
|
287 tt : CTUD; |
|
288 end_var |
|
289 PV tt |
|
290 end_function_block |
|
291 |
|
292 |
|
293 function bar0036 : int |
|
294 var |
|
295 e_1, f_1 : bool; |
|
296 end_var |
|
297 R e_1 (* IL operand *) |
|
298 end_function |
|
299 |
|
300 |
|
301 function_block bar0037 |
|
302 var |
|
303 e_1, f_1 : int; |
|
304 tt : SR; |
|
305 end_var |
|
306 R tt (* FB call *) |
|
307 end_function_block |
|
308 |
|
309 |
|
310 function_block bar0038 |
|
311 var |
|
312 e_1, f_1 : int; |
|
313 tt : SR; |
|
314 end_var |
|
315 R1 tt (* FB call *) |
|
316 end_function_block |
|
317 |
|
318 |
|
319 function bar0039 : int |
|
320 var |
|
321 e_1, f_1 : bool; |
|
322 end_var |
|
323 RET |
|
324 end_function |
|
325 |
|
326 |
|
327 function bar0040 : int |
|
328 var |
|
329 e_1, f_1 : bool; |
|
330 end_var |
|
331 RETC |
|
332 end_function |
|
333 |
|
334 |
|
335 function bar0041 : int |
|
336 var |
|
337 e_1, f_1 : bool; |
|
338 end_var |
|
339 RETCN |
|
340 end_function |
|
341 |
|
342 |
|
343 function bar0042 : int |
|
344 var |
|
345 e_1, f_1 : bool; |
|
346 end_var |
|
347 S e_1 |
|
348 end_function |
|
349 |
|
350 |
|
351 function_block bar0043 |
|
352 var |
|
353 e_1, f_1 : int; |
|
354 tt : SR; |
|
355 end_var |
|
356 S1 tt (* FB call *) |
|
357 end_function_block |
|
358 |
|
359 |
|
360 function bar0044 : int |
|
361 var |
|
362 e_1, f_1 : bool; |
|
363 end_var |
|
364 ST e_1 |
|
365 end_function |
|
366 |
|
367 |
|
368 function bar0045 : int |
|
369 var |
|
370 e_1, f_1 : bool; |
|
371 end_var |
|
372 STN e_1 |
|
373 end_function |
|
374 |
|
375 |
|
376 function bar0046 : int |
|
377 var |
|
378 e_1, f_1 : int; |
|
379 end_var |
|
380 SUB e_1 |
|
381 end_function |
|
382 |
|
383 |
|
384 function bar0047 : int |
|
385 var |
|
386 e_1, f_1 : bool; |
|
387 end_var |
|
388 XOR e_1 |
|
389 end_function |
|
390 |
|
391 |
|
392 function bar0048 : int |
|
393 var |
|
394 e_1, f_1 : bool; |
|
395 end_var |
|
396 XORN e_1 |
|
397 end_function |
|
398 |
|
399 |
|
400 |
|
401 |
|
402 |
|
403 |
|
404 |
|
405 |
|
406 |
|
407 (***************************************************************************) |
|
408 (* Test if generic ST code is not affected by any previous declarations... *) |
|
409 (***************************************************************************) |
|
410 |
|
411 (* A helper FUNCTION BLOCK declaration *) |
|
412 function_block bar1000 |
|
413 var_input |
|
414 a_1, b_1: int; |
|
415 end_var |
|
416 var_output |
|
417 c_1, d_1: int; |
|
418 end_var |
|
419 c_1 := 10 + b_1; |
|
420 end_function_block |
|
421 |
|
422 |
|
423 (* A FUNCTION declaration *) |
|
424 function bar1001 : int |
|
425 var_input |
|
426 a_1, b_1: int; |
|
427 end_var |
|
428 var_output |
|
429 c_1, d_1: int; |
|
430 end_var |
|
431 c_1 := 10 + b_1; |
|
432 end_function |
|
433 |
|
434 |
|
435 (* Generic ST code *) |
|
436 |
|
437 function_block bar1002 |
|
438 var |
|
439 e_1, f_1 : int; |
|
440 g_1 : int; |
|
441 fb : bar1000; |
|
442 end_var |
|
443 fb(g_1, 20); |
|
444 fb (10, g_1, e_1, f_1); |
|
445 fb (a_1 := g_1, b_1:=g_1, c_1=>g_1, d_1=>f_1); |
|
446 fb(a_1 := 10, b_1:=20, c_1=>e_1, d_1=>g_1); |
|
447 fb (c_1=>g_1, a_1:=20, d_1=>f_1); |
|
448 g_1 := fb.c_1; |
|
449 fb.a_1 := g_1 + g_1 * 2 * (g_1) / bar1001(g_1, 10, g_1, e_1) MOD g_1 MOD g_1 ** g_1; |
|
450 IF (g_1 >= 10) THEN g_1 := 10; END_IF; |
|
451 CASE (g_1 + 10) OF |
|
452 10: g_1 := 10; |
|
453 10..20:g_1 := 20; |
|
454 ELSE g_1 := 20; |
|
455 END_CASE; |
|
456 FOR g_1 := 10 TO 20 BY 2 DO |
|
457 g_1 := g_1 + 1; |
|
458 END_FOR; |
|
459 FOR e_1 := g_1 TO 20 DO |
|
460 g_1 := g_1 + 1; |
|
461 END_FOR; |
|
462 FOR e_1 := 10 TO g_1 BY 2 DO |
|
463 g_1 := g_1 + 1; |
|
464 END_FOR; |
|
465 FOR e_1 := 10 TO g_1 DO |
|
466 g_1 := g_1 + 1; |
|
467 END_FOR; |
|
468 FOR e_1 := 10 TO 20 BY g_1 DO |
|
469 g_1 := g_1 + 1; |
|
470 END_FOR; |
|
471 WHILE (g_1 >= 10) DO |
|
472 g_1 := 10; |
|
473 END_WHILE; |
|
474 REPEAT g_1 := 10; UNTIL (g_1 >= 10) END_REPEAT; |
|
475 end_function_block |
|
476 |
|
477 |
|
478 |
|
479 |
|
480 |
|
481 |
|
482 |
|
483 |
|
484 |
|
485 |
|
486 (****************************************************************************) |
|
487 (* Test if generic SFC code is not affected by any previous declarations... *) |
|
488 (****************************************************************************) |
|
489 |
|
490 PROGRAM bar2001 |
|
491 VAR |
|
492 QX1 AT %QX1 : BOOL := 1; |
|
493 QX2 AT %QX2 : BOOL := 0; |
|
494 QX3 AT %QX3 : BOOL; |
|
495 IX1 AT %IX1 : BOOL; |
|
496 IX2 AT %IX2 : BOOL; |
|
497 IX3 AT %IX3 : BOOL; |
|
498 END_VAR |
|
499 VAR |
|
500 delta_1 : TIME := T#1s; |
|
501 END_VAR |
|
502 |
|
503 INITIAL_STEP GO: |
|
504 END_STEP |
|
505 |
|
506 TRANSITION FROM GO TO STEP1 |
|
507 := IX1 = FALSE; |
|
508 END_TRANSITION |
|
509 |
|
510 STEP STEP1: |
|
511 ONSTEP1(); |
|
512 END_STEP |
|
513 |
|
514 ACTION ONSTEP1: |
|
515 QX1 := TRUE; |
|
516 QX2 := TRUE; |
|
517 END_ACTION |
|
518 |
|
519 TRANSITION (PRIORITY := 4) FROM STEP1 TO STEP2 |
|
520 := IX2 = TRUE; |
|
521 END_TRANSITION |
|
522 |
|
523 STEP STEP2: |
|
524 INLINE1(D, T#1s); |
|
525 END_STEP |
|
526 |
|
527 ACTION INLINE1: |
|
528 QX1 := QX2 XOR QX1; QX2 := NOT QX2; |
|
529 END_ACTION |
|
530 |
|
531 TRANSITION transition_id1 FROM STEP2 TO A1 |
|
532 := QX1 = FALSE AND QX2 = FALSE; |
|
533 END_TRANSITION |
|
534 |
|
535 STEP A1: |
|
536 INLINE2(DS, T#1s); |
|
537 END_STEP |
|
538 |
|
539 ACTION INLINE2: |
|
540 IX1 := TRUE; |
|
541 END_ACTION |
|
542 |
|
543 TRANSITION transition_id2 (PRIORITY := 3) FROM A1 TO STEP2 |
|
544 := IX1 = TRUE; |
|
545 END_TRANSITION |
|
546 |
|
547 TRANSITION FROM STEP2 TO (D1, D2, D3) |
|
548 := QX1 = TRUE AND QX2 = TRUE; |
|
549 END_TRANSITION |
|
550 |
|
551 STEP D1: |
|
552 INLINE5(L, T#1s); |
|
553 END_STEP |
|
554 |
|
555 ACTION INLINE5: |
|
556 QX1 := FALSE; |
|
557 END_ACTION |
|
558 |
|
559 TRANSITION FROM D1 TO E1 |
|
560 := NOT ( QX1 OR QX2 OR QX3 ); |
|
561 END_TRANSITION |
|
562 |
|
563 STEP E1: |
|
564 INLINE8(N); |
|
565 END_STEP |
|
566 |
|
567 ACTION INLINE8: |
|
568 QX1 := TRUE; |
|
569 END_ACTION |
|
570 |
|
571 TRANSITION FROM (E1, E2, E3) TO GO |
|
572 := QX1 AND QX2 AND QX3; |
|
573 END_TRANSITION |
|
574 |
|
575 STEP D2: |
|
576 INLINE6(P); |
|
577 END_STEP |
|
578 |
|
579 ACTION INLINE6: |
|
580 QX2 := FALSE; |
|
581 END_ACTION |
|
582 |
|
583 TRANSITION FROM D2 TO E2 |
|
584 := NOT ( QX1 OR QX2 OR QX3 ); |
|
585 END_TRANSITION |
|
586 |
|
587 STEP E2: |
|
588 INLINE9(R); |
|
589 END_STEP |
|
590 |
|
591 ACTION INLINE9: |
|
592 QX2 := TRUE; |
|
593 END_ACTION |
|
594 |
|
595 STEP D3: |
|
596 INLINE7(S); |
|
597 END_STEP |
|
598 |
|
599 ACTION INLINE7: |
|
600 QX2 := FALSE; |
|
601 END_ACTION |
|
602 |
|
603 TRANSITION FROM D3 TO E3 |
|
604 := NOT ( QX1 OR QX2 OR QX3 ); |
|
605 END_TRANSITION |
|
606 |
|
607 STEP E3: |
|
608 INLINE10(SD, T#1s); |
|
609 END_STEP |
|
610 |
|
611 ACTION INLINE10: |
|
612 QX3 := TRUE; |
|
613 END_ACTION |
|
614 |
|
615 TRANSITION FROM STEP2 TO A3 |
|
616 := QX1 = TRUE AND QX2 = FALSE; |
|
617 END_TRANSITION |
|
618 |
|
619 STEP A3: |
|
620 INLINE4(SL, T#1s); |
|
621 END_STEP |
|
622 |
|
623 ACTION INLINE4: |
|
624 IX1 := TRUE; |
|
625 END_ACTION |
|
626 |
|
627 TRANSITION FROM A3 TO STEP2 |
|
628 := IX1 = TRUE; |
|
629 END_TRANSITION |
|
630 |
|
631 TRANSITION FROM STEP2 TO A2 |
|
632 := QX1 = FALSE AND QX2 = TRUE; |
|
633 END_TRANSITION |
|
634 |
|
635 STEP A2: |
|
636 INLINE3(L, delta_1); |
|
637 END_STEP |
|
638 |
|
639 ACTION INLINE3: |
|
640 IX1 := FALSE; |
|
641 END_ACTION |
|
642 |
|
643 TRANSITION FROM A2 TO STEP2 |
|
644 := IX1 = FALSE; |
|
645 END_TRANSITION |
|
646 |
|
647 STEP A01: |
|
648 INLINE01(L, delta_1, IX1, QX1); |
|
649 END_STEP |
|
650 |
|
651 ACTION INLINE01: |
|
652 IX1 := FALSE; |
|
653 END_ACTION |
|
654 |
|
655 TRANSITION FROM STEP2 TO A01 |
|
656 := IX1 = FALSE; |
|
657 END_TRANSITION |
|
658 |
|
659 STEP A02: |
|
660 INLINE01(L, delta_1, IX1, QX1); |
|
661 INLINE1 (L, delta_1, IX1, QX1); |
|
662 INLINE2 (S); |
|
663 INLINE3 (); |
|
664 END_STEP |
|
665 |
|
666 TRANSITION FROM STEP2 TO A02 |
|
667 := IX1 = FALSE; |
|
668 END_TRANSITION |
|
669 END_PROGRAM |
|
670 |
|
671 |
|
672 |
|
673 |
|
674 |
|
675 |
|
676 (*********************************************************************************) |
|
677 (* Test if generic CONFIGURATION is not affected by any previous declarations... *) |
|
678 (*********************************************************************************) |
|
679 |
|
680 CONFIGURATION CONF0001 |
|
681 RESOURCE STD_RESSOURCE ON BEREMIZ |
|
682 TASK STD_TASK(INTERVAL := t#100ms,PRIORITY := 0); |
|
683 PROGRAM MAIN_INSTANCE : bar2001; |
|
684 END_RESOURCE |
|
685 END_CONFIGURATION |