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 

Dieses Thema hat akzeptierte Lösungen:

Zugriff auf Control über Referenz - paralleler Zugriff



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!

28.01.2025, 14:25
Beitrag #1

Kiesch Offline
LVF-Stammgast
***


Beiträge: 422
Registriert seit: Mar 2009

2019, 2018, 2016
2009
DE

04519
Deutschland
Zugriff auf Control über Referenz - paralleler Zugriff
Hi,

blöde Frage, da ich das nicht ohne weiteres selbst entkoppeln kann (kompliziertes über die Zeit gewachsenes Program an dem ich Feintuning mit möglichst wenig Programmieraufwand machen muss):

Wenn ich über eine Referenz (lesend oder schreibend) auf ein Control Zugreife (Value / Value Signalling), das in anderen Prozessen ebenfalls bezüglich Value abgefragt wird, sind dann Abstürze / Aufhänger zu befürchten oder ist das Schlimmste was passieren kann die Auswirkungen einer Racing Condition zu haben?

Weils sonst wahrscheinlich wieder zu Diskussionen führt warum ichs nicht "richtig" mache:
Die Racing Condition ist mir egal, da es nicht auf sofortige richtige Anzeige beim Rücklesen ankommt, alles andere sollte die SPS im Hintergrund glatt ziehen, da die bedienten / rückgelesenen Controls alle über die SPS aktualisiert werden. Heist für die Racing Condition: Beim Lesen über Referenz kriege ich durch (mit etwa 500ms pollendes) Lesen automatisch irgendwann den richtigen Wert im Input der höchstens etwa später Verarbeitet und ans FP auf einen Indikator zurückgegeben wird. Beim Schreiben brauche ich nur das Signaling um den Befehl an die SPS zu triggern, anschließend kann der Wert zwar nochmal zurückspringen (weil in der SPS noch nicht ausgeführt), geht aber nach Ausführung der SPS auf den relevanten Wert. Der zu schreibende Wert wird auf einem völlig separaten Control eingegeben - das hin und her Springen kann also nicht auf die Eingabe zurückwirken.
Hoffe das hilft fürs ruhig schlafen Cool

Viele Grüße,
Kiesch

Zitat:Märchen und Geschichten werden erzählt am Lagerfeuer, technischen Fakten werden mitgeteilt (oder so). (Genauso wie Software nicht auf einem Server "herumliegt", die ist dort installiert.)
*Zitat: IchSelbst*
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30.01.2025, 08:27
Beitrag #2

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.704
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
RE: Zugriff auf Control über Referenz - paralleler Zugriff

Akzeptierte Lösung

Abstürze und Aufhänger, durch das Betriebssystem oder die LV-Runtime bedingt (infolge mangelhaft manipulierter Pointer (nicht-skalare Datentypen)), halte ich für unwahrscheinlich. Abstürze, die applikationsbedingt sind, sollte es auf diesem Level der Programmierung (Datensfluß) auch nicht geben.

Applikationsbedinge Aufhänger kann ich mir tatsächlich vorstellen: Wenn zwei Algorithmen unabhängig und parallel schreibend auf einen zuvor gelesenen Wert zugreifen (nämlich z.B. per Referenz), um den Wert z.B. zu regeln, kann ich mir vorstellen, dass infolge des nicht konsistenten gelesenen Wertes es zu Fehlverhalten im zu schreibenden Wert kommt. Die Sache wäre im Übrigen genauso kompliziert, wie der Satz selbst.

Wenn der neu zu schreibende neue Wert allerdings nicht vom gerade gelesenen alten Wert abhängt, also z.B. Lesen und Schreiben unabhängig und gegenseitig irrelevant sind, sollte es nicht zu Problemen kommen.

Ich halte es grundsätzlich nicht für einen guten Weg, auch in ein bestehendes "einfach strukturiertes" Programm ebensolche Algorithmen nachzurüsten - auch wenn der Chef meint "schnell und billig". Spätestens bei der ersten Nacharbeit wegen unvorhergesehenem (nicht: unvorhersehbarem) Fehler ist aus mit billig. Selbst in Tapeten oder QMH-gesteuerten Programmen kann man FGV's (also SubVI) integrieren, die gekapselten Code und gekapselte Daten enthalten. Alleine durch solche Maßnahmen kann die Wahrscheinlichkeit von applikations- bzw. strukturbedingtem Fehlverhalten minimiert werden.

Eine genaue Aussage zu Absturz- und Aufhäng-Wahrscheinlichkeit kann man aber nur bei Analyse des Programmes (also hauptsächlich seiner Struktur) sagen.

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
31.01.2025, 15:10
Beitrag #3

Kiesch Offline
LVF-Stammgast
***


Beiträge: 422
Registriert seit: Mar 2009

2019, 2018, 2016
2009
DE

04519
Deutschland
RE: Zugriff auf Control über Referenz - paralleler Zugriff
(30.01.2025 08:27 )IchSelbst schrieb:  Applikationsbedinge Aufhänger kann ich mir tatsächlich vorstellen: Wenn zwei Algorithmen unabhängig und parallel schreibend auf einen zuvor gelesenen Wert zugreifen (nämlich z.B. per Referenz), um den Wert z.B. zu regeln, kann ich mir vorstellen, dass infolge des nicht konsistenten gelesenen Wertes es zu Fehlverhalten im zu schreibenden Wert kommt. Die Sache wäre im Übrigen genauso kompliziert, wie der Satz selbst.

Wenn der neu zu schreibende neue Wert allerdings nicht vom gerade gelesenen alten Wert abhängt, also z.B. Lesen und Schreiben unabhängig und gegenseitig irrelevant sind, sollte es nicht zu Problemen kommen.
Genau - die Datenabhängigkeit zwischen setzen und lesen besteht nicht, im Hintergrund mache ich auch keine Regler kirre (der nicht versteht was vorgeht) da keiner auf den Werten arbeitet. Ich bin also - bis auf den parallelen Zugriff relativ zuversichtlich, dass die Anlage damit klarkommt.


Zitat:Ich halte es grundsätzlich nicht für einen guten Weg, auch in ein bestehendes "einfach strukturiertes" Programm ebensolche Algorithmen nachzurüsten - auch wenn der Chef meint "schnell und billig". Spätestens bei der ersten Nacharbeit wegen unvorhergesehenem (nicht: unvorhersehbarem) Fehler ist aus mit billig. Selbst in Tapeten oder QMH-gesteuerten Programmen kann man FGV's (also SubVI) integrieren, die gekapselten Code und gekapselte Daten enthalten. Alleine durch solche Maßnahmen kann die Wahrscheinlichkeit von applikations- bzw. strukturbedingtem Fehlverhalten minimiert werden.

Eine genaue Aussage zu Absturz- und Aufhäng-Wahrscheinlichkeit kann man aber nur bei Analyse des Programmes (also hauptsächlich seiner Struktur) sagen.
Ich müsste um hier FGVs einzusetzen erheblich in die Struktur des bestehenden Programs eingreifen. Das Program ist so gestrickt, dass eine GUI als Visualisierung einer SPS fungiert. Dabei wird ein automatisches Mapping von Controls auf dem Display auf "interne" Werte aus der SPS vorgenommen (anhand des Labels). Zum Aktualisieren der Controls werden Referenzen genutzt. Ein scheinbar sehr robustes System, dass bis auf einem Fehler den ich immer noch nicht verstehe (in einem SubVI (glaubt man dem was der code ausspuckt wenn ich die Referenzen in ne Datei dumpen lasse) haben 2 mal 2 Controls immer exakt die gleiche Referenznummer (die Labview beim Auslesen der Referenz zurückliefert), was zur Nichtaktualisierung der Controls führt und doppelbefüllung der anderen zwei führt) sehr gut funktioniert.
Dummerweise ist dabei der Referenzzugrif sehr elementar im System eingebaut. Ich bin dadurch gezwungen teilweise Nutzerinteraktionen in "simulierte" Nutzerinteraktionen (Value signaling) an einem anderen Control zu übersetzen. Gleiches Spielchen andersrum - ich hole mir die Daten aus einer Anzeige raus und rechne dann entsprechend der getroffenen Änderungen am System auf die "richtigen" Werte an einer Anzeige um. Wie gesagt - bisher habe ich gute Erfahrungen mit dem Konzept gemacht und auch ein ähnliches Konzept (objektorientiert) als Ansteuerung für eine andere Beschleunigeranlage aufgesetzt. Dabei verwaltet sich jeder einzelne DAQ Kanal auf den eingesetzten NI-USB 6001 /6002 selbst als Objekt und aktualisiert ein Displayelement zur Anzeige. Funktioniert seit mehreren Jahren robust im Dauerlauf :-)

Na ja, long story short. Vielen Dank für deine Antwort. Das beruhigt mich. Verlasse in 2 Monaten das Unternehmen, deswegen kommt der Zeitdruck nicht von Chef sondern von mir selbst. Nen externen einkaufen der das macht wird man sicher nicht. Uni, kein Geld. Wir müssen stümpern und hoffen das es hält. Hab jetzt schon Sorge das sich mein Chef irgendwann selbst an dem Code vergreift ^^

Zitat:Märchen und Geschichten werden erzählt am Lagerfeuer, technischen Fakten werden mitgeteilt (oder so). (Genauso wie Software nicht auf einem Server "herumliegt", die ist dort installiert.)
*Zitat: IchSelbst*
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Extrem langsamer Variablen Zugriff über Referenzen hajos118 12 6.027 01.08.2022 17:20
Letzter Beitrag: BNT
  Control-Referenz programmatisch erstellen? spacz 2 4.272 23.01.2017 11:31
Letzter Beitrag: spacz
  Scale Control with Tab Control GT123 6 6.626 08.12.2016 12:42
Letzter Beitrag: jg
  DVR Zugriff über FGV? GT123 6 5.846 03.09.2015 11:33
Letzter Beitrag: GT123
  Zugriff auf verschachtelte Referenzen Hasenfuss 6 5.435 23.06.2015 19:05
Letzter Beitrag: Hasenfuss
  Zugriff auf Tabellenelement Hasenfuss 6 5.194 22.06.2015 09:59
Letzter Beitrag: jg

Who read this thread?
9 User(s) read this thread:
RMR, Lucki, IchSelbst, cordm, TpunktN, UliB, Keppi, rolfk, Kiesch

Gehe zu: