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

Tmbiz

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

für ein aktuelles Projekt soll ein Rezept (Datensatz auf dem Hmi) über ein Leitsystem gewählt werden. Das Leitsystem sendet die Daten (Rezeptnummer) an einen DB auf der SPS. Mit anderen Worten, die "soll" Rezeptnummer liegt im "DB PLS". Mit einem Signal vom PLS (rezeptLaden) soll dann ein Datensatz auf dem HMI (Rezeptspeicher) gewählt und auf die SPS geladen werden.

PLC: 1512SP ET200
HMI: TP1200 Compfort

Kann mir jemand sagen, wie man das am einfachsten machen kann?
 
Zuletzt bearbeitet:
Kommt drauf an was Du für ein Panel hast. Da Du im Siemens Forum schreibst gehe ich mal davon aus, dass es ein Siemens Panel es.
Es gibt dafür einen Bereichszeiger, um dies zu realisieren.

Grüße

Marcel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Kommt drauf an was Du für ein Panel hast. Da Du im Siemens Forum schreibst gehe ich mal davon aus, dass es ein Siemens Panel es.
Es gibt dafür einen Bereichszeiger, um dies zu realisieren.

Grüße

Marcel
Bitte entschuldige. Ich habe die Infos eingetragen.


PLC: 1512SP ET200
HMI: TP1200 Compfort
 
per Steuerungsauftrag 70 (oder über eine Triggervariable und ein Skript im Panel) dem HMI-Panel mitteilen, daß es die Rezeptur in die SPS laden soll.
Schau mal hier (Programmbeispiel zum Rezeptur einlesen per "Panel-Fernsteuerung" in Beitrag #8 ) und lies am besten alle Beiträge, weil es aktuell zusammen mit Comfort Panels "sporadisch" Probleme gibt/gab.

Harald
 
Hallo TmBiz,

folgende Fragen fallen mir in diesem Zusammenhang sofort ein (Haben erst einmal nichts mit einer möglichen Programmausprägung zu tun):
1. Wie wird sichergestellt, dass für die angeforderte Rezeptnummer auch ein Datensatz auf dem HMI existiert?
1.1. Wie soll im Fehlerfall agiert werden? Wählt der Bediener dann manuell aus?
2. Wann genau soll der Datensatz geladen werden? Einer laufenden Maschine die Rezeptparameter quasi unter dem Hintern wegziehen kommt nicht so gut ...
3. Geht es nur um den "Hinweg" (also Laden/Transferieren des Datensatzes) oder auch um den "Rückweg" (z.B. "Rezept geladen, Maschine bereit" oder "Rezept nicht vorhanden" usw.)

Gibt mit Sicherheit noch weitere grundsätzliche Fragen.

Realisieren könntest du das reine Laden des Datensatzes z.B. über eine Variable, an deren Ereignis "Wertänderung" du ein Script projektierst, welches die Systemfunktionen "LadeDatensatz" und "SchreibeDatensatzvariablenInSteuerung" nacheinander aufruft (sehr vereinfacht ausgedrückt).


Gruß, Fred


PS: Harald war schneller. @harald: Wie machst du das eigentlich, dass deine Reaktionszeit gefühlt UNTER NULL liegt?? (y)
:unsure::D
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe gerade ein Problem in der Projektierung der Verbindung (Bereichszeiger). Ich habe den Punkt "Steuerungsauftrag" aktiviert. Als PLC Variable wird nur Word akzeptiert. Die Länge ist 4 Word. Ich habe einen DB erstellt mit 4 Variablen. Word_1, Word_2, Word_3 und Word_4 mit dem Daten Typ Word.

Wenn ich jedoch in den PLC Variablen (unter Verbindungen HMI) die 4 Word auswählen möchte, wird nur eine Variable angenommen.

Wie kann ich die vier Variablen auswählen?
 
PS: Harald war schneller. @harald: Wie machst du das eigentlich, dass deine Reaktionszeit gefühlt UNTER NULL liegt?? (y)
:unsure::D
Ich staune auch immer wieder, wie schnell Harald ist.
Zum Glück sind seine negativen Reaktionszeiten das einzig negative, das ich an ihm entdecken kann ...

:unsure: Was rede ich da? Heutzutage weiss man ja gar nicht mehr, ob mit negativ gerade etwas Negatives oder etwas Positives bezeichnet wird, von wegen Corona-negativ oder HIV-negativ etc. p.p... ;)
 
Ich habe einen DB erstellt mit 4 Variablen. Word_1, Word_2, Word_3 und Word_4 mit dem Daten Typ Word.
Versuche mal: Fasse die 4 Word zu einem Struct zusammen und wähle das Struct aus.
Eventuell geht die Zuordnung auch gar nicht symbolisch, dann muß die DB-Adresse absolut angegeben werden. Für die Projektierung interessiert sowieso nur die Anfangsadresse, die Länge des Bereichszeiger-Bereiches ist fest vorgegeben.

Harald
 
Versuche mal: Fasse die 4 Word zu einem Struct zusammen und wähle das Struct aus.
Eventuell geht die Zuordnung auch gar nicht symbolisch, dann muß die DB-Adresse absolut angegeben werden. Für die Projektierung interessiert sowieso nur die Anfangsadresse, die Länge des Bereichszeiger-Bereiches ist fest vorgegeben.

Harald

Leider kein Erfolg. Ich habe die 4 Word Variablen in ein Struct gelegt und auch mal den Baustein optimiert. Doch immer noch kommt ein Fehler.
 

Anhänge

  • Bild_2022-08-13_205511280.png
    Bild_2022-08-13_205511280.png
    21 KB · Aufrufe: 19
Mein TIA V15.1 mag keine Strukturen für die Anbindung der Bereichszeiger. Die symbolische Anbindung geht nur, wenn der Bereichszeiger im HMI-DB als Word-Array deklariert ist, z.B.: Bereichszeiger_Steuerungsauftrag : Array[0..3] of Word
Das Symbol des Arrays kann allerdings nicht mit der Maus ausgewählt werden. Es muß zunächst DB_HMI.Bereichszeiger_Steuerungsauftrag[0] ausgewählt werden (was TIA natürlich anmeckert) und danach manuell das [0] am Ende gelöscht werden. Nun ist TIA zufrieden.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Mein TIA V15.1 mag keine Strukturen für die Anbindung der Bereichszeiger. Die symbolische Anbindung geht nur, wenn der Bereichszeiger im HMI-DB als Word-Array deklariert ist, z.B.: Bereichszeiger_Steuerungsauftrag : Array[0..3] of Word
Das Symbol des Arrays kann allerdings nicht mit der Maus ausgewählt werden. Es muß zunächst DB_HMI.Bereichszeiger_Steuerungsauftrag[0] ausgewählt werden (was TIA natürlich anmeckert) und danach manuell das [0] am Ende gelöscht werden. Nun ist TIA zufrieden.

Harald

Jetzt hat Tia es angenommen. Das ist schon mal gut. Kannst Du mir sagen, wie man nun den Befehl 70 schreiben muss, um das Rezept zu wechseln?
 
Etwas Off-Topic, aber gerade passend:

Wieso werden für Aufgaben, die man -vereinfacht ausgedrückt- mit ein oder zwei stinknormalen Variablen lösen könnte, immer noch Bereichszeiger mit scheinbar nicht auf Anhieb verständlicher Parametrierung und Auswertung propagiert?
Wenn es das eingesetzte Bediengerät nicht hergibt, ok. Aber bei einem Comfort-Panel oder einer RT?

Edit:
Siehe dazu auch meine eingangs gestellten Fragen. Bei Verwendung eines Bereichszeigers nebst Steuerungsauftrag müsste die zugehörige Logik nahezu komplett in der Steuerung bearbeitet werden - für eine Funktion, die sich fast ausschließlich im HMI abspielt...


Gruß, Fred
 
Wieso werden für Aufgaben, die man -vereinfacht ausgedrückt- mit ein oder zwei stinknormalen Variablen lösen könnte, immer noch Bereichszeiger mit scheinbar nicht auf Anhieb verständlicher Parametrierung und Auswertung propagiert?
- Vielleicht weil kaum ein Programmierer Lust hat, eine Rezepturübertragung vollständig zu Fuß auszuprogrammieren, geschweige den davon, ob er es denn korrekt und robust implementieren könnte mit all den nötigen Handshakes...
- Weil da eine standardisierte Lösung rauskommt, die auch andere erfahrene Programmierer verstehen und warten können?

Was ist denn bei der Rezepturübertragung per Steuerungsauftrag und Bereichszeiger zu kompliziert, so daß eine Lösung mit "ein oder zwei stinknormalen Variablen" einfacher wäre? Der Steuerungsauftrag und der Bereichszeiger bilden doch lediglich das bewährte Handshake mit wenigen Variablen ab. Dafür muß in der HMI nichts programmiert werden, sondern lediglich projektiert werden. Den Rest macht das HMI dann alleine.

Warum hält man sich z.B. bei Visu besser an die WinCC Standards, wo doch jeder dritte Hochsprachen-Programmierer meint, eine bessere eigene Visu programmieren zu können, anstatt die Projektier-Standards zu lernen? ;)

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Kannst Du mir sagen, wie man nun den Befehl 70 schreiben muss, um das Rezept zu wechseln?
schau mal in den Beitrag #4, da hatte ich ein Programmbeispiel verlinkt
per Steuerungsauftrag 70 (oder über eine Triggervariable und ein Skript im Panel) dem HMI-Panel mitteilen, daß es die Rezeptur in die SPS laden soll.
Schau mal hier (Programmbeispiel zum Rezeptur einlesen per "Panel-Fernsteuerung" in Beitrag #8 ) und lies am besten alle Beiträge, weil es aktuell zusammen mit Comfort Panels "sporadisch" Probleme gibt/gab.
Harald
Und schau mal in die TIA Hilfe, suchen nach "Bereichszeiger Datensatz", da wird u.a. auch der Ablauf der Übertragung erklärt.

Harald
 
Die symbolische Anbindung geht nur, wenn der Bereichszeiger im HMI-DB als Word-Array deklariert ist, z.B.: Bereichszeiger_Steuerungsauftrag : Array[0..3] of Word
Das Symbol des Arrays kann allerdings nicht mit der Maus ausgewählt werden. Es muß zunächst DB_HMI.Bereichszeiger_Steuerungsauftrag[0] ausgewählt werden (was TIA natürlich anmeckert) und danach manuell das [0] am Ende gelöscht werden. Nun ist TIA zufrieden.
Noch zur Info für andere Suchende:
Zusätzlich zu Array[0..3] of Word geht bei S7-1x00 auch noch Array[0..3] of UInt.
Und das Symbol des Array kann auch direkt mit der Maus als Variable ausgewählt werden, aber nur auf der rechten Seite der Auswahlbox, nicht links im Baum:

1660501632276.png
 
Hallo Harald,
- Vielleicht weil kaum ein Programmierer Lust hat, eine Rezepturübertragung vollständig zu Fuß auszuprogrammieren, geschweige den davon, ob er es denn
wo habe ich denn geschrieben, dass man die Rezepturübertragung an sich ausprogrammieren soll/muss? Es ging doch nur um die Triggerung der Übertragung, und dies lässt sich m.M.n mit einer einfachen Variablen + HMI-Systemfunktion simpler realisieren.

- Weil da eine standardisierte Lösung rauskommt, die auch andere erfahrene Programmierer verstehen und warten können?
Was ist an dieser Lösung "Standard"? Wenn du damit "Siemens-Standard" meinst, mag das stimmen, für andere Steuerung-/HMI-Typen (z.B. B&R etc.) darf man sich dann wieder etwas anderes ausdenken!?

Was ist denn bei der Rezepturübertragung per Steuerungsauftrag und Bereichszeiger zu kompliziert, so daß eine Lösung mit "ein oder zwei stinknormalen Variablen" einfacher wäre? Der Steuerungsauftrag und der Bereichszeiger bilden doch lediglich das bewährte Handshake mit wenigen Variablen ab.
Siehe oben. Alleine schon, dass ein Bereichszeiger scheinbar (Meine: ICH kann es nicht mit Sicherheit sagen, da ich sie fast nie verwendet habe.) nicht TIA-versionsunabhängig und ohne "Tricks" projektiert werden kann(siehe dazu auch deinen Post #11) ...

Warum hält man sich z.B. bei Visu besser an die WinCC Standards, wo doch jeder dritte Hochsprachen-Programmierer meint, eine bessere eigene Visu programmieren zu können, anstatt die Projektier-Standards zu lernen? ;)
Warum sollte man sich an "Standards" halten, wenn manche von ihnen so proprietär und eingeschränkt/umständlich sind, dass man lieber etwas Eigenes programmiert, welches dann sogar noch besser auf andere Plattformen portierbar ist, wenn es nötig wird? ;)

[Provozier-Modus EIN und jetzt seehhr Off-Topic]
Warum wird das Thema HMI oder VISU oder WieAuchImmer ob der immer weiter steigenden Anforderungen (Design, Funktionalität, Responsivität etc.) nicht endlich mal in die Hände von Fachleuten gelegt?
[Provozier-Modus AUS]
Duck-und-weg, 😛


Gruß, Fred
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also, ich habe das mal zum Test aufgebaut. Also einen DB mit dem Variablen erstellt und auf der HMI verbunden. Nun kann ich in dem DB die Werte setzen. Aber da gibt es noch eine weitere Frage.

Ich habe in dem Projekt 5 Rezepte welche alle verschiedene Teile der Maschine steuern. Ich müsste aber nur an einem oder zwei Rezepten die Werte auf die Steuerung schreiben.

Wie kann ich das machen?
 
Du weisst ja die Rezeptnummer und Datensatznummer der Rezepte welche du auf die Steuerung schreiben darfst. Diese Nummern abfragen und den Steuerungauftrag nur ausführen wenn es passt.
 
Zurück
Oben