- Beiträge
- 6.324
- Reaktionspunkte
- 2.341
-> Hier kostenlos registrieren
Folgeder Code ist aus einem Baustein von Siemens zum ansteuern eines Micromaster über Profibus (FB63)
PKW ist eine Stuktur im Stat Bereich und enthält die Struktur EMPFANGEN welche zwei INT und einen DINT enthält.
Das läuft problemlos.
In meinem Projekt habe ich auch eine dezentralen Antrieb am Profibus mit dem ich 8 Byte austausche. Folgender Code ist im FB64, der den DB64 als IDB hat.
"Steuerwort" ist eine Struktur im Stat. Bereich des FB64 mit 8 Bytes.
Wenn ich es so mache, dann geht es nicht - Fehlermeldung "Bereichslängenfehler beim lesen(schreiben)"
Mache ich es aber so:
dann geht es! Ich mache nur den DB davor.
Wieso geht das bei mir ohne den DB nicht (den will ich nicht - wegen Instanz FB), aber beim obigen BEispiel vom FB63 von Siemens gehts?
Code:
CALL "DPRD_DAT" // PKW einlesen
LADDR :=#P_Adresse
RET_VAL:=#Intern.Fehler_DP_SFC14_15
RECORD :=#PKW.EMPFANGEN
PKW ist eine Stuktur im Stat Bereich und enthält die Struktur EMPFANGEN welche zwei INT und einen DINT enthält.
Das läuft problemlos.
In meinem Projekt habe ich auch eine dezentralen Antrieb am Profibus mit dem ich 8 Byte austausche. Folgender Code ist im FB64, der den DB64 als IDB hat.
Code:
CALL "DPWR_DAT"
LADDR :=#SteuerStatus_start_Addr
RECORD :=#Steuerwort
RET_VAL:=#retval
"Steuerwort" ist eine Struktur im Stat. Bereich des FB64 mit 8 Bytes.
Wenn ich es so mache, dann geht es nicht - Fehlermeldung "Bereichslängenfehler beim lesen(schreiben)"
Mache ich es aber so:
Code:
CALL "DPWR_DAT"
LADDR :=#SteuerStatus_start_Addr
RECORD :="IDB_Servoregler".Steuerwort
RET_VAL:=#retval
dann geht es! Ich mache nur den DB davor.
Wieso geht das bei mir ohne den DB nicht (den will ich nicht - wegen Instanz FB), aber beim obigen BEispiel vom FB63 von Siemens gehts?