-> Hier kostenlos registrieren
Guten Abend,
ich möchte für mein Haus eine WAGO Steuerung nutzen.
Wie im Titel beschrieben ist Codesys für mich Neuland.
Ich habe als erstes das Ampelprojekt erfolgreich abgearbeitet und danach einen eigenen Baustein programmiert (Stromstoßrelais) - funktioniert auch ^^
Zum einarbeiten war das soweit in Ordnung aber nun wird es für mich komplizierter.
Ich habe mir einen Baustein geschrieben (der sehr wahrscheinlich nicht funktioniert) um mit einem RTD Eingang 16 PT1000 einzulesen.
Der Baustein ist exemplarisch nur mit 2 Werten programmiert.
Als Sprache habe ich mir AWL ausgesucht weil ich mit ST wirklich noch nicht zurecht komme.
Ich würde mich über Tipps freuen wie man in Codesys AWL "richtig" programmiert. Ich vermute der TON funktioniert vielleicht auch nicht.
ich möchte für mein Haus eine WAGO Steuerung nutzen.
Wie im Titel beschrieben ist Codesys für mich Neuland.
Ich habe als erstes das Ampelprojekt erfolgreich abgearbeitet und danach einen eigenen Baustein programmiert (Stromstoßrelais) - funktioniert auch ^^
Zum einarbeiten war das soweit in Ordnung aber nun wird es für mich komplizierter.
Ich habe mir einen Baustein geschrieben (der sehr wahrscheinlich nicht funktioniert) um mit einem RTD Eingang 16 PT1000 einzulesen.
Der Baustein ist exemplarisch nur mit 2 Werten programmiert.
Als Sprache habe ich mir AWL ausgesucht weil ich mit ST wirklich noch nicht zurecht komme.
Ich würde mich über Tipps freuen wie man in Codesys AWL "richtig" programmiert. Ich vermute der TON funktioniert vielleicht auch nicht.
Code:
PROGRAM Multiplex
VAR_INPUT
Analog_IN: INT;
END_VAR
VAR
MB: BYTE := 0;
Pause: TON;
Temp1: INT;
Temp2: INT;
END_VAR
Code:
(*************************************************************************************
das Merkerbyte ist für die Dezimalzählung von 0-15 und für das
Bitmuster:
0 0 0 0 0
0 0 0 1 1
0 0 1 0 2
0 0 1 1 3
zuständig. Die Dezimalzahl wird genutzt um einen Analogeingang auf 16 verschiedene Variablen zu speichern.
Das Bitmuster wird in das Ausgangsbyte geschoben um beim Multiplexer den nächsten PT1000 anzusteuern.
***************************************************************************************)
LD MB (* Merkerbyte - wird hochgezählt*)
GT 15 (*größer 15 soll dann genull werden*)
JMPC NULL
(*anstonsten addiere eine 1 dazu*)
LD MB
ADD 1
ST MB
ST OUT_Mux (*OUT_Mux AT %QB1: BYTE; Ich hoffe man kann so ein Ausgangsbyte ansteuern?*)
(*1 Sek. Pause um den Eingang zu beruhigen*)
LD TRUE
ST Pause.IN
CAL Pause(PT:= T#1s)
LD Pause.Q
(*Ab hier wird MB verglichen und der Wert vom Analogeingang in die passede Variable geschrieben*)
LD MB
EQ 1
LD Analog_IN
ST Temp1
LD MB
EQ 2
LD Analog_IN
ST Temp2
(* Ein letzter Sprung damit MB nicht genullt wird*)
JMP ENDE
NULL:LD 0
ST MB
ENDE: