TIA OB30 und Put und Get Baustein Frage

DennisBerger

Level-2
Beiträge
437
Reaktionspunkte
61
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich habe eine Frage zum Put und Get.

Wir haben eine S7-1214C welche per Put und Get 8 bzw 12 Bytes an eine S7-300 sendet und empfängt.
(verbunden sind sie über eine CP343-1)
(Beide Bausteine sind abgelegt nur in der 1214 im dortigen OB1)

Der "Req" Eingang zum anstoßen der Bausteine wird über einen Merker 1.0 vom OB30 (40ms Taktung) in der 1214C gesetzt.

Die Zykluszeit der S7-300 ist im Mittel ca 20-25ms.

Leider scheinen da ab und zu (1-2x am Tag die Daten nicht korrekt übertragen zu werden, der enable (Bool) zum Starten einer Achse aus PUT geht verloren und muss neu gesetzt werden, damit die Achse startet (pos. Flanke)

Sollen die Put und Get Bausteine besser im OB30 abgelegt werden oder funktioniert dann die Übertragung nicht mehr?
Bzw sollte ich die Abarbeitung von Put und Get verzögern, also zuerst Put, dann nach xx Millisekunden Get?
zb den "Done" von Put dann auf "enable" von Get legen?

Oder wie macht man das am besten?

danke schon mal

S7-1214:
OB1
put-1.JPG

get-1.JPG

OB 30:
Ob30.JPG

DBs:

db100.JPGdb1000.JPG
 
Zuletzt bearbeitet:
Der Baustein hat die Ausgänge Done und Error. Erst nachdem Done oder Error True war, solltest du erneut einen Request anstoßen. Bei Error, natürlich einen Fehler setzen und den Status auswerten (Auch der ist nur solange da, wie Error da ist, also am Besten bei Fehler in eine extra Variable schieben.
Achtung, Done ist nur einen Zyklus lang True!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke Dir Ralle,

meinst du, dass ich das dann so umsetzen sollte?

siehe:
put-2.JPGget-2.JPG


oder besser so:
put-get.JPG


oder beides falsch?


Die Achse fährt schnell mehrere kurze Wege durch Positionen an, die in einer Schrittkette auf der S7-300 abgearbeitet werden.
Die S7-300 gibt an die S7-1214 das PositionsRCV (int) rüber und die 1214 dann den Wert (SinaPos) an die Steuerung der Achse.
die Achse startet nur wenn "enableAxis" positive Flanke wird

hatte das Gefühl, dass eventuell die Taktzeit von OB30 mit 30ms zu kurz ist bzw die zykluszeit der s7-300 dafür zu lang?

oder wo könnte der Fehler liegen?
 
Zuletzt bearbeitet:
Nein, paßt nicht ganz.

Done und auch NDR sind nur einen Zyklus lang True.
Error weiß ich niht aus dem Kopf.

Für dein Bsp.: Du setzt mit dem Taktmerker einen Request-Merker. Die Bausteine reagieren auf Flanke, d.h. den Request-Merker setzt du erst zurück, wenn Done oder Error True ist.

Damit die Folge paßt:

NW1:

UN Req-Merker
UN Done
UN Error
S Req-Merker

NW2:

PUT-Baustein

NW3:

U Done
O Error
R Req-Merker

NW4:

(am Besten in KOP)
U Done --> Move-Baustein mit Status als Input und MeinSTatusVar als Output

Gleiches mit Get, aber mit NDR

Wenn der Put Done bringt, dann wird nach dem Baustein der Request-Merker zurückgesetzt, nach dem Zyklus vor dem Put ist der Request-Merker zurückgesetzt, aber 1xnoch ist done da, denn Done fällt erst wieder nach dem Put-Baustein auf Flase. Beim nächsten Zyklus ist der Request-Merker auf False und Done auf False, also wird der Request-MErker wieder gesetzt.

Put und Get arbeitsn hier sooft, wie möglich. Du kannst auch noch deinen Taktmerker in NW1 einbauen, dann ist die kürzeste Put-Get-Schleife im Takt des Taktmerkers.

Das ist nur mal schnell so hinskizziert, probiers mal so aus.
Achtung, Die Variablen Done, NDR, Error an den Bausteinen nicht TEMP sondern STAT oder Merker!!!
 
Zurück
Oben