Gelöst: Undeterministisches Verhalten

paraglider
2011-03-02
2011-03-04
  • paraglider - 2011-03-02

    Hallo,

    ich bin noch ziemlicher SPS Neuling und "bastel" gerade an meiner zukünftigen Haussteuerung. Insgesamt komme ich recht gut voran. Von Zeit zu Zeit verhält sich die Schaltung aber undeterministisch:

    Dann schaltet eine UND verknüpfung einfach nicht durch, obwohl beide Eingänge auf "on" sind oder eine Funktion eines Baustein tut plötzlich nicht mehr. Wenn ich dann im Rahmen der Schaltung alles abändere und neu aufbaue funktioniert plötzlich alles, obwohl ich effektiv keinen Unterschied zu vorher erkennen kann. Das ganze passiert übrigens in der Wago 750 841 da ich es bis jetzt noch nicht geschafft habe, einen Click für den Oscat CLICK Baustein in der Simulation zu simulieren...

    Ich nehme an, dass ich irgendwo noch einen fundamentalen Denkfehler habe (möglicherweise gibt's irgendwelche RacingConditions oder die Reihenfolge meiner CFC Bausteine ist wichtig....).

    Ich hoffe jemand von Euch kann mir trotz meines ungenauen Hilferufs weiterhelfen. Am anhängenden Beispiel geht zum Beispiel alles bis auf den Tripple-Click des OSCAT click Bausteins....

    Ich bin noch echt am Verzweifeln

    Andreas

    IMG: screen.gif

    Wurmberg_v0.6_triple_versurch.zip [565.14 KiB]

     
  • Anonymous - 2011-03-03

    Originally created by: blackenslaver666

    Moin.
    Wenn du schon einen Beitrag schreibst solltest du auch einfügen worin sich das "underteministische Verhalten" eigentlich äußert. Denn ich sehe da ein paar UND-Verknüpfungen.

    Prinzipiell benutzt du schon mal die gleichen Timer-Zeiten, das kann immer zu Überschneidungen führen. Generell gilt: Wenn du etwas zur Laufzeit untersuchen willst nehme die "Traceaufzeichnung" im Register "Ressourcen". Damit kannst du dir eine Handvoll Vars (bis zu 8 ) aufzeichnen anhand eines Triggers-Events. Hier könntest du dir ein Merker bauen der dein "undeterministisches Verhalten" erkennt. Der Merker startet dann die Aufzeichnung und du kannst dir dann die gewünschten Signale zur Laufzeit angucken. So findet man fast immer den Fehler.

    Gruß Andy

     
  • paraglider - 2011-03-03

    Guter Punkt

    Das aktuelle Problem liegt darin, dass mein OSCAT-Click Baustein zwar einen single- und auch einen double-click erkennt, aber keinen triple.

    Mit dem Trace habe ich jetzt mal experimentiert (Danke für den Tipp, kannte ich noch nicht!) aber das hat mich auch nur so weit gebracht, dass innerhalb des CLICK-Bausteins einfach kein triple getriggert wird...

    Andreas

     
  • Anonymous - 2011-03-03

    Originally created by: blackenslaver666

    Dann bleibt dir immer noch die Möglichkeit in den FB reinzugucken und den zu debuggen. Im übrigen gibt es auf der OSCAT-HP mittlerweile eine neue Lib 3.30, du nutzt V3.20. Den FB "Click" gibt es da nicht mehr drin. Das könnte u.a. für ein Update sprechen. Sind vielleicht schon andere über das Problem gestolpert.

    Andy

     
  • Oberchefe - 2011-03-03

    CFC ist nicht ganz unproblematisch in Verbindung mit Online Changes. Würde da im Zweifelsfall auch mal alles bereinigen und alles übersetzen.

     
  • hugo - 2011-03-04

    der baustein click ist nicht verändert worden, er befindet sich jetzt lediglich in der neuen building library.

    triple click funktioniert auch. wenn du einen doppelclick auf den baustein im cfc machst findest du setup werte die du verändern kannst
    setzt die variable short auf 500ms oder auch 1s dann wird es wahrscheinlich funktionieren.

    lese bitte im manual nach was dies bedeutet.

     
  • e-pappy - 2011-03-04

    Hi!

    Das wird so nicht funktionieren, weil, wie du ja selber schon gesagt hast, die Ablaufreihenfolge nicht stimmt!

    Dein 'LichtTimer' wird als 6. Instanz und dein Ausgang 'out' als 7. ausgeführt!
    Die Bedingungen für diese Funktion werden aber erst danach ausgeführt! Und zwar die 8., 9., 10. und 11. Instanz! Daher funktioniert das nicht!

    Ergo: Rechte Maustaste auf einen funktionsbaustein, Reihenfolge -> Nach Datenfluss

    Dann sollte es eigentlich funktionieren!

     
  • paraglider - 2011-03-04

    Ich habe die Ursachen der Probleme gefunden! Damit der nächste Anfänger auch etwas davon hat, versuche ich mal die Hintergründe zu beschreiben:

    1) Triple CLICK geht nicht

    Triple CLICK ging, setzt ein high Signal auf Q, aber nur für extrem kurze Zeit.
    Zum dauerhaften setzen eines Wertes per Triple ist das ganze nicht geeignet, da alle daraus Resultierenden Ergebnisse nach kurzer Zeit sofort wieder zurückgenommen werden. In meinem Fall wurde die Timerdauer auf 1d und ein paar Milisekunden danach gleich wieder auf den Ausgangswert von 10s zurückgesetzt.

    Ich leite nun das Tripple Signal in einen Toggle und die Sache funktioniert.

    2) Undeterministisches Verhalten

    Das Geheimnis warum die gleiche Schaltung manchmal ging und manchmal nicht lag in der Tat an der falschen Reihenfolge des Datenflusses. Ein "anordnen de Reihenfolge nach Datenfluss" hat diese Probleme gelöst.

    Vielen Danke Euch Allen - Ihr habt mir echt weitergeholfen!

    Andreas

     
  • e-pappy - 2011-03-04

    Hi!

    Freut mich zu hören, dass es nun endlich funktioniert!
    Hatte dasselbe Problem gerade neulich erst bei einer Umrechnung und typkonvertierung, daher war das beim Anblick des Datenflusses mein erster Gedanke. Seit dem achte ich sehr penibel darauf.

     

Log in to post a comment.