Welcome to our new forum
All users of the legacy CODESYS Forums, please create a new account at account.codesys.com. But make sure to use the same E-Mail address as in the old Forum. Then your posts will be matched. Close

Analoger Eingangswert auf 0 abrunden

Julian26
2016-10-03
2016-10-04
  • Julian26 - 2016-10-03

    Hallo alle zusammen, mein Name ist Julian und ich bin neu im Forum.
    Ich bin gerade an meinem ersten Projekt mit CODESYS.

    ich habe folgendes Problem:
    Es wird eine Drehzahl einer Pumpe über die WebVisu angezeigt, wenn die Pumpe steht sollte diese eig.
    0 Umdrehungen anzeigen, es wird mir aber eine Drehzahl von 5 Umdrehungen angezeigt.
    Ich denke das es durch die Toleranzen bedingt ist. Der Messumformer liefert ein 4 - 20mA Signal.
    Wenn die Pumpe steht wird auch ein Strom von 4,00mA ausgegeben.
    Jetzt zu meiner Frage, wie kann ich es bewerkstelligen das alle Umdrehungen kleiner 20 auf 0 abgerundet werden?
    Programmiert wurde in AWL, könnte auch in ST programmieren falls da jemand eine Lösung für mich hat.

    Vielen Dank schon im vorraus für Antworten.

     
  • Pitsch - 2016-10-03

    Hallo Julian

    Du musst die Pumpen-Drehzahl (0 - Max Drehzahl) , ins Verhältnis 4 - 20 mA setzen. Dann hast Du die Werte, wo Du sagen kannst, bei so viel mA, habe ich diese Drehzahl.
    Die mA, können nicht einfach in Drehzahlen übernommen werden.
    Noch besser, währe es, wenn Du direkt auf der Pumpe, einen Drehzahlmesser hättest. Dann hättest Du auch die effektiven Messwerte, die Du verarbeiten könntest.

    Mit freundlichen Grüssen! Pitsch

     
  • Julian26 - 2016-10-03

    Danke für die schhnelle Antwort, die Normierung hab ich gemacht 4mA=0 1/Min und 20mA =5000 1/Min.
    Die Anzeige funktioniert auch ohne Probleme bzw. die Drehzahl wird richtig angzeigt.
    Lediglich wenn die Pumpe steht und 0 1/Min hat zeigt mir die Steuerung trotzdem 5 1/Min an.
    Ich denke das sind die Toleranzen der Eaton SPS und diese würde ich gerne Software mässig ausblenden.
    Das heisst ich brauche im Programm einen Befehl mit dem ich alle Werte kleiner 20 auf 0 abrunde.
    Zum Beispiel: if Drehzahl < 20, Drehzahl = 0 so etwas meine ich kenne aber leider CODESYS nicht gut genug und
    hoffe das mir da einer einen Tipp geben kann wie ich die Programmierung umsetze.

     
  • Pitsch - 2016-10-03

    Hallo Julian

    Also ich kenne weder deine SPS, noch die Pumpe oder den Motor, mit dem Du arbeitest.
    Aber dass die Steuerung eine so hohe Tolerant aufweist, verstehe ich auch nicht so ganz.
    Besteht denn nicht die Möglichkeit irgendwie von der Steuerung her ein Signal auszuwerten, das Dir anzeigt, dass die Pumpe still steht. Also der Umrichter auf Stop steht oder so etwas.
    Ich nehme an, dass Du auch eine Drehzahl von z.B 5/Min noch angezeigt haben möchtest. Wenn das Flügelrad der Pumpe sich noch ein wenig dreht. also noch nicht ganz still steht. Erst wenn die Pumpe steht, soll auch 0/Min angezeigt werden.
    Du musst irgendwie den Messstrom 4 - 20 mA auswerten. Auch wenn die angezeigte Drehzahl, jetz nicht genau auf die Umdrehung/Min stimmt, merkt das keiner. doch wenn die Pumpe noch, wenn auch nur langsam läuft und die Anzeige steht auf 0/Min, dann ist das meiner Ansicht nach ein Schönheitsfehler, den es zu vermeiden gilt.
    Also führ der Steuerung noch die entsprechenden Signale zu (Die Steuerung, stellt Diese nämmlich sicher zur Verfügung. Oder das Potentiometer, mit dem Du die Drehzahl regelst, hat sicher eine Stellung -AUS- oder sogar einen AUS-Schalter.) und stze die Anzeige erst auf 0/Min, wenn sich auch wirklich nichts mehr dreht.

    Mit freundlichen Grüssen! Pitsch

     
  • RolandWagner

    RolandWagner - 2016-10-04

    Du kannst natürlich eine Vorqualifizierung des Messwerts vornehmen, z.B. in der Art:

    IF WERT <5 THEN
       Wert2:= 0;
    ELSE
       Wert2:= WERT;
    END_IF
    

    Statt dass Du dann Wert anzeigst, nimmst Du dann Wert2.

    Aber wie die anderen schon geschrieben haben: Besser wäre es, erst einmal die Ursache des Verhaltens zu untersuchen, denn wenn die Skalierung korrekt ist, dann sollte angezeigte Wert schon bei 0 oder nahe daran sein.

     
  • Julian26 - 2016-10-04

    Ja sowas hab ich gesucht, danke schon mal! Ich Visualisiere 3 Drehzahlen und bei allen drei wird bei 4,00 mA ca. 5-6 Umdrehungen noch angezeigt.
    Die SPS ist von EATON XC201 und dazu eine Analoge Eingangskarte. Wirklich viel Geld kostet die SPS ja nicht deswegen erwarte ich da auch nicht viel von.

     
  • Julian26 - 2016-10-04

    Hab das Programm jetzt in ST geschrieben und mit dem IF Befehl gearbeitet, jetzt klappt es.
    Jetzt hab ich aber ein neues Problem, für die Visualisierung brauche ich den Datentyp WORD.
    Gibt es einen Befehl in ST um den Datentyp REAL in WORD umzuwandeln?

     
  • RolandWagner

    RolandWagner - 2016-10-04

    Klar: ```

    REAL_TO_WORD

    ```
    Solche Konvertierer gibt es gemäß der Norm in jeder Richtung. Die Eingabehilfe (F2) unterstützt bei der Auswahl.

     
  • RolandWagner

    RolandWagner - 2016-10-04

    Zitat:
    Wirklich viel Geld kostet die SPS ja nicht deswegen erwarte ich da auch nicht viel von.

    Nun, an der SPS sollte es nicht liegen. Deswegen: Eine Überprüfung der Skalierung macht sicher Sinn, auch wenn es der Workaround vielleicht auch erst einmal tut.

     

Log in to post a comment.