OP
SalvatoreDC
Level-2
- Beiträge
- 7
- Reaktionspunkte
- 0
Um das Ganze nochmal zu formulieren, da ich den Code in Zukunft anpassen soll, (z.b mehr oder weniger Schieber) dachte mir ein Code zu realisieren die in Zukunft ganz einfach erweitern oder reduzieren kann.
Zum Beispiel hier ein Pseudo-Code was ich damit meine:
Damit könnte ich alles in ein Netzwerk implementieren und in Zukunft einfach die Nummer von Schieber ändern anstatt ein Netzwerk pro Schieber jedes mal.
Ist das möglich? Danke an alle
Zum Beispiel hier ein Pseudo-Code was ich damit meine:
C++:
// Deklarationen
// ARRAY [1..14] OF BYTE (oder ARRAY [1..14] OF BOOL bei Verwendung einzelner Bits)
#IB_Schieber // Eingänge (ein Byte pro Schieber oder Array von BOOL)
// ARRAY [1..8] OF WORD (8 WORD, um 14 Schieber abzudecken, wir verwenden nur einen Teil einiger WORD)
#0_Schieber // Ausgänge/Zustand (WORD pro Schieber)
// ARRAY [1..16] OF WORD (Masken für SET)
#Maschere_Set
// Initialisierung der Masken (einmalig, z.B. in OB100)
#Maschere_Set[1] := W#16#0001; // Bit 0
#Maschere_Set[2] := W#16#0002; // Bit 1
#Maschere_Set[3] := W#16#0004; // Bit 2
#Maschere_Set[4] := W#16#0008; // Bit 3
#Maschere_Set[5] := W#16#0010; // Bit 4
#Maschere_Set[6] := W#16#0020; // Bit 5
#Maschere_Set[7] := W#16#0040; // Bit 6
#Maschere_Set[8] := W#16#0080; // Bit 7
#Maschere_Set[9] := W#16#0100; // Bit 8
#Maschere_Set[10] := W#16#0200; // Bit 9
#Maschere_Set[11] := W#16#0400; // Bit 10
#Maschere_Set[12] := W#16#0800; // Bit 11
#Maschere_Set[13] := W#16#1000; // Bit 12
#Maschere_Set[14] := W#16#2000; // Bit 13
#Maschere_Set[15] := W#16#4000; // Bit 14
#Maschere_Set[16] := W#16#8000; // Bit 15
#T_FRG_Ventile // Wenn es ein globales Signal ist
// Beginn des Netzwerks (in einen zyklischen OB, z.B. OB1)
FOR #i := 1 TO 14 DO
A #I_Schieber[#i] // Lese den entsprechenden Eingang
A #T_FRG_Ventile // Zusätzliche Bedingung (falls erforderlich)
JCN sb[#i]
L #IB_Schieber[#i] // Lade den Eingang
L BYTE#16#01 // Maske zum Überprüfen des Bits 0 des Eingangs (passe an, wenn nötig)
AW
JZ sb[#i]
// SET-Teil (Verwende OR auf WORD)
L #0_Schieber[#i]
L #Maschere_Set[#i]
OW
T #0_Schieber[#i]
JU se[#i]
sb[#i]:
// RESET-Teil (Verwende AND mit NOT auf WORD)
L #0_Schieber[#i]
L #Maschere_Set[#i]
NOT // Komplementiere die Maske
AW
T #0_Schieber[#i]
se[#i]:
NOP 0
END_FOR
Damit könnte ich alles in ein Netzwerk implementieren und in Zukunft einfach die Nummer von Schieber ändern anstatt ein Netzwerk pro Schieber jedes mal.
Ist das möglich? Danke an alle