Die zuvor erstellten Disziplin-Komponenten sind unspezifisch. Von diesen werden nun abstrakte Disziplin-Komponenten abgeleitet, die alle benötigten Parameter enthalten. Von den abstrakten Disziplin-Komponenten werden anschließend konkrete Disziplin-Komponenten mit spezifischen Parameterwerten abgeleitet.
Der Schaltschrank für dieses Tutorial setzt sich aus folgenden Artikeln der EPLAN Artikeldatenbank zusammen:
Artikel | Artikelbezeichnung (EPN) | Id der Montagefläche |
---|---|---|
Schaltschrank | AE 1050.500 | |
Montageplatte des Schaltschranks | 15100.3.1;0;0 | |
Montagefläche der Montageplatte | 16000.1.2;10002;0 | |
Kabelkanal 30 mm x 60 mm (H x B) | KK3060 | |
Kabelkanal 30 mm x 40 mm (H x B) | KK3040 | |
Tragschiene | TS 35_7,5 | 15102.2.2;0;0 |
PxC Netzteil für SPS | PXC.2938581 | |
PxC SPS IL PB DP | PXC.2862246 | |
PxC IL 24 DI | PXC.2861221 | |
Klemmen-Endblock | PXC.3022276 | |
Reihenklemme | PXC.3031212 |
Zunächst werden die abstrakten Komponenten erstellt:
- Markieren Sie die Unit ProPanel.
- Wählen Sie Neu > ECAD > ECAD3d > Enclosure.
- Geben Sie im Feld Name den Text abstractEnclosure ein.
- Markieren Sie das Kontrollkästchen Abstrakt.
- Öffnen Sie den Editor Parameter.
- Ziehen Sie per Drag & Drop aus der Unit Parameter die Parameter EPN, Plug und Socket in den Editor.
Aus dieser abstrakten Komponente wird nun eine konkrete Komponente abgeleitet.
- Markieren Sie die Unit ProPanel.
- Wählen Sie Neu > ECAD > ECAD3D > Enclosure.
- Geben Sie im Feld Name (Name) den Text AE1050_500 ein.
- Geben Sie im Feld Oberklasse (Super class) den Text abstractEnclosure ein.
- Öffnen Sie den Editor Parameter (Parameters).
- Geben Sie für den Parameter EPN den Wert AE 1050.500 ein.
Erstellen Sie auf diesem Weg die folgenden abstrakten und davon abgeleiteten konkreten Komponenten.
Abstrakte Komponenten:
Komponente | Oberklasse | Parameter | Wert |
---|---|---|---|
abstractEndBracket | Device | Coordinate | |
EPN | |||
Mate | |||
Plug | |||
Position | |||
abstractMountingRail | MountingRail | Coordinate | |
Dimension | |||
DT_Code | MR | ||
DT_Counter | |||
EPN | |||
Id | |||
Plug | PlaneMounted | ||
Socket | =$DT_Code + $DT_Counter | ||
abstractPowerSupply | Device | Coordinate | |
DeviceTag | =$DT_Code + $DT_Counter | ||
DT_Code | |||
DT_Counter | |||
EPN | |||
Mate | |||
Plug | |||
Width | |||
abstractPLCDevice | Device | Coordinate | |
DeviceTag | =$DT_Code + $DT_Counter | ||
DT_Code | |||
DT_Counter | |||
EPN | |||
Mate | |||
Plug | |||
Width | |||
abstractTerminal | Device | Coordinate | |
EPN | |||
Plug | |||
Position | |||
abstractWireDuct | WireDuct | Coordinate | |
Dimension | |||
EPN | |||
Plug | PlaneMounted |
Konkrete Komponenten:
Komponente | Oberklasse | Parameter | Wert |
---|---|---|---|
EndBracket_PxC_3022276 | abstractEndBracket | EPN | PXC.3022276 |
Plug | MR2 | ||
TS35_7_5 | abstractMountingRail | Coordinate | |
Dimension | =List{329.0,0} | ||
DT_Counter | =mc.mos('T_Mechatronic_ModularSystem.ECAD.ProPanel.TS35_7_5').indexOf(this)+1 | ||
EPN | TS 35_7,5 | ||
Id | 15102.2.2;0;0 | ||
PowerSupply_PxC_2938581 | abstractPowerSupply | DT_Code | T |
DT_Counter | =if(not(origin.isNull())) then dc.dos('T_Mechatronic_ModularSystem.ECAD.ProPanel.abstractPowerSupply').indexOf(this)+1 else '**Calculation is performed only in discipline structure**' endif | ||
EPN | PXC.2938581 | ||
Plug | MR1 | ||
PxC_IL_24_DI | abstractPLCDevice | DT_Code | A |
DT_Counter | =if(not(origin.isNull())) then dc.dos('T_Mechatronic_ModularSystem.ECAD.ProPanel.abstractPLCDevice').indexOf(this)+1 else '**Calculation is performed only in discipline structure**' endif | ||
EPN | PXC.2861221 | ||
Mate | =List{'M4','M2',-2.4} | ||
Plug | MR1 | ||
PxC_IL_PB_DP | abstractPLCDevice | DT_Code | A |
DT_Counter | =if(not(origin.isNull())) then dc.dos('T_Mechatronic_ModularSystem.ECAD.ProPanel.abstractPLCDevice').indexOf(this)+1 else '**Calculation is performed only in discipline structure**' endif | ||
EPN | PXC.2862246 | ||
Plug | MR1 | ||
Width | =p8dbquery($EPN,'1',22013) | ||
Terminal_PxC_3031212 | abstractTerminal | EPN | PXC.3031212 |
Plug | MR2 | ||
KK3040 | abstractWireDuct | Dimension | =List{329.0,0} |
EPN | KK3040 | ||
KK3060 | abstractWireDuct | Dimension | =List{420.0,90} |
EPN | KK3060 |
Erklärung der Formeln:
Für den Parameter DT_Counter der Tragschienen wird eine Formel angewendet, die mit mc zur übergeordneten Mechatronikkomponente navigiert und mit mos('<Typ der Disziplinkomponente>') alle untergeordneten Komponenten einsammelt, die dem Typ der Disziplinkomponente entsprechen. Diese Disziplinkomponenten werden in einer Collection gespeichert, auf die mit indexOf(this) zugegriffen wird, um die Position der aktuellen Disziplinkomponente in der Collection zu ermitteln. Das Ergebnis dieser Formel wird für den Wert des Sockets genutzt und muss deshalb in der mechatronischen Struktur ermittelt werden, damit sich die Disziplinkomponenten in der nachfolgenden Berechnung darauf beziehen können.
Für den Parameter DT_Counter aller auf den Tragschienen zu platzierenden Geräten, wird eine Formel angewendet, die mit dc zur übergeordneten Disziplinkomponente navigiert und mit dos('<Typ der Disziplinkomponente>') alle untergeordneten Komponenten sammelt, die dem Typ der Disziplinkomponente entsprechen. Diese Disziplinkomponenten werden in einer Collection gespeichert, auf die mit indexOf(this) zugegriffen wird, um die Position der aktuellen Disziplinkomponente in der Collection zu ermitteln. Da der Wert nicht in der mechatronischen Struktur ermittelt werden kann, wird mit if(not(origin.isNull()) abgefragt, ob sich die Komponente in der mechatronischen oder disziplinspezifischen Struktur befindet. Im Fall der mechatronischen Struktur wird statt einer Fehlermeldung der Text '**Calculation is performed only in discipline structure**' angezeigt.
Die Werte für DeviceTag setzen sich aus den Parameterwerten für DT_Code und DT_Counter zusammen, sodass für die SPS-Komponente PxC_IL_PB_DP der Wert A2 berechnet wird.
Dem Parameter Dimension wird eine Liste übergeben, die mit dem ersten Wert die Länge und mit dem zweiten Wert den Winkel angibt, beispielsweise =List{329.0,0} übergibt die Länge 329,0 mm und einen Winkel von 0 Grad.
Für den Parameter Width wird mit =p8dbquery eine Datenbankanfrage an die EPLAN Electric P8 Artikeldatenbank gestartet. Als Argumente für die Anfrage werden nacheinander mit $EPN der Wert des Parameters EPN und mit '1',22013 die Feldnummer für die Breite in der Artikeldatenbank übergeben.
Tipp:
Sollen von der Artikeldatenbank Feldinhalte angefragt werden, die über p8dbquery nicht erreichbar sind, wird empfohlen, die Artikeldatenbank in eine SQL-Datenbank zu überführen. In den Formeln der Parameter sind dann SQL-Datenbankabfragen einzufügen die das gewünschte Ergebnis zurückgeben.