kann ich dass so machen?

Zuviel Werbung?
-> Hier kostenlos registrieren
Dann erfolgen die Ausgangszuweisungen aber nur im Zyklus des Zustandswechsels. Geht also nur für Ausgänge, die für die Dauer des neuen Zustandes ihren Status nicht mehr ändern sollen.

Der neue Zustand sollte natürlich auch die neuen Ausgangszustände beinhalten, das ist aber kein Muss. Damit hat man die Ausgangszustände an 2 verschiedenen Positionen und das ist unübersichtlicher. Ich setze lieber eine schnellere SPS ein, als das so zu machen.

Es gibt aber Situationen, in denen es nicht anders möglich ist. Bei der Steuerung der Montrac-Monorail-Bahn hatte ich am Anfang das Problem, wenn 2 Wagen gleichzeitig an den 2 Spuren einer Weiche ankamen, dass dann der Automat die jeweils andere Spur als leer detektiert hat :) Die Folge war, das die Weiche umschaltete während ein Wagen auf der Weiche war. 3000Eu rastem dem Boden entgegen. Ich war gezwungen, den Automat so zu bauen, dass Änderungen am Eingang sofort übernommen wurden.
 
Also die Funktion habe ich ja nun verstanden, jedoch komme ich mit der einrichtung der TYPE nicht ganz klar...

Also bei CoDeSys habe ich nun unter Karteireiter DATENTYPEN links unten
das Objekt tBetriebsart angelegt.

Da steht dann:

Code:
TYPE
    tBetriebsarten :
STRUCT
END_STRUCT
END_TYPE
dann habe ich im eigentlichen Programm unter dem "CASE Zustand OF" nun das erste CASE deklariert (in diesem Falle ja Init:). Dann ging das Variablen Deklarationsfenster auf und ich habe unter TYPE "tBetriebsarten" ausgewählt...

jetzt steht das also unter VAR so:

Code:
VAR
Betrieb: tBetriebsarten;
Init: tBetriebsarten;
Start: tBetriebsarten;
END_VAR
das sieht ja nun son bisschen anders auch als bei Euch? Mache ich da was falsch?

Danke
 
Schau dir mal die Hilfedatei an. Da sind zu jedem ST-Befehl auch in der Regel ein oder zwei Beispiele. Vergess die Initialisierung im Var-Block nicht
 
geht das eigentlich so?

Code:
VAR
startP2     :R_TRIG;
laufzeitP2     :TP;
VentielAUF    :TP;
ENDVAR

startP2     (CLK:=ZYKL=Filtern , Q=> );
laufzeitP2    (IN := startP2.Q, PT:= t_Filt_Zeit);
VentielAUF    (IN := [B]laufzeitP2.PT-t_Filt_VentStellZeit[/B], PT:= t_Filt_VentStellZeit);

Damit möchte ich erreichen, dass die Pumpe P2 läuft, solange das Ventiel (welches 5 sec. Fahrzeit hat) öffnet.

Wenn ich hinter dem namen des TP Bausteines ein"." eingebe bekomme ich die Auswahl mit ET, IN PT, Q und StartTime. Was ist denn StartTIME?
steht leider nicht in der Hilfe...

DANKE!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
geht das eigentlich so?
Die Antwort gibt in diesem Fall schon der Compiler, nämlich Nein. PT.In ist doch vom Typ Bool.

Damit möchte ich erreichen, dass die Pumpe P2 läuft, solange das Ventiel (welches 5 sec. Fahrzeit hat) öffnet.
Ich würde dafür nicht mit mehreren Zeitbausteinen herumhantieren, einer reicht.
Code:
FilterZeitTimer(In:=ZYKL=Filtern,     (* FilterZeitTimer ist ein TON *)
                      PT:=t_Filt_Zeit);
Pumpe:=(ZYKL=Filtern) AND NOT FilterZeitTimer.Q;
Ventil:=Pumpe AND (FilterZeitTimer.ET<t_Filt_Zeit-t_Filt_VentStellzeit);

Wenn ich hinter dem namen des TP Bausteines ein"." eingebe bekomme ich die Auswahl mit ET, IN PT, Q und StartTime. Was ist denn StartTIME?
Das ist eine interne Variable des TP-Bausteins. CoDeSys erlaubt von aussen zumindest lesende Zugriffe auf solche Variablen, was aber eigentlich nicht sein dürfte.
 
Zurück
Oben