-> Hier kostenlos registrieren
Hallo Leute,
befasse mich erst seit 2 Wochen mit SPS, bzw. Beckhoffs twincat (also bitte nicht auslachen). Da in unserer Firma nur st und cfc zur Anwendung kommt und ich keine passenden Anfängerbeispiele finden konnte, erschien es mir sinnvoll das Ampelbeispiel abzuändern - aber natürlich funktioniert es nicht. Wäre also sehr dankbar wenn mir hier jemand helfen könnte.
bis jetzt zusammengebastelt:
Programm ABLAUF
Funktionsblock AMPEL
Programm PLC
Funktionsblock WARTEN
Grundsätzlich scheint das sogar zu funktionieren, aber nur im Ablauf-Programm. Wenn ich das ganze ausführe, kommt im Programm PLC nicht eine Variable an, statt dessen nur Fragezeichen. Hat jemand eine Idee was ich hier falsch mache?
befasse mich erst seit 2 Wochen mit SPS, bzw. Beckhoffs twincat (also bitte nicht auslachen). Da in unserer Firma nur st und cfc zur Anwendung kommt und ich keine passenden Anfängerbeispiele finden konnte, erschien es mir sinnvoll das Ampelbeispiel abzuändern - aber natürlich funktioniert es nicht. Wäre also sehr dankbar wenn mir hier jemand helfen könnte.
bis jetzt zusammengebastelt:
Programm ABLAUF
Code:
PROGRAM ABLAUF
VAR_INPUT
START:BOOL;
END_VAR
VAR
init: INT:=0;
count:INT:=0;
END_VAR
VAR_OUTPUT
AMPEL1_STATUS:INT;
AMPEL2_STATUS:INT;
END_VAR
VAR
VERZ:WARTEN;
END_VAR
IF START THEN
CASE init OF
0: AMPEL1_STATUS:=1;
AMPEL2_STATUS:=3;
init:=1;
1: AMPEL1_STATUS:=2;
AMPEL2_STATUS:=4;
VERZ(start_timer:=TRUE);
VERZ(ZEIT:=t#5s);
IF VERZ.OK THEN VERZ(start_timer:=FALSE); init:=2;
END_IF
2: AMPEL1_STATUS:=3;
AMPEL2_STATUS:=1;
VERZ(start_timer:=TRUE);
VERZ(ZEIT:=t#10s);
IF VERZ.OK THEN VERZ(start_timer:=FALSE); init:=3;
END_IF
3: AMPEL1_STATUS:=4;
AMPEL2_STATUS:=2;
VERZ(start_timer:=TRUE);
VERZ(ZEIT:=t#5s);
IF VERZ.OK THEN VERZ(start_timer:=FALSE); init:=4;
END_IF
4: AMPEL1_STATUS:=1;
AMPEL2_STATUS:=3;
VERZ(start_timer:=TRUE);
VERZ(ZEIT:=t#10s);
IF VERZ.OK THEN VERZ(start_timer:=FALSE); init:=2;
END_IF
END_CASE;
END_IF
Code:
FUNCTION_BLOCK AMPEL
VAR_INPUT
STATUS:INT;
END_VAR
VAR_OUTPUT
GRUEN:BOOL;
GELB:BOOL;
ROT:BOOL;
END_VAR
VAR
END_VAR
CASE STATUS OF
1: GRUEN:=TRUE;
GELB:=FALSE;
ROT:=FALSE;
2: GRUEN:=FALSE;
GELB:=TRUE;
ROT:=FALSE;
3: GRUEN:=FALSE;
GELB:=FALSE;
ROT:=TRUE;
END_CASE
Funktionsblock WARTEN
Code:
FUNCTION_BLOCK WARTEN
VAR_INPUT
ZEIT:TIME;
start_timer:BOOL;
END_VAR
VAR_OUTPUT
OK:BOOL:=FALSE;
END_VAR
VAR
ZAB:TP;
END_VAR
ZAB.PT:=ZEIT;
ZAB(IN:=start_timer);
IF NOT ZAB.Q THEN OK:=TRUE; ELSE OK:=FALSE; END_IF;
Grundsätzlich scheint das sogar zu funktionieren, aber nur im Ablauf-Programm. Wenn ich das ganze ausführe, kommt im Programm PLC nicht eine Variable an, statt dessen nur Fragezeichen. Hat jemand eine Idee was ich hier falsch mache?