TIA Rezeptauswahl (Hmi) über die SPS und Leitsystem. Wie geht das?

Zuviel Werbung?
-> Hier kostenlos registrieren
Mit anderen Worten, ich darf eine Nummer nur einmal in allen Rezepten auf dem HMI verwenden?
Nein, warum auch?!

Im Word[1] gibst Du doch die gewünschte Rezeptnummer an und
im Word[2] die von diesem Rezept gewünschte Datensatznummer.


Und nur wenn Rezeptnummer und Datensatznummer für Dich OK zum Übertragen sind, schreibst Du einmalig (Flanke) die 70 in das Word[0].
 
Gibt es bei Dir nur eine große Rezeptur-Art mit allen Einstellungen zusammen?

Strukturiere die Rezepturen so getrennt, daß sie nur das enthalten, was gemeinsam parametriert/umgeschaltet werden soll.
- Maschineneinstellungen
- Produkte
- Leitsystem-Vorgaberezeptur
...

Woher weiß das Leitsystem die Datensatznummer? Es muß doch irgendwo vereinbart und dokumentiert sein, welche Variablen zu dieser Rezeptur gehören und welche Werte in welchen Datensätzen (Datensatznummer) eingestellt werden sollen.
Beim Steuerungsauftrag musst Du die Rezepturnummer und die Datensatznummer angeben. Die Rezepturnummer ist die Nummer des Rezeptur-Templates.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
schau mal in den Beitrag #4, da hatte ich ein Programmbeispiel verlinkt

Und schau mal in die TIA Hilfe, suchen nach "Bereichszeiger Datensatz", da wird u.a. auch der Ablauf der Übertragung erklärt.

Harald

Ich habe mir den Beitrag man angeschaut und im Rezept die Kopplung aktiviert.



1660641271999.png
 

Anhänge

  • 1660641401297.png
    1660641401297.png
    21,7 KB · Aufrufe: 14
Nein, warum auch?!

Im Word[1] gibst Du doch die gewünschte Rezeptnummer an und
im Word[2] die von diesem Rezept gewünschte Datensatznummer.


Und nur wenn Rezeptnummer und Datensatznummer für Dich OK zum Übertragen sind, schreibst Du einmalig (Flanke) die 70 in das Word[0].
Alles klar, nun geht es. Mir war nicht klar, dass man erst das Rezept und dann den Datensatz wählen muss.
Ich konnte den Datensatz gerade schreiben. Danke für die Hilfe.
 
Gibt es bei Dir nur eine große Rezeptur-Art mit allen Einstellungen zusammen?

Strukturiere die Rezepturen so getrennt, daß sie nur das enthalten, was gemeinsam parametriert/umgeschaltet werden soll.
- Maschineneinstellungen
- Produkte
- Leitsystem-Vorgaberezeptur
...

Woher weiß das Leitsystem die Datensatznummer? Es muß doch irgendwo vereinbart und dokumentiert sein, welche Variablen zu dieser Rezeptur gehören und welche Werte in welchen Datensätzen (Datensatznummer) eingestellt werden sollen.
Beim Steuerungsauftrag musst Du die Rezepturnummer und die Datensatznummer angeben. Die Rezepturnummer ist die Nummer des Rezeptur-Templates.

Harald

Ich habe 5 Rezepte, die alle unabhängig gewählt werden können und auf verschiedene Teile der Maschine wirken.

Das Wählen des Rezepts war der Fehler. Nun habe ich das eingefügt und es geht.
 
Guten Morgen zusammen,

die Auswahl der Rezepte über die Nummer des Rezeptes ist ja nun gelöst. Nun zeigt sich aber, dass die Auswahl nicht über die Nummer gelöst werden kann, sondern über einen Wert im Rezept gelöst werden muss.

Der Kunde möchte das Rezept von Leitsystem auswählen und dazu die Artikelnummer (ein Wert im Rezept) an die SPS senden. Dann soll das Rezept gewählt werden, dass diese Nummer enthält. Kann mir jemand sagen, wie man das am einfachsten umsetzen kann.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also etwas in der Richtung habe ich noch nicht gehört. Ein Rezept auswählen über einen Wert der im Rezept steht? Ist doch eigentlich völliger Quatsch, da wirst du wohl noch etwas mit dem Kunden diskutieren müssen. Am einfachsten wäre es dann wohl wenn der Name des Rezeptes die Artikelnummer ist, darüber kannst du dann den Datensatz auswählen.
Andernfalls müsstest du eigentlich alle Rezepte aufrufen, die Artikelnummer auslesen und dann nach der RezeptNummer schauen und es aktivieren. Was aber wenn die Artikelnummer 2 mal in den Rezepten vorhanden ist? Du hast ja keine Möglichkeit zu kontrollieren ob alle Artikelnummern richtig eingegeben wurden.
Wenn es bei den 5 Rezepten bleibt, dann könntest du dir noch eine Liste machen und da hinterlegen welche RezeptNummer zu welcher Artikelnummer gehört. Dann darf sich daran aber nichts mehr ändern.
 
Also etwas in der Richtung habe ich noch nicht gehört. Ein Rezept auswählen über einen Wert der im Rezept steht? Ist doch eigentlich völliger Quatsch, da wirst du wohl noch etwas mit dem Kunden diskutieren müssen. Am einfachsten wäre es dann wohl wenn der Name des Rezeptes die Artikelnummer ist, darüber kannst du dann den Datensatz auswählen.
Andernfalls müsstest du eigentlich alle Rezepte aufrufen, die Artikelnummer auslesen und dann nach der RezeptNummer schauen und es aktivieren. Was aber wenn die Artikelnummer 2 mal in den Rezepten vorhanden ist? Du hast ja keine Möglichkeit zu kontrollieren ob alle Artikelnummern richtig eingegeben wurden.
Wenn es bei den 5 Rezepten bleibt, dann könntest du dir noch eine Liste machen und da hinterlegen welche RezeptNummer zu welcher Artikelnummer gehört. Dann darf sich daran aber nichts mehr ändern.

Nun, da der Kunde die Artikelnummer in Rezept hat, liegt es aus seiner Sicht nahe, dass er mit der Nummer das Rezept auswählen möchte.

Das Problem ist, dass ich die Rezeptnummern nur chronologisch anlegen kann. Aber der Name des Rezepts wäre auch eine Möglichkeit. Ich habe aber nur die Variante gefunden über die Nummer das Rezept zu wählen. Kannst du mir sagen, wie man das über den Namen machen kann?
 
Das Problem ist, dass ich die Rezeptnummern nur chronologisch anlegen kann.
Um wieviele Datensätze geht es?

Du könntest für diese Artikelnummern schon Datensätze im Projekt anlegen, die der Kunde dann nur noch hinterher anpasst.
Bei den vorher angelegten Datensätzen kannst Du die Datensatznummer bestimmen und so vielleicht auch der Artikelnummer anpassen:

1663183669963.png

Diese Datensatznummern (im Bild sieht man das Maximum) kann man auch beim Import von Datensätzen vorgeben.
Man kann also ggf. exportieren, z.B. mit Excel Datensätze kopieren/manipulieren und dann mit der neuen Nummer wieder importieren.


Alternativ könnte man ein Array in der PLC anlegen, in dem man dann einträgt bzw. sucht, welcher Datensatz zu welcher Artikelnummer gehört.
Das muss dann natürlich gepflegt werden.




Aber der Name des Rezepts wäre auch eine Möglichkeit. Ich habe aber nur die Variante gefunden über die Nummer das Rezept zu wählen. Kannst du mir sagen, wie man das über den Namen machen kann?
IMHO nicht über einen Steuerungsauftrag.

Du könntest eine Variable erstellen, in dem der Datensatzname/die Artikelnummer steht und eine Steuervariable, die bei Wertänderung das Datensatzladen auslöst:

1663184487927.png

Was per Funktionsliste geht, sollte auch per Script funktionieren, so dass man dort die Wertänderung auch prüfen kann und dann das Laden nur bei bestimmten Wertänderungen (z.B. 0 -> 1) und nicht bei jeglicher Änderung auslöst.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Um wieviele Datensätze geht es denn? Wie lange darf das suchen dauern?
Du könntest einfach von 1 beginnend alle Datensätze nacheinander in die PLC laden und in die Artikelnummer schauen, bis die gesuchte Artikelnummer drin steht. Das kann gut automatisiert ablaufen, dauert nur halt etwas. Auf die Art könnte die PLC auch selbständig von Zeit zu Zeit eine Liste mit Rezeptnummern und Artikelnummern aufbauen und dann bei Anforderung gezielt das benötigte Rezept laden.

Harald
 
Kurze Frage zu der/den Artikelnummern, da du dies nicht spezifiziert hast (oder ich habe es überlesen):
Ist die Artikelnummer in dem jeweiligen Rezept unveränderbar?
Wenn ja, dann verstehe ich nämlich die Problematik nicht: Verwende diese Nummer als Datensatzname und gut.
Wenn nein: Wie wird sichergestellt, dass sie einzigartig ist? Denn das wäre ja für das Funktionieren jedes Suchalgorythmus unabdingbar ...

Gruß, Fred


PS: Ich bringe in diesem Zusammenhang gerne nochmal die in Post Nr. 5 erwähnte Verwendung einer einfachen Variablen plus Systemfunktion ins Spiel, dann kann man sich nämlich das Nummerngeraffel für den Steuerungsauftrag sparen.

PPS: Wie auch hucki ähnlich ausgeführt hat😉
 
Zuletzt bearbeitet:
Nun, da der Kunde die Artikelnummer in Rezept hat, liegt es aus seiner Sicht nahe, dass er mit der Nummer das Rezept auswählen möchte.

Das Problem ist, dass ich die Rezeptnummern nur chronologisch anlegen kann. Aber der Name des Rezepts wäre auch eine Möglichkeit. Ich habe aber nur die Variante gefunden über die Nummer das Rezept zu wählen. Kannst du mir sagen, wie man das über den Namen machen kann?
Wie hucki schon geschrieben hat, per Steuerungsauftrag geht es nicht. Ich habe im Panel ein Eingabefeld für den RezepturNamen und starte dann über eine Variable die Anwahl und den Transfer.
1663193377550.png

Wie bei einigen Antworten schon angemerkt, wenn die Artikelnummer ein Wert aus der Rezeptur ist, kannst du nicht ausschließen das eine Artikelnummer mehrfach vor kommt. Das solltest du deinem Kunden vielleicht nochmals klar machen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
... Auf die Art könnte die PLC auch selbständig von Zeit zu Zeit eine Liste mit Rezeptnummern und Artikelnummern aufbauen ...
Wann kann/darf denn die PLC auf die gesuchte Information (ArtikelNr) in solchen Sätzen zugreifen?
Vermutlich nicht jederzeit, sondern nur unter bestimmten Bedingungen?
Wenn eine solcher Satz gelöscht, hinzugefügt oder geändert wird, wäre es bezüglich der Aktualität der Liste ein günstiger ZeitPunkt.
Müsste man einen solchen Zugriff, wenn er nicht sofort ausführbar sein sollte, vormerken, um ihn zu einem späteren ZeitPunkt nachzuholen?
Müsste der Zugriff auf die komplette Liste oder auf den betroffenen Satz für die Suchfunktion gesperrt werden, bis die vorgemerkte Aktualisierung in der Liste nachgeholt wurde?
Müssten schlimmstenfalls sogar die Rezepte als csv-Dateien geschrieben werden, um sie dann gleich wieder einzulesen und auf diesem Umwege an die gesuchte Information zu gelangen?
... und dann bei Anforderung gezielt das benötigte Rezept laden.
ArtikelNrn würde ich auf Verdacht lieber in Strings unterbringen, dann kann man z.B. auch Trennzeichen oder Buchstaben unterbringen, je nach dem, wie die Artikel-"Nummern" tatsächlich aussehen.
Selbst wenn diese "Nummern" nur aus Ziffern bestehen, kann die Anzahl der Ziffern je Nummer grösser sein als sie sein dürfte, um sie direkt als Index zu verwenden. Auch würde ich damit rechnen, dass bei den in der Liste enthaltenen Nummern grössere NummernBereiche unbenutzt sind.
Kurzum, vorsichtshalber würde ich davon ausgehen, dass ein "gezielter" Zugriff nicht möglich, sondern ein Suchen in dieser Liste nötig sein wird.
 
Also erst mal viele vielen Dank für die Hilfe.

Ich habe es über den Namen des Datensatzes gelöst. Die Artikelnummer ist nun der Name des Datensatzes und über eine Variable löse ich den Vorgang nun aus. Ich werde es dem Kunden so vorschlagen und dann mal abwarten, was er sagt.

Um wieviele Datensätze geht es denn? Wie lange darf das suchen dauern?
Du könntest einfach von 1 beginnend alle Datensätze nacheinander in die PLC laden und in die Artikelnummer schauen, bis die gesuchte Artikelnummer drin steht. Das kann gut automatisiert ablaufen, dauert nur halt etwas. Auf die Art könnte die PLC auch selbständig von Zeit zu Zeit eine Liste mit Rezeptnummern und Artikelnummern aufbauen und dann bei Anforderung gezielt das benötigte Rezept laden.

Harald
Es können sehr viele Datensätze werden. Aber die Idee ist auch sehr gut. Wenn der Kunde die jetzige Lösung nicht akzeptiert, werde ich das mal versuchen.
 
Es können sehr viele Datensätze werden. Aber die Idee ist auch sehr gut. Wenn der Kunde die jetzige Lösung nicht akzeptiert, werde ich das mal versuchen.
Bei der Lösung die vorhandenen Datensätze zu durchsuchen, bleibt aber immer noch das Problem, dass die Artikelnummer mehrfach vorhanden sein kann. Du kannst es nicht verhindern, dass die gleiche Artikelnummer mehrfach in den Datensätzen auftaucht. Wenn du die Rezepte nacheinander lädst und nach der Artikelnummer suchst, musst du immer alle Rezepte durchsuchen und mit dem Kunden die Vorgehensweise absprechen wenn eine Artikelnummer mehrfach gefunden wird.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Du kannst es nicht verhindern, dass die gleiche Artikelnummer mehrfach in den Datensätzen auftaucht.
Du kannst es nicht verhindern, dass die gleiche Artikelnummer >versehentlich/bzw. unzulässigerweise< mehrfach in den Datensätzen auftaucht.
Schlimmer bzw. ein endgültiges AUS für unser Bestreben wäre es, wenn mehrfach gleiche ArtikelNrn - aus welchen Gründern auch immer - zulässig sind. Dann müsste sich der Kunde erstmal überlegen, was er eigentlich will.
Nein, verhindern lässt sich eine Nennung derselben ArtikelNrn in mehreren Sätzen, für mein bescheidenes Verständnis der RezepturMimik wohl nicht.
Aber, durch die hier diskutierte Variante, automatisch eine Liste bzw. Tabelle der Zuordnungen zu generieren, liesse sich leicht eine entsprechende Kontrolle realisieren. Man bräuchte dann noch ein Konzept dafür, was man mit den festgestellten Unstimmigkeiten anstellen will.
Meldungen generieren und in der ZuordnungsTabelle SperrVermerke eintragen bzw. wieder löschen wäre so mein erster Gedanke dazu.
 
Hallo zusammen,

ich habe das Thema mal aus den Archiven geholt.
Das mit der Anwahl über den Steuerungsauftrag funktionierte auf Anhieb. Das ließ sich hier ganz gut herleiten.

Mein Problem liegt jetzt in der Variante mit dem Datensatznamen (siehe Beitrag #34). Das funktioniert nicht, weder der Befehl LadeDatensatz noch der Befehl SchreibeDatensatzInSteuerung.
Ich habe hier als Krücke mal zwei Taster Laden und Schreiben gemacht, die o.g. Befehle dahinter gelegt und die gleiche Variable für den Datensatznamen aus der SPS genutzt. Hier klappt die Umschaltung. Es liegt also schonmal nicht an der Variable, welche den Datensatznamen vorgibt.

Zur Zeit teste ich mit einem TP700 Comfort in der Simulation (WinCC Runtime Adv. und PLCSim, TIA V18), liegt es evtl. daran?

Gruß Martin
 
Jetzt klappt es.
Grund: unklar.

Was hab ich gemacht:
Ich habe mir die Variable "RezeptLaden", welche bei Wertänderung LadeDatensatz etc. auslöst, bei mir ein Bool (im Beispiel oben #31 RecipeLoad), als Animation in einen Kreis auf die HMI gelegt. Jetzt wird drauf reagiert.

Verstehe das wer will.....

Martin
 
Zurück
Oben