TwinCAT HMI Übertragung der Variablen von PLC zur HMI-Seite

brandlpb

Level-1
Beiträge
24
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich schreibe gerade meine Bachelorarbeit und komme bei der Umsetzung der Aufgaben in TwinCAT HMI leider nicht voran. Deshalb habe ich mich entschieden, mein Problem hier zu beschreiben. Ich hoffe, ihr könnt mir weiterhelfen.

Bisher habe ich alle notwendigen Buttons auf dem HMI-Projekt erstellt und sie auch über verschiedene Contents mit anderen Seiten verknüpfen können. Jetzt muss ich aber die Variablen, die ich unter PLC->Main definiert habe, hier bei verschiedenen Controls auf dem HMI anzeigen können. Ich wollte die Variablen über TwinCAT HMI Konfiguration -> Mapped Symbols adden. Jedoch erscheint bei mir an der ersten Stelle noch kein ADS, weshalb meine Eingabe für den Symbolnamen als`PLC.MAIN.fb_Translation` nicht zulässig ist.

Weder auf der Internetseite von Beckhoff noch im Handbuch habe ich hilfreiche Vorschläge finden können.

Da mein Betreuer sich auch nicht mit dem TwinCAT-HMI auskennt, bin ich auf jede einzelne Antwort sehr dankbar.

Vorab schonmal danke

Gruß

Brand
 
Hallo

Hast du den HMI Server bereits konfiguriert? Wo läuft deine Visu und die SPS, auf dem Entwicklungsrechner? Oder hast du ein Panel?

Gruss
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

das Problem mit dem Datenabruf habe ich schon hingekriegt, aber jetzt habe ich ein anderes Problem :confused:

Ich arbeite mit dem TwinCAT HMI, also ich benutze keine Visu. Jetzt läuft alles erstmal auf einem Rechner. Die Variablen habe ich unter PLC->Main deklariert. Die Variablen kann ich auch von der HMI-Desktop-Seite aus abrufen. Das Problem ist nun, ich weiß nicht, wie man hier die Werte plotten kann bzw. unterschiedliche Geometrien visualisieren kann.

Ich brauche z.B. einen Arbeitsraum zu definieren, die ungefähr die Form hat wie eine Ellipse. Bei unserem Projekt müssten die Seiten etwas länger und auch gerader dargestellt sein als bei einer Ellipse. Um alles einfacher auszudrücken, ich müsste also nur beliebige Geometrien darstellen. Am Ende muss ich dann die einzelnen Größen der Geometrie auf die Variablen zuweisen, die unter MAIN deklariert sind.

Dazu finde ich leider keine Doku. Deshalb freue ich mich riesig auf eine Antwort.

Gruß

Burak
 
Hallo

Da bin ich überfragt, müsste ich selber probieren, ob sowas geht. Ist für mich aber nicht so eine alltägliche Aufgabenstellung...
 
Hallo,

erstmal vielen Dank für die Antwort.

Das plottete Bild, was ich auf HMI-Seite erstellen muss, habe ich im Anhang beigefügt. Ich nehme an, für so eine Darstellung müsste ich zwei Geraden und ebenfalls zwei Halbkreise gebrauchen. Radius vom Kreis ist von dem Abstand von beiden Geraden voneinander abhängig, also ich habe dann nur zwei Parameter; Länge und Breite. Kann man auf der HMI-Seite eine Funktion schreiben, die die einzelnen Controllers zusammen verbindet?

Ich bin für jede einzelne Antwort aber auch einen Vorschlag dankbar. Für mich ist es an der Stelle wichtig, das im Anhang beigefügte Bild darzustellen und die einzelnen Parameter verändern zu können.

Gruß

Brand
 
Hallo

Ich habe das mal probiert, leider ohne Erfolg...Das Twincat HMI ist für Anlagenviualisierungen gedacht und nicht um komplizierte Funktionen zu plotten. Musst du schlussendlich das XTS visualisieren?

Erschwerend kommt hinzu, dass das HMI sehr neu ist und eigentlich noch in der Entwicklung ist. Hatte damit auch schon meine Mühe..

Sonst vielleicht mal den Beckhoffsupport antufen.

Gruss
 
Hallo,

bin mir nicht ganz sicher was du genau möchtest bzw. wohin du willst aber am flexibelsten bist du mit SVG paths.

Wie gut kennst du dich mit HTML/CSS/Javascript aus ?

Ich hab selbst erst dieses Jahr mit der Twincat HMI angefangen und jetzt vor kurzem mein erstes relativ umfangreiches Projekt abgeschlossen.

Ich hatte Anfangs alles mit den Beckhoff Controls und normalen Verknüpfungen gemacht, bin aber immer wieder an Grenzen gestoßen und die Performance lässt irgendwann doch stark nach, und bin dann fast komplett auf HTML und Javascript umgestiegen.

Hier wäre mal ein einfaches Beispiel:

Erstell dir ein HTML Host Container und kopiere diesen Code rein...

<svg width="600" height="300" viewBox="0 0 600 300">
<rect id="test" x="2" y="2" width="0" height="0" rx="0" ry="0" />
</svg>


Für den Rahmen folgendes in die Style.css

#test {
fill: none;
stroke: hsla(230, 50%, 40%,1);
stroke-width: 2px;
}


Füge deinem Projekt ein neues Element hinzu - Funktion(javascript) - mit folgendem Code:

let rechteck = document.getElementById('test');


TcHmi.EventProvider.register('%i%Laenge%/i%', function (e, d) {
rechteck.setAttributeNS(null, 'width', d);
});


TcHmi.EventProvider.register('%i%Breite%/i%', function (e, d) {
rechteck.setAttributeNS(null, 'height', d);
rechteck.setAttributeNS(null, 'rx', d / 2);
rechteck.setAttributeNS(null, 'ry', d / 2);
});


Ich hab zum testen interne Symbole angelegt, Variablen von der SPS sind %s%Var%/s%

Die Funktion musst du nun noch beim Desktop onAttached Event aufrufen. (Functions -> Others).

Hoffe das hilft erstmal ein bisschen ansonsten einfach fragen.

Gruß Mathias
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

vielen Dank für die Antworte. Ich habe etwas Zeit gebraucht, um zu antworten, denn ich wollte erstmal die Ideen in meinem Projekt erfolgreich anwenden. Für das HTML-Beispielprojekt bedanke ich mich besonders. :)

Nun habe ich endlich die gewünschte Visualisierung erstellt und zwar ohne einen Java Skript zu implementieren. Ich beschreibe hier, wie ich es gemacht habe, falls da jemand ein ähnliches Problem haben sollte.

Die Visualisierung, welche ich im Anhang beigefügt habe, konnte ich mit einfachen gefertigten Controllers erstellen, indem ich die Kurven der Rechtangle über Shape ->Radius X bzw. Y abrundete. Da hatte ich jedoch zwei Probleme und zwar die Koordinatenachse ist bei TwinCAT anders angelegt als in meinem Matlab-Projekt, an dem ich mich orientieren muss. Erstens können die negativen Achsen bei TwinCAT nicht visualisiert werden, soweit ich es verstanden habe. Zweitens zeigt die Y-Achse nach unten an, was in Matlab genau andersrum angelegt ist (nach oben). Deshalb habe ich meine Visualisierung erstmal auf positive X- und Y-Achse verschoben. Danach habe ich den gesamten Content durch Transformationseditor -> Rotation 180 Grad um X-Achse verdreht. Dadurch konnte ich die gewünschte Visualisierung bekommen.

Hier tauch bei mir jedoch eine Frage auf:


Bei Transformationseditor kann man verschiedene Transformtypen auch als Data Binding adden. Ich weiß jedoch nicht, wie man das Datei in PLC programmieren muss. Bis jetzt konnte ich keinen geeigneten Parameter programmieren, sodass meine Visualisierung sich genauso also 180 Grad um X-Achse verdreht. Hätte da jemand für mich einen Vorschlag?

Vorab schonmal danke :)

Gruß

Brand

TwinCAT vs. Matlab.jpg


 
Du kannst da leider nicht direkt irgend einen PLC Wert über das Data Binding einbinden. Die verbundenen Daten müssen vom Typ TcHMI.Transform[] sein. Also ein Array von Transformobjekten. Die Definition findest du in der API Referenz im Beckhoff Infosys.
Das ganze geht dann aber schon etwas tiefer in die HMI Programmierung. Meine Lösung wäre eine Funktion zu erstellen, die aus Eingangsparametern ein Transformobjekt erstellt. diese Funktion könnte man dann über das Function-Binding der Transform-Eigenschaft einbinden.
Ist wie gesagt nur eine Idee, gemacht habe ich das noch nicht.
 
Ich kann das Problem nicht ganz nachvollziehen und bin jetzt auch nicht wirklich der Experte, bin ja selbst schnell von den Beckhoff Controls und dem normalen Data Binding abgekommen da es mich genervt hat.

Man kann mit CSS und einfachem Javascript schon viel machen, aber wahrscheinlich willst du gar nicht so tief in die Materie einsteigen oder ?

Nicht falsch verstehen, es wäre ja verständlich aber du wirst halt immer an Grenzen stoßen oder musst vielleicht mehr auf der SPS Seite machen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

vielen Dank erstmal für die Antworten.

Mithilfe des Beckhoff Supports bin ich jetzt bisschen vorangekommen aber habe das immer noch nicht wirklich hingekriegt.

Beckhoff Support meinte, dass der Transformeditor wie MasterOhh meinte, erstmal im PLC-Programm erstellt werden soll, und zwar so image001.jpg

Ich bekomme hingegen keine Veränderung, wenn ich den Beckhoff HMI Controller mit dem Parameter verknüpfe also wenn ich genau die Werte im Transformationseditor manuell eingebe, kann ich die Verdrehung realisieren aber mit ner Verknüpfung geht das iwie nicht. Kann mir jemand sagen, wo der Fehler ist?
1.jpg2.jpg3.jpg4.jpg

Gruß
Brand
 
Hi, ich könnte mir vorstellen das es nur ein falsch geschriebenes Attribute ist, im Endeffekt ist es nachher nur CSS und das kannst du dir in den Chrome Dev Tools anschauen.

Also einfach einen Handeingabe mit einer Verknüpfung vergleichen, ist bestimmt nur ne Kleinigkeit.
 
Hi,

leider kenne ich mich nicht mit CSS/HTML oder JavaScript aus und habe den Chrome Dev Tools auch noch nich benutzt. Deshalb komme ich gerade auf der DevTools-Seite nicht voran.

Kannst du mir paar Tipps geben, wie/wo ich die Attribute schreiben und womit ich diese vergleichen soll.

Danke

Gruß
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also erstmal in der Live View oben in der Symbolleiste die zwei Zahnräder anklicken -> in den Dev Tools oben links das Symbol neben "Elements" klicken dann kannst du in der Live View dein Element auswählen, ist einfacher wenn du eine umfangreiche Seite hast.

Aber ein Control besteht normal aus mehreren Elemente wie du im HTML Code sehen wirst, du musst das div mit der id welches dein vergebene Namen hat selektieren.

Und rechts siehst du die Styles und oben eben element.style { }

Eine transformation sieht dann so etwa aus: transform: translate3d(10px, 20px, 0px) rotate(90deg);

Wenn die Zeile durchgestrichen ist wird ein Fehler drin sein.
 
Zurück
Oben