INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Tasks streaming



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

Heute, 09:15
Beitrag #1

Fuchs Offline
LVF-Grünschnabel
*


Beiträge: 27
Registriert seit: Mar 2013

2023
-
DE


Deutschland
Tasks streaming
Hallo zusammen,

in letzter Zeit kommt es ab und zu vor, dass mein Programm zur Steuerung eines Prüfstandes abstürzt.
Ursache hierfür scheint die Datenkommunikation mit dem cDaq-9188 bzw. DIO NI 9375 zu sein. Nach dem Abbruch ist
die Kommunikation mit den Drucksensoren NI 9237 unterbrochen. Zumindest ist das die erste Fehlermeldung die mir das Programm anzeigt.
Ein Neustart des 9188 ist notwendig.
Ich habe für jeden einzelnen I/O Kanal einen Task im MAX angelegt.
Im Hauptprogramm, welches auf Queued Messanger Handler basiert, ändere ich den Zustand nur durch ein schreiben oder lesen des Tasks. siehe "Kanal schreiben"
Es fand in Vergangenheit kein Starten oder Beenden der I/O Tasks statt.
Die Kanäle der Drucksensoren sind grundsätzlich anders und auch sauberer aufgebaut. Ansprechen, Konfigurieren, Kalibriertabelle einlesen.............starten........stoppen und löschen
Zurück zu den I/Os!
Mittlerweile weis ich auch, dass ist nicht so sauber Programmiert. Hat aber nie Probleme gegeben.
"Never cange a running system"
Jetzt würde ich das gerne besser machen und würde eure Meinung dazu wissen.
Das ganze wird ziemlich unübersichtlich wenn ich für jeden Task ein eigenen Datenstrang anlege.
Wenn ich zu Beginn über eine For-Schleife gehe kann ich jeden Task starten. Soweit ganz gut. siehe "Tasks starten"
Wenn ich jetzt einen Kanal schreiben möchte, muss ich ihn aus dem Array entfernen und ändern.
Frage: Muss ich ihn dann auch wieder in das Array zurückführen?
Da ich mehrerer Queues habe (mehrere NVS) ist das beenden der Tasks auch wieder so ne Sache.
Frage: Würde es reichen, alle Tasks beim Beenden in einer Nachrichtenverarbeitungsschleife zu beenden?


Grüße Fuchs


Angehängte Datei(en) Thumbnail(s)
               
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Nachrichten in diesem Thema
Tasks streaming - Fuchs - Heute 09:15
RE: Tasks streaming - Achim - Heute, 09:31
RE: Tasks streaming - Fuchs - Heute, 11:32
RE: Tasks streaming - Achim - Heute, 15:04
RE: Tasks streaming - GerdW - Heute, 15:40

Who read this thread?
7 User(s) read this thread:
UliB, cordm, Woodeye, Fuchs, Lucki, Achim, GerdW

Gehe zu: