TIA Eigene .Net Controls in TIA-Portal V14 integrieren

KrtschMaster

Level-1
Beiträge
8
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Tag liebes Forum.
Ich habe folgendes Problem und hoffe auf einen Denkanstoß in die richtige Richtung:
Wir benutzen seit Kurzem das TIA-Portal V14, da sich ein Umstieg nicht mehr vermeiden lässt. Nun habe ich gelesen, dass es dort möglich ist, selbstgeschriebene .Net Controls im WinCC Advanced zu nutzen.
Leider ist die integrierte Hilfe hier nicht sehr hilfreich und auch eine Anleitung kann ich im Interent nicht finden.
Die Hilfe sagt:

1. Öffnen Sie in die Task Card "Werkzeuge > Eigene Controls".
2. Wählen Sie im Kontextmenü den Befehl "Objekte wählen". [...]
(Die Hilfe habe ich direkt aus dem TIA-Portal heraus geöffnet und der Eintrag heißt "Eigene Controls verwalten".)

Und genau dort liegt auch das Problem. Es gibt keinen Reiter "Eigene Controls" und die Schaltfläche "Control hinzufügen/entfernen" ist auch ausgegraut.
Ich gehe davon aus, dass ich zunächst eine Bibliothek o.Ä. anlegen muss, kann aber keine Anleitung dazu finden.
Online Suchergebnisse verweisen ebenfalls auf diesen nichtvorhandenen Reiter.

Die verwendete Software:
Totally Integrated Automation Portal Version V14 Update 1
SINAMICS Startdrive Version V14
STEP7 Professional Version V14 Update 1
WinCC Advanced Version V14 Update 1

Über jegliche Hilfe, Anregung oder sogar Anleitung würde ich mich sehr freuen. Vielen Dank im Voraus.
 
"Control hinzufügen/entfernen" ist auch ausgegraut.
Das "hinzufügen" ist für ein in die Liste bestehende Control in ein Bild hinzufügen.
Um ein Control in die Liste zu bekommen, dann "Select Objects - CTRL-N" ("Objekte wählen" ?). Es taucht dann ein Dialog auf wo man durch die Controls auf der PC blättern kann.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,

hast du ein WinCC RT Advanced angelegt im projekt oder nur ein Panel?
Bei mir sieht das mit Advanced so aus (wenn ein Bild geöffnet ist und Werzeuge rechts gewählt wurde):
controls.jpg

Dann auf den grauen Bereich ein Rechtsklick und "Objekte wählen" klicken und beim 3ten reiter "spezifische .NET Controls" deine Controls suchen und übernehmen.

Gruß
Christoph
 
Ich habe WinCC RT Advanced.
Um ein Control in die Liste zu bekommen ist es egal ob es um ein Panel oder ein PC RT handelt.
Um ein Control von die Liste in ein Projekt zu einfügen, dann macht es ein Unterschied ob es um ein Panel oder ein PC RT handelt.
Zuerst ist die Liste leer, wie in dein Screenshot. Du musst unter eigene Controls rechts-klicken, und dann "Objekte wählen" oder was es auf deutsch heist.
 
Hihi,

das weiß ich doch alles, das war eigentlich mehr als Antwort an den Fragesteller gedacht und nicht als Reaktion auf Deine Antwort ;)

Gruß
Christoph
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe bisher testhalber nur ein Panel in das Projekt integriert.
Die Unterkategorie, wie auf dem Screenshot zu sehen, gibt es bei mir erst garnicht. Die suche ich ja.
Ich weiß nicht genau, an welcher Stelle ich "Select Objects - CTRL-N" ("Objekte wählen" ?) auswählen soll. Mit CTRL-N passiert nichts.
TIA Snap.jpg
So sieht meine "Werkzeuge Taskcard" aus.
 
Also wenn es um ein Basic oder Comfort Panel handelt, dann kannst du keine eksterne Controls verwenden. Nur mit ein PC RT kannst du eksterne Controls einbinden.
N.B.: Du hast ja auch WinCC Advanced in ersten post genannt.
JesperMP schrieb:
Um ein Control in die Liste zu bekommen ist es egal ob es um ein Panel oder ein PC RT handelt.
Das war leider falsch. WinCC stellt nur die Elemente zur verfügung die man einfügen kann.
Wenn man ein PC RT konfiguriert, dann taucht die eksterne Controls auf.
 
Vielen Dank für die Antworten. Es war also mein Fehler, denn: Eigene Controls sind bei Panelprojekten nicht möglich.
Dann werde ich mein Testprojekt nun umbauen und es nochmal versuchen. :roll:
 
Zuviel Werbung?
-> Hier kostenlos registrieren
So, nach ein wenig ausprobieren ist es mir gelungen, selbstgeschriebene Controls zu verwenden. Allerdings nicht in der Art, die ich mir gewünscht habe.
Warum veröffentlichen meine Controls - weder ActiveX noch .Net - keine Events und keine Felder? Benötige ich zum vernünftigen Benutzen eine Lizenz von "WinCC Control development"? :twisted:
Oder habe ich beim Schreiben etwas übersehen?
Die einzigen Events, die veröffentlicht werden sind bei jedem Control, auch bei denen von Siemens gleich:
Activate und Deactivate.
Was mich allerdings etwas stutzig macht und weshalb ich vermute, dass eine Lizenz benötigt wird ist die Tatsache, dass nicht mal der Windows Standardbutton ein Klickereignis bereitstellt.
Ich bin etwas ratlos, da ich auch nicht auf Verdacht mal eben eine Lizenz kaufen möchte, wenn ich nicht weiß, ob es dann wie gewünscht funktioniert.:???:
 
Es liegt daran, das Siemens da wieder etwas Eigenes macht. Siehe dazu bitte auch hier :
https://www.sps-forum.de/hmi/86741-array-string-anzeige-tabelle.html?highlight=datagridview

Wegen dem Control-Develpment habe ich mal mit Siemens telefoniert. Das ist aber auch nicht das, was ich mir darunter vorgestellt habe. Erwartet hatte ich, wie du im Grunde auch, dass man hier eine DLL bekommt, die einen in die Lage versetzt, Properties und Events von eigenen Controls dem TIA-WinCC zugänglich zu machen. Das ist es aber nicht ... du erhältst lediglich die Möglichkeit, direkt auf SPS-Variablen zugreifen zu können (über deren Variablen-Namen). Hier könnte man dann natürlich eine String-Property für das Control machen, mit der du den Namen übergibst ... man muss ihn halt dann nur "zu Fuss" dort eintragen - direkt aus der Variablen-Liste übernehmen läuft da auch nicht.

Was dir nur bleibt ist, Controls mit einfachen Properties zu erstellen, die du dann über ein Script ansprichst ... UND nach Möglichkeit nicht allzu viel (am Besten gar nichts) noch nachträglich im Control zu instanzieren ...

Gruß
Larry
 
Gibts dazu schon ein Beispiel vom Siemens òder von jemand anderen. Ich hab nämlich nichts gefunden...
Grüße
 
Ein Beispiel gibt es nicht, allerdings eine Antwort von Siemens auf die Frage, wie man denn mit einem eigenen Control Events veröffentlicht.
Antwort von Siemens:
"Sehr geehrter Herr .....
Grundsätzlich haben Sie die Möglichkeit eigenen Controls unter bspw. WinCC Advanced Runtime einzubinden.
Jedoch unterstützt wird von uns nur die Funktionalität des ControlDevelopment Kit.
[Link zum development kit]
Dieses Development Kit beinhaltet eine Beschreibung und Beispiel VS Solution welches die wesentlichen Funktionen beinhaltet um zwischen eines Eigenen Controls und der WinCC Advanced/Professional Runtime zu interagieren.
Dies beschränkt sich auf eine Schnittstelle zum Lesen und Schreiben von HMI Variablen aus dem Control heraus. [Wie bereits von Larry Laffer erklärt]
Unter WinCC Advanced Runtime werden die eigenen Control in einem Kontainer in die Runtime Bilder eingebettet der keine eigene public Events zugreifbar macht.
Auch ein Zugriff aus einem VBS Script über HMIRuntime Objekt auf deisen Kontainer und dessen Inhalt wird nicht unterstützt.
Zum Interagieren zwischen Ihrem Control und den HMI Variable, bspw. beim Ebent eines eingebundenen Buttons, können Sie nur die Schnittstelle nutzen die im Control Development Kit beschrieben ist."

Auch, wenn diese Antwort etwas widersprüchlich und maschinell erstellt scheint, ist die Kernaussage m.E. "es werden keine Events unterstützt".
Es funktioniert allerdings, ein komplett autarkes Control zu schreiben, das seinerseits alle notwendigen Interaktionen mit der PLC durchführt. Also auf die Weise, dass das Control eine Variable in der PLC beschreibt welche von der HMI gelesen wird und umgekehrt.
 
Also, ich verwende ActiveX Controls, und es funktioniert auch in TIA V14.
Den direkte beschalten von Parameter auf in ein Bild eingebettete Control gibt es nicht mehr.
Aber die unterschiedliche Methoden und Eigenschaften kann man in VBS behandeln.
Z.B. (mit Chestysoft Cszgraph OCX):
Code:
Set chart=HmiRuntime.Screens("F-------").ScreenItems("MxTrnPlot")
...
chart.OriginY = 350
chart.MaxY = 300
chart.XOffset = 0
...
For i = 0 To Index
  n = Index - i + 200
  COSP_value = Int(SmartTags("MxTrn")(n)) 
  chart.AddPoint (i) , COSP_value, vbGreen, "COSP"
Next

edit:
Das wiederspricht den Aussage von Siemens Support
Auch ein Zugriff aus einem VBS Script über HMIRuntime Objekt auf deisen Kontainer und dessen Inhalt wird nicht unterstützt.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Nach Migrierung von V13SP1 auf V14SP1 bin ich jetzt der Meinung das Siemens den Verwendung von externen ActiveX oder .NET controls in der Praxis komplett gesperrt hat. Es sei denn, man verwendet den sogenannte ControlDevelopment Option für WinCC.
Ich habe ein ActiveX mit WinCC Flexible und WinCC V13SP1 verwendet, aber ab V14SP1 geht das offenbar nicht mehr.
Ich habe auch versucht mit .NET controls und Custom .NET controls, aber kein Erfolg (wie KrtschMaster es auch oben schon erklärt).

Was denn ?
Um ein Ersatz für den ActiveX den ich bis jetzt verwendet habe, überlege ich den obengenannte ControlDevelopment Option für WinCC.
Aber es gibt kein Dokumentation, kein Bestellcode, gar nichts...
https://mall.industry.siemens.com/mall/de/dk/Catalog/Products/10165501?tree=CatalogTree
Weis jemand etwas ?
 
Nach Migrierung von V13SP1 auf V14SP1 bin ich jetzt der Meinung das Siemens den Verwendung von externen ActiveX oder .NET controls in der Praxis komplett gesperrt hat. Es sei denn, man verwendet den sogenannte ControlDevelopment Option für WinCC.

Das kann ich (zum Glück) nicht bestätigen bzw. sogar widerlegen.
Das Verwenden von eigenen .Net Controls unter TIA V14 SP1 Upd.1 funktioniert. Allerdings muss ich hierbei etwas eingrenzen, da ich nicht alles ausprobieren kann. Es geht um selbstgeschriebene .Net Controls, die mit .Net framework Versionen ab 4.0 kompatibel sind und auch keinerlei Funktion "nach außen" rausgeben. Das bedeutet, das Control erledigt alles, was es können muss selbst und wird nicht durch TIA gesteuert. Beispielsweise ist ein Button "Lese Variable xy aus PLC" des Controls nicht mit dem Ereignis "Lese Variable" von TIA verbunden, sondern das Control baut eigenständig eine Verbindung zur PLC auf und liest dort die Variable xy.
Das HMI projekt ist quasi nur der Host des Controls, der sonst bspw. von einer Windows Form repräsentiert wird.

Um ein solches Control allerdings nutzen zu können gilt es einige Voraussetzungen zu erfüllen (Ich beziehe mich hier ausschließlich auf ein .Net Control, da ich diese erfolgreich getestet habe):
  • das Control ist kompatibel zum .Net Framework 4.0 und höher
  • in eine bzw. mehrere dll kompiliert (die TIA Suche ermöglicht auch .exe Dateien einzufügen, allerdings habe ich das noch nicht ausprobiert)
  • das Projekt in dem das Control verwendet werden soll ist zwingend ein WinCC RT Advanced oder WinCC Professional Projekt
  • die dll befindet sich auf dem Entwicklungspc an einem beliebigen Ort. Sollte dieser Ort nicht das Installationsverzeichnis der WinCC Runtime sein, muss die Datei dort ebenfalls hin.
    • Beispielpfad "C:\Program Files\Siemens\Automation\WinCC RT Advanced". Hier sind schon einige dlls vorhanden. Das zu verwendende Control MUSS hier abgelegt sein. (Hinzugefügt werden kann es von einem beliebigen Ort.)

Um nun das Control zu benutzen geht man vor, wie im TIA13 auch.
Ein WinCC RT Advanced Projekt anlegen und ein Bild öffnen. Im Kasten "Werkzeuge" auf der rechten Seite den Reiter "Eigene Controls" erweitern. Das Kontextmenü öffnen und "Objekte auswählen..." bzw. strg + N.
Jetzt die Registerkarte "Spezifische .Net-Controls" anwählen und die Assembly suchen.
Enthält die dll Controls, werden diese nun in der Liste angezeigt. Hier noch ein Häkchen setzen, mit OK bestätigen und das Control befindet sich in der Liste "Eigene Controls". Es kann nun verwendet werden. Allerdings wird hier die komplette Formatierung von TIA überschrieben. Es empfiehlt sich, schon bei der Programmierung Teiler, Splitpanels o.Ä. zu fixieren. Wenn hier viele Elemente und Ausrichtungen von einander abhängen, kann das schon sehr nervig werden.
Das war alles, damit ist ein selbstgeschriebenes .Net Control unter TIA V14 in einem WinCC RT Advanced bzw WinCC Professional Projekt nutzbar.
 
@KrtschMaster:
Ich muss dir zumindestens teilweise widersprechen. Hier noch mal etwas, dass ich dazu in einem anderen Thread geschrieben habe :
Es ist also tatsächlich so, dass man TIA mit selbst erstellten .Net-Controls, zumindestens bei der PC-Runtime, aufpimpen kann.
Diese Controls können dabei sogar aufwändige Grafik-Spielereien beinhalten. Sie dürfen nur keine komplexen Properties haben. Diese werden entweder ignoriert oder falsch behandelt (was u.U. zum Absturz von TIA führen kann).
Es ist mir bislang nicht direkt gelungen, Variablen an solche Properties zu binden - dafür würde man dann ein Script benötigen.
Darüber hinaus hat Siemens auch ein spezielles Verhalten eingebaut : Die Properties Size (bzw. Width und Height) und Location werden, auch wenn sie im Konstruktor behandelt werden, ignoriert. An diese Stelle setzt Siemens dann Größe und Position, die zwar dasselbe bewirken, jedoch irgendwie den Konstruktor aushebeln können.
Hat ein Control komplexe Properties (also z.B. etwas, das über den ExpandableObjectConverter des .Net PropertyGrids laufen würde) so müßte man diese entweder auflösen oder durch zusätzlich, dem Control hinzuzufügende, Methoden behandeln.

Also :
selbsterstellte Controls würden prinzipiell funktionieren. Wenn diese Controls aber dynamisch etwas instanzieren (Klassen-Objekte, Listen, Collections etc.) dann wird TIA in den allermeißten Fällen abstürzen bei der Einbindung des Controls auf der jeweiligen Bildschirmseite. :(
Events von .Net-Controls generell lassen sich in/unter TIA nicht verwenden - sie sind quasi gar nicht da ... :(

Gruß
Larry
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@KrtschMaster
Wenn ich dich richtig verstanden habe, dann ist ein .NET Control ein komplett eigenständiges Programm, ohne Interaktion mit der Benutzer oder z.B. die in WnCC Adv konfigurierte PLC Variabeln.
Wenn den .NET Controll PLC Variabeln zugreifen muss, dann für den Zugang auf der PLC muss der Control sein eigene eingebettete Treiber haben ?
In den Fall ist es führt es für mich keineswegs hin.
Ich hatte gehofft das ich den bestehende Funktionalität in WinCC Advanced etwas ergänzen konnte, nicht komplett ersetzen.
 
1.png2.jpg3.jpg4.jpg
Guten Morgen!
Also so sieht das Control bei mir aus. Es besteht aus einem Elementhost (Bild1) der weitere Elemente wie in Bild 4 aufnimmt. (Es folgt noch ein letztes, aber das Forum sagt, ich darf nur maximal 5 Dateien pro Post anhängen !? Ich zähle 4).
Die Controls, die der Elementhost aufnimmt, werden instanziiert, in eine ObservableCollection<Control> und eine List<Tuple<Int,String>> geschrieben. Hab es mit 24 Einträgen ausprobiert. Allerdings schrieb Larry Laffer ja auch "Wenn diese Controls aber dynamisch etwas instanzieren (Klassen-Objekte, Listen, Collections etc.) dann wird TIA in den allermeißten Fällen abstürzen[...]". Bisher konnte ich beim Testen keine ASbstürze oder ein hängen feststellen, ich habe aber auch nur dieses eine Control getestet.
Dass Tia die Einstellungen für Höhe und Breite des Controls überschreibt ist richtig. Das ist aber m.E. nicht weiter schlimm, denn man kann dies ja bei der Programmierung des Controls berücksichtigen. Alle untergeordneten Elemente müssen sich so an der Größe ihres Elternelementes ausrichten. Das Hauptcontrol lässt sich ganz einfach "ziehen". Wie eben die guten, alten Windows Forms. Wenn das Fenster zu klein ist, passen die Elemente eben nicht rein.;)
@JesperMP
Es ist so zu sagen ein eigenständiges Programm, ja. Aber der nutzer kann ganz normal interagieren. Je nach Beschreibung des Controls.
Treiber sind keine notwendig, nur eben ein Weg, mit der PLC zu kommunizieren. Gibt es da nicht "Libnodave" oder soetwas? Ich meine, mich dunkel zu erinnern, ist aber schon länger her. Wir benutzen eine eigene Bibliothek, die über tcp/ip mit der sps verbunden ist und direkte Adressen liest/schreibt.
Möglich, dass man auch über den umweg über die PLC quasi "hintenrum" die HMI Variablen ansprechen kann, habe ich aber noch nicht ausprobiert.
 
Zuletzt bearbeitet:
Zurück
Oben