Wpis z mikrobloga

#programowanie

Naciskam przycisk, lampka pali się przez 10s potem gaśnie na 15s, potem znów zapala i gaśnie, dopóki nie puszczę przycisku.

IF bPrzycisk=TRUE THEN
bZalczanie2:=bPrzycisk;

TOFInst2(IN := bPrzycisk, PT:= T#10S);
bLampka :=TOFInst2.Q;
bWejscie:=1;
IF bWejscie<>bLampka THEN
bZalaczanie:=TRUE;
TONInst(IN := bZalaczanie, PT:= T#15S);
bPrzycisk :=TONInst.Q;
ENDIF

ELSE
bLampka :=0;
bWejscie :=0;
bZalaczanie:=0;
END
IF

Dobrze czy źle? :(
  • 8
  • Odpowiedz
@Kireino: IF bPrzycisk=TRUE THEN
bZalczanie2:=bPrzycisk;
TOFInst2(IN := bZalczanie2, PT:= T#10S); (*Wciśnięcie przycisku powoduje zaświecenie się lampka 10s*)
bLampka :=TOFInst2.Q;
bWejscie:=1;
IF bWejscie<>bLampka THEN (*lampka gaśnie więc 1<>0, startuje timer z opóźnionym załączaniem, po 15s Załącza znów timer pierwszy*)
bZalaczanie:=TRUE;
TONInst(IN := bZalaczanie, PT:= T#15S);
bZalczanie2 :=TONInst.Q;
ENDIF

ELSE
bLampka :=0;
bWejscie :=0;
bZalaczanie:=0;
bZalczanie2:=0;
END
IF

a może tak?

#programowanie
  • Odpowiedz
@wytrzzeszcz:
IF bPrzycisk=TRUE THEN (*naciskam przycisk*)
bZalczanie2:=bPrzycisk; (*przypisuje wartość jeden*)
TOFInst2(IN := bZalczanie2, PT:= T#10S); (*powoduje to start timera z opóznionym wyłączeniem *)
bLampka :=TOFInst2.Q; (*zaświecenie się lampki na 10s*)
bWejscie:=1; (*przypisuje wartość jeden dla tej zmiennej*)
IF bWejscie<>bLampka THEN (*lampka gaśnie więc 1<>0, startuje timer z opóźnionym załączaniem, po 15s Załącza znów timer pierwszy*)
bZalaczanie:=TRUE;
TONInst(IN := bZalaczanie, PT:= T#15S);
bZalczanie2 :=TONInst.Q;
ENDIF

ELSE
bLampka :=0;
bWejscie :=0;
bZalaczanie:=0;
  • Odpowiedz
@wytrzzeszcz: @Kireino:

Wciskam przycisk, lampka pali się przez 10s potem gaśnie na 15s, potem znów zapala i gaśnie, dopóki nie puszczę przycisku.

IF bPrzycisk=TRUE THEN (*naciskam przycisk*)
bZalaczanieTimera1:=bPrzycisk; (*przypisuje wartość jeden*)
TOFInst2(IN := bZalaczanieTimera1, PT:= T#10S); (*powoduje to start timera z opóznionym wyłączeniem *)
bLampka :=TOFInst2.Q; (*zaświecenie się lampki na 10s*)
bWejscie:=1; (*przypisuje wartość jeden dla tej zmiennej*)
IF bWejscie<>bLampka THEN (*lampka gaśnie więc 1<>0*)
bZalaczanieDrugiegoTimera:=TRUE; (* przypisuje wartość jeden
  • Odpowiedz
@mireczekochany: nie miałem z tym do czynienia, szczególnie w formie ST, ale to pytanie jest dziwnie zadane. coś Ci tutaj nie działa, sprawdzałeś i szukasz pomocy czy chcesz sprawdzić na zimno? bo może warto jakiegoś symulatora poszukać. na szybko to zastanawiają mnie warunki brzegowe. generalnie naciskasz przycisk i cała sekwencja się musi wykonać. pewnie się nie znam, ale to mnie oświeć co się stanie, jeżeli w trakcie sekwencji nacisnę jeszcze raz?
  • Odpowiedz