Oll_Bell
Level-1
- Beiträge
- 41
- Reaktionspunkte
- 2
-> Hier kostenlos registrieren
FB:
#temp ist bool temp
#IMPULS, #EINGANG1 und #EINGANG2 sind bool,- INPUTs
#IST_Zahl und #SOLL_Zahl sind INT static, Startwert ist 0
#OUT ist bool OUT
ich erwarte, dass der SCL-Kode "+1" addieren wird, aber der addiert 2.
Impuls erzeugt SR-flipflop, siehe im Anhang.
Ich habe gedacht, dass das IMPULS zwei Takten dauern kann, aber konnte das nicht prüfen. Ich konnte nur den SCL-Kode auf FUB wechseln.
ich habe den AWL-Kode S5 übersetz
IMPULS- Stundenimpuls.
ps
gerade habe ich AWL probiert, gleiche Situation, addiert 2 ((
ps
Und dieser Kode addiert nur bis 1
#IST_Zahl := #IST_Zahl + 1 - hier ist immer 1nach 0
#IST_Zahl := ROUND_INT (#IST_Zahl / 2); - hier ist immer 0
#temp ist bool temp
#IMPULS, #EINGANG1 und #EINGANG2 sind bool,- INPUTs
#IST_Zahl und #SOLL_Zahl sind INT static, Startwert ist 0
#OUT ist bool OUT
Code:
#temp := (#EINGANG1 OR #EINGANG2) AND #IMPULS;
IF #temp THEN
#IST_Zahl := #IST_Zahl + 1;
END_IF;
IF SOLL_Zahl >= #IST_Zahl THEN
#IST_Zahl := 0;
#OUT:= NOT #OUT;
END_IF;
ich erwarte, dass der SCL-Kode "+1" addieren wird, aber der addiert 2.
Impuls erzeugt SR-flipflop, siehe im Anhang.
Ich habe gedacht, dass das IMPULS zwei Takten dauern kann, aber konnte das nicht prüfen. Ich konnte nur den SCL-Kode auf FUB wechseln.
ich habe den AWL-Kode S5 übersetz
Code:
UN =EINGANG1 ;AGGREGAT 1 UND
UN =EINGANG2 ;AGGREGAT 2 NICHT LAEUFT
ON =IMPULS ;UND KEIN STUNDENIMPULS
SPB =ENDE ;SPRINGE
B =DB
L =IST_Zahl ;HILFSWORT LADEN
L KF +1
+F ;+1
T =IST_Zahl ;UND ZURUECKSCHREIBEN
L =SOLL_Zahl ;SOLLBERIEBSSTUNDEN LADEN
<F ;WENN: SOLLSTUNDEN GROESSER
SPB =ENDE ;GEZAEHLTE STUNDEN ->SPRINGE
L KH 0000
T =IST_Zahl ;BEI ABLAUF DER BETRIEBS-
;STUNDEN DAS HILSWORT LOESCHEN
UN =OUT
= =OUT ;DEN AGGREGATEWECHSELAUSGANG
;INVERTIEREN
ENDE:
BE
IMPULS- Stundenimpuls.
ps
gerade habe ich AWL probiert, gleiche Situation, addiert 2 ((
Code:
AN #EINGANG1
AN #EINGANG2
ON #IMPULS
JC ende
L #IST_Zahl
L +1
+I
T #IST_Zahl
L #SOLL_Zahl
<I
JC ende
L+0
T #IST_Zahl
AN #OUT
= #OUT
ende: BE
ps
Und dieser Kode addiert nur bis 1
#IST_Zahl := #IST_Zahl + 1 - hier ist immer 1nach 0
#IST_Zahl := ROUND_INT (#IST_Zahl / 2); - hier ist immer 0
Code:
#temp := (#EINGANG1 OR #EINGANG2) AND #IMPULS;
IF #temp THEN
#IST_Zahl := #IST_Zahl + 1;
#IST_Zahl := ROUND_INT (#IST_Zahl / 2);
END_IF;
IF SOLL_Zahl >= #IST_Zahl THEN
#IST_Zahl := 0;
#OUT:= NOT #OUT;
END_IF;
Anhänge
Zuletzt bearbeitet: