SPS - Durchflusssensor - MÖLLER

Anrion

Level-1
Beiträge
5
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Leute,

für unser Metallprojekt wollen wir einen Durchflusssensor dazu bringen unsere Anlage via Pumpensteuerung genau zu messen, dass 200-500ml im Becher landen. Hierfür haben wir einen Durchflusssensor von Biotech benutzt mit 0-24V und 2500Imp/L
Nun wissen wir leider nicht, wie wir die Impulse in die SPS einarbeiten um siw so zu verarbeiten. Wir benutzen Codesys - wissen aber nicht weiter.

mfG Stefan
 
Verarbeitung-Impulse-Durchflusssensor-Möller-SPS-Codesys

Hallo Leute,

Wir haben ein Problem. Wir müssen für die Schule ein Projekt mit Sensorik machen und haben eine Abfüllanlage erstellt mit dem Durchflusssensor von Biotech. Dieser hat eine Spannungsversorgung von 5-25VDC und K=2500 Impulse/Liter (NPN). Nun wüssten wir gerne mit eurer Hilfe, wie wir diese Werte und alles insgesamt in Codesys verarbeiten. Wir wollen genau 200-500 ml abmessen und somit muss der Durchflusssensor genau Bescheid geben, wenn XX ml durchgeflossen sind. Wir besitzen eine SPS von Möller (easy 600 pow).

mit freundlichem Gruß

Stefan
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das grobe Gerüst sollte so aussehen:

1. Zähler in SPS auf 0 setzen
2. Ventil zur Abfüllung auf
3. solange Impulse zählen
4. wenn gewünchte Menge durchgeflossen ist Ventil schließen

und nun viel Spaß beim Programmieren...


Wähle einen Beruf, den du liebst,und du brauchst keinen Tag in deinem Leben mehr zu arbeiten. Konfuzius
 
Wir haben den Durchflusssensor an + und - angeschlossen sowie an Eingang I7 (%IW2). Problem ist nur - auch wenn die Anlage läuft (Pumpe) - dass dort immer 1016-1018 steht und nie eine andere Zahl.

mfG Stefan
 
Bringen die euch auch irgendwas zu dem Thema bei, oder sollt ihr alles selbst erarbeiten?
Ich meine so Grundlagen wie man einen Sensor mit Impulsausgang auswertet, was es für Ein-und Ausgänge bei den Steuerungen gibt und wie man damit arbeitet?

Ein kleiner Tip: Euer Sensor gibt euch nur Impulse aus und zwar alle 0,4 ml Durchflussmenge einen. Wenn ihr den Ausgang des Sensors bei der SPS auf einen digitalen Eingang legt, dann könnt ihr diese Impulse erfassen.

Wobei es dann noch davon abhängt wie groß der Volumenstrom von eurer Pumpe und wie schnell eure SPS ist. (Moeller easy 600 pow ist nebenbei bemerkt keine SPS sondern ein Netzteil)
Warum ist das wichtig? Wenn das Wasser zu schnell fließt und euere SPS+Eingangskarte zu langsam ist, könnt ihr nicht alle Impulse erfassen und damit auch nicht genau messen, oder im schlimmsten Fall sogar meilenweit daneben liegen.

Sollte das kein Problem bei euch sein (meinetwegen weil das Wasser nur tropft oder so) müsst ihr in eurerm Programm die Impulse selber zählen ==> Eingang I7 auswerten.
Es gibt für viele SPSen Zählerbaugruppen, die a) einen das selber zählen abnehmen und b) auch meisten schneller sind als die normlen SPS-IOs. Für die Easy gibt es soetwas aber nicht.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
mit dem Durchflusssensor von Biotech. Dieser hat eine Spannungsversorgung von 5-25VDC und K=2500 Impulse/Liter (NPN)
Wie heißt der Sensor denn genau? Biotech hat nicht nur einen Sensor...
Habt Ihr vielleicht einen Link oder das Datenblatt von dem Sensor?
Ihr/wir müssen mehr technische Daten und die elektrischen Anschlüsse beachten.

Das NPN sagt mir, daß dieser Sensor wahrscheinlich nicht so einfach an Standard-SPS-Eingänge angeschlossen werden kann, weil er höchstwahrscheinlich nach Masse (0V) schaltet.

Wie schnell (l/min) fließt denn Eure Flüssigkeit?
Welche SPS (und ggf. welche Eingangsbaugruppe) setzt Ihr ein?


Mit Euren dürftigen Angaben spekuliert meine Glaskugel, daß Eure Aufgabe mit einer easy wohl nicht machbar ist.

Harald
 
Danke für die Antworten :)
http://www.produktinfo.conrad.com/d...DURCHFLUSSM_FCH_M_POM_LC_ANSCHL_6MM_de_en.pdf

Ich habe mal ein kleines Programm geschrieben und ein paar Anschlüsse getesten inkl. Universal-Strommessgerät. Das Ergebnis war das, dass das Gerät anscheinend zu träge ist beim Ausgangssignal die Impulse zu messen (19V angezeigt aufgrund des Widerstandes von ca. 2 Ohm). Somit schloss ich ihn an I1 in unserer SPS an und erstellte einen Counter in Codesys mit dem Eingang I1. Angezeigt wurde bei schnellem Durchfluss der Pumpe +15-SChritte. Bei langsamen Durchfließen +5-Schritte. Angaben sind ungefähr gemessen. Meine Deutung als Schüler ist, dass die Impulse 2500/Minute halt so gemessen werden und ich EINGABEWERT(wie viel ml) * 2,5 = VORGABE -> rechnen muss in Codesys . Somit stoppt die Pumpe, wenn ein Ausgang am Counter anliegt. Da der Sensor mit Impulsen arbeitet ist es ja "glaube" ich egal, wie schnell die Pumpe läuft (konstant sollte sie laufen - klar.) Die Durchflussmenge / Minute beträgt ca. 1 - 2 Minuten. Eingangsbaugruppe schaue ich später nach. Wo erkennt man die?^^


Weiteres Problem im Programm: Ich benötige ja Vorgabe:=Wert*2.5; -> Vorgabe für den Counter, wann er stoppen soll und Wert für den Eingabewert, wie viel ML man haben möchte. Nur leider ist Wert = Real und Vorgabe = Word und er möchte das nicht konvertieren.

Ich hoffe, dass diese Beschreibung ein wenig reicht und mir jemand weiterhelfen kann ob es richtig war etc.

mfG Stefan
 
Zuletzt bearbeitet:
Hallo Stefan,

SPS programmieren ist eine "exakte Wissenschaft". Bitte bemühe Dich um exakte und vollständige Antworten.

Von Dir fehlt immer noch die Angabe, welche SPS Ihr benutzt. Diese Angabe ist wichtig, damit wir einschätzen können, ob diese SPS die Aufgabe erfüllen kann und welche Programmiersprache benutzt wird.
Deine Erwähnung von Moeller easy und Codesys bringt mich auf die Idee, es könnte eine EC4P-2... sein? Damit kenne ich mich leider nicht aus, da kann ich nur allgemein helfen ...


19V angezeigt aufgrund des Widerstandes von ca. 2 Ohm
Daraus schließe ich, daß Ihr den Durchflussmesser mit dem nötigen Pullup-Widerstand von ca. 2 Kiloohm korrekt angeschlossen habt. Was anscheinend funktioniert.

Die Durchflussmenge / Minute beträgt ca. 1 - 2 Minuten.
Ich nehme mal an, Du meinst max 2 Liter pro Minute ...
Das würde bedeuten, Ihr müßt mit bis zu 5000 Impulse/Minute rechnen, gleich 83 Imp/Sekunde, gleich 12ms Periodendauer. Da bleibt für die Impulslänge höchstens noch 6 ms. Ich weiß nicht, warum die enorm wichtige Angabe der Pulslänge bei fast allen Zähler-Prospekten fehlt. Ich gehe davon aus, daß die Impulslänge bei höchstem Durchfluss wohl noch viel kürzer ist.

Falls Ihr eine EC4P habt - die kann aber an manchen Eingängen schnell genug zählen, ich weiß nur nicht, wie in Codesys die schnellen Zähler angesprochen werden müssen.


Wie schon thomass5 in Beitrag #3 schrieb, müßte Euer allgemeiner Abfüll-Ablauf so aussehen:
- Start der Abfüllung
- Zähler in SPS auf 0 setzen oder momentanen Zählerstand als Startzählerstand merken
- Berechnen: Zielzählerstand = Startzählerstand + Ganzzahl(gewünschte Abfüllmenge in ml * 2.5)
- Vergleichen des momentanen Zählerstandes mit dem Zielzählerstand, solange der kleiner ist --> das Dosierventil öffnen
- wenn der Zählerstand >= dem Zielzählerstand ist (oder die Abfüllung abgebrochen werden soll), dann ist die Abfüllung beendet (und das Dosierventil ist geschlossen)


Code:
Nur leider ist Wert = Real und Vorgabe = Word und er möchte das nicht konvertieren.
Der Eingabewert Vorgabe sollte INT sein, nicht WORD. Mit WORD kann man nicht rechnen.
Zum Konvertieren von Datentypen gibt es <typ>_TO_<typ> Konvertierungen, z.B. INT_TO_REAL, REAL_TO_INT oder TRUNC.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ansonsten gibt es von de Firma Rinck Elektronic in Rotenburg ja auch noch Impulsteiler als Hardware. Teilweise einstellbar in 1:10 oder 1:100


Sent from my iPad using Tapatalk
 
Muss bis Freitag fertig sein^^

EC4P 222 MT AD1

Wie meinst du das mit der Periodendauer? Wozu ist das genau für uns wichtig? Habe einige Versuche gemacht:
200ml->SPS:215ml
300ml->SPS:320ml
400ml->SPS:430ml
500ml->SPS:545ml

(schon berechnet mit Taktzahl.. diews das)

entweder ich entwickele eine Formel dafür (easy) oder es liegt am Eingang bzw. Periodendauer kp

Danke nochmal und Danke für die hoffentlich baldige Rückmeldung.

(Bisheriges Programm:

IF REFLEX=1 THEN M1:=1;
ELSE M1:=0;
END_IF;
IF S3=1 THEN RESET:=1;
ELSE RESET:=0;
END_IF;
IF S1=1 THEN M2:=1;
END_IF;
IF M1=1 AND M2=1 AND M3=0 THEN PUMPE:=1;
ELSE Pumpe:=0;
END_IF;
COUNTER(CU:= FLUSS, RESET:=RESET, PV:= VORGABE);
ANZEIGE := COUNTER.CV;
IF COUNTER.Q=1 THEN M3:=1;
END_IF;
VORGABE1:=WERT*2.5;
FUELLSTAND:=ANZEIGE/2.5;
TANK:=3000-ANZEIGE/2.5;
IF ANZEIGE>=VORGABE1 THEN M3:=1;
END_IF;
 
Neben der Tatsache das ich Dein Programm reichlich kompliziert für die einfache Aufgabe finde hast Du ja wohl ca. 7% mehr Menge als Deine Vorgabe. Dies kann zum einen natürlich an der Messungenauigkeit liegen oder das Dein SPS Eingang nicht alle Impulse des Durchflussmessers erkennt.
Die Hardware (SPS) kenne ich nicht, daher kann ich dazu nichts sagen.

Da Du vermutlich an der Hardware nichts auf die Schnelle ändern kannst, würde ich einen Korrekturfaktor in den Sollwert (Vorgabe * 0,93) einbauen.

Ansonsten exakt den Ablauf den tomass5 schon beschrieben hat.

Gruss

good_mike
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Was du auch berücksichtigen solltest ist die Menge, welche nach abschalten des Ventils/Pumpe noch frei auslaufen kann. Eventuell solltest du den mech. Aufbau dahingehend noch optimieren.

Gesendet von meinem GT-N7100 mit Tapatalk 2
 
So kompliziert finde finde ich das Programm gar nicht für einen Anfänger (nur halt so normal umständlich, wozu man bei ST gerne verführt wird (*) ). Außerdem scheint es nicht genau das Programm zu sein, was er tatsächlich laufen hat. Doch offensichtlich funktioniert sein Programm ja grundsätzlich.

Die Abweichungen würde ich größtenteils mit der Meßungenauigkeit des Durchflussmessers und des Meßaufbaus erklären, da die Abweichung ziemlich linear ist. Zumindest läßt sich die Ungenauigkeit zum größten Teil einfach herausrechnen.

Rechne mal mit VORGABE1:=WERT*2.325; (statt 2.5) und schau, ob Euch das Ergebnis genau genug ist.

Wenn Du noch genauer werden willst:
- Wie hoch ist die Zykluszeit der SPS?
- Wird mit der COUNTER()-Funktion ein Hardwarezähler angesprochen?

Wenn die Zykluszeit ca. 30ms ist und der Zähler ist ein Hardware-Zähler, dann bedeutet das, daß der Zähler von einer Abfrage bis zur nächsten Abfrage schon 5 Impulse weitergezählt hat. Genauer geht das dann nur, wenn der Zähler bei Erreichen des Vorgabe-Zählerstandes einen Interrupt auslöst oder gleich selber das Ventil abschaltet (so wird es mit Zählerbaugruppen gemacht).

Wenn der Zähler ein Softwarezähler ist, dann gehen wahrscheinlich Impulse verloren (werden nicht mitgezählt). Den Fehler kann man wahrscheinlich nicht verhindern, es sei denn, man ändert die Hardware.

Wenn nach der Umrechnungskorrektur noch ein gleichbleibendes "Zuviel" übrigbleibt, dann kann das eine Nachlaufmenge sein und die Ungenauigkeit durch die Zykluszeit der SPS, dann verringere einfach Deine Vorgabe um diesen Betrag. Dann schließt das Ventil etwas früher.

Ein Tipp:
Ich würde im Programm überall in ml rechnen und auch ml anzeigen und nur an einer Stelle die Umrechnung von Impulse in ml machen - also nicht überall den ImpulsFaktor 2.5 einrechnen.

(*) z.B. statt IF REFLEX=1 THEN M1:=1; ELSE M1:=0; schreibt man einfach M1:=REFLEX;

Harald
 
Zuletzt bearbeitet:
Zurück
Oben