20. Januar 2019, 18:08:48
Roboterforum.de - Die Industrieroboter- Anwender und Experten Community

 Datenfeld - wer hat vorrangig Zugriff ?


normal_post Autor Thema:  Datenfeld - wer hat vorrangig Zugriff ?  (Gelesen 3352 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

09. August 2005, 12:49:38
Gelesen 3352 mal
Offline

maddin


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?
  • gefällt mir    Danke

Heute um 18:08:48
Antwort #1

Werbung

Gast

09. August 2005, 17:22:41
Antwort #1
Offline

Sven Weyer

Global Moderator
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
  • gefällt mir    Danke
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!

10. August 2005, 07:49:15
Antwort #2
Offline

maddin


Guten Morgen  :smiley:

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.
  • gefällt mir    Danke

10. August 2005, 12:52:08
Antwort #3
Offline

Sven Weyer

Global Moderator
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
  • gefällt mir    Danke
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!

10. August 2005, 14:27:47
Antwort #4
Offline

maddin


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
  • gefällt mir    Danke

Heute um 18:08:48
Antwort #5

Werbung

Gast

09. September 2005, 19:15:58
Antwort #5
Offline

Sven Weyer

Global Moderator
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
  • gefällt mir    Danke
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!

26. September 2005, 08:54:15
Antwort #6
Offline

maddin


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
  • gefällt mir    Danke

18. Oktober 2005, 15:58:13
Antwort #7
Offline

Micky


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
  • gefällt mir    Danke


Teile per facebook Teile per linkedin Teile per pinterest Teile per reddit Teile per twitter
 

über das Roboterforum

Nutzungsbedingungen Impressum Datenschutzerklärung

Sponsoren des Roboterforums

ROBTEC GmbH