marsmännchen
Level-2
- Beiträge
- 103
- Reaktionspunkte
- 1
-> Hier kostenlos registrieren
Hallo zusammen.
Ich würde einen kleinen Lehrkurs für Anfänger benötigen.
Ich versuche auf meiner PFC200 immer wieder mal in ST zu programmieren. Jetzt habe ich folgende Frage:
Ich benutze einen TP um meinen Rollläden den Impuls für Öffnen/Schließen und den Input für die Position zu übermitteln.
Einen Impuls deshalb, weil ich ja von anderer Stelle im Programm die Globalen Variablen für Öffnen/Schließen und Positionierung auch nochmal beschreiben will. Durch z.B.: Taster, Dämmerung,...
Also denke ich mir als Laie " OK, der Impuls von TP setzt das ganze mal für 2 sek. auf true-> Wert wird übermittelt -> Trigger für Positionierung wird gesetzt und dann ist Schluss Globaler Variable beschreiben"
Aber mir kommt es so vor als würde der TP die Variable auf FALSE halten und ich kann nichts mehr daran ändern.
Und hier ist ein anderer Programmabschnitt mit dem TP_0 der die Trigger (GVL_Main_Control.xUGRollWZRTrigPos,....) scheinbar auf FALSE zwingt.
Wenn ich den Programmteil nämlich lösche funktioniert mein wunderbares Spiel.
Kann mir jemand sagen wie ihr machen würdet? Es kann doch nicht sinnhaft sein für jede Ansteuerung eine eigene Variable zu erstellen und die dann mit OR an den BlindInput zu klemmen
Danke für die Lehreinheit schonmal.
Gruß Patrick
Ich würde einen kleinen Lehrkurs für Anfänger benötigen.
Ich versuche auf meiner PFC200 immer wieder mal in ST zu programmieren. Jetzt habe ich folgende Frage:
Ich benutze einen TP um meinen Rollläden den Impuls für Öffnen/Schließen und den Input für die Position zu übermitteln.
Einen Impuls deshalb, weil ich ja von anderer Stelle im Programm die Globalen Variablen für Öffnen/Schließen und Positionierung auch nochmal beschreiben will. Durch z.B.: Taster, Dämmerung,...
Also denke ich mir als Laie " OK, der Impuls von TP setzt das ganze mal für 2 sek. auf true-> Wert wird übermittelt -> Trigger für Positionierung wird gesetzt und dann ist Schluss Globaler Variable beschreiben"
Aber mir kommt es so vor als würde der TP die Variable auf FALSE halten und ich kann nichts mehr daran ändern.
Code:
TON_RollUg_TrigPos1(IN:=xStateRollUg=1,PT:=T#2S);
TON_RollUg_TrigPos2(IN:=xStateRollUg=2,PT:=T#2S);
R_Trig_SavePos(CLK:=xStateRollUg=1);
// Hier wird die Position gespeichert bei Abwesenheit der Personen
IF R_Trig_SavePos.Q THEN
bySavedPosRollWZR:= PersistentVars.byRollActualPosWZR;
bySavedPosRollWZL:= PersistentVars.byRollActualPosWZL;
bySavedPosRollWasch:= PersistentVars.byRollActualPosWasch;
bySavedPosRollTerr:= PersistentVars.byRollActualPosTerr;
bySavedPosRollFranz:=PersistentVars.byRollActualPosFranz;
END_IF
//Ab hier wird die Anwesenheit verarbeitet
IF MB_Gen.xPresenceDetectionON THEN
CASE xStateRollUg OF
1: //Case1 Keine Anwesenheit erkannt
//Zuerst werden die Positionswerte von Konstanten übernommen
GVL_Main_Control.byUGRollWZRSetPos:= Control_RollUG.byUgPosClosed;
GVL_Main_Control.byUGRollWZLSetPos:= Control_RollUG.byPosWZLCAT;
GVL_Main_Control.byUGRollWaschSetPos:= Control_RollUG.byUgPosClosed;
GVL_Main_Control.byUGRollTerrSetPos:= Control_RollUG.byUgPosClosed;
GVL_Main_Control.byUGRollFranzSetPos:= Control_RollUG.byUgPosClosed;
TP_RollUg_Pulse1(IN:=TON_RollUg_TrigPos1.Q,PT:=T#2S);
IF TON_RollUg_TrigPos1.Q THEN
//Jetzt werden die Trigger gesetzt für den OscatBlindInput
GVL_Main_Control.xUGRollWZRTrigPos:= TP_RollUg_Pulse1.Q;
GVL_Main_Control.xUGRollWZLTrigPos:=TP_RollUg_Pulse1.Q;
GVL_Main_Control.xUGRollWaschTrigPos:=TP_RollUg_Pulse1.Q;
GVL_Main_Control.xUGRollTerrTrigPos:=TP_RollUg_Pulse1.Q;
GVL_Main_Control.xUGRollFranzTrigPos:=TP_RollUg_Pulse1.Q;
END_IF
//Case2 Anwesenheit erkannt
2:
//Hier das selbe wenn jemand anwesend ist
GVL_Main_Control.byUGRollWZRSetPos:= bySavedPosRollWZR;
GVL_Main_Control.byUGRollWZLSetPos:= bySavedPosRollWZL;
GVL_Main_Control.byUGRollWaschSetPos:= bySavedPosRollWasch;
GVL_Main_Control.byUGRollTerrSetPos:= bySavedPosRollTerr;
GVL_Main_Control.byUGRollFranzSetPos:= bySavedPosRollFranz;
TP_RollUg_Pulse2(IN:=TON_RollUg_TrigPos2.Q,PT:=T#2S);
IF TON_RollUg_TrigPos2.Q THEN
GVL_Main_Control.xUGRollWZRTrigPos:=TP_RollUg_Pulse2.Q;
GVL_Main_Control.xUGRollWZLTrigPos:=TP_RollUg_Pulse2.Q;
GVL_Main_Control.xUGRollWaschTrigPos:=TP_RollUg_Pulse2.Q;
GVL_Main_Control.xUGRollTerrTrigPos:=TP_RollUg_Pulse2.Q;
GVL_Main_Control.xUGRollFranzTrigPos:=TP_RollUg_Pulse2.Q;
END_IF
END_CASE
END_IF
Und hier ist ein anderer Programmabschnitt mit dem TP_0 der die Trigger (GVL_Main_Control.xUGRollWZRTrigPos,....) scheinbar auf FALSE zwingt.
Wenn ich den Programmteil nämlich lösche funktioniert mein wunderbares Spiel.
Kann mir jemand sagen wie ihr machen würdet? Es kann doch nicht sinnhaft sein für jede Ansteuerung eine eigene Variable zu erstellen und die dann mit OR an den BlindInput zu klemmen
Danke für die Lehreinheit schonmal.
Gruß Patrick