Post on 01-Nov-2019
transcript
L
Ä.Mw~ä
1344
8693
PLC Designer
Engineering Tools
Application Template _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Softwarehandbuch DE
Inhalt
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Inhalt
1 Über diese Dokumentation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.1 Dokumenthistorie. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.2 Verwendete Konventionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.3 Verwendete Hinweise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.4 Verwendete Begriffe (geordnet nach der Reihenfolge in der Geräte-Ansicht) . . . . . . . 13
2 Sicherheitshinweise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3 Voraussetzungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.1 Systemvoraussetzung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.2 Kommunikation zum Controller einrichten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
4 Was ist das ApplicationTemplate? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.1 Ziel des ApplicationTemplates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.2 Eigenschaften des ApplicationTemplates im Überblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.3 Elemente des ApplicationTemplates. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
4.3.1 Maschinenmodulbaum (MachineModuleTree - MMT) . . . . . . . . . . . . . . . . . . . . . 19
4.3.2 Maschinenmodule (MM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.3.3 Adressierung der Maschinenmodule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
4.3.4 Modulapplikation (MAP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
4.3.5 Kommunikation zwischen den Maschinenmodulen . . . . . . . . . . . . . . . . . . . . . . . 22
4.3.6 Statemachine (Zustandsmaschine) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
4.3.7 Errorhandling (Fehlerbehandlung) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
5 Das Automationssystem strukturieren: Prinzipielle Vorgehensweise. . . . . . . . . . . . . . . . . . . . 25
5.1 Das Automationssystem modularisieren - Vorgehensweise. . . . . . . . . . . . . . . . . . . . . . . . 27
5.2 Strukturieren innerhalb eines Maschinenmoduls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
5.2.1 MAP-Teilfunktion einzelnen Tasks zuordnen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
5.2.2 Programmier-Empfehlungen zum Strukturieren. . . . . . . . . . . . . . . . . . . . . . . . . . . 29
6 Übersicht - Die Struktur des ApplicationTemplates. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
7 Das ApplicationTemplate öffnen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
7.1 Neues Projekt erstellen - ApplicationTemplate öffnen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
7.2 Controller im Projekt aktualisieren (optional) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
7.3 Online gehen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
7.3.1 Projektdaten übersetzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
7.3.2 Projekt in die Steuerung übertragen - "Einloggen" . . . . . . . . . . . . . . . . . . . . . . . . . 36
7.4 PLC-Programm laden und starten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
7.5 Erste Schritte - Das ApplicationTemplate bedienen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
7.6 Visualisierung der Maschinenmodule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
2 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
Inhalt
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
8 Arbeiten mit dem ApplicationTemplate. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
8.1 Realen Maschinenaufbau im »PLC Designer« abbilden . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
8.1.1 Geräte anhängen - Bussystem EtherCAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
8.1.2 Geräte anhängen - Bussystem CANopen (optional) . . . . . . . . . . . . . . . . . . . . . . . . 45
8.2 Eigene Maschinenmodule erstellen: MM_EmptyModul kopieren/einfügen. . . . . . . . . 53
8.3 Instanzen von Maschinenmodulen erzeugen: Create MM Instance. . . . . . . . . . . . . . . . . 54
8.4 Erstelltes Maschinenmodul in den MMT einbinden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
8.5 Zuordnen der Modulapplikation (MAP) zur Task. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
8.6 Instanzen eines Maschinenmoduls entfernen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
8.7 Maschinenmodule entfernen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
8.8 Modulkennung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
8.9 Achse einfügen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
8.10 I/O-Module des I/O-System 1000 mit einem Maschinenmodul einbinden . . . . . . . . . . 63
8.11 Modulapplikationen erstellen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
8.11.1 Funktion des eingefügten Modulapplikation anpassen - Übersicht . . . . . . . . . 66
8.11.2 Häufig gestellte Frage: Zusammenhang zwischen MFB und MAP. . . . . . . . . . . 67
8.11.3 Innerhalb der Modulapplikation programmieren . . . . . . . . . . . . . . . . . . . . . . . . . . 68
8.11.4 Modulapplikation einbinden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
8.12 Online Change . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
8.12.1 Wann ein "Online Change" im ApplicationTemplate möglich ist . . . . . . . . . . . . 71
8.12.2 Wann ein "Online Change" nicht möglich ist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
8.12.3 Allgemeine Programmier-Empfehlungen, die ein "Online Change" ermöglichen 72
9 Architektur: Das ApplicationTemplate im Detail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
9.1 Auf Strukturvariablen von Maschinenmodulen zugreifen. . . . . . . . . . . . . . . . . . . . . . . . . . 74
9.1.1 Auf moduleigene Strukturvariablen zugreifen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
9.1.2 Auf Strukturen von anderen Maschinenmodulen zugreifen . . . . . . . . . . . . . . . . 75
9.2 Die Struktur AppChannelData (ACD) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
9.2.1 ACD-Struktur im MFB deklarieren/registrieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
9.2.2 Auf die ACD-Struktur zugreifen - Mit der Modulapplikation des MFB . . . . . . . 77
9.2.3 Auf eine ACD-Struktur zugreifen - Mit der Modulapplikation des MFB-Master-Moduls. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
9.3 Statemachine (Zustandsmaschine). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
9.3.1 Zustandsübergänge und Bedingungen - Übersicht. . . . . . . . . . . . . . . . . . . . . . . . . 80
9.3.2 Ausgangszustand der Zustandsübergänge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
9.3.3 Die Zustandsübergänge im Detail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
9.3.4 Abbildung der Stati/Zustände - Enum L_EATP_SMStates. . . . . . . . . . . . . . . . . . . 85
9.3.5 Stati aktivieren - Methode baseChannelSetNominalState . . . . . . . . . . . . . . . . . . 85
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 3
Inhalt
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
9.4 Standardkopplung ("DefaultCoupling") . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
9.4.1 Standardmechanismen des ApplicationTemplates. . . . . . . . . . . . . . . . . . . . . . . . . 86
9.4.2 Die Funktion "DisableDefaultCouplingMaster" . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
9.4.3 Die Funktion "DisableDefaultCouplingSlave" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
9.5 Statusübergänge beeinflussen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
9.6 Status der Zustandsmaschine anzeigen - FB L_EATP_SMAccess . . . . . . . . . . . . . . . . . . . . 92
9.7 Zustandsmaschine: Abfragebeispiele. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
9.8 Wo ist das Verhalten eines Maschinenmoduls programmierbar?. . . . . . . . . . . . . . . . . . . 94
9.8.1 Zustandsübergang (State-Entry/State-Exit) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
9.9 Errorhandling (Fehlerbehandlung) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
9.9.1 Fehler definieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
9.9.2 Fehlerreaktion konfigurieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
9.9.3 Fehler quittieren. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
9.9.4 Fehler quittieren: Reaktion im Maschinenmodul . . . . . . . . . . . . . . . . . . . . . . . . . . 98
9.9.5 Fehler auslösen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
9.9.6 Zentrales Errorhandling im ApplicationTemplate: Error List . . . . . . . . . . . . . . . . 100
9.9.7 Übersicht Systemfehlermeldungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
9.9.8 Fehler-Übersicht von allen Maschinenmodulen exportieren: CSV-Datei . . . . . 102
9.10 Logbuch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
9.11 Moduldiagnose . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
9.12 Multitasking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
9.13 Konsistente Datenübertragung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
9.14 Internal Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
9.14.1 Internal Control beenden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
9.14.2 Was bewirkt das Internal Control? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
10 Visualisieren im ApplicationTemplate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
10.1 Die Visualisierung erweitern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
10.2 Eigenschaften von Schaltflächen definieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
10.3 Eine Visualisierung hinzufügen: Prinzipielle Vorgehensweise . . . . . . . . . . . . . . . . . . . . . . 115
11 Die Bibliothek L_EATP_ApplicationTemplate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
11.1 Automatisch generierte Funktionen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
11.1.1 GetBooleanProperty (automatisch generiert vom »PLC Designer«) . . . . . . . . . 119
11.1.2 GetCompany (automatisch generiert vom »PLC Designer«) . . . . . . . . . . . . . . . . 120
11.1.3 GetNumberProperty (automatisch generiert vom »PLC Designer«) . . . . . . . . . 120
11.1.4 GetTextProperty (automatisch generiert vom »PLC Designer«). . . . . . . . . . . . . 121
11.1.5 GetTitle (automatisch generiert vom »PLC Designer«) . . . . . . . . . . . . . . . . . . . . . 121
11.1.6 GetVersion (automatisch generiert vom »PLC Designer«) . . . . . . . . . . . . . . . . . . 122
11.1.7 GetVersionProperty (automatisch generiert vom »PLC Designer«). . . . . . . . . . 122
4 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
Inhalt
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
11.2 1_POUs - Program Organization Units. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
11.2.1 L_EATP_Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
11.2.2 L_EATP_CriticalSection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
11.2.3 L_EATP_ErrorListHandler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
11.2.4 L_EATP_ErrorSet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
11.2.4.1 Fehlerbehandlung (ErrorHandling) anpassen . . . . . . . . . . . . . . . . . . . . 128
11.2.4.2 Fehler quittieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
11.2.5 L_EATP_Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
11.2.5.1 Base() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
11.2.6 RegisterACD() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
11.2.7 setCompIDAndVersion() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
11.2.8 L_EATP_ModuleDiag. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
11.2.9 L_EATP_ModuleErrorHandler. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
11.2.10 L_EATP_ModulRelations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
11.2.11 L_EATP_SMAccess . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
11.3 2_Structs_Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
11.3.1 L_EATP_ACD_Base (ACD-Struktur) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
11.3.2 L_EATP_BaseChannel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
11.3.3 L_EATP_ErrorList. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
11.3.4 L_EATP_ErrorListEntry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
11.3.5 L_EATP_MMD_Base (MMD-Struktur) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
11.3.6 L_EATP_MM_Address. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
11.3.7 L_EATP_MVis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
11.3.8 L_EATP_scBase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
11.4 3_Enums . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
11.4.1 L_EATP_ErrorReactionType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
11.4.2 L_EATP_SMStates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
12 Ein Automationssystem strukturieren: Beispiel Fliegende Säge. . . . . . . . . . . . . . . . . . . . . . . . . 140
12.1 Vorbereiten: Das Automationssystem in Teilfunktionen aufteilen . . . . . . . . . . . . . . . . . 140
12.1.1 Teilfunktionen des Maschinenaufbaus identifizieren . . . . . . . . . . . . . . . . . . . . . . 141
12.1.2 Teilfunktionen des Maschinenaufbaus als Maschinenmodule abbilden . . . . . 141
12.1.3 Maschinenmodule als Baumstruktur darstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
12.2 Realen Maschinenaufbau im »PLC Designer« abbilden . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
12.2.1 Geräteaufbau: Master und Slaves anhängen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
12.2.2 Zykluszeit einstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 5
Inhalt
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
12.3 Maschinenmodule erstellen und einbinden. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
12.3.1 Maschinenmodule erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
12.3.2 Maschinenmodule in den Maschinenstrukturbaum einbinden . . . . . . . . . . . . . 145
12.3.3 Modulapplikationen der Maschinenmodule verwalten . . . . . . . . . . . . . . . . . . . . 146
12.3.4 Achse in die Modulapplikation einfügen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
12.3.5 Modulapplikation den Tasks zuordnen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
12.4 Kommunikation zwischen den Master- und Slave-Modulen einrichten . . . . . . . . . . . . . 149
12.5 Anwendungsbeispiel: Die Visualisierung erweitern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
12.6 Statemachine/Zustandsmaschine. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
12.6.1 Zustandsübergang im Maschinensteuermodul steuern . . . . . . . . . . . . . . . . . . . . 153
12.6.2 Zustandsübergänge in den Slave-Modulen steuern . . . . . . . . . . . . . . . . . . . . . . . . 155
12.7 Handfahren der Achsen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
12.8 Errorhandling: Fehlerverhalten konfigurieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
13 Das Beispielprojekt "ApplicationTemplateCounter" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
13.1 Beispielprogramme im Maschinenmodul MM_Module1/MM_Module2 . . . . . . . . . . . 162
13.1.1 Zustand "Automatic" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
13.1.2 Zustand "Mode1" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
13.1.3 Zustand "Mode2" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
13.1.4 Zustand "Service" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
13.1.5 Zustand "Fault"/"Systemfault" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
13.2 Beispielprogramm Maschinenmodul MM_Machine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
13.3 Simulation im ApplicationTemplateCounter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
6 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
Inhalt
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
14 Anhang . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
14.1 Methoden-Übersicht - ApplicationTemplate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
14.1.1 Auf die Zustandsmaschine zugreifen - Die Methoden des BaseChannels . . . . 166
14.1.2 Moduleigene Zustandsübergange sperren/freigeben . . . . . . . . . . . . . . . . . . . . . . 168
14.1.3 Quickstop/Schnellhalt-Verhalten der Statemachine aktivieren/deaktivieren 168
14.1.4 Standardkopplung ("DefaultCoupling") aktivieren/deaktivieren . . . . . . . . . . . . 169
14.2 Tipps&Tricks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
14.2.1 Ein Maschinenmodul umbenennen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
14.2.2 Weiteres Vorgehen: Schaltflächen der Visualisierung umbenennen . . . . . . . . 171
14.2.3 Rezepturverwalter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
14.2.4 Voraussetzung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
14.2.5 Rezepturdefinition erstellen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
14.2.6 Rezepturdefinition - Variablen zuweisen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
14.2.7 Rezepturen in eine Rezepturdefinition einfügen . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
14.2.8 Rezepturen verwalten mit RecipeManCommands . . . . . . . . . . . . . . . . . . . . . . . . . 176
14.2.8.1 Create Recipe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
14.2.8.2 ReadAndSaveRecipeAs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
14.2.8.3 LoadFromAndWriteRecipe. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
14.2.8.4 WriteRecipe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
14.2.8.5 ReadRecipe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
14.2.8.6 GetRecipeCount . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 182
Ihre Meinung ist uns wichtig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 7
Über diese Dokumentation
8 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
1 Über diese Dokumentation
Diese Dokumentation beschreibt die Funktionsweise der Lenze-Applikationsvorlage "Application-Template", um auf Basis dieser Vorlage anschließend ein Lenze-Automationssystems programmie-ren zu können. Das verwendete Automationssystem besteht aus einer PLC für das System"Controller-based Automation" und über das Bussystem angeschlossene Antriebskomponenten.
Tipp!
Aktuelle Informationen zu Lenze-Produkten finden Sie im Download-Bereich unter: http://www.Lenze.com
Das vorliegende Handbuch ordnet sich in die Handbuchsammlung "Controller-based Automation"ein. Die Handbuchsammlung besteht aus folgenden Dokumentationen:
Lesen Sie zuerst die dem Antriebsregler beiliegende Montageanleitung, bevor Sie mit den Arbeiten beginnen!
Die Montageanleitung enthält Sicherheitshinweise, die zu beachten sind!
Hinweis!
Diese Dokumentation ergänzt die Onlinehilfe zum »PLC Designer«.
Dokumentation/Kürzel Thema
Systemhandbücher (SHB) • "Controller-based Automation"• Visualisieren
Kommunikationshandbücher (KHB)
• "Controller-based Automation" EtherCAT®• "Controller-based Automation" CANopen®• "Controller-based Automation" PROFIBUS®
Softwarehandbücher (SW) • Controller• »PLC Designer«• »Engineer«• »VisiWinNET® Smart«• »Backup & Restore«
Informationen zum Einsatz des Controllers außerhalb der "Controller-based Automati-on" finden Sie in den auf den Anwendungsfall zugeschnittenen Systemhandbüchern.
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 9
Über diese Dokumentation
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Weitere Technische Dokumentationen zu Lenze-Produkten
Weitere Informationen zu Lenze-Produkten, die in Verbindung mit der Controller-basedAutomation verwendbar sind, finden Sie in folgenden Dokumentationen:
Zielgruppe
Diese Dokumentation richtet sich an alle Personen, die ein Lenze-Automationssystem auf Basis derLenze-Applikationsvorlage "ApplicationTemplate" im Rahmen der "Controller-based Automation"projektieren, in Betrieb nehmen und programmieren.
Bildschirmfotos (Screenshots)/Anwendungsbeispiele
Alle Bildschirmfotos (Screenshots) in dieser Dokumentation sind exemplarische Anwendungsbei-spiele. Je nach Firmware-Version der Lenze-Geräte und Software-Version der installierten Enginee-ring-Tools (hier: »PLC Designer«) kann die Darstellung von der tatsächlichen Bildschirm-Darstellungabweichen.
Montieren & Verdrahten Symbole:
MAs Controller Gedruckte Dokumentation
MA Servo-Inverter i700 Onlinehilfe/PDF-Datei
MAs Servo Drives 9400
MAs Inverter Drives 8400 Kürzel:
MA I/O-System 1000 (EPM-Sxxx) BA Betriebsanleitung
MAs Kommunikationskarten (MC-xxx) KHB Kommunikationshandbuch
MAs Kommunikationsmodule MA Montageanleitung
SW Softwarehandbuch
Parametrieren, Konfigurieren, in Betrieb nehmen SHB Systemhandbuch
SW Controller
SW Servo-Inverter i700
SW Servo Drive 9400 HighLine/PLC/Versorgungs- und Rückspeisemodul
Inbetriebnahme-Leitfaden 9400 HighLine
SW Inverter Drive 8400StateLine/HighLine/TopLine
SHB I/O-System 1000 (EPM-Sxxx)
BAs Servosystem ECS (ECSxE, ECSxM)
KHBs Kommunikationsmodule
Programmieren
SW Funktionsbibliothek 9400
Wiederverwenden
SW Application Sample i700
SW Application Samples
SW ApplicationTemplate
Über diese DokumentationDokumenthistorie
10 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Informationen zur Gültigkeit
Die Informationen in dieser Dokumentation sind gültig für folgende Lenze-Software:
Gültig für folgende Lenze-Vorlagen:
• Beispielprojekt "ApplicationTemplate Counter": L_ApplicationTemplateCounter
• Applikations-Vorlage "Application Template": L_ApplicationTemplate
1.1 Dokumenthistorie
Software ab Softwarestand
»PLC Designer« 3.5
Version Beschreibung
1.0 04/2012 TD11 Erstausgabe
1.1 07/2012 TD11 Aktualisiert zu M5 des ApplicationTemplate• Allgemeine Korrektur• Anpassung an VISU-Layout gemäß Lenze Programmier-Styleguide für FBs.
1.2 11/2012 TD11 Aktualisiert zu »PLC Designer« V3.3.2• Neu: Beispielprojekt ApplicationTemplateCounter (Lenze-Standard)
1.3 04/2013 TD11 Aktualisiert zu »PLC Designer« V3.5• Softwareupdate von ApplicationTemplateCounter/ApplicationTemplate.• Neu: Anwendungsbeispiel "Fliegende Säge".
1.4 10/2013 TD11 Aktualisiert zu »PLC Designer« V3.6• Optimierungen aus Usability-Tests (User group) eingearbeitet.• Systemfehlermeldungen ergänzt.• Struktur L_EATP_MMD_Base ergänzt.• Befehl "Create MM Instance" ergänzt.
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 11
Über diese DokumentationVerwendete Konventionen
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
1.2 Verwendete Konventionen
Diese Dokumentation verwendet folgende Konventionen zur Unterscheidung verschiedener Artenvon Information:
Informationsart Auszeichnung Beispiele/Hinweise
Zahlenschreibweise
Dezimaltrennzeichen Punkt Es wird generell der Dezimalpunkt verwendet.Zum Beispiel: 1234.56
Textauszeichnung
Versionsinfo Textfarbe blau Alle Informationen, die nur für oder ab einem bestimmten Softwarestand des Antriebsreglers gelten, sind in dieser Do-kumentation entsprechend gekennzeichnet.Beispiel: Diese Funktionserweiterung ist ab dem Software-stand V3.0 verfügbar!
Programmname » « »PLC Designer«...
Fensterbereich kursiv Das Meldungsfenster... / Das Dialogfeld Optionen...
Variablenbezeichner Durch Setzen von bEnable auf TRUE...
Steuerelement fett Die Schaltfläche OK... / Der Befehl Kopieren... / Die Register-karte Eigenschaften... / Das Eingabefeld Name...
Folge von Menübefehlen Sind zum Ausführen einer Funktion mehrere Befehle nachei-nander erforderlich, sind die einzelnen Befehle durch einen Pfeil voneinander getrennt: Wählen Sie den Befehl DateiÖffnen, um...
Tastaturbefehl <fett> Mit <F1> rufen Sie die Onlinehilfe auf.
Ist für einen Befehl eine Tastenkombination erforderlich, ist zwischen den Tastenbezeichnern ein "+" gesetzt: Mit <Shift>+<ESC>...
Hyperlink unterstrichen Verweis auf weiterführenden Informationen: Hyperlink zu weiterführenden Informationen.
Symbole
Seitenverweis ( 11) Verweis auf weiterführenden Informationen: Seitenzahl in PDF-Datei.
Schrittweise Anleitung Schrittweise Anleitungen sind durch ein Piktogramm ge-kennzeichnet.
Über diese DokumentationVerwendete Hinweise
12 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
1.3 Verwendete Hinweise
Um auf Gefahren und wichtige Informationen hinzuweisen, werden in dieser Dokumentation fol-gende Signalwörter und Symbole verwendet:
Sicherheitshinweise
Aufbau der Sicherheitshinweise:
Anwendungshinweise
Piktogramm und Signalwort!
(kennzeichnen die Art und die Schwere der Gefahr)
Hinweistext
(beschreibt die Gefahr und gibt Hinweise zur Abhilfe.)
Piktogramm Signalwort Bedeutung
Gefahr! Gefahr von Personenschäden durch elektrische SpannungHinweis auf eine unmittelbar drohende Gefahr, die den Tod oder schwere Verletzungen zur Folge haben kann, wenn nicht die entsprechenden Maß-nahmen getroffen werden.
Gefahr! Gefahr von Personenschäden durch eine allgemeine GefahrenquelleHinweis auf eine unmittelbar drohende Gefahr, die den Tod oder schwere Verletzungen zur Folge haben kann, wenn nicht die entsprechenden Maß-nahmen getroffen werden.
Stop! Gefahr von SachschädenHinweis auf eine mögliche Gefahr, die Sachschäden zur Folge haben kann, wenn nicht die entsprechenden Maßnahmen getroffen werden.
Piktogramm Signalwort Bedeutung
Hinweis! Wichtiger Hinweis für die störungsfreie Funktion
Tipp! Nützlicher Tipp für die einfache Handhabung
Verweis auf andere Dokumentation
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 13
Über diese DokumentationVerwendete Begriffe (geordnet nach der Reihenfolge in der Geräte-Ansicht)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
1.4 Verwendete Begriffe (geordnet nach der Reihenfolge in der Geräte-Ansicht)
Begriff/Abkürzung Position in der Geräte-Ansicht Funktion
MaschinenmodulbaumMMT A10_MachineModuleTree
Der Maschinenmodulbaum "MachineModuleTree" (MMT) bildet die Struktur des Automationssys-tems in Form von Maschinenmodulen ab.
• Im "MachineModulTree" sind alle für die Ma-schine erforderlichen Maschinenmodule ent-sprechend des mechtronischen Zusammenwirkens hierarchisch verschaltet.
ModuleApplicationCalls MAC A11_ModuleAppCalls
Innerhalb der "ModuleApplicationCalls" sind die Modulapplikationen der entsprechenden Task zu-zuordnen.
• Dadurch ist definiert, welche Modulapplikation in welcher Task abzuarbeiten ist.
MaschinenmodulMM A70_MachineModuleSources
Ein Maschinenmodul bildet eine Einheit des realen Maschinenaufbaus im »PLC Designer« ab.
• Das Maschinenmodul ist Bestandteil des Ma-schinenModulTree(MMT), in dem die einzelnen Maschinenmodule miteinander verschaltet sind.
Maschinenmodulappli-kationMAP
Die Maschinenmodulapplikation stellt die Funktio-nalität eines Maschinenmoduls bereit.
• Ein Maschinenmodul kann eine oder mehrere Maschinenmodulapplikationen enthalten.
Maschinenfunktionsbau-steinMFB
Der MaschinenFunktionsBaustein repräsentiert das Machinenmodul im Maschinenmodulbaum/MachineModuleTree (MMT).
Sicherheitshinweise
14 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
2 Sicherheitshinweise
Beachten Sie die folgenden Sicherheitshinweise, wenn Sie mit einen Antriebsregler bzw. eineAnlage in Betrieb nehmen möchten.
Lesen Sie die zum Antriebsregler bzw. zu den einzelnen Komponenten der Anlage mitgelieferte Dokumentation sorgfältig durch, bevor Sie mit der Inbetriebnahme der Geräte beginnen!
Die Gerätedokumentation enthält Sicherheitshinweise, die beachtet werden müssen!
Gefahr!
Nach heutiger wissenschaftlicher Erkenntnis ist es nicht möglich, die absolute Fehlerfreiheit einer Software sicherzustellen.
Sie müssen Anlagen mit eingebauten Antriebsreglern ggf. mit zusätzlichen Überwachungs- und Schutzeinrichtungen nach den jeweils gültigen Sicherheitsbestimmungen ausrüsten (z. B. Gesetz über technische Arbeitsmittel, Unfallverhütungsvorschriften), damit ein unzulässiger Betriebszustand zu keiner Gefährdung von Personen oder Einrichtungen führt.
Während der Inbetriebnahme dürfen sich keine Personen ohne ausreichenden Sicherheitsabstand in der Nähe des Motors oder den vom Motor angetriebenen Maschinenteilen aufhalten, da ansonsten eine Verletzungsgefahr durch bewegte Maschinenteile besteht.
Stop!
Wenn Sie im »PLC Designer« Parameter ändern, während eine Online-Verbindung zum Gerät besteht, werden die Änderungen direkt in das Gerät übernommen!
Eine falsche Parametrierung kann zu nicht vorhersehbaren Motorbewegungen führen. Durch ungewollte Drehrichtung, zu hohe Geschwindigkeit oder ruckhaftem Lauf können angetriebene Maschinenteile beschädigt werden!
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 15
VoraussetzungenSystemvoraussetzung
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
3 Voraussetzungen
3.1 Systemvoraussetzung
3.2 Kommunikation zum Controller einrichten
• Verbinden Sie den Engineering-PC über ein Netzwerkkabel mit dem Controller. Der »PLC Designer« greift via Ethernet auf den Controller zu.
• Die IP-Einstellungen sind mit dem »PLC Designer« vorzunehmen.
So überprüfen Sie die Kommunikationseinstellungen:
1. In der Geräte-Darstellung den gewünschten Controller doppelklicken.
2. Gewünschte Einstellungen auf der Registerkarte Kommunikationseinstellungen vornehmen.• Schaltfläche Gateway hinzufügen betätigen, um einen Gateway einzuzufügen.
Engineering-PC Controller
Hardware PC/Notebook PLC (Logic) ab Firmware V3.3
Betriebssystem Windows XP Windows CE
Erforderliche Lenze-Software »PLC Designer« ab V3.3• Enthält das ApplicationTemplate• Enhält die Lenze-Bibliothek
"L_EATP_ApplicationTemplate.compiled-library"
Runtime Software• Logic• Motion (dazu sind die
Projektinformationen zu aktualisieren: "Geräte aktualisieren" )
Sonstiges - Je nach Anwendungsfall:• CAN- oder EtherCAT-Bussystem• CAN- oder EtherCAT-Busteilnehmer
VoraussetzungenKommunikation zum Controller einrichten
16 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
• Gewünschte IP-Adresse des Controllers eingeben.
[3-1] Beispiel: IP-Adresse des Controllers eingeben, Standardeinstellung: 192.168.5.99
3. Schaltfläche OK betätigen, um den Controller als Gateway hinzuzufügen.
4. Durch Doppelklicken auf den gewünschten Kanal (oder Betätigen der Schaltfläche Aktiven Pfad setzen) in der Geräte-Ansicht unterhalb des Gateways ausgewählten Kanal als aktiven Pfad zum Controller setzen.• Dadurch beziehen sich alle Kommunikationsaktionen direkt auf diesen Kanal.• Der gerade aktive Pfad wird in der Liste fett dargestellt und "(aktiv)" wird angehängt:
5. Ein in Kursivschrift dargestelltes Gerät ist als aktiver Pfad gesetzt, wurde aber beim letzten Netzwerk-Scan nicht identifiziert.
Hinweis!
Beachten Sie bei der Erst-Inbetriebnahme die vordefinierte IP-Adresse: 192.168.5.99
Weiterführende Informationen finden Sie in folgender Dokumentation:
Controller - Parametrieren & Konfigurieren
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 17
Was ist das ApplicationTemplate?Ziel des ApplicationTemplates
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
4 Was ist das ApplicationTemplate?
Das ApplicationTemplate ist eine Lenze-Applikationsvorlage zum standardisierten, übersichtlichenProgrammieren im »PLC Designer«.
• Das ApplicationTemplate ist im »PLC Designer« (ab Version 3.3) als Projektvorlage enthalten. Neues Projekt erstellen - ApplicationTemplate öffnen ( 34)
• Die Bibliothek L_EATP_ApplicationTemplate.compiled-library enthält den Aufbau und die Basisfunktionalität des ApplicationTemplates. Die Bibliothek L_EATP_ApplicationTemplate ( 118)
4.1 Ziel des ApplicationTemplates
Das ApplicationTemplate...
• ...hilft, die mechatronische Struktur eines Automationssystems (die als Baumstruktur vorliegt) modularisiert umzusetzen.
• ...ermöglicht das Einbinden von vordefinierten Maschinenmodulen mit vorbereiteten Applikationen (beispielsweise ein Querschneider).
• ...vereinfacht und beschleunigt das Erstellen von PLC-Programmen langfristig durch das Wiederverwenden einer einheitlichen, modularisierten Ordnerstruktur.
Welche Vorteile bietet das ApplicationTemplate?
Das ApplicationTemplate gestaltet das Programmieren mit dem »PLC Designer« übersichtlicher...
• ....durch eine vordefinierte Ordnerstruktur, die "für Ordnung sorgt" und individuell erweiterbar ist.
• ...erleichtert Ihnen die Orientientierung beim Erweitern oder Erstellen von Maschinenprogrammierungen.
• Das ApplicationTemplate enthält vorgefertigte, wiederverwendbare Maschinenmodule und Modulapplikationen, die das Risiko von Kompilierungsfehlern minimieren. Das hilft, Zeit und damit Kosten zu sparen.
Was ist das ApplicationTemplate?Eigenschaften des ApplicationTemplates im Überblick
18 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
4.2 Eigenschaften des ApplicationTemplates im Überblick
Die folgenden Funktionen erleichtern Ihnen das Umsetzen einer Maschinenapplikation in einer PLC:
Statemachine (Zustandsmaschine) ( 23)
Errorhandling (Fehlerbehandlung) ( 96)
Multitasking ( 106)
Weitere Vorteile beim Verwenden des ApplicationTemplate:
• Konsistente Datenübertragung zwischen den Tasks.
• Diagnosefunktion für jedes Maschinenmodul ("generische Moduldiagnose").
• Ein fest definiertes Standardverhalten ("DefaultCoupling") der Zustandsmaschine. Standardkopplung ("DefaultCoupling") ( 86)
• Entkoppeln eines (oder mehrerer) Maschinenmodule. Internal Control ( 109)
Weiterführende Informationen zu der jeweiligen Funktionen finden Sie in dem entsprechendenUnterkapitel.
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 19
Was ist das ApplicationTemplate?Elemente des ApplicationTemplates
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
4.3 Elemente des ApplicationTemplates
4.3.1 Maschinenmodulbaum (MachineModuleTree - MMT)
Um das gewünschte Automationssystem auf Basis des ApplicationTemplates im »PLC Designer«abzubilden, ist die Struktur der gesamten Maschinenanwendung im »PLC Designer« zu erstellen.
• Im ersten Schritt ist die Maschinenstruktur in Maschinenmodule aufzuteilen.
• Der Maschinenmodulbaum A10_MachineModuleTree (MMT) veranschaulicht die Maschinenmodule in Form einer Baumstruktur von links nach rechts.
[4-1] Machinenstrukturbaum (MMT) im ApplicationTemplateCounter, Ordner A10_MachineModuleTree
Das ApplicationTemplate...
• ...unterstützt zwei bis fünf Hierarchie-Ebenen von Maschinenmodulen.
• ...unterstützt bis zu 30 Maschinenmodule.
[4-2] MMT (Machine Module Tree) mit bis zu fünf möglichen Hierarchie-Ebenen von Maschinenmodulen
Was ist das ApplicationTemplate?Elemente des ApplicationTemplates
20 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
4.3.2 Maschinenmodule (MM)
Die Gesamtfunktionalität des Automationssystems ist im ApplicationTemplate modularisiertaufgebaut. Das bedeutet, dass jede Teilfunktion der Maschine in jeweils einem Maschinenmodulenthalten ist. Durch den modularen Aufbau ermöglichen die Maschinenmodule dasWiederverwenden von einzelnen (oder mehreren) Teilfunktionen einer Maschine. Der Vorteil: Diejeweilige Funktion ist für weitere Maschinenteile nicht komplett neu zu erstellen.
• Ein Maschinenmodul bildet die Funktion eines Maschinenteils der Maschine ab, beispielsweise ein Transportband oder einen Querschneider.
• Beispielsweise beinhaltet die Gesamtfunktionalität einer Schlauchbeutelmaschine die Teilfunktionen "Querschneider" und "Transporteinheit". Die beiden Teilfunktionen sind jeweils in ein separates Maschinenmodul zu überführen.
Maschinenmodul im ApplicationTemplate
[4-3] Aufbau eines Maschinenmoduls
• Jedes Maschinenmodul enthält den BaseChannel ("Base Data"), der als Datenkanal für die Basis-Funktionen des ApplicationTemplate dient.
• Basis-Funktionen des ApplicationTemplate sind die Statemachine (Zustandsmaschine) und das Errorhandling (Fehlerbehandlung).
Jedes Maschinenmodul besitzt eine AppChannelData-Struktur (ACD-Struktur). In einemMaschinenmodul ist eine ACD-Struktur bei Bedarf definierbar.
• Die ACD-Struktur verwaltet das Bereitstellen/Empfangen von Daten für das jeweils übergeordnete Maschinenmodul.
• Über die ACD-Struktursind Prozessdaten zwischen den eigenen Modulapplikationen austauschbar.
Ein Maschinenmodul (MFB) enthält immer mindestens eine Modulapplikation (MAP). Bis zu dreiMAPs pro MFB sind möglich).
• Über die Strukturen MM_IO, MM_Par; MM_Vis, MM_PD ist die Modulapplikation (MAP) an die "Außenwelt" (die jeweilige (Teil-)Funktion des Automationssystems) anzubinden.
• Durch die Struktur MM_IO sind die Ein-/Ausgänge der Klemmen/des Feldbusses zu verknüpfen.
• Die Struktur MM_Par enthält alle Variablen, die mit dem Rezepturverwalter zu verwalten sind.
• Die Struktur MM_Vis enthält alle Variablen, die über eine externe Visualisierung steuerbar/anzuzeigen sind.
• Die Struktur MM_PD enthält alle persistenten Variablen.
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 21
Was ist das ApplicationTemplate?Elemente des ApplicationTemplates
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
4.3.3 Adressierung der Maschinenmodule
[4-4] Abbildung: Beispieldarstellung MMT im Beispielprojekt L_ApplicationTemplateCounter
Folgendes ist beim relativen Adressieren der Maschinenmodule zu beachten:
• Die relative Adresse ist jedem Maschinenmodul (Wertebereich: 1...29) zuzuweisen.
• Während der Initialisierungsphase generiert der »PLC Designer« für jedes Maschinenmodule eine absolute Adresse.
• Beispiel für die relative und absolute Moduladressierung:
Die Grafik stellt die absolute Modul-Adresse (schwarz) und die relative Modul-Adresse (weiß) dar.
• Im Fehlerfall ermöglicht die absolute Adresse eine Fehleranalyse. Dadurch ist beispielsweise nachvollziehbar, welches Modul den jeweiligen Fehler verursacht hat. Errorhandling (Fehlerbehandlung) ( 96)
4.3.4 Modulapplikation (MAP)
Die Modulapplikation (MAP) enthält die Funktion des dazugehörigen Maschinenmoduls.
• Das ApplicationTemplate unterstützt bis zu drei Tasks. Dadurch sind bis zu drei MAPS pro Maschinenmodul verwendbar.
Jedes Maschinenmodul hateinen Eingang MM_Address,mit dem Sie demMaschinenmodul die relativeAdresse zuweisen.
Was ist das ApplicationTemplate?Elemente des ApplicationTemplates
22 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
• Im Ordner A11_ModuleAppCalls sind die MAPS den Tasks zuzuordnen: ModuleAppCalls (MAC).
4.3.5 Kommunikation zwischen den Maschinenmodulen
Die Maschinenmodule (MM_xxx) kommunizieren über das MaschinensteuerungsmodulMM_Machine mit Hilfe des Kommunikationskanals BaseChannel und der Struktur AppChannelDatamiteinander.
• Die Kommunikationskanäle ermöglichen einen bidirektionalen Datenaustausch.
• Der BaseChannel ist als Struktur im ApplicationTemplate definiert.
Ein oder mehrere Slave-Module sind immer genau mit einem übergeordneten Master-Modulverbunden. Dennoch kommuniziert der Master jeweils immer nur mit einem Slave-Modul. Slave-Module können nicht direkt miteinander kommunizieren, sondern über das übergeordneteMastermodul.
Das übergeordnete Maschinenmodul (Master) kommuniziert über Datenkanäle (Channels) mit denuntergeordneten Maschinenmodulen (Slaves). Beim Initialisieren erzeugt das ApplicationTemplateeinen BaseChannel und eine AppChannelData(ACD)-Struktur.
[4-5] Informationsaustausch zwischen den Maschinenmodulen (L_ApplicationTemplateCounter)
BaseChannel: Austausch von Steuer- und Zustandsdaten (Basisdaten Control/Status)
Der BaseChannel...
• ...enthält die Steuer-/Statusinformationen der Zustandsmaschine (Statemachine).
• ...enthält das Errorhandling (Fehlerbehandlung).
Die ACD-Struktur...
• ...dient zum Austausch von applikativen Prozessdaten zwischen den Maschinenmodulen.
• ...ist eine Datenstruktur zum Definieren von eigenen Prozessdaten.
• ...muss immer von der Struktur L_EATP_ACD_Base (ACD-Struktur) abgeleitet sein.
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 23
Was ist das ApplicationTemplate?Elemente des ApplicationTemplates
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
4.3.6 Statemachine (Zustandsmaschine)
Jedes Maschinenmodul hat jeweils eine eigene Zustandsmaschine. Statemachine(Zustandsmaschine) ( 80)
• Sofern ein Maschinenmodul in den Maschinenmodulbaum eingebunden ist (also nicht vom MMT entkoppelt ist), steuert die Zustandsmaschine des Master-Moduls alle Zustandsmaschinen der untergeordneten Maschinenmodule.
• Sofern alle Slave-Module die angeforderte Zustandsänderung angenommen haben, übernimmt das Mastermodul ebenfalls den angeforderten Zustand.Ausnahme: Beim Initalisieren durchlaufen alle Maschinenmodule den Zustand INIT und wechseln unabhängig vom Slave oder Master in den Zustand "READY", sofern dieser freigegeben ist:
Statusübergänge - Übersicht
Das folgende Statusdiagramm veranschaulicht die möglichen Betriebszustände derZustandsmaschine (Statemachine):
• Nach dem Start (Einschalten/Re-Initialisieren) befindet sich das Maschinenmodul im Zustand "Init".
• Im Ruhe-/Wartemodus befindet sich das Modul im Zustand "Ready".
• "Warning" ist ein Sonderstatus (unabhängiger, "orthogonaler" Zustand), der das Betriebsverhalten des Maschinenmoduls nicht beeinflusst.
SMEnableInitToReady(TRUE);
Was ist das ApplicationTemplate?Elemente des ApplicationTemplates
24 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
4.3.7 Errorhandling (Fehlerbehandlung)
Das ApplicationTemplate enthält ein Errorhandling, das die Diagnose der Maschinenmoduleermöglicht.
Das Errorhandling des ApplicationTemplate stellt Mechanismen bereit, mit denen in denModulapplikationen (MAP) der Maschinenmodule (MM) Reaktionen (Fehler, Warnungen,Meldungen) definier- und auslösbar sind.
Weitere Mechanismen sind:
• Das Weiterleiten von Fehlerzuständen im MachineModuleTree (MMT).
• Eine (applikations-)globale Fehlerliste mit dem aktuellen Fehlerzustand von allen im MMT eingebundenen Maschinenmodulen.
• Übermitteln von Fehlern und Ereignissen an das zentrale Logbuch des Controllers.
Weiterführende Informationen finden Sie unter: Errorhandling (Fehlerbehandlung) ( 96)
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 25
Das Automationssystem strukturieren: Prinzipielle Vorgehensweise
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
5 Das Automationssystem strukturieren: Prinzipielle Vorgehensweise
Dieser Abschnitt beschreibt die prinzipielle Vorgehensweise, um eine Applikation mit dem »PLCDesigner« auf Basis des ApplicationTemplates zu erstellen.
• Orientieren Sie sich an den nachfolgenden Empfehlungen, um anschließend im »PLC Designer« mit Hilfe des ApplicationTemplates strukturiert ein PLC-Projekt zu erstellen und effektiv programmieren zu können.
• Der strukturierte Aufbau des ApplicationTemplates (und das "Einhalten"/Fortführen der Strukturen) ermöglicht ein schnelleres Erstellen von Applikationen und damit ein schnelleres Einarbeiten in ein bestehenes PLC-Programm.
[5-1] Empfohlene Vorgehensweise zum effizienten Erstellen eines Projektes.
Das Automationssystem strukturieren: Prinzipielle Vorgehensweise
26 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Schritt Tätigkeit Was ist zu tun? Beschreibung
Verschaffen Sie sich einen Überblick über die Gesamtfunktionalität des Maschinenaufbaus.
• Teilen Sie die Gesamtfunktionalität des Maschineaufbaus in Teilfunktionen auf.
• Überführen Sie die ermittelten Teilfunktionen des Maschinenaufbaus in Maschinenmodule.
In dieser Projektphase ist noch kein Programmieren erforderlich!
Das Automationssystem modularisieren - Vorgehensweise ( 27)
Erstellen Sie Maschinenmodule, die jeweils die Teilfunktionen des Maschinenaufbaus enthalten: Eine Teilfunktion = Ein Maschinenmodul
• Um Maschinenfunktionen in verschiedenen Tasks aufrufen zu können, sind entsprechende Modulapplikationen zu erstellen.
• Weiterführende Informationen zum Strukturieren innerhalb einer Modulapplikation:
Strukturieren innerhalb eines Maschinenmoduls ( 28)
• Definieren Sie die Schnittstellen zu den Modulapplikationen (MAPs).
• Erstellen Sie optional die Visualisierung für das jeweilige Maschinenmodul.
• Jedes Maschinenmodul besitzt eine Zustandsmaschine. Die Modulapplikation (MAP) ruft, abhängig vom aktiven Zustand, eine entsprechende Aktion auf. Die Aktion ist der Modulapplikation untergeordnet.
• Erstellen Sie in diesen Aktionen die Logik, die auszuführen ist, wenn sich das MaschinenModul (MM) in dem entsprechenden Zustand befindet.
• Variablen definieren.• Variablen in den Variablenlisten
(MM_IO, MM_Par, MM_Vis, MM_PD) deklarieren
• Neu erstellte Maschinenmodule in den MMT (Maschinenmodulbaum) integrieren.
• Die relative Adresse den Maschinenmodulen zuweisen.
Modulapplikationen erstellen ( 65)
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 27
Das Automationssystem strukturieren: Prinzipielle VorgehensweiseDas Automationssystem modularisieren - Vorgehensweise
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
5.1 Das Automationssystem modularisieren - Vorgehensweise
Um das Programmieren einer Maschinenanlage modular zu gestalten, sind die einzelnenTeilfunktionen der Gesamtfunktionalität des Automationssystems in Form vonMaschinenmodulen abzubilden.
Beispiel: Schlauchbeutelmaschine ("Flow Packer")
• Es ist hilfreich, den Maschinenaufbau mit den einzelnen Teilfunktionen in einer Baumstruktur zu skizzieren.
• Die einzelnen Teilfunktionen der Maschine sind dazu in entsprechende Maschinenmodule zu überführen.
• Sofern die einzelnen Teilfunktionen in Form von Maschinenmodulen strukturiert sind, sind die Schnittstellen der Modulapplikation (MAP) zuzuweisen. Eigene Maschinenmodule erstellen: MM_EmptyModul kopieren/einfügen ( 53)
• Die Ein- und Ausgangsvariablen sind zuzuordnen...
...in den Variablenlisten MM_IO, MM_Par, MM_Visu und MM_PD und
...zu den Variablen der AppChannelData (ACD)-Struktur.
Beispiele für Maschinenmodule:
• "Virtual master"
• "infeed" (Einzug)
• "outfeed" (Auszug)
Das Automationssystem strukturieren: Prinzipielle VorgehensweiseStrukturieren innerhalb eines Maschinenmoduls
28 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
5.2 Strukturieren innerhalb eines Maschinenmoduls
5.2.1 MAP-Teilfunktion einzelnen Tasks zuordnen
Im ersten Schritt sind die Funktionen den einzelnen Tasks zuzuordnen. Das ApplicationTemplateunterstützt Multitasking mit drei Tasks. Weiterführende Informationen finden Sie unter:
Multitasking ( 106)
• Task "High" (Standardwert: 2 ms)
• Task "Mid" (Standardwert: 6 ms)
• Task "Free" (freilaufend)
Pro Task ist jeweils eine Modulapplikation verwendbar.
• Task und Modulapplikation sind im Ordner A11_ModuleAppCalls zugeordnet.
• Beispielsweise ruft der Programmteil MAC_Task_High alle Modulapplikationen auf, die die
hochpriore Task Task_High durchlaufen sollen.
[5-2] Beispielprojekt ApplicationTemplateCounter: MAC_Task_High ruft die Modulapplikation Module1_App1 auf.
Um eine Modulapplikation übersicht-lich zu gestalten, ist es sinnvoll, die Mo-dulapplikationen (MAP) in Teilfunktionen zu unterteilen und ent-sprechend zu strukturieren.
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 29
Das Automationssystem strukturieren: Prinzipielle VorgehensweiseStrukturieren innerhalb eines Maschinenmoduls
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Empfehlung - Welche Funktion in welcher Task aufrufen?
5.2.2 Programmier-Empfehlungen zum Strukturieren
Die folgende Tabelle stellt die Strukturierungsmöglichkeiten des ApplicationTemplates alsEntscheidungsempfehlung dar:
Wann sollte ich was im ApplicationTemplate verwenden?
Task/Priorität Funktion (Beispiel)
"High"HighPriority
Ausführen von Motion-Funktionen
"Mid"MidPriority
Umrechnen für eine externe Visualisierung
"Free"freilaufend
NRT-Ethernet-Kommunikation
Was möchten Sie tun? FB Aktion Methode Besser geeignet ist...
Mit lokalen Variablen arbeiten Lokale Variablen sind im zugeordneten FB zu
deklarieren.
Lokale Variablen sind (wenn möglich) im zugeordneten FB zu deklarieren.
-
Debugging Keine lokalen Variablen Aktion, FB
Wiederverwenden:Im Fehlerfall (beim Erstellen der Anwendersoftware) ist die Fehlerbehebung an einer Stelle möglich.
- Bedingt - wenn in der Methode beispielsweise FBs integriert sind.Beispiel: "Statemachine" im ApplicationTemplate
FB
Instanziieren - - Aktion, Methode
Auf alle Datentypen zugreifen Aktion, FB,Methode
Das Automationssystem strukturieren: Prinzipielle VorgehensweiseStrukturieren innerhalb eines Maschinenmoduls
30 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Aktionen
Lenze empfiehlt zum einfachen Strukturieren das Verwenden der Aktionen desApplicationTemplates.
• Die Aktionen sind der Modulapplikationen unterzuordnen.
• Aktionen sind mit dem Symbol gekennzeichnet.
Beispiel zum Strukturieren einer Modulapplikation:
[5-3] Die Methode SMDispatcher ruft die Aktionen S01-S11 auf. Die Aktionen sind im Ordner ModApp1\States sichtbar.
Eine Aktion ist immer an eine POU gebunden, Beispiel: Funktionsbaustein einer Modulapplikation.
• Dadurch verwendet die Aktion ausschließlich die Daten des Funktionsbausteins. Das bedeutet, dass die Aktion keinen eigenen Deklarationsteil besitzt. Die in der Aktion verwendeten Variablen sind im Funktionsbaustein (also in der Modulapplikation MAP) deklariert.
• Die Aktion besitzt keine lokalen Variablen.
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 31
Übersicht - Die Struktur des ApplicationTemplates
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
6 Übersicht - Die Struktur des ApplicationTemplates
Das ApplicationTemplate ist eine Lenze-Applikationsvorlage, die Ihnen das Programmieren mit dem»PLC Designer« erleichtert.
• Das ApplicationTemplateCounter hat folgende vordefinierte Struktur:
A10_MachineModuleTree (MMT)
• Der Maschinenmodulbaum bildet die mechatronische Funktionalität der Maschinenstruktur in Form von Maschinenmodulen (MM) ab.
A11_ModuleAppCalls (MAC)
• ...enthält die Zuordnungen von Modulapplikationen (MAP) zu den Tasks.
A20_Visualisation
• ...enthält die Visualisierungen für die geräteunabhängigen Funktionen. Erste Schritte - Das ApplicationTemplate bedienen ( 37)
A55_VarLists
• ...enthält die Deklarationen der globalen Variablen:• Verwendete Maschinenmodule: MM_Dcl• IO-Variablen: MM_IO• Parameter: MM_Par• Variablen für eine externe Visualisierung: MM_Vis• Persistente Daten: MM_PD
A60_MotionObjects
• ...vordefinierter Ordner für Motion-relevante Daten, Beispiel: CAM-Profile.
A65_EmptyModule
• ...enthält die Maschinenmodul-Quellen• ...enthält die Vorlage EmptyModule zum Erstellen von
eigenen Maschinenmodulen. Eigene Maschinenmodule erstellen: MM_EmptyModul kopieren/einfügen ( 53)
A70_MachineModuleSources• ...enthält die selbst erstellten Maschinenmodule.
Maschinenmodule (MM) ( 20)• ...enthält die Visualisierung der Maschinenmodule.
ApplicationTemplateCounter:• ...enthält zwei vordefinierte Maschinenmodule.
A71_LocalSources• ...Ablageort für maschinenunabhängige Enumerationen,
Funktionsbausteine, Strukturen, Visualisierungen.
A80_Documentation
• ...vordefinierter Ordner für Dokumente zur "Projekthistorie", Beispiel: Versionsinformationen, Änderungen.
A90_Resources
• ...enthält die Systeminformationen wie beispielsweise:• Taskeinstellungen,• Verwendete Bibliotheken,• Rezepturverwalter,
• Visualisierungs-Manager.
Übersicht - Die Struktur des ApplicationTemplates
32 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Tipp!
Fassen Sie die „lokalen Quellen“ aus dem Ordner A71_LocalSources in einer Bibliothekzusammen.
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 33
Das ApplicationTemplate öffnen
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
7 Das ApplicationTemplate öffnen
Das ApplicationTemplateCounter enthält ein Beispielprogramm mit drei Maschinenmodulen undeiner vordefinierten Visualisierung. Mit dem Beispielprogramm können Sie die Basisfunktionen desApplicationTemplates testen. Das Beispielprojekt "ApplicationTemplateCounter" ( 161)
Prinzipielle Vorgehensweise
Die Hauptschritte sind in der folgenden Tabelle zusammengefasst:
Detaillierte Inbetriebnahmeschritte
Der folgende Abschnitt beschreibt die einzelnen Inbetriebnahmeschritte im Detail.
Folgen Sie den aufgeführten Anweisungen Schritt für Schritt, um Ihr Automationssystem in Betriebzu nehmen.
Schritt Tätigkeit
1. Neues Projekt erstellen - ApplicationTemplate öffnen ( 34)
2. Controller im Projekt aktualisieren (optional) ( 35)
3. Online gehen ( 36)
• Projektdaten übersetzen ( 36)
• Projekt in die Steuerung übertragen - "Einloggen" ( 36)
4. PLC-Programm laden und starten ( 36)
5. Erste Schritte - Das ApplicationTemplate bedienen ( 37)
Weiterführende Informationen zum Parametrieren und Konfigurieren des jeweiligen Bussystems finden Sie in folgenden Kommunikationshandbüchern (KHB):• Kommunikationshandbuch EtherCAT: "Controller-based Automation" EtherCAT• Kommunikationshandbuch CANopen: "Controller-based Automation" CANopen• Kommunikationshandbuch PROFIBUS: "Controller-based Automation" PROFIBUS
Das ApplicationTemplate öffnenNeues Projekt erstellen - ApplicationTemplate öffnen
34 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
7.1 Neues Projekt erstellen - ApplicationTemplate öffnen
Das ApplicationTemplate ist als Projektvorlage (*.project, ) im »PLC Designer« ab V3.3 enthalten.Um das ApplicationTemplate aufzurufen, ist ein neues Projekt mit dem ApplicationTemplate alsVorlage zu erstellen.
So gehen Sie vor:
1. Neues Projekt erstellen:
• Datei Neues Projekt
• Kategorie Lenze Application Template wählen• Die Vorlage L_ApplicationTemplate öffnen
Welche Vorlage möchten Sie verwenden?
Funktion
ApplicationTemplate Die Lenze-Applikationsvorlage L_ApplicationTemplate verwenden.Enthält einen von Lenze vordefinierten Aufbau, der es ermöglicht...
• ...Applikationen durch eine definierte Ordnerstruktur zu standardisieren.• ...Applikationen mit Maschinenmodulen zu strukturieren.
ApplicationTemplateCounter Beispielprojekt mit der Lenze-Applikationsvorlage L_ApplicationTemplate.• Enthält zwei untergeordnete Maschinenmodule, die in den
MachineModuleTree (MMT) eingebunden sind.• Enthält ein Zählerbeispiel (Automatic Modus).
Das Beispielprojekt befindet in der Kategorie Lenze Application Samples\Lenze Standard
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 35
Das ApplicationTemplate öffnenController im Projekt aktualisieren (optional)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
7.2 Controller im Projekt aktualisieren (optional)
In welchen Fällen ist das Projekt zu aktualisieren?
Der Controller ist im »PLC Designer« zu aktualisieren, wenn...
• ...das Projekt ältere Firmware-Informationen enthält als die zu verwendende Hardware oder
• ...ein anderer Controller als der eingebundene Controller 3200 C gewünscht ist (Beispiel: p500).
Sofern der Controller nach dem Öffnen des Projektes mit dem Symbol gekennzeichnet ist, sinddie Geräteinformationen des »PLC Designer«-Projektes zu aktualisieren.
Firmware des Controllers ermitteln
So gehen Sie vor:
• Überprüfen Sie mit der »WebConfig«, welche Firmware der Controller verwendet, um anschließend die passenden Geräteinformationen im »PLC Designer« auszuwählen.
• Sofern der Controller zu aktualisieren ist, ist anschließend die dynamische Speichereinstellungen der Applikation anzupassen.
Speichereinstellungen anpassen
Gewünschten Controller markieren.• Im Kontextmenü den Befehl Gerät aktualisieren ausführen.• Im Dialogfenster Gerät aktualisieren den passenden Controller doppelklicken, um den
Controller in der Geräte-Ansicht zu aktualisieren:
1. Im Kontextmenü von Application den Befehl Eigenschaften ausführen.• Auf der Registerkarte Optionen Applikationserzeugung die Option Dynamische
Speicherallozierung verwenden aktivieren.• Als Maximale Speichergröße den Wert 100000 eintragen:
• Eingabe mit OK bestätigen.
Das ApplicationTemplate öffnenOnline gehen
36 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
7.3 Online gehen
Um eine Onlineverbindung zum Controller aufbauen zu können, ist vorab die Inbetriebnahme derKommunikationseinstellungen (Aktiven Pfad setzen) erforderlich. Kommunikation zumController einrichten ( 15)
7.3.1 Projektdaten übersetzen
Um die Projektdaten zu übersetzen, wählen Sie den Menübefehl ErstellenÜbersetzen, oderbetätigen Sie die Funktionstaste <F11>.
• Treten beim Übersetzen Fehler auf, sind diese anhand der »PLC Designer«-Fehlermeldungen zu lokalisieren und entsprechend zu korrigieren. Übersetzen Sie danach die Projektdaten erneut.
• Treten beim Übersetzen keine Fehler auf, ist das »PLC Designer«-Projekt zu speichern:
Datei Projekt speichern
7.3.2 Projekt in die Steuerung übertragen - "Einloggen"
Das gewünschte Projekt ist auf das PLC-Gerät durch "Einloggen" in den Controller zu übertragen:
Den Menübefehl Online Einloggen aufrufen.
7.4 PLC-Programm laden und starten
• Das PLC-Programm auf den Controller laden: Menübefehl OnlineLaden aufrufen.
• Das PLC-Programm starten: Menübefehl OnlineStart aufrufen.
• Alternativ können Sie den Menübefehl DebugStart ausführen oder <F5> drücken.
Tipp!
Um ein Projekt nach dem Neustart eines Gerätes automatisch zu laden, ist dies als "Boot-Projekt" definierbar.
Projekt als Bootapplikation einrichten
So richten Sie das Projekt als Boot-Projekt ein:
1. Wählen Sie den Menübefehl OnlineErzeuge Bootapplikation für L-force Controller.
Hinweis!
Zum "Einloggen" muss das PLC-Programm fehlerfrei sein. Dazu muss der Menübefehl ErstellenÜbersetzen (F11) ohne Fehlermeldung durchführbar sein.
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 37
Das ApplicationTemplate öffnenErste Schritte - Das ApplicationTemplate bedienen
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
7.5 Erste Schritte - Das ApplicationTemplate bedienen
In der Geräte-Ansicht ist der Ordner A20_Visualisation auszuwählen: Visualisierung L_Maindoppelklicken.
Startseite - Visualisierung L_Main
Die Bedienoberfläche der Visualisierung gliedert sich in folgende Bereiche:
[7-1] Beispiel: ApplicationTemplateCounter mit zwei Maschinenmodulen (Module 1, Module 2)
Maschinenmodul wählen Visualisierung Fehlerbaustein
Detailansicht der Maschinenmodule Visualisierung ApplicationTemplate
Fehlerübersicht wählen Schaltflächen: Zustand wählen/Fehlermeldung quittieren
Statemachine (Zustandsmaschine)
Das ApplicationTemplate öffnenErste Schritte - Das ApplicationTemplate bedienen
38 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
• Die Schaltflächen im Bereich rufen die Visualisierung des gewünschten Maschinenmoduls auf.
• Machine/Machine Control ruft das oberste Maschinensteuermodul auf.
• Die Schaltfläche ruft die Detailansicht der Maschinenmodule auf.
• Die Schaltfläche ruft die globale Fehlerübersicht auf.
• Bereich zeigt die Zustandsmaschine (mit dem aktuellen Zustand) an. Statemachine (Zustandsmaschine) ( 23)
• Bereich zeigt den FB L_EATP_ErrorSet an. L_EATP_ErrorSet ( 127)
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 39
Das ApplicationTemplate öffnenVisualisierung der Maschinenmodule
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
7.6 Visualisierung der Maschinenmodule
• Der Bereich visualisiert die Kommunikation zwischen den einzelnen Maschinenmodulen durch die AppChannelData-Struktur.
• Die AppChannelData-Struktur stellt die Infrastruktur für das Kommunizieren der Applikationsdaten bereit. Die Struktur AppChannelData (ACD) ( 76)
• ApplicationTemplateCounter:In diesem Bereich ist die Demo-Visualisierung der Beispielprogramme dargestellt. Das Beispielprojekt "ApplicationTemplateCounter" ( 161)
• Die Schaltfläche Lock data sperrt einen Datenbereich der ACD-Struktur/gibt den Datenbereich wieder frei.Methoden zum Sperren/Freigeben• Lock(): Datenbereich der ACD-Struktur sperren.
L_EATP_CriticalSection ( 125)
• Unlock(): Gesperrten Datenbereich der ACD-Struktur freigeben.L_EATP_ErrorListHandler ( 126)
Konsistente Datenübertragung ( 107)
• Die Schaltfläche im Bereich aktivieren den gewünschte Zustand (state)/Ermöglichen das Quittieren von Fehlern.
• Die Schaltfläche Error Quit quittiert die Fehlermeldung. Errorhandling (Fehlerbehandlung) ( 96)
• Ist beispielweise MM_Modul 1 ausgewählt, sind über die Felder xError[01...04] von L_EATP_ErrorSet Fehler auslösbar.
L_EATP_ErrorSet ( 127)
Das ApplicationTemplate öffnenVisualisierung der Maschinenmodule
40 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
• Je nach Standard-Verhalten führt das Auslösen eines Fehlers bei L_EATP_ErrorSet zu einem Statuswechsel im Bereich .• Mögliche Fehlerreaktionen sind: Error,
SystemFault, Warning, Information.
• Standard-Einstellung des ApplicationTemplates (bei Bedarf deaktivierbar):Wird ein Fehler ausgelöst, wechselt das übergeordnete Maschinenmodul in den Zustand "Quickstop".• Das Maschinenmodul gibt den Zustand
an das übergeordnete Maschinenmodul weiter.
• Das Maschinenmodul auf der obersten Ebene setzt alle untergeordeten Maschinenmodule in den Zustand "Quickstop".
• Die Schaltfläche Module List ruft die Detailansicht zu den Maschinenmodulen auf.
• Klicken Sie auf das gewünschte Maschinenmodul, um den jeweiligen Zustand und weitere Details anzuzeigen.
• Die Schaltfläche Error List ruft die globale Fehlerliste auf, die einen Überblick über die aufgetretenen Fehler liefert.• Die Ursache für die Fehlerauslösung ist
zu beheben. Anschließend ist der entsprechende Fehler zurückzusetzen.
• Die Schaltfläche Error Quit ist zu betätigen, um den Fehler zurückzusetzen.
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 41
Arbeiten mit dem ApplicationTemplate
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
8 Arbeiten mit dem ApplicationTemplate
In diesem Kapitel erfahren Sie, wie Sie mit der Maschinenmodul-Vorlage im ApplicationTemplatemodulare Maschinen-Funktionen/Maschinenmodule erstellen. Das MaschinenmodulMM_EmptyModule ist eine Vorlage zum Erstellen von eigenen Maschinenmodulen.
Programmieren mit dem ApplicationTemplate: Was ist zu tun?
Schritt Tätigkeit Detailinformationen
1. Das Automationssystem strukturieren• Die Gesamt-Funktionalität
(Maschinenapplikation) des Automationssystems ist modular abzubilden:Eine Teilfunktion = ein Maschinenmodul
• In dieser Projektphase ist noch kein Programmieren erforderlich!
Das Automationssystem modularisieren - Vorgehensweise ( 27)
2. Das ApplicationTemplate starten Das ApplicationTemplate öffnen ( 33)
3. Projekt aktualisieren (optional)• Versionsstand der Geräteinformationen im
»PLC Designer«-Projekt mit dem Firmwarestand des Controllers abgleichen.
• Sofern gewünscht, einen anderen Controller in das Projekt einbinden, enthalten ist der 3200 C.
Controller im Projekt aktualisieren (optional) ( 35)
4. Realen Maschinenaufbau im »PLC Designer« abbilden
Realen Maschinenaufbau im »PLC Designer« abbilden ( 42)
• Geräte anhängen - Bussystem EtherCAT ( 42)• Geräte anhängen - Bussystem CANopen (optional)
( 45)• CAN-Parameter und PDO-Mapping einstellen ( 50)
6. Eigene Maschinenmodule erstellen/einbinden Eigene Maschinenmodule erstellen: MM_EmptyModul kopieren/einfügen ( 53)
7. Geräte einbinden Achse einfügen ( 61)
I/O-Module des I/O-System 1000 mit einem Maschinenmodul einbinden ( 63)
Modulapplikation einbinden ( 69)
8. Online gehen Online gehen ( 36)
9. PLC-Programm starten PLC-Programm laden und starten ( 36)
Online Change durchführen Online Change ( 71)
Arbeiten mit dem ApplicationTemplateRealen Maschinenaufbau im »PLC Designer« abbilden
42 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
8.1 Realen Maschinenaufbau im »PLC Designer« abbilden
Das ApplicationTemplate enthält eine vordefinierte Struktur, die um die individuellenAnforderungen erweiterbar ist. Führen Sie folgende Schritte durch, um den realenMaschinenaufbau abzubilden.
8.1.1 Geräte anhängen - Bussystem EtherCAT
So erstellen Sie die Steuerungskonfiguration im »PLC Designer«:
1. Im Kontextmenü des Zielsystems mit dem Befehl Gerät anhängen die
Steuerungskonfiguration mit "EtherCAT Master" erweitern.
Hinweis!
Beachten Sie vor dem Aufbau einer EtherCAT-Konfiguration im »PLC Designer« folgende Bedingungen:• Die Reihenfolge der EtherCAT-Slaves in der Geräte-Ansicht muss der physikalischen
Anordnung der EtherCAT-Topologie entsprechen.• Wählen Sie die Zykluszeiten gemäß den technischen Daten von 1 ... 10 ms.
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 43
Arbeiten mit dem ApplicationTemplateRealen Maschinenaufbau im »PLC Designer« abbilden
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
2. Unter dem EtherCAT-Master einen EtherCAT-Slave anhängen: Per Rechtsklick auf den
EtherCAT-Master Gerät anhängen:
Wählen Sie aus Auswahlliste das gewünschte Gerät.
Der »PLC Designer« bietet einen "Feldbus-Scan" an, der die am Feldbus angeschlossenen Geräte automatisch erkennt.
Weiterführende Informationen finden Sie im Abschnitt "Controller-based Automation EtherCAT" der Onlinehilfe zum »PLC Designer« sowie im Kommunikationshandbuch(KHB) Controller-based Automation EtherCAT
Wiederholen Sie den Befehl Gerät anhängen solange, bis alle am Feldbus teilnehmenden Slaves in die Geräte-Ansicht eingebunden sind.
Arbeiten mit dem ApplicationTemplateRealen Maschinenaufbau im »PLC Designer« abbilden
44 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
3. Den eingefügten Slaves eindeutige Bezeichnungen geben(Beispiel: "L_94_HL_ActuatorSpeed").
Die Bezeichnungen sind frei wählbar und dürfen …• nur die Zeichen "A ... Z", "a ... z", "0 ... 9" oder "_" enthalten;• nicht mit einer Ziffer beginnen.
Durch einen Mausklick auf das Element wird die Bezeichnung zur Eingabe freigegeben.
Beispiel:
4. Zykluszeit einstellen• Der Wert für die Zykluszeit des EtherCAT-Masters ist entsprechend der Zykluszeit der
schnellsten Task festzulegen.
• Das Symbol vor dem jeweiligen Geräte signalisiert die erfolgreicheEtherCAT-Kommunikation.
Hinweis: Die EtherCAT-Zykluszeit ist auf auf die schnellsteingestellte Taskzykluszeit einzustellen. Die schnellste Taskzykluszeit ist in diesem ApplicationTemplate auf 2 ms eingestellt, dementsprechend sind 2000 μs einzustellen.
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 45
Arbeiten mit dem ApplicationTemplateRealen Maschinenaufbau im »PLC Designer« abbilden
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
• Ist bei allen Antriebsreglern die Option "Distributed Clocks" aktiviert und die Kommunikation erfolgreich, gibt der EtherCAT-Master die Meldung "DC In-Sync" aus:
8.1.2 Geräte anhängen - Bussystem CANopen (optional)
Um den gewünschten Maschinenaufbau auf Basis des ApplicationTemplates abzubilden, sind dieentsprechenden Geräte in der Geräte-Ansicht anzuhängen.
So gehen Sie vor:
1. Controller markieren
• Im Kontextmenü mit dem Befehl Gerät anhängen das Bussystem mit "CANbus" erweitern.
Arbeiten mit dem ApplicationTemplateRealen Maschinenaufbau im »PLC Designer« abbilden
46 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
2. Auf der Registerkarte CANbus die Übertragungsrate einstellen.
Hinweis: Der im »PLC Designer« eingestellte Wert der Übertragungsrate überschreibt die bestehenden Übertragungswerte der Geräte (eingestellt via »WebConfig«/»Engineer«).
3. Stellen Sie in einem CANopen-Netzwerk generell für alle Teilnehmer dieselbe Übertragungsrate ein.
4. Mit dem Befehl Gerät anhängen die Steuerungskonfiguration mit "CANopen Manager" erweitern.
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 47
Arbeiten mit dem ApplicationTemplateRealen Maschinenaufbau im »PLC Designer« abbilden
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
5. Über die Registerkarte CANopen_Manager die Parameter zur Sync-Erzeugung einstellen.
Die Sync-Erzeugung ist notwendig, wenn...• ...auf dem Bus mindestens ein PDO mit Sync-gesteuerter Verarbeitung benutzt wird; • ...in mehreren Geräten die Applikationen Takt-synchron laufen sollen;• ...am Bus Motion-Geräte betrieben werden sollen.
Falls Sie die CAN-Synchronisation einsetzen wollen, setzen Sie ein Häkchen im Eingabefeld
Sync-Erzeugung aktivieren.
Sync-Zykluszeit einstellen: 2 ms (Eingabewert: 2000 μs)• Der Wert für die Zykluszeit des CANopen-Masters ist entsprechend der Zykluszeit der
schnellsten Task festzulegen.
Arbeiten mit dem ApplicationTemplateRealen Maschinenaufbau im »PLC Designer« abbilden
48 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
6. Mit dem Befehl Gerät anhängen ein Logic-Gerät (Slave) unter dem CANopen_Manager (Master) einfügen.
Wählen Sie aus der Auswahlliste den gewünschten CAN-Teilnehmer aus.
Tipp!
Zum Einbinden von Invertern steht eine allgemeine Gerätebeschreibung zur Verfügung:Lenze Generic Drive.
Wiederholen Sie den Befehl Gerät anhängen, bis alle am Bus teilnehmenden Slaves in der Geräte-Ansicht eingebunden sind. Alternativ können Sie einen bereits eingefügten Teilnehmer im Kontextmenü des Gerätes kopieren und einfügen. Die Kommunikationseinstellungen (Node-ID und Baudrate sowie weitere Parameter) sind anschließend manuell anzupassen.
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 49
Arbeiten mit dem ApplicationTemplateRealen Maschinenaufbau im »PLC Designer« abbilden
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
7. Den eingefügten Slaves eindeutige Bezeichnungen geben (Beispiel: "L_94_HL_ActuatorSpeed").
Die Bezeichnungen sind frei wählbar und dürfen …• nur die Zeichen "A ... Z", "a ... z", "0 ... 9" oder "_" enthalten;• nicht mit einer Ziffer beginnen.
8. Durch einen Mausklick auf das Element wird die Bezeichnung zur Eingabe freigegeben.
Beispiel:
• Unterhalb des ausgewählten Slaves sind die Achsdaten in Form eines zusätzlichen Knotens abrufbar.
Um die Prozessdaten manuell verknüpfen zukönnen (statt der automatischen Verknüpfungin die L_LCB_Axis_REF-Instanz), ist die OptionManuelles I/O-Abbild zu aktivieren.
Arbeiten mit dem ApplicationTemplateRealen Maschinenaufbau im »PLC Designer« abbilden
50 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
CAN-Parameter und PDO-Mapping einstellen
Stellen Sie die CAN-Parameter und das PDO-Mapping für jedes am Bus teilnehmende Logic-Gerätein.
So stellen Sie die CAN-Parameter und das CAN-Mapping ein:
1. Zur Registerkarte CANopen Remote Device des entsprechenden Slaves wechseln.
Vergeben Sie im Eingabefeld Node-ID die passende Knotenadresse der Geräten:
Nur wenn die Option Experten-Einstellungen gesetzt ist, sind folgende Einstellmöglichkeiten sichtbar: • "Node Guarding"• "Emergency"• "Heartbeat"• "Prüfungen beim Start"
Nehmen Sie hier die für Ihre Applikation notwendigen Einstellungen vor.
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 51
Arbeiten mit dem ApplicationTemplateRealen Maschinenaufbau im »PLC Designer« abbilden
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
2. Zur Registerkarte PDO Mapping wechseln.
Das PDO-Mapping ist standardmäßig auf die zugehörige Applikation optimiert. Es ist möglich, dieses Mapping manuell zu verändern (Häkchen setzen). Aufgrund der begrenzten Bandbreite des CAN-Busses ist ein solches Vorgehen aber nur in Sonderfällen sinnvoll. Auch die PDO-Eigenschaften sind sinnvoll vorbelegt und sollten nicht verändert werden.
Durch einen Doppelklick auf ein einzelnes PDO können Sie dessen Übertragungs-Eigenschaften sehen.
• Der Übertragungstyp "zyklisch - synchron (Typ 1-240)" und die Angabe, bei welchem Sync die PDOs versendet werden sollen, dürfen nicht verändert werden.
• Die Einstellungen der Sperrzeit und der Ereigniszeit (Event time) werden nicht ausgewertet.
• Bestätigen Sie die Einstellungen mit der Schaltfläche OK.
Auf der Registerkarte CANopen I/O Abbild können Sie dem Prozessabbild PLC-Variablen zuweisen.
Hinweis!
Betrieb des Busses ohne CAN-Synchronisation• Der Controller sendet asynchrone PDOs aus einer freilaufenden Task immer
ereignisgesteuert. Um zu erreichen, dass der Controller asynchrone PDOs zeitgesteuert sendet, müssen Sie den CAN-Master einer zyklischen Task zuordnen.
• Der Controller unterstützt keine Überwachungszeiten für asynchrone Empfangs-PDOs. Diese Überwachungszeiten sind in den Geräten einzustellen.
Arbeiten mit dem ApplicationTemplateRealen Maschinenaufbau im »PLC Designer« abbilden
52 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
3. Die Auswahl einer speziellen Buszyklus-Task auf der Registerkarte CANopen I/O Abbild des CANopen-Manager ist nicht zwingend erforderlich.
Die Standard-Einstellung verwendet die Task mit der kürzesten Zykluszeit, welche auf Geräte des CAN-Masters zugreift, als Buszyklus-Task:
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 53
Arbeiten mit dem ApplicationTemplateEigene Maschinenmodule erstellen: MM_EmptyModul kopieren/einfügen
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
8.2 Eigene Maschinenmodule erstellen: MM_EmptyModul kopieren/einfügen
Tipp!
Beim Erstellen von eigenen Maschinenmodule vergibt das ApplicationTemplateautomatisch die passenden Maschinenmodul-internen Benennungen.
Maschinenmodule erstellen: Was ist zu tun?
So gehen Sie vor:
1. Maschinenmodul MM_EmptyModule kopieren:
• Rechtsklick auf den Ordner A65 EmptyModule\MM_EmptyModule Copy Empty Module auswählen.
2. Das zuvor kopierte Maschinenmodul (Empty Module) unterhalb des Ordners
A70_MachineModuleSources einfügen:
• Rechtsklick auf den Ordner A70_MachineModuleSources Insert Empty Module
Die Maschinenmodul-Vorlage EmptyModule ist...
• ...im Ordner A65 EmptyModule mit dem Befehl
Copy Empty Module zu kopieren und
• ...anschließend mit dem Befehl Insert Empty Module
in den Ordner A70_MachineModuleSources einzufügen.
Das Maschinensteuerungsmodul (MM_Machine) ist gemäßder individuellen Anforderungen selbst zu erstellen.
Arbeiten mit dem ApplicationTemplateInstanzen von Maschinenmodulen erzeugen: Create MM Instance
54 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
3. Gewünschten Modulnamen eingeben.
Der Modulname ist frei wählbar und darf …• kein "MM_" enthalten• nur die Zeichen "A ... Z", "a ... z", "0 ... 9" enthalten• keine Sonderzeichen enthalten.
4. Insert klicken, um das Maschinenmodul einzufügen.• Das Maschinenmodul ist mit den passenden Namen der MAPs/des MFB, Strukturen und
Visualisierung eingefügt.
5. Das eingefügte Maschinenmodul (MFB_*) ist in den MMT im Ordner
A10_MachineModuleTree einzufügen.
6. Die Modulapplikation (MAP_*) im Ordner A11_ModuleAppCalls ist in den gewünschten Modulapplikationsaufruf (MAC_Task_*) einzufügen.
8.3 Instanzen von Maschinenmodulen erzeugen: Create MM Instance
Zum Erstellen von weiteren Maschinenmodulinstanzen ist im ApplicationTemplate der BefehlCreate MM Instance zu verwenden. Beispiel: Eine Instanz des Maschinenmoduls Module1 erzeugenim Application Template Counter.
So gehen Sie vor:
1. Maschinenmodul MM_Module1 instanziieren:
• Per Rechtsklick auf den Ordner A70_MachineModulesSources Create MM Instance ausführen:
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 55
Arbeiten mit dem ApplicationTemplateInstanzen von Maschinenmodulen erzeugen: Create MM Instance
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
2. Anschließend sind auf der Registerkarte MM Project die Maschinenmodule sichtbar, die
sich im Ordner A70_MachineModulesSources befinden.
Hinweis: : Über die Registerkarte MM Library sind Instanzen von Maschinenmodule einer Bibliothek erstellbar (in Vorbereitung!).
• Gewünschtes Maschinenmodul markieren, von dem eine Instanz zu erstellen ist.• Instanznamen im Eingabefeld "User Defined Base Name“ eingeben, Beispiel: TestModu-
le.
3. Insert klicken, um in allen globalen Variablenlisten eine Instanz des Maschinenmoduls und dessen Strukturen zu erstellen.
Arbeiten mit dem ApplicationTemplateErstelltes Maschinenmodul in den MMT einbinden
56 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
8.4 Erstelltes Maschinenmodul in den MMT einbinden
Das (auf Basis der Vorlage MM_EmptyModule) erstellte Maschinenmodul ist in denMachineModuleTree (MMT) einzubinden, um es funktionsfähig in das ApplicationTemplate zuintegrieren.
So gehen Sie vor:
1. In der Geräte-Ansicht den Ordner A10_MachineModuleTree doppelklicken.
• MMT (PRG) doppelklicken.Hinweis: Die Programmiersprache von MMT (PRG) ist CFC (Continous Function Chart).
• Im Dialogfenster Werkzeuge die Schaltfläche Baustein klicken.• Neuen FB per drag-and-drop erstellen.
• Im Bereich des FBs doppelklicken. Schaltfläche betätigen.
Mit der Eingabehilfe aus dem Element Application...• ...den FB MFB_CrossCutter zuweisen.• ...die Instanz CrossCutter zuweisen.
Hinweis: In der Eingabehilfe ist die Option Namensraum-Präfix einfügen beim Zuweisen des Instanznamens zu aktivieren.
2. Relative Adresse für das Maschinenmodul festlegen.
• Im Dialogfenster Werkzeuge die Schaltfläche Eingang klicken.• Neuen Eingang bei MM_Address hinzufügen• Relative Adresse (Beispiel: 3) zuweisen.
3. Die FBs MFB_MachineControl und MFB_CrossCutter miteinander verbinden.• Beispiel (ApplicationTemplate Counter):
Hinweis: Nach dem Einfügen eines Maschinenmoduls ist die Ausführungsreihenfolge der Maschinenmodule zu prüfen, die sich nach dem Einfügen des weiteren Maschinenmoduls ergibt.
Zum Ändern der Ausführungsreihenfolge sind die Elementnummern in der oberen
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 57
Arbeiten mit dem ApplicationTemplateZuordnen der Modulapplikation (MAP) zur Task
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
rechten Ecke des entsprechenden Maschinenmoduls anzupassen.• Dazu ist im Kontextmenü der Elementnummer (rechte Maustaste) der Menüpunkt
Ausführungsreihenfolge aufzurufen.
Hinweis: Bei deaktivierter Option "Strukturierte Ansicht" ist ein FB (Beispiel: MFB_CrossCutter) über die Eingabehilfe (Kategorie: Instanzen) erreichbar.
8.5 Zuordnen der Modulapplikation (MAP) zur Task
Bei Maschinenmodulen, die mit der Vorlage EmptyModule erstellt sind, ist ein einfaches Zuordnenvon MAP und Task über ein Dialogfenster möglich.
Tipp!
Verwenden Sie zum Erstellen von Maschinenmodulen die Vorlage EmptyModule im Ordner
A65_EmptyModule, um das Zuordnen von Modulapplikation und Tasks einfacherdurchführen zu können.
So gehen Sie vor:
1. Rechtsklick auf den Ordner A11_ModuleAppCalls:
• Create Task Call aufrufen.
2. Im folgenden Dialogfenster die Modulapplikation im Bereich (Beispiel:
MM_NewModule) markieren, im Bereich die Task markieren, zu der die MAP zuzuordnen ist.• Die jeweilige MAP mit <</>> der Task zuordnen/Zuordnung aufheben.
[8-1] Beispiel: ModuleApp1 ist der höchstprioren Task Task_High zugeordnet.
• Zuordnung durch Klicken auf OK bestätigen.
Arbeiten mit dem ApplicationTemplateZuordnen der Modulapplikation (MAP) zur Task
58 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Manuelles Zuordnen
So gehen Sie vor:
1. Ordner A11_ModuleAppCalls doppelklicken.
2. Aufruf der Modulapplikation im Programmteil der entsprechenden Task ergänzen (Beispiel: MAC_Task_high).Hinweis: Die Programmiersprache von MAC_Task_xxx (PRG) ist FUP (Funktionsbausteinsprache).• Mit der Eingabehilfe die Struktur MM_Par.sc<Modulname> zuweisen (Element:
Application).
Hinweis: In der Eingabehilfe ist die Option Namensraum-Präfix einfügen zu aktivieren.
Ergebnis: Das Maschinenmodul ist jetzt...• ...in den Maschinenmodulbaum (MMT) eingebunden.• ...durch die interne Zustandsmaschine steuerbar.
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 59
Arbeiten mit dem ApplicationTemplateInstanzen eines Maschinenmoduls entfernen
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
8.6 Instanzen eines Maschinenmoduls entfernen
Die zuvor eingefügten Instanzen eines Maschinenmoduls sind im Ordner A55_VarLists aus denglobalen Variablenlisten zu entfernen.
So gehen Sie vor:
1. Ordner A55_VarLists doppelklicken.
2. Globale Variablenliste MM_Dcl doppelklicken.
3. Rechtsklick auf die zu löschende Instanz (Beispiel: NewModule):
8.7 Maschinenmodule entfernen
Um ein Maschinenmodul inklusive aller Instanzen aus dem »PLC Designer«-Projekt zu entfernen, ist
der Befehl Löschen auszuführen.
So gehen Sie vor:
Per Rechtsklick auf den Modulnamen im Ordner A70_MachineModuleSources den
Befehl Löschen ausführen.
8.8 Modulkennung
[8-2] Beispiel: Strukturansicht der Komponenten eines MFB_MachineControl des Maschinenmoduls MM_Machine
• Jedes Maschinenmodul ist durch eine eindeutige Modulkennung identifizierbar, die in jedem MFB des jeweiligen Maschinenmdouls hinterlegt ist.
• Die Modulkennung ist mit der Bezeichnung CompID im BaseChannel definiert und durch die Methode setCompIDAndVersion() setzbar.
Arbeiten mit dem ApplicationTemplateModulkennung
60 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
• Die jeweilige Modulkennung (CompID) ist in der Visualisierung unter Machine Module Details
sichtbar: Ordner A20_Visualisation L_Main, Schaltfläche Module List.
Tipp!
Vergeben Sie bei jedem neu erstellten Maschinenmodul eine passende Kennung CompID.
Beim Überarbeiten eines Moduls ist es hilfreich, die Version entsprechend zu aktualisieren.
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 61
Arbeiten mit dem ApplicationTemplateAchse einfügen
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
8.9 Achse einfügen
Um eine Achse an ein Maschinenmodul anzubinden, ist dies beim Erstellen eines Maschinenmodulszu berücksichtigen.
• Das folgende Beispiel zeigt exemplarisch, wie eine Achse an das Maschinenmodul MM_Module2 anzubinden ist.
• Die Achse ist an die höchstpriore Task MAC_Task_High anzubinden.
So gehen Sie vor:
1. Die Modulapplikation aufrufen, in der eine Achse anzubinden ist:
• Die Modulapplikation um die Deklaration erweitern: AXIS: AXIS_REF_SM3
2. Im Ordner A11_ModuleAppCalls die Task aktualisieren, in der die Modulapplikation
eingebunden ist: MAC_Task_High• Den vorhandenen Modulnamen (hier: MAP2_Modul2_App1) im FB der
Modulapplikation löschen:
3. Den Namen der Modulapplikation (Beispiel: MAP_Module2_App1) dem FB zuordnen:
Arbeiten mit dem ApplicationTemplateAchse einfügen
62 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
4. Den Namen der Instanz (Beispiel: MM_Dcl.Module2.App1) der Modulapplikation zuordnen:
5. Die Achse der Modulapplikation zuordnen. Voraussetzung dazu ist, dass der reale Maschinenaufbau im »PLC Designer«-Projekt abgebildet ist. Realen Maschinenaufbau im »PLC Designer« abbilden ( 42)(Der Eingang dwTestCounter erhält keine Übergabevariable.)
• Gewünschte Achse auswählen (Beispiel: SM_Drive_ETC_9400HL)• OK klicken, um die Achse einzufügen.• Die Achse ist an das Maschinenmodul angebunden:
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 63
Arbeiten mit dem ApplicationTemplateI/O-Module des I/O-System 1000 mit einem Maschinenmodul einbinden
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
8.10 I/O-Module des I/O-System 1000 mit einem Maschinenmodul einbinden
Dieses Kapitel beschreibt, wie aus einem Maschinenmodul auf die Module eines über CANangeschlossenes I/O-System zugreifbar ist.
Beispiel: Aus dem Maschinenmodul MM_Modul1 auf drei digitale Ein-/Ausgänge und einemanalogen Eingang des I/O-System 1000 zugreifen.
So gehen Sie vor:
1. Rechtsklick I_O_Modul_Koppler• Menübefehl Geräte suchen ausführen
Das nachfolgende Dialogfenster zeigt alle identifizierten I/O-Module an.
• Betätigen Sie die Schaltfläche Alle Geräte ins Projekt kopieren, um alle gefundenen Geräte in das Projekt einzufügen.
Arbeiten mit dem ApplicationTemplateI/O-Module des I/O-System 1000 mit einem Maschinenmodul einbinden
64 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
2. Die Variablen-Namen, die im Maschinenmodul verwendet werden und eine Anbindung an das I/O-System haben, sind in der Struktur MM_IO zusammengefasst.
3. Die Variablen sind den physikalischen I/O-Modulen zuzuordnen.
4. Die Option Variablen immer aktualisieren ist durch Setzen des Häkchens ( ) zu aktivieren.
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 65
Arbeiten mit dem ApplicationTemplateModulapplikationen erstellen
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
8.11 Modulapplikationen erstellen
Dieses Kapitel beschreibt, wie Sie eine Modulapplikation zu erstellen ist.
Tipp!
Im ApplicationTemplate sind alle Stellen mit dem SchlüsselwortAT_ACTION_CREATE_NEW_MODULEAPPLICATION gekennzeichnet, die zu editieren sind,wenn eine neue Modulapplikation zu erstellen ist.
Die Suchfunktion im »PLC Designer« erleichtert das Finden der zu editierenden Stellen:• Menübefehl BearbeitenSuchen&ErsetzenSuchen ausführen• Gewünschtes Schlüsselwortes eingeben und suchen/weitersuchen, um an die
entsprechenden Stellen im ApplicationTemplate zu navigieren.
Beispiel: Erweitern des Maschinenmoduls MM_Module1 um eine Modulapplikation.
So erstellen Sie eine Modulapplikation:
1. Den Ordner MM_Module1\ModApp1 kopieren (Rechtsklick: Kopieren) und in den
Maschinenmodul-Ordner MM_Module1 einfügen (Rechtsklick: Einfügen).
Folgende Elemente sind (über Rechtsklick Eigenschaften) umzubenennen:
• Der Ordnername (vorher: ModApp1): ModApp2
• Ausgangssituation:• Ein Maschinenmodul (Beispiel:
MM_Module1) ist um eine Modulapplikation zu erweitern.
• Erstellen Sie die Modulapplikation in folgendem Ordner des Maschinenmoduls:
MM_Module1\ModApp1
Arbeiten mit dem ApplicationTemplateModulapplikationen erstellen
66 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
• Der FB-Name (vorher: MAP_Module1_App1): MAP_Module1_App2
Die Modulapplikation ist nun eingefügt.
Im Funktionsbaustein MFB_Module1 ist die eingefügte Modulapplikation zu deklarieren:
8.11.1 Funktion des eingefügten Modulapplikation anpassen - Übersicht
Die Programmierung ist in folgenden Ordnern anzupassen, um die gewünschte Funktion der Modulapplikation zu erreichen:
• Gewünschte Parameter anpassen, wie beispielsweise Fehlerreaktionen und Fehlernummern.
• Die Methode SetErrors im Ordner
BasicFunctions ist entsprechend anzupassen, sofern von dieser Modulapplikation heraus Fehler auszulösen sind.
• Soll die Zustandsmaschine (Statemachine) dieser Modulapplikation anders arbeitet als die Modulapplikation 1, sind die Stati passend zu programmieren.
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 67
Arbeiten mit dem ApplicationTemplateModulapplikationen erstellen
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
8.11.2 Häufig gestellte Frage: Zusammenhang zwischen MFB und MAP
Funktionsbaustein MFB_Module1
Der MachineModuleTree (MMT) bildet den mechatronischen Aufbau des Automationssystems mitHilfe der MFB-Funktionsbausteine (MFB_Modulexx) ab.
• Ein Instanziieren des MFB_Module1 ist in der Struktur MM_Dcl des Ordners
A55_VarLists durchzuführen.
• Die Instanz ist in den MMT an der gewünschten Position einzufügen.
[8-3] Beispiel: Maschinenmodulbaum im ApplicationTemplateCounter
• Ein Maschinenmodul bildet eine „Klammer“ um die Modulapplikationen, die sich im Maschinenmodul befinden.
• Die Modulapplikationen sind daher innerhalb des Maschinenmoduls zu deklarieren.
Mit folgender Deklarationszeile ist die Modulapplikation MAP_Module1_App1 zu instanziieren,damit die Instanz in der Modulapplikation der ModuleAppCalls entsprechend der Task aufrufbar ist:
• Die Anweisung parentModule:= THIS^ bindet die Modulapplikation App1 an die Basisfunktionen von allen Maschinenmodulen an (beispielsweise Zustandsmaschine, Fehlerbehandlung, BaseChannel). Dadurch die Modulapplikation App1 auf die Basisfunktionen des ApplicationTemplates zugreifen.
• Die ACD-Struktur ist manuell zuzuweisen. Die Struktur AppChannelData (ACD) ( 76)
[8-4] Beispiel: App1
App1: MAP_Module1_App1 := (parentModule := THIS^);
Arbeiten mit dem ApplicationTemplateModulapplikationen erstellen
68 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
[8-5] Verknüpfung von Maschinenmodul-MFB, Modulstrukturbaum (MMT) und Taskzuordnung der Modulapplikation (MAC)
8.11.3 Innerhalb der Modulapplikation programmieren
Um die Teilfunktionen einer Modulapplikation zu strukturieren, sind die Aktionen desApplicationTemplates zu verwenden. Programmier-Empfehlungen zum Strukturieren ( 29)
Tipp!
Beim Programmieren mit dem ApplicationTemplate ist es empfehlenswert, die imApplicationTemplate enthaltenen Methoden zu verwenden.
Statemachine (Zustandsmaschine) ( 80)
Errorhandling (Fehlerbehandlung) ( 96)
Die Struktur AppChannelData (ACD) ( 76)
Wo finde ich was in derGeräte-Ansicht?
• MFB
Hinweis!
Ein Maschinenmodul muss mindestens eine Modulapplikation enthalten, die einem ModulAppCall (und damit einer Task) zugeordnet wird!
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 69
Arbeiten mit dem ApplicationTemplateModulapplikationen erstellen
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
8.11.4 Modulapplikation einbinden
Dieser Abschnitt beschreibt die Vorgehensweise zum Einbinden einer neu erstelltenModulapplikation in ein Maschinenmodul.
Tipp!
Im ApplicationTemplate sind alle Stellen mit dem SchlüsselwortAT_ACTION_ADD_MODULEAPPLICATION gekennzeichnet, die zu editieren sind, wenn eineneue Modulapplikation einzubinden ist.
Die Suchfunktion im »PLC Designer« erleichtert das Finden der zu editierenden Stellen:• Menübefehl BearbeitenSuchen&ErsetzenSuchen ausführen.• Gewünschtes Schlüsselwortes eingeben und suchen/weitersuchen, um an die
entsprechenden Stellen im ApplicationTemplate zu navigieren.
Beispiel: Einbinden der Modulapplikation in die Task Task_Mid.
So binden Sie eine Modulapplikation ein:
Das Beispiel zeigt anhand des Maschinemoduls MM_Module1, wie die neu erstellteModulapplikation App2 in das ApplicationTemplate einzubinden ist.
1. Aufruf der neu erstellten Modulapplikation in der entsprechenden Task (Ordner
A11_ModuleAppCalls, Baustein MAC_Task_Mid).• Den Baustein MAP_Module markieren.
• Den Baustein kopieren und einfügen (Rechtsklick: Kopieren/ Einfügen)
Arbeiten mit dem ApplicationTemplateModulapplikationen erstellen
70 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
2. Die neue Modulapplikation (MAP) einbinden.• Auf den FB-Namen klicken
• Eingabehilfe durch Betätigen der Schaltfläche aufrufen.
• Mit der Eingabehilfe aus dem Element Application die gewünschte Modulapplikation auswählen, die in die Task eingebunden werden soll.
Beispiel: Modulapplikation MAP_Module1_App2
3. Schaltfläche OK betätigen, um die Modulapplikation einzubinden.
4. Der Instanzname ist entsprechend anzupassen:• Instanznamen passend angeben, Beispiel: MM_Dcl.Module1.App2
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 71
Arbeiten mit dem ApplicationTemplateOnline Change
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Weiterführende Informationen zum Erweitern der Visualisierung finden Sie in folgendemAbschnitt: Die Visualisierung erweitern ( 112)
8.12 Online Change
"Online Change" bedeutet, nur die geänderten Programm-/Datenteile einer laufenden Applikationin den Controller zu laden.
• Dadurch findet keine Neu-Initialisierung (Warmstart, Reset) statt.
• Der "Online Change" findet statt, nachdem alle Tasks abgearbeitet sind (Tasklücke).
8.12.1 Wann ein "Online Change" im ApplicationTemplate möglich ist
Bei folgenden Anwendungsfällen ist ein „Online Change“ ohne Einschränkungen verwendbar:
• Änderungen am Programm-Code und Anwendungsdaten, die folgende Bereiche nicht beeinflussen:
...den strukturellen Aufbau des Machine Module Tree (MMT)
...das Einbinden von Maschinenmodul-Basisfunktionen (beispielsweise der Funktionsbaustein L_EATP_ErrorSet zum Auslösen von Fehlern).
• Beim Ändern des strukturellen Aufbaus sowie beim Einbinden von Maschinenmodul-Basisfunktionen im ApplicationTemplate ist ein Online Change nicht zu verwenden!
Hinweis!
Ein "Online Change" ist nur möglich, wenn ein Übersetzungsprotokoll vorhanden ist. Nach dem Ausführen der Befehle Alles bereinigen und Applikation bereinigen ist kein "Online Change" möglich, da der Bereinigungsprozess alle Compile-Informationen (Übersetzungsprotoll) löscht.
Arbeiten mit dem ApplicationTemplateOnline Change
72 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
8.12.2 Wann ein "Online Change" nicht möglich ist
Bei folgenden Anwendungsfällen ist das Ausführen eines "Online Change" zu vermeiden:
• Beim Ändern der Struktur des MMT: Beispielsweise das Hinzufügen/Entfernen von Maschinenmodulen.
• Beim Ändern von Zugriffen auf Basisfunktions-Bausteinen: Beispielsweise zusätzliche Instanzen des Funktionsbausteins L_EATP_ErrorSet zum Auslösen von Fehlern.
Technische Hintergrundinformationen
Ein Neu-Generieren des ApplicationTemplates-Aufbaus (bedingt durch strukturelle Änderungen) istnur nach einem Neustart (mindestens Warmstart) möglich. Dazu ist ein erneutes Einloggen mitDownload erforderlich.
• Ein "Online Change" führt die Änderungen am Applikationsprogramm in der "Tasklücke" (alle Tasks haben ihren Durchlauf beendet) aus.
• Der Austausch der entsprechenden Programm-/Datenbausteine durch das Laufzeitsystem verursacht eine Zeitverzögerung, so dass dadurch das Task-Timing negativ beeinflusst werden kann.
Informationen zum Zeitverhalten
Folgende Faktoren bewirken, dass der Taskdurchlauf unmittelbar nach dem Online Changeverspätet startet/unwirksam ist.
Bei hoher Taskauslastung (Verhältnis von Tasklaufzeit zum Taskintervall) und daraus resultierenderkurzer Tasklücke
und/oder
Das bei einem Online Change erforderliche Verschieben von Variablen.
8.12.3 Allgemeine Programmier-Empfehlungen, die ein "Online Change" ermöglichen
Folgende Faktoren sind beim Programmieren zu beachten, um ein "Online Change" zu ermöglichen:
• Pointer und Referenzen vermeiden
Vermeiden Sie grundsätzlich die Verwendung von Pointern und Referenzen. Dadurch sind bei einemOnline Change keine besonderen Vorkehrungen zu treffen, um den ordnungsgemäßen Betrieb derApplikation sicherzustellen.
• Pointer und Referenzen in jedem Taktzyklus vermeidenSind Pointer- und Referenzwerte in jedem Takt-Zyklus neu zuzuweisen, ist sicherzustellen, dass die referenzierten Speicheradressen im ersten Taktzyklus nach einem Online Change den richtigen Wert haben.
Hinweis!
Vor allem im Hinblick auf zeitkritische Motion-Anwendungen ist ein Online Change nur auszuführen, wenn sich alle Antriebsregler mit Motion-Funktion im Stillstand befinden.Im Stillstand wirkt sich eine kurzzeitige Störung des Task-Timings (im Normalfall) nicht aus.
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 73
Arbeiten mit dem ApplicationTemplateOnline Change
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Beachten Sie, dass beim Zuweisen eines Referenz- oder Pointerwert an einen anderen, der Quellwert zuerst im Taktzyklus zu aktualisieren ist, da ansonsten das Ziel der Zuweisung mindestens einen Taktzyklus lang den vorherigen (alten) Wert aufweist.
• {attribute 'init_on_onlchange’ } verwendenReferenz- oder Pointervariablen (sowie weitere Variablen), die mit diesem Attribut versehen sind, sind nach einem OnlineChange auf ihren Initialwert gesetzt.• Dadurch ist das Auftreten eines OnlineChange identifizierbar.• Dadurch sind Initialisierungsvorgänge erneut (nach einem abgeschlossenen Online Change)
durchführbar.
• Schnittstellen-Referenzen verwenden
Schnittstellen-Referenzen (Interfaces) werden bei einem OnlineChange automatisch geprüft undangepasst.
Beim Verwenden von Schnittstellen und Schnittstellenreferenzen für das ApplicationTemplate istzu beachten, dass das Verwenden rein funktional nicht erforderlich ist und nur zum Zwecke desOnlineChange erforderlich ist.
Um auf eine FB-Instanz zugreifen zu können, ist ein zusätzlicher Methodenaufruf der Schnittstelle(Pointer/Referenz auf die FB-Instanz) erforderlich.
Architektur: Das ApplicationTemplate im DetailAuf Strukturvariablen von Maschinenmodulen zugreifen
74 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
9 Architektur: Das ApplicationTemplate im Detail
9.1 Auf Strukturvariablen von Maschinenmodulen zugreifen
9.1.1 Auf moduleigene Strukturvariablen zugreifen
Die Strukturen der Maschinenmodule enthalten die Ein- und Ausgangsvariablen derMaschinenmodule zum Anbinden der Daten an das Gesamtsystem:
• I/O-Daten: Struktur MIO
• Parameter/Daten des Rezepturverwalters: Struktur MPar
• Persistente Daten: Struktur MPD
• Daten der Visualisierung: Struktur MVis
Das folgende Beispiel zeigt, wie eine Strukturvariable für eine externe Visualisierung (die der MAPzugeordnet ist) innerhalb einer Modulapplikation aufzurufen ist (beim Einfügen eines Moduls mitautomatisch passenden Namen sind die passenden Einträge automatisch hinzugefügt):
[9-1] Auszug aus der Struktur MVIS_scMachine
Strukturen (Structs) für ...
...IOs
...Parameter (Rezepturverwalter)
...persistente Daten
...externe Visualisierung
// MVis_scMachine// für MAP1diPieces : DINT;
// für MAP2diLength : DINT;
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 75
Architektur: Das ApplicationTemplate im DetailAuf Strukturvariablen von Maschinenmodulen zugreifen
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
[9-2] Auszug aus der Modulapplikation (MAP)
Der dazugehörige Programmaufruf in der Maschinenapplikation hat die folgende Syntax:
[9-3] Beispielprogramm, das der Visualisierungsvariablen diPieces den Wert 4711 zuweist.
9.1.2 Auf Strukturen von anderen Maschinenmodulen zugreifen
Die globalen Maschinenmodul-Strukturen sind im Ordner A55_VarLists instanziert.
• Dadurch sind die Strukturen und Maschinenmodule des ApplicationTemplates wiederverwendbar.
• Die Strukturvariablen eines beliebigen Maschinenmoduls sind von einem anderen Maschinenmodul aus verwendbar.
• Um die Variablen einer globalen Struktur des Maschinenmoduls 1 (Beispiel: MM_Module1) in einer anderen Maschinenapplikation von Maschinenmodul 2 (Beispiel: MM_Module2) nutzen zu können, ist folgender Programmaufruf erforderlich:
[9-4] Beispielprogramm: Auf die Struktur MM_Vis von Modul 1 zugreifen.
VAR_IN_OUT/// ------------------ START OF USER SPECIFIC BLOCK ---------------------
/// Add the needed declarations of Par, Vis, IO and PD access herePar: MPar_scMachine;Vis: MVis_scMachine;IO: MIO_scMachine;PD: MPD_scMachine;
/// ------------------- END OF USER SPECIFIC BLOCK ----------------------END_VAR
Vis.diPieces := 4711;
diPiecesModul1 := MM_Vis.scModule1;
Architektur: Das ApplicationTemplate im DetailDie Struktur AppChannelData (ACD)
76 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
9.2 Die Struktur AppChannelData (ACD)
Sofern benötigt, ist die Datenstruktur vom Typ MACD_scModulname im gewünschtenMaschinenmodul (MFB) zuweisbar.
Die Datenstruktur muss die in der Bibliothek L_EATP_ApplicationTemplate enthaltene StrukturL_EATP_ACD_Base erben. Die Bibliothek L_EATP_ApplicationTemplate ( 118)
• Die Struktur MACD_scModule1 definiert die Variable diCounter vom Datentyp DINT.
[9-5] Aufbau der ACD-Struktur mit vererbter Struktur L_EATP_ACD_Base
• Der MACD_sc<Modulname> ist mit den benötigten Datentypen individuell erweiterbar.
• Durch die geerbte Struktur sind in der ACD-Struktur spezielle Steuer- und Statusbits verfügbar.
• In der Struktur ist der Baustein L_EATP_CriticalSection instanziiert, der einen konsistenten Austausch von Datenaustausch gewährleistet (sofern der FB korrekt verwendet wird).
L_EATP_CriticalSection ( 125)
Weiterführende Informationen zu der Struktur L_EATP_ACD_Base: L_EATP_ACD_Base (ACD-Struktur) ( 135)
9.2.1 ACD-Struktur im MFB deklarieren/registrieren
Um die ACD-Struktur in den Modulapplikationen (MAPs) eines MFBs und dessen Master verwendenzu können, ist die Instanz der ACD-Struktur im MFB lokal zu deklarieren.
[9-6] Deklaration der ACD-Struktur im MFB_Module1
Die ACD-Struktur ist im Programmteil des MFB registriert, um Sicherheitsmechanismen zuaktivieren.
• An die Methode RegisterACD() ist der zu registrierende Instanzname und die Größe der Struktur zu übergeben.
• Die Struktur ist in jedem Zyklus neu zu registrieren. (Eine fehlende Registrierung löst einen Infrastrukturfehler aus.)
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 77
Architektur: Das ApplicationTemplate im DetailDie Struktur AppChannelData (ACD)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
[9-7] Registrierte ACD-Struktur im MFB_Module1
9.2.2 Auf die ACD-Struktur zugreifen - Mit der Modulapplikation des MFB
[9-8] Schematische Darstellung: Von der Modulapplikation (MAP) eines Maschinenmoduls (MM_Module) auf die ACD-Struktur zugreifen
Um mit der Modulapplikation (MAP) des MFBs auf die ACD-Struktur zuzugreifen, sind...
• ...ein POINTER auf die ACD-Struktur und
• ...eine Referenz auf die ACD-Struktur in der gewünschten Modulapplikation zu deklarieren.
[9-9] Deklaration von POINTER und REFERENZ auf die ACD-Struktur in der MAP des Maschinenmoduls MM_Module1
Architektur: Das ApplicationTemplate im DetailDie Struktur AppChannelData (ACD)
78 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Im Programmteil der Modulapplikation (MAP) ist der Zugriff auf die ACD-Struktur durch dieMethode AccessACD() zu gewährleisten:
[9-10] Programmteil der Modulapplikation MAP_Module1_App1: Zugriff auf die ACD-Struktur zertifizieren
Dadurch ist ein Lese-/Schreibzugriff mit Hilfe der Referenz und der Intellisensefunktion auf dieDateninhalte der ACD- Struktur möglich:
[9-11] Kommando zum Schreiben von Daten auf die ACD-Struktur
9.2.3 Auf eine ACD-Struktur zugreifen - Mit der Modulapplikation des MFB-Master-Moduls
[9-12] Schematische Darstellung: Von der Modulapplikation (MAP) des Masters (MM_Machine) auf die ACD-Struktur zugreifen
Damit eine Applikation des Master-Moduls auf die ACD-Struktur eines unterlagertenMaschinenmoduls zugreifen kann, sind im Deklarationsteil der Modulapplikation des Masters einPointer und eine Referenz auf die ACD-Struktur des Slaves zu deklarieren.
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 79
Architektur: Das ApplicationTemplate im DetailDie Struktur AppChannelData (ACD)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
[9-13] Deklaration von POINTER und REFERENZ auf die ACD-Struktur in der MAP des Master-Maschinenmoduls MM_Machine
Im Programmteil der Modulapplikation (MAP) des Masters ist der Zugriff auf die ACD-Strukturdurch die Methode AccessACD() zu gewährleisten:
[9-14] Programmteil der Modulapplikation MAP_Machine_App1: Zugriff auf die ACD-Struktur zertifizieren
Dadurch ist ein Lese-/Schreibzugriff mit Hilfe der Referenz und der Intellisensefunktion auf die ACD-Struktur des Slaves möglich:
[9-15] Kommando zum Lesen des Datenfelds der ACD-Struktur
Architektur: Das ApplicationTemplate im DetailStatemachine (Zustandsmaschine)
80 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
9.3 Statemachine (Zustandsmaschine)
Das Maschinenmodul (das sich auf der obersten Ebene des MaschineModulTree MMT befindet) dieZustandsmaschine von allen untergeordneten Maschinenmodulen steuert.
• Die dadurch ausgelösten Zustandsübergänge beeinflussen die untergeordneten Maschinenmodule.
9.3.1 Zustandsübergänge und Bedingungen - Übersicht
Dieser Abschnitt stellt die einzelnen Zustandsübergang der Zustandsmaschine desApplicationTemplates dar. Zu jedem Zustandsübergang sind die jeweils erforderlichenBedingungen angegeben. Die Zustandsübergänge in Bezug zum Text nummeriert:
Kennzeichnung Zustand/Bezeichner Beschreibung
InitialisierungInit
Ein Initialisieren des Moduls/der Modulapplikation ist immer erforderlich.
• Nach einem RESET ist der Zustandsübergang "Init""Ready" gesperrt.
• Anschließend ist der Zustandsübergang "Init""Ready" von der Modulapplikation (nach abgeschlossener Initialisierung) freizugeben.• Die Methode SMEnableInitToReady(TRUE/FALSE) gibt den
Zustandsübergang frei/sperrt diesen.
Freigabe-/Sperrmechanismus• ...erlaubt den Modulapplikationen, den jeweiligen
Zustandsübergang zu sperren/freizugeben.
...
RuhezustandReady
Betriebsbereit. Dies ist der Grundzustand der Zustandsmaschine.
HandbetriebManual
Freigabe-/Sperrmechanismus• In diesem Zustand ist der Antriebsregler im Handfahrmodus
steuerbar, beispielsweise zum Reinigen oder Wechseln des Werkzeugs.• Durch Setzen der einzelnen Steuerbits ist der Antriebsregler
manuell (Jog1, Jog2, QSP, ErrorReset...) steuerbar.• Dieser Zustand erlaubt den Modulapplikationen, den zugrunde
liegenden Zustandsübergang zu sperren/freizugeben.
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 81
Architektur: Das ApplicationTemplate im DetailStatemachine (Zustandsmaschine)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Sonderzustand "Warning"
"Warning" ist ein Sonderzustand (unabhängiger, "orthogonaler" Zustand), der dasBetriebsverhalten des Maschinenmoduls nicht beeinflusst.
• Mögliche Stati:...aktiv: "Warning" (oder: ...nicht aktiv: "No Warning")
9.3.2 Ausgangszustand der Zustandsübergänge
Die Zustandsübergänge zwischen der Modul-Zustandsmaschine und den Modulapplikationenbefinden sich wie folgt im Initialzustand:
Mit Hilfe von Methoden sind die Zustandsübergänge beeinflussbar (freigeben/sperren).
Service Service-Betrieb zu Wartungszwecken• MM_Modul1: Wert laden (Beispiel: 123)• MM_Modul2: Wert laden (Beispiel: 567)
Automatic Automatik-Betrieb• MM_Modul1: Inkrementieren (50 Einheiten pro Sekunde)• MM_Modul2: Inkrementieren (20 Einheiten pro Sekunde)
...
BenutzerdefiniertMode 1...2
Benutzerdefinierbare Stati• ...sind abhängig von der Anwendung der jeweiligen Maschine
Homing Im Zustand "Homing" wird der Antrieb referenziert. Entweder wird die Home-Position direkt gesetzt oder eine Referenzfahrt gestartet.
...
KommendeFehlerzustände
Können zu beliebigen Zeitpunkten auftreten.• Ein Maschinenmodul, Maschinenmodule gleicher
Hierarchieebene oder untergeordnete Slaves können Fehler auslösen.
• Die Modulapplikation kann die Zustandsübergänge zum Fehlerzustand nicht sperren.
• Mit der Programmierung der Maschinenmodule ist definierbar, wie auf einen Fehlerzustand zu reagieren ist.
...
Fehler Zustand "Fehler"
,
BetriebsbereitReady
Zustand "Betriebsbereit"• Nach erfogreicher Fehlerbehebung/Quittieren des Fehlers
Quickstop Zustand "Schnellhalt"• Quittierpflicht ist paramterierbar.
FehlerFault
Zustand "Systemfehler"• Zum Beenden ist Reset der PLC erforderlich.
SystemfehlerSystemfault
Zustand "Fehler"• Ist quittierpflichtig.
Kennzeichnung Zustand/Bezeichner Beschreibung
Zustandsübergang Beschreibung
2-13 Sind im Ausgangszustand (nach RESET) freigegeben
Architektur: Das ApplicationTemplate im DetailStatemachine (Zustandsmaschine)
82 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
9.3.3 Die Zustandsübergänge im Detail
Der Zustand "Init" wird unmittelbar nach dem Netzschalten/Geräte-Reset erreicht.
• Die Modulapplikation führt die Initialisierung aus. Nach der Initialisierungsphase ist durch Setzen des Eingangs xEnableInitToReady die Zustandsmaschine in den Zustand "Ready" zu setzen.
• Folgende Eingangsbedingungen müssen erfüllt sein, damit der jeweilige Zustandsübergang erreicht ist:
Nummer Zustandsübergang Bedingung
1 "Init""Ready" • SetState-Anforderung des MastersbaseChannelSetNominalState(MM_Address:= 0, eState:=L_EATP_SMStates.Ready); und
• Zustandsübergang ist durch die Modulapplikation freigegeben(Eingang xEnableInitToReady = TRUE)
Hinweis: Wird diese Methode während der Initialisierungsphase von jedem Maschinenmodul (MM) durchlaufen, befinden sich danach alle MMs im Zustand "Ready".
2 "Ready""Manual"
• SetState-Anforderung des MastersbaseChannelSetNominalState(MM_Address:= 0, eState:=L_EATP_SMStates.Manual); und
• Zustandsübergang ist durch die Modulapplikation in jedem untergeordneten Maschinenmodul freizugeben (Eingang xDisableReadyToManual = FALSE)
3 "Ready""Service"
• SetState-Anforderung des MastersbaseChannelSetNominalState(MM_Address:= 0, eState:=L_EATP_SMStates.Service); und
• Zustandsübergang ist durch die Modulapplikation freigegeben(Eingang xDisableReadyToService = FALSE)
4 "Ready""Automatic"
• SetState-Anforderung des MastersbaseChannelSetNominalState(MM_Address:= 0, eState:=L_EATP_SMStates.Automatic); und
• Zustandsübergang ist durch die Modulapplikation freigegeben(Eingang xDisableReadyToAutomatic = FALSE)
5...7 "Ready""Mode(1...2)"
• SetState-Anforderung des MastersbaseChannelSetNominalState(MM_Address:= 0, eState:=L_EATP_SMStates.Mode(1...2));und
• Zustandsübergang ist durch die Modulapplikation freigegeben:(Eingang xDisableReadyToMode(1...2) = FALSE)
8 "Manual""Ready"
• SetState-Anforderung des MastersbaseChannelSetNominalState(MM_Address:= 0, eState:=L_EATP_SMStates.Ready); und
• Freigabe des Zustandsübergangs durch die Modulapplikation(Eingang xDisableManualToReady = FALSE)
9 "Service""Ready"
• SetState-Anforderung des MastersbaseChannelSetNominalState(MM_Address:= 0, eState:=L_EATP_SMStates.Ready); und
• Zustandsübergang ist durch die Modulapplikation freigegeben(Eingang xDisableServiceToReady = FALSE)
10 "Automatic""Ready"
• SetState-Anforderung des MastersbaseChannelSetNominalState(MM_Address:= 0, eState:=L_EATP_SMStates.Ready); und
• Zustandsübergang ist durch die Modulapplikation freigegeben(Eingang xDisableAutomaticToReady = FALSE)
11 ... 13 "Mode 1...2""Ready"
• SetState-Anforderung des MastersbaseChannelSetNominalState(MM_Address:= 0, eState:=L_EATP_SMStates.Ready); und
• Zustandsübergang ist durch die Modulapplikation freigegeben(Eingang xDisableMode(1...2)ToReady = FALSE)
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 83
Architektur: Das ApplicationTemplate im DetailStatemachine (Zustandsmaschine)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
14 "Ready""Quickstop"
• Die moduleigene Fehlerbehandlung setzt die Zustandsmaschine in den Zustand "Quickstop" oder
• SetState-Anforderung des MastersbaseChannelSetNominalState(MM_Address:= 0, eState:=L_EATP_SMStates.Quickstop);
14 "Ready""Fault"
• Die moduleigene Fehlerbehandlung setzt die Zustandsmaschine in den Zustand "Fault" oder
• SetState-Anforderung des MastersbaseChannelSetNominalState(MM_Address:= 0, eState:=L_EATP_SMStates.Fault);
14 "Ready""Systemfault"
• Die moduleigene Fehlerbehandlung setzt die Zustandsmaschine in den Zustand "SystemFault" oder
• SetState-Anforderung des MastersbaseChannelSetNominalState(MM_Address:= 0, eState:=L_EATP_SMStates.SystemFault);
15 "Manual""Quickstop"
• Die moduleigene Fehlerbehandlung setzt die Zustandsmaschine in den Zustand "Quickstop" oder
• SetState-Anforderung des MastersbaseChannelSetNominalState(MM_Address:= 0, eState:=L_EATP_SMStates.Quickstop);
15 "Manual""Fault"
• Die moduleigene Fehlerbehandlung setzt die Zustandsmaschine in den Zustand "Fault" oder
• SetState-Anforderung des MastersbaseChannelSetNominalState(MM_Address:= 0, eState:=L_EATP_SMStates.Fault);
15 "Manual""SystemFault"
• Die moduleigene Fehlerbehandlung setzt die Zustandsmaschine in den Zustand "SystemFault" oder
• SetState-Anforderung des MasterbaseChannelSetNominalState(MM_Address:= 0, eState:=L_EATP_SMStates.SystemFault);
16 "Service""QuickStop"
• Die moduleigene Fehlerbehandlung setzt die Zustandsmaschine in den Zustand "Quickstop" oder
• SetState-Anforderung des MastersbaseChannelSetNominalState(MM_Address:= 0, eState:=L_EATP_SMStates.Quickstop);
16 "Service""Fault"
• Die moduleigene Fehlerbehandlung setzt die Zustandsmaschine in den Zustand "Fault" oder
• SetState-Anforderung des MastersbaseChannelSetNominalState(MM_Address:= 0, eState:=L_EATP_SMStates.Fault);
16 "Service""SystemFault"
• Die moduleigene Fehlerbehandlung setzt die Zustandsmaschine in den Zustand "SystemFault"
• oder• SetState-Anforderung vom MasterbaseChannelSetNominalState(MM_Address:= 0, eState:=L_EATP_SMStates.SystemFault);
17 "Automatic""QuickStop"
• Die moduleigene Fehlerbehandlung setzt die Zustandsmaschine in den Zustand "Quickstop" oder
• SetState-Anforderung des MastersbaseChannelSetNominalState(MM_Address:= 0, eState:=L_EATP_SMStates.Quickstop);
17 "Automatic""Fault"
• Die moduleigene Fehlerbehandlung setzt die Zustandsmaschine in den Zustand "Fault" oder
• SetState-Anforderung des MastersbaseChannelSetNominalState(MM_Address:= 0, eState:=L_EATP_SMStates.Fault);
Nummer Zustandsübergang Bedingung
Architektur: Das ApplicationTemplate im DetailStatemachine (Zustandsmaschine)
84 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
17 "Automatic""SystemFault"
• Die moduleigene Fehlerbehandlung setzt die Zustandsmaschine in den Zustand "SystemFault" oder
• SetState-Anforderung des MastersbaseChannelSetNominalState(MM_Address:= 0, eState:=L_EATP_SMStates.SystemFault);
18 "Mode 1""Quickstop"
• Die moduleigene Fehlerbehandlung setzt die Zustandsmaschine in den Zustand "Quickstop" oder
• SetState-Anforderung des MastersbaseChannelSetNominalState(MM_Address:= 0, eState:=L_EATP_SMStates.Quickstop);
18 "Mode 1""Fault"
• Die moduleigene Fehlerbehandlung setzt die Zustandsmaschine in den Zustand "Fault" oder
• SetState-Anforderung des MastersbaseChannelSetNominalState(MM_Address:= 0, eState:=L_EATP_SMStates.Fault);
18 "Mode 1""SystemFault"
• Die moduleigene Fehlerbehandlung setzt die Zustandsmaschine in den Zustand "SystemFault" oder
• SetState-Anforderung des MastersbaseChannelSetNominalState(MM_Address:= 0, eState:=L_EATP_SMStates.SystemFault);
19 "Mode 2""QuickStop"
• Die moduleigene Fehlerbehandlung setzt die Zustandsmaschine in den Zustand "Quickstop" oder
• SetState-Anforderung des Masters baseChannelSetNominalState(MM_Address:= 0, eState:=L_EATP_SMStates.Quickstop);
19 "Mode 2""Fault"
• Die moduleigene Fehlerbehandlung setzt die Zustandsmaschine in den Zustand "Fault" oder
• SetState-Anforderung des Masters baseChannelSetNominalState(MM_Address:= 0, eState:=L_EATP_SMStates.Fault);
19 "Mode 2""SystemFault"
• Die moduleigene Fehlerbehandlung setzt die Zustandsmaschine in den Zustand "SystemFault" oder
• SetState-Anforderung des MastersbaseChannelSetNominalState(MM_Address:= 0, eState:=L_EATP_SMStates.SystemFault);
20 "Homing""QuickStop"
• Die moduleigene Fehlerbehandlung setzt die Zustandsmaschine in den Zustand "Quickstop" oder
• SetState-Anforderung des MastersbaseChannelSetNominalState(MM_Address:= 0, eState:=L_EATP_SMStates.Quickstop);
20 "Homing""Fault"
• Die moduleigene Fehlerbehandlung setzt die Zustandsmaschine in den Zustand "Fault" oder
• baseChannelSetNominalState(MM_Address:= 0, eState:=L_EATP_SMStates.SystemFault);
20 "Homing""SystemFault"
• Die moduleigene Fehlerbehandlung setzt die Zustandsmaschine in den Zustand "SystemFault" oder
• SetState-Anforderung des MastersbaseChannelSetNominalState(MM_Address:= 0, eState:=L_EATP_SMStates.Fault);
21 "Quickstop""Ready"
• Nach Quittieren des Fehlers (Fehlerursache beseitigen und "ErrorQuit" ausführen) und
• Automatisch nach einem Schnellhalt ("Quickstop" ausführen) Errorhandling (Fehlerbehandlung) ( 96)
22 "Fault""Ready"
Nummer Zustandsübergang Bedingung
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 85
Architektur: Das ApplicationTemplate im DetailStatemachine (Zustandsmaschine)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
9.3.4 Abbildung der Stati/Zustände - Enum L_EATP_SMStates
Die verschiedenen Stati/Zustände der Zustandsmaschine sind in der EnumerationL_EATP_SMStates abgebildet. L_EATP_SMStates ( 139)
9.3.5 Stati aktivieren - Methode baseChannelSetNominalState
Das ApplicationTemplate stellt Methoden bereit, um die Maschinenmodule in einen bestimmtenZustand zu versetzen.
23 "No Warning""Warning"
• Die moduleigene Fehlerbehandlung setzt die Zustandsmaschine in den Zustand "Warning".
24 "Warning""No Warning"
• Die moduleigene Fehlerbehandlung setzt die Zustandsmaschine in den Zustand "No Warning".
Nummer Zustandsübergang Bedingung
Hinweis!
Diese Methode ist verwendbar, wenn...• ...die Funktion .DisableDefaultCouplingSlave (moduleigener Soll-Zustand)
Die Funktion "DisableDefaultCouplingMaster" ( 88) aktiviert ist oder• ...die Funktion .DisableDefaultCouplingMaster (Soll-Zustand eines Slave-Moduls)
aktiviert ist. Die Funktion "DisableDefaultCouplingSlave" ( 89)
• ...das Maschinensteuerungsmodul (MM in oberster Ebene des MachineModuleTree (MMT)) sich selbst in einen bestimmten Zustand setzt und dadurch die untergeordneten Module in den gleichen Zustand wechseln.
Methodenname Übergabewert/Datentyp Beschreibung
baseChannelSetNominalState Soll-Zustand der Zustandsmaschine beim entsprechenden Slave-Modul/eigenen Modul setzen.
MM_AddressL_EATP_MM_Address
• Adresse des Moduls, dessen aktueller Zustand abzufragen ist.
• Der Wert "0" sowie die Konstante L_EATP_CONST.OWNID adressieren die moduleigene ID.
eStateL_EATP_SMStates
• Zu setzender Soll-Zustand.
Architektur: Das ApplicationTemplate im DetailStandardkopplung ("DefaultCoupling")
86 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Beispiel
Der MachineModuleTree hat den folgenden exemplarischen Aufbau:
[9-16] MMT-Ansicht im ApplicationTemplateCounter mit zwei untergeordneten Maschinenmodulen
Beispiel
Das Maschinensteuermodul MFB_MachineControl setzt die untergeordneten Maschinenmodule inden Zustand "Automatic":
Eine Übersicht aller BaseChannel-Methoden finden Sie unter: Methoden-Übersicht -ApplicationTemplate ( 166)
9.4 Standardkopplung ("DefaultCoupling")
Die Zustandsmaschine im ApplicationTemplate verfügt über ein Standardverhalten. In diesemAbschnitt erhalten Sie Informationen, wie untergeordnete (Slave-)Maschinenmodulen vomStandardverhalten zu entkoppeln sind.
• Das übergeordnete Maschinenmodul gibt den untergeordneten Slaves die Soll-Zustände vor und prüft dabei die aktuellen Ist-Zustände der Slaves.
• Erkennt ein untergeordnetes Slave-Modul einen Fehler...• ...dann reagiert dieses Modul mit einer Fehlerreaktion (entsprechend der programmierten
Fehlerreaktion) und• ...leitet es diese Information an das übergeordnete Maschinenmodul weiter, das dadurch in
den Zustand "Quickstop" wechselt.• Existiert ein weiteres, übergeordnetes Maschinenmodul, dann wird die Information nach
oben geleitet und dieses Modul reagiert entsprechend mit dem Zustand "Quickstop". Das oberste Maschinenmodul leitet die Information dann wieder an die von sich untergeordneten Maschinenmodulen, die in den Zustand "Quickstop" wechseln.
Diese Standardkopplung ist durch entsprechende Programmierung deaktivierbar. Das erfordert,dass der Anwender durch eine Programmierung das Verhalten im Fehlerfall festlegt.
9.4.1 Standardmechanismen des ApplicationTemplates
• Das Standardverhalten ist aktiv, wenn das Modul im Maschinenmodulbaum (MMT) über mindestens ein untergeordnetes Slavemodul verfügt.
• Das Standardverhalten ist mit Hilfe der entsprechenden Methoden ("TRUE" ist der Initialwert) steuerbar:
baseChannelSetNominalState(MM_Address := L_EATP_CONST.OWNID, eState := L_EATP_SMStates.Automatic)
SMDisableDefaultCouplingMaster(TRUE)SMDisableDefaultCouplingSlave (TRUE)
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 87
Architektur: Das ApplicationTemplate im DetailStandardkopplung ("DefaultCoupling")
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
• Eine individuelle Programmierung der Modulapplikation ist nicht erforderlich.
Durch den Standardmechanismus definierte Regeln:
1. Weist mindestens ein Slave-Modul oder das Maschinenmodul selbst einen Fehlerstatus auf ("Quickstop", "Fault" oder "Systemfault"), setzt das Maschinenmodul den Ist-Zustand auf "Quickstop". Alle Slaves erhalten die Anforderung, den Zustand "Quickstop" einzunehmen.Beispiel:Ein Maschinenmodul M hat vier untergeordnete Slaves: S1, S2, S3, S4.• S2 geht in den Fehlerstatus "ErrorState FAULT", S4 in "Quickstop".
Dies führt dazu,• ...dass M in den Zustand "Quickstop" wechselt ,• ...S1, S2, S3 erhalten die Anforderung, in den Zustand "Quickstop" zu wechseln (S4 ist bereits
im Zustand "Quickstop")
2. Liegt kein Fehlerfall vor, leitet das Maschinenmodul die moduleigene Statusanforderung an alle Slaves weiter. Der moduleigene Ist-Zustandsübergang findet erst statt, wenn alle Slaves den Zustand gewechselt haben.Beispiel:Ein Maschinenmodul M hat vier untergeordnete Slaves: S1, S2, S3, S4.• M erhält vom übergeordneten Mastermodul die Anforderung, vom Zustand "Ready" in den
Zustand "Automatic" zu wechseln.• Das Maschinenmodul M leitet den Zustandsübergang an alle Slaves weiter.• Sofern alle Slaves (S1 ... S4) den Zustandsübergang abgeschlossen haben und die
moduleigenen Bedingungen für den Zustandsübergang erfüllt sind, wechselt M in den Zustand "Automatic".
Architektur: Das ApplicationTemplate im DetailStandardkopplung ("DefaultCoupling")
88 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
9.4.2 Die Funktion "DisableDefaultCouplingMaster"
Die Funktion "DisableDefaultCouplingMaster" entkoppelt (während des Betriebs) dieZustandsmaschine des übergeordneten Mastermoduls von den dazugehörigen Slave-Modulen.
• Erforderlich ist diese Funktion, wenn...• ...bestimmte Maschinenteile/Maschinenmodule gezielt (während des Betriebs) zu
entkoppeln sind.• ...bei den entkoppelten Maschinenteilen/Maschinenmodulen ein anderer Zustand als bei
den übrigen Maschinenmodulen notwendig ist.
• Durch einen addressierten Methodenzugriff des Master ist die Zustandsmachine des Slaves beeinflussbar. Alternativ ist die Zustandsmaschine innerhalb des Slaves programmierbar. Das Errorhandling des Slaves hat keinen Einfluss auf die Zustandsmaschine des Masters.
Beispiel
[9-17] Beispiel für einen Maschinenaufbau mit drei Hierarchieebenen.
Der Master M1.2 entkoppelt seine Zustandsmaschine von den Zustandsmaschinen deruntergeordneten Slaves M1.2.1 und M1.2.2. Das bedeutet, dass im Maschinenmodul M1.2 die Soll-Stati der untergeordneten Slave-Module M1.2.1 und M1.2.2 manuell zu programmieren sind.
• Der Methodenaufruf SMDisableDefaultCouplingMaster(TRUE) aus einer Modulapplikation (MAP) heraus aktiviert die Funktion.
• Der Methodenaufruf SMDisableDefaultCouplingMaster(FALSE) deaktiviert die Funktion.
• Der Methodenaufruf hat keine Auswirkung auf die Anbindung an die ACD-Struktur des jeweiligen Maschinenmoduls.
• Optional leitet die Methode baseChannelSetErrorQuit das Fehlerquittieren an die Slaves weiter. Mit der Variable L_EATP_GVL.xDisableGlobalErrorReset ist ein globaler Fehler-Reset aktivierbar/deaktivierbar:
• Der Master der jeweiligen Zustandsmaschine kann den Zustand eines entkoppelten Moduls (über die entsprechenden Methoden) auslesen.
• Dieser Mechanismus ist dann sinnvoll, wenn das Modul über mindestens ein untergeordnetes Slave-Modul verfügt.
[9-18] Beispielprogramm: "DefaultCouplingMaster" deaktivieren
: "Disable" = "TRUE"
L_EATP_GVL.xDisableGlobalErrorReset := FALSE; //Default-Einstellung
SMDisableDefaultCouplingMaster(xValue := TRUE);
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 89
Architektur: Das ApplicationTemplate im DetailStandardkopplung ("DefaultCoupling")
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Methoden "DefaultCouplingMaster" - Übersicht
9.4.3 Die Funktion "DisableDefaultCouplingSlave"
Die Funktion „DisableDefaultCouplingSlave“ bewirkt ein Entkoppeln des Slave-Moduls von derZustandsmaschine des Master-Moduls (während des Betriebs).
• Erforderlich ist diese Funktion, wenn...• ...bestimmte Maschinenteile/Maschinenmodule (während des Betriebs) zu entkoppeln sind.• ...bei den entkoppelten Maschinenteilen/Maschinenmodulen ein anderes Verhalten als das
übergeordnete Maschinenmodul notwendig ist.
• Der Methodenaufruf SMDisableDefaultCouplingSlave(TRUE) einer Modulapplikation (MAP) aktiviert die Funktion, um den Slave vom Master zu entkoppeln.• Der Methodenaufruf SMDisableDefaultCouplingSlave(FALSE) deaktiviert das Funktion.
• Ein automatisches Koppeln der moduleigenen Zustandsmaschine zum übergeordneten Mastermodul ist nicht möglich.• Die Zustandsmaschine kann (lokal aus der Modulapplikation heraus) mit den Methoden des
BaseChannels die untergeordneten Slave-Module steuern. • Dadurch verhält sich die ZustandsmMFB_MachineControlschine der untergeordneten Slave-
Module genauso wie das Maschinenmodul mit der aktivierten Methode SMDisableDefaultCouplingSlave.
• Das übergeordnete Master-Modul ignoriert den Zustand eines Slave-Moduls, bei dem die Funktion DisableDefaultCouplingSlave aktiviert ist.
• Optional ist das Fehlerquittieren durch den übergeordneten Master einstellbar:
Bezeichner/Funktion Übergabewert/Datentyp Beschreibung
baseChannelGetDefaultCouplingMasterDisabled
• Fragt den Status der Methode SMDisableDefaultCouplingMaster des jeweiligen Moduls ab.
MM_AddressL_EATP_MM_Address
• Adresse des Moduls, dessen aktueller Status abzufragen ist.
• Der Wert "0" sowie die Konstante L_EATP_CONST.OWNID adressieren die moduleigene ID.
Rückgabewert/DatentypBOOL
• TRUE: des Masters ist deaktiviert
• FALSE: des Masters ist aktiviert.
SMDisableDefaultCouplingMaster• Aktiviert/Deaktiviert die
Standardkopplung des Masters.
xValueBOOL
• TRUE: Standardkopplung des Masters deaktivieren
• FALSE: Standardkopplung des Masters aktivieren
: "Disable" = "TRUE"
L_EATP_GVL.xDisableGlobalErrorReset := FALSE; //Default-Einstellung
Architektur: Das ApplicationTemplate im DetailStandardkopplung ("DefaultCoupling")
90 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
• Der Methodenaufruf hat keine Auswirkung auf die Anbindung der ACD-Struktur des jeweiligen Maschinenmoduls.
• Der Master der Zustandsmaschine kann ein entkoppeltes Modul über die entsprechenden Methoden baseChannelGetActualState auslesen.
Auf die Zustandsmaschine zugreifen - Die Methoden des BaseChannels ( 166)
• Der Master der jeweiligen Zustandsmaschine kann den Zustand eines entkoppelten Moduls (über die entsprechenden Methoden) auslesen. Dieser Mechanismus ist sinnvoll, wenn das Modul über mindestens ein übergeordnetes Master-Modul verfügt.
Fehlerreaktion - Verhalten beim Auftreten eines Fehlers
• Die Methode DisableDefaultCouplingSlave entkoppelt das Slave-Modul von der Zustandsmaschine des Master-Moduls, Beispiel: M1.2.2 von M1.2 entkoppeln.
• Der Fehlerzustand Quickstop von M1.2 wirkt sich nicht auf M1 und M1.1 aus (Das Modul M1.2 ist von M1 entkoppelt).• Die Zustandmaschine von Master-Modul M1 wirkt sich nicht mehr auf das Modul M1.2 aus
(bedingt durch die Entkopplung).• Ein Fehlerquittieren durch das Master-Modul M1 hat keinen Einfluss mehr auf M1.2 und
dessen Slave-Module.
[9-19] Beispielprogramm: "DefaultCouplingSlave" deaktivieren
Methoden "DefaultCouplingSlave" - Übersicht
: Fehlerreaktion auf Zustand "Fault" von M1.2.2 durch
SMDisableDefaultCouplingSlave(xValue := TRUE);
Bezeichner/Funktion Übergabewert/Datentyp Beschreibung
baseChannelGetDefaultCouplingSlaveDisabled
• Fragt den Status der Methode DisableDefaultCouplingSlave des jeweiligen Moduls ab.
MM_AddressL_EATP_MM_Address
• Adresse des Moduls, dessen aktueller Status abzufragen ist.
• Der Wert "0" sowie die Konstante L_EATP_CONST.OWNID adressieren die moduleigene ID.
Rückgabewert/DatentypBOOL
• TRUE: Standardkopplung des Masters deaktivieren.
• FALSE: Standardkopplung des Masters aktivieren.
SMDisableDefaultCouplingSlave• Aktiviert/Deaktiviert die des
Slaves.
xValueBOOL
• TRUE: Standardkopplung des Slaves deaktivieren
• FALSE: Standardkopplung des Slaves aktivieren
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 91
Architektur: Das ApplicationTemplate im DetailStatusübergänge beeinflussen
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
9.5 Statusübergänge beeinflussen
Durch die Methoden des ApplicationTemplates sind die Statusübergänge sperrbar und könnenwieder freigegeben werden.
• Alle Methoden verfügen über einen Aufrufparameter vom Datentyp BOOL. Durch Setzen von "TRUE" wird die Funktion der jeweiligen Methoden (entsprechend des Methodennamens) ausgeführt.
[9-20] Beispielprogramm: Den Zustandsübergang "Service"->"Ready" sperren
[9-21] Beispielprogramm: Den Zustandsübergang "Service"->"Ready" freigeben
SMDisableServiceToReady(TRUE)
SMDisableServiceToReady(FALSE)
Architektur: Das ApplicationTemplate im DetailStatus der Zustandsmaschine anzeigen - FB L_EATP_SMAccess
92 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Statusübergänge steuern - Die Methoden im Überblick
9.6 Status der Zustandsmaschine anzeigen - FB L_EATP_SMAccess
Mit der FUP-Methode Statemachine lässt sich der aktuelle Status der Zustandsmaschine aus einerModulapplikation (MAP) anzeigen. L_EATP_SMAccess ( 134)
• Im ApplicationTemplate ist in jedem Maschinenmodul in jeweils einer Modulapplikation eine Instanz dieses Bausteins mit dem Instanznamen SMAccess angelegt.
• Die FUP-Methode Statemachine ruft die Instanz des Bausteins L_EATP_SMAccess(SMAccess) auf.
Methode/Funktion Übergabewert/Datentyp Beschreibung
SMDisableAutomaticToReady• Steuert den Zustandsübergang
"Automatic" "Ready"
xValueBOOL
• TRUE: Zustandsübergang sperren• FALSE: Zustandsübergang
freigeben
SMDisableReadyToAutomatic• Steuert den Zustandsübergang
"Ready""Automatic"
xValueBOOL
SMDisableReadyToManual• Steuert den Zustandsübergang
"Ready""Manual"
xValueBOOL
SMDisableReadyToMode1• Steuert den Zustandsübergang
"Ready""Mode1"
xValueBOOL
SMDisableReadyToMode2• Steuert den Zustandsübergang
"Ready""Mode2"
xValueBOOL
SMDisableReadyToHoming• Steuert den Zustandsübergang
"Ready""Homing"
xValueBOOL
SMDisableReadyToService• Steuert den Zustandsübergang
"Ready""Service"
xValueBOOL
SMDisableManualToReady• Steuert den Zustandsübergang
"Manual""Ready"
xValueBOOL
SMDisableMode1ToReady• Steuert den Zustandsübergang
"Mode1""Ready"
xValueBOOL
SMDisableMode2ToReady• Steuert den Zustandsübergang
"Mode2""Ready"
xValueBOOL
SMDisableHomingToReady• Steuert den Zustandsübergang
"Homing""Ready"
xValueBOOL
SMDisableServiceToReady• Steuert den Zustandsübergang
"Service""Ready"
xValueBOOL
SMEnableInitToReady• Steuert den Zustandsübergang
"Init""Ready"
xValueBOOL
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 93
Architektur: Das ApplicationTemplate im DetailZustandsmaschine: Abfragebeispiele
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
9.7 Zustandsmaschine: Abfragebeispiele
Dieser Abschnitt zeigt (in Form von Programmbeispielen), wie...
• ...auf die Zustandsmaschine zuzugreifbar ist.
• ...wie Stati abzufragen sind.
Ziel/Aufruf Beispiel
Aktuellen Zustand abfragen
• IF-Bedingung• Moduleigene/untergeordnete
Modul-Statusabfrage durch Methode
IF baseChannelGetActualState (MM_Address:= ) = L_EATP_SMStates.Manual THEN// Do something if Statemachine is in state MANUALEND_IF
• IF-Bedingung• Moduleigenen Zustand abfragen
IF StateMachine.xActStateIsAutomatic THEN// Do something if Statemachine is in state AUTOMATICEND_IF
• CASE-Anweisung• Moduleigene/untergeordnete
Modul-Statusabfrage durch Methode
CASE baseChannelGetActualState (MM_Address:= ) OF
L_EATP_SMStates.Ready:// Do something if Statemachine is in state READY;L_EATP_SMStates.Service:// Do something else if Statemachine is in state SERVICE
L_EATP_SMStates.Quickstop:// Do something else if Statemachine is in state QUICKSTOP;
END_CASE
Aktive Warnung abfragen
• IF-Bedingung• Moduleigene Warnung abfragen
IF StateMachine.xWarning THEN // Do something if warning is activeELSE // Do something else if warning is not activeEND_IF
SOLL-Zustand des Masters abfragen
• IF-Bedingung• signalbasiert mit Signal eSetState
IF StateMachine.xActStateIsAutomatic THEN IF StateMachine.eSetState = L_EATP_SMStates.Ready THEN // Do something if actual state is AUTOMATIC and set state to READY; END_IFEND_IF
Zustandsübergang von "Init" nach "Ready" freigeben (Initialisierung beendet)
SMEnableIitToReady (xValue := TRUE);
Zustandsübergang von "Automatic" nach "Ready" freigeben/sperren
In Abhängigkeit einer BOOL-Variable (hier: "xAutomaticEndOK")
IF xAutomaticEndOk = TRUE THEN SMDisableAutomaticToReady (xValue := FALSE)ELSE SMDisableAutomaticToReady (xValue := TRUE);END_IF
Architektur: Das ApplicationTemplate im DetailWo ist das Verhalten eines Maschinenmoduls programmierbar?
94 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
9.8 Wo ist das Verhalten eines Maschinenmoduls programmierbar?
[9-22] Beispiel: Zustandsbezogene Aktionen des FBs MAP_Module1_App1
Das Verhalten eines Maschinenmoduls (ineinem bestimmten Zustand) ist in denvorbereiteten Aktionen desApplicationTemplates programmierbar.
• Aktionen sind mit dem Symbol gekennzeichnet.
Bei jedem Zyklusdurchlauf wird immerdiejenige Aktion durchlaufen, die denaktuellen Zustand der Zustandsmaschine desMaschinenmoduls repräsentiert.
• Programmteile, die nur dann erforderlich sind, wenn sich das Maschinenmodul in einem bestimmten Zustand befindet, sind direkt in diesen vordefinierten Aktionen unterzubringen.
• Die Modulvorlage MM_EmptyModule enthält eine vordefinierte Struktur mit (leeren) Aktionen.
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 95
Architektur: Das ApplicationTemplate im DetailWo ist das Verhalten eines Maschinenmoduls programmierbar?
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
9.8.1 Zustandsübergang (State-Entry/State-Exit)
Jeder Wechsel einer zustandsbezogenen Aktion (in einer Aktion oder aus einer Aktion heraus) setztein bestimmtes Flag für einen Taskzyklus auf "TRUE".
• xStateEntry: Die zustandsbezogene Aktion setzt dieses Flag beim Eintritt für einen Taskzyklus auf "TRUE".
• xStateExit: Die zustandsbezogene Aktion setzt dieses Flag beim Verlassen für einen Taskzyklus auf "TRUE".
[9-23] Programmbeispiel: Aktion S04_SERVICE
IF xStateEntry THEN// Put state entry code here// ...
END_IF
// Put cyclic code here// ...
Hinweis!
Folgender Ablauf ist bei Tasktiming-bezogenen Programmbefehlen zu berücksichtigen: Das Zuordnen von Aktionen zu den einzelnen Taskzyklen ist bei einem Zustandsübergang so umgesetzt wie bei der Ablaufsprache AS:• Beim Zustandsübergang "Ready""Automatic", durchläuft der Taskzyklus...
• ...zuerst die Aktion S02_READY mit gesetztem xStateExit-Flag.• ...danach die Aktion S05_AUTOMATIC mit gesetztem xStateEntry-Flag.
Architektur: Das ApplicationTemplate im DetailErrorhandling (Fehlerbehandlung)
96 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
9.9 Errorhandling (Fehlerbehandlung)
Das ApplicationTemplate enthält ein Errorhandling zur Ausgabe von Fehlermeldungen. Dasstandardmäßig definierte Errorhandling ist bei Bedarf veränderbar.
Das Errorhandling hat folgende Funktionen:
• In den Modulapplikationen (MAP) der Maschinenmodule sind Fehler/Warnungen/Informationen definierbar.
• Fehlerzustände innerhalb des MachineModuleTree (MMT) weiterleiten.
• Applikationsglobale Fehlerliste mit dem aktuellen Fehlerzustand aller im MMT enthaltenen Maschinenmodule.
• Das Errorhandling ist an das Logbuch des Controllers angebunden, so dass die Fehlermeldungen im Logbuch sichtbar sind.
9.9.1 Fehler definieren
Die Methode SetErrors definiert die Fehler mit den entsprechenden Eigenschaften in der jewei-ligen Modulapplikation.
Das ApplicationTemplate enthält zum Verändern des Errorhandlings den FB L_EATP_ErrorSet. AmEingang xSetError des FB L_EATP_ErrorSet sind applikationsspezifische Fehler auslösbar.
L_EATP_ErrorSet ( 127)
[9-24] FB L_EATP_ErrorSet: Fügen Sie weitere Instanzen des FBs hinzu, sofern mehr als vier Fehlereingänge) pro Instanz erforderlich sind.
Ein Fehler ist durch folgende Eigenschaften am FB definierbar:
• Der FB L_EATP_ErrorSet hat vier Eingänge xSetError[1...4] zum Setzen von Fehlern.
• Pro xSetError-Eingang ist jewweils ein Fehler setzbar.
Eigenschaft Beschreibung Weiterführende Information
Fehlernummer Eindeutige Fehlernummer (ID) 16 Bit-Fehlernummer (Datentyp WORD)
Fehlerreaktion Fehlerreaktion• Aus der Liste auswählbar.
Fehlerreaktion konfigurieren ( 97)
Quittierverhalten Angabe (ja/nein), ob der ausgelöste Fehler zu quittieren ist.
Das Quittierverhalten ist nicht bei allen Fehlerreaktionstypen veränderbar.
Fehlerreaktion konfigurieren ( 97)Fehler quittieren ( 97)
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 97
Architektur: Das ApplicationTemplate im DetailErrorhandling (Fehlerbehandlung)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Weiterführende Informationen:
L_EATP_ErrorSet ( 127)
L_EATP_ModuleErrorHandler ( 132)
9.9.2 Fehlerreaktion konfigurieren
Die Fehlerreaktionstypen des Errorhandlers bestimmen den Zustand der moduleigenenApplikation. Tritt ein Fehler auf, bewirkt das Standardverhalten die konfigurierte Fehlerreaktion inden anderen Maschinenmodulen.
Ist eine andere Fehlerreaktion des Maschinenmoduls gewünscht, besteht die Möglichkeit, diegewünschte Fehlerreaktion im entsprechenden Maschinenmodul zu programmieren.
• Weiterführende Information zum DefaultCoupling (vordefiniertes Standardverhalten) finden Sie in folgendem Abschnitt: Standardkopplung ("DefaultCoupling") ( 86)
• Die in den Modulapplikationen (MAP) definierbaren Fehlerzustände sind in folgende Fehlerkategorien unterteilt:
9.9.3 Fehler quittieren
Das Quittieren von Fehlern löscht alle als quittierpflichtig definierten Fehlermeldungen/Fehlerursachen aus der aktuellen Fehlerliste (Error List).
Das Quittieren von Fehlern ist durch folgende Vorgehensweisen aktivierbar:
1. Dauerhaft aktivieren: Innerhalb der Modulapplikation über folgenden Programmbefehl:
Fehlertext Textuelle Beschreibung des Fehlers. Der (englischsprachige) Fehlertext ist in der Attributtabelle hinterlegt.Der Fehlertext ist immer dann zu verwenden, wenn kein übergeordneter Mechanismus zum landessprachlichen Umsetzen der Fehlernummer aktiviert ist (Beispiel: Übergeordnete Visualisierung).
DetaillierteFehlerinformationen
Für jeden Fehler ist ein Zusatzattribut (Typ: DWORD) verwendbar, das (in Zusammenhang mit der Fehlernummer) interpretierbar ist.
Beispielhaft sind bei einem Sammelfehler "Drive Error" die detaillierten Fehlerinformationen des jeweiligen Antriebsreglers verwendbar.
Priorität Priorität für Fehler vom gleichen Fehlerreaktionstyp vergeben.
Eigenschaft Beschreibung Weiterführende Information
Fehlerreaktion (geordnet nach aufsteigender Priorität)
Beschreibung/Quittierverhalten
Information Schreibt Information in das Logbuch des Controllers.• Kein Quittieren erforderlich.
Schnellhalt (Störung) Fehlerreaktion, bei der das beteiligte Maschinenmodul in den Zustand "Stopp" wechselt.
• Das Quittierverhalten ist parametrierbar.
Warnung Das Maschinenmodul/die Applikation bleibt im gleichen Zustand.• Das Quittierverhalten ist parametrierbar.
Fehler Führt dazu, dass das beteiligte Maschinenmodul eine Reaktion auslöst (beispielweise Reglersperre setzen/Impulssperre setzen).
• Das Quittierverhalten ist parametrierbar.
Systemfehler Schwerer Fehler.Neustart der Applikation erforderlich. Abhilfe: Netzschalten oder Geräte-Reset durchführen.
• Kein Quittieren möglich.
Architektur: Das ApplicationTemplate im DetailErrorhandling (Fehlerbehandlung)
98 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
2. Für einen Zyklus aktivieren: Mit der Methode baseChannelSetErrorQuit, steigende Flanke FALSE TRUE. Die Methode setzt den Eingang xQuitErrors für einen Zyklus = TRUE.
Sofern mehrere Fehler auftreten, sind diese nicht einzeln quittierbar. WeiterführendeInformationen: L_EATP_ModuleErrorHandler ( 132)
9.9.4 Fehler quittieren: Reaktion im Maschinenmodul
Der Ausgang xErrorQuitActive am Baustein L_EATP_ModuleErrorHandler ist innerhalb einerModulapplikation verwendbar, um das Quittieren von Fehlern an einem eingebundenenFunktionsbaustein auszuführen.
Fehler definieren - Prinzipielle Vorgehensweise
ErrorHandler.xQuitErrors := TRUE; //Fehlerquittieren aktiv, solange Wert = TRUE
• Die Methode SetErrors ist um einen Funktionsbaustein zu erweitern.
• Der FB MAP_EmptyModul_App1 ist um die dazugehörige Deklaration zu erweitern.
• Die Eingänge xSetError[1...4] sind mit der Modulapplikation zu verknüpfen.
• Dem jeweiligen Error-Eingang ist der entsprechenden Parameter zuordnen:• Fehlernummer,• Fehlertext,• Fehlerpriorität,• Quittierverhalten
• Weiterführende Informationen: L_EATP_ErrorSet ( 127)
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 99
Architektur: Das ApplicationTemplate im DetailErrorhandling (Fehlerbehandlung)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
9.9.5 Fehler auslösen
Beispiel: Fehler auslösen/weiterleiten - innerhalb eines Maschinenmoduls
Programmierzeile zum Auslösen eines Fehlers innerhalb der Maschinenapplikation:
[9-25] Beispiel: Den Fehler Error1 von FB Errors A auslösen
Innerhalb des jeweiligen Maschinenmoduls überträgt die Fehlerbehandlung die höchstprioreFehlerreaktion der aktuellen Fehler an die moduleigene Zustandsmaschine.
• Die Zustandsmaschine wechselt dadurch in den definierten Zustand des höchstprioren Fehlerreaktionstyps.
• Die Modulapplikation verarbeitet den Zustandswechsel anschließend (wie jeden weiteren Zustandswechsel).
ErrorsA.xSetError1 := TRUE;
Architektur: Das ApplicationTemplate im DetailErrorhandling (Fehlerbehandlung)
100 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
9.9.6 Zentrales Errorhandling im ApplicationTemplate: Error List
Das Errorhandling (ErrorList-Handler) des ApplicationTemplates übermittelt alle Fehler, die in denMaschinenmodulen auftreten, an die globale Fehlerliste Error List.
So starten Sie die globale Fehlerliste:
1. Ordner A20_Visualisation, L_Main aufrufen.
2. Schaltfläche Error List klicken, um die globale Fehlerliste anzuzeigen:
• Die Fehlerliste zeigt die als quittierpflichtig definierten Fehler an, die noch anstehen/zu quittieren sind.
• Die Fehlerliste zeigt maximal 25 Fehlereinträge an. Bei mehr als 25 Einträgen informiert die Warnung (1007), dass zu viele Einträge in der Fehlerliste vorliegen:"Errorlist is full, probably missing entries"Abhilfe: Verringern Sie die Anzahl der Einträge in der Fehlerliste durch Quittieren von Fehlern.
• Die Maschinenmodule leiten die Fehlermeldungen an den ErrorList-Handler weiter.
• Die aktuellen Fehler sind dadurch in der globalen Fehlerliste Error List sichtbar.
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 101
Architektur: Das ApplicationTemplate im DetailErrorhandling (Fehlerbehandlung)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Informationen in der Fehlerliste
9.9.7 Übersicht Systemfehlermeldungen
Das ApplicationTemplate enthält folgende Systemfehlermeldungen. Im Fehlerfall ist die dazugehö-rige Abhilfe durchzuführen.
Spalte Inhalt/Beschreibung
MM Addr. Absolute Adresse des Maschinenmoduls. Beispiel: Module2 hat die absolute Adresse 1.2. Das bedeutet: Das Maschinenmodul befindet sich im MMT auf der zweiten Ebene mit der relativen Adresse 2.
MM Inst. Zeigt den Instanznamen des Maschinenmoduls an.
Err. No. Fehlernummer, die am Eingang wErrCode des Bausteins L_EATP_ErrorSet de-finiert ist.
Type Fehlerreaktion, die am Eingang eReaction des Bausteins L_EATP_ErrorSet de-finiert ist.
Error Text Fehlertext, der am Eingang sText des Bausteins L_EATP_ErrorSet definiert ist.
Err. Det. Detailnummer des Fehlers, die am Eingang dwErrDetail des Bausteins L_EATP_ErrorSet definiert ist.
Num-mer
Fehlertext Bedeutung/Ursache Abhilfe
1000 Duplicated MM Address on the same level
Moduladresse (MM Address) ist mehrfach innerhalb der glei-chen Ebene des Maschinenmo-dulbaums verwendet.Auf der Ebene 2,3,4 oder 5 wur-de die gleiche Moduladresse mehrfach verwendet.
Eindeutige Moduladressen vergeben/mehrfach vergebene Moduladressen än-dern. Innerhalb einer Ebene muss jede Moduladresse eindeutig sind.
1001 Missing MM Address Fehlende Moduladresse eines Maschinenmoduls.Einem Maschinenmodul im MMT wurde keine Moduladres-se zugewiesen.
Dem Maschinenmodul ist im MMT eine Moduladresse zuzuweisen.
1002 Too many Machine Modules are used
Zu viele Maschinenmodule ver-wendet. Es sind maximal 30 Maschinenmodule im MMT verwendbar.
Anzahl der Maschinenmodule reduzie-ren. Maximal 30 Module im MMT ver-wenden, optional Lenze-Support kontaktieren. Maschinenmodulbaum (MachineModuleTree - MMT) ( 19)
1003 MMT has more than 5 levels
Die Maschinenmodule sind auf auf mehr als fünf Ebenen im MMT angeordnet. De MMT un-terstützt maximal Hierarchie-Ebenenen im MMT.
Anzahl der Ebenen im MMT reduzieren. Maximal fünf Ebenen im MMT verwen-den, optional Lenze-Support kontaktie-ren. Maschinenmodulbaum (MachineModuleTree - MMT) ( 19)
1004 Duplicated Top Level Module
Es gibt mehr als ein Toplevel-Maschinenmodul/Maschinen-steuermodul (Beispiel: Modul "Machine Control").Zwei Maschinenmodule haben keinen Master: MasterBus-An-schluss eines Slave-Moduls ist nicht mit dem SlaveBus-An-schluss des Mastermoduls ver-bunden.
Fehlende Verbindung im MMT erzeugen: MasterBus-Anschluss des Slave-Moduls mit dem SlaveBus-Anschluss des Master-moduls verbinden. Alternativ ist das überflüssige Maschinenmodul zu lö-schen.
Architektur: Das ApplicationTemplate im DetailErrorhandling (Fehlerbehandlung)
102 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
9.9.8 Fehler-Übersicht von allen Maschinenmodulen exportieren: CSV-Datei
Das ApplicationTemplate bietet die Möglichkeit, alle Fehler/Fehlerdefinitionen in eine *.CSV-Dateizu erstellen.
1005 AccessACD does not find MM Addr.
AccessACD-Methode verwen-det die falsche Slave-Adresse.Die AccessACD Methode in der MAP hat eine nicht existieren-de Moduladresse eines Sla-vemoduls bekommen.
Syntax der AccessACD-Methode in der MAP kontrollieren.
1006 ParentApp ref. of SMAccess is missing
In der MAP fehlt folgende Refe-renz auf die SMAccess-Instanz: "parentApp := This"Referenzzuweisung von SMAc-cess im Deklarationsteil (Bei-spiel: SMAccess : L_EATP_SMAccess;) der MAP wurde entfernt.
Referenzzuweisung einfügen, Beispiel: SMAccess : L_EATP_SMAccess := (parentApp := THIS^);
1007 Errorlist is full, probably missing entries
1008 ParentModule ref. of App1, App2 or App3 is missing
Im MFB fehlt die Referenz "parentModule := This" auf die MAP-Instanz.Im Deklarationsteil des MFB fehlt die Referenzzuweisung der MAP, Beispiel: App1: MAP_Machine_App1;
Referenzzuweisung Im Deklarationsteil des MFB einfügen, Beispiel: App1 : MAP_Machine_App1 : (parentModule := THIS^);
1009 AccessACD has the wrong struct size of the own module.
Die moduleigene ACD-Struktur ist nicht an die ACDAccess-Me-thode übergeben.Es muss die Struktur des eige-nen Maschinenmoduls an die AccessACD-Methode überge-ben sein.
Syntax der AccessACD-Methode kontrol-lieren, die moduleigene ACD-Struktur ist an die AccessACD-Methode zu überge-ben.
1010 AccessACD has the wrong struct size from MM Addr.
An die ACDAccess-Methode ist nicht die dazugehörige ACD-Struktur mit der angegebenen Moduladresse übergeben.Größe und Moduladresse von zugewiesener ACD-Struktur und AccessACD-Methode pas-sen nicht zusammen.
Syntax der AccessACD-Methode kontrol-lieren, die ACD-Struktur ist der ACDAc-cess-Methode mit der passenden Moduladresse zuzuweisen.
1011 ACD struct size exceeds limit <4096 bytes>
Der Dateninhalt der ACD-Struktur des Maschinenmoduls überschreitet die maximale Größe von 4096 Bytes.
Größe der Struktur verringern, optional Lenze-Support kontaktieren.
1012 CompID failed, valid:(16#3E00-16#3FFF)
Die eingestellte Komponenten- ID (CompID) liegt außerhalb des freigebenen Bereiches (16#3E00-16#3FFF).Mit der Methode "setCompIDAndVersion" ist im MFB eine CompID verwendet, die nicht in dem freigegebenen Bereich 16#3E00-16#3FFF liegt.
Komponenten ID (CompID) definieren, die im freigegebenen Bereich (16#3E00-16#3FFF) liegt.
Num-mer
Fehlertext Bedeutung/Ursache Abhilfe
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 103
Architektur: Das ApplicationTemplate im DetailLogbuch
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
• Die CSV-basierte Textdatei enthält die Fehlerdefinitionen von allen im Maschinenmodulbaum (MMT) eingebunden Maschinenmodulen.
• Die CSV-Datei (Dateiname: AT_DefinedErrors.CSV) ist nach dem Erstellen aus dem »PLC Designer« im Hauptverzeichnis des Controllers zu finden (flüchtig im Flash-Speicher des Controllers). Dadurch ist die Datei während der Projektierungsphase einer Maschinenapplikation (Beispiel: für ein externes Visualisierungssystem) verwendbar.
So schreiben Sie die CSV-Datei:
Klicken Sie auf der Visualisierungsoberfläche von L_Main auf die Schaltfläche Create CSV File.
[9-26] Beispiel: Struktur der exportierten CSV-Datei
Für Experten:
• Alternativ ist der Datei-Export über xExecuteCreateCSVFile des Error List-Handlers L_EATP_GVL.ErrorListHandler aus dem Applikationsprogramm heraus aufrufbar (FALSE->TRUE Flanke).• Folgende Ausgänge liefern Informationen über den Fortschritt:
xBusyCreateCSVFile, xDoneCreateCSVFile und sInfoCreateCSVFile .
9.10 Logbuch
Das ApplicationTemplate übermittelt die Fehlerereignisse an die Logbuch-Funktion des Controllers.
• Die Logbuch-Einträge sind in chronologischer Reihenfolge im Logbuch des Controllers sichtbar.
So zeigen Sie das Logbuch des Controllers an:
1. Den Controller in der Geräte-Ansicht doppelklicken.
2. Die Registerkarte Log aufrufen, um die Inhalte des Logbuchs anzuzeigen:
• Beispiel: Logbuch-Ansicht (zwei Warnungen/Fehler). Klicken Sie die Schaltfäche , um die Ansicht zu aktualisieren.
Die Spalte Beschreibung enthält Informationen über die Ursache der jeweiligen Meldung.
Die Logbuch-Einträge (Spalte Beschreibung) haben den folgenden Aufbau:
Architektur: Das ApplicationTemplate im DetailLogbuch
104 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Beispiel: M1.2, Module2, F12002, Demo: Drive Error of drive 2
<(absolute) Maschinenmodul-Adresse>, <Modul-Name>, <Fehlerreaktion mit Fehler-ID>,<Fehlertext> <(optionale) Detaillierte Fehlerinformation >
Bestandteil Ursprung
M1.2 Absolute ID des Maschinenmoduls
Module2 Name des Maschinenmoduls
F12002 ID des Fehlers, Reaktionstyp: Fehler
Demo: Drive Error of drive 2 Fehlertext
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 105
Architektur: Das ApplicationTemplate im DetailModuldiagnose
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
9.11 Moduldiagnose
Zur Moduldiagnose steht eine Visualisierung zur Verfügung.
• Die Schaltflächen im Abschnitt Machine Modules rufen Detailansichten zu den Maschinenmodulen auf.
• Klicken Sie auf das gewünschte Maschinenmodul, um den jeweiligen Zustand und weitere Details anzuzeigen.
• Die Visualisierung zur Moduldiagnose ist als separate Visualisierung L_EATP_VisModuleList (beispielsweise für eigene Visualisierungen) verfügbar.
Spalte Inhalt/Beschreibung
MM Addr. Absolute Adresse des Maschinenmoduls. Beispiel: Module2 hat die absolute Adresse 1.2. Das bedeutet: Das Maschinenmodul befindet sich im MMT auf der zweiten Ebene mit der relativen Adresse 2.
MM Name Instanzname des Maschinenmoduls
ST Zeigt den Status des Maschinenmoduls an.• Grün = Alles OK• Rot = Fehler (Systemfault, Fault oder Quickstop)
CPL Kopplungsart des Maschinenmoduls• DEF = Default Coupling aktiv
Statemachine des Maschinenmoduls ist an die Statemachine des Maschi-nensteuermoduls Machine Control gekoppelt.
• CMD = Coupling Master Disabled Alle Slave-Module sind vom Maschinensteuermoduls Machine Control entkoppelt. Dadurch sind die untergeordneten Module von der Statema-chines des Maschinensteuermoduls Machine Control entkoppelt.
• CSD = Coupling Slave DisabledSlave-Modul ist vom Master entkoppelt. Dadurch ist das Modul von der Statemachine des Mastermoduls entkoppelt.
Architektur: Das ApplicationTemplate im DetailMultitasking
106 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
9.12 Multitasking
• Das ApplicationTemplate ist Multitasking-fähig.
• Folgende Tasks sind im ApplicationTemplate definiert:
• Im Ordner A11_ModuleAppCalls ist die jeweilige Modulapplikationen der entsprechenden Task zuzuordnen.• ModuleAppCalls (MAC) sind die Aufrufe einer Modulapplikationen (MAP) von den
dazugehörigen Maschinenmodulen (MM) der entsprechenden Task.
[9-27] Entsprechend der Taskkonfigurationen sind die dazugehörigen Programme (CallFree, CallHigh und CallMid) aufgerufen. Diese wiederum rufen die ModulAppCall-Programme (MAC_Task_Free, MAC_Task_High und MAC_Task_Mid) auf.
[9-28] Das ModulAppCall-Programm enthält Maschinenmodul-Applikationen, die der entsprechenden Task zugeordnet sind.
• Das Anbinden an die Peripherie (wie beispielsweise I/O-System und Visualisierung) ist im entsprechenden ModulAppCall-Programm (MAC) vorzunehmen.
• Die Modulapplikationen , die den entsprechenden Tasks zugeordnet sind, befinden sich...
• ...im Ordner A70_MachineModuleSources oder• ...in den entsprechenden Modulbibliotheken.
Taskebene Priorität Typ Zykluszeit(fett = Defaultwert)
Task_High hoch zyklisch kurz (1, 2, 4 ms)
Task_Mid mittel zyklisch mittel (4, 6, 8, 16 ms)
Task_Free gering freilaufend freilaufend
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 107
Architektur: Das ApplicationTemplate im DetailKonsistente Datenübertragung
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
9.13 Konsistente Datenübertragung
Ein definierter Datenbereich wird so zwischen zwei Tasks ausgetauscht, dass dieser konsistent andie andere Task übergeben wird.
Die Datenkonsistenz ist...
• ...abhängig von den Daten gewährleistet oder
• ...bei bestimmten Anwendungsfällen zu gewährleisten. Je nach Anwendungsfall ist wie folgt vorzugehen:
Reservieren/Sperren von Datenbereichen der AppChannelData(ACD)-Struktur
Die ACD-Struktur enthält einen Baustein L_EATP_CriticalSection, der mit folgenden Methoden dieDatenkonsistenz von echtzeitkritischer Daten gewährleistet. Sollten mehrere Bausteine benötigtwerden, sind in der ACD-Struktur weitere Instanzen des Bausteins verwendbar, Instanzname desBausteins CS (Critical Section) . L_EATP_CriticalSection ( 125)
Um die Multitasking-Funktionalität in einemMaschinenmodul nutzen zu können, muss dasMaschinenmodul mehr als eineModulapplikation enthalten.
Anwendungsfall Datenelement/Datentyp Beschreibung
Datenkonsistenz innerhalb einzelner Datenelemente
GanzzahligINT
DINT
Direkter Zugriff ist erlaubt.
BitfelderWORD
DWORD
Datenkonsistenz innerhalb eines Datenelementes
GleitkommaLREAL
Beim Einsatz des Controllers ist die Datenkonsistenz einer LREAL-Variable gewährleistet.
Datenkonsistenz für mehr als ein Datenelement
Die Datenbereiche sind...• ...vor dem ersten Zugriff mit der
Methode Lock() für andere Tasks zu sperren.
• ...nach dem letzten Zugriff mit der Methode Unlock() wieder freizugeben.
Methode Funktion
Lock() Datenbereich des ACD-Struktur reservieren .
Unlock() Reservierte Daten der ACD-Struktur freigeben.
LockState() Sperrzustand eines Datenbereiches abfragen.
Architektur: Das ApplicationTemplate im DetailKonsistente Datenübertragung
108 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Tipp!
Rufen Sie den Baustein L_EATP_CriticalSection über den Instanznamen CS (Critical Section)in der ACD-Struktur auf.
1. Bevor auf den zu übertragenden Datenbereich konsistent zugreifbar ist, ist in einer Task die Methode Lock() aufzurufen.
• Die Methode Lock() liefert einen BOOL-Wert zurück, wenn......eine andere Task die Methode bereits aufgerufen hat ("TRUE")....keine Task die Methode bisher aufgerufen hat ("FALSE").
[9-1] Beispiel: Die Methode Lock() sperrt echtzeitkritische Daten der ACD-Struktur.
2. Nach dem letzten exklusiven Zugriff auf den Datenbereich muss eine Task die Methode Unlock() aufrufen, um den Datenbereich freizugeben.
[9-2] Beispiel: Die Methode UnLock() gibt einen reservierten Datenbereich der ACD-Struktur frei.
Programm in Maschinenmodul 1 ( TaskMidPriority = 4 ms):
Hinweis!
Performanceverlust vermeiden
Vermeiden Sie es, echtzeitkritische Daten der ACD-Struktur durch mehrere MAPs innerhalb des gleichen Maschinenmoduls durch die CriticalSection zu sperren.• Reservieren Sie für jede MAP einen eigenen Bereich für echtzeitkritische Daten in der
ACD-Struktur , um zu verhindern, dass die Modulapplikation(MAP) einer niederpriorisierten Task(Task_Mid) die MAP einer höherpriorisierten Task(Task_High) ausbremst.
Hinweis!
Eine Task darf den Datenbereich nur verwenden (lesend oder schreibend), wenn die Methode appChannelLock() den Wert TRUE zurückgeliefert hat.
IF Lock() THEN For i:=0 TO 2000 by 1 DO rACDOwn.aCAMData[i] := aCAMData[i];END_FOR
IF Lock() THEN For i:=0 TO 2000 by 1 DO rACDOwn.aCAMData[i] := aCAMData[i];END_FOR
Unlock()
IF Lock() THEN For i:=0 TO 2000 by 1 DO rACDOwn.aCAMData[i] := aCAMData[i];END_FOR
Unlock()
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 109
Architektur: Das ApplicationTemplate im DetailInternal Control
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Programm in Maschinenmodul 2 ( TaskHighPriority = 2 ms):
9.14 Internal Control
Die Funktion "Internal Control" ermöglicht es, ein Slave-Modul von dessen Master-Modul zuentkoppeln. Dies ist beispielsweise bei einer Inbetriebnahme sinnvoll.
[9-29] Beispiel MM_Module1: Die Schaltfläche Activate aktiviert das "Internal Control"
So verwenden Sie das "Internal Control":
1. Ordner A20_Visualisation, L_Main aufrufen.
2. Gewünschtes Maschinenmodul aktivieren, bei dem das "Internal Control" zu aktivieren ist, Beispiel: MM_Module1.
3. Zum Aktivieren die Schaltfläche Internal Control klicken.
4. Passwort durch Klicken in das nun sichtbare Textfeld eingeben.• Standardwert: lenze• Passworteingabe mit Enter bestätigen.
5. Das Maschinenmodul ist nun von der Zustandsmaschine entkoppelt und manuell über die Schaltflächen bedienbar:
IF NOT LockState() THEN For i:=0 TO 2000 by 1 DO aCAMData[i] := rACDModule1.aCAMData[i];END_FOREND_IF
Architektur: Das ApplicationTemplate im DetailInternal Control
110 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
9.14.1 Internal Control beenden
• Um das aktivierte "Internal Control" zu beenden, ist die Schaltfläche Internal Control erneut zu klicken.
• Bei aktiviertem "Internal Control" ist das entsprechende Maschinenmodul manuell mit Hilfe der Schaltflächen bedienbar.• Das bewirkt, dass das Maschinenmodul entkoppelt ist und die Zustandsmaschine
beeinflussbar ist.
9.14.2 Was bewirkt das Internal Control?
Bei aktiviertem „Internal Control“ eines Maschinenmoduls sind die Schreibvorgänge des Modulsauf den BaseChannel und die ACD-Struktur durch den übergeordneten Master (also von außen)deaktiviert.
• Dadurch sind alle Zugriffe über die Methode baseChannelSet()und die ACD-Struktur auf das Maschinenmodul von außen wirkungslos.
• Zugriffe innerhalb des Maschinenmoduls sind möglich. Lesende Zugriffe (durch die Methoden baseChannelGet() und die ACD-Struktur bleiben vom „Internal Control“ unangetastet und funktionieren weiterhin von außerhalb.
• Die Variablenansicht im »PLC Designer« ermöglicht im Online-Modus (über die lokalen baseChannel-Referenzen den Zugriff auf den baseChannel.
[9-30] Instanz des Maschinenmoduls "Module1" in der Variablenansicht
Bei aktiviertem „Internal Control“...
• ...ist ein Schreibvorgang des Masters auf das Modul wirkungslos. Stattdessen setzt sich der Schreibvorgang der moduleigenen Applikation (MAP) durch.
• ...liefert ein Lesevorgang des Masters oder der moduleigenen MAP die aktuellen Werte des Maschinenmoduls.
Bei deaktiviertem „Internal Control“...
• Hervorgehoben sind...• ...die Schalter (TRUE/FALSE) zum
Aktivieren des "Internal Control" (xInternalControl)
• ...die Referenzen auf den moduleigenen baseChannel (blaue Markierung)
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 111
Architektur: Das ApplicationTemplate im DetailInternal Control
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
• ...ist ein Schreibvorgang des Masters auf das Modul möglich.
• ...setzt sich ein Schreibvorgang der moduleigenen MAP durch.
• ...liefert ein Lesevorgang des Masters oder der moduleigenen MAP die aktuellen Werte des Maschinenmoduls.
Visualisieren im ApplicationTemplateDie Visualisierung erweitern
112 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
10 Visualisieren im ApplicationTemplate
Das ApplicationTemplate enthält die vordefinierte Visualisierung L_Main
im Ordner A20_Visualisation
Um eine weitere Visualisierung aus den Visualisierungselementen des ApplicationTemplates zuerstellen, sind die im folgenden Abschnitt beschriebenen Schritte auszuführen.
10.1 Die Visualisierung erweitern
In diesem Abschnitt erfahren Sie, wie Sie die im Beispielprojekt ApplicationTemplateCounter
enthaltene Visualisierung L_Main um weitere Visualisierungsseiten erweitern.
Die Vorgehensweise im ApplicationTemplate ist identisch. Die untergeordneten Maschinenmodulesind neu zu erstellen.
• Voraussetzung zum Erweitern der Visualisierung ist in diesem Beispiel (ApplicationTemplateCounter), dass vorab ein weiteres Maschinenmodul in den
MaschinenModulTree ( MMT) einzubinden ist. Erstelltes Maschinenmodul in den MMT einbinden ( 56)
• Im Ordner A11_ModulAppCalls ist die weitere Modulapplikation im Programmteil einzubinden.
• MAC_Task_High aufzurufen. (Beispiel: MM_Dcl.Modul3.App1)
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 113
Visualisieren im ApplicationTemplateDie Visualisierung erweitern
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
So gehen Sie vor:
1. Visualisierung aufrufen:
• Den Ordner 20_Visualisation doppelklicken.
• L_Main doppelklicken.
2. Visualisierungs-Elementenliste öffnen:
• <Alt>+<F6> oder den Menübefehl Visualisierung Elementliste aufrufen.
3. Auf der Registerkarte Elementliste die Visualisierung #0 Frame auswählen.• Per Rechtsklick auf den Visualisierungs-Frame den Befehl Frame Auswahl auswählen.
• Elementliste auswählen: Befehl Visualisierung Elementliste (oder <Alt>+<F6>).
4. Per Rechtsklick den Befehl Frame Auswahl aufrufen.• In folgendem Dialogfenster sind die Framevisualisierungen in der Reihenfolge
aufgelistet, wie die Schaltflächen/Steuerelemente angeordnet sind.
• Die Visualisierung des neuen Moduls (Beispiel: MVis_Module3) markieren.• Schaltfläche > klicken, um die Visualisierung auszuwählen.• Die Auswahl durch Klicken von OK bestätigen.
5. Auf der Registerkarte Elementliste die Visualisierung #0 Frame auswählen.• Im Dialogfenster Eigenschaften den Bereich Referenzierte Visualisierungen auswählen.
Die gewünschten Daten sind der entsprechenden Visualisierung zuzuordnen:• Auf den Namen der Visualisierung klicken.• Im rechten Bereich von m_Input_FB das gewünschte Feld anklicken.
Visualisieren im ApplicationTemplateEigenschaften von Schaltflächen definieren
114 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
• Hinweis: Die Option Namensraum-Präfix einfügen ist zu aktivieren.
Mit der Eingabehilfe aus dem Element Application• ...den gewünschten Funktionsbaustein auswählen, der die Daten für die entsprechende
Visualisierungsseite bereitstellt.
10.2 Eigenschaften von Schaltflächen definieren
So gehen Sie vor:
1. Im Ordner A71_LocalSources\Structs ENUM Vis_eFrame erweitern:
Den Namen der Visualisierung manuell hinzufügen, Beispiel: MVis_Module3
Hinweis: Die Anordnung der Einträge im ENUM Vis_eFrame muss der Reihenfolge der
Auswahl von #0 Frame der Visualisierung L_Main entsprechen.
2. Im Order A20_Visualisation\SubVisu die Visualisierung Keys_Main doppelklicken.
3. Eine neue Schaltfläche erzeugen.• Die Schaltfläche Module 2 markieren:
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 115
Visualisieren im ApplicationTemplateEine Visualisierung hinzufügen: Prinzipielle Vorgehensweise
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
• Rechtsklick Kopieren
• Rechtsklick Einfügen• Die Schaltfläche an die gewünschte Stelle platzieren.• Schaltfläche umbennen (Beispiel: Module 3):
4. Im Eigenschaften-Dialog der Schaltfläche Module 3 die Variable Color variables\Toggle color auswählen.
5. Den Wert der zuvor kopierten Schaltfläche an den neuen Namen anpassen (Beispiel: Module3).
• Bei Toggle color die Zeile MVis.scVisuIntern.diFrame=Vis_eFrame.MVis_Module3 eintragen.
6. Bei OnMouseUp den ST-Code in MVis.scVisuIntern.diFrame:=Vis_eFrame.MVis_Module3 ändern:
10.3 Eine Visualisierung hinzufügen: Prinzipielle Vorgehensweise
• Die Visualisierung ist im Ordner
A20 Visualisation hinzuzufügen:
Per Rechtsklick auf den Ordner A20 Visualisation folgenden Befehl ausführen:
Objekt
hinzufügen Visualisierung
Visualisieren im ApplicationTemplateEine Visualisierung hinzufügen: Prinzipielle Vorgehensweise
116 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
• Den gewünschten Namen der Visualisierung vergeben.Öffnen klicken.
• Die Visualisierung ist im Ordner
A20 Visualisation hinzugefügt.
• Einen Frame in der Visualisierung anlegen: Per Drag&Drop einen Frame aus dem Dialogfenster Werkzeuge anlegen.
• Die Frame-Größe anpassen.
• Per Rechtsklick in den Frame den Befehl Frame Auswahl ausführen.• Die gewünschte Visualisierung unter
Verfügbare Visualisierungen durch Klicken der Schaltfläche > in die Auswahl übernehmen.
• OK klicken, um die Visualisierung in den Frame zu übernehmen.
• Beispiel : Um die globale Fehlerliste zu übernehmen, ist der Eintrag L_EATP.L_EATP_VisErrorList auszuwählen.
• Die Größe der Visualisierung anpassen/positionieren.
• Für die Fehlerliste (Error List) sind keine weiteren Zuordnungen notwendig.Ergebnis: Die Visualisierung ist nun funktionsfähig
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 117
Visualisieren im ApplicationTemplateEine Visualisierung hinzufügen: Prinzipielle Vorgehensweise
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
• Beispiel: Um ein Fenster zum Aktivieren von Fehlern für ein bestimmtes Maschinenmodul einzufügen, ist die Visualisierung L_EATP.L_EATP_VisErrorSet auszuwählen.
Beispiel: Zuweisen der Visualisierung für den Block ErrorsA der Modulapplikation App1 von Module1.
• Der Visualisierung L_EATP.L_EATP_VisErrorSet ist die Datenquelle zuzuweisen:• Im Dialogfenster Eigenschaften die
entsprechende Datenquelle zuweisen.
• Tipp: Für die vordefinierten Visualisierungselemente des ApplicationTemplate sind keine manuellen Datenzuordnungen erforderlich.• Dadurch ist (nach dem
Kompiliervorgang) ohne Mehraufwand ein Einloggen (Online gehen) möglich.
Die Bibliothek L_EATP_ApplicationTemplate
118 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
11 Die Bibliothek L_EATP_ApplicationTemplate
Diese Bibliothek enthält die Basisfunktionalität für das ApplicationTemplate.
Übersicht der Funktionen und Funktionsbausteine
Die Funktionen und Funktionsbibliotheken der Bibliothek L_EATP_ApplicationTemplate sind inverschiedene Gruppen unterteilt.
GetBooleanProperty (automatisch generiert vom »PLC Designer«) ( 119)
GetCompany (automatisch generiert vom »PLC Designer«) ( 120)
GetNumberProperty (automatisch generiert vom »PLC Designer«) ( 120)
GetTextProperty (automatisch generiert vom »PLC Designer«) ( 121)
GetTitle (automatisch generiert vom »PLC Designer«) ( 121)
GetVersion (automatisch generiert vom »PLC Designer«) ( 122)
GetVersionProperty (automatisch generiert vom »PLC Designer«) ( 122)
1_POUs (Program Organization Units)
L_EATP_Application ( 123)
L_EATP_CriticalSection ( 125)
L_EATP_ErrorListHandler ( 126)
L_EATP_ErrorSet ( 127)
L_EATP_Module ( 129)
L_EATP_ModuleDiag ( 131)
L_EATP_ModuleErrorHandler ( 132)
L_EATP_ModulRelations ( 133)
L_EATP_SMAccess ( 134)
2_Structs_Types
L_EATP_ACD_Base (ACD-Struktur) ( 135)
L_EATP_BaseChannel ( 136)
L_EATP_ErrorList ( 136)
L_EATP_ErrorListEntry ( 136)
L_EATP_MMD_Base (MMD-Struktur) ( 137)
L_EATP_MM_Address ( 138)
3_Enums
L_EATP_ErrorReactionType ( 138)
L_EATP_SMStates ( 139)
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 119
Die Bibliothek L_EATP_ApplicationTemplateAutomatisch generierte Funktionen
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
11.1 Automatisch generierte Funktionen
In diesem Abschnitt finden Sie Detailinformationen zu Funktionen, die der »PLC Designer«automatisch generiert. Die Ausgabewerte finden Sie unter: ProjektProjektinformationen
11.1.1 GetBooleanProperty (automatisch generiert vom »PLC Designer«)
Die Funktion liefert eine boolsche Projektinformationen der Bibliothek. (Aktuell werden keineboolschen Projektinformationen verwendet).
Eingänge
Ausgänge
Hinweis!
Beim Ändern der Projektinformationen ist folgende Einstellung erforderlich:
Projektinformationen aufrufen: ProjektProjektinformationen .• Den Parameter "Automatically generate POUs for property access" deaktivieren.• OK klicken, um die Projektinformationen zu schließen.
Projektinformationen erneut aufrufen: ProjektProjektinformationen .• Parameter "Automatically generate POUs for property access" aktivieren.• OK klicken, um die Projektinformationen zu schließen.
Anschließend stehen die geänderten Projektinformationen im Projekt zur Verfügung.
Hinweis!
Diese Funktion ist immer mit dem passenden Namensraum der zugehörigen Bibliothek zu verwerden. (beispielweise IOStandard.GetNumberProperty(stKey))
GetBooleanProperty
WSTRING ⎯ stKey GetBooleanProperty ⎯ BOOL
Bezeichner/Datentyp Info/Einstellmöglichkeiten
stKeyWSTRING
Schlüssel der Projektinformation
Bezeichner/Datentyp Info/Einstellmöglichkeiten
GetBooleanPropertyBOOL
Wert der Projektinformationen
Die Bibliothek L_EATP_ApplicationTemplateAutomatisch generierte Funktionen
120 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
11.1.2 GetCompany (automatisch generiert vom »PLC Designer«)
Die Funktion liefert den Namen der Firma, von der die Bibliothek erstellt ist.
Ausgänge
11.1.3 GetNumberProperty (automatisch generiert vom »PLC Designer«)
Die Funktion liefert eine numerische Projektinformationen der Bibliothek. (Aktuell werden keinenumerischen Projektinformationen verwendet).
Eingänge
Ausgänge
Hinweis!
Diese Funktion ist immer mit dem passenden Namensraum der zugehörigen Bibliothek zu verwerden. (beispielweise IOStandard.GetCompany())
GetCompany
GetCompany ⎯ WSTRING
Bezeichner/Datentyp Info/Einstellmöglichkeiten
getCompanyWSTRING
Name der Firma, die die Bibliothek erstellt hat.
Hinweis!
Diese Funktion ist immer mit dem passenden Namensraum der zugehörigen Bibliothek zu verwerden. (beispielweise IOStandard.GetNumberProperty(stKey))
GetNumberProperty
WSTRING ⎯ stKey GetNumberProperty ⎯ DINT
Bezeichner/Datentyp Info/Einstellmöglichkeiten
stKeyWSTRING
Schlüssel der Projektinformation
Bezeichner/Datentyp Info/Einstellmöglichkeiten
GetNumberPropertyDINT
Wert der Projektinformationen
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 121
Die Bibliothek L_EATP_ApplicationTemplateAutomatisch generierte Funktionen
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
11.1.4 GetTextProperty (automatisch generiert vom »PLC Designer«)
Die Funktion liefert eine textuelle Projektinformationen der Bibliothek.
Eingänge
Ausgänge
11.1.5 GetTitle (automatisch generiert vom »PLC Designer«)
Die Funktion liefert den Titel der Bibliothek.
Ausgänge
Hinweis!
Diese Funktion ist immer mit dem passenden Namensraum der zugehörigen Bibliothek zu verwerden. (beispielweise IOStandard.GetText("Author"))
GetTextProperty
WSTRING ⎯ stKey GetTextProperty ⎯ WSTRING
Bezeichner/Datentyp Info/Einstellmöglichkeiten
stKeyWSTRING
Schlüssel der Projektinformation• "Company" - Name des Bibliothekslieferanten• "Title" - Name der Bibliothek• "DefaultNamespace" - Namensraum der Bibliothek• "Project" - Name der Bibliothek• "Description" - Beschreibung der Bibliothek• "Author" - Autor der Bibliothek
Bezeichner/Datentyp Info/Einstellmöglichkeiten
GetTextPropertyWSTRING
Wert der Projektinformationen
Hinweis!
Diese Funktion ist immer mit dem passenden Namensraum der zugehörigen Bibliothek zu verwerden. (beispielweise IOStandard.GetTitle())
GetTitle
GetTitle ⎯ WSTRING
Bezeichner/Datentyp Info/Einstellmöglichkeiten
GetTtitleWSTRING
Name de Bibliothek
Die Bibliothek L_EATP_ApplicationTemplateAutomatisch generierte Funktionen
122 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
11.1.6 GetVersion (automatisch generiert vom »PLC Designer«)
Diese Funktion liefert die Version der Bibliothek.
Ausgänge
11.1.7 GetVersionProperty (automatisch generiert vom »PLC Designer«)
Diese Funktion liefert die Version der Bibliothek.
Eingänge
Ausgänge
Hinweis!
Diese Funktion ist immer mit dem passenden Namensraum der zugehörigen Bibliothek zu verwerden. (beispielweise IOStandard.GetVersion())
GetVersion
GetVersion ⎯ VERSION
Bezeichner/Datentyp Info/Einstellmöglichkeiten
GetVersionVERSION
Version der Bibliothek
Hinweis!
Diese Funktion ist immer mit dem passenden Namensraum der zugehörigen Bibliothek zu verwerden. (beispielweise IOStandard.GetVersion Property(stKey))
GetVersionProperty
WSTRING ⎯ stKey GetVersionProperty ⎯ VERSION
Bezeichner/Datentyp Info/Einstellmöglichkeiten
stKeyWSTRING
Schlüssel der Projektinformation• Erweiterte Versionierungsinformation der Bibliothek
Bezeichner/Datentyp Info/Einstellmöglichkeiten
GetVersionPropertyVERSION
Version der Bibliothek
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 123
Die Bibliothek L_EATP_ApplicationTemplate1_POUs - Program Organization Units
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
11.2 1_POUs - Program Organization Units
11.2.1 L_EATP_Application
Dieser Baustein ermöglicht den leeren (abstrakten) Basis-Funktionsbaustein einerMaschinenmodul-Applikation (MAP).
• Jede Maschinenmodul-Applikation leitet sich von diesem FB ab.
Lokale Variablen
AccessACD
Diese Methode vergibt eine Zugriffsstruktur auf die ACD-Struktur im eigenen MFB oder eines Slave-Moduls.
Eingänge
Ausgang
L_EATP_Application
⎯ ⎯
Bezeichner/Datentyp Info/Einstellmöglichkeiten
parentModuleL_EATP_IModule
Referenz auf das Eltern-Modul, welches die MAP enthält.• Diese Referenz ist beim Anlegen der MAP innerhalb des MM zu initialisieren.
AccessACD
L_EATP_MM_Address ⎯ MM_Address AccessACD ⎯ POINTER TO L_EATP_ACD_Base (ACD-Struktur)
DWORD ⎯ dwSize
Bezeichner/Datentyp Info/Einstellmöglichkeiten
MM_AddressL_EATP_MM_Address
• Relative Adresse des Moduls, auf dessen ACD-Struktur zuzugreifen ist.• Der Wert "0" sowie die Konstante L_EATP_CONST.OWNID adressieren die
moduleigene Adresse.
dwSizeDWORD
Größe der übergebenen Struktur (z.B.: SIZEOF(MACD_scExample) )
Bezeichner/Datentyp Info/Einstellmöglichkeiten
AccessACDPOINTER TO
L_EATP_ACD_Base (ACD-Struktur)
• Liefert den Zeiger auf die zuzugreifende ACD-Struktur zurück.
Die Bibliothek L_EATP_ApplicationTemplate1_POUs - Program Organization Units
124 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Base
...ist eine Verwaltungsfunktion zur Infrastrukturverarbeitung.
• Diese Methode ist bei jedem Zyklus als erstes im Rumpf des FBs aufzurufen.
checkSlave
...prüft, ob ein Slave mit der angegebenen Modul-Adresse existiert.
SMDispatcherCaller
Methode zum Aufrufen der Methode SMDispatcher und Übergeben des aktuellen Zustand derZustandsmaschine.
Rückgabewert
Datentyp Wert/Bedeutung
BOOL Liefert zurück, ob die Infrastruktur korrekt aufgebaut wurde.Hinweis: Alle Methoden und Daten zur Infrastruktur dürfen nur verwendet werden, wenn zuvor Rückgabewert = TRUE.
TRUE Infrastrukur korrekt aufgebaut (Success)
FALSE Infrastrukur nicht korrekt (Error)
Übergabevariablen
Bezeichner/Datentyp Info/Einstellmöglichkeiten
MM_AddressL_EATP_MM_Address
ID des Maschinenmoduls, das die Methode anfragen soll.
Rückgabewert
Datentyp Wert/Bedeutung
BOOL TRUE Slave vorhanden.
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 125
Die Bibliothek L_EATP_ApplicationTemplate1_POUs - Program Organization Units
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
11.2.2 L_EATP_CriticalSection
Dieser FB beinhaltet die Methoden lock(), UnLock() und LockState().
Die Methoden ermöglichen es, eine konsistente Datenübetragung sicherzustellen. Eine konsistenteDatenübertragung ist beispielweise bei Multitasking-Systemen erforderlich. KonsistenteDatenübertragung ( 107)
Lock()
...reserviert einen Datenbereich der ACD-Struktur (Zustand des Flags abfragen).
Unlock()
...gibt den zuvor reservierten Datenbereich wieder frei (Flag zurücknehmen).
LockState()
...fragt den Sperrzustand eines Datenbereiches ab (Flag gesetzt/nicht gesetzt).
Rückgabewert
Datentyp Wert/Bedeutung
BOOL Liefert zurück, ob Datenbereich reserviert wurde (Flag gesetzt).
TRUE Datenbereich reserviert (Flag gesetzt).
FALSE Datenbereich nicht reserviert (Flag nicht gesetzt).
Rückgabewert
Datentyp Wert/Bedeutung
BOOL Liefert zurück, ob der Datenbereich freigegeben ist (Flag zurückgesetzt).
TRUE Datenbereich freigegeben (Flag zurückgesetzt).
FALSE Datenbereich nicht freigegeben (Flag nicht zurückgesetzt).
Rückgabewert
Datentyp Wert/Bedeutung
BOOL Liefert zurück, ob Flag gesetzt ist.
TRUE Rückgabewert, wenn Flag gesetzt ist.
FALSE Rückgabewerte, wenn Flag nicht gesetzt ist.
Die Bibliothek L_EATP_ApplicationTemplate1_POUs - Program Organization Units
126 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
11.2.3 L_EATP_ErrorListHandler
Dieser FB verwaltet/aktualisiert die globale Fehlerliste (Error List).
• Dieser FB ermöglicht das Erstellen einer CSV-Datei, die alle definierten Fehler enthält.
Eingänge
Ausgänge
Funktionsbibliothek: L_EATP_ApplicationTemplate
Runtime Software-Lizenz: LPC 1x00 MPC 1x00 MPC 2x00 MPC 2x10 MPC 2x20 MPC 2x30
MPC 3x00 keine
L_EATP_ErrorListHandler
BOOL ⎯ xExecuteCreateCSVFile iDiagModuleCount ⎯ INT
xBusyCreateCSVFile ⎯ BOOL
xDoneCreateCSVFile ⎯ BOOL
sInfoCreateCSVFile ⎯ STRING
Bezeichner/Datentyp Info/Einstellmöglichkeiten
xExecuteCreateCSVFileBOOL
Eine steigende Flanke an diesem Eingang (FALSE->TRUE) startet das Erzeugen einer CSV-Datei.
• Die CSV-Datei enthält alle Fehler, die in den Maschinenmodulen definiert sind.
Bezeichner/Datentyp Info/Einstellmöglichkeiten
iDiagModuleCountINT
Bildet die Verknüpfung zu allen untergeordneten Maschinenmodulen (Slaves).• Bei Slaves der untersten Hierarchieebene ist dieser Ausgang unbelegt.
xBusyCreateCSVFileBOOL
TRUE: CSV-Datei erstellen (Erstellvorgang läuft).
xDoneCreateCSVFileBOOL
FALSE->TRUE: CSV-Datei erstellt (Erstellvorgang beendet).• Automatisches Zurücksetzen des Signals: Drei Sekunden nach dem
Erstellvorgang der CSV-Datei.
sInfoCreateCSVFileSTRING
Detailinformationen zum Erstellvorgang der CSV-Datei.
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 127
Die Bibliothek L_EATP_ApplicationTemplate1_POUs - Program Organization Units
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
11.2.4 L_EATP_ErrorSet
Dieser FB kann bis zu vier Fehler auslösen. Das Auslösen eines Fehlers wirkt sich auf dieZustandsmaschine aus.
• In Abhängigkeit davon, wie Sie die Fehlerreaktion (eReaction) programmieren, wechselt die Zustandsmaschine in den definierten Zustand.
Eingänge
Funktionsbibliothek: L_EATP_ApplicationTemplate
Runtime Software-Lizenz: LPC 1x00 MPC 1x00 MPC 2x00 MPC 2x10 MPC 2x20 MPC 2x30
MPC 3x00 keine
L_EATP_ErrorSet
BOOL ⎯ xSetError[1...4] xError[1...4]Active ⎯ BOOL
WORD wErrCode[1...4]
L_EATP_ErrorReactionType eReaction[1...4]
dwPriority[1...4]
BOOL xAckNeeded[1...4]
STRING sText[1...4]
DWORD dwErrDetail[1...4]
Bezeichner/Datentyp Info/Einstellmöglichkeiten
xSetError[1...4]BOOL
Setzen eines Fehlers [1...4]• Fehlerquelle: Modulapplikation (MAP)
TRUE Fehler [1...4] ist gesetzt.
FALSE Fehler [1...4] ist nicht gesetzt.
wErrCode[Fehlernummer]WORD
Eindeutige Fehlernummer von Fehler [1...4]
eReaction[Fehlerreaktion]L_EATP_ErrorReactionType
Fehlerreaktionstyp von Fehler [1...4]
dwPriority[Priorität]DWORD
Vergeben einer Priorität [1...n] für Fehlerreaktionen.• Ermöglicht das Priorisieren von Fehlern des gleichen
Fehlerreaktionstyps.• Höchste Priorität = 1.
xAckNeeded[Quittierpflicht]BOOL
Hinweis:Wird bei folgenden Fehlerreaktionstypen ignoriert:
• "Information": Quittieren ist nicht erforderlich.• "Fault": Quittieren ist immer erforderlich.• "SystemFault": Kein Quittieren möglich.
FALSE Kein Quittieren des Fehlers [1...4] erforderlich.
TRUE Quittieren des Fehlers [1...4] ist erforderlich.
sText[Fehlertext]STRING
Text von Fehler [1...4]
dwErrDetail[Fehlernummer]DWORD
Detailinformation zu Fehler [1...4]
Die Bibliothek L_EATP_ApplicationTemplate1_POUs - Program Organization Units
128 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Ausgang
11.2.4.1 Fehlerbehandlung (ErrorHandling) anpassen
So verändern Sie die Fehlerbehandlung:
1. In der Geräte-Ansicht den Ordner A70_MachineModuleSources doppelklicken.
2. Die Methode SetErrors doppelklicken.• Einen weiteren FB ergänzen.
• Die Deklaration ist im FB MAP_EmptyModul_App1 vorzunehmen.
[11-1] Beispielverknüpfung Funktionsbaustein L_EATP_ErrorSet
Die Visualisierung des Bausteins L_EATP_ErrorSet erleichtert das Bedienen des Errorhandlingim ApplicationTemplate: Erste Schritte - Das ApplicationTemplate bedienen ( 37)
11.2.4.2 Fehler quittieren
Ist der aktuell anstehende Fehler quittierpflichtig und die Fehlerursache behoben, ist das Quittierenstandardmäßig über das übergeordnete Master-Modul möglich (BaseChannel-DatenelementxEHQuitError).
• Alternativ ist der Fehler über das Datenelement ErrorHandler.xQuitErrors (aus der Modulapplikation heraus) für das eigene Modul/die untergeordneten Slavemodule) quittierbar.• Aus der entsprechenden Modulapplikation heraus ist folgende Befehlszeile aufzurufen
(Signal ist flankenbasiert):
Bezeichner/Datentyp Info/Einstellmöglichkeiten
xError[1...4]ActiveBOOL
Status aktuelle gesetzter Fehler.
TRUE Setzen eines Fehlers aktiv.
FALSE Kein Fehler gesetzt.
• Den gewünschten FehlereingangxError[1...4]) mit der Applikation verknüpfen.
• Eigenschaften des Fehlers an den entsprechenden Eingängen zuweisen: Fehlertexte, Fehlerreaktionstyp, Quittierverhalten, Priorität.
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 129
Die Bibliothek L_EATP_ApplicationTemplate1_POUs - Program Organization Units
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
• Alternativ ist der Fehler mit Hilfe der Methode baseChannelSetErrorQuit quittierbar.
11.2.5 L_EATP_Module
Dieser FB stellt den leeren Basis-FB eines Maschinenmoduls bereit.
• Alle weiteren Maschinenmodule leiten sich von diesem FB ab.
Eingänge
Ausgänge
11.2.5.1 Base()
...ist eine Verwaltungsfunktion zur Infrastrukturverarbeitung.
• Diese Methode ist bei jedem Zyklus als erstes im Rumpf des FBs aufzurufen.
ErrorHandler.xQuitErrors := TRUE;
Funktionsbibliothek: L_EATP_ApplicationTemplate
Runtime Software-Lizenz: LPC 1x00 MPC 1x00 MPC 2x00 MPC 2x10 MPC 2x20 MPC 2x30
MPC 3x00 keine
L_EATP_Module
L_EATP_BUS ⎯ masterBus slaveBus ⎯ L_EATP_BUS
L_EATP_MM_Address ⎯ MM_Address
Bezeichner/Datentyp Info/Einstellmöglichkeiten
masterBusL_EATP_BUS
Bildet eine Verknüpfung zum übergeordneten Maschinenmodul (Master).• Beim obersten Maschinenmodul ist dieser Eingang unbelegt.
MM_AddressL_EATP_MM_Address
Relative Module-ID des Maschinen-Moduls.• Muss innerhalb einer Hierarchie-Ebene (ein Master mit allen direkt
angeschlossenen Slaves) eindeutig sein.
Bezeichner/Datentyp Info/Einstellmöglichkeiten
slaveBusL_EATP_BUS
Bildet die Verknüpfung zu allen untergeordneten Maschinenmodulen (Slaves).• Bei Slaves der untersten Hierarchieebene ist dieser Ausgang unbelegt.
Rückgabewert
Datentyp Wert/Bedeutung
BOOL Liefert zurück, ob die Infrastruktur korrekt aufgebaut wurde.Hinweis: Alle Methoden und Daten zur Infrastruktur dürfen nur verwendet werden, wenn zuvor Rückgabewert = TRUE.
TRUE Infrastrukur korrekt aufgebaut (Success)
FALSE Infrastrukur nicht korrekt (Error)
Die Bibliothek L_EATP_ApplicationTemplate1_POUs - Program Organization Units
130 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
11.2.6 RegisterACD()
Diese Methode registriert die ACD-Struktur im Modul-FB (MFB).
11.2.7 setCompIDAndVersion()
Diese Methode setzt die Modulkennung (CompID) und die Version des Maschinenmoduls.
Eingänge
RegisterACD
L_EATP_ACD_Base (ACD-Struktur)
⎯ scStruct
DWORD ⎯ dwSize
Bezeichner/Datentyp Info/Einstellmöglichkeiten
scStructL_EATP_ACD_Base (ACD-
Struktur)
Die übergebene Struktur muss von der Struktur L_EATP_ACD_Base abgeleitet sein. (Beispiel: TYPE MACD_scExample EXTENDS L_EATP_ACD_Base)
dwSizeDWORD
Größe der übergebenen Struktur (z.B.: SIZEOF(MACD_scExample) )
Bezeichner/Datentyp Info/Einstellmöglichkeiten
dwCompIDDWORD
Modulkennung• Der freie Bereich der CompID liegt zwischen 16#3C00 – 16#3FF
dwVersionDWORD
Version des Maschinenmoduls
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 131
Die Bibliothek L_EATP_ApplicationTemplate1_POUs - Program Organization Units
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
11.2.8 L_EATP_ModuleDiag
Dieser FB ermöglicht die Diagnose eines Maschinenmoduls.
• Der FB fokussiert immer genau ein einzelnes Maschinenmodul.
• Nach dem Starten des Projektes ist automatisch das oberste Master-Modul fokusiert.
Eingänge
Ausgänge
Funktionsbibliothek: L_EATP_ApplicationTemplate
Runtime Software-Lizenz: LPC 1x00 MPC 1x00 MPC 2x00 MPC 2x10 MPC 2x20 MPC 2x30
MPC 3x00 keine
L_EATP_ModuleDiag
BOOL ⎯ goToMaster moduleName ⎯ STRING
L_EATP_MM_Address ⎯ goToSlave absoluteMM_Address ⎯ STRING
dataConnector ⎯ L_EATP_DataConnector
statusText ⎯ STRING
Bezeichner/Datentyp Info/Einstellmöglichkeiten
goToMasterBOOL
Bei positiver Flanke wechselt der FB zum Master des aktuell fokussierten Moduls.• Existiert am fokussierten Modul kein Master, ist am Ausgang statusText die
Meldung „Current module has no master“ sichtbar.
goToSlaveINT
Ein Eingang ungleich null gilt als Modul-Adresse. Entsprechend der Modul-Adresse wechselt der FB zum Slave des gerade fokussierten Maschinenmoduls.
• Existiert am fokussierten Maschinenmodul kein Slave mit entsprechender Modul-Adresse, ist am Ausgang statusText die Meldung „Current module has no slave with module ID xx“ sichtbar.
Bezeichner/Datentyp Info/Einstellmöglichkeiten
modulNameSTRING
Name der Instanz des gerade fokussierten Maschinenmoduls.
absoluteMM_AddressSTRING
Absolute Module-Adresse des gerade fokussierten Maschinenmoduls.
dataConnectorL_EATP_DataConnector
Liefert den Data Connector des ausgewählten Moduls zurück• Erlaubt dadurch den Zugriff auf den BaseChannel.
statusTextSTRING
Status/Fehlermeldung des Diagnose-FBs. Folgende Meldungen sind möglich:• No root module was found• Root module was entered• Current module has no master• Master module was entered• Current module has no slave with module ID x• Slave module was entered
Die Bibliothek L_EATP_ApplicationTemplate1_POUs - Program Organization Units
132 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
11.2.9 L_EATP_ModuleErrorHandler
Dieser FB enthält das zentralen Errorhandling in einem Maschinenmodul.
• Eine Instanz dieses Bausteins mit Namen ErrorHandler ist Bestandteil des Basisbausteins L_EATP_Module.
Eingang
Ausgang
L_EATP_ModuleErrorHandler
BOOL ⎯ xQuitErrors xErrorQuitActive ⎯ BOOL
Bezeichner/Datentyp Info/Einstellmöglichkeiten
xQuitErrorsBOOL
Eingang auf TRUE setzen, um das Quittieren von Fehlern zu aktivieren (Flanke FALSE TRUE). Fehlerquelle ist die Modulapplikation (MAP).
Bezeichner/Datentyp Info/Einstellmöglichkeiten
xQuitErrorActiveBOOL
TRUE Zeigt an, ob das Quittieren von Fehlern aktiviert ist. Ist aktiv...• ... solange der Eingang xQuitErrors = TRUE oder• für einen Zyklus, wenn das Fehlerquittieren durch die Methode
baseChannelSetErrorQuit aktiviert ist. Methoden-Übersicht - ApplicationTemplate ( 166)
FALSE Quittieren von Fehlern ist deaktiviert, xQuitErrors = FALSE.
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 133
Die Bibliothek L_EATP_ApplicationTemplate1_POUs - Program Organization Units
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
11.2.10 L_EATP_ModulRelations
Dieser FB zeigt liefert einen Überblick darüber, wie die Maschinenmodule verknüpft sind.
• Mit Hilfe dieses FBs ist beispielsweise nachvollziehbar, ob das Verschalten aller Bus-Strukturen und die Zuweisung der Modul-Adresse funktioniert hat.
Eingänge
Ausgänge
Funktionsbibliothek: L_EATP_ApplicationTemplate
Runtime Software-Lizenz: LPC 1x00 MPC 1x00 MPC 2x00 MPC 2x10 MPC 2x20 MPC 2x30
MPC 3x00 keine
L_EATP_ModuleRelations
BOOL ⎯ Enable numberOfModules ⎯ INT
relationsAsString ⎯ BOOL
Success ⎯ BOOL
Bezeichner/Datentyp Info/Einstellmöglichkeiten
EnableBOOL
Bei positiver Flanke startet die Modul-Analyse.
Bezeichner/Datentyp Info/Einstellmöglichkeiten
numberOfModulesINT
Anzahl der erkannten Maschinenmodule
relationAsStringARRAY [1...30] OF STRING
Für jede erkannte Master-Slave-Beziehung gibt es im Array einen Eintrag mit dem entsprechenden Master sowie Slave.
• Der Eintrag hat den Aufbau <Instanzname Master>[<Modul-Adresse Master>] -> <instanzname Slave>[<Modul-Adresse Slave>]
Beispiel: MachineModule[1] -> InFeed[3]
SuccessBOOL
Liefert zurück, ob die Analye fehlerfrei war.
TRUE Analyse fehlerfrei durchgeführt.
FALSE Bei der Analyse ist ein Fehler aufgetreten
Die Bibliothek L_EATP_ApplicationTemplate1_POUs - Program Organization Units
134 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
11.2.11 L_EATP_SMAccess
Dieser FB zeigt den aktuellen Zustand der Zustandsmaschine in einer Modulapplikation (MAP) an.
• Die Instanz SMAccess dieses FBs...• ...ist im ApplicationTemplate-Vorlagenprojekt in jeder Modulapplikation eingebunden.• ...in der FUP-Methode Statemachine grafisch dargestellt.
Ausgänge
An den Ausgängen stellt der FB die Informationen über den aktuellen Zustand derZustandsmaschine für die Modulapplikation bereit.
Funktionsbibliothek: L_EATP_ApplicationTemplate
Runtime Software-Lizenz: LPC 1x00 MPC 1x00 MPC 2x00 MPC 2x10 MPC 2x20 MPC 2x30
MPC 3x00 keine
SMAccess
L_EATP_SMAccess
eNomState ⎯
eActState ⎯
xWarning ⎯
xActStateIsInit ⎯
xActStateIsReady ⎯
xActStateIsManual ⎯
xActStateIsService ⎯
xActStateIsMode[1...2] ⎯
xActStateIsHoming ⎯
xActStateIsQuickStop ⎯
xActStateIsFault ⎯
xActStateIsSystemFault ⎯
Übergabevariablen
Bezeichner/Datentyp Wert/Bedeutung
eNomStateL_EATP_SMStates
Angeforderter SOLL-Zustand der Zustandsmaschine
eActStateL_EATP_SMStates
Aktueller IST-Zustand der Zustandsmaschine
xWarningBOOL
Warnung ist aktiv
xActStateIsInitBOOL
TRUE Aktueller IST-Zustand: "Init"
xActStateIsReadyBOOL
TRUE Aktueller IST-Zustand: "Ready"
xActStateIsManualBOOL
TRUE Aktueller IST-Zustand: "Manual"
xActStateIsServiceBOOL
TRUE Aktueller IST-Zustand: "Service"
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 135
Die Bibliothek L_EATP_ApplicationTemplate2_Structs_Types
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
11.3 2_Structs_Types
11.3.1 L_EATP_ACD_Base (ACD-Struktur)
Die AppChannelData (ACD)-Struktur ist die Grundlage für die Applikationsdaten.
• Die Struktur enthält das Steuer-/Statuswort.
• Die Struktur enthält Methoden zum Reservieren/Freigeben von Datenbereichen.
Weiterführende Informationen zur ACD-Struktur: Die Struktur AppChannelData (ACD) ( 76)
STRUCT-Ansicht
xActStateIsMode(1...2)BOOL
TRUE Aktueller IST-Zustand: "Mode(1...2)"
xActStateIsHomingBOOL
TRUE Aktueller IST-Zustand: "Homing"
xActStateIsQuickstopBOOL
TRUE Aktueller IST-Zustand: "Quickstop"
xActStateIsFaultBOOL
TRUE Aktueller IST-Zustand: "Fault"
xActStateIsSystemFaultBOOL
TRUE Aktueller IST-Zustand: "Systemfault"
Übergabevariablen
Bezeichner/Datentyp Wert/Bedeutung
Bezeichner/Datentyp Info/Einstellmöglichkeiten
Funktionsblock Der Baustein CS ist bei Multitaskanwendungen zu verwenden. Weiterfüh-rende Informationen zum Baustein: L_EATP_CriticalSection ( 125)
CS (Critical Section)L_EATP_CriticalSection
Steuerwort
xStartOperation_InBOOL
Applikation starten
xStopOperation_InBOOL
Applikation stoppen
xPauseOperation_InBOOL
Applikation pausieren
xManualJogNeg_InBOOL
Handfahren in negativer Richtung (Linkslauf)
xManualJogPos_InBOOL
Handfahren in positiver Richtung (Rechtslauf)
Statuswort
xOperationBusy_OutBOOL
Status: Applikation aktiv
xOperationDone_OutBOOL
Status: Applikation gestoppt
xOperationPaused_OutBOOL
Status: Applikation pausiert
Die Bibliothek L_EATP_ApplicationTemplate2_Structs_Types
136 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
11.3.2 L_EATP_BaseChannel
Diese Struktur realisiert den Kommunikationskanal für Basis-Daten (BaseChannel) zwischen einemMaster und jeweils einem Slave-Teilnehmer.
• Die BaseChannel-Elemente beinhalten die Basisfunktionen Zustandsmaschine und Fehlerbehandlung.
STRUCT-Ansicht
11.3.3 L_EATP_ErrorList
Dieses Array-Typdef beschreibt die globale Fehlerliste (Error List).
• Genau eine Instanz dieses Typs mit Namen ErrorList ist in der globalen Variablendeklaration GVL L_EATP_GVL definiert.
[11-2] TYPE-Ansicht
11.3.4 L_EATP_ErrorListEntry
Diese Struktur enthält die Attribute eines Fehlereintrags in der globalen Fehlerliste (GlobalErrorList).
STRUCT-Ansicht
Bezeichner/Datentyp Modulsicht Info/Einstellmöglichkeiten
Control Status
dwCompIDDWORD
Modulkennung
dwVersionDWORD
Version des Maschinenmoduls
eSMActStateL_EATP_SMStates
Aktueller IST-Zustand der Zustandsmaschine
xSMWarningBOOL
Der unabhängige Zustand "Warnung" ist aktiv.
eEHActReactionTypeL_EATP_ErrorReactionType
Fehlerreaktionstyp
eSMSetStateL_EATP_SMStates
Angeforderter SOLL-Zustand der Zustandsmaschine
xEHQuitErrorBOOL
Fehlerquittieren (steigende Flanke)
L_EATP_ErrorList : ARRAY[1.. L_EATP_GVL.ErrorListEntryCount] OF L_EATP_ErrorListEntry;
Bezeichner/Datentyp Info/Einstellmöglichkeiten
sMM_AddressSTRING
Absolute Adresse des Maschinenmoduls.
sModuleNameSTRING
Version des Maschinenmoduls.
wErrCodeWORD
Eindeutige Fehlernummer.
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 137
Die Bibliothek L_EATP_ApplicationTemplate2_Structs_Types
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
11.3.5 L_EATP_MMD_Base (MMD-Struktur)
Die Struktur MachineModuleData (MMD) vom Typ MMD_scModulname dient zum Instanziierenvon Maschinenmoduldaten.
• Das ApplicationTemplate enthält Variablen und Funktionsbausteine zum Instanziieren von Ma-schinenmoduldaten.
• Alle Modulapplikationen (MAPs) eines Maschinenmoduls können auf diese MMD-Struktur zu-greifen.
Die Datenstruktur erbt die in der Bibliothek L_EATP_ApplicationTemplate enthaltene StrukturL_EATP_MMD_Base:
[11-3] Aufbau der MMD-Struktur im Ordner A65 EmptyModule\MM_EmptyModule\Structs MMD_scEmptyModule
• Der MMD_sc<Modulname> ist mit den jeweils benötigten Datentypen und Funktionsbaustei-nen individuell zu erweitern.
• In der Struktur ist der Baustein L_EATP_CriticalSection instanziiert, der einen konsistenten Aus-tausch von Datenaustausch gewährleistet (Voraussetzung dazu ist, dass der Baustein korrekt verwendet ist).
eReactionL_EATP_ErrorReactionType
Fehlerreaktionstyp
sTextSTRING
Fehlertext (englischsprachig)
dwErrDetailDWORD
Detailinformation des Fehlers
xAckNeededBOOL
Hinweis:Wird bei folgenden Fehlerreaktionstypen ignoriert:
• "Information": Quittieren ist nicht erforderlich• "Fault": Fehler. Quittieren ist immer erforderlich• "SystemFault": Systemfehler. Kein Quittieren möglich
FALSE Kein Quittieren des Fehlers erforderlich.
TRUE Quittieren des Fehlers ist erforderlich.
Bezeichner/Datentyp Info/Einstellmöglichkeiten
Hinweis!
Im Gegensatz zur ACD-Struktur ist der Zugriff eines übergeordneten Mastermoduls auf die MMD-Struktur nicht möglich!
Die Bibliothek L_EATP_ApplicationTemplate3_Enums
138 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Auf die MMD-Struktur zugreifen - Mit der Modulapplikation des MFB
[11-4] Schematische Darstellung: Von der Modulapplikation (MAP) eines Maschinenmoduls (MM_Module) auf die MMD-Struktur zugreifen
[11-5] Kommandos zum Schreiben von Daten auf die MMD-Struktur
11.3.6 L_EATP_MM_Address
Diese Struktur definiert die Modul-Adresse (Datentyp: INT).
11.3.7 L_EATP_MVis
Die Struktur enthält Daten für das externe Visualisieren mit dem Lenze Engineering-Tool »VisiWinNET« (optional).
11.3.8 L_EATP_scBase
Die Struktur enthält den Modulnamen (Datentyp: STRING).
11.4 3_Enums
11.4.1 L_EATP_ErrorReactionType
Diese Enumeration beinhaltet die Fehlerreaktionstypen. Die Zahlenkonstanten sind nachWertigkeit und Bedeutung aufsteigend sortiert.
• In jeder MAP ist die Referenz „rMMD“ de-klariert, die den Lese-/Schreibzugriff auf die Dateninhalte der MMD- Struktur er-möglicht ("Intellisensefunktion").
Bezeichner Zahlenkonstante Reaktionstyp
None 0 Keine Reaktion/nicht verwendet
Information 1 Information
Warning 2 Warnung
Quickstop 3 Schnellhalt (QSP)
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 139
Die Bibliothek L_EATP_ApplicationTemplate3_Enums
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
11.4.2 L_EATP_SMStates
Diese Enumeration zählt die definierten Zustände der Basis-Zustandsmaschine auf. DieZahlenkonstanten sind entsprechend der Wertigkeit und Bedeutung (in Abhängigkeit deskritischen Zustands) absteigend geordnet.
ENUM-Ansicht
Fault 4 Fehler
SystemFault 5 Systemfehler
Bezeichner Zahlenkonstante Reaktionstyp
Bezeichner Zahlenkonstante Zustand in der Zustandsmaschine (Statemachine)
SystemFault 0 Zustand "SystemFault"
Fault 1 Zustand "Fault"
QuickStop 2 Zustand "Quickstop"
Init 3 Zustand "Init"
Ready 4 Zustand "Ready"
Service 5 Zustand "Service"
Manual 6 Zustand "Manual"
Homing 7 Zustand "Homing"• Im Zustand "Homing" wird der Antrieb referenziert. Entweder
wird die Home-Position direkt gesetzt oder eine Referenzfahrt gestartet.
Automatic 8 Zustand "Automatic"
Mode 1 9 Zustand "Mode 1"
Mode 2 10 Zustand "Mode 2"
Ein Automationssystem strukturieren: Beispiel Fliegende SägeVorbereiten: Das Automationssystem in Teilfunktionen aufteilen
140 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
12 Ein Automationssystem strukturieren: Beispiel Fliegende Säge
Dieses Kapitel beschreibt beispielhaft, wie der exemplarische Maschinenaufbau "Fliegende Säge" indie Strukturen des ApplicationTemplate zu überführen ist.
12.1 Vorbereiten: Das Automationssystem in Teilfunktionen aufteilen
Das Anwendungsbeispiel beschreibt, wie man die Maschinenapplikation „Fliegende Säge“ in einemodularisierte Softwarestruktur überführt und mit dem ApplicationTemplate abbildet.
[12-1] Beispiel: Maschinenaufbau "Fliegende Säge"
So gehen Sie vor:
1. Die gesamte Maschinenfunktionalität (vorhandener Maschinenaufbau/Maschinenkonzept) nach Teilfunktionen analyieren/unterteilen. Teilfunktionen des Maschinenaufbaus identifizieren ( 141)
2. Die ermittelten Teilfunktionen in Maschinenmodule überführen:Eine Teilfunktion = Ein Maschinenmodul.
3. Darstellen der Maschinenmodule in Form einer Baumstruktur.Im ApplicationTemplate ist die Maschinenstruktur anschließend im Maschinenstrukturbaum (MMT) abgebildet.
Schritt Tätigkeit
1. Vorbereiten: Das Automationssystem in Teilfunktionen aufteilen ( 140)
• Teilfunktionen des Maschinenaufbaus identifizieren
• Teilfunktionen des Maschinenaufbaus als Maschinenmodule abbilden
• Maschinenmodule als Baumstruktur darstellen
2. Realen Maschinenaufbau im »PLC Designer« abbilden ( 142)
• Maschinenmodule erstellen und einbinden
• Maschinenmodule in den Maschinenstrukturbaum einbinden
3. Modulapplikationen der Maschinenmodule verwalten ( 146)
4. Achse in die Modulapplikation einfügen ( 147)
5. Modulapplikation den Tasks zuordnen ( 148)
6. Kommunikation zwischen den Master- und Slave-Modulen einrichten ( 149)
7. Anwendungsbeispiel: Die Visualisierung erweitern ( 150)
8. Statemachine/Zustandsmaschine ( 153)
9. Handfahren der Achsen ( 156)
10. Errorhandling: Fehlerverhalten konfigurieren ( 157)
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 141
Ein Automationssystem strukturieren: Beispiel Fliegende SägeVorbereiten: Das Automationssystem in Teilfunktionen aufteilen
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
12.1.1 Teilfunktionen des Maschinenaufbaus identifizieren
[12-2] Maschinenaufbau in Teilfunktionen unterteilt: Maschinenmodule
12.1.2 Teilfunktionen des Maschinenaufbaus als Maschinenmodule abbilden
12.1.3 Maschinenmodule als Baumstruktur darstellen
Die zuvor ermittelten Teilfunktionen des Maschinenaufbaus sind in Form einer Baumstrukturdarzustellen. Die Baumstruktur ist anschließend im »PLC Designer« als Maschinenstrukturbaumsichtbar.
[12-3] Hierarchie der Maschinenmodule als Baumstruktur
Einfördereinheit: Infeed Sägeblatt/Schneiden: Blade Sägeschlitten/Synchron fahren: SlideAusfördereinheit: Outfeed
Maschinenmodul Funktion
MM 1 Machine Control: Maschinensteuermodul
MM 2 Infeed
MM 3 Flying Saw
MM 4 Slide
MM 5 Blade
MM 6 Outfeed
Ein Automationssystem strukturieren: Beispiel Fliegende SägeRealen Maschinenaufbau im »PLC Designer« abbilden
142 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
12.2 Realen Maschinenaufbau im »PLC Designer« abbilden
12.2.1 Geräteaufbau: Master und Slaves anhängen
So bilden Sie den Maschinenaufbau im »PLC Designer« ab:
1. Per Rechtsklick auf den Controller mit dem Befehl Gerät anhängen mit dem
"EtherCAT Master" erweitern:
2. Unter dem EtherCAT-Master die EtherCAT-Slaves anhängen:
Per Rechtsklick auf den EtherCAT-Master den Befehl Gerät anhängen ausführen. In der
Auswahlliste die gewünschten Geräte wählen. Wiederholen Sie den Befehl Gerät anhängen solange, bis alle am Feldbus teilnehmenden Slaves in der Geräte-Ansicht eingebunden sind.
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 143
Ein Automationssystem strukturieren: Beispiel Fliegende SägeMaschinenmodule erstellen und einbinden
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
12.2.2 Zykluszeit einstellen
Die Zykluszeit ist auf 2 ms (Eingabewert:2000 μs) einzustellen.
So gehen Sie vor:
1. Per Doppelklick auf EtherCAT_Master die dazugehörige Registerkarte aufrufen.
2. Im Abschnitt Verteilte Uhren den Wert 2000 zuweisen:
Das Symbol vor dem jeweiligen Geräte signalisiert die erfolgreicheEtherCAT-Kommunikation.
12.3 Maschinenmodule erstellen und einbinden
Die zuvor ermittelten Teilfunktionen sind in Form von Maschinenmodulen abzubilden. Das obersteMaster-Maschinenmodul MM 1: MachineControl ist bereits im ApplicationTemplate enthalten. Dieweiteren Teilfunktionen sind hinzuzufügen.
12.3.1 Maschinenmodule erstellen
Die zuvor ermittelten Teilfunktion des Maschinenaufbaus sind jeweils in ein Maschinenmodulabzubilden. Dazu sind in diesem Beispiel folgende Maschinenmodule im Gerätebaum zu erstellen:
So gehen Sie vor:
1. Maschinenmodul MM_EmptyModule kopieren.
Maschinenmodul Funktion
MM 1 Machine Control: Maschinensteuermodul
MM 2 Infeed
MM 3 Flying Saw
MM 4 Slide
MM 5 Blade
MM 6 Outfeed
Ein Automationssystem strukturieren: Beispiel Fliegende SägeMaschinenmodule erstellen und einbinden
144 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Rechtsklick auf den Ordner A65 EmptyModule\MM_EmptyModule Copy Empty Module auswählen.
2. Das zuvor kopierte Maschinenmodul (Empty Module) unterhalb des Ordners
A70_MachineModuleSources einfügen:
Rechtsklick auf den Ordner A70_MachineModuleSources Insert Empty Module
3. Modulnamen eingeben.
Beispiel: MM 2, Einfördereinheit: Infeed
4. Insert klicken, um das Maschinenmodul einzufügen.
Auf diese Weise sind die fünf Maschinenmodule MM 2...MM 6 zu erstellen.
Folgende Maschinenmodule sind zu erstellen:
• B01_Infeed
• B02_Flying Saw
• B03_Outfeed
• C01_Slide
• C02_Blade
Das oberste Maschinensteuermodul MM_ MachineControl istbereits im ApplicationTemplate enthalten.
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 145
Ein Automationssystem strukturieren: Beispiel Fliegende SägeMaschinenmodule erstellen und einbinden
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
12.3.2 Maschinenmodule in den Maschinenstrukturbaum einbinden
Die zuvor im Gerätebaum erstellten Maschinenmodule sind in den Maschinenstrukturbaum (MMT)einzubinden, um die einzelnen Teilfunktionen des Maschinenaufbaus im ApplicationTemplatefunktionsfähig zu machen.
So gehen Sie vor:
Maschinenmodul in den MMT einbinden
1. Per Doppelklick im Gerätebaum öffnen: A10_MachineModuleTree
2. MMT (PRG) doppelklicken.
3. Im Dialogfenster Werkzeuge die Schaltfläche Baustein klicken.• Neuen FB per drag-and-drop erstellen.
• Im Bereich des FBs doppelklicken. Schaltfläche betätigen.
Mit der Eingabehilfe aus dem Element Application...• ...den FB MFB_Infeed zuweisen:
Application\A70_MachineModuleSources\MM_B01_Infeed• ...die Instanz MM_Dcl.B01_Infeed zuweisen:
Application\A55_VarLists\MM_Dcl
Hinweis: In der Eingabehilfe ist die Option Namensraum-Präfix einfügen beim Zuweisen des Instanznamens zu aktivieren.
Adressieren der Maschinenmodule im MMT
4. Im Dialogfenster Werkzeuge die Schaltfläche Eingang klicken.• Neuen Eingang bei MM_Address hinzufügen.• Relative Adresse (Beispiel: 1) zuweisen.
Die Schritte 3. und 4. sind für alle Maschinenmodule M 2...M 6 durchzuführen. Die Bausteine sind entsprechend der zuvor ermittelten Baumstruktur zu erstellen. Der MMT stellt die Baumstruktur um 90 Grad nach links gedreht dar. Jedem Baustein sind folgende Elemente zuzuweisen: • Der dazugehörige Funktionsbaustein,• Die Instanz des Bausteins,• Die relative Adresse.
Ein Automationssystem strukturieren: Beispiel Fliegende SägeMaschinenmodule erstellen und einbinden
146 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
5. Verbinden der Maschinenmodule im MMTAbarbeitungsreihenfolge der Maschinenmodule nach Datenfluss festlegen.Menübefehl: CFCAusführungsreihenfolgeNach Datenfluss anordnen
12.3.3 Modulapplikationen der Maschinenmodule verwalten
Modulapplikationen (MAPs), die Sie nicht benötigen, können Sie löschen. Voraussetzung dabei ist,dass eine MAP pro Maschinenmodul vorhanden ist.
[12-4] Beispiel: Modulapplikationen App1...App3 des Maschinensteuermoduls MM_MachineControl
So gehen Sie vor:
1. Nicht benötigte Modulapplikationen löschen.• Die nicht benötigten Unterordner sind im Gerätebaum aus dem Ordner des
Maschinenmoduls zu löschen, Beispiel: ModApp2, ModApp3.
• Rechtsklick auf den Unterordner Löschen.
2. Nicht benötigte Instanzen aus dem Deklarationsteil im MFB löschen.• Per Doppelklick das gewünschte MFB des Maschinenmoduls öffnen.• Nicht benötigte Instanzen aus dem Deklarationsteil löschen.
Hinweis!
Beim Löschen einer MAP ist zu beachten, dass die dazugehörigen Instanzen im jeweiligen MFB ebenfallszu löschen sind.
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 147
Ein Automationssystem strukturieren: Beispiel Fliegende SägeMaschinenmodule erstellen und einbinden
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
12.3.4 Achse in die Modulapplikation einfügen
Das Beispiel zeigt exemplarisch, wie Sie eine Achse an die ModulapplikationMAP_B01_Infeed_App1 anbinden.
So gehen Sie vor:
1. Per Doppelklick die Modulapplikation MAP_B01_Infeed_App1 öffnen.
2. Achse im Deklarationsteil einfügen:
• Im Programmteil dem Eingang Axis die Achse zuordnen:
Axis: AXIS_REF_SM3;
3. Für kontinuierliche Prozesse ist in der Modulapplikation MAP_B01_Infeed_App1 eine neue Aktion zu erstellen, Beispiel: Continuous:
• Die Aktion Continuous im Programmteil der Modulapplikation ergänzen:
• Im Programmteil der Aktion Continuous die Achse dem Baustein zuordnen:
Um alle Achsen einzubinden, sind diese Schritte in den MAPs von MM_B01_Infeed, MM_B02_Outfeed, MM_C01_Slide und MM_C02_Blade durchzuführen.
Ein Automationssystem strukturieren: Beispiel Fliegende SägeMaschinenmodule erstellen und einbinden
148 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
12.3.5 Modulapplikation den Tasks zuordnen
So gehen Sie vor:
1. Per Rechtsklick auf den Ordner A11_ModuleAppCalls den Befehl Create Task Call aufrufen.
2. Im folgenden Dialogfenster sind die Modulapplikation auswählen, die die Task aufrufen soll. Die jeweilige MAP mit <</>> der Task zuordnen/Zuordnung aufheben.
3. Per Doppelklick öffnen:
• Ordner A11_ModuleAppCalls
• Das Hauptprogramm MAC_Task_High der Task mit der höchsten Priorität.
4. Dem Baustein die Achse zuordnen IoConfig_Globals.SM_Drive_ETC_i700:
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 149
Ein Automationssystem strukturieren: Beispiel Fliegende SägeKommunikation zwischen den Master- und Slave-Modulen einrichten
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
12.4 Kommunikation zwischen den Master- und Slave-Modulen einrichten
Jedes Maschinenmodul besitzt einen Datencontainer, die ACD-Struktur MACD_sc<Modulname>.
• Über die ACD-Struktur sind Daten mit einem übergeordneten Maschinenmodul austauschbar.
• Das übergeordnete Master-Modul greift via POINTER und REFERENCE auf die ACD-Struktur zu.
Der folgende Abschnitt zeigt, wie ein Datenaustausch zwischen einem Master- und einem Slave-Module möglich ist.
So gehen Sie vor:
1. Per Doppelklick öffnen:
• A70_MachineModuleSources\MM_A01_MachineControl\ ModApp1
• Modulapplikation MAP_A01_MachineControl_App1
2. Im Deklarationsteil sind ein Pointer und eine Referenz auf die ACD-Struktur des Slaves zu deklarieren, der dem Maschinensteuermodul MachineControl untergeordnet ist:
Dieser Schritt ist für alle direkt untergeordneten Slave-Module des Master-Moduls MM_A01_MachineControl durchzuführen.In diesem Beispiel sind Pointer und Referenzen auf die Module Infeed, FlyingSaw und Outfeed zu deklarieren.
3. In allen Slave-Modulen ist der Zugriff auf die ACD-Struktur herzustellen.• Im Programmteil der Modulapplikation des jeweiligen Slave-Moduls ist die Methode
AccessACD() zum Zugriff auf die ACD-Struktur aufzurufen.• Dem Eingang MM_Address ist die relative Adresse des Maschinenmoduls zu übergeben,
auf dessen ACD-Struktur zuzugreifen ist. Die relativen Adressen der Maschinenmodule sind im Maschinenstrukturbaum sichtbar:
Ordner A10_MachineModuleTree\ MMT (PRG).
Ein Automationssystem strukturieren: Beispiel Fliegende SägeAnwendungsbeispiel: Die Visualisierung erweitern
150 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
• Dem Eingang dwSize ist die Größe der übergebenen Struktur zuzuweisen.
Dieser Schritt ist für alle Slave-Module des Master-Moduls MM_A01_MachineControl erforderlich, die diesem direkt untergeordnet sind.• In diesem Beispiel ist das Maschinenmodul MM_B02_FlyingSaw das übergeordnete
Mastermodul für die Slave-Module MM_C01_Slide und MM_C02_Blade.• Die Schritte 1. bis 3. sind für die Slave-Module MM_C01_Slide und MM_C02_Blade in der
Modulapplikation MAP_B02_FlyingSaw_App1 durchzuführen .
12.5 Anwendungsbeispiel: Die Visualisierung erweitern
Das ApplicationTemplate beinhaltet eine Visualisierung der Maschinenmodule. Der folgendeAbschnitt beschreibt, wie die Visualisierung individuell anzupassen ist.Die HauptvisualisierungL_Main erweitern: Visualisierung eines Maschinenmoduls
[12-5] Aufbau der Visualisierung im ApplicationTemplate
L_Main: Hauptvisualisierung zum zentralen BedienenKeys_Main/ Top_Master: Unterelemente der Visualisierung für Navigationselemente/Oberfläche.
Umschaltbarer Bereich: Visualisierungsseiten
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 151
Ein Automationssystem strukturieren: Beispiel Fliegende SägeAnwendungsbeispiel: Die Visualisierung erweitern
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Um die Visualisierung eines Maschinenmoduls in die Hauptvisualisierung L_Main einzufügen undsichtbar zu machen, sind an zwei Stellen Erweiterungen erforderlich.
1. In der Hauptvisualisierung L_Main: Auf der rechten Seite zeigen die Visualisierungsseiten im umschaltbaren Bereich folgende Informationen an: Modulliste, Fehlerliste, Visualisierung des ausgewählten Maschinenmoduls.Um die Visualisierung eines Moduls anzeigen zu können, ist diese in die Frame-Auswahl der Visualisierungsseite/umschaltbarer Bereich zu ergänzen.
2. In der Visualisierung Keys_Main: Um die Modulvisualisierung aufzurufen, ist eine Schaltfläche zu erzeugen.
So gehen Sie vor:
1. Visualisierung im Gerätebaum aufrufen:
Per Doppelklick öffnen: 20_Visualisation L_Main
2. Visualisierungs-Elementenliste öffnen:
• <Alt>+<F6> oder den Menübefehl Visualisierung Elementliste aufrufen.
• Auf der Registerkarte Elementliste die Visualisierung #0 Frame auswählen:
• Den Menübefehl VisualisierungFrame-Auswahl auswählen:
• Aus den verfügbaren Visualisierungen sind die Visualisierungen der zuvor erstellten Maschinenmodule auszuwählen, die im Visualisierungsframe referenziert sein sollen:
Die hier sichtbare Reihenfolge der ausgewählten Visualisierungen entspricht anschließend der Anordnungsreihenfolge der Schaltflächen/Steuerelemente.
Ein Automationssystem strukturieren: Beispiel Fliegende SägeAnwendungsbeispiel: Die Visualisierung erweitern
152 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
3. Im Dialogfenster Eigenschaften im Bereich References ist für jede einzelne Visualiserung die entsprechende Variable einzutragen.
4. Im Ordner .A71_LocalSources ist der Enumerations-Datentyp Vis_eFrame mit den zusätzlichen Modulvisualisierungen zu erweitern.
Hinweis: Die Reihenfolge der Visualisierungen in Vis_eFrame muss der Anordnungsreihenfolge in der Frameauswahl entsprechen (siehe Schritt 2.):
5. Schaltfläche zum Aufrufen der Modul-Visualisierung hinzufügen.
• Per Doppelklick öffnen: A11_Visualisation\SubVisu Keys_Main• Weitere Schaltfläche unterhalb der Schaltfläche Machine Control hinzufügen.• Die neue Schaltfläche entsprechend der zuvor zugewiesenen Modulnamen benennen,
Beispiel erste Schaltfläche: Infeed.
Die Schaltfläche konfigurieren: Farbwechsel bei Mausaktion
So gehen Sie vor:
1. Schaltfläche Infeed durch Klicken auf der Visualisierungsseite markieren.
2. Im Dialogfenster Eigenschaften im Bereich Eingabekonfiguration auf Konfigurieren klicken, um das Verhalten für OnMouseUp zu konfigurieren:
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 153
Ein Automationssystem strukturieren: Beispiel Fliegende SägeStatemachine/Zustandsmaschine
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
3. Im Dialogfenster Eingabekonfiguration ST-Code ausführen über die Pfeil-Schaltflächen einfügen.
4. Im Textfeld den Strukturierten Text(ST) eingeben, der auf die Mausaktion OnMouseUp auszuführen ist. Folgenden Wert eingeben:
MM_Vis.scVisuIntern.diFrame :=Vis_eFrame.MVis_Infeed;
5. Im Bereich Eigenschaften unter Color Variables der Schaltfläche für toggle color folgenden Wert eingeben:
MM_Vis.scVisuIntern.diFrame=Vis_eFrame.MVis_Infeed;
12.6 Statemachine/Zustandsmaschine
12.6.1 Zustandsübergang im Maschinensteuermodul steuern
Beispiel: Durch zwei Schaltflächen in der Visualisierung des Maschinensteuermoduls MachineControl sollen alle untergeordneten Maschinenmodule in den Zustand „Ready“ oder „Manual“versetzbar sein.
So gehen Sie vor:
1. Elemente für die Schaltflächen in der Struktur MVis_* deklarieren.
Per Doppelklick öffnen:
• A70_MachineModuleSources\ MM_A01_MachineControl\Structs
• Struktur MVis_scA01_MachineControl
Im Programmteil sind die Variablen des Datentyps BOOL für den Zustandswechsel zu deklarieren, Beispiel: xReady und xManual.
2. Schaltflächen in die Visualisierung einfügen.
Ein Automationssystem strukturieren: Beispiel Fliegende SägeStatemachine/Zustandsmaschine
154 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Per Doppelklick öffnen:
• A70_MachineModuleSources\ MM_A01_MachineControl\Visu
• Visualisierung MVis_A01_MachineControl• Im Dialogfenster Werkzeuge, Abschnitt Common Controls auswählen. Die Schaltflächen
in die Visualisierungsoberfläche einfügen:
3. Variablen zuweisen.
Im Dialogfenster Eigenschaften ist im Abschnitt Eingabekonfiguration\Tab\Variable die zuvor erstellte Variable xReady zuzuweisen.
• Struktur MVis_scA01_MachineControl
• Ort: Ordner A55_VarLists\MM_Vis
4. Im Dialogfenster Eigenschaften im Bereich Eingabekonfiguration auf Konfigurieren klicken, um das Verhalten für OnMouseUp zu konfigurieren:
5. Im Bereich Eigenschaften unter Color Variables der Schaltfläche für toggle color die Variable
aus der Struktur MVis_scA01_MachineControl zuweisen:
6. Programmzeile in der Aktion S02_Ready im Steuermodul Machine Control ergänzen:
Die Schritte 3. bis 6. sind entsprechend für die Schaltfläche Manual durchzuführen.
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 155
Ein Automationssystem strukturieren: Beispiel Fliegende SägeStatemachine/Zustandsmaschine
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
12.6.2 Zustandsübergänge in den Slave-Modulen steuern
Mit den zuvor erstellten Schaltflächen ist ein Wechsel zwischen den Zuständen Ready und Manualmöglich.
Wird über die Schaltfläche Manual der dazugehörige Zustand angefordert, dann sollen dieuntergeordneten Maschinenmodule automatisch die angeschlossenen Achsen freigeben.Erst nachFreigabe der Achsen sollen die unterlagten Module in den Zustand Manual wechseln.
Wird über die Schaltfläche Ready der dazugehörige Zustand angefordert, dann sollen dieunterlagerten Module automatisch die Achsen sperren. Erst nach dem Sperren der Achsen sollen dieModule in den Zustand Ready wechseln.
Das folgende Beispiel zeigt exemplarisch, wie ein Zustandsübergang mit dem MaschinenmodulMM_B01_Infeed steuerbar ist.
So gehen Sie vor:
1. Zustand "Ready" ansteuern.
Per Doppelklick öffnen:
• A70_MachineModuleSources\MM_B01_Infeed\ModApp1
• Unterordner mit den Zustandsaktionen: Map_B01_Infeed_App1 (FB)\States.
• S02_READY.
2. Programmzeilen in der Aktion S02_READY ergänzen:
3. Zustand "Manual" ansteuern.
• Per Doppelklick S03_MANUAL öffnen.
• Programmzeilen in der Aktion S03_MANUAL ergänzen:
Ein Automationssystem strukturieren: Beispiel Fliegende SägeHandfahren der Achsen
156 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
12.7 Handfahren der Achsen
Mit der Visualisierung des Maschinenmoduls MM_Infeed soll das Handfahren der Achse möglichsein. Das folgende Beispiel zeigt, wie zwei Schaltflächen zum positiven und negativen Handfahrenin die Visualisierung des Maschinenmoduls Infeed einzufügen sind.
So gehen Sie vor:
1. Elemente für die Struktur MVis_xxx deklarieren.
Per Doppelklick öffnen:
• A70_MachineModuleSources\MM_B01_MachineModuleSources\MM_B01_Infeed\Structs
• Struktur MVis_scB01_Infeed
Im Programmteil zwei Variablen zum positiven/negativen Handfahren deklarieren:
2. Schaltflächen in die Visualisierung einfügen.
Per Doppelklick öffnen:
• A70_MachineModuleSources\ MM_B01_Infeed\Visu
• Visualisierung MVis_B01_Infeed
Im Dialogfenster Werkzeuge, Abschnitt Common Controls auswählen. Die Schaltflächen in die Visualisierungsoberfläche einfügen:
3. Variablen zuweisen.• Im Dialogfenster Eigenschaften ist im Abschnitt Eingabekonfiguration\Tab\Variable die
Variable aus der Struktur MVis_scB01_Infeed zuzuweisen.• Im Bereich Eigenschaften ist unter Color Variables für toggle color die Variable aus der
Struktur MVis_scB01_Infeed zuzuweisen.
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 157
Ein Automationssystem strukturieren: Beispiel Fliegende SägeErrorhandling: Fehlerverhalten konfigurieren
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Dem Baustein AxisBasicControl sind die Variablen zuzuweisen.• Ort:
Modulapplikation MAP_B01_Infeed_App1\Aktion S00_CYCLIC• Die Variablen sind mit den Eingängen xJoggingPos und xJoggingNeg von
AxisBasicControl zu verschalten.• Dem Funktionsbaustein L_SMC_AxisBasicControl die Werte für Geschwindigkeit,
Beschleunigung, Verzögerung zuweisen:
Die Zuweisungen für die Variablen müssen vor dem Aufruf der Bausteininstanz stehen. Stehen die Zuweisungen dahinter, sind diese erst ab dem darauffolgenden Zyklus wirksam.
12.8 Errorhandling: Fehlerverhalten konfigurieren
In diesem Beispiel ist die Freigabe der Achsen beim Zustandswechsel zu überwachen. DasErrorhandling soll einen Fehler auslösen, wenn die Achsen nicht innerhalb von 200 ms freigegebensind.
• Die Achsen sind dazu über den Hardware-Eingang zu sperren.
• Der Fehler und die Fehleraktion sollen in der Visualisierung erkennbar und kontrollierbar sein.
• Das Quittieren des Fehlers soll über eine Schaltfläche in der Visualisierung möglich sein.
Das folgende Beispiel zeigt exemplarisch, wie das gewünschte Fehlerverhalten im MaschinenmodulMM_B01_Infeed konfigurierbar ist.
So gehen Sie vor:
1. Variablen in der Struktur Mvis_* deklarieren.
Per Doppelklick öffnen:
• A70_MachineModuleSources\ MM_B01_Infeed
• Struktur MVis_scB01_Infeed
In der Struktur eine Variable des Datentyps BOOL zum Quittieren des Fehlers deklarieren, Beispiel: xQuit.
2. Schaltflächen in die Visualisierung einfügen.
Ein Automationssystem strukturieren: Beispiel Fliegende SägeErrorhandling: Fehlerverhalten konfigurieren
158 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Per Doppelklick öffnen:
• A70_MachineModuleSources\ MM_B01_Infeed\Visu
• Visualisierung MVis_B01_Infeed
Im Dialogfenster Werkzeuge, Abschnitt Common Controls auswählen. Die Schaltfläche Error Quit in die Visualisierungsoberfläche einfügen:
3. Variablen zuweisen: Visualisierung und Modulapplikation• Auf die zuvor erstellte Schaltfläche klicken.• Im Dialogfenster Eigenschaften ist im Abschnitt Eingabekonfiguration\Tab\Variable die
Variable Infeed.xQuit aus der Struktur MVis_scB01_Infeed zuzuweisen.
Die Variable ist im Ordner A55_VarLists\MM_Vis deklariert.• Im Bereich Eigenschaften ist unter Color Variables für toggle color die gleiche Variable
zuzuweisen.
Per Doppelklick öffnen:
• Ordner A70_MachineModuleSources\ MM_B01_Infeed\ModApp1
• Modulapplikation MAP_B01_Infeed_App1, Aktion Continuous
Die Variable Infeed.xQuit ist dem Funktionsbaustein L_SMC_AxisBasicControl zuzuordnen.
4. Fehler definieren.
Per Doppelklick öffnen:
• Ordner A70_MachineModuleSources\ MM_B01_Infeed\ModApp1\BasicFunctions
• Modulapplikation MAP_B01_Infeed_App1, Methode SetErrors
Am Baustein ErrorsA sind die gewünschte Eigenschaft des Fehlers zu definieren:
5. Timer in der Modulapplikation deklarieren und aufrufen.
Per Doppelklick öffnen:
• Ordner A70_MachineModuleSources\ MM_B01_Infeed\ModApp1
• Modulapplikation MAP_B01_Infeed_App1
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 159
Ein Automationssystem strukturieren: Beispiel Fliegende SägeErrorhandling: Fehlerverhalten konfigurieren
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Im Deklarationsabschnitt der MAP den Timer einfügen:
Per Doppelklick öffnen:
• Ordner A70_MachineModuleSources\ MM_B01_Infeed\ModApp1
• Modulapplikation MAP_B01_Infeed_App1
Den Timer aufrufen, Verzögerungszeit: 200 ms
6. Errorhandling programmieren.
Programmzeile hinzufügen:
Per Doppelklick öffnen:
• Ordner A70_MachineModuleSources\ MM_B01_Infeed\ModApp1\Map_B01_Infeed_App1 (FB)\States
• Aktion S02_Ready
Programmzeile in die Aktion Continuous einfügen:
Per Doppelklick öffnen:
• Ordner A70_MachineModuleSources\ MM_B01_Infeed\ModApp1\Map_B01_Infeed_App1 (FB)\States
• Aktion S03_Manual
Programmzeile in die Aktion Continuous einfügen:
Per Doppelklick öffnen:
• Ordner A70_MachineModuleSources\ MM_B01_Infeed\ModApp1\Map_B01_Infeed_App1 (FB)\States
• Aktion S10_Fault
Ein Automationssystem strukturieren: Beispiel Fliegende SägeErrorhandling: Fehlerverhalten konfigurieren
160 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Programmzeile in die Aktion Continuous einfügen:
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 161
Das Beispielprojekt "ApplicationTemplateCounter"
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
13 Das Beispielprojekt "ApplicationTemplateCounter"
Das ApplicationTemplateCounter ist ein Beispielprojekt auf Basis des ApplicationTemplate mit zweieingebundenen Maschinenmodulen. Die Visualisierung veranschaulicht die Kommunikation zwi-schen den Maschinenmodulen.
Die Bedienoberfläche der Visualisierung gliedert sich in folgende Bereiche:
Was bewirkt das Beispielprogramm im ApplicationTemplateCounter?
• Das Zählerbeispiel veranschaulicht, dass die Maschinenmodule (MM_Module1/MM_Module2) abhängig vom vorgebenen Zustand arbeiten.
• Die Visualisierung veranschaulicht die Kommunikation zwischen den Maschinenmodulen durch die ACD-Struktur.
• Der Bereich visualisiert die Kommunikation zwischen den einzelnen Maschinenmodulen.
• In diesem Bereich ist die Demo-Visualisierung der Beispielprogramme dargestellt.
Maschinenmodul/Zustand Funktion
MM_Module1
Automatic Inkrementieren (50 Einheiten pro Sekunde)
Mode1 Dekrementieren (zehn Einheiten pro Sekunde)
Service Wert 123 laden
Fault Aktuellen Wert auf null setzen.
Systemfault Aktuellen Wert auf null setzen.
MM_Module2
Automatic Inkrementieren (20 Einheiten pro Sekunde)
Mode1 Inkrementieren (Einer-Schritte bis 800000)
Mode2 Dekrementieren (Fünf Einheiten pro Sekunde)• In "Mode2" von Modul 2 sind die Daten gesichert/ungesichert (Datenkon-
sistenz) übertragbar.L_EATP_CriticalSection ( 125)L_EATP_ErrorListHandler ( 126)
Service Wert 456 laden
Fault Aktuellen Wert auf null setzen.
Systemfault Aktuellen Wert auf null setzen.
MM_Machine Den Wert von Modul 1 mit dem Wert von Modul 2 addieren:<Wert Module1> + <Wert Module2>
Den Wert von Modul 2 vom Wert von Modul 1 subtrahieren:<Wert Module1> - <Wert Module2>
Das Beispielprojekt "ApplicationTemplateCounter"Beispielprogramme im Maschinenmodul MM_Module1/MM_Module2
162 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
13.1 Beispielprogramme im Maschinenmodul MM_Module1/MM_Module2
Die jeweilige Modulapplikation ruft die Zustandsmaschine auf.
• Beispiel: Beim Maschinenmodul MM_Module1 ruft die Modulapplikation
MAP_Module1_App1 die Zustandsmaschine auf.
[13-1] Beispiel: Modulapplikation MAP_Module1_App1 (Maschinenmodul MM_Module1)
13.1.1 Zustand "Automatic"
[13-2] Beispiel: Zustand "Automatic" von MM_Module1
Bei aktiviertem Zustand "Automatic" ruft die Methode SMDispatcher die Aktion
S05_AUTOMATIC“ auf:
• MM_Module1: „Inkrementieren um 50 Einheiten pro Sekunde“. Dabei ist der Timer
„tonParam.Q“ im dazugehörigen Maschinenmodul MAP_Module1_App1 aktiviert.
: Timer für Mode1/Automatic-Mode: Methodenaufruf. Statemachine(): Stati anzeigen/SMDispatcherCaller(): Aktionen aufrufen (je nach Zustand): Externe Visualisierung einbinden: Methode SetErrors()/Fehlerbehandlung (Errorhandling) aufrufen
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 163
Das Beispielprojekt "ApplicationTemplateCounter"Beispielprogramme im Maschinenmodul MM_Module1/MM_Module2
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
• MM_Module2: „Inkrementieren um 20 Einheiten pro Sekunde“. Dabei ist der Timer „ton20Hz“
im dazugehörigen Maschinenmodul MAP_Module2_App1 aktiviert.
13.1.2 Zustand "Mode1"
[13-3] Beispiel: Die Aktion S06_MODE1 von MM_Module1
Bei aktiviertem Zustand „Mode1" ruft die Methode SMDispatcher die Aktion S06_MODE1auf: "Dekrementieren um zehn Einheiten pro Sekunde“. Der Timer „ton10Hz“ ist im dazugehörigen
Maschinenmodul MAP_Module1_App1 aktiviert.
• MM_Module2: Der Timer „ton10Hz“ ist im dazugehörigen Maschinenmodul
MAP_Module2_App1 aktiviert.
13.1.3 Zustand "Mode2"
Bei aktiviertem "Mode2" ruft die Aktion S07_MODE2 auf: "Dekrementieren um fünf Einheitenpro Sekunde".
• MM_Module2: Der Timer „ton5Hz“ ist im dazugehörigen Maschinenmodul
MAP_Module2_App1 aktiviert.
13.1.4 Zustand "Service"
[13-4] Beispiel: Die Aktion S04_SERVICE on MM_Module1
Bei aktiviertem Zustand „Service“ ruft die Methode SMDispatcher die Aktion S04_SERVICEaus:
• MM_Module1: „Wert 123 laden“.
• MM_Module2: „Wert 456 laden“.
Das Beispielprojekt "ApplicationTemplateCounter"Beispielprogramm Maschinenmodul MM_Machine
164 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
13.1.5 Zustand "Fault"/"Systemfault"
[13-5] Beispiel: Die Aktion S10_FAULT
Bei aktiviertem Zustand „Fault“/"Systemfault" ruft die Methode SMDispatcher jeweils die
Aktion S10_FAULT/ S11_SYSTEMFAULT auf.
• Die Aktionen S10_FAULT/ S10_SYSTEMFAULT beinhalten die Funktion „Aktuellen Wert auf null setzen“.
13.2 Beispielprogramm Maschinenmodul MM_Machine
Die Modulapplikation MAP_Machine_App1 des Maschinenmoduls MM_Machine beinhaltetfolgende Funktionen:
• Den Wert von Modul 1 mit dem Wert von Modul 2 addieren:<Wert Module1> + <Wert Module2>
• Den Wert von Modul 2 vom Wert von Modul 1 subtrahieren:<Wert Module1> - <Wert Module2>
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 165
Das Beispielprojekt "ApplicationTemplateCounter"Simulation im ApplicationTemplateCounter
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
13.3 Simulation im ApplicationTemplateCounter
So deaktivieren Sie die "Watchdog"-Überwachung:
1. In der Geräte-Ansicht den Ordner A90_Resources doppelklicken.
• Taskkonfiguration TaskHighPriority doppelklicken.• Auf der Registerkarte Konfiguration den Watchdog durch Entfernen des Häkchens
deaktivieren:
• Taskkonfiguration TaskMidPriority doppelklicken.• Auf der Registerkarte Konfiguration die Option Watchdog durch Entfernen des
Häkchens deaktivieren:
Hinweis!
Um den Simulationsmodus im "ApplicationTemplateCounter" zu verwenden, muss die "Watchdog"-Überwachung deaktiviert sein (entspricht der Standardeinstellung im ApplicationTemplate).Eine aktivierte "Watchdog"-Überwachung führt zu einer Fehlermeldung, so dass der Simulationsmodus nicht aktivierbar ist.
AnhangMethoden-Übersicht - ApplicationTemplate
166 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
14 Anhang
14.1 Methoden-Übersicht - ApplicationTemplate
14.1.1 Auf die Zustandsmaschine zugreifen - Die Methoden des BaseChannels
Bezeichner/Funktion Übergabewert/Datentyp Beschreibung
Werte lesen
baseChannelGetActualStateErmittelt den aktuellen Zustand der Statemachine für das untergeordnete Slave-Modul/für das eigene Maschinenmodul.
MM_AddressL_EATP_MM_Address
• Adresse des Moduls, dessen aktueller Zustand anzufragen ist.
• Der Wert "0" sowie die Konstante L_EATP_CONST.OWNID adressieren die moduleigene ID.
Rückgabewert/Datentyp
L_EATP_SMStates • Aktueller Zustand des angefragten Maschinenmoduls
baseChannelGetErrorInformationLiest die Fehlerinformation aus, der die höchste Priorität zugewiesen ist. Fehlerquellen können sein:
• Moduleigene Applikation(MAP).• Untergeordnetes Slave-
Maschinenmodul.
Eingang • Adresse des Moduls, dessen aktueller Zustand anzufragen ist.
• Der Wert "0" sowie die Konstante L_EATP_CONST.OWNID adressieren die moduleigene ID.
MM_AddressL_EATP_MM_Address
Rückgabewerte/Datentyp
dwActPriorityDWORD
Aktuelle Fehlerinformationen:• Priorität,• Fehlernummer,• Fehlerreaktionstyp,• Quittierverhalten,• Fehlertexte,• Fehlerdetails.
wActErrCodeWORD
eActReactionL_EATP_ErrorReactionType
xAckNeededBOOL
sActTextSTRING
dwActErrDetailDWORD
baseChannelGetNominalState• Ermittelt den Soll-Zustand der
Zustandsmaschine des angefragten Maschinenmoduls/des eigenen Moduls
MM_AddressL_EATP_MM_Address
• Relative Adresse des Moduls, dessen aktueller Zustand anzufragen ist.
• Der Wert "0" sowie die Konstante L_EATP_CONST.OWNID adressieren die moduleigene Adresse.
Rückgabewert/Datentyp
L_EATP_SMStates • Soll-Zustand des angefragten Maschinenmoduls
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 167
AnhangMethoden-Übersicht - ApplicationTemplate
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
baseChannelGetNominalStateFromMaster
• Ermittelt den vom Master-Modul angeforderten Soll-Zustand des eigenen Moduls
Hinweis: Die Verwendung dieser Methode ist nur bei aktivierter Funktion DisableDefaultCouplingSlave sinnvoll.
• In allen anderen Fällen liefert die Methode das gleiche Ergebnis wie der Aufruf baseChannelGetNominalState(L_EATP_CONST.OWNID).
- -
Rückgabewert/Datentyp
L_EATP_SMStates • Soll-Zustand des angefragten Maschinenmoduls
baseChannelGetWarningErmittelt, ob eine Warning bei einem Slave-Maschinenmodul/des eigenen Moduls aktiv ist.
MM_AddressBOOL
ID des Moduls, dessen aktueller Zustand anzufragen ist.
• TRUE: Warnung ist aktiv• FALSE: Warnung ist inaktiv
Werte schreiben
baseChannelSetNominalState• Setzt den Soll-Zustand der
Zustandsmaschine bei einem Slave-Modul/dem eigenen Modul.
Hinweis: Diese Methode hat nur dann eine Funktion, wenn die Funktion DisableDefaultCouplingSlave (Soll-Zustand beim eigenen Modul) oder DisableDefaultCouplingMaster (Soll-Zustand bei einem Slave-Modul) aktiviert ist.
MM_AddressL_EATP_MM_Address
• ID des Moduls, dessen aktueller Zustand anzufragen ist.
• Der Wert "0" sowie die Konstante L_EATP_CONST.OWNID adressieren die moduleigene ID.
eStateL_EATP_SMStates
• Zu setzender Soll-Zustand.
baseChannelSetErrorQuit• Setzt das Fehlerquittierungsbit
bei einem Slave-Modul/beim eigenen Modul.
Hinweis: Diese Methode funktioniert nur bei aktiviertem Fehlerquittieren des eigenen Moduls/des Masters (DisableDefaultCouplingSlave/DisableDefaultCouplingMaster aktiv).
MM_AddressL_EATP_MM_Address
• ID des Moduls, dessen aktueller Zustand anzufragen ist.
• Der Wert "0" sowie die Konstante L_EATP_CONST.OWNID adressieren die moduleigene ID.
xValueBOOL
• TRUE: Fehlerquittieren ist aktiv• FALSE: Fehlerquittieren ist inaktiv
Bezeichner/Funktion Übergabewert/Datentyp Beschreibung
AnhangMethoden-Übersicht - ApplicationTemplate
168 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
14.1.2 Moduleigene Zustandsübergange sperren/freigeben
14.1.3 Quickstop/Schnellhalt-Verhalten der Statemachine aktivieren/deaktivieren
Bezeichner/Funktion Übergabewert/Datentyp Beschreibung
SMDisableAutomaticToReady• Steuert den Zustandsübergang
"Automatic" "Ready"
xValueBOOL
• TRUE: Zustandsübergang sperren.• FALSE: Zustandsübergang
freigeben.
SMDisableReadyToAutomatic• Steuert den Zustandsübergang
"Ready""Automatic"
xValueBOOL
SMDisableReadyToManual• Steuert den Zustandsübergang
"Ready""Manual"
xValueBOOL
SMDisableReadyToMode1• Steuert den Zustandsübergang
"Ready""Mode1"
xValueBOOL
SMDisableReadyToMode2• Steuert den Zustandsübergang
"Ready""Mode2"
xValueBOOL
SMDisableReadyToHoming• Steuert den Zustandsübergang
"Ready""Homing"
xValueBOOL
SMDisableReadyToService• Steuert den Zustandsübergang
"Ready""Service"
xValueBOOL
SMDisableManualToReady• Steuert den Zustandsübergang
"Manual""Ready"
xValueBOOL
SMDisableMode1ToReady• Steuert den Zustandsübergang
"Mode1""Ready"
xValueBOOL
SMDisableMode2ToReady• Steuert den Zustandsübergang
"Mode2""Ready"
xValueBOOL
SMDisableHomingToReady• Steuert den Zustandsübergang
"Homing""Ready"
xValueBOOL
SMDisableServiceToReady• Steuert den Zustandsübergang
"Service""Ready"
xValueBOOL
SMEnableInitToReady• Steuert den Zustandsübergang
"Init""Ready"
xValueBOOL
Bezeichner/Funktion Übergabewert/Datentyp Beschreibung
Automatisches Quickstop-Verhalten der Statemachine aktivieren/deaktivieren
baseChannelDisableQSPFollowing Eingang • TRUE: Automatisches Quickstopverhalten der Statemachine aktivieren.
• FALSE: : Automatisches Quickstopverhalten der Statemachine deaktivieren.
MM_AddressL_EATP_MM_Address
xValueBOOL
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 169
AnhangTipps&Tricks
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
14.1.4 Standardkopplung ("DefaultCoupling") aktivieren/deaktivieren
14.2 Tipps&Tricks
14.2.1 Ein Maschinenmodul umbenennen
Um den Modulnamen zu ändern, sind folgende Schritte zu beachten.
• Beispiel: Folgende Modulnamen sind zu ändern:
1. "Module1""VirtualMaster"
2. "Module2""Transport2"
So gehen Sie vor:
1. Die globale Variablenliste im Ordner A55_VarLists aufrufen. Die Abbildung zeigt die textuelle Darstellung der Variablenliste.
• Maschinenmodule ( MFB_xxx) instanziieren. • Die Instanznamen umbenennen:
"Module1""VirtualMaster"
"Module2""Transport2"
2. Im Ordner A10_MachineModule sind die Instanznamen im Maschinenmodulbaum (MMT) entsprechend umzubenennen (Beispiel: ApplicationTemplateCounter):
Bezeichner/Funktion Übergabewert/Datentyp Beschreibung
Entkoppeln von der Statemachine aktivieren/deaktivieren: Maschinensteuermoduls/Mastermodul
SMDisableDefaultCouplingMasterEntkoppeln des Maschinensteuermoduls von der Statemachine.
xValueBOOL
• TRUE: Entkoppeln des Masters deaktivieren
• FALSE: Entkoppeln des Masters aktivieren
Entkoppeln von der Statemachine aktivieren/deaktivieren: Maschinensteuermoduls/Mastermodul
SMDisableDefaultCouplingSlaveAktiviert/Deaktiviert das Entkoppeln eines untergeordneten Slave-Moduls von der Statemachine.
xValueBOOL
• TRUE: Entkoppeln des Slave-Moduls aktivieren.
• FALSE: Entkoppeln des Slaves deaktivieren.
AnhangTipps&Tricks
170 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
3. Im Ordner A11_ModuleAppCalls sind die Instanznamen in jedem Taskaufruf umzubenennen.
• Beispiel: MAC_Task_high
4. Die geänderten Modulnamen sind anschließend in der Machine Module List sichtbar.
• Ordner A20_Visualisation L_Main, Schaltfläche M.-Modules klicken
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 171
AnhangTipps&Tricks
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
14.2.2 Weiteres Vorgehen: Schaltflächen der Visualisierung umbenennen
Um die Schaltflächen der Visualisierung umzubennen, sind folgende Schritte auszuführen.
So gehen Sie vor:
1. Folgende Visualisierung aufrufen: Ordner A20_Visualisation Keys_Main
• Durch das Ändern der Instanznamen sind die Variablenzuordnungen passend zu
aktualisieren. In der Visualisierung Keys_Main den Bereich MM_Machine anklicken.
2. Unter AnsichtElementeigenschaften die Instanznamen den zu referenzierenden
Visualisierungen zuordnen:
3. Schaltflächen umbenennen:
• Die gewünschte Schaltfläche doppelklicken, gewünschten Namen vergeben.• Alternativ sind die Bezeichnungen der Schaltfächen unter
AnsichtElementeigenschaftenTexte editierbar.
4. Das Projekt...• ...bereinigen: ErstellenBereinigen
• ...übersetzen: Erstellen Übersetzen (F11)
5. Nach erfolgreichem Kompilier-Vorgang ist die Visualisierung funktionsfähig.
AnhangTipps&Tricks
172 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
14.2.3 Rezepturverwalter
Allgemeine Informationen zum Rezepturverwalter finden Sie im »PLC Designer«.
Dieser Abschnitt erhält weiterführende Informationen über...
• ...das Erstellen von Rezepturen
• ...das Verwalten von Rezepturen via Kommandos: RecipeManCommands
Der Rezepturverwalter ermöglicht das Erstellen und Verwalten von Rezepturen.
• Rezepturdefinitionen sind benutzerdefinierbare Variablenlisten.
• Rezepturen sind vom Controller lesbar/auf der Steuerung archivierbar.
Rezepturen archivieren
Alle Rezepturen, die in der Rezeptdefinition vorhanden sind, sind in jeweils separaten Dateien(flüchtig auf dem Controller) gespeichert.
• Die auf dem Controller vorhandenen Rezeptur-Dateien sind beispielsweise auf die Festplatte des Engineering PCs übertragbar.
So gehen Sie vor:
1. In der Geräte-Ansicht auf die gewünschte Achse klicken.
2. Die dazugehörige Registerkarte Dateien klicken:
3. Schaltfläche klicken, um die Daten des Controllers anzuzeigen.
• Gewünschte Rezepturdatei ( *.txtrecipe) selektieren
• Durch Klicken der Pfeiltaste die markierte Datei in den Zielort zu übertragen (Um die
Rezepturdatei auf den Engineering PC zu übertragen, ist im Bereich zur lokalen Festplatte des Engineering PCs zu navigieren).
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 173
AnhangTipps&Tricks
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
14.2.4 Voraussetzung
• Jedes Maschinenmodul hat ein Interface MPar_sc<M-Identifikator>, das die Parameter für das entsprechende MaschinenModul enthält.
• Jedes Maschinenmodul-Interface ist global unter MM_Par im Ordner A55_VarLists zu instanziieren:
14.2.5 Rezepturdefinition erstellen
Mit Hilfe des Rezepturverwalters sind verschiedene Rezepturdefinitionen innerhalb eines Projektesaktiv verwendbar.
So gehen Sie vor:
1. Im Ordner A90_Resources den Rezepturverwalter aufrufen:
• Verwenden Sie dieses Dialogfenster, um eine Rezepturdefinitionen zu erstellen/zu speichern.
2. Per Rechtsklick auf Rezepturverwalter Im Ordner A90_Resourcesfolgenden Befehl ausführen:
Objekt hinzufügen Rezepturdefinition
AnhangTipps&Tricks
174 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
• Den gewünschten Namen vergeben:
• Schaltfläche Öffnen klicken, um die Rezepturdefinition einzufügen.
• Ergebnis: Die Rezepturdefinition ist im Ordner A90_Resources eingefügt:
14.2.6 Rezepturdefinition - Variablen zuweisen
Einer neu erstellten Rezepturdefinition sind die entsprechenden Variablen mit Hilfe derEingabehilfe zuzuweisen.
So gehen Sie vor:
1. Die gewünschte Rezepturdefinition doppelklicken (Beispiel: MM_Par_Modul1)
2. Auf der Registerkarte der Rezepturdefinition (Beispiel: MM_Par_Modul1) in der Spalte Variable doppelklicken:
• Schaltfläche klicken, um die Eingabehilfe zu starten.
3. Mit der Eingabehilfe sind die Variablen des Maschinenmoduls der Rezepturdefinition zuzuweisen:
• Eingabe durch OK betätigen
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 175
AnhangTipps&Tricks
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
• Die zugewiesenen Variablen sind auf der Registerkarte der Rezepturdefinition sichtbar:
• Nach dem "Einloggen" sind die Daten der PLC-Variablen unter verfügbar.
14.2.7 Rezepturen in eine Rezepturdefinition einfügen
So gehen Sie vor:
1. Rezeptur in die Rezepturdefinition (Beispiel: MM_Par_Modul1) einfügen:
Rechtsklick Rezeptur einfügen:
• Gewünschten Namen vergeben.• Unter "Kopieren von:" sind die bereits vorhandenen Rezepturen auswählbar.• OK klicken, um die Rezeptur einzufügen.• Ergebnis: Die eingefügte Rezeptur (Beispiel: Rezeptur1) ist als weitere Spalte in der
Rezepturdefinition sichtbar. Weisen Sie die gewünschten Werte in der Spalte der Rezeptur zu.
Über RecipeManCommands sind weitere Rezepturen aus dem PLC-Programm heraus zu verwalten.
AnhangTipps&Tricks
176 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
14.2.8 Rezepturen verwalten mit RecipeManCommands
Dieser Abschnitt erhält Informationen zum Erstellen von Rezepturen durch Verwenden derRecipeManCommands. Um eine Rezeptur zu erstellen, ist die er Name der vorhandenenRezepturdefinition (RecipeDef) anzugeben.
[14-1] Beispiel: Rezepturdefinition MM_Par_Modul1
14.2.8.1 Create Recipe
• ...erstellt eine neue (leere) Rezeptur .
[14-2] Programmbeispiel: Die Rezeptur "Rezeptur1" in der Rezepturdefiniton MM_Par_Modul1 erstellen
Ergebnis: Auf dem Controller sind anschließend folgende Dateien verfügbar:
• Der Rezepturverwalter hat die Rezeptur "Rezept1" (Datei: Rezept1.MM_Par_Modul1.txtrecipe) erstellt.
• Beim Aufruf des Kommandos CreateRecipe ist der passende Name der Rezepturdefinition (RecipeDef) anzugeben, Beispiel: MM_Par_Modul1
VAR _RecipeManCommands : RecipeManCommands; _stRecipeDef : STRING := 'MM_Par_Modul1'; [Name der Rezepturdefinition] _stRecipe3 : STRING := 'Rezept1';END_VAR
_RecipeManCommands.CreateRecipe(_stRecipeDef,_stRecipe3);
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 177
AnhangTipps&Tricks
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
14.2.8.2 ReadAndSaveRecipeAs
...überträgt die aktuellen PLC-Werte in die angegebene Rezeptur/Datei.
[14-3] Programmbeispiel: Die aktuellen PLC-Werte in die Rezeptur/Datei "Rezept_2011_10_01.txtrecipe"/"Rezeptur2" übertragen.
Ausgangssituation - Rezepturdefinition MM_Par_Modul1:
Ergebnis:
VAR _RecipeManCommands : RecipeManCommands; _stRecipeDef : STRING := 'MM_Par_Modul1'; [Name der Rezepturdefinition]
_stRecipe2 : STRING := 'Rezept2'; [Name der Rezeptur] _stFileName1: STRING := 'Rezept_2011_10_01.txtrecipe';END_VAR
MM_Par.scModule1.lrVel := 22;MM_Par.scModule1.lrAcc := 12;MM_Par.scModule1.lrDec := 13;_RecipeManCommands.ReadAndSaveRecipeAs(_stRecipeDef,_stRecipe2,_stFileName1);
• Spalte zeigt die aktuellen PLC-Werte an.
• Spalte zeigt die Rezeptur an ("Rezept1")
• Die Rezeptur/Datei "Rezept_2011_10_01.txtrecipe" ist auf dem Controller angelegt.
[14-4] Beispielausgabe Datei/Rezeptur "MM_Par_Modul1/"Rezeptur2"
• Die aktuellen PLC-Werte sind in der Rezeptur/der Datei sichtbar.
AnhangTipps&Tricks
178 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
14.2.8.3 LoadFromAndWriteRecipe
...lädt die Rezeptur aus der angegebenen Datei in das "_stRecipe2" und
...schreibt die Rezeptur auf die aktuellen PLC-Werte
[14-5] Beispiel: Ansicht des Programms
Ausgangssituation:
Ergebnis:
Die Werte der Rezeptur(datei) "Rezept_2011_10_01.txtrecipe" sind...
VAR _RecipeManCommands : RecipeManCommands; _stRecipeDef : STRING := 'MM_Par_Modul1'; [Name der Rezepturdefinition] _stRecipe1: STRING := 'Rezept1'; _stRecipe2: STRING := 'Rezept2'; _stRecipe3: STRING := 'Rezept3'; _stFileName1: STRING := 'Rezept2011_11_01.txtrecipe'; _stFileName3: STRING := 'Rezept3. MM_Par_Modul1.txtrecipe';END_VAR
MM_Par.Par_Printer.lrPar1:=325.68;MM_Par.Par_Printer.wPar4:= 375;_RecipeManCommands.LoadFromAndWriteRecipe(_stRecipeDef,_stRecipe2,_stFileName1);
• Die (zu übertragenden) Werte der Rezepturdefinition "Rezept_2011_10_01.txtrecipe".
• ...in die aktuellen PLC-Werte (Spalte ) übertragen.
• ...in die Rezeptur(datei) "Rezept3.MM_Par_Modul1.txtrecipe" übertragen.
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 179
AnhangTipps&Tricks
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
14.2.8.4 WriteRecipe
...schreibt die Werte einer Rezeptur in die PLC-Variablen.
[14-6] Beispiel: Ansicht des Programms
Ausgangssituation:
Ergebnis:
Die Werte der Rezeptur(datei) "Rezept2_MM_Par_Modul1.txtrecipe" sind...
VAR _RecipeManCommands : RecipeManCommands; _stRecipeDef : STRING := 'MM_Par_Modul1'; [Name der Rezepturdefinition] _stRecipe2 : STRING := 'Rezept2';END_VAR
_RecipeManCommands.WriteRecipe(_stRecipeDef,_stRecipe2);
• Die (zu übertragenden) Werte der Rezepturdatei "Rezept2.MM_Par_Modul1.txtrecipe".
• ...in die Werte von MFB_Module1 übertragen.
• ...in die aktuellen PLC-Werte (Spalte ) übertragen.
AnhangTipps&Tricks
180 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
14.2.8.5 ReadRecipe
...überträgt die aktuellen PLC-Variablenwerte in eine ausgewählte Rezeptur.
[14-7] Beispiel: Ansicht des Programms
VAR _RecipeManCommands : RecipeManCommands; _stRecipeDef : STRING := 'MM_Par_Modul1'; [Name der Rezepturdefinition] _stRecipe2: STRING := 'Rezeptur2';END_VAR
_RecipeManCommands.ReadRecipe(_stRecipeDef,_stRecipe2);
• Die aktuellen PLC-Werte sind...
• ...in Spalte sichtbar.
• ...in der Rezeptur(datei)"Rezept.MM_Par_Modul1.txtrecipe" sichtbar.
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 181
AnhangTipps&Tricks
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
14.2.8.6 GetRecipeCount
...gibt die Anzahl der Rezepturen innerhalb der Rezepturdefinition aus.
[14-8] Beispiel: Ansicht des Programms
VAR _RecipeManCommands : RecipeManCommands; _stRecipeDef : STRING := 'MM_Par_Modul1'; [Name der Rezepturdefinition] _RecipeCount : INT;END_VAR
_RecipeCount := _RecipeManCommands.GetRecipeCount(_stRecipeDef);
Index
182 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
0-91_POUs 123
2_Structs_Types 135
3_Enums 138
AAbfragebeispiel
SOLL-Zustand der Zustandsmaschine des übergeordneten Masters abfragen 93Statusübergang freigeben 93Statusübergang freigeben/sperren 93Zustandsmaschine abfragen (IF-Bedingung) 93
AbfragebeispieleZustandsmaschine 93
AccessACD 123
ACD-Struktur 76
ACD-Struktur im MFB deklarieren/registrieren 76
Achse einfügen 61
Adressierung der Maschinenmodule 21
Anwendungshinweise (Darstellung) 12
appChannelLock 107
appChannelUnlock 107, 126
ApplicationTemplate 17
ApplicationTemplate starten 33
Arbeiten mit dem ApplicationTemplate 41
AT_ACTION_ADD_MODULE 56
AT_ACTION_ADD_MODULEAPPLICATION 69
AT_ACTION_CREATE_NEW_MODULE 53
AT_ACTION_CREATE_NEW_MODULEAPPLICATION 65
Auf die ACD-Struktur zugreifen 77
Auf die Zustandsmaschine zugreifen - Die Methoden des BaseChannels 166
Auf moduleigene Strukturvariablen zugreifen 74
Auf Strukturen von anderen Maschinenmodulen zugreifen 75
Auf Strukturvariablen von Maschinenmodulen zugreifen 74
Aufbau eines Maschinenmoduls 20
Aus Maschinenmodulen mit mehreren Modulapplikationen zugreifen 92
Automatisch generierte Funktionen 119
BBase 124
Base (Methode) 129
BaseChannel 22
BaseChannel-Methoden 166
baseChannelSetNominalState 85
BeispielprogrammApplicationTemplateCounter 161
Beispielprogramm Maschinenmodul MM_Machine 164
CCANbus 46
CANopen I/O Abbild 51
CANopen Manager 47
CANopen Remote Device 50
CAN-Parameter einstellen (Logic-Geräte) 50
checkSlave 131
DDefaultCoupling 86
DisableDefaultCouplingMaster 88
Dokumenthistorie 10
Dynamischer Speicher 35
EEin Modul umbenennen 56
Einloggen 36
Elemente des ApplicationTemplates 19
E-Mail an Lenze 185
Error List 100CSV-Datei exportieren 102
Errorhandling 96Fehler auslösen 99Fehler definieren 96
Errorhandling (Fehlerbehandlung) 24, 96
ErrorList Handler 100
Erste Schritte - ApplicationTemplate bedienen 37
Erstelltes Maschinenmodul einbinden 56
FFB L_EATP_SMAccess 92
Feedback an Lenze 185
Fehler definieren - Prinzipielle Vorgehensweise 98
Fehler quittieren 97, 128
Fehler quittieren- Reaktion im Maschinenmodul 98
Fehlerbehandlung 96
Fehlerreaktion konfigurieren 97
Fehlerreaktionstypen 96
Funktionalität des Maschinenaufbaus in Maschinenmodule überführen 27
GGetBooleanProperty 119
GetCompany 120
GetNumberProperty 120
GetRecipeCount 181
GetTextProperty 121
GetTitle 121
GetVersion 122
GetVersionProperty 122
Gültigkeit der Dokumentation 10
II/O-Module einbinden 63
Innerhalb der Modulapplikation programmieren 68
Instanzen von Maschinenmodulen erzeugen 54
Internal Control 109
Index
Lenze · ApplicationTemplate · 1.4 DE - 10/2013 183
Index
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
KKommunikation zum Controller einrichten 15
Kommunikation zwischen den Maschinenmodulen 22
Konsistente Datenübertragung 107
LL_EATP_ACD_Base 135
L_EATP_ApplicationcheckSlave 124Lokale Variablen 123
L_EATP_ApplicationTemplate 118
L_EATP_BaseChannel 136
L_EATP_CONST.OWNID 85, 89, 90
L_EATP_CriticalSection 125
L_EATP_ErrorList 136
L_EATP_ErrorListEntry 136
L_EATP_ErrorListHandler 126, 127
L_EATP_ErrorReactionType 138
L_EATP_ErrorSet 127
L_EATP_MM_Address 138
L_EATP_MMD_Base 137
L_EATP_Module 129
L_EATP_ModuleDiag 131
L_EATP_ModuleErrorHandler 132
L_EATP_ModulRelations 133
L_EATP_MVis 138
L_EATP_scBase 138
L_EATP_SMAccess 134
L_EATP_SMStates 139
LoadFromAndWriteRecipe 178
Lock 125
LockState 125
Logbuch 103
MMAC_Task_Free 106
MAC_Task_High 106
MAC_Task_Mid 106
machine module 20
machine module tree 20
MachineModulTree 19
MAP 21
Maschinenmodul (MM) 20
Maschinenmodul erstellen 53
Maschinenmodulbaum 19
Maschinenmodule in den Maschinenstrukturbaum einbinden 145
Methoden-Übersicht - ApplicationTemplate 166
MFB_Module1 67
MM 20
MM_Dcl 31
MM_EmptyModule 53
MM_IO 31
MM_Par 31
MM_PD 31
MM_Vis 31
MMT 19
Moduladresse, absolute 21
Moduladresse, relativ 21
Modulapplikation 21
Modulapplikation einbinden 69
Modulapplikation erstellen 65
Modularisieren des Automationssystems 27
Moduldiagnose 105
Module Application 21
ModuleAppCalls 21, 28, 31, 106
Modulkennung 59
Multitasking 106
OOnline Change 71
Online Change nicht möglich 72
PPDO-Mapping 51
PDO-Mapping einstellen (Logic-Geräte) 50
PLC-Programm laden und starten 36
Projekt in die Steuerung übertragen (Einloggen) 36
Projektdaten übersetzen 36
Projekterstellung - Prinzipielle Vorgehensweise 25
RReadAndSaveRecipeAs 177
ReadRecipe 180
RecipeManCommandsCreate Recipe 176
Rezepturdefinition erstellen 173
Rezepturen in eine Rezepturdefinition einfügen 175
Rezepturverwalter 172
SScreenshots 9
setCompIDAndVersion 130
SetErrors 66
SetErrors (Methode) 128
Sicherheit 14
Sicherheitshinweise (Darstellung) 12
Simulation 165
SMDisPatcherCaller 124
Standardverhalten 86
Statemachine 23, 80
Stati/Zustände 85
Status-Austritt (State-Exit) 95
Status-Eintritt (State-Entry) 95
Statusübergänge 82
Statusübergänge (Iinitialwerte) 81
Statusübergänge beeinflussen 91
Statusübergänge und Bedingungen - Übersicht 23
Index
184 Lenze · ApplicationTemplate · 1.4 DE - 10/2013
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Strukturieren innerhalb eines Maschinenmoduls 28
Sync-Erzeugung einstellen 47
VVerwendete Hinweise 12
Verwendete Konventionen 11
Visualisierung der Maschinenmodule 39
Visualisierung erweitern 112
WWeitere Geräte anhängen - Bussystem EtherCAT 42
WriteRecipe 179
ZZiel des ApplicationTemplates 17
Zielgruppe 9
Zustandsmaschine (Statemachine) 23, 80
Zustandsmaschine-Programmbeispiele 93
L 185
Ihre Meinung ist uns wichtig
Wir erstellten diese Anleitung nach bestem Wissen mit demZiel, Sie bestmöglich beim Umgang mit unserem Produkt zuunterstützen.
Vielleicht ist uns das nicht überall gelungen. Wenn Sie dasfeststellen sollten, senden Sie uns Ihre Anregungen und IhreKritik in einer kurzen E-Mail an:
feedback-docu@Lenze.de
Vielen Dank für Ihre Unterstützung.
Ihr Lenze-Dokumentationsteam
© 10/2013
Lenze Automation GmbHHans-Lenze-Str. 1D-31855 AerzenGermany
Service Lenze Service GmbHBreslauer Straße 3D-32699 ExtertalGermany
+49 (0)5154 – 82 -0 00 80 00/24 4 68 77 (24 h helpline)
+49 (0)5154 – 82 - 2800 +49 (0)51 54/82-11 12
Lenze@Lenze.de Service@Lenze.de
www.Lenze.com
SHPPLCDSD-NG 13448693 DE 1.4 TD11
10 9 8 7 6 5 4 3 2 1