Iris _

Pixsys Forum

everybody's effort for the same goal

Errore Compilazione - FB con Case e timer

Post Reply
giuliog
Posts: 3
Joined: 02/10/2019, 17:24

Errore Compilazione - FB con Case e timer

Post by giuliog »

salve, ho un problema una function block creata con questo codice all'interno.

compilo ed esce "RULLIEREANGOLARI(1) - errore S1312: Errore sintassi" ma non capisco dove sia l'errore di sintassi?
Grazie

//Variabili
FUNCTION_BLOCK RulliereAngolari

VAR
Rit_Rulliera : TOF;
stato : INT;
EN_Prelievo : BOOL;
TON_Presenza : TON;
TOF_Presenza : TOF;
END_VAR

VAR_INPUT
FC_Prelievo : BOOL;
FC_Scarto : BOOL;
FC_Presenza : BOOL;
En_Scarto : BOOL;
En_Prlievo : BOOL;
END_VAR

VAR_OUTPUT
Cmd_RotPrelievo : BOOL;
Cmd_RotScarto : BOOL;
Cmd_Rulli : BOOL;
END_VAR
//Fine Variabili



//Inizio codice

TON_Presenza(IN:= FC_Presenza,PT:=100); // filtro per essere sicuri di accettare completamente il pallet
TOF_Presenza(IN:= FC_Presenza,PT:=100); // filtro per espellere completamente il pallet

case stato of

1: //Controllo lo stato dell'angoliera

if TON_Presenza.Q then
stato := 20; // Procedere allo scarto
End_if;

If FC_Prelievo then
Stato := 10; // vado allo stato di accettazione pallet
End_IF;

if TOF_Presenza and FC_Prelievo then
stato :=22;
End_if;

10 : // Sono in prelievo attendo l'arrivo del pallet

IF FC_Prelievo and EN_Prelievo and not TON_Presenza.Q then //se sono in posizione e devo accettare il pallet
cmd_Rulli:=true; // accendo la rulliera per accettare il pallet
End_If;

IF TON_Presenza.Q then
cmd_Rulli:=false;
stato:=20; // vado nella posizione di scarto
End_If;

20: //Devo procedere verso lo scarto

If TON_Presenza.Q and not FC_Scarto then
Cmd_RotScarto:=true;
END_If;

If FC_Scarto then
cmd_RotScarto:=false;
stato := 21; //Salto ad espulsione pallet
END_IF;

21 : //Espulsione pallet

If FC_Scarto and TON_Presenza.Q and En_Scarto then // accendo i rulli per espulsione
cmd_rulli:=true;
End_If;

if TOF_Presenza.Q then
cmd_rulli:=false;
stato:= 22;// salto a rotazione prelievo
end_if;

22:// andare in prelievo

if TOF_Presenza.Q and not FC_Prelievo then // mi muovo in prelievo
Cmd_RotScarto:=true;
end_if;

If FC_Prelievo then // sono in zona di prelievo
Cmd_RotScarto:=false;
stato := 10;
End_if;

End_Case;

//Fine Codice
Pixsys tecnico 1
Moderatore
Posts: 1649
Joined: 29/10/2010, 10:09
Contact:

Re: Errore Compilazione - FB con Case e timer

Post by Pixsys tecnico 1 »

Salve,
provi a vedere questo IF

if TOF_Presenza and FC_Prelievo then
stato :=22;
End_if;

TOF_Presenza è un FunctionBlock quindi non può usarlo "diretto" in una IF, deve esplicitare un membro di quel FB scrivendo:
TOF_Presenza.Q (ad esempio per esplicitare l'uscita del timer).

Si assicuri inoltre di usare l'ultima versione di LogicLab disponibile dal nostro sito: 5.10.0.14
Post Reply