====== Page Flow Diagram (PFD) ====== {{:de:public:applications:programmiertechnik:page-flow_diagram_p1.jpg?400 |}} Mit dem Page Flow Diagram werden in iCon-L Softwarelösungen programmiert die Bedien- und Anzeigeelemente enthalten, welche auf vielen unterschiedlichen Seiten und Masken verteilt sind. Im Grunde ist das Page Flow Diagram ein Programmablaufplan (PAP) für den Aufruf/Sichtbarschaltung von HMI-Masken. Der wesentlichen Unterschied besteht darin, dass Grundelemente des PAP, wie z.B. die IF-Anweisung nicht auf der obersten Ebenen zu sehen sind, sondern in Makros gekapselt werden. ===== Eigenschaften einer einfachen Seite ===== {{ :de:public:applications:programmiertechnik:page-flow_diagram_p2.jpg?400|}} Die folgende Beschreibung bezieht sich auf die Umsetzung für eine spezielle HMI-Projekt Vorlage, kann aber einfach auf andere Anwendungsfälle übertragen werden. Eine einfache Page hat im Standard-PFD einen Eintrittspunkt und zwei Austrittspunkte (Page-Makro). Über das PFD wird nicht die gesamte Display-Seite sichbar geschaltet, sondern nur der Bereich //B//. Zur kompletten Display-Seite gehört noch die Maske A-Navigation und die Maske C-Status. A und C exsitieren im Projekt nur einmal und sind immer sichtbar. Diese Bereiche sind also nicht Teil der eigentlichen Page. Die Button //Return// und //Next// auf der Maske C-Navigation werden von der Page selbst ausgewertet und führen zum Verlassen der Seite über die entsprechenden Ausgänge. **Grundregel 1:** Jede Page prüft selbst die Bedingungen zum Verlassen. Es gibt also keinen zentralen Mechanismus der das Verlassen der Page steuert. **Grundregel 2:** Jede Page hat beim Eintritt dafür zu sorgen, dass alle Bedingungen geschaffen werden, um korrekt zu arbeiten. Der Inhalt der Headline wird ebenfalls vom Page-Makro beschrieben. Das zentrale Page-Makro kann im Page-Flow-Diagram (PFD) an jeder beliebigen Stelle eingebunden werden. ===== Page Control Diagram ===== Unterhalb des zentralen Page-Makros befindet sich das Page-Control-Diagram (PCD). Das PCD ist für jede Page grundsätzlich gleich aufgebaut und besteht aus den Makros * INIT * RUN * DEINIT * DISTRIBUTOR (DISTR) ==== Namenskonventionn für die Makros ==== In iCon-L müssen Makros eindeutlige Namen haben. Um nun die Namen innerhalb des PFD und des PCD einfach zu halten, sollte vor allen Makronamen einer Page ein 3 Zeichen-Präfix gesetzt werden. In der Praxis hat es sich bewährt, Pages zu nummerieren. Aus diesem Grund wird in den Vorlagen auch eine 3 stellige Nummer für den Seiten-Präfix verwendet. * .Pagename * _INIT * _RUN * _DEINIT * _DISTR ==== INIT ==== {{ :de:public:applications:programmiertechnik:page-flow_diagram_p3.jpg?600|}} * Hauptseite der Page sichbar schalten * Headline überschreiben * Status der LED für die Seitenanzeige in der Status-Maske schalten * Alle weiteren Funktionen, die beim Eintritt in die Page ausgeführt werden müssen * z.B. Konfiguration aus einer INI-Datei lesen * ... ==== RUN ==== * Return und Next-Buttons der Navigation prüfen und Bedingung zum Verlassen der Seite setzen. * Alle weiteren Funktionen, die während der Sichbarkeit der Page zyklisch ausgeführt werden sollen. * Prozesswerte auslesen und anzeigen, die nur bei Sichtbarkeit der Page gelesen werden müssen. * Grafische Objekte zur Parametereingabe aufrufen. * ... ==== DEINIT ==== * Hauptseite der Page unsichbar schalten * Status der LED für die Seitenanzeige in der Status-Maske ausschalten * Alle weiteren Funktionen, die beim Verlassen der Page ausgeführt werden müssen * z.B. Neue Konfiguration in eine INI-Datei schreiben * ... ==== DISTRIBUTOR ==== * Schaltbedingungen, die zum Verlassen der Seite geführt haben, prüfen und den Flow-Chart-Pfad setzen (IF-Anweisungen ausführen). ===== Anwendung des PFD in einer konkreten Applikation ===== In der konkreten Applikation wird nicht die gesamte Seite einer HMI über das PFD gesteuert, sondern nur die rechte Bildschirm-Seite. Weiterhin ist in dem Beispiel auch die Verwendung von Sub Page Flow Diagrams (SPFD) zu sehen. {{ :de:public:applications:programmiertechnik:page-flow_diagram_p4.jpg?1000 |}}