Diese Funktionalität ist nur in bestimmten Ausbaustufen verfügbar.

Abstrakte und konkrete Disziplin-Komponenten erstellen

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:

  1. Markieren Sie die Unit ProPanel.
  2. Wählen Sie Neu > ECAD > ECAD3d > Enclosure.
  3. Geben Sie im Feld Name den Text abstractEnclosure ein.
  4. Markieren Sie das Kontrollkästchen Abstrakt.

  1. Öffnen Sie den Editor Parameter.
  2. 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.

  1. Markieren Sie die Unit ProPanel.
  2. Wählen Sie Neu > ECAD > ECAD3D > Enclosure.

  1. Geben Sie im Feld Name (Name) den Text AE1050_500 ein.
  2. Geben Sie im Feld Oberklasse (Super class) den Text abstractEnclosure ein.
  3. Öffnen Sie den Editor Parameter (Parameters).

  1. 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.