Skip to main content

Attribut: implicit-parameter

Das Attirbut bewirkt, dass der aufrufende Programmierbaustein automatisch implizite Kontextinformationen bereitstellt, ohne dass eine explizite Parameterübergabe oder eine aufwendige Reflektionsfunktion erforderlich ist. Diese Kontextinformationen dienen als Grundlage für ein präzises Protokoll, das auch in Produktionsumgebungen ohne großen Aufwand erstellt werden kann.

Als PLC-Applikationsentwickler können Sie dieses Attribut nutzen, um für ein Protokoll Informationen zu generieren, mit dem präzise identifiert werden kann, wo Produktionsfehler auftreten. Das Setzen von Breakpoints oder die Anpassung einzelner Aufrufstellen ist dafür nicht erforderlich.

Als Bibliotheksentwickler können Sie dieses Attribut nutzen, um Validierungsfunktionen bereitzustellen, die den aufrufenden Baustein automatisch erkennen. Dadurch erhalten Bibliotheksanwender klare und aussagekräftige Fehlermeldungen, ohne dass zusätzlicher Programmieraufwand nötig ist.

Syntax:

{attribute 'implicit-parameter' := <value> }

Tabelle 26. Mögliche Werte für <value>

'pouname'

Gibt den qualifizieren Namen des aufrufenden Programmierbausteins zurück

'position'

Gibt die Position des Aufrufs in einem für Menschen lesbaren Format an

'instance-path'

Gibt den Instanzpfad des aufrufenden Programmierbausteins zurück



Erlaubte Einfügeposition:

Das Attribut darf im Deklarationsbereich VAR_INPUT über einer Eingabevariable des Typs STRING oder WSTRING verwendet werden. Auch POINTER TO STRING und POINTER TO WSTRING sind möglich.

Das Attribut ist in Programmierbausteinen folgenden Typs erlaubt:

  • Programme PROGRAM

  • Funktion FUNCTION

  • Methode METHOD, auch Interface-Methode

Die für eine implizite Überwachung zur Verfügung gestellten Check-Funktionen unterstützen das Attribut.

Eine Vererbung des Attributs ist nicht möglich.

Bei automatisch generierten Baustein-Aufrufen, wie beispielsweise FB_Init, FB_Reinit oder FB_Exit wird das Attribut nicht unterstützt.

Beispiel 273. Beispiel

Deklaration

FUNCTION MyAwesomeLogger
VAR_INPUT
    {attribute 'implicit-parameter':='pouname'}
    pouName : STRING := '';
    {attribute 'implicit-parameter':='position'}
    position : POINTER TO STRING := 0; // Pass by reference is supported for performance reasons
    {attribute 'implicit-parameter':='instance-path'}
    instance_path : STRING := '';
END_VAR

Implementierungsdetails

FUNCTION_BLOCK FB    
    // Can be used like this, to pass all arguments automatically
    MyAwesomeLogger(); // Values inside the function: pouName="FB", position=ADR("Line 15"), instance_path = "Device.Application.GVL.fbInstance"
    // Or like this with explicit parameters
    MyAwesomeLogger(pouName := 'OverwrittenName', position := ADR('OverwrittenPosition'));
END_PROGRAM