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.




Unsere Partner:

DIAdem-Forum.de Partner

DIAdem-Forum.de Partner






Stellenangebote:
Ingenieur/in Fernüberwachung
Westliches Ruhrgebiet

Entwicklungsingenieur (m/w) Auslegung / Versuch für Elektromotoren
Frankfurt

Berater und SW-Entwickler (m/w) für 3D-Erfassung/-Visualisierung/-Druck
Ulm

Applicationsingenieur (m/w) Testsysteme Central IE Prozessentwicklung
Frankfurt am Main

Senior Softwareentwickler/in
Westliches Ruhrgebiet





.
 
Themabewertung:
  • 2 Bewertung(en) - 5 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5

Performance in DIAdem: Optimales Lesen und Schreiben von Kanaldaten
17.12.2008, 11:08, (Dieser Beitrag wurde zuletzt bearbeitet: 07.11.2009, 11:15 von Carpe_DIAdem.)
#1
DIAdem-Version: alle
DIAdem-Sprachversion: DE/EN
DIAdem Erfahrung seit: 1995
Performance in DIAdem: Optimales Lesen und Schreiben von Kanaldaten

Hallo zusammen,

vorweg möchte ich betonen, dass es keinen Wertezugriff auf Kanäle gibt, der schneller ist als der einer DIAdem-Standardfunktion, die den gesamten Kanal verarbeitet. Wenn die Performance eines Scripts eine Rolle spielt, sollte also immer eine schon vorhandene DIAdem-Funktion eingesetzt werden. Beispiele: um einen Wert zu einem Kanal zu addieren, Kanäle zu multiplizieren usw. kann man Basisfunktionen benutzten. Bei der Suche eines bestimmten Wertes in einem Kanal hilft die ChnFind-Funktion.
Aber es gibt Aufgabenstellungen, bei denen die Standardfunktionen nicht ausreichen und einzelne Werte verarbeitet werden müssen. Für das gezielte Lesen und Schreiben von Kanalwerten bietet DIAdem verschiedene Varianten (CHT, CHV, CHD, CHDX, Data-API), die unterschiedlich schnell sind und die verschiedene Vor- und Nachteile besitzen. Die Unterschiede liegen in den unterstützten Kanaltypen (Text oder Zahl) und der automatischen Berechnung der Kanalkennwerte.

Liste der DIAdem-Funktionen für den Zugriff auf Kanaleinzelwerte.

CHT: Nur für Textkanäle. Aktuelle Kanallänge und Kanalkennwerte werden automatisch angepasst. Normale Performance.
CHV: Für beliebige Datentypen. Aktuelle Kanallänge und Kanalkennwerte werden automatisch angepasst. Normale Performance.
CHD: Nur für numerische Daten. Aktuelle Kanallänge und Kanalkennwerte werden automatisch angepasst. Schnell.
CHDX: Nur für numerische Daten. Kanallänge und Kanalkennwerte müssen durch weitere Befehle gesetzt werden. Sehr schnell.
Data-API: Für den jeweiligen Datentyp des Objektes. Kanallänge wird automatisch angepasst. Die Kanalkennwerte müssen durch zusätzliche Befehle gesetzt werden. Sehr sehr schnell.


Funktion Kanaltyp Berechnet Kennwerte Geschwindigkeit
cht(z,s) Text Ja Langsam
chv(z,s) alle Ja Normal
chd(z,s) numerisch Ja Schnell
chdx(z,s) numerisch Nein Sehr schnell
oChn.Values(z) alle Nein Sehr schnell (-)
oChn(z) alle Nein Sehr sehr schnell

Beispiel: Data_Performance.ZIP

Im angehängten Beispiel werden die unterschiedlichen Varianten gegenübergestellt. Es wird die Zeit für jeweils 50000 Lese- und Schreibvorgänge gemessen und in die Log-Datei eingetragen. Dabei ist leicht zu erkennen, dass die Data-API Variante in DIAdem 11.1 den schnellsten Zugriff auf einzelne Kanalwerte darstellt. In der Data-API liegt also die Zukunft; deshalb möchte ich noch ein paar Hinweise hierzu geben.
Eine ausformulierte Zuweisung auf einen Einzelwert eines bestimmten Kanals in einer bestimmten Kanalgruppe sieht wie folgt aus:

Code:
Data.Root.ChannelGroups(x).Channels(y).Values(z) = i

Hier hat VBS aber noch einiges zu interpretieren. Jeder Punkt und jeder Index kostet dabei etwas Zeit. Wenn das dann in einer Schleife aufgerufen wird dauert es ein wenig länger als nötig. Besser ist es in VBS ein Objekt (z. B. eine Kanalgruppe oder ein Kanal) in einer Variablen zu speichern. Dann ist die Interpretation nur einmal erforderlich.

Code:
Dim oMyChn
Set oMyChn = Data.Root.ChannelGroups(x).Channels(y)
oMyChn.Values(z) = i

Das ist schon erheblich schneller. Wenn jetzt noch ausgenutzt wird, dass DIAdem bei Kanälen das Property „Values“ als Default kennt, dann ist das der optimale und schnellste Data-API Zugriff.

Code:
oMyChn(z) = i


.zip   Data_Performance.zip (Größe: 35,19 KB / Downloads: 733)

Carpe DIAdem



Möglicherweise verwandte Themen...
Thema Verfasser Antworten Ansichten Letzter Beitrag
  Vergleich Excel / DIAdem Bruno 0 7.850 18.02.2011, 11:36
Letzter Beitrag: Bruno
  DIAdem Autocode: Programmieren leichtgemacht Bruno 0 9.953 19.03.2010, 08:39
Letzter Beitrag: Bruno
  Performance in DIAdem: ScriptInclude anstelle von ScriptStart Carpe_DIAdem 0 8.264 04.12.2008, 18:25
Letzter Beitrag: Carpe_DIAdem

Gehe zu: