SCL und bedingte Kompilierung?

Muphin

Level-1
Beiträge
51
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo ihr!

Ich möchte in einem SPS Programm wählen können ob die Eingangs und Ausgangswörter von der Bytereihenfolge her getauscht werden sollen oder nicht. In C würde ich das ganz einfach über ein "define" und bedingte Kompilierung realisieren, aber für SCL kann ich da nichts entsprechendes finden. Kennt ihr da was?
Also das ich einmal den oberen Teil des Codes auf das PG laden kann und das andere mal den unteren Teil?
Code:
    //normale Bytereihenfolge
    OutputWord := tempWord;
 
    //getauschte Bytereihenfolge
    byteArray[1] := tempWordAlsByteArray[2];
    byteArray[2] := tempWordAlsByteArray[1];
    OutputWord := byteArrayAlsWord;

Ich hoffe die Fragestellung ist so ausreichend verständlich formuliert und ihr könnt mir auch noch weiterhelfen :)

grüße
 
Hallo ihr!

Ich möchte in einem SPS Programm wählen können ob die Eingangs und Ausgangswörter von der Bytereihenfolge her getauscht werden sollen oder nicht. In C würde ich das ganz einfach über ein "define" und bedingte Kompilierung realisieren, aber für SCL kann ich da nichts entsprechendes finden. Kennt ihr da was?
Also das ich einmal den oberen Teil des Codes auf das PG laden kann und das andere mal den unteren Teil?
Code:
    //normale Bytereihenfolge
    OutputWord := tempWord;
 
    //getauschte Bytereihenfolge
    byteArray[1] := tempWordAlsByteArray[2];
    byteArray[2] := tempWordAlsByteArray[1];
    OutputWord := byteArrayAlsWord;

Ich hoffe die Fragestellung ist so ausreichend verständlich formuliert und ihr könnt mir auch noch weiterhelfen :)

grüße

Nein, davon hab ich noch nicht gehört im Zusammenhang mit SCL, aber du kannst ja trotzdem eine Variable definieren, deren Wert dann über eine if- oder case-Anweisung den entsprechenden Code "scharfschaltet". Nachteil gegenüber define ist ja nur, daß der ganze Code im Compilat auftaucht, also auch der Teil, der gerade nicht benötigt wird.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
du legst dir auf dein Eingangs-DWORD eine AT-Sicht als ARRAY_of_Byte.
Genauso auf dein Ausgangs-DWORD. Nun kannst du die Umsortierung wahlfrei durchführen - also etwa so :
Code:
VAR_IN
my_Eingang : DWORD ;
arr_Eingang AT my_Eingang : array[0..3] of Byte ;
end_Var 
 
VAR_OUT
my_Ausang : DWORD ;
arr_Ausgang AT my_Ausgang : array[0..3] of Byte ;
end_Var 
 
und dann im Code :
 
arr_Ausgang[3] := arr_Eingang[0] ;
 
... oder so - spiel mal damit rum ...
Gruß
Larry
 
...du kannst ja trotzdem eine Variable definieren, deren Wert dann über eine if- oder case-Anweisung den entsprechenden Code "scharfschaltet". Nachteil gegenüber define ist ja nur, daß der ganze Code im Compilat auftaucht, also auch der Teil, der gerade nicht benötigt wird.
Daran hatte ich auch schon gedacht! Das ganze belegt allerdings auch unnötig Speicherplatz, scheint mir bisher allerdings leider die einzigste alternative zu sein!

@Larry:
Auch eine Idee, so geht mir allerdings der Grundgedanke, nach außehin immer dieselben Words zu haben verloren. Sondern ich muss bei der weiterverwendung darauf achten wie ich auf die Variablen zugreife.

Gibt es sonst noch ideen?

Grüße
 
Zurück
Oben