$config.dat

  • Hallo!


    Ich habe in der $config.dat mehrere Frames deklariert und mit dem Nullframe vorbelegt. Einige Tage später war ich wieder in der config.dat und stelte fest, das die Frames mit Werten belegt werden, die wohl bei der Berechnung zur Laufzeit entstanden sind. Das stört in diesem Fall überhaupt nicht, kommt aber etwas unerwartet.
    Meine Frage: Wann speichert das System die Werte in die Config.dat? Kann man das einstellen? Was mache ich, wenn ich einen Startwert brauche? Bleibt da nur der Deklarationsteil von SPS.sub (wann wird der ausgeführt?) bzw den SRCs?


    Danke schon mal,


    Ka

    If you and DEAD people can read Hex, how many people can read Hex?

  • Schritt für Schritt zum Roboterprofi!
  • Hallole,


    - Wenn eine Variable mit einem Wert dahinter deklariert wird, dann
    wird der Wert bei JEDER Änderung in die $config.dat übernommen.
    (decl frame f1 = {x 0,y0,z0....)
    Man könnte ja auch schreiben:
    (decl frame f1 )
    Dann wird kein Wert gespeichert, er hat ohne aktive Zuweisung aber
    auch keinen Wert. D.h. bei einem Zugriff wie $base=f1 kommt es zu
    einem Laufzeitfehler.
    Einstellen lässt sich da nichts.


    - Startwert: Man setzt die Variable am Anfang des Programms auf den
    gewünschten Wert (ist die althergebrachte Methode), ehrlich gesagt
    weiss ich auch nicht warum es da in anderen Programmiesprachen
    andere Methoden gibt .


    - Der 'Deklarationsteil' des SPS.SUB (ich nehme mal an es ist der
    Teil vor dem Loop - Endloop gemeint) wird nur ein einziges mal
    beim Start des SPS.sub ausgeführt (Einschalten des Steuerschranks).
    Bin mir nicht mal sicher ob der bei einem Warmstart überhaupt ausgeführt
    wird. Ist also nicht unbedingt das was man braucht.


    Und tschüss.
    Hermann

  • Danke schon mal, das hat alles erst mal sehr geholfen. Noch eine Frage: Man kann die SPS ja starten und stoppen sowie abwählen/anwählen. Gehe ich da recht in der Annhame, das alles vor dem LOOP (ja, das meinte ich mit Deklarationsteil) nur nach Abwählen/Anwählen und NICHT nach starten/stoppen der SPS ausgeührt wird?

    If you and DEAD people can read Hex, how many people can read Hex?

  • Wie wird denn die Rechenzeit der SPS verteilt? Es scheint nicht so zu sein, das alles im LOOP in regelmässigen Abständen abgearbeitet wird, je mehr die SPS machen muss, desto lahmer wird sie. Weiss jemand was genaueres? Sind das millisekunden Rechenzeit oder ne bestimmte Anzahl Zeilen Quellcode oder...

    If you and DEAD people can read Hex, how many people can read Hex?

  • Zitat

    Die Taktzeit des Steuerungsinterpreters läßt sich nicht exakt festlegen, da er sich die Systemleistung der KR C1 mit dem Roboterinterpreter (der eine höhere Priorität besitzt) teilen muß. Deshalb ist der Steuerungsinterpreter für zeitkritische Anwendungen nicht geeignet, die Ausgänge können bis zu 50ms Reaktionszeit haben !

    Kontrolle ist eine Illusion, denn niemand weiss was als nächstes passiert.

  • Ja, das Zitat kenn ich, hab mal nach gemessen, komme gerade auf 120ms zwischen zwei LOOP-Zyklen. Kam mir ein wenig viel vor, hoffte jemand weiss genauer, was ich an packen muss um das zu beschleunigen.

    If you and DEAD people can read Hex, how many people can read Hex?

  • Hallo,


    ganz pauschal, nicht so viel reinschreiben.
    Auf keinen Fall Wartezeiten, Warten auf Signale oder Variablen, die im Hauptprogramm gesetzt werden, möglichst keine SRC programme aufrufen (das geht auch) und wenn´s sein muss, keine wartezeiten, warten auf signale oder variablen.


    Ist dass alles nicht der fall, muss der SPS.SUB schon recht lang sein. Ab so ca. 500-1000 Zeilen wuerde ich das fuer normal halten.


    Gruss Stefan

  • Hallo!


    Bei Mit sieht das so aus:
    -Ich rufe einen SRC File auf (kann ich aber umkopieren)
    -Ich habe keine WAIT
    -zyklisch schaue ich mit CREAD und tiemeout 0 ob ne Nachricht am seriellen Port liegt
    -Ich schreibe auch zyklisch 30 Bytes in den seriellen Port
    -Hab keine 300 Zeilen, schätz ich mal, sehe aber noch mal nach


    Dann ist der serielle Port schuldig, behme ich an?


    Danke schon mal!

    If you and DEAD people can read Hex, how many people can read Hex?

  • Hallole,
    die Ursache für die 'Stockungen' dürfte das cread mit
    dem timeout sein.
    Man sollte stattdessen die Variable $DATA_SER1
    hermnehmen, und nur dann das cread starten, wenn
    die Variable $DATA_SER1 > 0 ist.


    Tschüss und guten Rutsch.
    Hermann

  • So, der Übeltäter war VARSTATE, das brauch ich, um zu überprüfen ob in $pos_act was sinnvolles drinsteht (ist vor Beginn der SAK-fahrt nicht so), hatte das mehrfach verwendet, ist nun auf eine einzige Verwendung zusammengekürzt, jetzt braucht das 70ms für einen Zyklus. Gibt es ne Variable, in der IMMER die aktuelle Position drin steht?

    If you and DEAD people can read Hex, how many people can read Hex?

  • Das Funktioniert auch, danke für den Tip. Der Unterschied ist nur, das $ON_PATH bis zum Ende der SAK-Fahrt FALSE ist, mit VARSTATE konnte man den Beginn der SAK-FAHRT erkennen.
    Das stört aber nicht, so läufts noch ein wenig schneller.

    If you and DEAD people can read Hex, how many people can read Hex?

Erstelle ein Benutzerkonto oder melde dich an um zu kommentieren

Du musst ein Benutzerkonto haben um einen Kommentar hinterlassen zu können

Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Geht einfach!
Neues Benutzerkonto erstellen
Anmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden