ScriptName "Name" ScriptAuthor "Author" ScriptVersion "V x.yz" var w_NumberChar : word; var a_source : buffer[10]; moveconst (a_source[0], #0x00#0x01#0x02#0x03#0x04#0x05#0x06#0x07#0x08#0x09); // maximum len of Profibus-User-Diagnosedaten: // ---------------------------------------------- // UG-SC PB (DPV1) Hutschiene = 238 Byte (ab Hard-Rev. K) // UG-SC PB (DPV1) Hutschiene = 26 Byte (bis einschl. Hard-Rev. I) // UG-SC PB (DPV0) Hutschiene = 58 Byte // UG-IC PB (DPV1) = 238 Byte // UG-IC PB (DP) = 10 Byte // UG-IC PBL (DP) = 26 Byte Set ( warningTime , 5000 ) ; // ShowTime für SetErroCode und SetSystemErrorCode Busstart; Wait ( Bus_Active ) ; //****************************************************************************** :main; Set ( ProfibusExtDiagOFF , 0 ) ; // default: Ext Diag Bit für Anwenderdiagnose ist aktiv call :Exte_Diag_Loop; Set ( ProfibusExtDiagOFF , 1 ) ; // Ext Diag Bit für Anwenderdiagnose wird ausgeschaltet call :Exte_Diag_Loop; jump :main; //****************************************************************************** :Exte_Diag_Loop; delay (5000); // Pause von 5 Sekunde call :SetErrorCode; // setzt Error 6 an den gelben LED´s (langsames blinken 1Hz) delay (6000); // Pause von 6 Sekunde call :SetSystemErrorCode; // setzt Error 8 an den gelben LED´s (schnelles blinken 2Hz) und übergibt Anwenderdiagnose an die SPS // nach dem 2. Durchlauf wird dieser Error nicht mehr an die SPS gesendet // wird mit SetUserDiagValue0 (DiagLen = 0) deaktiviert delay (6000); call :SetUserDiagValue3; // übergibt Anwenderdiagnosedaten "a_source" mit der Länge 3 an die SPS delay (6000); call :SetUserDiagValue0; // setzt Anwenderdiagnosedaten wieder zurück delay (6000); call :SetUserDiagValue2; // übergibt Anwenderdiagnosedaten "a_source" mit der Länge 2 an die SPS delay (6000); call :SetUserDiagValue5; // übergibt Anwenderdiagnosedaten "a_source" mit der Länge 3 an die SPS delay (6000); call :SetUserDiagValue0; // setzt Anwenderdiagnosedaten wieder zurück return; :SetErrorCode; Set ( errorcode , 6 ) ; return; :SetSystemErrorCode; Set ( systemError , 8 ) ; return; :SetUserDiagValue0; moveconst (w_NumberChar, 0); jump :SetDiagLen; :SetUserDiagValue1; moveconst (w_NumberChar, 1); jump :SetDiagLen; :SetUserDiagValue2; moveconst (w_NumberChar, 2); jump :SetDiagLen; :SetUserDiagValue3; moveconst (w_NumberChar, 3); jump :SetDiagLen; :SetUserDiagValue4; moveconst (w_NumberChar, 4); jump :SetDiagLen; :SetUserDiagValue5; moveconst (w_NumberChar, 5); :SetDiagLen; Convert ( w_NumberChar , Word , a_Source[0] , Byte ) ; SetProfibusDiagnose ( a_Source[0] , w_NumberChar ) ; return;