Rezepturübertragung mit Steuerungsauftrag 70

ssound1de

Level-2
Beiträge
351
Reaktionspunkte
27
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Morgen,

habe ein sporadisch auftretendes Problem mit der im Titel genannten Situation, und bräuchte bitte mal Eure Hilfe dazu.
Habe WinCC Flex 2007 PC-RT über Profibus an einer S7-3152DP.

Im Flex Projekt sind mehrere Rezepturen angelegt.
Zwei davon werden regelmäßig (bei jedem ankommenden Werkstückträger) über Steuerungsauftrag 70 (DAT-> SPS) von der S7 getriggert. Sie beinhalten Daten zum erkannten Werkstückträger-Typ, mit denen dann der WT bearbeitet wird.
Die anderen Rezepturen werden vom Bediener über die Schaltfläche 'Schreiben in Steuerung' in der Rezepturanzeige, oder auch bei Bildwechsel an die S7 übertragen (allgemeine Anlagenparameter).

Ich habe u.a. 2 Bereichszeiger eingerichtet
1. Steuerungsauftrag (4 Words)
2. Datensatz (5 Words)
Beide prüfe ich vor dem Triggern des SA70 auf 'FREI', lege dann die Rezept-/Datensatznummer und dann den SA70 ins SA-Fach.
Anschließend warte ich auf die '4' (Übertragung ohne Fehler beendet) im Datensatz-Statuswort, und verwende dann die übertragenen Daten für die Bearbeitung des WT.

Wird ein WT erkannt, dauert es bei uns in der Regel etwa 15sek. bis der Datensatz (640 Bytes) an die S7 übertragen ist.
Letztens passierte es, dass schon ca. 2 sek. nach dem erkennen eines WT der Ablauf startete, jedoch mit den Typendaten des vorherigen WT.

Kann es sein, dass hier eine Überschneidung stattfindet?
Dachte z.B. an ...
S7 prüft beide Bereichzeiger auf frei bevor der SA70 getriggert wird, und genau in diesem Moment wird durch einen Bildwechsel in Flex ein anderes Rezept an die S7 übertragen.
Danach erscheint im Datensatz-Statuswort die '4' (Übertragung beendet), die ich dann (fälschlicherweise) als 'WT-Daten sind angekommen' interpretiere. In Wirklichkeit waren es allgemeine Maschinenparameter aus einem anderen Rezept.
1. Kann das passieren?
2. Was passiert denn in so einem Fall der Überschneidung - werden dann die Steuerungsaufträge automatisch nacheinander abgearbeitet, oder muss der 'Spätere' neu gestartet werden?
3. Was passiert denn, wenn eine Übertragung fehlerhaft war - wird sie dann automatisch wiederholt?

Sorry für die vielen Fragen. :rolleyes:
(Hab im Kom-Handbuch nix gefunden, was diese Fragen klären würde).

Und danke schon mal im Voraus für Eure Zeit und Hilfe.

Gruß
 
Genau solche Probleme haben mich schon zu S5 und Protool-Zeiten dazu gebracht prinzipiell keine Rezepturen zu verwenden. Ich programmieren die Typenverwaltung immer selber, es nur nur einen Nachteil beim archivieren und laden, da dies auf die Karte nicht geht.

Hab auch mit WinccFlex mal herumgespielt und war immer noch nicht davon überzeugt, da ich genau wie in deinem Fall z.B. die Rückmeldung über eine ID-Nummer o.ä. vermisse das es auch wirklich der Datensatz war den ich haben wollte.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke für Deine Antwort.

Das Problem 1 der Falschauswertung (Übertragung beendet) hab ich jetzt schon mal gelöst.
Wenn ich das DS-Statuswort auf '4' abfrage (Übertragung beendet), prüfe ich noch zusätzlich ob die Rezept- und Datensatznummer mit den Angefragten Nummern übereinstimmt. ;)

Es bleibt nach wie vor Frage 2 und 3 ?!?!?!
 
Hab auch mit WinccFlex mal herumgespielt und war immer noch nicht davon überzeugt, da ich genau wie in deinem Fall z.B. die Rückmeldung über eine ID-Nummer o.ä. vermisse das es auch wirklich der Datensatz war den ich haben wollte.

Rezept- und Datensatznummer stehen im DS-Datenfach.
Der Ablauf sieht bei mir jetzt so aus (habs mal im Status beobachtet) ...
1. Die S7 triggert also über SA70 mit Rez- und DS-Nummer
2. Flex liest den SA und löscht das SA-Datenfach
3. Flex setzt das DS-Datenfach auf die Rez-/DS-Nummer und Statuswort auf 2 (Übertragung läuft), und am Ende auf 4 (Übertragung beendet)
4. S7 prüft auf Ende und ob angeforderte Rez-/DS-Nummern stimmen
Klappt also so ganz gut.
 
So - hab jetzt nochmal ein bisserl simuliert.
Sieht wie folgt aus ...
Ein MB in Flex auf 'Erfassung zyklisch fortlaufend' gesetzt.
Bei Wertänderung wird (von Flex getriggert) ein Rezept (Rez.3, DS.1) in die Steuerung geschrieben.

Wenn ich in der S7 den Trigger für den Datensatz auslöse, verändere ich gleichzeitig das MB. Flex versucht also im nächsten Moment ein Rezept zu senden, während die S7 über den SA70 ein anderes (Rez.1, DS.1) anfrägt.

Es passiert zweierlei (je nach zeitlichen differenzen) ...
1. Die S7 bekommt ihren angeforderten Datensatz.
2. Die S7 bekommt den DS nicht. Flex scheibt ins Datenfach aber Rez-/DS-Nummer laut SA und ins DS-Statuswort den Wert 12 (Übertragungsfehler). Anschließend passiert nix. Der SA muss also neu ausgelöst werden.

Im Moment ist noch unklar, ob das von Flex gleichzeitig gestartete Rezept in der S7 ankommt.
 
Zurück
Oben