aboutsummaryrefslogtreecommitdiffstats
path: root/tests/999-projects/stepchain.awl
blob: 198fa1ff03a81256785afb406128d4b4d28432e9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
FUNCTION_BLOCK FB 1
TITLE =
VERSION : 0.1


VAR_INPUT
  T1_2 : BOOL ;	
  T2_3 : BOOL  := TRUE;	
  T3_4 : BOOL  := TRUE;	
  T4_5 : BOOL  := TRUE;	
  T5_6 : BOOL  := TRUE;	
  T6_7 : BOOL  := TRUE;	
  T7_8 : BOOL  := TRUE;	
  T8_9 : BOOL  := TRUE;	
  T9_10 : BOOL  := TRUE;	
  T10_11 : BOOL  := TRUE;	
  T11_12 : BOOL  := TRUE;	
  T12_13 : BOOL  := TRUE;	
  T13_14 : BOOL  := TRUE;	
  T14_15 : BOOL  := TRUE;	
  T15_16 : BOOL  := TRUE;	
  T16_17 : BOOL  := TRUE;	
  T17_18 : BOOL  := TRUE;	
  T18_19 : BOOL  := TRUE;	
  T19_20 : BOOL  := TRUE;	
  T20_21 : BOOL  := TRUE;	
  T21_22 : BOOL  := TRUE;	
  T22_23 : BOOL  := TRUE;	
  T23_24 : BOOL  := TRUE;	
  T24_25 : BOOL  := TRUE;	
  T25_26 : BOOL  := TRUE;	
  T26_27 : BOOL  := TRUE;	
  T27_28 : BOOL  := TRUE;	
  T28_29 : BOOL  := TRUE;	
  T29_30 : BOOL  := TRUE;	
  T30_31 : BOOL  := TRUE;	
  T31_32 : BOOL  := TRUE;	
  T32_1 : BOOL  := TRUE;	
  RESET : BOOL ;	
  WEITER_MB : BOOL ;	
  WEITER_OB : BOOL ;	
END_VAR
VAR_OUTPUT
  SCHRITT_NR : INT ;	
END_VAR
VAR
  SM : INT ;	//Schrittmerker
END_VAR
BEGIN
NETWORK
TITLE =

      U     #RESET; // Kein Reset?
      SPBN  krst; // Sprung zu Bedingungsprüfung

      L     0; // Schrittmerker rücksetzen
      T     #SM; 
      SPA   ende; 

krst: U     #WEITER_OB; // Weiter ohne Bedingung?
      SPB   weit; // Sprung zu "weiter"

      U     #WEITER_MB; // Nicht weiter mit Bedingung?
      SPBN  ende; // Sprung zum Ende

      L     #SM; 
      L     1; 
      SLD   ; // accu2 = (1 << #SM)
      L     DID    0; // Transitionen in accu1 laden
      TAD   ; // Transitionen Bytereihenfolge tauschen
      UD    ; // Transitionen mit (1 << #SM) maskieren
      SPZ   ende; // Akt. Transition nicht aktiv? -> Ende

weit: L     #SM; // Schrittmerker inkrementieren
      INC   1; 
      UD    DW#16#1F; 
      T     #SM; 

ende: L     #SM; // Schrittnummer ausgeben
      INC   1; 
      T     #SCHRITT_NR; 

END_FUNCTION_BLOCK


DATA_BLOCK DB 1
	FB 1
BEGIN
END_DATA_BLOCK


ORGANIZATION_BLOCK OB 1
	VAR_TEMP
		OB1_EV_CLASS   : BYTE;          // Bits 0-3 = 1 (Coming event), Bits 4-7 = 1 (Event class 1)
		OB1_SCAN_1     : BYTE;          // 1 (Cold restart scan 1 of OB 1), 3 (Scan 2-n of OB 1)
		OB1_PRIORITY   : BYTE;          // Priority of OB execution
		OB1_OB_NUMBR   : BYTE;          // 1 (Organization block 1, OB 1)
		OB1_RESERVED_1 : BYTE;
		OB1_RESERVED_2 : BYTE;
		OB1_PREV_CYCLE : INT;           // Cycle time of previous OB 1 scan (milliseconds)
		OB1_MIN_CYCLE  : INT;           // Minimum cycle time of OB 1 (milliseconds)
		OB1_MAX_CYCLE  : INT;           // Maximum cycle time of OB 1 (milliseconds)
		OB1_DATE_TIME  : DATE_AND_TIME; // Date and time OB 1 started
	END_VAR
BEGIN
	CALL FB 1, DB 1 (
		T1_2		:= E 0.0,
		T2_3		:= E 0.1,
		T3_4		:= E 0.2,
		T4_5		:= E 0.3,
		T5_6		:= E 0.4,
		T6_7		:= E 0.5,
		T7_8		:= E 0.6,
		T8_9		:= E 0.7,
		T9_10		:= E 1.0,
		T10_11		:= E 1.1,
		T11_12		:= E 1.2,
		T12_13		:= E 1.3,
		T13_14		:= E 1.4,
		T14_15		:= E 1.5,
		T15_16		:= E 1.6,
		T16_17		:= E 1.7,
		T17_18		:= E 2.0,
		T18_19		:= E 2.1,
		T19_20		:= E 2.2,
		T20_21		:= E 2.3,
		T21_22		:= E 2.4,
		T22_23		:= E 2.5,
		T23_24		:= E 2.6,
		T24_25		:= E 2.7,
		T25_26		:= E 3.0,
		T26_27		:= E 3.1,
		T27_28		:= E 3.2,
		T28_29		:= E 3.3,
		T29_30		:= E 3.4,
		T30_31		:= E 3.5,
		T31_32		:= E 3.6,
		T32_1		:= E 3.7,
		RESET		:= E 4.0,
		WEITER_MB	:= E 4.1,
		WEITER_OB	:= E 4.2,
		SCHRITT_NR	:= AW 0,
	)
END_ORGANIZATION_BLOCK
bues.ch cgit interface