Draco Malfoy
Level-1
- Beiträge
- 1.168
- Reaktionspunkte
- 82
-> Hier kostenlos registrieren
Hallo Forum!
Plage mich derzeit mit folgender Fragestellung. Es wurde zwar in dem anderen Thema kurz angerissen, aber ich machs mal hier ganz konkret:
Es wird ein Projekt von Classic nach TIA v13 mit 1500er migriert. In zwei Steps, also erst mal überhaupt TIA und dann die 1500er. Im Projekt werden SFB 53/54 RDREC und WRREC aktiv gebraucht.
Jetzt habe ich folgendes Problem:
- In der Classic-Welt wird lediglich eine INT-Zahl als E/A Adresse im Peripeherie-Bereich (oder auch Prozessabbild, is aber egal) angegeben, und, vorausgesetzt E=A dann kann man hier lustig mit verschiedenen Offsets rumspielen und weiß der Geier noch was machen.
- In der 1500er gibt es das alles nicht mehr, sondern jetzt gibt es nur eine Hardware-Kennung, die automatisch vergeben und fest eingetragen wird, und dazu einen zugehörigen Datentyp HW_IO. Ich kann da also nicht einfach so offsettiert auf meine Peripherie-Bereiche zugreifen und da irgendwelche Daten rausholen.
Jetzt wurde in dem Classic-Projekt aber ne Menge mit Offsets gemacht, das sah dann folgendermaßen aus (ausgelagert in nen separaten Baustein):
Dieser #Inputs Parameter wurde an den RDREC weitergereicht, der dann auf den Peripherie-Adressbereich mit einem kanalabhängigen Offset zugreifen konnte.
Wenn ich es richtig sehe, kann ich diese Funktionalität jetzt aber komplett knicken oder ?? Ich müsste jetzt quasi alle Daten in einen DB mit entsprechender Struktur schreiben, um dort das rauszuholen, was ich brauche, oder ?
Plage mich derzeit mit folgender Fragestellung. Es wurde zwar in dem anderen Thema kurz angerissen, aber ich machs mal hier ganz konkret:
Es wird ein Projekt von Classic nach TIA v13 mit 1500er migriert. In zwei Steps, also erst mal überhaupt TIA und dann die 1500er. Im Projekt werden SFB 53/54 RDREC und WRREC aktiv gebraucht.
Jetzt habe ich folgendes Problem:
- In der Classic-Welt wird lediglich eine INT-Zahl als E/A Adresse im Peripeherie-Bereich (oder auch Prozessabbild, is aber egal) angegeben, und, vorausgesetzt E=A dann kann man hier lustig mit verschiedenen Offsets rumspielen und weiß der Geier noch was machen.
- In der 1500er gibt es das alles nicht mehr, sondern jetzt gibt es nur eine Hardware-Kennung, die automatisch vergeben und fest eingetragen wird, und dazu einen zugehörigen Datentyp HW_IO. Ich kann da also nicht einfach so offsettiert auf meine Peripherie-Bereiche zugreifen und da irgendwelche Daten rausholen.
Jetzt wurde in dem Classic-Projekt aber ne Menge mit Offsets gemacht, das sah dann folgendermaßen aus (ausgelagert in nen separaten Baustein):
Code:
(* berechnet die LOG. Adresse, um auf den jeweiligen Kanal zuzugreifen.
* berechnet aus Slot- und Indexinformation die jeweile Adresse des Statuswortes
*)
#ADRESS:= WORD_TO_INT(DWORD_TO_WORD(#ID)) + #OFFSET;
(* direkter Zugriff auf indizierten Adressbereich *)
#INPUTS:= %EW(#ADRESS);
(* Errorhandling *)
#ERROR:= FALSE;
#STATUS:=16#0;
Wenn ich es richtig sehe, kann ich diese Funktionalität jetzt aber komplett knicken oder ?? Ich müsste jetzt quasi alle Daten in einen DB mit entsprechender Struktur schreiben, um dort das rauszuholen, was ich brauche, oder ?
Zuletzt bearbeitet: