19.08.2013, 19:22
Guten Abend!
Beim Signalverlaufsdiagramm besteht die Möglichkeit, durch Festlegen einer Historienlänge die Größe des "Arrays" in dem Diagramm zu begrenzen. Neue Werte werden im Array hinten angefügt und die vorigen einfach vorne abgeschnitten.
Bei den anderen Diagrammtypen geht das nicht, je mehr Werte ich an die Anzeige übergebe, um so größer wird das Array mit den Datenwerten. Also muss ich das Array auf eine maximale Größe begrenzen.
Mein bisheriger Ansatz geht dahin, dass ich Vergleiche durchführe, darin sind:
max: Maximalgröße Array
ist: Anzahl aktueller Werte im Array
neu: Anzahl neuer Werte, die hinzukommen
leereArray(Anzahl): Die Elemente im Array werden von Null bis Anzahl im Array von vorn abgeschnitten
Im Pseudocode:
if neu <= max
if (max-ist) > neu
leereArray(neu-ist)
else
nichts
endif
else
leereArray(max)
kürze neu auf max-Länge
endif
Die drei Bilder von meinem LabVIEW-Programm zeigen das, wie ich es umgesetzt habe. Es scheint auch so soweit zu funktionieren, denn ich kann die Daten mir so in einem Signalverlauf anzeigen lassen (tut mir leid, dass ich nur die Bildausschnitte zusenden kann, aber dafür hab ich versucht, im Pseudocode kurz zu erklären, was ich dort konstruiert hab).
Meine Frage - gibt es vielleicht eine simplere Lösung für mein Problem? Ich habe dann noch versucht herauszufinden, wie man einen FiFo in LabVIEW realisieren kann, bis mir dann aber bewusst wurde, dass ich ja keinen FiFo brauche, sondern das Array in seiner größe begrenzen muss, denn bei jedem Aktualisierungsvorgang für die Anzeige wird ja das ganze Array neu geschrieben (da ich nicht mehr den Signalverlaufsgraph mit der Historienlänge verwende). Somit ist ein FiFo (der sich einfach mit einer Queue realisieren ließe) für meinen Anwendungsfall nicht zu gebrauchen.
Falls mir von Euch jemand einen Tipp hat, nach welchen anderen Stichworten ich suchen könnte, würde ich mich sehr freuen.
Beim Signalverlaufsdiagramm besteht die Möglichkeit, durch Festlegen einer Historienlänge die Größe des "Arrays" in dem Diagramm zu begrenzen. Neue Werte werden im Array hinten angefügt und die vorigen einfach vorne abgeschnitten.
Bei den anderen Diagrammtypen geht das nicht, je mehr Werte ich an die Anzeige übergebe, um so größer wird das Array mit den Datenwerten. Also muss ich das Array auf eine maximale Größe begrenzen.
Mein bisheriger Ansatz geht dahin, dass ich Vergleiche durchführe, darin sind:
max: Maximalgröße Array
ist: Anzahl aktueller Werte im Array
neu: Anzahl neuer Werte, die hinzukommen
leereArray(Anzahl): Die Elemente im Array werden von Null bis Anzahl im Array von vorn abgeschnitten
Im Pseudocode:
if neu <= max
if (max-ist) > neu
leereArray(neu-ist)
else
nichts
endif
else
leereArray(max)
kürze neu auf max-Länge
endif
Die drei Bilder von meinem LabVIEW-Programm zeigen das, wie ich es umgesetzt habe. Es scheint auch so soweit zu funktionieren, denn ich kann die Daten mir so in einem Signalverlauf anzeigen lassen (tut mir leid, dass ich nur die Bildausschnitte zusenden kann, aber dafür hab ich versucht, im Pseudocode kurz zu erklären, was ich dort konstruiert hab).
Meine Frage - gibt es vielleicht eine simplere Lösung für mein Problem? Ich habe dann noch versucht herauszufinden, wie man einen FiFo in LabVIEW realisieren kann, bis mir dann aber bewusst wurde, dass ich ja keinen FiFo brauche, sondern das Array in seiner größe begrenzen muss, denn bei jedem Aktualisierungsvorgang für die Anzeige wird ja das ganze Array neu geschrieben (da ich nicht mehr den Signalverlaufsgraph mit der Historienlänge verwende). Somit ist ein FiFo (der sich einfach mit einer Queue realisieren ließe) für meinen Anwendungsfall nicht zu gebrauchen.
Falls mir von Euch jemand einen Tipp hat, nach welchen anderen Stichworten ich suchen könnte, würde ich mich sehr freuen.