Aber ganz habe ich es noch nicht verstanden, warum ich nicht mit "PEW20" zugreifen kann? Was müsste ich ändern damit das geht bzw. kann ich auch mit "EW20" usw.... arbeiten?
Guten Morgen Martin,
das kann man nicht so ändern, daß man mit PEW... zugreifen kann. Du mußt mit EW... zugreifen.
Mit PEW... kann man nur auf E-Adressen von Baugruppen zugreifen, die dem EA-Adressbereich der CPU zugeordnet sind - siehe Adressübersicht in HW Konfig. Peripherieadressen PEx... kann man nur lesen.
Mit EW... greift man auf einen Speicherbereich im Arbeitsspeicher der CPU zu, der "Speicherbereich der Eingänge" genannt wird und das "Prozessabbild der Eingänge (PAE)" enthält. Das ist ein Speicherbereich genau wie der Bereich der Merker, nur werden da vom Betriebssystem vor Aufruf des OB1 freundlicherweise die Eingangsdaten (PEx..) der vorhandenen Baugruppen hineinkopiert. In den E-Adresslücken (wo keine Baugruppen projektiert sind) gibt es kein Prozessabbild. Da wird nichts in den Speicherbereich der Eingänge kopiert - man kann diese Adressen wie zusätzliche Merker benutzen.
Den "Speicherbereich der Eingänge" kann man lesen und schreiben. Man kann auch irgendwelche Daten (z.B. die einem CP zugeordneten EA-Adressen oder Empfangspuffer von Kommunikationsfunktionen oder ...) in den Speicherbereich der Eingänge kopieren (z.B. mit PNIO_RECV oder DP_RECV) und danach daraus lesen. Wenn man das tut, dann wählt man sinnvollerweise Adressbereiche, welche nicht vom PAE belegt sind.
Der "Speicherbereich der Ausgänge" ist ein Speicherbereich genau wie der Bereich der Eingänge und der Bereich der Merker, nur daß er das "Prozessabbild der Ausgänge (PAA)" enthält (an den Stellen, wo A-Baugruppenadressen projektiert sind), von dem nach Ende des OB1 von der Firmware die Zustände in die Ausgabe-Peripherie PAx... kopiert werden und beim STOP/RUN-Übergang werden die Werte im PAA mit 0 initialisiert.
Harald