Durchflussmesser an IOW56

Dies ist das deutsche Forum für alle Themen um den IO-Warrior. Beiträge bitte nur in Deutsch.

Moderator: Guido Körber

Post Reply
LeonardZ
Posts: 3
Joined: Wed Apr 17, 2013 8:12 am

Durchflussmesser an IOW56

Post by LeonardZ »

Hallo zusammen habe folgendes Problem.
Ich will das Signal eines Durchflussmessers (PNP) messen.
Der Sensor(24v) ist über einen Optokoppler an Port 0 Pin 0 angeschlossen.

Ich arbeite mit einer IO Karte von Hoffmann auf Basis des IOW56.

Software technisch habe ich mit Hilfe des SDKs und C#
eine kleine Testsoftware geschrieben die den Port 0 überwacht.
Funktioniert auch gut bis zu eine Frequenz von ca 80 Impulsen pro Sekunde.

Der Sensor kann aber unter Volllast 505 Impulsen pro Sekunde liefern (Deshalb IOW56).

Mir würden ja schon ca 250 reichen aber ab 80 Hz scheinen mir Reports verloren zu gehen.

Vielleicht hat jemand Erfahrung und kann mit den entscheidenden Tipp geben.

Mit freundlichem Gruß

Tom
Guido Körber
Site Admin
Posts: 2856
Joined: Tue Nov 25, 2003 10:25 pm
Location: Germany/Berlin
Contact:

Re: Durchflussmesser an IOW56

Post by Guido Körber »

Also der IOW56 sollte so was locker mitmachen. Ich weiss nicht was für Optokoppler an den Eingängen verbaut sind, eventuell sind die zu langsam, oder kriegen nicht genügend Strom bei schnelleren Impulsen.
LeonardZ
Posts: 3
Joined: Wed Apr 17, 2013 8:12 am

Re: Durchflussmesser an IOW56

Post by LeonardZ »

Vielleicht liegt der Fehler ja im Code. Hier der Code den ich zum Messen benutze.

Hab ja schon fleißig im Forum gelesen. Liegt es vielleicht an der Thread Priorität?

Code: Select all

        static void Main(string[] args)
        {
            IntPtr handle = IntPtr.Zero; // Handler des IOW
            byte[] report = new byte[IOWarrior.Defines.IOWKIT56_IO_REPORT_SIZE + 1]; // IOW Report
            int max_Impulse = 1000; //
            int impulse_Counter = 0;

            handle = IOWarrior.Functions.IowKitOpenDevice();  // IOW öffnen

            IOWarrior.Functions.IowKitSetTimeout(handle, 1000); // Timeout auf 1 Sekunde festgelegt

            Console.WriteLine("Taste drücken um Messung zu starten");
            Console.ReadKey();

            DateTime startZeit = DateTime.Now; //StartZeit erfassen

            //Schleife zum einlesen der Werte maximal 1000 Impulse
            while (impulse_Counter < max_Impulse)
            {
                //Einlesen der Werte
                uint res = IOWarrior.Functions.IowKitRead(handle, 0, report, IOWarrior.Defines.IOWKIT56_IO_REPORT_SIZE);

                if (res != IOWarrior.Defines.IOWKIT56_IO_REPORT_SIZE)
                    Console.WriteLine("Fehler");
                else
                {
                    //Impuse Zählen Wenn Port 0.0 an Masse
                    if (report[1] == 0xFE)
                    {
                        impulse_Counter++;

                        Console.WriteLine("{0:0000}   {1}", impulse_Counter, report[1].ToString());
                    }
                }
            }

            DateTime endZeit = DateTime.Now; //EndZeit erfassen
            double freq = impulse_Counter / endZeit.Subtract(startZeit).TotalSeconds; //Frequenz berechnen
            Console.WriteLine("Dauer {0:0.000} Sekunden Frequenz {1:0.000}", endZeit.Subtract(startZeit).TotalSeconds, freq);
            Console.ReadKey();

            //Device Schließen
            IOWarrior.Functions.IowKitCloseDevice(handle);
        }
User avatar
Christoph Jung
Posts: 670
Joined: Sun Oct 08, 2006 3:43 pm
Location: Germany / Berlin
Contact:

Re: Durchflussmesser an IOW56

Post by Christoph Jung »

Der Code an sich sieht soweit gut aus. Die Thread Priorität sollte kein Problem sein.
Vielleicht mal mit IowKitReadNonBlocking() schauen obs damit besser läuft.
Abteilung: Softwareentwicklung
Folge uns auf Twitter
Follow us on twitter
LeonardZ
Posts: 3
Joined: Wed Apr 17, 2013 8:12 am

Re: Durchflussmesser an IOW56

Post by LeonardZ »

Danke für die Antwort. Habe den Code nach IowKitReadNonBlocking() um gestellt mit gleichem Ergebnis.

Das Problem liegt bei Sensor, genauer gesagt an der Impulslänge. Ab 80 Hz liegt die länge ca bei 1 ms.
Und je größer die Frequenz um so kürzer der Impuls.

Laut Datenblatt bewege ich mich da wohl schon im Grenzbereich des IOW56.

Muss wohl über einen Frequenzteiler nachdenken
Guido Körber
Site Admin
Posts: 2856
Joined: Tue Nov 25, 2003 10:25 pm
Location: Germany/Berlin
Contact:

Re: Durchflussmesser an IOW56

Post by Guido Körber »

Ein einfaches Monoflop zum Verlängern des Impulses würde gehen.
Post Reply