Impulszähler
Peter
- programmiertechnik
0 Maxx0 FrankieB0 Sven Rautenberg0 FrankieB
Hallo,
ich habe foglendes Problem, ich habe eine Steurung eines durchflussmessers den ich über den Paralellport ansteuern kann, d.h. ich öffne per software ein ventil und wasser strömt durch den durchflußzähler. Der widerum gibt mir rund 1800 impulse pro Liter, die Impulsleitung des Durchflußmessers ist an eine Datenleitung am Parallelport angeschlossen. Wenn ich nun eine ganz bestimmte Menge Wasser durchfließne lassen will, zähle ich eben einfach die gesendeten Impulse und wenn die eine bestimmte zahl erreicht haben, soll das ventil geschlossen werden...soweit zur theorie, wie kriege ich nun aber meine software so hin, daß sie pratisch die ganze zeit, nach öffnung des Ventils, an dem einen "pin" lauscht und die Impulse zählt...? Ich hatte mir ja gedacht über eine schleife die solange am pin "lauscht" bis die Zahl erreicht ist, aber ein impuls ist ja praktisch nur eine ganz kurze "eins" in der leitung, d.h. es könnte ja durchaus sein das meine schleife gerade so läuft daß immer nur eine "0" gemessen wird oder meine schleife so schnell läuft, daß EINE 1 zweimal gemessen wird, was das ergebnis ja wieder verfälschen würde...hat da jeamnd eine idee ? Oder eine andere Lösung ?
also generell geht es nur darum die zurückkommenden impulse , die ich über einen "pin" auslese zu zählen...
Ich hoffe das war nun einigermaßen verständlich...:-)
Gruss
Peter
Hallo Peter,
ich habe foglendes Problem, ich habe eine Steurung eines durchflussmessers den ich über den Paralellport ansteuern kann ... wie kriege ich nun aber meine software so hin, daß sie pratisch die ganze zeit, nach öffnung des Ventils, an dem einen "pin" lauscht
nein, das ist der falsche Ansatz. So etwas wird normalerweise über einen Interrupt gesteuert. Als ich so etwas programmiert habe machte man das noch unter DOS mit ein bisschen Assembler.
Du wirst nicht umhin kommen dich mit der Programmierung des Interruptcontrollers (PIC) zu beschäftigen.
Ich vermute dass es unter Windows ungleich schwieriger ist so etwas zu realisieren. Vielleicht lässt sich über den Umweg DirektX (nicht Drucker aber Joystickport) etwas drehen?
Viele Grüße,
Jochen
Hallo,
... 1800 impulse pro Liter, die Impulsleitung des Durchflußmessers ist an eine Datenleitung am Parallelport angeschlossen. Wenn ich nun eine ganz bestimmte Menge Wasser durchfließne lassen will, zähle ich eben einfach die gesendeten Impulse und wenn die eine bestimmte zahl [...]
Also ich hatte auch schon mal eine ähnliche Problematik zu lösen ... damals habe ich das so gehandelt, daß beim 1. Impuls (sozusagen der Trigger) die Datenaufzeichnung gestartet wurde und nach xxx Impulsen beendet wurde.
Den Fall, den Du als "worst case" beschreibst (... könnte ja auch Null sein, beim Beenden der Zählung ...) darf es eigentlich nicht geben, denn Du mißt ja nicht den Flankenwechsel sondern die Zustände 0 oder 1.
Natürlich kann man für den Fall eines Systemausfalls auch eine zeitgesteuerte Sicherheit einbauen, welche autumagisch nach Erreichen einer (errechneten) Maximalzeit (z.B. das Auffanggefäß ist voll ..) die entsprechenden Ventile automatisch schließt.
Aus eigener Erfahrung kann ich dir sagen, daß sich das lohnen kann ;-)
Grüsse
Frankie
Moin!
ich habe foglendes Problem, ich habe eine Steurung eines durchflussmessers den ich über den Paralellport ansteuern kann, d.h. ich öffne per software ein ventil und wasser strömt durch den durchflußzähler. Der widerum gibt mir rund 1800 impulse pro Liter, die Impulsleitung des Durchflußmessers ist an eine Datenleitung am Parallelport angeschlossen.
In welcher Zeit kriegst du diese Impulse? Bzw. wieviele Impulse pro Sekunde erwartest du. Oder umgekehrt: Wie lange dauert 1 und 0 eines Impulses?
Logisch ist: Wenn du keinerlei registrierende Hardware, beispielsweise einen Counter, hast, welche in der Lage ist, ultraschnell alle Impulse zu registrieren und zu summieren, sondern komplett auf die Abfrage des HI und LO angewiesen bist, benötigst du schon mal ganz sicher eine Programmiersprache und CPU, die in der Lage ist, mindestens doppelt soviele Abfragen auf dem Parallelport zu machen, wie als maximale Impulsfrequenz zu erwarten ist. Abtasttheorem, und so weiter.
Wenn du also 1800 Impulse in einer Sekunde kriegst (Modell "PLATSCH"), dann mußt du den Port mindestens 3600 Mal in der Sekunde abfragen, um sicherzugehen, dass dir keiner durch die Lappen flutscht.
Und das geschieht dann wirklich ganz banal in einer Schleife:
Ventil auf
label:
Abfrage des Port
Ist port_alt = lo und port = hi?
dann counter++
port_alt = port
Ist counter < 1800?
dann goto label
Ventil zu.
Die möglichen Sicherheitsimplikationen, die man mit solch einer Regelung verbinden muß, wurden ja schon angesprochen. Beispielsweise wäre es angebracht, eine Notabschaltung mit Schwimmschalter aufgrund Füllüberschreitung hardwaremäßig zu integrieren - damit der Rechner das, sofern er zu langsam ist, nicht auch noch beachten muß.
- Sven Rautenberg
Hi Sven,
Die möglichen Sicherheitsimplikationen, die man mit solch einer Regelung verbinden muß, wurden ja schon angesprochen. Beispielsweise wäre es angebracht, eine Notabschaltung mit Schwimmschalter aufgrund Füllüberschreitung hardwaremäßig zu integrieren - damit der Rechner das, sofern er zu langsam ist, nicht auch noch beachten muß.
Also Sven, Du überascht immer wieder, eine entkoppelte, rein mechanische Not-Abschaltung ist natürlich ebenfalls dringenst notwendig ...
Gruss
Frankie
- Sven Rautenberg
Moin!
Die möglichen Sicherheitsimplikationen, die man mit solch einer Regelung verbinden muß, wurden ja schon angesprochen. Beispielsweise wäre es angebracht, eine Notabschaltung mit Schwimmschalter aufgrund Füllüberschreitung hardwaremäßig zu integrieren - damit der Rechner das, sofern er zu langsam ist, nicht auch noch beachten muß.
Also Sven, Du überascht immer wieder, eine entkoppelte, rein mechanische Not-Abschaltung ist natürlich ebenfalls dringenst notwendig ...
Tja, das kommt davon, wenn man zuviel studiert. ;) Dann bleib irgendwas davon hängen - in diesem Fall halt Regelungstechnik.
- Sven Rautenberg
Moin?
Tja, das kommt davon, wenn man zuviel studiert. ;) Dann bleib irgendwas davon hängen - in diesem Fall halt Regelungstechnik.
auch wenn man es mir nicht zutraut, ich habe insgesamt 16 Semester und 2 Titel auf dem Buckel ... daher ist ein bisschen auch an mir hängengeblieben.
Ich bin absolut kein Experte auf dem Gebiet der Regelungstechnik, aber als ehemaliger Uni-Assi durfte ich schon einiges erleben .-)
Ich erinnere mich z.B. an einen Diplomanden, der eine halbfertige Versuchseinrichtung übernahm, aber bei Inbetriebnahme nicht darauf achtete daß die inkrementale Zählung inzwischen umgestellt wurde und daher sein "Grenzwert" nie ereicht wurde, die Folgen kann sich jeder ausmalen ... ein Schwimmschalter hätte, gekoppelt an der eine elektrische Notabschaltung der Spannungversorgung der Pumpen einiges verhindern können ...
Oder ein anderes Beispiel:
ein Diplomand fährt das Gebläse hoch (einer Versuchsanlage für Aerozyklone) und vergisst die Verbindung zum Abluftfilter herzustellen => ca. 200 kg Glaskugeln mit einem Sauter-Dm von 20-200 µm in der Raumluft ... Reinigung > 4 Wochen ...
Gruss
Frankie