VAR
currVal, binVal: word;
actFlag: bool;
END_VAR
currVal :=S_CU(C_NO:=Z11, CU:=NOT oNIORutsche_eTeilSensor1 OR NOT oNIORutsche_eTeilSensor2 , S:=M0.1,
PV:=16#5, R:=oNIORutsche_eTeilSensor1 OR oNIORutsche_eTeilSensor2 OR , CV:=binVal,
Q:=actFlag);
2: //Lichtschranke NiO Teile Rutsche
IF oNIORutsche_eTeilSensor1 OR oNIORutsche_eTeilSensor2 OR actFlag<5 THEN //U E5.6 OE5.7
IF a2m_sync <> 0 THEN // Wenn Bohren aktiv sollte kein Fehler gemeldet werden um Spindel zu schützen
;
ELSE
sf_fehler(Fehlernummer := 1410, Fehlerart := sk_Fehler, Diagnosenummer := BYTE_TO_INT(a11c_step)); //NiO Teile Sensor meldet Rutsche nicht frei
END_IF;
sc_nextstep := a11c_step;
END_IF;
Der Augang Q sollte ja true werden wenn CV=PV. Also dann:wie kann ich dann den Zählerstand vergleichen?
Anhang anzeigen 60091
Code:IF (CV > PV) THEN m:= 100.0 passt auch nicht
IF oNIORutsche_eTeilSensor1 OR oNIORutsche_eTeilSensor2 OR actFlag=false THEN
d.h. wenn actFlag= true dann kommt der Fehler.Der Augang Q sollte ja true werden wenn CV=PV. Also dann:
IF oNIORutsche_eTeilSensor1 OR oNIORutsche_eTeilSensor2 OR actFlag=false THEN
2: //Lichtschranke NiO Teile Rutsche
IF oNIORutsche_eTeilSensor1 = true OR oNIORutsche_eTeilSensor2 = true OR NOT actFlag THEN //U E5.6 OR OE5.7 OR NICHT Zählerstatus
IF a2m_sync <> 0 THEN // Wenn Bohren aktiv sollte kein Fehler gemeldet werden um Spindel zu schützen
;
ELSE
sf_fehler(Fehlernummer := 1410, Fehlerart := sk_Fehler, Diagnosenummer := BYTE_TO_INT(a11c_step)); //NiO Teile Sensor meldet Rutsche nicht frei
END_IF;
sc_nextstep := a11c_step;
END_IF;
Habe grade nochmal die Doku gecheckt.d.h. wenn actFlag= true dann kommt der Fehler.
Q wird erst true wenn CV 5 erreicht hat. (Status des Zählers)
Richtig?
Kann dir nicht ganz folgen. Deine "simulation" ist ja in TIA und mit dem IEC Zähler CTU.
Nein, nicht, wenn Du den Zähler nicht auf einen Stand 1..999 (vorbe-)setzen willst. Auf den Stand 0 kannst Du ihn "setzen" mit R.muss der beschaltet sein?
Auch das noch! Wo denn?In deinem obigen Code nutzt du ja den Legacy Timer S_CU.
Nein, nicht, wenn Du den Zähler nicht auf einen Stand 1..999 (vorbe-)setzen willst. Auf den Stand 0 kannst Du ihn "setzen" mit R.
Ich staune jedesmal wieder, wie in den Beschreibungen die Begriffe dezimal, hexadezimal, BCD und dual durcheinandergewirbelt werden.
Da muss man hart bleiben und sich nicht verwirren lassen.
Auch das noch! Wo denn?
Na hier @HeinileiniHabe mir es so in etwa vorgestellt:
VAR currVal, binVal: word; actFlag: bool; END_VAR currVal :=S_CU(C_NO:=Z11, CU:=NOT oNIORutsche_eTeilSensor1 OR NOT oNIORutsche_eTeilSensor2 , S:=M0.1, PV:=16#5, R:=oNIORutsche_eTeilSensor1 OR oNIORutsche_eTeilSensor2 OR , CV:=binVal, Q:=actFlag);
Kommt darauf an, ob Du ihn benutzen willst. Der Eingang S übernimmt die Vorgabe nur bei einer positiven Flanke.kann der Eingang S immer 1 sein oder muss er auch wieder abfallen---also immer auf 5 vorbesetzt
Ich erkenne da keinen Timer, nur einen Counter.
Bei R setzt der den also auf auf 5 zurück? Dann bräuchte ich den S erst gar nicht?Kommt darauf an, ob Du ihn benutzen willst. Der Eingang S übernimmt die Vorgabe nur bei einer positiven Flanke.
//Abwärtszähler 5 Stück damit nicht immer nIO Fehler bringt (Rückwärtszählen=CD; Rücksetzen=R; Fehler quittieren Visu=S; Vorbelegt auf 5=PV; Ausgang immer da bis Rückzählung 0=Q)
currVal :=S_CD(C_NO:=Z1, CD:=NOT oNIORutsche_eTeilSensor1 OR NOT oNIORutsche_eTeilSensor2 , S:=,
PV:=16#5, R:=oNIORutsche_eTeilSensor1 OR oNIORutsche_eTeilSensor2 , CV:=binVal, Q:=actFlag);
Für mein Verständnis (rück-)setzt der R immer nur auf 0 - für alles andere (1..999) wird S benötigt.Bei R setzt der den also auf auf 5 zurück? Dann bräuchte ich den S erst gar nicht?
oder muss ich einmal S setzen damit er vorbelegt ist?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?