TIA S7-Verbindung GET/PUT, GET=OK, PUT=NICHTS?

hucki78

Level-2
Beiträge
21
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Leute,

ich hoffe es hat jmd eine Lösung.

S7 Com von 315 PN/DP zu 1515-2PN.

GET funktioniert
PUT passiert nichts,

Get/Put ist auf der 1515 aktiviert.
S7-Verbindung grün

Req-Flanken hab ich probeweise über Merker händisch gesteuert.

ID, Pointer alles das selbe

Kein Error

Danke an euch
 
Wie sieht denn der Aufruf von PUT aus?
Kannst du mal einen Screenshot senden?

Auf welcher der CPU´s arbeitet PUT / GET?

Warum nutzt du PUT / GET? ( Nachteile im Vergleich zu anderen Möglichkeiten, Inkonsistenz.... )
 
Hallo Leute,
Danke für die schnellen Antworten.
anbei der screenshot.

Ja ich weiss Get/Put ist quick and dirty.

wenns nicht geht muss ich halt umstricken alles.

sind einige bytes die hin und her müssen

eigentlich will ich dort nur Putten, also bitte nicht meckern. der GET ist nur zum testen
 

Anhänge

  • 1.jpg
    1.jpg
    415,1 KB · Aufrufe: 74
Zuviel Werbung?
-> Hier kostenlos registrieren
Was mir etwas schleierhaft ist, du sendest mittels PUT DB1.DBX0.0 BYTE2 auf die 1500ér DB35.DBX0.0 BYTE 2
und darunter holst du den gleichen Datenbereich wieder zurück und schreibst ihn auf den ursprünglichen Quellbereich
der 300ér?

Den Sinn verstehe ich nicht ganz.
 
Was mir etwas schleierhaft ist, du sendest mittels PUT DB1.DBX0.0 BYTE2 auf die 1500ér DB35.DBX0.0 BYTE 2
und darunter holst du den gleichen Datenbereich wieder zurück und schreibst ihn auf den ursprünglichen Quellbereich
der 300ér?

Den Sinn verstehe ich nicht ganz.
Macht auch keinen, soll es auch nicht.
Get ist nur zum test ob überhaupt irgendwas geht. Das fliegt wieder raus.
Darum auch ohne Symbolik.

Gibt es denn eine andere Möglichkeit, einseitig projektiert, um Daten zu Senden?

Ich glaube alle anderen DP_Send, BSend usw müssen beidseitig sein, oder?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich schreibe anstelle von Byte immer Char. Irgendwo steht in der Hilfe, dass man wenn man Strukturen verwendet (machst du zwar nicht), dass man im Pointer Char verwenden muss. Kann in deinem Fall auch nicht schaden es mal zu versuchen.
 
Ich schreibe anstelle von Byte immer Char. Irgendwo steht in der Hilfe, dass man wenn man Strukturen verwendet (machst du zwar nicht), dass man im Pointer Char verwenden muss. Kann in deinem Fall auch nicht schaden es mal zu versuchen.
Bzw versuche mal WORD 1 ( P#DB1.DBX0.0 WORD 1 ).
Ich hatte auch schon das Problem dass es mit BYTE 4 nicht ging, mit WORD 2 dann aber schon.
 
WORD 1 hab ich probiert, geht auch nicht.
Das seltsame ist das er weder Done, noch Error noch einen Fehlercode bringt.
Die DB´s sind alle nichtoptimiert.
Von der 1515 lesen geht von der 315. Wenn alle Stricke reissen muss ichs halt so machen.
Wenn Siemens nicht den MPI bei der 1500er hätte fallen gelassen, könnte ich mir den ganzen Scheiss sparen
 
Wenn Siemens nicht den MPI bei der 1500er hätte fallen gelassen, könnte ich mir den ganzen Scheiss sparen
MPI gibt es bei den 1500érn natürlich schon noch. Nur bei deiner nicht :) ( ab 1516 ).

könnte ich mir den ganzen Scheiss sparen
Naja, ich würde eher sagen es ist Zeit umzudenken. Es gibt doch bessere Möglichkeiten.
Alleine schon wegen den Konsistenzproblemen würde ich die Finger weg lassen...
 
Zuletzt bearbeitet:
MPI gibt es bei den 1500érn natürlich schon noch. Nur bei deiner nicht :) ( ab 1516 ).


Naja, ich würde eher sagen es ist Zeit umzudenken. Es gibt doch bessere Möglichkeiten.
Alleine schon wegen den Konsistenzproblemen würde ich die Finger weg lassen...
Stimm ich dir zu, muss es leider so machen, da eine selbstgebastelte Visualisierung auf einem PC die Anlage steuert.
Den CP5611 im Rechner kann ich sogar auf Profibus umschalten, aber die Visu möchte die 1500er nicht erkennen. Nur 300er und 400er CPU´s
Das ist alles Horn-alt.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Noch nicht beantwortet.
Wenn ein PUT oder GET gestartet ist, aber noch nicht abgeschlossen, sollte man es sehen mit STATUS = 25 "Communication has started. The job is being processed".
Eventuell abfangen, etwa wie:
IF NOT (STATUS = 0) THEN STATUS_mem := STATUS ; END_IF ;
Oder besser:
IF ERROR AND (STATUS <> 0) THEN
STATUS_mem := STATUS ;
END_IF ;

STATUS = 25 "Communication has started
Bzw. 19 ( Hex )
 
Ich möchte lieber einfach immer die STATUS Wert speichern, egal ob ein ERROR vorliegt.
Dann sieht man nähmlich ob die PUT oder GET gar gestartet ist. Hängt ab was man will mit die STATUS Wert.
 
Noch nicht beantwortet.
Wenn ein PUT oder GET gestartet ist, aber noch nicht abgeschlossen, sollte man es sehen mit STATUS = 25 "Communication has started. The job is being processed".
Eventuell abfangen, etwa wie:
IF NOT (STATUS = 0) THEN STATUS_mem := STATUS ; END_IF ;
Auf deinen Tip hin habe ich den Status jetzt abgefangen, so wie Mike vorgeschlagen hat.

16#0004
=Fehler in den Sendebreichszeigern SD_i bezüglich der Datenlänge oder des Datentyps

Datenlänge = 1 Word
Datentyp = 1 Word

was will er denn von mir?

Klasse natürlich das er den Status 1 Zyklus lang anzeigt und dann wieder überschreibt. macht das alles viel leichter :mad:
 
Zurück
Oben