# Unterschiede Analogeingang 4-20mA Single-Ended, Differenzeingang | Füllstandsüberwachung Zisterne



## world-e (1 Juli 2022)

Hallo zusammen,

ich habe bei mir im Haus eine Wago 750-881 am Laufen.

Ich möchte nun eine Füllstandsüberwachung der Zisterne mit einem Analogeingang 4-20mA realisieren. Dazu möchte ich den Füllstandssensor TL-136 verwenden. Ein Datenblatt dazu konnte ich leider nicht finden. Er funktioniert auf jeden Fall mit 4-20mA. man findet ihn auf jeden Fall einfach über Google.

Meine Hauptfrage ist allerdings, was der Unterschied zwischen den Analogeingangskarten ist. Hier gibt es welche mit Differenzeingang und Single-Ended.
Konkret geht es um:
750-466 2-Kanal-Analogeingang; 4 … 20 mA; Single-Ended
750-454 2-Kanal-Analogeingang; 4 … 20 mA; Differenzeingang

Kann mir hier jemand den Unterschied erklären und sagen, welche Karte für meinen Zweck die richtige ist?

Momentan habe ich leihweise die 750-454 und die 750-455 (4-Kanal single-ended) zur Verfügung

Weitere Fragen zur Umsetzung sind nicht ausgeschlossen 

Vielen Dank


----------



## .:WAGO::015618:. (1 Juli 2022)

Hallo world-e,

generell muss beim aufbau der 4..20mA stromschleife beachtet werden, dass es immer _eine_ aktive und _eine (oder mehrere)_ passive komponente geben muss. wenn also der sensor aktiv ist kann die messkarte nur passiv sein und umgekehrt.

unsere differentiellen eingänge (wie z.b. 750-454) sind immer passiv, das bedeutet der sensor muss aktiv sein. bei einem differentiellen eingang sind bei jedem kanal immer beide "beinchen" des mess-shunts als separate klemme rausgezogen und zusätzlich ist das ganze potentialfrei. man kann also sagen, dass sich ein differentieller messeingang ähnlich wie ein multimeter verhält.

single ended eingänge sind dagegen immer potentialbehaftet (entweder 24V oder GND). die 750-455 hat z.b. vier gemeinsame GND anschlüsse für alle vier kanäle zusammen. auch bei der 750-455 müsste der sensor wieder aktiv sein, da dieses modul den sensor nicht mit strom versorgt (also passiv ist). das gegenstück dazu ist die 750-455/020-000; diese hat statt der gemeinsamen masse vier anschlüsse für 24V. das modul ist also aktiv und man kann nur passive sensoren anschließen.

die 750-466 ist eine sonderform der single ended module, da hier sowohl anschlüsse für 24V als auch für die masse (GND) zur verfügung stehen. man kann also wahlweise aktive oder passive sensoren anschließen, je nachdem welche klemmen man benutzt.

vielleicht noch eine generelle sache zum schluss: im normalfall sind aktive sensoren als vierdraht (oder dreidraht) und passive sensoren als zweidraht ausgeführt.

ich hoffe das hilft schon mal ein bisschen bei der auswahl und der passenden verdrahtungsvariante für deinen sensor.

viele grüße


----------



## world-e (1 Juli 2022)

Danke für die Rückmeldung, dann sind die Eingangskarten, die ich da habe nicht zu gebrauchen bei einem passiven Sensor. Extern kann man die 24V nicht einspeisen?


----------



## .:WAGO::015618:. (1 Juli 2022)

doch das ist auch möglich indem man den stromkreis vom netzteil in reihe über den sensor und den (am besten differentiellen) eingang schleift. wie gesagt, dann hat man den eingang letztlich wie ein multimeter verwendet.

das ist dann halt mehr verdrahtungsaufwand, funktioniert aber auch.

viele grüße


----------



## world-e (1 Juli 2022)

.:WAGO::015618:. schrieb:


> doch das ist auch möglich indem man den stromkreis vom netzteil in reihe über den sensor und den (am besten differentiellen) eingang schleift. wie gesagt, dann hat man den eingang letztlich wie ein multimeter verwendet.
> 
> das ist dann halt mehr verdrahtungsaufwand, funktioniert aber auch.
> 
> viele grüße


Also würde es dann so aussehen?


----------



## .:WAGO::015618:. (1 Juli 2022)

genau so


----------



## Otwin (1 Juli 2022)

Ob das mal so funktioniert?
Der Sensor müsste wohl ehr zwischen die 24V und den AI1.
Und Masse auf 0V. 
Sonst kannst du die restlichen 3 AI ja nicht mehr sinnvoll nutzen.


----------



## world-e (1 Juli 2022)

Habe jetzt mal die andere Eingangskarte 750-454 verwendet und den Sensor vor dem Eingang gesetzt. Obwohl es bei der Eingangskarte wohl egal wäre.



Der Sensor funktioniert zumindest in der Theorie.

Nur sind jetzt weitere Fragen aufgekommen:

Wie skaliere ich nun den WORD-Wert auf ein Balkendiagramm von 0-100%
Wie verhindere ich andauernde Schwankungen im Balkendiagramm?

Vielen Dank


----------



## Passion4Automation (1 Juli 2022)

Schau mal in der Building HVAC oder OScat Lib nach Skalierungs und Filter Bausteinen, genauer Name fällt mir grad nicht ein.
Du musst einen 0 Punkt und einen 100% Punkt  definieren.
Das Word kannst du ja in andere Datentypen wandeln. Da musst du dich spielen.


----------



## world-e (1 Juli 2022)

Konnte dazu leider noch nichts finden. Muss ich noch weiter recherchieren.

Dachte, dass hier einige Analogwerte skalieren und in Balkendiagrammen anzeigen.


----------



## Plan_B (1 Juli 2022)

Frage zu Wago und Temperaturmessung
					

Hallo,  ich habe mir günstig einen gebrauchten Wago 750-469, Typ K Thermocoupler gekauft und wollte fragen, wie weit ich hier mit einer PT1000 Sonde komme, also könnte ich die Ofentemperatur oder die Temperatur vom Grill, 300 - 400 °C damit noch einigermaßen genau messen? Normalerweise, wenn ich...




					www.sps-forum.de


----------



## Thruser (1 Juli 2022)

Als ersten Ansatz gibt es da den Dreisatz. Allgemeingültiger ist die Zweipunkteform, dann gibt es hier im Forum auch noch ein  FAQ Bereich, dort findet man zu dem Thema einen ausführlichen Beitrag von Oliver . Und dann gibt es auch noch die Suche.

Gruß


----------



## world-e (2 Juli 2022)

Habe etwas gefunden und in der Theorie könnte es auch funktionieren. Jetzt muss ich erst mal den Sensor in der Zisterne versenken.

Als erstes habe ich den WORD-Wert "geglättet", damit die Anzeige nicht ständig kleine Änderungen anzeigt, dazu den *FB_wSendOnDelta* aus der Wago Gebäude-Bibliothek verwendet.
Danach den Wert skaliert mit dem FB *FuAI* aus der Building HVAC 03 Bibliothek verwendet.

In Codesys sieht es dann so aus:


----------



## Mr.Spok (7 Juli 2022)

Hast du die 3 niederwertigsten Bits des Eingangswortes rausgeschoben? Die beinhalten nur die Statusinformationen des Eingangs.
Der eigentliche Analogwert liegt auf Bit3 -Bit14. ansonsten könnte es zu Messfehlern kommen.

Grüße Jan


----------



## world-e (7 Juli 2022)

Mr.Spok schrieb:


> Hast du die 3 niederwertigsten Bits des Eingangswortes rausgeschoben? Die beinhalten nur die Statusinformationen des Eingangs.
> Der eigentliche Analogwert liegt auf Bit3 -Bit14. ansonsten könnte es zu Messfehlern kommen.
> 
> Grüße Jan


Da ich nicht weiß, wie man das machen sollte, habe ich das auch nicht gemacht.   

Genauso wenig, wie eine "Kalibrierung" mache. Also wie ich die Werte anpassen kann, wenn die Zisterne komplett leer und komplett voll ist. Aber momentan reicht mir die ungefähre Anzeige.

Aber ich nehme gerne Input auf, wie ich die Einstellungen vornehmen kann.


----------



## Mr.Spok (7 Juli 2022)

ich habe hier ein Beispiel für die Analogwertverarbeitung in Codesys 2.3. Da sind 2 Funktionen aus der Oscat-Lib mit dabei. Eventuell kannst du es ja bei dir
mit einbinden.


----------



## Heinileini (7 Juli 2022)

Mr.Spok schrieb:


> Hast du die 3 niederwertigsten Bits des Eingangswortes rausgeschoben? Die beinhalten nur die Statusinformationen des Eingangs.
> ... ansonsten könnte es zu Messfehlern kommen.



Na, durch das Rausschieben der drei niederwertigsten Bits kann man sich aber noch viel grössere "Mess"-Fehler einfangen!
Da es sich hier wirklich nur um die 3 niederwertigsten Bits handelt, die man "plattmachen" soll, ist ihr StörEinfluss relativ gering und oft wird deshalb auch bewusst auf das Plattmachen verzichtet.
Zumindest bei Siemens wird unterstellt, dass die übrigen 13 Bits UNverschoben weiterverarbeitet werden. Das macht auch Sinn, weil es dann fast (!) egal ist, in wievielen (relevanten) Bits das Ergebnis der D/A-Wandlung zur Verfügung steht. Die Anzahl der Bits hat dann nur einen Einfluss darauf, wie fein die Abstufung (Granularität) der UmwandlungsErgebnisse ist.

Sooo, um zunächst bei der Schieberei zu bleiben: das Wort um 3 BitPositionen nach rechts schieben und dann um 3 BitPositionen nach links zurückschieben.
Es ist in diesem Fall egal, ob man für das RechtsSchieben einen Befehl benutzt, der "Nullen nachzieht" oder "das VorzeichenBit nachzieht".
Falls dies zu sehr nach Böhmischen Dörfern oder Bahnhof klingt: bitte erstmal vergessen (und bei Gelegenheit tiefer einarbeiten), denn es gibt noch zwei andere LösungsWege:

- verUNDen mit einer Maske 16#FFF8 (falls auch hier Böhmische Dörfer oder Bahnhof gilt, dann jetzt erstmal ignorieren und weiterlesen!)

- dividieren durch 8 und anschliessend wieder mit 8 multiplizieren. Liegt das WandlungsErgebnis (mit den hineingeschmuggelten StatusBits) ohnehin im DatenTyp INT vor, so drängt sich dieser Lösungsweg geradezu auf.
Dieser Lösungsweg hat aber evtl. einen Haken. Ein "ganz schlauer" Compiler könnte einem einen Strich durch die Rechnung machen, wenn er nämlich bemerkt, dass direkt nach der Division durch eine Zahl eine Multiplikation mit derselben Zahl ausgeführt werden soll und er könnte in seinem ÜberEifer denken, dass er der SPS deshalb sowohl das Dividieren als auch das Multiplizieren ersparen kann.
Als Pessimist würde ich deshalb schreiben
HilfsVariable := MessWert / 8 ;
Ergebnis := HiflsVariable * 8 ;
statt einfach
Ergebnis := MessWert / 8 * 8 ;



Mr.Spok schrieb:


> Der eigentliche Analogwert liegt auf Bit3 -Bit14.


Nein, auf Bit3 .. Bit1*5*. Wer behauptet, Bit15 sei ohnehin "nur" das VorzeichenBit, hat die Darstellung im ZweierKomplement nicht verstanden.


----------



## Mr.Spok (7 Juli 2022)

Bit15 wird nicht benutz...


----------



## Heinileini (7 Juli 2022)

Mr.Spok schrieb:


> Bit15 wird nicht benutz...


Aha, weil "<0  nicht möglich (Verpolungsschutz)".
Ich gebe mich geschlagen ... und denke trotzdem, dass ich nichts "Schlimmes" behauptet habe. 

Anm.:
Bei "VerpolungsSchutz" dürfte es sich um eine reine HardwareAngelegenheit handeln.
Ob auch nach der A/D-Wandlung die Software bzw. Firmware nochmal "draufhaut", damit Bit15 nie zu 1 werden kann?
Wahrscheinlich. 

Übrigens, ich sehe gerade, dass das höchstwertige der 3 niederwertigsten Bits nie 1 werden soll. Das wäre ein erheblicher Grund, auf das "Plattmachen" der 3 StatusBits grosszügig zu verzichten, ohne ein ganz schlechtes Gewissen zu hinterlassen.


----------



## Otwin (7 Juli 2022)

Und die anderen beiden werden nur im Fehlerfall benutzt, wo ein Messfehler wohl keine Rolle spielt.


----------



## PN/DP (7 Juli 2022)

Mr.Spok schrieb:


> Bit15 wird nicht benutz...


Bit15 wird benutzt, es ist nur immer 0.
In Deinem Beispielcode von #16 wertest Du das Bit 15 ja auch mit aus.

Schade, daß Du das bisschen Quelltext in einem proprietären Dateiformat in #16 angehangen hast, anstatt als plain Text. Die Datei kann man vermutlich nur mit Codesys öffnen?
Mit einem Editor geöffnet sieht es so aus, als ob es da einen "FUNCTION_BLOCK AI_SKALIERUNG" mit folgendem Code gibt:

```
w_AI_Rohwert:= SHR(w_AI,3);

IF w_AI_Rohwert > w_AI_max THEN
    w_AI_Rohwert:= w_AI_max;
END_IF
```
Weiter sieht es so aus, als ob der FB mit w_AI_max:= 4096 (!) aufgerufen wird. Dann wäre der Code IF...END_IF völlig nutzlos, weil w_AI_Rohwert da höchstens 4095 werden kann, die Skalierung zu 0..100 ist nicht ganz korrekt (100 muß schon bei 4095 erreicht werden und nicht erst beim unmöglichen 4096), und r_out_max kann eigentlich nie 100 erreichen (höchstens durch aufrunden).

PS: ich meine ebenfalls, daß das Ausblenden der niedrigsten 3 Bits unnötig ist.

Harald


----------



## world-e (4 August 2022)

Hallo zusammen,

möchte nochmal Rückmeldung geben. Ich muss sagen, dass ich die letzten paar Beiträge nicht wirklich verstanden habe, habe mich aber auch nicht so intensiv damit beschäftigt.

Ich habe nun allerdings für mich eine gute Lösung. Die angezeigten Werte stimmen ziemlich genau mit den Werten überein, die mit dem Meterstab in der Zisterne gemessen worden sind. Meine Zisterne ist ca. 2m hoch und das Wasser kann auch so ca. hoch stehen. Habe mehrere Messungen des Wasserstands durchgeführt und mit den angezeigten Werten verglichen.

Mein Programm sieht so aus:



In der Visualisierung sieht es so aus:



Dann habe ich noch ein Untermenü, wo man die Werte anzeigen lassen und ein paar Einstellungen vornehmen kann:



Der WORD-Wert schwankt eigentlich immer. Deswegen die "Glättung" mit Hysterese 400. Der Wert FuAI 10 ist deshalb, weil der Sensor nicht komplett auf dem Boden ist, sondern ein wenig höher hängt. 

Also kann man sagen, dass meine Anzeige den Wasserstand in cm anzeigt. Man könnte ihn auch durch 2 dividieren, dann könnte man eine Anzeige in Prozent machen.

Der Sensor hat auch einen Messbereich von 0-2m.

Jetzt muss der Sensor nur noch lange halten, dann bin ich zufrieden. Und die Genauigkeit der Anzeige ist für mich für einen Zisternenfüllstand mehr als Ausreichend.

Vielen Dank nochmals für den Input.


----------



## Plan_B (4 August 2022)

ES ist wie immer. Hauptsache es funktiomiert.

Warum es funktioniert, weiß später eh keiner mehr 🤣


----------



## Heinileini (4 August 2022)

world-e schrieb:


> möchte nochmal Rückmeldung geben.


Sehr gut! Das vergisst so mancher. Danke!

Was ich ein Bisschen irreführend finde:


world-e schrieb:


> Der WORD-Wert schwankt eigentlich immer. Deswegen die "Glättung" mit Hysterese 400.


Wie passt dazu der Kommentar ...
(*Glättung von Analogwert. Eingestellte Hysterese ändert nichts am Ausgang*)
... ?
Wenn die Hysterese nichts am Ausgang ändert, wozu dann der Aufwand?
Der Kommentar klingt ja so, als sei die Hysterese wirkungslos. 



Plan_B schrieb:


> Warum es funktioniert, weiß später eh keiner mehr 🤣


Doch, doch, einer weiss es und das schreibt er auch regelmässig im "Abspann" seiner Beiträge:


> _Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht._


Ich übersetze das mal kurz:
Es funktioniert, weil man plötzlich alles richtig gemacht hat.


----------



## Heinileini (4 August 2022)

Sorry, doppelt gepostet


----------



## Plan_B (4 August 2022)

Heinileini schrieb:


> Es funktioniert, weil man plötzlich alles richtig gemacht hat


Wobei ich das für trügerisch halte.
Der Umkehrschluss, dass alles richtog ist, weils funktioniert, ist imho nich gültig.


----------



## Heinileini (4 August 2022)

Plan_B schrieb:


> Wobei ich das für trügerisch halte.
> Der Umkehrschluss, dass alles richtig ist, weils funktioniert, ist imho nich gültig.


Der Umkehrschluss ist zwar richtig aber mit grooosser Vooorsicht zu geniessen.
Es genügt natürlich nicht, wenn ein Detail plötzlich so funktioniert, wie es soll.
Meist ist dann aber die Überraschung/Begeisterung darüber so gross, dass man schlichtweg vergisst, ALLES auf Richtigkeit zu prüfen.
Auch alles, was vor der letzten Änderung schon/noch richtig lief. 

Man muss natürlich auch bei Änderungen, die man im Sinne von Trial & Error vornimmt, planvoll vorgehen.
Augen zu und solange im Dunklen herumzustochern, bis zufällig scheinbar alles richtig funktioniert, halte ich für sehr bedenklich, wenn man nicht anschliessend noch die wirklichen Ursachen für die beseitigten Fehlverhalten aufklärt.

Leider habe ich schon mehrfach miterleben müssen, dass manche die einzelnen Symptome des Fehlverhaltens so nach und nach versuchen auszubügeln, statt nötigenfalls den Fall noch einmal ganz von vorn aufzurollen bzw. zu durchdenken.


----------

