IOL_IdentificationAndDiagnosis

IOL_IdentificationAndDiagnosis 1:

Funktionsbaustein zur Identifikation und Diagnose eines IO-Link Devices. Dieser Funktionsbaustein wird durch das Common IO-Link Profile implementiert. Der ApplicationSpecificTag, der FunctionTag und der LocationTag eines IO-Link Devices kann geschrieben werden. Die Funktionsklassen und ProfilIDs können ausgelesen werden, die ein Gerät besitzt. Zusätzlich gibt der Funktionsbaustein eine Diagnose über den Zustand eines Geräts und die Identifikation wie Vendor Name, Vendor ID, Device Name, Device ID.

IOL_IdentificationAndDiagnosis 2: Eingänge

Name

Typ

Beschreibung

Execute

BOOL

Ein Trigger bewirkt, dass die mit der Variable Function ausgewählte Funktion ausgeführt wird:

MasterAoENetid

T_AmsNetid

AMS NETID des IO-Link Masters

IolPort

E_IolPort

IO-Link Port des IO-Link-Geräts

Func

E_IolIad_Function

Diese Variable wählt die Funktionalität aus, die durch einen Request ausgelöst werden soll:

0 = no_func

Ein Request wird vernachlässigt, es wird keine Funktion ausgeführt

1 = rd_all

Ein Request startet das Rücklesen der aktuellen Identifikations

und Diagnoseparameterwerte aus dem Device.

2 = rd_diag

Ein Request startet das Rücklesen der aktuellen Diagnoseparameterwerte durch Lesen von DeviceStatus und DetailedDeviceStatus aus dem Gerät.

3 = wr_ ident

Ein Request bewirkt, dass ein zuvor angelegter Wert für ApplicationSpecificTagIn, LocationTagIn und FunctionTagIn in das Gerät geschrieben wird.

BackupEnable

BOOL

Diese Variable konfiguriert das Verhalten des FBs im Falle der angeforderten Funktion wr_ident.

"true" = aktiviert

Der Backup-Mechanismus wird durch den FB ausgelöst.

"false" = deaktiviert

Der Backup-Mechanismus wird nicht durch den FB ausgelöst.

ApplicationSpecificIN

String(32)

Parameter des IO-Link-Geräts

FunctionTagIN

String(32)

Parameter des IO-Link-Geräts

LoactionTagIN

String(32)

Parameter des IO-Link-Geräts

IOL_IdentificationAndDiagnosis 3:Ausgänge

Name

Typ

Beschreibung

Done

BOOL

Das Signal ist gesetzt, wenn der FB eine angeforderte Operation abgeschlossen hat.

Busy

BOOL

Das Signal wird gesetzt, wenn der FB eine angeforderte Operation ausführt.

Error

BOOL

Das Signal wird gesetzt, wenn bei der Ausführung eines angeforderten Vorgangs ein Fehler aufgetreten ist.

AdsError

E_ADSErr

ADS-Fehlercode

IoLError

E_IolError

IO-Link-Fehler

State

E_IolIad_State

Der Wert stellt den aktuellen Status des FB-Betriebs und der ausgeführten Funktionen dar. Der Inhalt ist systemspezifisch und enthält die Statusinformationen.

ProfileIDList

ARRAY [0..31] of E_IolProfileIdentifier

Liste der vom Gerät unterstützten ProfileIDs

FunctionClassIDList

ARRAY [0..31] of E_IolProfileIdentifier

Liste der vom Gerät unterstützten FunctionClassIDs

IdentificationObjects

ST_IolIdentificationObjects

Strukturierte Liste der Identifikationsobjekte, für weitere Details.

DeviceOK

BOOL

Das Signal ist gesetzt, wenn keine weiteren Diagnoseinformationen verfügbar sind, es ist false, wenn weitere Informationen bei DeviceStatus und DetailedDeviceStatus verfügbar sind.

DeviceStatus

E_IolDeviceStatus

Status des IO-Link-Geräts

DetailedDeviceStatus

T_IolDetailedDeviceStatus

ARRAY [0..63] von ST_DetailedDeviceStatusEntry

Beispiel

Der folgende FB ist Teil des IoLink Beispielprojekts. Weitere Informationen finden Sie im Kapitel Beispiele.

FUNCTION_BLOCK FB_Sample_06_IdentificationAndDiagnosis
VAR_INPUT
    sApplicationTagIn       : STRING(32) := '';
    sFunctionTagIn          : STRING(32) := '';
    sLocationTagIn          : STRING(32) := '';
    bExecute                : BOOL;
END_VAR
VAR_OUTPUT
    bBusy                   : BOOL := FALSE;
    bDone                   : BOOL := FALSE;
    bError                  : BOOL := FALSE;
    
    sIolError               : STRING;
    sAdsError               : STRING;
    aProfileIDList          : ARRAY [0..31] OF E_IolProfileIdentifier;
    aFunctionClassIDList    : ARRAY[0..31] OF E_IolProfileIdentifier;
    stIDentObjects          : ST_IolIdentificationObjects;
    bDeviceOK               : BOOL;
    nDeviceStatus           : E_IolDeviceStatus;
    DetailedDeviceStatus    : T_IolDetailedDeviceStatus;
END_VAR
VAR
    bExecuteOld             : BOOL;
    nState                  : INT := 0;
    IolDiagAndIdent         : IOL_IdentificationAndDiagnosis;
END_VAR
////
// Execute/Busy State Machine
//
IF bExecute AND NOT bExecuteOld AND NOT bBusy THEN
    bBusy := TRUE;
    nState := 10;    // START
ELSIF NOT bExecute THEN
    bBusy := FALSE;
    bError := FALSE;
    bDone := FALSE;
    sIolError:='';
    sADSError:='';
END_IF
bExecuteOld := bExecute;
    

CASE nState OF
    
// IDLE
0:;

// START
10:
    IolDiagAndIdent(Execute := FALSE);
    
    IolDiagAndIdent.MasterAoeNetId := F_CreateAmsNetId(GVL_IO.sTerm2AmsNetId);
    IolDiagAndIdent.IolPort := E_iolport.Port4;
    IolDiagAndIdent.Funct := E_IolIad_Function.ReadAll;
    IolDiagAndIdent.ApplicationSpecificTagIn := sApplicationTagIn;
    IolDiagAndIdent.FunctionTagIn := sFunctionTagIn;
    IolDiagAndIdent.LocationTagIn := sLocationTagIn;
    
    IolDiagAndIdent.Execute := TRUE;
    nState := 20; // WAIT FOR DONE
    
// WAIT FOR DONE
20:
    IF NOT IOlDiagAndIdent.Busy AND NOT IOlDiagAndIdent.Error THEN
        nState := 30; // DONE
    END_IF

// DONE
30:
    aProfileIDList := IolDiagAndIdent.ProfileIDList;
    aFunctionClassIDList := IolDiagAndIdent.FunctionClassIDList;
    stIDentObjects := IolDiagAndIdent.IdentificationObjects;
    bDeviceOK := IolDiagAndIdent.DeviceOK;
    nDeviceStatus := IolDiagAndIdent.DeviceStatus;
    DetailedDeviceStatus := IolDiagAndIdent.DetailedDeviceStatus;
    
    IolDiagAndIdent.Execute := FALSE;
    nState := 0; // INIT

END_CASE


////
// call FBs
//
IolDiagAndIdent();

////
// Error Handling
//
IF NOT bError AND bBusy THEN
    IF IolDiagAndIdent.Error THEN
        nState := 0;
        bBusy := FALSE;
        bError := TRUE;
        sIolError := F_IolGetIolErrorTxt(ioldiagandIdent.IolError);
        sAdsError := F_IolGetadsErrorTxt(ioldiagandident.AdsError);
    END_IF
END_IF

Voraussetzungen

Entwicklungsumgebung

Erforderliche SPS-Bibliothek

TwinCAT ab v3.1.4024.25

Tc3_IoLink ab v3.3.4.0