Was benötigt man für eine Twincat HMI oder was kann man empfehlen

Ralle

Super-Moderator , User des Jahres 2006-2007
Teammitglied
Beiträge
15.535
Reaktionspunkte
4.166
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich arbeite mich gerade in Twincat 3.1 ein.
Die Target-Visu habe ich im PLC-Projekt gefunden, funktioniert auch.
In einem Web-Video habe ich gesehen, dass dort für ein HMI ein neues Projekt erstellt wurde und dann bei "hinzufügen" ein Tempalte für HMI ausgewählt werden konnte. (https://www.youtube.com/watch?v=kdn2-emwvk8 ca ab 2:16)
Bei mit gibt es dort "nur" TwinCat Measurement, TwinCat Projekte, TwinCatSPS und TcXaeShell Solution.

1. Ist das ein extra Paket? Und wann ja, welches und wo finde ich das.
2. Was würdet ihr generell als HMi für ein Twincat-Projekt empfehlen?
 
Zuletzt bearbeitet von einem Moderator:
Target Visu und TwinCat HMI sind zwei verschiedene Paar Schuhe. Die Target Visu ist Bestandteil von Codesys, Du kannst sie aber auch auf dem Zielsystem oder als Webvisu anzeigen lassen. Dort ist sie dann auch deutlich flotter als in der Entwicklungsumgebung. Die TwinCat HMI ist eine HTML5-basierte HMI von Beckhoff. Dafür musst musst Du zusätzliche TwinCat Functions herunterladen, ich meine TE2000 und TF2000.

Wir haben die TwinCat HMI vor ca. 4 Jahren ausprobiert. Damals war sie noch so katastrophal, dass wir dann doch wieder die Target Visu, oder PLC-HMI, wie sie bei Beckhoff heisst, genommen haben. Man kann auch mit der PLC-HMI viel machen, aber man muss alle Objekte zeichnen, Erzeugung per Code ist nicht möglich. Allerdings wird diese Visu bei Codesys vom Hausmeister programmiert. Die Versionen sind mal besser, mal schlechter, und manchmal hat eine neue Version Fehler, die längst überwunden geglaubt waren. Die aktuelle Version (also die vom Codesys, das derzeit in TwinCat werkelt), ist mal wieder eine schlechtere. Wenn ich noch mal von vorn anfangen müsste, würde ich keine der beiden nehmen, sondern wohl VisiWin von Inosoft.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
TE2000 heißt das neue HMI von Beckhoff, weil die integrierte Codesys-HMI ist wirklich katastrophal. Darum hat das Beckhoff vor einiger Zeit selbst in die Hand genommen.

Mein persönlicher Favorit für Beckhoff-Steuerungen ist allerdings MS Visual Studio - aber das hatten wir ja heute schon. :cool:
@Ralle wenn Du mehr wissen willst, frag gerne. Ich möchte das nicht aufdrängen.
 
Neben Visi-Win kann man auch Zenon von Corpa Data als Scada-System empfehlen. Die unterstützen TwinCAT auch schon ewig und sind (waren?) Standard bei BMW.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Zenon von Copa Data hat für mich den größten Nachteil, dass es sehr an das Betriebssystem gebunden ist. Bestimmte Versionen laufen bis XP/Win7, möchte ich diese Visu auf einem W10 Rechner zum laufen bekommen, dann muss ich auf eine höhere Version hochrüsten und wenn der Support der vorherigen Lizenz abgelaufen ist ( was bei Zenon nicht so lange dauert ), dann muss ich für diese Visu eine komplette Lizenz neu kaufen ( keine Upgrade ).

Außerdem, der Support läuft relativ schnell aus bei den Versionen und dann ist der Support kostenpflichtig.

Ansonsten ist es ein tolles System
 
Zuletzt bearbeitet:
Wir verwenden etwas eigenes mit python und pyqt5 gestrickt. Qt ist ja ein Standard der auch in der Softwareentwicklung in der Industrie oft verwendet wird. Python kommt auch immer mehr in der Industrie zum Einsatz. Also für mich war es auch umgewöhnung weil ich aus der Siemens Welt komme. Aber ich finde es inzwischen sehr gut. Mit pycharm als Ide sehr gut. Die in twincat integrierte Visu und C# habe ich für twincat auch schon genommen in der Vergangenheit, das war aber eine andere Firma.. Und da waren auch wieder andere Anforderungen.
 
Mein persönlicher Favorit für Beckhoff-Steuerungen ist allerdings MS Visual Studio

Ich verwende derzeit auch Visual Studio 2019 via C#.
Wie organisierst du den Variablenzugriff LESEN - SCHREIBEN
Wie programmierst Du eine einfache Taste mit Rückmelde LED?

Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;


namespace HMI.CalibrationSetupHmi
{
    using Beckhoff.App.Ads.Core;
    using Beckhoff.App.Ads.Core.Plc;


    public partial class P008_Kalibrierablauf : Form
    {
        private static IBAAdsServer AdsServer;
        private IBAAdsPlcClient _plcClient;
        private List<IBAAdsNotification> _notifications;


        public P008_Kalibrierablauf(IBAAdsServer adsServer)
        {
            InitializeComponent();


            try
            {
                AdsServer = adsServer;
                _notifications = new List<IBAAdsNotification>();
                //  _cncClient = adsServer.GetAdsClient<IBAAdsPlcClient>("CNC");
                _plcClient = AdsServer.GetAdsClient<IBAAdsPlcClient>("PLC");
                _plcClient.Synchronize = true;
                //var notify = new OnChangeDeviceNotification("Global_HMI.nComFromPLC", PlcVarHandler);
                //_plcClient.AddPlcDeviceNotification(notify);


            }
            catch (Exception Except)
            {
                MessageBox.Show("Error ! " + Except.Message);
            }
         }




        // ###################################################################################


        private void Timer1_Tick(object sender, EventArgs e)
        {


            if (_plcClient.SymbolExists("Global_HMI.pActPoint.X") &&
                _plcClient.SymbolExists("Global_HMI.pActPoint.Y") &&
                _plcClient.SymbolExists("Global_HMI.pActPoint.Z") &&
                _plcClient.SymbolExists("Global_HMI.pActPoint.C") &&
                _plcClient.SymbolExists("Global_HMI.pActPoint.A")  )


            {
                // act pos
                textBoxPointActX.Text = _plcClient.ReadSymbol("Global_HMI.pActPoint.X").ToString();
                textBoxPointActY.Text = _plcClient.ReadSymbol("Global_HMI.pActPoint.Y").ToString();
                textBoxPointActZ.Text = _plcClient.ReadSymbol("Global_HMI.pActPoint.Z").ToString();
                textBoxPointActC.Text = _plcClient.ReadSymbol("Global_HMI.pActPoint.C").ToString();
                textBoxPointActA.Text = _plcClient.ReadSymbol("Global_HMI.pActPoint.A").ToString();
            }
            else
            {
                // act pos
                textBoxPointActX.Text = "--> X < --";
                textBoxPointActY.Text = "--> Y < --";
                textBoxPointActZ.Text = "--> Z < --";
                textBoxPointActC.Text = "--> C < --";
                textBoxPointActA.Text = "--> A < --";
            }
        }
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich verwende derzeit auch Visual Studio 2019 via C#.
Wie organisierst du den Variablenzugriff LESEN - SCHREIBEN
Wie programmierst Du eine einfache Taste mit Rückmelde LED?

Das ist ein sehr komplexes Thema. Nur für den ADS-Zugriff habe ich ein eigenen ADS-Kernel auf Basis der TwinCAT.Ads.dll geschrieben.
Prinzipiell basiert es auf drei Zugriffsarten: 1. Direkt schreiben, 2. Direkt lesen, 3. Abonnieren
Bevor Du anfangen kannst, musst Du erst mal klären, was passiert wenn z.B. SPS später bereit ist als das HMI, oder wenn die Verbindung unterbrochen wurde und zurückkehrt. Wie geht die Anwendung damit um. Du brauchst so ein paar grundlegende Dinge wie den Verbindungsstatus, eine Liste, wo Du alle Abo's bereithälst, um die bei Unterbruch abzubauen und bei Wiederkehr alle Abo's wieder anmelden zu können.
Dann brauchst Du eine intelligente Abo-Steuerung, weil alle Variablen, die nicht gebraucht werden, sollten (z.B. bei einem Bildwechsel) abgemeldet werden. Man kann nur 1024 Abo's gleichzeitig je Instanz anmelden. Mehr als eine Instanz ist aber nicht zu empfehlen, weil das geht auf die Performance. Und selbst meine komplexesten HMI's - die sind wirklich umfangreich - kommen mit der Begrenzung problemlos zurecht. Blöd ist auch doppelte Abo's anzumelden. Die sollten intelligenterweise zusammengefasst werden. Beim Anmelden eines Abo's übergebe ich die Speicheradresse der Methode, die aufgerufen werden soll, wenn die Wertänderung aus der SPS gefeuert wird. So ist man am flexibelsten und kann die Änderung direkt an die richtige "Adresse" weiterleiten.
Direkt lesen und direkt schreiben sollten kein Problem darstellen.

Wie mache ich einen Taster mit Rückmeldung?
Ich habe einen FB_Button in der SPS mit einer Schnittstelle VAR_IN in_Enable, in_Lock, in_UserRelease, in_Feedback, in_Flashing usw. und VAR_Out on_LockResult, on_UserFlag. Das ganze mündet in einem USINT mit dem Namen nB. Dieses USINT nB wird von meiner Klasse HMI_Button aboniert und die einzelnen Bit's steuern die Rückmeldung, das Enable oder Blinken. Wenn der Button freigegeben ist, wird mit dem Tastendruck an dem Abo vorbei das Bit 7 gesetzt. Der SPS-Baustein gibt das Ergebnis an am Ausgang on_Userflag bekannt.
 
Zuletzt bearbeitet:
Nur für den ADS-Zugriff habe ich ein eigenen ADS-Kernel auf Basis der TwinCAT.Ads.dll geschrieben.

Das klingt natürlich extrem genial und effizient.
Ich wollte mich mit HMI auf BASIS C# ursprünglich nicht beschäftigen,
aber da ich derzeit ein Projekt mache wo ich als Basis ausschließlich die

Beckhoff.App.Shell.Core.exe

für eine CNC Anwendung verwende, war es dann do nötig einzelne Forms zu schreiben für eine Minimal VISU.
Für den Rest reicht die Beckhoff.App.Shell.Core.exe völlig aus.
Die siehst ja oben wie simpel (in Deinen Augen bestimmt primitiv) das gemacht ist.
Auch ist jede Form komplett unabhängig. Die Bilder (Forms) werden über Funktionstasten aufgerufen.
Ein direktes springen von einer Form zur anderen Form geht nicht. Das würde dem Beckhoff Konzept auch
zuwiderlaufen. Auf diese Art komme ich klar, muss aber alles zu Fuß machen, was gerade noch so geht bei
der Projektgröße.

Jedenfalls ist Dein Ansatz wirklich Klasse.
 
Mit der TwinCAT.ADS.dll geht es genauso einfach und "primitiv". Aber man wird halt nie ein leistungsfähiges HMI zusammenkriegen, wenn man die Möglichkeiten nicht richtig ausbaut. :p

Damit angefangen habe ich 2009, und da war schon ein interesantes Selbst-Lernprojekt. Bei dem System, was ich heute zusammen habe, muss ich mich vor den die klassischen HMI-Lösungen nicht verstecken - im Gegenteil...:cool:
 
HMI mit einer Beckhoff PLC, da habe ich glaube in den letzten 20 Jahren alles durch. Heute würde ich sagen gibt es drei Versionen.

1. Selber entwickeln, z.B. C# hat den Vorteil es fallen keine Lizenzgebühren für die Applikationen an, aber man hat viel Entwicklungsarbeit. Völlige Freiheit bei der Umsetzung lohnt aber nur, wenn man die Entwicklung in x-fache Anwendung verkaufen kann.

2. TF2000 von Beckhoff, heute mag ich die HMI absolut. Für Sondermaschinen ohne Wiederholungen die Lösung für mich! TargetVisu will ich heute nicht mehr machen.

3. Scada Anwendungen von den großen Anbietern, VisiWin habe ich gern benutzt.

"Die Lösung" gibt es nicht, es hängt von den Rahmenbedingungen ab. Deswegen gibt es auch so viele Varianten.

Wenn ein Inbetriebnehmer in Brasilien noch etwas an der HMI herumbasteln will, ist eine fette C# Applikation sicher nicht die richtige Lösung. Da ist eine Scada Lösung einfacher zu bedienen.

Aber die Anforderungen werden immer fetter, so ist meine Erfahrung das die HMI immer mehr ein Job wird. PLC und HMI zusammen entwickeln, stirbt in meinem Umfeld langsam aus. Man hat die Zeit nicht mehr beides zu tun.
 
HMI mit einer Beckhoff PLC, da habe ich glaube in den letzten 20 Jahren alles durch. Heute würde ich sagen gibt es drei Versionen.

1. Selber entwickeln, z.B. C# hat den Vorteil es fallen keine Lizenzgebühren für die Applikationen an, aber man hat viel Entwicklungsarbeit. Völlige Freiheit bei der Umsetzung lohnt aber nur, wenn man die Entwicklung in x-fache Anwendung verkaufen kann.

2. TF2000 von Beckhoff, heute mag ich die HMI absolut. Für Sondermaschinen ohne Wiederholungen die Lösung für mich! TargetVisu will ich heute nicht mehr machen.

3. Scada Anwendungen von den großen Anbietern, VisiWin habe ich gern benutzt.

"Die Lösung" gibt es nicht, es hängt von den Rahmenbedingungen ab. Deswegen gibt es auch so viele Varianten.

Wenn ein Inbetriebnehmer in Brasilien noch etwas an der HMI herumbasteln will, ist eine fette C# Applikation sicher nicht die richtige Lösung. Da ist eine Scada Lösung einfacher zu bedienen.

Aber die Anforderungen werden immer fetter, so ist meine Erfahrung das die HMI immer mehr ein Job wird. PLC und HMI zusammen entwickeln, stirbt in meinem Umfeld langsam aus. Man hat die Zeit nicht mehr beides zu tun.
100% Zustimmung
Man hat vieles drag and drop ala Siemens Visu und hat aber weiterhin die Möglichkeit viel eingene Entwicklung einfließen zu lassen
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Habe die Erfahrung gemacht, dass die TF2000 sehr Leistungshungrig ist.
Hatte einen CX9020 der laufend in ein TimeOut gelaufen ist, und dadurch die E/A Ebene nicht sauber gearbeitet hat.
Habe jetzt auf einen IPC mit Windows10 umgerüstet damit die Visu sauber darauf läuft.
 
Auf CX keine Erfahrung mit Te2000 HMi
Wenn man viele Graphiken verwendet braucht das umschalten von Seiten schon etwas länger
 
Aber die Anforderungen werden immer fetter, so ist meine Erfahrung das die HMI immer mehr ein Job wird. PLC und HMI zusammen entwickeln, stirbt in meinem Umfeld langsam aus. Man hat die Zeit nicht mehr beides zu tun.
Stimme ich auch voll zu. Das Thema wird immer komplexer. Alleine wenn man nicht auf Standard Beckhoff Farben steht einen eigenen Stileguide zu implementieren und zu pflegen ist ein komplettes Projekt.
Dann kommt noch die Datenkommunikation mit zig verschiedenen Systemen hinzu.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Auf CX keine Erfahrung mit Te2000 HMi
Wenn man viele Graphiken verwendet braucht das umschalten von Seiten schon etwas länger
Ja die TE2000 will performante Rechner, also ein i5 Vierkerner aus der 7ten Generation ist zu Träge. Aber moderne Smartphones sind für die HMI Anzeige einfach nur Top. Der Server sollte schon mindestens auf einem potenten 4Kerner laufen. Eine Applikation von mir, läuft auf einem aktuellen 4kern Pentium N .. geht so lala. In meinem Office arbeite ich mit 10 Kerner (Intel) und 12 Kerner (AMD). Da ist dann eh alles andere langsam. 🙃
 
Stimme ich auch voll zu. Das Thema wird immer komplexer. Alleine wenn man nicht auf Standard Beckhoff Farben steht einen eigenen Stileguide zu implementieren und zu pflegen ist ein komplettes Projekt.
Dann kommt noch die Datenkommunikation mit zig verschiedenen Systemen hinzu.
Wenn man schon mal 40 Achsen im TwinCAT laufen hat, ist selbst Motion schon ein Job. Mache gerade TwinSAFE mit ELM72xx SafeMotion ..... da wird selbst Safety schon komplex.
 
Habe die Erfahrung gemacht, dass die TF2000 sehr Leistungshungrig ist.
Hatte einen CX9020 der laufend in ein TimeOut gelaufen ist, und dadurch die E/A Ebene nicht sauber gearbeitet hat.
Habe jetzt auf einen IPC mit Windows10 umgerüstet damit die Visu sauber darauf läuft.
CX9020 mit HMI Server drauf?? Das geht?? Auf die Idee wäre ich nicht gekommen.
 
Zurück
Oben