Farbmischprogramm programmieren

Kleinesresal

Level-1
Beiträge
3
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,
ich habe die Aufgabe ein Farbmischprogramm zu programmieren.
Ich habe nun in Codesys die ersten Bausteine schon programmiert.

Nun müsste ich diese in das Hauptprogramm integrieren.
Nun wäre erst mal Meine frage, da ich ne ziemliche niete in Programmieren bin, ob ich überhaupt auf dem richtigen Weg bin.
Falls nicht, hoffe Ihr könnt mir helfen...
Bei den FB BEfehlsausgabe müssten die gegeneinander verriegelt werden. Funktioniert das überhaupt so?


Mittlerweile blicke ich auch schon nicht mehr durch ob i ned komplett falsch dran bin..
Danke schon mal

Gruß
 

Anhänge

  • Automatik.png
    Automatik.png
    9 KB · Aufrufe: 35
  • Befehlsausgabe.png
    Befehlsausgabe.png
    29,1 KB · Aufrufe: 37
  • FB Betriebsarten.png
    FB Betriebsarten.png
    34,3 KB · Aufrufe: 34
  • Meldeleuchten.png
    Meldeleuchten.png
    26,5 KB · Aufrufe: 37
  • Aufgabenstellung.pdf
    Aufgabenstellung.pdf
    142,6 KB · Aufrufe: 14
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,
so wie ich es verstehe oder besser gesagt zu schreiben, ist, dass wenn S_PON der EIngang ein Signal bekommt sollt der Output ON sein.
Dieser soll dann dauerhaft aktiv sein bis der Schalter wieder ausgeschaltet wird.
#ON:= #S_PON;
Wäre dies der richtige bzw. bessere Weg?
Aber kann ich dann das Ausgangssignal in den Meldeleuchten FB wieder verwenden?

Gruß
 
Hallo Kleinesresal,

ich verstehe deine Aufgabenstellung so, dass es ein Taster für den Stromstoß gibt. Das bedeutet, du drückst ihn einmal, der Stromstoß geht an. Du drückst ihn wieder und er geht aus.
In deinem Code ist #ON nur so lange an, wie du den Taster gedrückt hältst.
 
Dann brauche ich ja quasi nur hinten dazu 'ON:= 'S_PON:=1
Es müsste ja dann auch mit einem R_TRIG gehen oder?


Ich weiß in der ST Sprache bin ich ne niete. Leicht tu ich mich mit FUP. Aber leider muss ich es in ST schreiben. ... :-(
 
Dann brauche ich ja quasi nur hinten dazu 'ON:= 'S_PON:=1
Jetzt sind wir wieder beim Thema MehrfachZuweisung.
Meines Wissens (bin ST-Laie) sind MehrfachZuweisungen in ST erlaubt/möglich.
MehrfachZuweisung bedeutet, dass man das Ergebnis eines Ausdrucks in einer einzigen ProgrammAnweisung gleich mehreren Variablen zuweisen kann/darf.
Der Ausdruck ist das, was rechts von dem letzten ':=' der Anweisung steht (in Deinem Beispiel die '1').
Die Variable[n] der/denen etwas zugewiesen wird, sind die Variablen, die links von dem letzten ':=' der Anweisung stehen. Diese Variablen sind jeweils wieder durch ein ':=' von einander getrennt (in Deinem Beispiel ON := S_PON).
Wenn ich Dich richtig verstanden habe, ist S_PON ein Eingang. Einem Eingang einen Wert zuzuweisen, ist jedoch normalerweise weder sinnvoll noch zweckmässig noch zulässig.

Es müsste ja dann auch mit einem R_TRIG gehen oder?
Hmmm. Was müsste auch mit einem R_TRIG gehen? Beabsichtigst Du eine FlankenErkennung?

Ich weiß in der ST Sprache bin ich ne niete. Leicht tu ich mich mit FUP. Aber leider muss ich es in ST schreiben. ... :-(
Wenn Du Dich in FUP z.B. mit R_TRIG leicht tust, dann dürfte Dir R_TRIG auch in ST keine Probleme bereiten.
Viel wichtiger ist, zu verstehen,
- wozu R_TRIG benutzt wird (Erkennung einer positiven Flanke),
- was es tut (beim Erkennen einer positiven Flanke einen Impuls bilden, der 1 Zyklus lang TRUE ist) und
- was bei seiner Benutzung beachtet werden muss (dass der "FlankenMerker", den der R_TRIG belegt und den Du als Parameter angeben/festlegen musst, seinen Inhalt bis zum nächsten Zyklus unverändert beibehalten muss z.B. als GLOBAL oder STATIC oder IN_OUT Variable, also nicht temporär sein darf und Dir auch nicht für anderweitige Benutzung zur Verfügung steht).

PS:
Z.B. die MehrfachZuweisung
A := B := C := C +1 ;
bewirkt Folgendes:
C := C +1 ; // auf den Inhalt von C wird eine 1 addiert und das Ergebnis wird in C gespeichert
B := C ; // der Inhalt von C wird unverändert in B abgespeichert
A := B ; // der Inhalt von B wird unverändert in A abgespeichert
 
Zuletzt bearbeitet:
Zurück
Oben