TIA Rezepturtransfer lesen/schreiben unterscheiden

Uncle Leo

Level-2
Beiträge
27
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen

Ich übertrage Rezepturdatensätze vom HmiRuntime zum PLC mit Hilfe des TIA-Rezeptur-Controlls. Im PLC werte ich den Bereichszeiger 'Datenfach' aus, um einen neu empfangenen Datensatz zu erkennen. Klappt prima. Aus Sicht des PLC kann ich aber nicht erkennen, ob ein Datensatz aus dem PLC gelesen wurde oder ein Datensatz geschrieben wurde. In beiden Fällen werden vom HmiRunTime die gleichen Werte im Bereichszeiger eingetragen (Rezeptnummer, Datensatznummer und der Status der Übertragung).

Bin für jeden Tip dankbar.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Harald

Die PLC ist in meinem Aufbau nur passiv. Die PLC bekommt halt einen Datensatz aufgedrückt oder abgesaugt, je nachdem was der HMI-Operator gerade am Rezeptur-Controll ausführt. Und diese beiden Transfermodi will ich im PLC unterscheiden.
- Nach DS schreiben ins PLC --> mach was.
- Nach DS lesen aus PLC --> mach' nix.

Datensätze schreiben oder lesen kann jederzeit durch den Bediener ausgeführt werden, was auch ok für den Aufbau ist.
 
Hallo zusammen.

Ich habe mir eine Lösung für mein Problem gebastelt.

[HMI-Projektierung]
- Externe INT-Variable (z.B. "iDsInfo" ) mit Bereichsgrenzen angelegt (Unten-1 und Unten-2 mit Const '0'; Oben-1 und Oben-2 mit Const'1').
- Ein Ereignis bei 'Bei Überschreitung' projektiert --> "Setze Variable" "iDsInfo"auf '0'.
- Die Variable "iDsInfo" habe ich mit in die Elemente der Rezeptur aufgenommen.

Die Variable setzt sich zurück auf '0' wenn die Bereichsgrenzen Überschritten werden.


[PLC-Programm]
- Im PLC Programm schreibe ich einen Wert in die Variable "iDsInfo" (z.B. '2') nachdem ein Datensatztransfer erkannt wurde (Bereichszeiger).
- Bevor ich die Variable "iDsInfo" beschreibe werte ich deren Inhalt aus.
Ist der Inhalt '0' so wurden Werte in den PLC geschrieben (... in der Rezeptur steht ja iDsInfo mit '0').
Ist der Inhalt '2' so wurden Werte aus dem PLC gelesen.


Ich habe das so getestet und es scheint zu funktionieren. Falls ich was übersehen habe, bitte Feedback
 
Zuletzt bearbeitet:
- Externe INT-Variable (z.B. "iDsInfo" ) mit Bereichsgrenzen angelegt (Unten-1 und Unten-2 mit Const '0'; Oben-1 und Oben-2 mit Const'1').
Wird die Variable auch immer aktualisiert? (Erfassungsart "Zyklisch fortlaufend", siehe TIA Hilfe "Erfassungszyklus einer Variable festlegen")

- Ein Ereignis bei 'Bei Überschreitung' projektiert --> "Setze Variable" "iDsInfo"auf '0'.
(...)
Ich habe das so getestet und es scheint zu funktionieren. Falls ich was übersehen habe, bitte Feedback
Hast Du vor, dem Anwender auch eine Meldungshistorie-Anzeige (Meldeanzeige für Meldeereignisse, evtl. mit Archiv) zu gönnen? Meinst Du das sieht professionell aus, wenn da regelmäßig Systemmeldungen wegen "Grenzwert-Überschreitung" auftauchen?

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke für's Feedback

Wird die Variable auch immer aktualisiert? (Erfassungsart "Zyklisch fortlaufend", siehe TIA Hilfe "Erfassungszyklus einer Variable festlegen")

Die Variable 'lebt' nur als Rezepturelement und wird nicht in einem Bild angezeigt. Erfassung steht auf 'zyklisch bei Verwendung'. Reicht mir auch, weil nur im Rezept vorhanden.


Hast Du vor, dem Anwender auch eine Meldungshistorie-Anzeige (Meldeanzeige für Meldeereignisse, evtl. mit Archiv) zu gönnen?

Ah, an Meldehistorie habe ich nicht gedacht. Aktuell gibt es nur ein Meldefenster mit aktuell anstehenden Meldungen. Eine Historie ist eigentlich nicht angedacht. Aber, das will ich natürlich sauber haben, falls das doch noch kommt. Muss ich morgen mal in der Simulation testen.

Ich werde berichten...
 
Zuletzt bearbeitet:
Guten Morgen Leo,

meine Meinung dazu: warum so kompliziert?

Benutze das Siemens-Rezeptur-Control nur für die Auswahl/Bearbeitung eines Datensatzes,
blende die Steuerschaltflächen aus und baue stattdessen eigene Buttons dazu.
Die benötigten Systemfunktionen zum Steuern der Rezepturverwaltung sind alle einzeln projektierbar, und du kannst zusätzliche Funktionalität
(in deinem Fall das Setzen/Rücksetzen von Hilfsvariablen) einfach hinzufügen.


Gruß, Fred
 
Hallo Fred.

Der Weg über Skripte war auch meine erste Wahl. Dies habe ich aber wieder verworfen, weil mir die Variablen für die gewählte Rezeptur und gewählter Rezepturdatensatz nicht immer die aktuell ausgewählten Datensätze gezeigt hat. Dadurch wurden dann Aktionen auf falsche Rezepturen/Datensätze angewendet.
Ich kann das gar nicht richtig wiedergeben, wie das damals war.

Vielleicht gehe ich das nochmal mit mehr Ruhe an.

Mit meinen beschriebenen Tricks funktioniert es erst mal.
 
Zurück
Oben