-> Hier kostenlos registrieren
Hallo, ich habe keinen Fehler aber Warnungen beim übersetzen:
Was soll mir das sagen?
Code:
DATA_BLOCK DB60 FB60
//
//Rundschalttisch Taktung
//
BEGIN
END_DATA_BLOCK
FUNCTION_BLOCK FB60
VAR
bRundtaktInPosition_LetzterZyklus:BOOL;
bPosFlankeRundtaktInPositionGesehen:BOOL;
iAblaufSchritt:INT;
tonMotorEin:TON;
tonMotorAus:TON;
tonTakt:TON;
bWeiterschaltbedingung:BOOL;
END_VAR
// Erkennung positiver Flanke
IF bRundtaktInPosition_LetzterZyklus = false AND oRundschalttisch_eInPos = true THEN //NOT bRund... AND E6.6 (Rundschalttisch in Pos)
bPosFlankeRundtaktInPositionGesehen := true;
END_IF;
bRundtaktInPosition_LetzterZyklus := oRundschalttisch_eInPos; // Alten Status speichern
IF sm_mod_scann = true THEN
IF oRundschalt_aBremseAus = true OR xaa_Sicherheit.b_oRundschalttisch_aEin = true then
IF oRundTaktSicher() = false THEN
iAblaufSchritt := 0;
xaa_Sicherheit.b_oRundschalttisch_aEin := false;
oRundschalt_aBremseAus := false;
sf_fehler(Fehlernummer := 1600, Fehlerart := sk_Fehler, Diagnosenummer := 0);
END_IF;
END_IF;
END_IF;
IF sm_mod_stop = true THEN
xaa_Sicherheit.b_oRundschalttisch_aEin := false;
END_IF;
IF sm_mod_hand = true OR sm_mod_aktiv = true THEN
IF sm_mod_aktiv = true AND sm_run = false THEN
sf_fehler(Fehlernummer := 1603, Fehlerart := sk_Hinweis, Diagnosenummer := 0); //interner Fehler sm_mod_aktiv=1 obwohl sm_run=0
END_IF;
IF oRundTaktSicher() = true THEN
CASE iAblaufSchritt OF
0:
IF (sm_hand_ein_flanke = true AND sm_mod_hand = true) OR (sm_pstep = true AND sm_mod_aktiv = true) THEN
iAblaufSchritt := 1;
bWeiterschaltbedingung := false; // Nicht ausserhalb von Flankenabfrage da eventuell zwei Objekte aufgerufen werden.
END_IF;
1: // Bremse raus und warten
oRundschalt_aBremseAus := true; //A6.1 Bremse lösen
tonMotorEin(IN := oRundschalt_aBremseAus, PT := T#50ms);
IF tonMotorEin.Q = true THEN
iAblaufSchritt := iAblaufSchritt + 1;
END_IF;
2: // Motorstart
bPosFlankeRundtaktInPositionGesehen := false;
xaa_Sicherheit.b_oRundschalttisch_aEin := true;
IF sm_run = true then
xaa_Sicherheit.b_oRundschalttisch_aEin := true;
END_IF;
iAblaufSchritt := iAblaufSchritt + 1;
3: // Warten auf Flanke, dann Nachlaufzeit
tonMotorAus(IN := bPosFlankeRundtaktInPositionGesehen, PT := DINT_TO_TIME(XXD_ALLG_DATEN.iNachlaufzeitRundschalt));
//Fehlermeldung falls Takt nicht weiterschaltet
tonTakt(IN := xaa_Sicherheit.b_oRundschalttisch_aEin, PT :=T#15s);
IF tonTakt.Q = true
THEN
sf_fehler(Fehlernummer := 2436, Fehlerart := sk_Fehler, Diagnosenummer := 0); //Rundschalttisch Takt nicht bewegt
END_IF;
IF tonMotorAus.Q = true THEN
xaa_Sicherheit.b_oRundschalttisch_aEin := false;
oRundschalt_aBremseAus := false;
iAblaufSchritt := 0;
bWeiterschaltbedingung := true;
ELSE
IF sm_run = true then
xaa_Sicherheit.b_oRundschalttisch_aEin := true; // Falls ein Stop (sm_run weg --> sm_mod_stop) dazwischen war.
END_IF;
END_IF;
ELSE:
sf_fehler(Fehlernummer := 1601, Fehlerart := sk_Fehler, Diagnosenummer := 0); //Rundschalttisch Takt Programmierfehler
END_CASE;
ELSE
iAblaufSchritt := 0;
xaa_Sicherheit.b_oRundschalttisch_aEin := false;
oRundschalt_aBremseAus := false;
sf_fehler(Fehlernummer := 1602, Fehlerart := sk_Fehler, Diagnosenummer := 0); //Rundschalttisch Takt Verletzung einer Sicherheitsbedingung
END_IF;
IF sm_mod_aktiv = true THEN
sm_wsb := bWeiterschaltbedingung AND sm_wsb;
END_IF;
END_IF;
IF sm_mod_kaltstart THEN
iAblaufSchritt := 0;
xaa_Sicherheit.b_oRundschalttisch_aEin := false;
oRundschalt_aBremseAus := false; //A6.1 Bremse NICHT gelöst
bWeiterschaltbedingung := false;
END_IF;
END_FUNCTION_BLOCK
Was soll mir das sagen?