C++ Programmierung eines HMI-Panels (7Zoll) mit Windows CE



  • Hallo liebe Community-Mitglieder,

    als Neuling möchte ich mich erstmal kurz vorstellen. Ich studiere Elektrotechnik und kenne mich mit C++ lediglich in der Konsolenprogrammierung unter Netbeans aus.
    Für meine Abschlussarbeit habe ich die Aufgabe bekommen, alte Handbediekästen mit rudimentären Funktionen wie Motor start/stopp durch kostengünstigere HMI-Stationen bzw. einem MobilPanel mit Features wie Prozessvisualisierung oder Archivierung zu ersetzen.
    Rentieren würde sich das allerdings erst, wenn eine Funktion bzw. ein Programm zum automatischen Generieren von Anzeigebildern zur Verfügung steht, da der Projektierungsaufwand der Visualisierung für bis zu 35 Bedienkästen pro Anlage einfach zu groß wäre.

    Einige HMI-Hersteller bieten die Programmierung mit Visual Studio C++ für Windows CE an. Bei genauerem Nachfragem konnte mir allerdings auch nicht so richtig weiter geholfen werden, da das firmeneigene Projektierungstool eher bevorzugt wird.

    Nun zu den eigentlichen Fragen 😉 :

    1. Welches Framework ist für die HMI-GUI-Programmierung besonders gut geeignet?

    2. Kann man bei der Fenstergröße das VGA-Format vorgeben?

    3. Gibt es fertige C++ Bibliotheken mit Kommunikationstreibern für den Verbindungsafubau mit PROFINET IO und einer S7 300er?

    4. Zur dynamischen Anzeigengenerierung:
      Hier sollen die Steuerelemente bzw. Icons sowie deren Größe und Position dynamisch in Abhängigkeit einer Konfigurationsdatei mit Parametersätzen erzeugt werden. Als Konfig-Datei habe ich an eine .txt, .xml, .csv oder .xls-Datei gedacht, sodass man nur kurz einen Parametersatz hinzufügen muss und dieser automatisch mitgeneriert wird.

    z.B. Soll auf dem Anzeigebild die Statusinofrmationen wie Ein/aus über 5 Asynchronmotoren mit kleinen Icons dargestellt werden. Ich stelle mir nun vor das ich die Position sowie Größe der Elemente in Abhängigkeit des VGA-Formats ähnlich wie Graphiken in LATEX mit [scale = 0.5/linewidth] vorgebe.

    Da die Anlagen immer Sonderbauformen darstellen kann es bei der nächsten nun sein, dass 6 Motoren zum Einsatz kommen.

    Idee ist nun das ich einfach in die Konfig-Datei gehe und einen weiteren Motor mit Attributen hinzufüge und dieser Automatisch mit allen Attributselementen mitangezeigt wird.
    Also z.b. drei Motoren auf der linken und drei auf der rechten Seite des VGA-Formats.

    1. Weclhe Befehle existieren zum Festlegen der Größe und Position eines Steuerelemnts z.b. numerisches Ausgabefeld?

    Viele Grüße

    energizer90



  • Hallo,

    das ist eine sehr spezielle Frage, die sicher besser nach oben in die Visual C++ Rubrik gehört.

    energizer90 schrieb:

    1. Welches Framework ist für die HMI-GUI-Programmierung besonders gut geeignet?

    Die Frage ist eher, gibt es für Visual C++ ein anderes GUI-Framework für Windows CE als die MFC ? Qt ?

    energizer90 schrieb:

    1. Gibt es fertige C++ Bibliotheken mit Kommunikationstreibern für den Verbindungsafubau mit PROFINET IO und einer S7 300er?

    Das kann ich nur für Panels mit normalem Windows Embedded (nicht CE) beantworten.
    Da kenne ich nur Siemens SOFTNET PN IO (für das Profinet auf dem Motherboard von Simatic IPCs) und die CIFX Sachen für die Karten von Hilscher. Dann noch die Windows Echtzeiterweiterungen von Kithara oder Sybera, ob die ProfiNET können oder nur EtherCAT müsste man nachsehen.

    Unter Windows CE hast du wahrscheinlich ein SDK vom Panel-Hersteller. Der hat dann eine Netzwerkschnittstelle vorgesehen oder nicht.

    energizer90 schrieb:

    1. Zur dynamischen Anzeigengenerierung:

    Auch wieder nur für normales Windows würde ich sagen, schau dir mal
    http://pvbrowser.de/pvbrowser/index.php an. Keine Ahnung, ob das mit Windows CE geht, da es auf Qt basiert theoretisch schon.

    Ansonsten, auf Windows Embedded hat man ja die Möglichkeit mit einem normalen .net Framework zu arbeiten, da kann man machen, was in C# so geht. Hübsche HMI Controls gibt es sowohl für Windows Forms als auch für WPF. Unter CE gibt es nur das .net Compact Framework.


Anmelden zum Antworten