Sleep in CoDeSys

Jan Homann
2006-03-01
2006-03-02
  • Jan Homann - 2006-03-01

    Guten morgen Forumsgemeinde,

    ich arbeite hier an einer Wago 750 842, einem kleinen 16Bit Gerät.

    An der Wago sitzen einige Sensoren, deren Werte ich mir über TCP an einen PC schicken lassen möchte. Bislang habe ich lediglich einen Sendepuffer für alle angelegt. Sobald ein Sensor seine Werte senden möchte, setzt er einen lock auf den Sendepuffer und kein anderer Sensor kann mehr Werte in den Puffer schreiben.

    Jetzt möchte ich aber, das andere Sensoren, die ihre aktuellen Werte nicht einfach verwerfen, wenn der Sendepuffer gelockt ist, sondern das sie warten bis der Puffer wieder frei ist.

    Da While-Schleifen in der SPS ja etwas ungünstig sind, möchte ich gerne wissen, wie man ein Programm für eine kurze Zeit schlafen legen kann.

    MfG

     
  • Anonymous - 2006-03-01

    Originally created by: -AB-

    Vielleicht ist es unsinn, aber was mir da so spontan einfällt wäre ein extra Task. Der Task könnte Ereignis gesteuert sein und würde nur aufgerufen wenn Werte zum schreiben vorhanden sind und der Buffer zum schreiben freigegeben ist.

    Oder für jeden Sensor einen eigenen Buffer und die werden dann in den "Hauptbuffer" geschrieben.

    Nur so mein erster Gedanke, vielleicht hilft es ja.

     
  • Oberchefe - 2006-03-01

    eine eigene Routine zum Senden, alle Sensoren schreiben in ein Fifo, die Senderoutine entleert das Fifo.

     
  • Jan Homann - 2006-03-02

    Hallo,

    Danke euch bin schon ein gutes Stück weiter

    Ich hab jetzt einen Buffer für die zwei analogen Eingänge der nach 200 Werten versendet wird und einen Buffer für sechs seriellen Klemmen. Deren Buffer wird allerdings versendet, sobald eine Klemme etwas reingeschrieben hat

    Gruss

    Jan

     

Log in to post a comment.