-> Hier kostenlos registrieren
Einen wunderschönen Guten Morgen,
ich bin Student im Bereich Elektrotechnik - Automatisierungstechnik und bin in unserer Hochschule für eine kleine Modellanlage verantwortlich. Diese funktioniert leider seit neustem nicht mehr, da eine der SPSen beim Hochfahren direkt in den Stop-Modus übergeht. Dafür verantwortlich ist anscheinend ein Bereichslängenfehler in einem der Funktionsbausteine, welcher die die Bestandsanzeige des Hochregallagers mit dem MES-System synchronisiert. Wir haben schon einen Workaround gefunden um die Anlage wieder funktionstüchtig zu bekommen, allerdings hebelt dieser Workaround die Anzeige aus. Folgende Fehlerbeschreibung liefert mir TIA V13 beim Starten der zuständigen CPU:
Die angeblich fehlerhafte Adresse ist im Code Rot hinterlegt:
Habt ihr eine Idee wo das Problem liegen könnte? Es hat niemand etwas weder an der physikalischen SPS noch an der Software geändert, das Problem ist einfach über Nacht aufgetaucht.
Viele Grüße und ein großes Danke im Vorraus!
Graf Z4hl
ich bin Student im Bereich Elektrotechnik - Automatisierungstechnik und bin in unserer Hochschule für eine kleine Modellanlage verantwortlich. Diese funktioniert leider seit neustem nicht mehr, da eine der SPSen beim Hochfahren direkt in den Stop-Modus übergeht. Dafür verantwortlich ist anscheinend ein Bereichslängenfehler in einem der Funktionsbausteine, welcher die die Bestandsanzeige des Hochregallagers mit dem MES-System synchronisiert. Wir haben schon einen Workaround gefunden um die Anlage wieder funktionstüchtig zu bekommen, allerdings hebelt dieser Workaround die Anzeige aus. Folgende Fehlerbeschreibung liefert mir TIA V13 beim Starten der zuständigen CPU:
Code:
Temporärer CPU-Fehler: Bereichslängenfehler in FB 802 betrifft OB 1 Ausführung
Lesezugriff DB-Bereich
fehlerhafte Adresse, Operand ersetzt
ASRS
interne Adressierungsdetails: Caddr=16#00000177, Bereich: DB-Bereich, Adr: 486
Die angeblich fehlerhafte Adresse ist im Code Rot hinterlegt:
Code:
//********************************************************************************
// Initialization
//********************************************************************************
IF #xInit THEN
#iStep := 1;
#iZero := 0;
END_IF;
//********************************************************************************
// Initialization
//********************************************************************************
IF #iMode <> 3 THEN
#iZero := 0;
#iRetVal := FILL(BVAL := #iZero, BLK => #MesASRS);
END_IF;
//********************************************************************************
// check Send-Timeout
//********************************************************************************
#EN1 := (#xEnable AND (#iStep = 10) AND (#iMode = 3));
#TON_Delay(IN := #EN1 , PT := T#1s);
CASE #iStep OF
1: //*********************************
// Init
//*********************************
#iZero := 0;
#iStep := 10;
10: // wait until delay time passed --> send MES Query "MesRdBuffer"
IF "dbHmi"."MES".ReqTrayData THEN
"GetPalletInfo"(iPalletId := "dbHmi"."MES".ASRS.Overview["dbHmi"."Inventory".ShelfNo].[COLOR=#ff0000]PalletId[/COLOR]
,pRcvHeader := #RcvHeader
,pRcvPar := #RcvParPallet
);
"dbHmi"."MES".ReqTrayData := False;
#iStep := 20;
ELSIF "dbHmi"."MES".ReqBottleData THEN
#iOPos := "dbHmi"."Inventory".BottleNo + ("dbHmi"."MES".ASRS.Detail.OPos * 100);
"GetParSubPos"(diONo := "dbHmi"."MES".ASRS.Detail.ONo
,iOPos := #iOPos
,iMaxRecords := 12
,pRcvHeader := #RcvHeader
,pRcvPar := #RcvParBottle
);
"dbHmi"."MES".ReqBottleData := False;
#iStep := 25;
ELSIF #TON_Delay.Q THEN
"GetBufForBufNo"(iResourceId := "dbMes".iResourceId
,iBufNo := 1
,iMaxRecords := 16
,pRcvHeader := #RcvHeader
,pRcvPar := #RcvPar
);
#iStep := 15;
END_IF;
15: // Wait Mes Query finished
IF #RcvHeader.xDone THEN
// Mes Query finished
#iRetVal := BLKMOV( SRCBLK := #RcvPar, DSTBLK => #MesASRS );
#iStep := 10;
END_IF;
20: // Wait "MesShowPalletInfo" finished
IF #RcvHeader.xDone THEN
// Mes Query finished
"dbHmi"."MES".ASRS.Detail.ONo := #RcvHeader.diONo;
"dbHmi"."MES".ASRS.Detail.OPos := #RcvHeader.iOPos;
"dbHmi"."MES".ASRS.Detail.PNo := #RcvHeader.diPNo;
"dbHmi"."MES".ASRS.Detail.PalletId := #RcvHeader.iPalletId;
"dbHmi"."MES".ASRS.Detail.CNo := #RcvHeader.diCNo;
"dbHmi"."MES".ASRS.Detail.ResourceId := #RcvHeader.iResourceId;
"dbHmi"."MES".ASRS.Detail.StepNo := #RcvHeader.iStepNo;
"dbHmi"."MES".ASRS.Detail.Release := #RcvParPallet.Release;
"dbHmi"."MES".ASRS.Detail.Start := #RcvParPallet.Start;
#iStep := 10;
END_IF;
25: // Wait "MesShowParSubPos" finished
IF #RcvHeader.xDone THEN
// Mes Query finished
#iRetVal := BLKMOV( SRCBLK := #RcvParBottle, DSTBLK => "dbHmi"."MES".ASRS.Bottle );
#iStep := 10;
END_IF;
END_CASE;
Habt ihr eine Idee wo das Problem liegen könnte? Es hat niemand etwas weder an der physikalischen SPS noch an der Software geändert, das Problem ist einfach über Nacht aufgetaucht.
Viele Grüße und ein großes Danke im Vorraus!
Graf Z4hl