Cancel
Showing results for 
Search instead for 
Did you mean: 

GUI - Python- Sockets

Creator
Creator

Hallo Zusammen,

 

ich habe eine Frage und zwar soll ich eine GUI für meine Simulation programmieren. Bei dieser soll man verschiedene Parameter für die Simulation einstelllen können, die GUI soll dann Plantsimulation öffnen die Parametereinstellungen weitergeben und starten. Am ende der Simulation solle so eine Art Reports gemacht werden sollen und in meiner GUI angezeigt werden. Ich würde gerne meine GUI mit Python programmieren und dachte kann die Kommunikation zwischen meine GUI und Plantsimulation über Sockets machen über die ich messages in beide Richtungen übertragen kann. Allerdings weiß ich nicht wie plant simulation diese Messages letzendlich "interpretiert". Hat vielleicht jemand ein Vorschlag oder Erfahrung mit Sockets und GUI´s.

 

 

Viele Grüße,

 

Solesito :-) 

13 REPLIES

Re: GUI - Python- Sockets

Phenom
Phenom

Wenn Du denn unbedingt eine eigene Oberfläche zur Parametereingabe  entwickeln willst - Plant Simulation bietet hierfür bereits Dialogboxen - dann solltest Du lieber mit der COM-Schnittstelle arbeiten.

 

Details /Beispiele s. Hilfe

 

 

Re: GUI - Python- Sockets

Creator
Creator

Hallo,

 

vielen Dank für die schnelle Antwort :-)

 

Ich muss leider eine eigene Oberfläche machen, da die Dialoge die bis jetzt programmiert sind überall im Modell verteilt sind und für jemanden der sich nicht mit PlantSimulation (unser Enduser) auskennt ist es ein wenig unübersichtlich. Nur zur Info ich habe die Dialoge davor nicht programmiert ;-). Außerdem um die Berichte automatisch zu erstellen und visualisieren wäre da ein Dialogbox meiner Meinung nach nicht ausreichend bzw. kann man es gar nicht machen. Ich könnte es über eine HTML Oberfläche machen aber ich kenne mich mit HTML überhaupt gar nicht aus. Und in den Infoseiten ist leider kein Beispiel dabei.

 

Ich habe auch noch eine Frage und zwar ich habe eine Datenbank in meiner Simulation eingebaut wo ich verschiedene Datensätze im laufe der Simulation speichere. Am Ende von jedem Simulationslauf will ich auf diese zugreifen und dann verarbeiten. Dadurch aber, dass die Datenbank eingebettet ist, habe ich kein absoluten Pfad sondern nur ein relativen. d.h meine GUI müsste dann erst nach dem Pfad suchen um dann auf die Datenbank zugreifen zu können oder ? 

Re: GUI - Python- Sockets

Phenom
Phenom

@ Bericht/Dialog

 

schau Dir bitte mal den "HtmlBericht" - Baustein an.  

 

@db Pfad.

probiers mal aus , ob Du über den angegeben Pfad auf die DB zugreifen kannst.

 

Ansonsten kannst Du die Werte via COM-Schnittstelle  "anzapfen" , bevor Sie in die DB geschrieben werden.

Re: GUI - Python- Sockets

Creator
Creator

Hi :-)

 

werbe beide Sachen ausprobieren. Ist alles etwas umständlich da wir immer noch mit PlantSimulation 8.2 arbeiten. 

 

Vielen Dank,

 

Solesito :-) 

Re: GUI - Python- Sockets

Phenom
Phenom

die Com Funktionen haben sich m.E. seit 8.x nicht geändert.

 

Ich bin  mir nicht sicher , ob bereits der "HtML-Bericht"-Baustein in der Version 8.x existierte.

Re: GUI - Python- Sockets

Siemens Genius Siemens Genius
Siemens Genius

Hallo und guten Morgen Solesito,

 

unabhängig von dem Problem einer Oberfläche, die wiederum die Parametereingabe zentralisieren und unabhängig von Plant Simulation machen und Simulationsergebnisse präsentieren soll, ist das vorgehen über Sockets, also eine TCP/IP Kommunikation nicht ganz ohne.

 

DIe schon vorgeschlagene Nutzung der COM-Schnittstelle erübrigt die Erstellung eines Protokolls zu Kommunikation mit der Oberfläche.

 

Dies würde nämlich bedeuten an zentraler Stelle im Modell in Plant Simulation eine Socket-Verwaltung und entsprechende Ereignismethoden für den Empfang und das Senden von Daten zu programmieren, eine Verwaltungsschicht eventuell darüber zu ziehen und ein entsprechendes Protokoll sich zu überlegen und zu implementieren.

 

Die COM-Schnittstelle macht dies komplett unnötig.

 

Ich bin mir sicher, dass für Python etliche Module existieren, die eine Nutzung von COM unter Windows ermöglichen und recht einfach gestalten können.

Von tcl/Tk kenne ich zwei Module, die wiederum die Kommunikation über COM recht einfach gestalten können.

 

Bezüglich der Oberfäche zur Parameteriengabe und -verwaltung, sowie zum Starten der Simulation und Anzeige der Ergebnisse bin ich der Überzeugung, dass es kein Problem sein sollte das Simulationsmodell so zu verändern, dass der Nutzer des Modells …

 

  1. eine entsprechende, durchaus komplexe Oberfläche über den Dialog-Baustein und
  2. die Ergebnisse im HTML-Report-Baustein ...

 

… präsentiert bekommen kann. Der HTML-Baustein wurde zusätzlich gerade überarbeitet und kann nun in einer MarkDown ähnlichen Syntax konfiguriert werden, um ansprechende und informative HTML Reports zu erzeugen und auch automatisiert zu speichern.

 

Der Vorteil wäre, sich über die Kommunikation und die Pflege und Wartung der Python-Oberfläche keine Gedanken machen zu müssen.

Denn auch die zukünftige Instandhaltung und eventuelle Veränderung der Oberfläche verlangt dann nach einem Kenner der Python- und Socket- oder COM-Materie und wirft entsprechend eventuell wieder Probleme auf!

Zusätzlich muss beim Kunden immer eine Python-Umgebung mit installiert und gepflegt werden, was dann komplett entfallen würde!

 

Ist den ein Umstieg auf neuere oder die neueste Version komplett ausgeschlossen?

 

Ansonsten würde ich eventuell wirklich auf eine HTML Oberfläche anstelle von Python zurückgreifen!

Entsprechend strukturierte HTML Seiten mit JavaScript und der Nutzung von COM-Objekten in JavaScript würde zwar die Nutzung vom Internet Explorer forcieren, hätte aber den Vorteil keine neuen Anwendungskern entwickeln zu müssen, die nötige Infrastruktur beim Kunden ohne Aufwand vorzufinden und die Entwicklung durchaus modular über JavaScript-, HTML- und CSS-Dateien vorantreiben zu können.

Der Plant Simulation eigene HTML Report könnte dann nach dem Speichern der monolitischen HTML-Datei ein integraler Bestandteil dieser HTML-Oberfläche sein.

 

Aber ... grundsätzlich würde ich die zentralisierte Oberfläche über ein oder mehrere Dialog-Bausteine in Plant SImulation erstellen, dass Modell entsprechend anpassen und eventuell sogar vom aktuellen Benutzer abhängig machen, so dass abhängig vom Benutzer unterschiedliche Varianten der zentralen Oberfläche angezeigt werden könnten.

 

Mit freundlichen Grüßen,

 

Martin Lemburg

Martin Lemburg


Siemens PLM Software
Digital Factory Division
Product Lifecycle Management
Manufacturing Engineering Software / R&D / Plant Simulation
Siemens Industry Software GmbH, Berlin / Germany

Did you like the answer? Then click the Thumbs Up button.

Did the answer solve your problem? Then accept the answer as solution

Re: GUI - Python- Sockets - ODBC-Nutzung

Siemens Genius Siemens Genius
Siemens Genius

Hallo Solesito,

 

die Nutzung des ODBC-Bausteins bedeuted, dass Kunden, die über die Python-Oberfläche mit Plant Simulation arbeiten, auch eine Möglichkeit haben müssen die ODBC-Einstellungen zu ändern und eine MS Access Installation vor Ort haben müssen - zumindest bei der Nutzung von eines Datenbankformats, dass nur mit MS Access genutzt werden kann.

Natürlich kann der ODBC-Bausteien jede dem ODBC-System bekannte Datenbank verwalten, nur sind viele von denen Lizenzpflichtig und somit oft auch vom Kunden in der Nutzung kostenpflichtig.

 

Alleine diese Konfigurierung ist manchmal alleine Administratoren vorbehalten!

 

EIgentlich ist dies nur noch ein Grund auf neuere Versionen hinzuweisen!

 

Ab Version 10 gibt es den SQLite Bausteien, der auf der Basis eines Dateipfads eine SQLite Datenbank oder eine In-Memory-Datenbank verwalten kann!

 

Mit freundlichen Grüßen,

 

Martin Lemburg

Martin Lemburg


Siemens PLM Software
Digital Factory Division
Product Lifecycle Management
Manufacturing Engineering Software / R&D / Plant Simulation
Siemens Industry Software GmbH, Berlin / Germany

Did you like the answer? Then click the Thumbs Up button.

Did the answer solve your problem? Then accept the answer as solution

Re: GUI - Python- Sockets - ODBC-Nutzung

Creator
Creator

Hallo Zusammen,

 

vielen Dank für eure Hilfe  und für die ausführliche Darstellung der Möglichkeiten wie ich mein GUI-Python-Simulation Problem lösen kann :-)

 

Die Simulation mache ich im Rahmen meiner Masterarbeit und das Institut wo ich es schreibe hat leider keine Ressourcen um auf eine neuere Version umzusteigen und das obwohl ich mehrmals betont habe welche Vorteile dies hätte. Die Masterarbeit wird in Kooperation mit einem Industriepartner geschrieben. Da der Dialogbaustein in Version 8.2 sehr begrenzt ist muss wie gesagt eine GUI her damit unsere Industriepartner und mein Betreuer mit einfachen clicks die Simulation komplett bedienen können. Nur ein zentraler Dialogbaustein wäre an der Menge von Parametern die geändert werden können etwas unübersichtlich. 

 

Da die Simulation auf einem Rechner im Institut laufen soll, wird es nicht so schwierig sein alle entsprechende Module und Installationen vorzunehmen. Ich habe nur noch 3 Monate bis zur Abgabe und habe bislang nur programmiert , d.h ich habe leider keine Zeit um mir noch auf die schnelle eine neue Sprache beizubrigen also werde ich erstmal mit Python weiter machen und wenn ich abgegeben habe die HTML-Schnittstelle programmieren und die GUI mit Python einfach "ausschalten" . Ist zwar doppelte Arbeit aber unter den Umständen geht es leider nicht anders.  

 

Ich habe gestern mit der GUI angefangen und die COM-Schnittstelle funktioniert bis jetzt einwandfrei.

 

Wie ich auf die eingebettete Datenbank zugreifen werde:

  1. Pfad wird in eine lokale Variable in PlantSimulation gespeichert
  2. Über die COM-Schnittstelle werde ich über eine get Anweisung auf die lokale Variable zugreifen und diese dann benutzen um mich mit der Datenbank verbinden zu können.  
  3. Über Python und SQL- Queries werden die Daten der Datenbank verarbeitet um die entsprechende Reports erstellt. (Da alle ganz gerne mit Excel Dateien arbeiten muss ich noch was dazu programmieren)
  4. Meine Frage---> Kann man es so machen? 

 

Außerdem habe ich ein großes und ein kleines Problem.

 

Großes Problem: Die Simulation ist richtig langsam da ich über Tabellen zwischen Datenbank und Simulation kommunizieren muss.

 

Beispiel:

 

  • Bauteil A wird in Teilkomponenten A1, A2, A3 demontiert 
  • Eingang Demontagestation: Datensätze zu Bauteil A werden in der Datenbank generiert wie zum Beispiel eindeutige Demontage_ID, Bauteil_ID usw. (zur Info, die Datenbank soll die Simulationsläufe und wann sie durchgefährt worden sind speichern -->für die Erstellung der Reports)
  • Ausgang Demontagestation: Bestimmte Datensätze werden aus der Datenbank geholt in einer Tabelle zwischengespeichert und dann auf die BE´s übertragen da diese für spätere Prozesse benötigt werden wie zum Beispiel aussortieren oder  Methoden je nach Befund nach xy Zeiteinheiten auszulösen. 

Meine Frage an dieser Stelle, kann man es vielleicht irgendwie anders machen und wenn ja wie? Oder wie kann ich meiner Simulation schneller machen? 

 

Kleines Problem: Um die Aktuelle Parametereinstellung der Simulation in meine GUI anzuzeigen und ändern gibt es meiner Meinung nach zwei mögliche Wege aber ich weiß nicht welcher der beiden der bessere ist. 

  • Option A: Eine externe Datenbank einbauen, hier speichere mit Unterstützung der COM-Schnittstelle die Parametereinstellungen die zuletzt benutzt worden sind als die Simulation zum letzten mal gespeichert wurde. Diese hole ich mir über meine GUI und zeige sie an. 
  • Option B: Die aktuelle Parametereinstellung komplett über die COM-Schnittstelle hollen und anzeigen dafür müsste ich das Simulationsmodell erstmal laden und öffnen. Problematisch hier ist es allerdings sollte der Nutzer die Parametern ändern wollen, müsste ich das Simulationsmodell erstmal zumachen und dann wieder laden und öffnen oder? 
  • Option C  ---> Irgendwas anderes ? 

 

Ich hoffe ich habe es halbwegs verständlich erklärt :-) und wenn nicht könnt ihr gerne fragen. 

 

Vielen lieben Dank,

 

solesito 

 

Re: GUI - Python- Sockets - ODBC-Nutzung

Phenom
Phenom

@ option B

 

wieso bist Du der Meinung,  daß das Modell zum Parameterupdate geschlossen und wieder geöffnet werden muß ?