Datenfeld - wer hat vorrangig Zugriff ?

  • Hallo zusammen,


    ich hab heut was komisches erlebt und weiß bis jetzt moch net, wo das Problem liegt, aber ich bin mir sicher, daß jemand von euch die Lösung weiß.


    Es geht um ein globales Datenfeld, zweidimensional mit dem Datentyp num (speichernd)


    Auf das Datenfeld haben die Hauptask und eine Multitask Zugriff.


    Ich habe das Datenfeld offline mit Werten vorbelegt und habe dann die entsprechenden Module, in denen das Datenfeld deklariert war, in die Steuerung geladen.
    Das Problem war, daß die geänderten Werte nicht übernommen wurden...
    Weder von der Multitask noch von der Haupttask. Ich vermute, daß, wenn ich
    das Modul in der einen Task öffne, die Werte von der anderen Task sofort überschrieben werden. Egal welche Task zuerst aktualisiert wurde, die Werte sind immer die alten...


    Ich brauch unbedingt Urlaub. :uglyhammer_2:


    Normalerweise müßte doch bei einer Änderung von Daten der neue Wert in allen Tasks übernommen werden, oder?


    Also auch wenn ein geändertes Modul geladen wird.


    Kann mir jemand helfen?

  • ANZEIGE
  • Hallöchen maddin,
    normalerweise ist das bei speichernden Variablen so das wenn Du den Wert Offline änderst Du diesen in die Steuerung lädst dieser natürlich übernommen wird.
    So nun ist Dein Datenfeld aber eine Komunikationsvariable zwischen Vordergrundtask und Hintergrundtask. Diese zwei deklarierten speichernden Variablen sind eigentlich eine Variable. Wenn Du jetzt in Vordergrund ein Modul lädst mit dieser Variablen wird diese natürlich von dem aktuellen Stand des Hintergrundtaskt überschrieben.


    Die Frage ist auch wie Du das Modul des Hintergrundtask geladen hast. Über P-Start oder über eine Neustart der Steuerung?
    Hast Du nicht den P-Start verwendet enthält der Arbeitsspeicher bei einem Neustart der Steuerung immer noch das Vordergrundtaskmodul welches Dir Deine Variable wieder überschreibt.


    robotic74

    Wer nichts macht, macht keine Fehler!

    Wer keine Fehler macht, kann nichts daraus lernen!

    Wer nichts lernen kann, kann sich nicht weiterentwickeln!

    Wer sich nicht entwickelt, geht unter!

  • Guten Morgen :)


    Die Vorgehensweise gestern war folgende:


    Zuerst die Hintergrundtask gestoppt, und dann mit Befehl "Öffnen" das geänderte Modul von Diskette geöffnet und damit das alte Modul überschrieben.
    Danach zur Haupttask gewechselt und auch dort das geänderte Modul geöffnet.


    Nachdem das nicht funktionierte, habe ich die Reihenfolge umgekehrt, aber das Ergebnis war das gleiche.


    Einen P-Start habe ich bis jetzt nicht verwendet.

  • Hallo maddin,
    siehst Du somit wurden Deine Daten in dem Datenfeld erhalten. Denn wenn Du das Hintergrundtask lädst ist diese Variable ja noch vorhanden im Vordergrundtask. Somit werden Deine Offline editierten Daten nicht übernommen. Und als Du das Vordergrundtask geladen hattest waren natürlich die Daten aus dem Hintergrundtask noch vorhanden.
    Schau mal in der ABB-Doku nach P-Start. Solltest Du im Benutzerhandbuch finden unter Kapitel 12.11 sind die verschiedenen Neustart's angegeben.
    Mit diesem hättest Du die Möglichkeit Dein Datenfeld zu erhalten.
    Oder Du löscht Dein Vordergrundtaskmodul, in welchem Dein Datenfeld deklariert ist, und ersetzt danach das Hintergrundtask und anschließend lädst Du Dein Vordergrundtask. Somit sollte es eigentlich funktionieren.


    Bis denne


    robotic74

    Wer nichts macht, macht keine Fehler!

    Wer keine Fehler macht, kann nichts daraus lernen!

    Wer nichts lernen kann, kann sich nicht weiterentwickeln!

    Wer sich nicht entwickelt, geht unter!

  • Der P-Start ist mir schon bekannt.


    Ich werd das mit dem P-Start versuchen. Die Haupttask ist dann leer und die Hintergrundtask wird automatisch geladen. Die werde ich dann aktualisieren und
    danach die geänderten Haupttaskmodule öffnen.


    WIEDER WAS DAZUGELERNT !!
    :danke:



    Gruß Maddin

  • Hallo maddin,
    wollte al hören ob Du Deinen Angriff aufs Multitask überlebt hast und wer am Schluß der Sieger war? :mrgreen:
    Ich hoffe es lief alles nach Plan? :supi:


    Bis denne


    robotic74

    Wer nichts macht, macht keine Fehler!

    Wer keine Fehler macht, kann nichts daraus lernen!

    Wer nichts lernen kann, kann sich nicht weiterentwickeln!

    Wer sich nicht entwickelt, geht unter!

  • Hallo robotic,


    tut mir leid für die Funkstille, aber ich muß doch auch mal Urlaub machen 8)


    Nach deiner präzisen Einweisung war alles kein Problem. ;)


    Hab das betreffende Modul in der Haupttask gelöscht, und dann die Multitask aktualisiert. danach das neue Modul in die Haupttask geladen. War ne Sache von ner Minute.....


    Vielen Dank nochmals


    Bis denne


    Gruß maddin

  • Hallo maddin,


    :kopfkratz:


    in der IRC 5 besteht jetzt die Möglichkeit persistente Deklarationen auch Anfangswert zu deklarieren, wenn diese in verschiedenen Tasks verwendet werden.


    In Deinem Fall würde man dann in der Task 1 einen Anfangswert deklarieren


    z.B. PERS num nTest:=1;


    und in der Task 2 die gleiche Variable ohne Anfangswert deklarieren


    z.B. PERS num nTest;


    Nur die Werte aus der Task 1 würden hierbei gespeichert bzw. wieder geladen, die Task 2 würde den Inhalt der Persistenten beim Laden nicht verändern.


    Gruß
    Micky

    Probleme kann man niemals mit derselben Denkweise lösen, durch die sie entstanden sind. (Albert Einstein)

Hilfe und Support für ABB Roboter Programmierung, Konfiguration, Inbetriebnahme finden Sie hier im ABB Roboter Forum. ABB Rapid Programmierung ist einfach, die Roboterforum Community hilft sehr gerne.

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