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 

Lastprofile interpolieren



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!

03.01.2014, 18:09 (Dieser Beitrag wurde zuletzt bearbeitet: 03.01.2014 18:10 von David_Lab.)
Beitrag #1

David_Lab Offline
LVF-Grünschnabel
*


Beiträge: 14
Registriert seit: Jan 2014

2013
2013
DE



Lastprofile interpolieren
Hallo Zusammen,

ich werde jetzt mal hier als Nutzer Aktiv. Ich konnte mir in eurem Forum schon viele Anregungen und Hilfestellungen aneignen, dafür danke ich schon mal.
Jetzt zu meinem Problem. Ich schreibe an meiner Abschlussarbeit und soll u.a. ein SUBVI schreiben welches die zwei eingegebenen Lastprofile auf deren Zeitabstand bzw. gemessene Werte pro Stunde untersucht und falls diese nicht identisch skaliert sind, diese aufeinander angleicht. Dies soll durch eine Interpolation erfolgen. Das Lastprofil mit der Zeitlich höheren Auflösung soll als Referenz dienen, sprich es wird wenn z.B. ein Lastprofil mit 6 Werten pro Stunde und ein Lastprofil mit 4 Werten pro Stunde vorliegt, das Lastprofil mit 4 Werten auf ein Lastprofil mit 6 Werten "erweitert" werden soll. Das ganze klappt prinzipiell auch nur ist mein Problem, dass das ganze viel zu langsam ist.

Vielleicht habt ihr ja eine Idee woran das ganze liegen könnten?

Ich hänge noch ein Beispielhaftes Bild mit an wo die Interpolation dargestellt ist. Die Angehängten Dateien sind das Haupt SUBVI "Lastprofile interpolieren" und die SubVis welche den Zeitlichen Abstand ermittelt und ob alle Lastprofile gleich skaliert sind und das Lastprofil für die eigentliche interpolation. Zudem hänge ich noch ein Lastprofil für die PV Einspeisung und den Verbrauch mit an, welche unterschiedlich skaliert sind.

Ich danke schon mal im Voraus und wünsche ein angenehmes Wochenende
Gruß David

Hier noch das Verbrauchs Lastprofil


Angehängte Datei(en)
13.0 .vi  Lastprofile_interpoliern.vi (Größe: 30,08 KB / Downloads: 208)

13.0 .vi  Lastprofil nicht identisch skaliert.vi (Größe: 7,95 KB / Downloads: 182)

0.0 .txt  PV Lastprofil.txt (Größe: 898,68 KB / Downloads: 238)

13.0 .vi  SUBVI Interpolieren.vi (Größe: 35,53 KB / Downloads: 177)

13.0 .vi  Überprüft den Lastprofil Zeitabstand.vi (Größe: 6,97 KB / Downloads: 153)

0.0 .txt  Verbrauch lastprofil.txt (Größe: 1,21 MB / Downloads: 263)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
03.01.2014, 21:03 (Dieser Beitrag wurde zuletzt bearbeitet: 03.01.2014 21:03 von jg.)
Beitrag #2

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: Lastprofile interpolieren
Offtopic2
Dies hier
   
habe ich dir doch schon hier rausprogrammiert. Wieso ist es wieder drinnen?
Und dein Vergleichs-VI ist auch ein wenig arg umständlich:

13.0 .vi  Lastprofil nicht identisch skaliert.vi (Größe: 6,71 KB / Downloads: 194)

Gruß, Jens

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
03.01.2014, 22:58
Beitrag #3

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: Lastprofile interpolieren
(03.01.2014 18:09 )David_Lab schrieb:  ich werde jetzt mal hier als Nutzer Aktiv.
Bist du das nicht schon? s. http://www.labviewforum.de/Thread-Zeitac...ormatieren , hier hast du schon mal die "extrem langsam" Frage gestellt.

Ein wenig weitere allgemeine Kritik:
Wieso liest du in jedem Schleifendurchlauf die Files ein?
Wieso immer die Berechnug der "Werte Pro Stunde"?
Es ist IMHO extrem ungünstig, Profil-Verläufe mit unterschiedlichen Zeitbereichen aufeinander anzupassen (PV-Profil geht von 03/2010-02/2011, das Last Profil von 01/2011-12/2011).
Deine Überprüfung auf "Werte pro Stunde" ist extrem statisch, sie geht davon aus, dass du immer Tabellen hast, die Werte für 1 Jahr enthalten. Offenbar hast du dann noch mühsam Anpassungen vorgenommen für den Fall, dass ab und an Werte fehlen, wie bei deinem Last-Profil Upload. Da fehlen 4 Werte. Verwende doch die vorhandenen Zeitstempel zur Berechnung des vorhandenen Delta-T.

Es gibt fertige Funktionen zum Interpolieren, z.B. Interpolate 1D. Bei korrekter Anwendung dieses VI bist du quasi schon fertig.

Gruß, Jens

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
04.01.2014, 13:46
Beitrag #4

David_Lab Offline
LVF-Grünschnabel
*


Beiträge: 14
Registriert seit: Jan 2014

2013
2013
DE



RE: Lastprofile interpolieren
Hallo,
erstmals vielen Dank für deine Antwort.
Der Verlinkte Beitrag ist von einem Kommilitonen der eine ähnliche Abschlussarbeit schreibt und wir haben noch nicht über die besagt Verbesserung gesprochen, die ich jetzt dankend übernehmen werden.
Zu der Weiteren Kritik. Ehrlich gesagt sehe ich das nicht, dass ich in jedem Schleifendurchlauf die Files einlesen, bzw. ich wüsste nicht wie ich es anders machen sollte.
Was meinst du mit wieso immer die Berechnung der „Werte Pro Stunde“ ?
Die gegebenen Profile waren jetzt nur Beispiele und es sollen nur Profile verwendet werden die zu mindestens zum gleichen Zeitpunkt beginnen.
Die Überprüfung auf „Werte pro Stunde“ versuche ich jetzt mal zu ändern, dass Problem was ich dabei habe ist nur das ich den String der Zeitachse nicht in eine Zahl umwandeln kann um ein Delta-T zu ermitteln.
Mit der gegebenen Funktion zum Interpolieren komm ich nicht ganz klar, bzw. diese bezieht sich nur auf eine lineare Interpolation? In meinen gegebenen Lastprofilen sind ja Energien gegeben entsprechend angehängter Zeichnung. Kann ich die Funktion den dafür einsetzen?

Gruß David


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
04.01.2014, 18:49 (Dieser Beitrag wurde zuletzt bearbeitet: 04.01.2014 19:05 von GerdW.)
Beitrag #5

GerdW Offline
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Lastprofile interpolieren
Hallo David,

welches Ergebnis erwartest du bei boolschen Ausdrücken wie diesem:
Code:
y := (a=2) AND (a=3)
???
Diese verwendest du mehrfach in "SUBVI Interpolieren" - und jedesmal wohl falsch...

Weitere Dinge:
- Wenn man ein einzelnes Element eines (1D-)Arrays haben will, nimmt man nicht ArraySubSet mit Länge=1, sondern IndexArray...
- Es gibt Funktionen wie "+1"...
- Wenn man wissen will, wie oft eine FOR-Loop durchläuft, muss man nicht erst ein Array am Ausgang aufbauen und dessen Element zählen lassen: man könnte auch einfach das "N" der Schleife abfragen...
- Konstante Operationen kann man vor der Schleife durchführen und nicht innerhalb...

Ich habe mal nur die innerste Case-Struktur überarbeitet, siehe Anhang...

In "Überprüft den Lastprofil Zeitabstand" hast du einen Tippfehler, oder ist das hier:
Code:
if(Groesse >= 105020 && Groesse >= 105220)
wirklich gewollt? Hmm
Außerdem ist die Verwendung von Kommata im Formelknoten sehr "fragwürdig", wie z.B. hier:
Code:
ska =2,4;
Was sagt die Hilfe (zum Formelknoten) zu diesem Thema? Mal schauen:
Zitat:Bei Formelknoten ist als Dezimalzeichen nur ein Punkt (.) zulässig. Das Komma wird von der Funktion nicht erkannt.
Immer wieder schön, wenn LabVIEW-Anfänger mit der Hilfe arbeiten... Big Grin
Und noch schöner, wenn selbst einfachste Funktionsüberprüfungen anscheinend unterlassen wurden... Hmm

Auch wenn man schon die Lust verliert, noch ein VI anschauen: "Lastprofile_interpoliern".
- Wozu die FOR-Loop um die Multiplikation der Array-Elemente mit 1000/Summe(Array)? Das geht auch ohne Loop dank Polymorphismus...
- Wozu die FOR-Loop direkt danach? Wenn man die erste Spalte eines 2D-Arrays haben will, nimmt man IndexArray und schreibt eine Null an den Eingang für die Spalte...
- Warum ReadSpreadsheetFile in der String-Variante und nicht gleich in der Double-Variante? Du musst nur den passenden Formatcode ("%.;%f") vorgeben...
- Der Rest wurde schon gesagt: Konstante Operationen immer vor einer Schleife ausführen - wie diese ReadFile-Operationen...

Tipp:
Wenn man mehrere VIs anhängen will, bietet sich ein ZIP-Archiv an...


Angehängte Datei(en)
13.0 .vi  SUBVI Interpolieren.vi (Größe: 33,88 KB / Downloads: 209)

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
04.01.2014, 21:15 (Dieser Beitrag wurde zuletzt bearbeitet: 04.01.2014 21:17 von jg.)
Beitrag #6

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: Lastprofile interpolieren
(04.01.2014 13:46 )David_Lab schrieb:  Hallo,
erstmals vielen Dank für deine Antwort.
Der Verlinkte Beitrag ist von einem Kommilitonen der eine ähnliche Abschlussarbeit schreibt und wir haben noch nicht über die besagt Verbesserung gesprochen, die ich jetzt dankend übernehmen werden.
Zu der Weiteren Kritik. Ehrlich gesagt sehe ich das nicht, dass ich in jedem Schleifendurchlauf die Files einlesen, bzw. ich wüsste nicht wie ich es anders machen sollte.
Was meinst du mit wieso immer die Berechnung der „Werte Pro Stunde“ ?
Du hast um deinen gesamten Sourcecode eine While-Schleife. Der liest erst die Profile ein, macht dann deine "Werte-Pro-Stunde" Berechnung, und versucht dann, schrittweise (nämlich immer 1/2-h Weise) dein PV-Profil neu zu berechnen (was aber schief geht, da fehlerhaft programmiert). Abbruch dieser Schleife sollte wohl sein, wenn du mit der Berechnung fertig bist (funzt aber net mit deinem VI). Dann liest du wieder ein, berechnest neu, und probierst die nächsten Zeilen neu zu "interpolieren".
(04.01.2014 13:46 )David_Lab schrieb:  Die gegebenen Profile waren jetzt nur Beispiele und es sollen nur Profile verwendet werden die zu mindestens zum gleichen Zeitpunkt beginnen.
Die Überprüfung auf „Werte pro Stunde“ versuche ich jetzt mal zu ändern, dass Problem was ich dabei habe ist nur das ich den String der Zeitachse nicht in eine Zahl umwandeln kann um ein Delta-T zu ermitteln.
s. der nette Parallel-Thread deines Kommilitonen. Da wird gezeigt, wie du Strings in Timestamps wandeln kannst. Und mit Timestamps kann man rechen, z.B. kann man 2 Timestamps voneinander subtrahieren. Da kommt dann eine Double-Zahl in Sekunden heraus.
(04.01.2014 13:46 )David_Lab schrieb:  Mit der gegebenen Funktion zum Interpolieren komm ich nicht ganz klar, bzw. diese bezieht sich nur auf eine lineare Interpolation? In meinen gegebenen Lastprofilen sind ja Energien gegeben entsprechend angehängter Zeichnung. Kann ich die Funktion den dafür einsetzen?
Es ist jetzt das allererste Mal die Rede davon, dass deine Profile in der 2. Spalte "Energien pro Zeiteinheit" enthalten, also z.B. den Verbrauch in den letzten 10 bzw. 15 Minuten. Das hättest du gleich mal erwähnen können, und von Interpolation kann man dann eigentlich IMHO auch nicht reden, vielmehr von einer Neuberechnung.

(04.01.2014 18:49 )GerdW schrieb:  welches Ergebnis erwartest du bei boolschen Ausdrücken wie diesem:
Code:
y := (a=2) AND (a=3)
???
Diese verwendest du mehrfach in "SUBVI Interpolieren" - und jedesmal wohl falsch...
@Gerd: schau noch mal genau hin, der Vergleich ist a=2 UND b=3.

So, und jetzt noch eine Korrektur deiner VIs für den Fall 6 & 4 Werte pro Stunde. Die anderen Cases habe ich mir gespart und noch nicht angerührt. Da darfst du erstmal die Verbesserungsvorschläge von Gerd einarbeiten.
Prinzipiell musst du dir dafür ein allgemeineres Konzept überlegen, es kann nicht sein, dass du jeden Fall einen eigenen Case programmierst.

Gruß, Jens


Angehängte Datei(en)
13.0 .vi  Lastprofile_interpoliern_neu.vi (Größe: 29,17 KB / Downloads: 179)

13.0 .vi  Lastprofil nicht identisch skaliert.vi (Größe: 6,71 KB / Downloads: 176)

13.0 .vi  Überprüft den Lastprofil Zeitabstand-neu.vi (Größe: 10,48 KB / Downloads: 168)

13.0 .vi  SUBVI Interpolieren_neu.vi (Größe: 33,9 KB / Downloads: 190)

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
04.01.2014, 22:13
Beitrag #7

GerdW Offline
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Lastprofile interpolieren
Hallo,

danke an Jens für die Korrektur...

Noch ein Nachtrag zu meinem Upload: man kann IndexArray natürlich noch aufziehen, dann braucht man nicht mehrere dieser Funktionen in einem Case.

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.01.2014, 19:50
Beitrag #8

David_Lab Offline
LVF-Grünschnabel
*


Beiträge: 14
Registriert seit: Jan 2014

2013
2013
DE



RE: Lastprofile interpolieren
Guten Abend zusammen,

erst mal möchte ich mich Herzlichen Bedanken für die Tipps und Ratschläge, die mir sehr weiter geholfen haben!
Ich habe es mittlerweile hinbekommen für das Interpolieren eine Allgemeine Lösung zu finden, welche die doch recht statische Lösung, die sich nur auf eine Hand voll Lastprofile beschränkt hat, ablöst.
Dabei ist mir aber aufgefallen, dass die Lastprofile sehr oft Fehler enthalten bzw. Datensätze fehlen und deshalb habe ich ein SubVI geschrieben welches diese Fehler erkennt und verbessert. Zudem möchte ich wenn die Sommerzeit in Profilen vorhanden ist diese durch die Winterzeit ersetzen. Dafür habe ich mir überlegt eine Referenz Zeitachse zu erstellen und jeden einzelnen Wert in meinem Lastprofil auf seine Richtigkeit zu untersuchen. Ich denke das ganze würde auch funktionieren, nur und jetzt kommt meine eigentliche Frage: Labview erstellt automatisch das Referenz Zeitprofil auch mit Sommer und Winterzeit und deshalb klappt das Ganze leider doch noch nicht so richtig. Wenn z.B. Zeitwerte im Profil fehlen soll die zugehörige Einspeisung 0 sein.

Könnt ihr mir einen Tipp geben wie ich in das Referenz Zeitarray nur Winterzeit rein bekomme?
Ich habe schon so einiges ausprobiert mit Weltzeit etc. aber irgendwie klappt das Ganze nicht.
Evtl. gibt es ja auch noch eine einfachere Lösung ein Lastprofil auf Fehler zu untersuchen und Lücken zu schließen?
Für die einzelnen Lastprofile Verbrauch, PV und Wind kann das angehängte Lastprofil genutzt werden, in dem sich auch noch einige Lücken befinden.

Grüße und einen schönen Abend noch!
David


Angehängte Datei(en)
13.0 .vi  Lastprofile einlesen_v.vi (Größe: 27,52 KB / Downloads: 182)

13.0 .vi  Überprüft den Lastprofil Zeitabstand+Sommerzeit_auf_Winterzeit_v.vi (Größe: 26,14 KB / Downloads: 187)

0.0 .txt  PV in kWh.txt (Größe: 836,28 KB / Downloads: 219)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.01.2014, 20:53
Beitrag #9

GerdW Offline
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Lastprofile interpolieren
Hallo David,

zum subVI: was soll das hier bewirken?
   
Erstens benötigst du keine FOR-Loop, wenn dich nur das Ergebnis der letzten Iteration interessiert.
Zweitens greifst du bei der letzten Iteration auf ein ungültiges Arrayelement zu...

Zitat:Könnt ihr mir einen Tipp geben wie ich in das Referenz Zeitarray nur Winterzeit rein bekomme?
Ich habe schon so einiges ausprobiert mit Weltzeit etc. aber irgendwie klappt das Ganze nicht.
Weltzeit/UTC kennt keine Sommerzeit, ist also das, was du haben willst. Wie kommst du darauf, dass dort trotzdem Sommerzeit verwendet wurde?
Bevor entsprechende Nachfragen kommen: Du solltest beachten, dass LabVIEW in Anzeigen automatisch die lokale Zeitzone nutzt! Selbst wenn du intern mit UTC arbeitest, wird die Anzeige trotzdem deine lokale Zeitzone beachten - und damit wiederum Sommerzeit einrechnen...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.01.2014, 13:17
Beitrag #10

David_Lab Offline
LVF-Grünschnabel
*


Beiträge: 14
Registriert seit: Jan 2014

2013
2013
DE



RE: Lastprofile interpolieren
Hallo Gerd,
sorry ich habe ausversehen irgendwie eine alte Version von meinem SubVi angehängt daraus folgte auch die Komische Schleife.
Anbei nochmal das richtige.
Mit der Weltzeit das verstehe ich irgendwie immer noch nicht richtig scheinbar mache ich etwas falsch. Wenn ich die Zeitzone auch an meinem Computer auf UTC stelle wird mir nur ein Fehler an Index 18 (bitte neues Lastprofil benutzen) gemeldet, da dort eine Uhrzeit fehlt. Zudem sind auch wie du schon erwähnt hast alle Anzeigeelemente richtig. Wenn ich allerdings die Zeitzone wieder normal auf UTC+1 stelle, stimmt die Anzeige, obwohl ich die Zeitachse alle mit UTC belegt haben(glaube ich zumindest Big Grin) nicht mehr sprich es wird Sommer und Winterzeit (Winter auf Sommer Index 8166 in Zeitreferenz; Sommer auf Winter Index 28995 in Zeitreferenz) angezeigt, was jetzt ja nicht so schlimm wäre, allerdings rechnet Labview intern auch damit, sodass ich sehr viele Fehlermeldungen(„Fehlerarray Indexangabe“) bekomme. Was ich auch nicht verstehe, warum Labview das Lastprofil mit Sommer und Winterzeit anzeigt, obwohl im hinterlegten Lastprofil diese gar nicht berücksichtig werden.
Es muss doch möglich sein auch ohne die Zeitzone am PC auf UTC zu stellen, dass Labview intern mit UTC arbeitet?
Gruß David


Angehängte Datei(en)
13.0 .vi  Überprüft den Lastprofil Zeitabstand+Sommerzeit_auf_Winterzeit.vi (Größe: 24,45 KB / Downloads: 156)

0.0 .txt  PV in kWh - mit Fehler.txt (Größe: 836,26 KB / Downloads: 206)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  2D-Array filtern und Interpolieren Mace 7 8.474 10.04.2013 10:30
Letzter Beitrag: Mace
  Messwerte "syncronisieren" mit 1-D-Array-interpolieren SirPete 1 3.306 09.10.2012 06:08
Letzter Beitrag: Achim
  Datenreihen unterschiedlicher Länge normieren / interpolieren? BeFu 20 33.224 14.06.2010 14:03
Letzter Beitrag: Lucki
  interpolieren selber gemacht? kor 3 5.081 21.07.2009 20:53
Letzter Beitrag: schrotti
  Wie Array interpolieren? KonZ 14 16.905 16.05.2008 22:48
Letzter Beitrag: jg
  Interpolieren doc 4 4.703 23.01.2007 08:12
Letzter Beitrag: cb

Gehe zu: