easy-forum

Downloadbereich => Xsoft-CoDeSys => Thema gestartet von: Knodelpa am Dezember 11, 2006, 16:38:19 Nachmittag

Titel: Bis zu 64 analoge Eingänge mit easy Control
Beitrag von: Knodelpa am Dezember 11, 2006, 16:38:19 Nachmittag
Hallo easy Control Freunde,

das angehängte Programm verdeutlicht recht einfach, wie man mit einem Analogmultiplexer MUX-U-16 der Firma Rinck Electronic, an einer easy Control bis zu 64 analoge Eingänge realisieren kann. Das notwendige Programm der easy Control ist recht kompakt :-)

Der benötigte Analogmultiplexer MUX-U 16 kostet nur ca. 60 €.

siehe auch: http://easy-forum.net/index.php?topic=2295.msg10421#msg10421

 :) ;) :D
Gruß Paul
Titel: Re: Bis zu 64 analoge Eingänge mit easy Control
Beitrag von: Knodelpa am Dezember 12, 2006, 16:18:41 Nachmittag
Hallo easy Control Freunde,

habe eben gerade festgestellt, dass es auch einen Multiplexer für Stromeingänge gibt. Der MUX-I 16 arbeitet intern mit 500 Ohm Widerständen. Bedingt durch den Innenwiderstand der easy Control wird der Maxbereich der 10V nicht ganz erreicht. Durch eine kleine Skalierung kann dies aber problemlos wieder umskaliert werden :-)

Der I Mux kostet ebenfalls ca. 60 €.

 :) ;) :D
Viele Grüße
Paul
Titel: Re:Bis zu 64 analoge Eingänge mit easy Control
Beitrag von: radar17892 am Juli 20, 2013, 15:14:45 Nachmittag
Hallo Leute,

Hier mein Beispiel für den Einsatz eines Rinck MUX U16/1 + LV MV-PT1000.-50-+150°C an einer EC4P.

Rinck Anschlussplan:
http://www.rinck-electronic.de/rinck2001/pdf/AN_B391_1_D_MUX-U-I_Anschluss.PDF (http://www.rinck-electronic.de/rinck2001/pdf/AN_B391_1_D_MUX-U-I_Anschluss.PDF)

Es werden 16 PT1000 abgefragt mit Filter, Sensorüberwachung, Skalierung -50,0 - 150,0°C und Offset.
Damit wäre der Großteil der Temperaturbereiche abgedeckt, mit guter Auflösung.

Ich hab das ganze auch schon mit KP10 Sensoren(LM335+Versorgungsplatine) laufen die über den Multiplexer direkt auf ein XNE Analogmodul gehen. Hier ist nur die Signalaufbereitung etwas anders.

Die FB`s sind in CFC erstellt.
in der zib ist auch eine Doku der FB als xps

Gruß Thomas
Titel: Antw:Bis zu 64 analoge Eingänge mit easy Control
Beitrag von: radar17892 am Dezember 04, 2016, 11:07:04 Vormittag
Hallo easy Freunde,

in der Praxis habe ich festgestellt, das bei Verwendung des Multiplexers zur Temperaturmessung mit PT1000 gewisse Einschwingzeiten zu beachten sind. Trotz EMV-gerechter Installation, kam es immer zu Schwankungen auf den Kanälen. Dies Bestätigte mir auch Rinck. Da es oft nicht erforderlich ist einen Durchlauf < 2s zu machen, habe ich die Variante von Paul etwas abgeändert.
Das Programm wurde nun als FB realisiert.
Die Einschwingzeit kann nun von aussen als n Zyklen vorgegeben werden.
Zur Info wird an CV der aktive Kanal des Multiplexers ausgegeben.

Wie das Original, ist der FB für einen Multiplexer. Zur Kaskadierung muss der Code entsprechend abgeändert werden.
Der Code ist verwendbar unter Codesys 2.3 / 3.5 und wurde auf XV100 getestet.

FUNCTION_BLOCK Read_Mux16
(*
##################################################################################
Programmbeschreibung:
Rinck Multiplexer Mux-U-16 steuern und auslesen
Sensorwert über einstellbare Zyklenzahl einschwingen lassen, einlesen
und in einem Array ablegen
Die Einschwingzeit kann zwischen 3-1000 Zyklen eingestellt werden
##################################################################################
                           Änderungsindex
Name:Paul Knodel Version:0.1 Datum:12/2006 Grund: neu
Name:TL Version:0.2 Datum:03.12.16 Grund:
-leicht änderbare Einschwingzeit und Ausgabe Kanalnummer
##################################################################################
*)
VAR_INPUT
IN : INT; (* Analogeingang *)
ESZ: INT :=5; (* Einschwingzeit in Zyklen *)
END_VAR
VAR_OUTPUT
Analogwerte: ARRAY [0..15] OF INT;
Q1:BOOL; (* Muxkanal 2^0 *)
Q2:BOOL; (* Muxkanal 2^1 *)
Q3:BOOL; (* Muxkanal 2^2 *)
Q4:BOOL; (* Muxkanal 2^3 *)
CV:INT; (* Aktiver Mux-Kanal *)
END_VAR
VAR
Zyklus: INT; (*Zyklenzähler*)
Adresse: BYTE:=0;(*Adressbyte für Array und Muxkanal*)
EZP: INT; (*Einlesezeitpunkt*)
END_VAR


(*Einlesen eines Analogmultiplexers der Firma Rinck Elektronik*)
EZP:= LIMIT (3, ESZ, 1000); (*Einlesezeitpunkt bestimmen und begrenzen*)
(*Zykluszähler*)
Zyklus:=Zyklus+1;

IF Zyklus = 1 THEN
(*Adressleitungen Mux ansteuern*)
  Q1:=Adresse.0;
Q2:=Adresse.1;
Q3:=Adresse.2;
Q4:=Adresse.3;
CV:= Adresse +1;
ELSIF Zyklus = EZP THEN
Analogwerte[Adresse]:=IN; (*Analogeingang in Array schreiben*)
ELSIF Zyklus >= (EZP + 1) THEN
(*nach einlesen: Adressen nachführen, Zykluszähler löschen*)
Adresse:=Adresse+1;
IF Adresse >=16 THEN Adresse:=0; END_IF;
Zyklus:=0;
ELSE ;
END_IF

Wer möchte kann sich passend zum FB auch noch eine Struktur erstellen zB:
TYPE STR_Mux16 :
STRUCT
Analogwerte: ARRAY [0..15] OF INT; //Wertespeicher
CV:INT; //Aktiver Mux-Kanal
END_STRUCT
END_TYPE

Gruß Thomas


Hinweis: Wenn die Messwerte auf Fehler überwacht werden, darf dies erst nach einem vollen Durchlauf aktiv werden, oder man initialisiert das Array mit neutralen Werten die keine Fehlermeldung auslösen.