
07/04 AWB2700-1428GB
Function block DiagGetState
59
Diagnostics program: (Observe the highlighted changes!)
PROGRAM DIAGDP
(* Diagnosis for PROFIBUS DP *)
VAR
Diagstate_DP:DiagGetState;
(* Instance creation of POU DiagGetState() *)
FeldDiag_DP: ARRAY[0..99] OF BYTE;
(* Additional field for diagnosis data (optional) *)
Address_DP: DWORD;
n_Dword: DWORD;
wHelp_DP:UINT;
END_VAR
VAR CONSTANT
Adr_max_DP : DWORD := 2 ;
(* Entry: highest participant address (2..125) e.g. 2 *)
END_VAR
DPSTAT.DRIVERNAME:=ADR(DPDrvName);
(*DPSTAT/DPDrvName
Page 57 VAR_GLONBAL*)
DPSTAT.DEVICENUMBER:=0;
IF Diagstate_DP.ENABLE = FALSE THEN
(* Function block (FB) DiagGetState is deactivated?*)
IF(DPSTAT.EXTENDEDINFO[129] >0)THEN Adresse_DP:=0;
Diagnosis is available*
FOR n_Dword := 2 TO Adr_max_DP DO
(*Look for participant with diagnosis*)
IF(DPSTAT.EXTENDEDINFO[n_Dword] >=6 )THEN
Adresse_DP:=n_Dword;
EXIT;
END_IF
END_FOR
IF Diagstate_DP.ENABLE = FALSE THEN
(* Function block (FB) DiagGetState is deactivated?*)
(* Input parameter of the FB,
Diagstate_DP.DRIVERNAME:=ADR(DPDrvName);
Diagstate_DP.DEVICENUMBER:=0;
Diagstate_DP.BUSMEMBERID:=Adresse_DP;
Diagstate_DP.ENABLE:=TRUE;
Diagstate_DP();
(* Call the FB DiagGetState*)
END_IF
END_IF
END_IF
(*--------------------------------------------------from XSoft V2.3.1--------------------------------------------------------*)
IF Diagstate_DP.BOLDENABLE=TRUE AND Diagstate_DP.READY=FALSE THEN
(*BOLDENABLE=function variable, Type: BOOL*)
Diagstate_DP();
(*BOLDENABLE=1: FB DiagGetState active*)
END_IF
(*--------------------------------------------------------------------------------------------------------------------------*)
IF Diagstate_DP.ENABLE = TRUE THEN
(* Cyclical call if the FB is active*)
IF Diagstate_DP.READY THEN
(* FB ended / are diagnosis data available?*)
IF Diagstate_DP.STATE=NDSTATE_DIAGINFO_AVAILABLE THEN
(*Diagdataabfrage_LX:=1*)
(*Set aux. marker:
If Diagdataabfrage=0->1, then the diagnosis data are valid
and can be accessed. The marker must be reset in the
application program.*)
FOR wHelp_dp:=0 TO (Diagstate_DP.EXTENDEDINFO[14 ]+13) BY 1 DO (*Byte 0 -13 and the customized data are copied*)
FeldDiag_DP[wHelp_dp]:=Diagstate_DP.EXTENDEDINFO[wHelp_dp];
(* EXTENDEDINFO -> FeldDiag_DP*)
END_FOR
END_IF
Diagstate_DP.ENABLE:=FALSE;
(* Deactivate FB*)
Diagstate_DP();
(* Call FB *)
END_IF
END_IF
Summary of Contents for XControl XC600
Page 4: ...II...
Page 8: ...07 04 AWB2700 1428GB 4...
Page 30: ...07 04 AWB2700 1428GB 26...
Page 40: ...07 04 AWB2700 1428GB 36...
Page 74: ...07 04 AWB2700 1428GB 70...
Page 78: ...07 04 AWB2700 1428GB 74...