DP/DP-Koppler - per DPRD_DAT / DPWR_DAT in/aus DB Daten

nekron

Level-2
Beiträge
332
Reaktionspunkte
30
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin moin,

ich hab mal wieder ein ganz dolles Problem ...

normalerweise verwenden wir DP/DP-Koppler nur um ein paar bit hin und her zu schubsen, nein - normalerweise habe ich keine Probleme mittels dprd/wr-dat mit einem Profibus-Teilnehmer zu kommunizieren, aber irgendwie mag das mit dem Koppler nicht ...

gegeben ist ein DB, der von einem UDT erstellt wurde. in dem gibt es einen 4 Byte-Bereich in die eine, einen 44 Byte-Bereich in die andere Richtung. die Beiden DP's laufen ohne Fehler, ich kann auch im Direktzugriff Daten hin und her schicken.

nun ging es aber daran das ganze in einen DB zu jagen ...

CALL "DPRD_DAT"
LADDR :=W#16#100
RET_VAL:=#dprd_ret
RECORD :="IO_Interface".INPUT_DATA <-- Zugriffsbreite 4 Byte

im DP-Koppler steckt ein Modul 147 - 4 Byte Eingang (konsistent) EB256..259!

wenn ich irgendwo das PED256 lade sehe ich auch den durch den 2ten Master vorgegebenen Wert, jedoch bekomme ich als dprd_ret immer:

8090 · Für die angegebene logische Basisadresse haben sie keine Baugruppe projektiert, oder
· Sie haben die Einschränkung über die Länge der konsistenten Daten nicht beachtet, oder
· Sie haben die Anfangsadresse im Parameter LADDR nicht hexadezimal angegeben.

Das gleiche ist bei einem dpwr_dat, sowohl auf einem Panel-PC mit WinAC-Rtx als auch auf meiner Schreibtisch 315er CPU ...

bin ich blöd oder ist das der Feierabend-stress ?

danke
nekron
 
· Sie haben die Einschränkung über die Länge der konsistenten Daten nicht beachtet
Wahrscheinlich solltest du da ansetzen...
Jeder EA-Punkt des Koppler kann mit unterschiedlichen Konsistenzeinstellungen versehen werde, z.B. Byte oder gesamte Länge
Bei SFC14/15 ist "gesamte Länge" absolut notwendig.

Mfg
Manuel
 
Hi & Danke ...

ich habe den E-Bereich auf 8 Erweitert und das ganze ging sofort ohne Fehler weiter ... :)

nun muss ich aber den UDT auch noch aufdröseln, in ein voll Konsistentes Universalmodul kann man ja nur 32byte stecken ... mit 44 geht das nicht und mit mehreren Modulen kann ich ja nicht mehr mit einem Rutsch via dprd_dat lesen, somit müsste ich mit p#db200.dbx8.0 byte 16 ... arbeiten, wem das gefällt :)

son' scheiss :) über den Sinn oder Unsinn dieser 3 oder mehr als 4-Regelung darf man glaub ich nicht nachdenken :)

gruss,
nekron
 
son' scheiss :) über den Sinn oder Unsinn dieser 3 oder mehr als 4-Regelung darf man glaub ich nicht nachdenken :)
Das macht insofern Sinn, weil es schlicht nicht nötig ist, für 1, 2 oder 4 Byte die SFC14/15 zu benutzen. Auf Byte, Word und DWord kann ja direkt zugegriffen werden mit "L PEx" und "T PAx".

Am einfachsten wäre es für Dich, wenn Du den DP/DP-Koppler in das Prozessabbild Deiner CPU legst, dann kannst Du den gesamten Bereich auf einen Rutsch mit SFC20 in/aus Deinen DB kopieren.

Hier ging es auch um DP/DP-Koppler und SFC14/15.

Harald
 
Zurück
Oben