SFB 15 "PUT" überträgt nur 16 byte

steinche

Level-2
Beiträge
112
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Zusammen,

ich stehe hier vor einem Rätzel. Wir übertragen via Profibus von einer 400er S7 Daten an verschiedene 300er. Zur Zeit werden an:
Station 3 16 Byte
Station 4 64 Byte
Station 5 10 Byte übertragen.

Jetzt brauch ich an der Station 3 allerdings 32 Byte aber die SFB15 bringt mir jetzt Fehler 4 "Fehler in den Sendebereichszeigern SD_i bezüglich der Datenlänge oder des Datentyps"
Der Fehler tritt auf, sobald ich mehr als 16 Byte übertragen möchte, 14, 15 und 16 Byte gehen, ab 17 ist Ende :-( Der DB in der Sende- und Empfangs-CPU sind groß genug.

Hat jemand einen Tipp für mich?!

Viele Grüße und ein schönes Wochenende
steinche
 
Schon mal einen Neustart an der 400er gemacht ?
Soweit ich weiß übernimmt die 400er manche Änderungen nur beim Erstaufruf des Bausteins.

Grüße von HaDi
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo HaDi,

habe ich eben versucht - hilft auch nichts.
Zumal Werte <= 16 Byte auch ohne Neustart übernommen werden :cry:
Ich kenne noch die Grenze von 240 Byte bei den Ethernet CPs aber selbst davon sind wir hier weit weg.

Viele Grüße und allen ein schönes Wochenende
steinche
 
Hast du das mal mit den anderen beiden Stationen versucht und, wenn ja, mit welchem Ergebnis?
Vielleicht kann man´s so etwas eingrenzen.

Grüße von HaDi
 
Hallo HaDi,

an Station übertragen wir schon 64 Byte. Wenn ich jetzt den gleiche Adressbereich von der Station 4 bei Station 3 eintrage bekomme ich auch die Fehlermeldung. Das ist auch so ein Punkt den ich nicht verstehe.
Laut Siemens bezieht sich das Problem auf den Quellbereich und dieser ist dann identisch schon sehr merkwürdig das Ganze.

Viele Grüße
steinche
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
du hast ja sehr wenig zu deiner Anwendung selbst geschrieben. Was mit hier so spontan in den Sinn kommt ist :
1.) - Der Datenübertragungsbereich beim Profibus wird ja auch von den Teilnehmern und den entsprechenden Einstellungen in der GSD-Datei bestimmt. Passt das denn überein ? Du müßtest m.E. ja die GSD-Einstellungen dann auch ändern und beim Teilnehmer auch dessen Konfiguration ...
2.) - Sind in deinem Speicher denn die Bereich auch so übergeben, wie du sie nutzen möchtest ? Hat der ANY-Pointer, den du übergibst auch die richtige Größe ?

Gruß
LL
 
ich würde mal die Instanz-DBs vom GET/PUT neu initialisieren.
-> Instanz-DB in Datensicht öffnen, "Bearbeiten/Datenbaustein initialisieren"

Bei der 400er muss man das immer nach Längenänderungen machen.

Das hat der HaDi wohl auch gemeint.
Aber da bringt der CPU Neustart nix.

Micha
 
Das hat der HaDi wohl auch gemeint.
Wenn ich ganz ehrlich bin hab ich das nicht gemeint, aber die Idee find ich gut, das sollte steinche mal probieren. ;)
Ich hab halt im Handbuch geblättert und da steht:
Hinweis zur S7-400:
Beim Erstaufruf wird durch die ANY-Pointer die für den Auftrag maximal übertragbare Nutzdatenmenge festgeschrieben; es wird nämlich im Arbeitsspeicher der CPU ein Kommunikationsdatenpuffer zur Konsistenzsicherung der Daten angelegt. Dieser belegt bis zu 480 Byte Arbeitsspeicher. Es wird empfohlen, den Erstaufruf dann im Neustart- (Warmstart-) oder Kaltstart-OB durchzuführen, wenn der Baustein mit dem SFB-Aufruf nicht im Betriebszustand RUN der CPU nachgeladen wird.
Bei Folgeaufrufen können Sie eine beliebige Anzahl von Daten versenden/empfangen, jedoch höchstens soviele wie beim Erstaufruf.
Demnach hätte es nach einem Neustart oder Kaltstart (nicht nach Wiederanlauf !) gehen müssen.
Ansonsten schließe ich mich Larry an und warte mal auf mehr Input.

Grüße von HaDi
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Larry Laffer, SPSKILLER und HaDi,

@LL
Deinem ersten Punkt kann ich nicht folgen, in wieweit die GSD Dateien darauf Einfluss haben. Die SPS Stationen sind alle Profibusmaster, da sie auch teilweise eigene Profibus-Slaves haben.
Die Speicherbereiche sind so angegeben wie auch die DBs sind. Der DB 225 ist 64 Byte groß und der zugehörige Pointer an der SFB heißt P#DB225.DBX0.0 BYTE 64

@SPSKILLER
Du scheinst den Volltreffer mit dem initialisieren des DBs gebracht zu haben.

@HaDi
Zu einen Kaltstart habe ich mich nicht getraut, da hier ein ganzes Großtanklager dran hängt :)

Für alle nochmal zusammenfassend:
Alle SFBs werden als Multiinstanz in einem FB (Profibuskommunikation) mit festen Adressbereichen aufgerufen. Die CPU habe ich auf STOP genommen, den Instanz-DB des Kommunikations-FBs initialisiert, FB und DB in die CPU gespielt, einen Neustart durchgeführt und ...... ES FUNKTIONIERT!!!

Vielen vielen Dank für die Unterstützung!
steinche
 
Zurück
Oben