zur Inspiration...
Mein Beispiel, wie ich die Orgeleinstellungen in der Orgel löste und sie für die automatische Einrichtung vom Speicher auf die Ausgänge zurückrief:
(*declarationnnn...*)
TYPE OrgRgMEM :
STRUCT
OrgRgMEM: ARRAY [0..11] OF BYTE; (*Speichergröße für 90 Bit Digitaleingänge*)
END_STRUCT
END_TYPE
VAR
Crescendo : INT; (*0..30 Speicherzeiger für OrgRgCrA30MEM*)
ArrDI_OrgRgstr : ARRAY [0..89] OF BOOL; (*array of digital inputs*)
OrgRgCrA30MEM : ARRAY [0..30] OF OrgRgMEM; (*Speicher für 31 Varianten*)
ArrRegCresA : ARRAY [0..89] OF BOOL; (*array zum Schreiben auf digitale Ausgänge*)
END_VAR
(*programmm...*)
(*pack*)
FOR i:=0 TO 11 BY 1 DO
FOR j:=0 TO 7 BY 1 DO
CASE j OF
0: OrgRgCrA30MEM[Crescendo].OrgRgMEM.0:=ArrDI_OrgRgstr[(i*8 )+j];
1: OrgRgCrA30MEM[Crescendo].OrgRgMEM.1:=ArrDI_OrgRgstr[(i*8 )+j];
2: OrgRgCrA30MEM[Crescendo].OrgRgMEM.2:=ArrDI_OrgRgstr[(i*8 )+j];
3: OrgRgCrA30MEM[Crescendo].OrgRgMEM.3:=ArrDI_OrgRgstr[(i*8 )+j];
4: OrgRgCrA30MEM[Crescendo].OrgRgMEM.4:=ArrDI_OrgRgstr[(i*8 )+j];
5: OrgRgCrA30MEM[Crescendo].OrgRgMEM.5:=ArrDI_OrgRgstr[(i*8 )+j];
6: OrgRgCrA30MEM[Crescendo].OrgRgMEM.6:=ArrDI_OrgRgstr[(i*8 )+j];
7: OrgRgCrA30MEM[Crescendo].OrgRgMEM.7:=ArrDI_OrgRgstr[(i*8 )+j];
END_CASE
END_FOR
END_FOR
(*end pack*)
(*unpack*)
FOR i:=0 TO 11 BY 1 DO
FOR j:=0 TO 7 BY 1 DO
CASE j OF
0: ArrRegCresA[(i*8 )+j]:=OrgRgCrA30MEM[Crescendo].OrgRgMEM.0;
1: ArrRegCresA[(i*8 )+j]:=OrgRgCrA30MEM[Crescendo].OrgRgMEM.1;
2: ArrRegCresA[(i*8 )+j]:=OrgRgCrA30MEM[Crescendo].OrgRgMEM.2;
3: ArrRegCresA[(i*8 )+j]:=OrgRgCrA30MEM[Crescendo].OrgRgMEM.3;
4: ArrRegCresA[(i*8 )+j]:=OrgRgCrA30MEM[Crescendo].OrgRgMEM.4;
5: ArrRegCresA[(i*8 )+j]:=OrgRgCrA30MEM[Crescendo].OrgRgMEM.5;
6: ArrRegCresA[(i*8 )+j]:=OrgRgCrA30MEM[Crescendo].OrgRgMEM.6;
7: ArrRegCresA[(i*8 )+j]:=OrgRgCrA30MEM[Crescendo].OrgRgMEM.7;
END_CASE
END_FOR
END_FOR
(*end unpack*)
Mein Beispiel, wie ich die Orgeleinstellungen in der Orgel löste und sie für die automatische Einrichtung vom Speicher auf die Ausgänge zurückrief:
(*declarationnnn...*)
TYPE OrgRgMEM :
STRUCT
OrgRgMEM: ARRAY [0..11] OF BYTE; (*Speichergröße für 90 Bit Digitaleingänge*)
END_STRUCT
END_TYPE
VAR
Crescendo : INT; (*0..30 Speicherzeiger für OrgRgCrA30MEM*)
ArrDI_OrgRgstr : ARRAY [0..89] OF BOOL; (*array of digital inputs*)
OrgRgCrA30MEM : ARRAY [0..30] OF OrgRgMEM; (*Speicher für 31 Varianten*)
ArrRegCresA : ARRAY [0..89] OF BOOL; (*array zum Schreiben auf digitale Ausgänge*)
END_VAR
(*programmm...*)
(*pack*)
FOR i:=0 TO 11 BY 1 DO
FOR j:=0 TO 7 BY 1 DO
CASE j OF
0: OrgRgCrA30MEM[Crescendo].OrgRgMEM.0:=ArrDI_OrgRgstr[(i*8 )+j];
1: OrgRgCrA30MEM[Crescendo].OrgRgMEM.1:=ArrDI_OrgRgstr[(i*8 )+j];
2: OrgRgCrA30MEM[Crescendo].OrgRgMEM.2:=ArrDI_OrgRgstr[(i*8 )+j];
3: OrgRgCrA30MEM[Crescendo].OrgRgMEM.3:=ArrDI_OrgRgstr[(i*8 )+j];
4: OrgRgCrA30MEM[Crescendo].OrgRgMEM.4:=ArrDI_OrgRgstr[(i*8 )+j];
5: OrgRgCrA30MEM[Crescendo].OrgRgMEM.5:=ArrDI_OrgRgstr[(i*8 )+j];
6: OrgRgCrA30MEM[Crescendo].OrgRgMEM.6:=ArrDI_OrgRgstr[(i*8 )+j];
7: OrgRgCrA30MEM[Crescendo].OrgRgMEM.7:=ArrDI_OrgRgstr[(i*8 )+j];
END_CASE
END_FOR
END_FOR
(*end pack*)
(*unpack*)
FOR i:=0 TO 11 BY 1 DO
FOR j:=0 TO 7 BY 1 DO
CASE j OF
0: ArrRegCresA[(i*8 )+j]:=OrgRgCrA30MEM[Crescendo].OrgRgMEM.0;
1: ArrRegCresA[(i*8 )+j]:=OrgRgCrA30MEM[Crescendo].OrgRgMEM.1;
2: ArrRegCresA[(i*8 )+j]:=OrgRgCrA30MEM[Crescendo].OrgRgMEM.2;
3: ArrRegCresA[(i*8 )+j]:=OrgRgCrA30MEM[Crescendo].OrgRgMEM.3;
4: ArrRegCresA[(i*8 )+j]:=OrgRgCrA30MEM[Crescendo].OrgRgMEM.4;
5: ArrRegCresA[(i*8 )+j]:=OrgRgCrA30MEM[Crescendo].OrgRgMEM.5;
6: ArrRegCresA[(i*8 )+j]:=OrgRgCrA30MEM[Crescendo].OrgRgMEM.6;
7: ArrRegCresA[(i*8 )+j]:=OrgRgCrA30MEM[Crescendo].OrgRgMEM.7;
END_CASE
END_FOR
END_FOR
(*end unpack*)