wiki:LabXferArray

LabXferArray.vi

Neues VI zur vereinfachten Kommunikation und einfacheren "Verdrahtung" unter LabVIEW mit dem c't-Lab. Im Unterschied zu LabXfer.vi kann es gleich ganze Arrays an Daten senden oder empfangen; dafür werden ihm zwei Arrays mit Werten und den korrespondierenden SubChannels angeboten. Besitzt einen Mode-Eingang, der festlegt, ob es Werte senden ("send", mit OK-Bestätigung durch Modul), setzen ("set", ohne Bestätigung), empfangen ("receive", Default bei unverdrahtetem Eingang) oder für den Event-gesteuerten Betrieb anfordern soll ("request", wartet nicht auf Antwort). Ferner ist ein SendMode-Eingang vorhanden, der festlegt, ob das SubVI immer senden ("always") oder nur geänderte Daten senden soll ("changed"), was den Datenverkehr extrem reduziert. Mit SendMode auf "Init" wird lediglich das interne, lokale Vergleichs-Array (für Modus "changed" benötigt) mit den angelieferten Werten besetzt. Diese können "unsinnig" sein, damit beim Aufruf innerhalb der Hauptschleife beim ersten Durchlauf auf jeden Fall die "richtigen" Werte gesendet werden. In den Empfangs-Modi wird das Eingangs-Werte-Array nicht benötigt.

Die Anzahl der gesendeten/empfangenen Werte wird von der Größe des SubCh-Arrays bestimmt. Die zu verwendende Schnittstelle ("Resource Name"), der MainCh, "SendChecksum"-Flag und Nachkommastellen ("Precision") wurden zu einem Cluster zusammengelegt ("LabCluster"). Dieses Cluster kann mit InitLab.vi initialisiert werden, Änderungen an einzelnen Parametern hiervon sind während der Laufzeit mit "Elemente nach Namen bündeln" möglich. Achtung: Das lokale Vergleichs-Array speichert in den Sende-Modi immer die letzten angeboteten Werte; das VI sollte deshalb in einem Programm nicht mehrfach hintereinander zum Senden verdrahtet werden, da die sich jeweils ändernden Werte sonst zu einem ständigen Neu-Senden auch im Changed-Modus führen. Abhilfe ist evt. durch Abspeichern des LabXferArray-SubVIs mit der speicherintensiven Option "ablaufinvariante Ausführbarkeit" möglich, dies wurde aber nicht getestet. Diese Option legt für jedes weitere im Hauptprogramm verwendete gleiche SubVI eine Kopie im Speicher ab, anstatt immer dasselbe SubVI als Subroutine auszuführen. Jedes SubVI hat somit einen eigenen lokalen Speicher (für des Vergleichs-Array).

Diese SubVIs finden sich in der Library CMLIB.llb. Anwendung siehe neues Demo-VIs DCG Power Supply.vi (unter Browse Source/LabVIEW_VIs).

Last modified 7 years ago Last modified on May 22, 2010, 12:32:20 PM