Peripherie-Ausgang einlesen

Beckx-net

Level-1
Beiträge
132
Reaktionspunkte
18
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich übergebe einem FB eine A-Adresse, die innerhalb ODER außerhalb des PAA liegen kann. Nun möchte ich gern zwei Bytes (Word) von dieser Adresse auslesen und überprüfen um sicher zu gehen, welchen Wert die Ausgangsbytes aktuell haben.

Momentan sieht es so aus
Code:
L #OUT_ADR
SLD 3
L p#1.0
+d
T #ADDRESS

L AW [#ADDRESS]
...
Mit diesem Code ist es mir momentan möglich auf einer 315-2 PN/DP das Ausgangswort einzulesen, wenn es sich innerhalb oder außerhalb des PAA befindet. Bei einer 313-2 DP geht dies aber leider nur, wenn sich das Word innerhalb des PAA befindet, ansonsten gibt es einen Peripheriezugriffsfehler.

Gibt es einen "Allgemeingültigen" Befehl / oder eine Methodik, die ich anwenden kann um mit jeder 300er CPU ein Ausgangswort einzulesen, egal ob es sich in den PAA oder außerhalb befindet? (vielleicht mit dem SFC20?)

MFG
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Gibt es einen "Allgemeingültigen" Befehl / oder eine Methodik, die ich anwenden kann um mit jeder 300er CPU ein Ausgangswort einzulesen, egal ob es sich in den PAA oder außerhalb befindet? (vielleicht mit dem SFC20?)

Warum eine Ausgang lesen?
Der wird doch in der PLC beschrieben.
Wenn das AW brauchst, dann schreib es doch an der Stelle wo es geschrieben wird in ein MW oder DBW.

Mir ist nicht schlüssig, warum du einen Ausgang lesen musst.:confused:


bike
 
@Beckx
Ausgänge lesen ist sehr schlechter Stil und es gibt kaum ein Argument dafür. Mach es lieber so, wie bike geschrieben hat, das spart außerdem noch viel Arbeit, falls Du irgendwann einmal den Ausgang umverdrahten willst.
 
SFC51 SZL-ID W#16#xy14 Index W#16#0002: PAA (Anzahl in Byte)

damit die schleife begrenzen, so sind zwar nur die innerhalb des PAA abgebildet, aber das auf allen CPU-typen...

@bike,M-Ott: manchmal gibt es gründe. manchmal werden wir sie nie verstehen. mir bräuchte er mit einem derartigen programm auch nicht kommen, aber die frage ist nicht "darf ich das machen?" sondern "wie macht man sowas?" ...
 
SFC51 SZL-ID W#16#xy14 Index W#16#0002: PAA (Anzahl in Byte)

damit die schleife begrenzen, so sind zwar nur die innerhalb des PAA abgebildet, aber das auf allen CPU-typen...

@bike,M-Ott: manchmal gibt es gründe. manchmal werden wir sie nie verstehen. mir bräuchte er mit einem derartigen programm auch nicht kommen, aber die frage ist nicht "darf ich das machen?" sondern "wie macht man sowas?" ...

Er wollte doch inner- und außerhalb des PAA lesen? :confused:


bike

P.S:Vielleicht werde ich alt? :confused::confused::confused:

Doch wenn niemand etwas sagt, wird auch nichts anders, daher der Hinweis.
 
Er wollte doch inner- und außerhalb des PAA lesen? :confused:

ja, wollte er, kann er aber aus obengenannten gründen nicht also soll er doch wenigstens innerhalb des PAA lesen...
(ferner ist mir schleierhaft, wie er auf einer 315-2DP PAW lesen kann... das ist schlicht nicht möglich... auch SFC20 ist nicht möglich, da man keinen any auf PAXx.y bauen kann...)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
(ferner ist mir schleierhaft, wie er auf einer 315-2DP PAW lesen kann... das ist schlicht nicht möglich... auch SFC20 ist nicht möglich, da man keinen any auf PAXx.y bauen kann...)

Erstaunt mich auch.
Hat nicht die 315 ein größeres PAA alswie die 313? :confused:
Daher die verschiedenen Reaktionen der CPU?


bike
 
Servus,

die Idee war einfach einen Fehler zu erkennen, der ausgelöst werden kann, wenn an einer anderen Stelle als im FB das PEW / AW manipuliert wird.
Ansonsten benutze ich auch einen Speicherbereich, denn ich konsistent zum geschriebenen Wert im PEW / AW halte.

Hat mich halt nur interessiert, ob es möglich ist dies zu machen...

@Vierlagig
Komischerweise kann man bei meiner 315er den Befehl "L AWxx" benutzen, auch wenn der Bereich nicht im PAA liegt. Der gleiche Code geht auf der 313er nicht.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Komischerweise kann man bei meiner 315er den Befehl "L AWxx" benutzen, auch wenn der Bereich nicht im PAA liegt. Der gleiche Code geht auf der 313er nicht.

Hallo,

mit "L AWxx" greifst du auf das PAA zu.

Schau mal in deiner 315-Konfig nach, wie gross der PAA-Bereich angegeben ist.
Oberhalb dieses Bereiches dürfte es nicht mehr funzen.

Gruß Roland
 
Zurück
Oben