DAC Grafik in den Hintergrun​d schieben

Hallo,
ich möchte im DAC hinter meinen Messanzeigen ein Bild anzeigen.
Meine Anzeigen sind fertig, füge ich jetzt ein Bild hinzu, überdeckt dieses die Anzeigen.
Füge ich die Anzeigen nach dem Bild hinzu, überdecken diese das Bild.
Wie kann ich manuell das Bild in den Hintergrund schieben, damit ich nicht alle Anzeigen löschen und neu erstellen muss?
Vielen Dank,
Thomas

Hallo Thomas
Es ist leider genau so wie Sie sagen. Die Anzeigereihenfolge hängt von der Reihenfolge ab, wie Sie es in den Plan einfügen.
Sie können aber den gesamten Plan, aber ohne die Grafik, in mit STRG-X ausschneiden und anschließend wieder mit STRG-V einfügen. Dann liegt die Grafik im Hintergrund.
Winfried

Similar Messages

  • Wie eingeben und auslesen an Serieller über SCript DAC Treiber?

    Hallo Kenner!
    Ich habe es geschafft über die Beispieldateien vom Helfer "Script-Dac-Treiber.pdf" Daten über die Serielle Schnittstelle einzulesen.
    Geht ganz gut, wenn man sich eine Beispieldatei entsprechend umschreibt. Das soweit ist alles prima.
    Nun steht mir der Wunsch, den "IN/OUT"-Sript Treiber zu benutzen, um Daten an das Script zu übergeben, damit diese an das angeschlossene Gerät übertragen werden, während weiterhin Daten vom Gerät gelesen werden. Dazu muss man "SFD_ProcessChannel" richtig, ähm, konfigurieren.
    Im "Script-Dac-Treiber.pdf" gibt es leider keine Beispiele dafür. Auch keine nähere Beschreibung.
    Ich kriegs nicht hin.
    Könnte ich eine Beispiel VBS bekommen? Den Rest bekomme ich hin.
    Gruß
    Message Edited by Tietje on 08-14-2007 05:45 AM

    Die Verwendung der Funktion
    SFD_ProcessChannel( ChannelNumberP, InputListV, ParamP, DataP, ErrorP )
    funktioniert eigentlich analog zu deb Besipielen für die Funktion
    SFD_ReadChannel( ChannelNumberP, ParamP, DataP, ErrorP )
    Eigentlich gibt es nur einen Unterschied: Die Möglichkeit, dynamisch Daten aus dem Schaltplan an das VBS zu übergeben.
    Hierzu können an den DAC Block ein oder mehrere Datensignale angeschlossen werden. Die Aktuellen Inhalte der Signaleingänge des Blocks können über die Vektorvariable InputListV abgefragt werden. InputlistV(0) trägt den wert des ersten Kanals, usw.
    Genau wie die ReadChannel Funktion wird das Script pro Takt und pro Ausgangskanal einmal aufgerufen, die Integervariable ChannelNumberP zählt dabei durch, für welchen Ausgang die Funktion zur Zeit ausgeführt wird.
    Das einfachste Beispiel für eine ProcessChannel Funktion besteht aus einem Script, welches einfach die Eingänge des DAC Blockes mit den Ausgängen koppelt (hierbei muss natürlich die Anzahl der Ein- und Ausgänge am Block identisch sein; sonst gibt es einen Fehler).
    Sub SFD_ProcessChannel( ChannelNumberP, InputListV, ParamP, DataP, ErrorP )
      DataP = InputListV(ChannelnumberP)
    End Sub
    Ich habe mir die LabVIEW Beispiele zu dem Gerätetreiber kurz angesehen - zum Steuern des Gerätes ist immer ein Stringbefehl mit variabler numerischer Komponente notwendig. Letztere können Sie im Schaltplan durch Eingabeelemente generieren, die Verknüpfung mit dem Befehl muss dann im VBS erfolgen.
    Ich hoffe, diese Information hilfen Ihnen schon ein bisschen weiter.
    Ingo Schumacher
    Systems Engineer Sound&VibrationNational Instruments Germany

  • Offset Berechnung in Diadem

    Hallo,
    wir führen Messungen mit 50 bis 100 Kanälen parallel durch. Vor der Messung
    nehmen wir eine Offsetmessung vor. Anschließend wird für jeden Kanal
    der Mittelwert berechnet. Wie kann man diese 50-100 Offsetwerte in einen DAC-Plan
    einbinden, so dass für weitergehende Messungen jeder Messkanal im DAC View um den Offset  
    bereinigt dargestellt wird? (Online Berechnung während der Messung)

    Hallo C_Petz,
    willst Du nach der Messung die Kanäle mit dem Glättungsfaktor glätten und Sie dann im VIEW darstellen?
    Woher kommen die 50-100 Kanäle?
    Wenn Du eine Online Berechnung während der Messung realisieren willst, dann kannst Du das folgendermaßen machen:
    Du kannst Dir in VBS ein eigenes Script schreiben und dieses Script im DAC Plan irgendwo einbinden.
    Einbinden kannst Du das Script mit den Script Treiber Blöcken.
    Treibereingänge -> Script Treiber (VBS)
    Treiberausgänge -> Script Treiber (VBS)
    Ich hoffe ich konnte Dir damit weiterhelfen.
    MfG
    Dippi

  • Miix 2 10 erkennt meinen Router nicht

    Hallo zusammen, ich habe das Problem, daß mein Miix 2 10 meinen Router (TP Link TD-W8961NB) nicht erkennt. Am Router kann es nicht liegen, da ich mit x verschiedenen Geräten (Win Phone, PS3, FireTV und PC) keine Probleme habe. Das W-Lan des Miix funktioniert grundsätzlich auch: Ich kann mich mit meinem Firmen-Netzwerk verbinden, und die Router in meiner Nachbarschaft werden auch alle angezeigt. Nur mein eigener Router ist in der Liste der Netzwerke gar nicht zu sehen. An den Sichheitseinstellungen des Routers (MAC-Filter usw.) kann es auch nicht liegen. Hat jemand eine Idee, was man da machen kann?

    Erst mal danke für die Antwort.  Ich hänge unten mal eine Grafik mit den Einstellungen an. An denen habe ich noch nie etwas verändert. 

  • Ich möchte ein frei verschiebbaren Pfeil in ein PDF Dokument positionieren.

    Ich hab ein PDF Dokument.
    Nun würde ich gerne paar Pfeile oder ähnliches auf dem Formular platzieren. Der Grund ist, dass der Nutzer die Pfeile selbständig auf die für ihn wichtige Positionen verschieben kann. Mit anderen Worten, er soll den Pfeil dort platzieren wo er etwas ausgewählt hat.
    Mit Checkboxen lösen ist das hier nicht (oder nur schwer) möglich. Es ist eine Art Fragebogen, nur sind die Antworten zum Teil Text, zum Teil Grafiken.
    Optimal wäre es den Nutzer das Dokument zu geben wo sich bereits ein Pfeil befindet und er soll den Pfeil dort schieben können wo er will.
    Gibt es so eine oder ähnliche Möglichkeit in Acrobat?

    Ok, ich hab mir alles noch mal angeguckt und was gefunden. War einfacher als ich dachte. Ich hab mich zu stark auf Formulare konzentriert und die Pfeil-Werkzeuge übersehen. Außerdem kann man eigene Stempel in gewünschter Form importieren.
    EDIT:
    @Willi Adelberger
    Ups, sorry, deine Antwort war so kurz, dass ich sie übersehen habe und erst nach meinem Post bemerkt habe. Trotzdem vielen Dank.

  • GraphObjMove bewirkt "access violation"

    Ich suche nach einer Möglichkeit ein Objekt in den Hintergrund zu schieben (nicht nur eine Ebene zurück).
    Das geht ja bekanntlich mit GraphObjMove(objname, delta). Wenn ich jedoch ein Objekt verschiebe:
    GraphObjMove("FreeText1",-(ReportObjLast-1))
    funktioniert dies zwar, ich kann danach aber keinen Report mehr speichern (access violation). Nur ein Neustart von DIAdem hilft...
    Dies habe ich auf mehreren Rechnern ausprobiert (WinXP, DIAdem 10.2).
    Gibt es eine andere Möglichkeit?
    Gruß,
    Andreas

    Hi Chris,
    Did you try the REPORT object move programmatically or interactively?  And most importantly did you try it in DIAdem 10.2?  I have noticed that DIAdem 10.2 crashes when I leave a REPORT object open (error in the script prior to the GraphObjClose command), then try to move or refresh or save the layout afterwards.  Earlier versions of DIAdem were not that sensitive to this situation.
    Brad Turpin
    DIAdem Product Support Engineer
    National Instruments

  • GPS-Daten im REPORT und DAC auf einer Grafik darstellen

    Hallo liebe NI´ler,
    ich möchte die bei einer Messung miterfassten GPS-Daten (Koordinaten) nach der Messung auf einer Grafik (erstellt aus einer Karte) im REPORT darstellen, für eine Präsentation aber auch diese Daten auf dieser Grafik im DAC wieder aus der Datei spielen (wie im Beispiel course.dac)...
    Habt ihr einen eleganten Weg von einer gescannten Karte oder einem Kartenausschnitt zur maßstäblich richtigen Grafik fürs DIAdem zu kommen ?
    Grüße Sven...

    Hallo Walter,
    also ich kenne hier bei uns schon ein Team, welches auf jeden Fall die Offlinedarstellung im REPORT dringend benötigen würde und auch im DAC würde es online zur Visualisierung der Fahrzeugposition viel Sinn machen. Canape Graph von Vector Inforamtik kann das ja auch und die verwenden Kartenmaterial der Teleatlas GmbH dahinter...
    Man könnte da zum Beispiel auch mal schon eine Strecke vorgeben, nach der ein Fahrer die Messung reinfahren soll, was bisher nur durch einen Zweitrechner mit Routenplaner und zweiter GPS-Anbindung möglich ist...
    Beim REPORT sollte man vielleicht aber auch verschiedene höher aufgelöste Karten verwenden können, wie es fürs GPS online nötig ist.
    Gruss Sven...

  • Pfadangabe für Grafik-Dateien bei online-Grafiken (VISUAL)

    Einige VISUAL-Elemente können mit Grafiken aus wmf-Dateien versehen
    werden. Es ist die Angabe von Dateiname, evt. mit Pfad, erforderlich.
    Ohne Pfadangabe werden die Grafik-Dateien an verschiedenen Orten
    erwartet. (Schalter erwarten die Grafik auf SYSDRV, Grafiken erwarten
    die wmf-Datei auf GRADRVLIBR.)  Derartige Layouts sind schlecht
    portierbar, da am fremden System die Diadem -Installationsverzeichnisse
    verändert werden müssten. Die Grafikdateien gehöhren aber zum Projekt
    und sollten auch dort gespeichert werden.
    Wie kann ich den Pfad zu einer Grafik unter Verwendung einer
    entsprechenden Variable formulieren, so dass der Schaltplan portierbar
    wird? Die Schreibweise
    @DACDRVUSER%name.wmf
    funktioniert nicht. Einen absoluten Pfad möchte ich schon gar nicht
    angeben. Gibt es eine Möglichkeit den Standard-Suchpfad für
    Illustrationsgrafiken zu setzen?
    (Das Problem ist verwand mit Message id: 63683)

    Danke der Mühen, funktioniert aber nicht.
    Die Variable AUTODRVUSER existiert auch dann, wenn kein Script gestartet wurde. Das Konstrukt:
    AUTODRVUSER&"Name.WMF"
    kann von den DAC-Elementen "Image" und "Button" jedoch nicht aufgelöst werden. Auch nicht im Scriptablauf. Die Schreibweise
    @[email protected]
    ebenfalls nicht.

  • Data exchange Mainscript (SCRIPT) with script block (DAC)

    Is there any way to exchange data beetwen a Mainscript (SCRIPT) with
    user-dialoges and script block (DAC) in this way that the script in
    scriptblock can access to this data?
    Background: I write a DAC-Application with some script-blocks for
    reading and writing data to/from real devices. During the development
    I'd like to simulate all device accesses because I don'd have the
    devices in my office. I write all scripts with a branch for simulation
    an real measurement on startup.
    How can I execute a swich (simulation / mesurement) without changing
    all my scripts all times? Can a script read a variable anyway (Variable
    from Mainscript, Diadem-Uservariable or "Hilfsvariable" like L1)? 
    Can I fill "DeviceParam1V" with content of a variable?
    I could use a input channel connected with a formula-block for it. (The
    formula-block can read a variable.) But this way is uncomfortable an
    don't work for input blocks.
    Martin Bohm
    [email protected]

    Because the DAC Script is executed in its own runtime environment you cannot use the DIAdem variables as in a normal VBS or a SUD.
    Still, there are ways to exchange information.
    First of all by an extra channel as Input (you named it)
    Secondly, there are several variables you can use. Have a look at the Script DAC block. There are two fields called Parameter1 and Parameter2. And each signal you configure has a parameter of its own.
    Prior to starting the scheme, you can use a script to change the value of those parameters:
    Call DACObjOpen("Script-in1")
      VBSSignalParam(1) = "abc"
    Call DACObjClose("Script-in1")
    Is changing the parameter of the first signal that is configured.
    Call DACObjOpen("Script-in1")
      VBSParameter1 = "1st device parameter"
      VBSParameter2 = "2nd device parameter"
    Call DACObjClose("Script-in1")
    is changing the global device parameters.
    On the side of the Script DAC driver VBS you cann use the paramP funtion to access the signal parameter that corresponds to the actual channel (as referenced by ChannelnumberP)
    ' SFD_ReadChannel
    ' Zweck               : Lesen eines Wertes für den Kanal "ChannelNumberP"
    ' ChannelNumberP      | Kanalnummer aus dem Block-Dialog
    ' ParamP              | Vom Anwender definierte Variable aus dem Block-Dialog
    ' DataP               | Variable zur Rückgabe des neuen Kanalwertes. Diese
    '                     | Variable sollte zumindest auf einen gültigen Wert
    '                     | initialisiert werden.
    ' ErrorP              | Variable zur Rückgabe einer Fehlermeldung. Wird diese
    '                     | Variable gesetzt, stoppt DIAdem die Messung
    Sub SFD_ReadChannel( ChannelNumberP, ParamP, DataP, ErrorP )
    End Sub
    To acces the device Parameters, use the init function:
    ' SFD_Init
    ' Zweck               : Diese Prozedur wird während des Messungsstarts aufgerufen
    ' DeviceParam1V       | Erster Parameter, der vom Anwender im DAC-Block
    '                     | eingegeben werden kann
    ' DeviceParam2V       | Zweiter Parameter, der vom Anwender im DAC-Block
    '                     | eingegeben werden kann
    ' ErrorP              | Variable zur Rückgabe einer Fehlermeldung. Wird diese
    '                     | Variable gesetzt, stoppt DIAdem die Messung
    Sub SFD_Init( DeviceParam1V, DeviceParam2V, ErrorP )
    End Sub
    Ingo Schumacher
    Systems Engineer Sound&VibrationNational Instruments Germany

  • Diadem 9.1: Transparent Grafik im Report

    Hallo,
    habe doch gleich 3 Fragen zum Thema Grafik im Report:
    1.Frage/Problem:
    besteht die Möglichkeit transparente Grafik (z.B. im PNG-Format) mit Alphakanal (d.h. nicht nur transparenter Hintergrund, sonder auch transparenter Verlauf ) im Report zu laden?
    Wenn ich mit der Import-Funktion Grafik einbinde, so wird der alphakanal automatisch ignoriert.
    2.Frage/Problem:
    Eine alternativ Lösung wäre für mich, wenn ich die Grafik per Script aktivieren bzw. deaktivieren könnte? gibt es ein Flag, wie "visible"?
    3. Frage/Problem:
    Wie kann ich per Script die Darstellungsebene der Objekte wie Grafik ändern? Ich kenne leider nur die Variante, per Kontektmenu in den Hintergrund bzw. Vordergrund zu versetzen.
    Vielen Dank

    Sie haben recht, die Funktionen war zur 9.1 noch nicht offiziell. Funktionieren tut sie aber trotzdem. Hier die Hilfe aus Version 10:
    Befehl: GraphObjMoveSel
    Verschiebt markierte Report-Objekte in den Vorder- oder Hintergrund in DIAdem-REPORT.
    Call GraphObjMoveSel(ObjDelta)Eingabeparameter
    ObjDelta
    Bestimmt die Anzahl der Ebenen, um die DIAdem das Objekt verschiebt.
    Longinteger-Variable
    -65535 <= ObjDelta <= 65535
    Hinweis  Der Betrag der Variablen ObjDelta darf den Wert (ReportObjLast - 1) nicht überschreiten.
    Beispiel
    Das folgende Beispiel verschiebt markierte Objekte um eine Ebene nach vorn.
    Call GraphObjMoveSel(1)
    Call PicUpdate
    Befehl: GraphObjMoveVerschiebt ein Report-Objekt vor oder hinter die anderen Report-Objekte eines Arbeitsblatts.Call GraphObjMove(GraphObjName, ObjDelta)Eingabeparameter
    GraphObjName
    Bestimmt den Namen eines Objekts in einem Report.
    String-Variable
    Maximal 16 Zeichen
    Hinweis  Verwenden Sie in DIAdem-REPORT statt der Variablen GraphObjName die Variable ReportObj.
    ObjDelta
    Bestimmt die Anzahl der Ebenen, um die DIAdem das Objekt verschiebt.
    Longinteger-Variable
    -65535 <= ObjDelta <= 65535
    Hinweis  Der Betrag der Variablen ObjDelta darf den Wert (ReportObjLast - 1) nicht überschreiten.
    Hinweis  Nehmen Sie die Parametrierung von Objekten in DIAdem-REPORT immer in folgender Reihenfolge vor: Das Objekt öffnen, den Inhalt des Objekts verändern, dann ein Unterobjekt öffnen, den Inhalt des Unterobjekts verändern, dann das Unterobjekt schließen und zuletzt das Objekt schließen. Weitere Informationen finden Sie in der Vorgehensweise Zugreifen auf Objekte in DIAdem-Modulen.
    Beispiel
    Das folgende Beispiel erzeugt einen roten Text und davor ein 2D-Achsensystem mit gelbem Hintergrund. Der Befehl GraphObjMove verschiebt den Text vor das 2D-Achsensystem.
    Call GraphSheetNew("Test")
    Call GraphObjNew("Freetext","New Text")
    Call GraphObjOpen("New Text")
    TxtTxt ="Test Report"
    TxtSize =20
    TxtColor ="red"
    TxtPosX =50
    TxtPosY =50
    Call GraphObjClose("New Text")
    Call GraphObjNew("2d-axis","2DAxis1")
    Call GraphObjOpen("2DAxis1")
    D2AxisTop =15
    D2AxisBottom =15
    D2AxisLeft =25
    D2AxisRight =25
    D2AxisBackColor = "Yellow"
    Call GraphObjClose("2DAxis1")
    Call PicUpdate
    Call MsgboxDisp ("Move text into foreground")
    Call GraphObjMove("New Text",1)
    Call PicUpdate

  • DAC: How to read channel Data

    How can I read Values from  Diadem-Datachannels to DAC?
    There is a control "Channel Data" ("Simulation Kanal" in german release). It can read data from channels with a clock-signal.
    How can I reset the read-pointer to the first channel-entry without restarting DAC?
    How can I read arbitrarily data from a channel.
    Is there a completly different way to do that?
    Martin Bohm
    [email protected]

    Ja, genau diesen Block "Kanäle" meinte ich in meinen obiigen
    Ausführungen. Mit seiner Hilfe kann ich Daten aus aus Kanälen des
    Datenportals lesen, aber nur in der original Reihenfolge beginnend mit
    der ersten Zeile.
    Ich kann nicht:
    - wahlfrei auf ein bestimmtes Datum zugreifen
    - den Lesezeiger gezielt auf den Anfang zurücksetzen.
    - Ferner müssen die Kanäle bereits vor Start desDAC-Plans bekannt sein. Ich kann die Kanäle nicht dynamisch verwenden.
    Damit ist dieser Block nahezu unbrauchbar.
    Ich habe inzwischen eine Lösung gefunden: Der Block "freie Formel" kann
    über die Funktion "ChD(y,x)" beliebig auf das Datenportal
    zugreifen.  Die Verwaltung der Eingänge x und y kann in DAC, also
    online erfolgen

  • Problem mit Script-DAC​-Treiber

    Hallo
    ich habe ein Problem mit einem selbsterstellten Script-DAC-Treiber für mein Navilock GPS Empfänger.
    von dem Empfänger bekomme ich ständig über eine Serielle Schnittstell die aktuellen Standortdaten gesendet
    diese sehen das so aus:
    $GPGGA,061834.500,5146.5823,N,00755.9943,E,1,08,0.​8,84.9,M,46.4,M,,0000*68
    $GPGSA,A,3,20,11,17,14,23,31,19,28,,,,,1.5,0.8,1.3​*3C
    $GPGSV,3,1,10,01,83,140,23,11,54,152,19,14,20,042,​22,17,31,308,41*70
    $GPGSV,3,2,10,19,10,169,16,20,64,251,32,23,20,189,​30,28,08,260,29*73
    $GPGSV,3,3,10,31,13,098,28,32,72,071,08*79
    $GPGLL,5146.5823,N,00755.9943,E,061834.500,A,A*5E
    $GPRMC,061834.750,A,5146.5823,N,00755.9942,E,0.99,​96.96,130314,,,A*5B
    $GPVTG,96.96,T,,M,0.99,N,1.8,K,A*34
    $GPGGA,061834.500,5146.5823,N,00755.9943,E,1,08,0.​8,84.9,M,46.4,M,,0000*68
    $GPGSA,A,3,20,11,17,14,23,31,19,28,,,,,1.5,0.8,1.3​*3C
    $GPGSV,3,1,10,01,83,140,23,11,54,152,19,14,20,042,​22,17,31,308,41*70
    $GPGSV,3,2,10,19,10,169,16,20,64,251,32,23,20,189,​30,28,08,260,29*73
    $GPGSV,3,3,10,31,13,098,28,32,72,071,08*79
    $GPGLL,5146.5823,N,00755.9943,E,061834.500,A,A*5E
    $GPRMC,061834.750,A,5146.5823,N,00755.9942,E,0.99,​96.96,130314,,,A*5B
    $GPVTG,96.96,T,,M,0.99,N,1.8,K,A*34
     Hiervon interessiert mich nur die $GPRMC Zeile bzw einige Werte hierraus.
    In meiner Treiberdatei suche ich also nach dem Trennzeichen, lese von rechts 77 Zeichen und Zerhacke den String dann auf die Daten die ich haben möchte.
    Solange ich nur diesen Treibereingang im DAC-Schaltplan verwende funktioniert er auch bestens.
    Wenn ich jetzt jedoch noch einen weiteren Treibereingang von z.B. meiner Spider mit reinhänge (natürlich mit anderem Takt, da mir die GPS Position jede Sekunde 1 mal reicht...) und evtl noch einen Sinusgenerator reinlege erhalte ich ständig Fehlermeldungen.
    Noch dazu scheint dann die Abarbeitung der Anweisungen im DAC-Treiber-Skript nicht sauber zu funktionieren. So erhalte ich beispielsweise die Meldung das "right" nicht zulässig ist, obwohl ich dieses vorher mit einer IF-Anweisung auszuschließen versuche.
    Hat da jemand ne Idee?
    Attachments:
    GPS-Treiber_ver3.VBS ‏18 KB

    Hallo nielscho,
    Im empfangenen Datenstrom nach  "$GPVTG" zu suchen und darauf zu hoffen, dass die Zeile davor die "$GPRMC" Daten enthält würde ich anders gestalten. Du könntest zunächst den Delimitier auf "$GPRMC" setzen und eine Zeile einlesen. Wenn die Zeile länger als 1 Zeichen ist, kannst du davon ausgehen, dass du den String "$GPRMC" auch empfangen hast. Anschließend der Delimiter auf <CR> oder <LF> setzt werden (du muss das im Hex Dump zu dem Logger nachsehen, was als Zeilenendezeichen übertragen wird.), Anschließend kannst du eine Zeile einlesen. Diese enthält dann die Daten zu der gesuchten Zeile. Alles Weitere sollte sich wie in dem Listing gezeigt interpretieren lassen.
    Wenn dieser Treiber in Verbindung mit einem anderen Treiber laufen soll, sollte auf jeden Fall die Messung "asynchron zum Messtakt" erfolgen damit die anderen Treiber durch das Script nicht ausgebremst werden.
    Bei den Fehlermeldungen, die beim Betrieb des Treibers auftreten vermute ich einmal, dass hier ein anderer String als der " $GPRMC" empfangen wurde und ausgewertet werden soll.
    Im Anhang habe Ich ein GPS Beispiel gespeichert, das stabil läuft.
    Gruß
    Walter
    Attachments:
    GPS VBS Driver.zip ‏12 KB

  • Datenstring aus Messgerät auslesen über Script Dac Treiber

    Hallo,
    ich möchte aus einem Messgeät Messwerte aus einem Dac heraus auslesen. Dazu nutze ich den Scrip-Dac Treiber und lese 4 Kanäle über GPIB aus (Diadem 10.0).
    Ich nutze die Funktion SFD_Init( DeviceParam1V, DeviceParam2V, ErrorP) zum initialisieren und zum anfordern der Messwerte (man schreibt welche werte man auslesen möchte und mit "cont on" werden die Werte dann zyklisch nach jedem Messzyklus ausgegeben).
    Mit der Funktion SFD_GetScan wird dann mittels read-Befehl der Wert aus der Schnittstelle ausgelesen.
    Es kommt folgender String zurück: 2.31174E+2;5.00093E+1;2.59054E-1;4.36872E-1     => Es sind vier Werte je durch ; getrennt
    Nun wird mit der Funktion SFD_ReadChannel ( ChannelNumberP, ParamP, DataP, ErrorP ) der Wert wie folgt aufgesplittet und je nach Wert von ParamP der richtige Wert zurückgegeben.
            MVariablenDF = Split(sDaten, ";", -1, 1)    'String aufsplitten, jeweils am ";"
            uac = oUDIM.Parse(MVariablenDF(0), "%ad")
            freq = oUDIM.Parse(MVariablenDF(1), "%ad")
            p = oUDIM.Parse(MVariablenDF(2), "%ad")
            ep = oUDIM.Parse(MVariablenDF(3), "%ad")
     Select case ParamP
       Case "UAC"     DataP = uac
       Case "FREQ"  DataP = freq
       Case "P"          DataP = p
       Case "EP"       DataP = ep
     end Select
    Nun mein 1.Problem:
    Hin und wieder kommt kurz nach dem Start der Messung folgende Fehlermeldung zu obiger Zeile "MVariablenDF = Split(sDaten, ";", -1, 1)"
    Fehler: Index ausserhalb des gültigen Bereichs: '[number: 1]'
    2. Problem:
    als erstes wird in dem Script eine Windows Umgebungsvariable abgefragt:
    T1 = GetEnv("Diadem") 
    Wenn diese Zeile im Script ist, bekomme ich zu Beginn die Fehlermeldung Typen unverträglich: 'GetEnv', das Script läuft aber trotzdem hin und wieder fehlerfrei.
    Nehme ich diese Zeile raus, bekomme ich sofort zu dem 1. Problem die Fehlermeldung: Typen unverträglich und es werden keine Werte ausgelesen.

    Hallo,
    vielen Dank für die Antwort
    zu1. ich hatte zwar die Variable mit "0;0;0;0" initialisiert, allerdings wird der Wert scheinbar auf "" gesetzt wenn keine Werte an der Schnittstelle anliegen. Meine Do Loop until <> "0;0;0;0" Abfrage war damit natürlich hinfällig.
    Der vorgeschlagene Code oUDI.Parse(vData,"%2R<UAC»%1S%2R<FREQ»%1S%2R<P»%1S%2R<EP»") funktioniert, allerdings müssen die Zeichen
    > statt » (steht auch falsch in der Diadem Hilfe!) eingefügt werden
    Außerdem muss die Formatvorgabe %ad statt %2R  sein (%2R finde ich auch nicht in der Diademhilfe)  => "%ad<UAC>%1S%ad<FREQ>%1S%ad<P>%1S%ad<EP>"
    Mit der Abfrage, dass der String sDaten <> "" ist dürfte wahrscheinlich auch der Split-Befehl funktionieren.
    zu2.
    Die Windows Umgebungsvariable ist in der Systemsteuerung gesetzt. Damit kann ich Scripte auf verschiedenen Rechnern, bei denen Diadem in verschiedenen Verzecihnissen installiert ist, laufen lassen, unabhängig davon wo mein gerade gestartetes Script steht.
    Gruß
    Erik

  • NI 9481 Modul,Ausgabe über DAc funktioniert nicht

    Hallo,
    ich habe ein Problem:
    Ich habe im MAX drei Tasks für das NI Modul 9481 (Digitales-Relais-Ausgabemodul) eingerichtet. Wenn ich diese drei im MAX teste über "Ausführen", kann ich so die Relais betätigen.
    Jetzt habe ich bei DIAdem 10.2 im DAC einen Schaltplan erstellt, in den ich einen Ausgabeblock einfügefügt habe.Hier habe ich die drei Tasks einfgefügt. Zum testen habe ich drei einfache Schalter platziert die bei Betätigung eine 1 sonst eine 0 an den jeweiligen Task übergeben. Das kuriose ist, dass einer der Tasks funktioniert und das Relais schaltet und bei den anderen tut sich nichts, obwohl ich alle drei identisch erstellt habe?!?!?!
    Jemand eine Idee an was das liegen könnte?
    Mit freundlichen Grüßen,Tobias

    Hallo Tobias,
    unter folgenden Link finden Sie eine Vorgehensbeschreibung:
    http://forums.ni.com/ni/board/message?board.id=60&message.id=3220&requireLogin=False
    Allerdings arbeiten sie eher mit DAQmx Kanälen als mit Tasks. Tasks, die im MAX erstellt worden sind können von DIAdem aus nicht benutzt werden, da DIAdem nur mit den globalen DAQmx Kanälen arbeitet.
    Mit freundlichen Grüßen,
    Rebecca Fox
    Applications Engineer
    National Instruments

  • Daten konvertieren in Script Dac Treiber

    Hallo,
    versuche seit einiger Zeit ein Keithley 2000 DMM anzusteuern (per Scipt Dac Treiber). Komme jeoch mit der Umwandlung der empfangenen Daten nicht weiter:
    die empfangenen Daten haben folgendes Format (-1.123456789E-04,+9.987654321E+01<CR><LF>) - Es sind hier 2 Werte (2Kanäle) durch Komma getrennt.
    Wie kann ich jetzt zum Beispiel den ersten Wert in einen numerischen Wert wandeln? Die Funktion "Val()" scheint im Script Dac nicht zu funktionieren (Fehler: Typen unverträglich: "Val")
    Vielen Dank für Eure Hilfe!
    Gruß, Thomas

    Hallo Thomas,
    das online-Script läuft quasi unabhängig von DIAdem und kann dadurch keine DIAdem Befehle oder Funktionen ausführen. Es gibt eine VBS-Funktion die ähnlich wie die DIAdem Funktion "VAL" arbeitet:
    cdbl("1,234")
    Diese Funktion nimmt als Dezimaltrennzeichen das, das im Betriebssystem eingestellt ist. Bei einem deutschen Windows ist das das Komma. Für Deine Zahlen würde also dann nicht der richtige Wert rauskommen.
    Lösung: entweder Du ersetzt vor der Umwandlung alle Punkte durch Kommas oder Du stellst die Ländereinstellungen des gerade laufenden Scripts auf englisch um mit dem Befehl: setLocale("en-us").
    Grüße
    Andreas
    Andreas Weiland
    Projektingenieur
    measX GmbH & Co. KG, www.measX.com

Maybe you are looking for