Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Bücher:

Robotik mit MATLAB

Studierende:
weitere Angebote

Partner:


Vermarktungspartner


Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

AppDesigner Funktionsaufruf - Kommunikation mit LabJack U6

 

ExcelFoley
Forum-Newbie

Forum-Newbie


Beiträge: 1
Anmeldedatum: 16.05.19
Wohnort: ---
Version: 2017b
     Beitrag Verfasst am: 16.05.2019, 11:09     Titel: AppDesigner Funktionsaufruf - Kommunikation mit LabJack U6
  Antworten mit Zitat      
Code:
function Pumpensteuerung
    ljasm = NET.addAssembly('LJUDDotNet');
    ljudObj = LabJack.LabJackUD.LJUD;

    % Steuerspannungen der Netzteile für 12A
    U_P_I = 1;

    % Steuerspannung der netzteile für 12V
    U_P_U = 2;

    x1 = 'An';
    x2 = 'An';
    x3 = 'An';
   
    try % Der gesamte try-Befehl ist aus dem Skript "u6_simple.m" entnommen

        % Open the first found LabJack U6.
        [ljerror, ljhandle] = ljudObj.OpenLabJackS('LJ_dtU6', 'LJ_ctUSB', '0', true, 0);

       
        ljudObj.ePutSS(ljhandle, 'LJ_ioPUT_CONFIG', 'LJ_chTDAC_SCL_PIN_NUM',0,0);
        % Analog-Outputs für Netzteilsteuerung ansprechen
        % Spannung von Analog-Output DAC0 auf festgelegte Spannung setzen -> Netzteil/ Pumpe 1
        switch x1
            case 'An'
                ljudObj.AddRequestS(ljhandle, 'LJ_ioPUT_DAC', 0, U_P_I, 0, 0);
            case 'Aus'
                ljudObj.AddRequestS(ljhandle, 'LJ_ioPUT_DAC', 0, 0, 0, 0);
        end

        % Spannung von Analog-Output DAC1 auf festgelegte Spannung setzen -> Netzteil/ Pumpe 2
        switch x2
            case 'An'
                ljudObj.AddRequestS(ljhandle, 'LJ_ioPUT_DAC', 1, U_P_I, 0, 0);
            case 'Aus'
                ljudObj.AddRequestS(ljhandle, 'LJ_ioPUT_DAC', 1, 0, 0, 0);
        end
    catch e
        showErrorMessage(e)
    end

    try
        [ljerror, ljhandle] = ljudObj.OpenLabJackS('LJ_dtU6', 'LJ_ctUSB', '0', true, 0);
        ljudObj.ePutSS(ljhandle, 'LJ_ioPUT_CONFIG', 'LJ_chTDAC_SCL_PIN_NUM',0,0);
        % Spannung von Analog-Output DACA (LJTick) auf festgelegte Spannung setzen -> Netzteil/ Pumpe 3
        switch x3
            case 'An'
                ljudObj.ePutSS(ljhandle, 'LJ_ioTDAC_COMMUNICATION', 'LJ_chTDAC_UPDATE_DACA', U_P_I, 0);
            case 'Aus'
                ljudObj.ePutSS(ljhandle, 'LJ_ioTDAC_COMMUNICATION', 'LJ_chTDAC_UPDATE_DACA', 0, 0);
        end
    catch e
        showErrorMessage(e)
    end

    try
        [ljerror, ljhandle] = ljudObj.OpenLabJackS('LJ_dtU6', 'LJ_ctUSB', '0', true, 0);
        ljudObj.ePutSS(ljhandle, 'LJ_ioPUT_CONFIG', 'LJ_chTDAC_SCL_PIN_NUM',0,0);
        % Spannung von Analog-Output DACB (LJTick) auf festgelegte Spannung setzen -> Netzteil/ Pumpe
        ljudObj.ePutSS(ljhandle, 'LJ_ioTDAC_COMMUNICATION', 'LJ_chTDAC_UPDATE_DACB', U_P_U, 0);
    catch e
        showErrorMessage(e)
    end

end
 


Diese Funktion habe ich aus meiner App (AppDesigner) ausgelagert. Sie wird über Callbacks aufgerufen, was auch soweit funktioniert. Theoretisch ändern sich durch Einstellungen in der App die Werte x1 x2 x3. Daher kommt aber nicht das Problem.
Über den Code spreche ich ein LabJack U6 mit LJTick-DAC an FIO0/1 an und würde gerne Spannungen an DACA und DACB vorgeben (bei DAC0/1 funktioniert das).
Der erste Aufruf der Funktion läuft ohne Probleme durch. Sobald ich die Funktion das 2. Mal über die App aufrufe erhalte ich folgende Fehlermeldung:

Error in matlab.apps.AppBase>@(source,event)tryCallback(appdesigner.internal.service.AppManagementService.instance(),app,callback,requiresEventData,event)
UD Error: Communication error with LJTDAC module, wrong number of ACKs received
Error using Pumpensteuerung (line 60)
Message: Eine Ausnahme vom Typ "LabJack.LabJackUD.LabJackUDException" wurde ausgelöst.
Source: LJUDDotNet
HelpLink:

Error in PSModell_Rev04/StopButtonPushed (line 786)
Pumpensteuerung;

Error in appdesigner.internal.service.AppManagementService/tryCallback (line 283)
callback(app, event);

Error in matlab.apps.AppBase>@(source,event)tryCallback(appdesigner.internal.service.AppManagementService.instance(),app,callback,requiresEventData,event)

Kann mir dabei jemand weiterhelfen?
Ich verstehe die Fehlermeldung so, dass die Kommunikation mit dem LabJack, speziell dem Tick-DAC, nicht funktioniert. Aber warum erst beim 2. Anlauf?

Edit: Wenn ich die Funktion alleine mehrfach hintereinander Aufrufe bekomme ich keine Fehlermeldung.

Vielen Dank im Voraus.
Private Nachricht senden Benutzer-Profile anzeigen


Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.


goMatlab ist ein Teil des goForen-Labels
goForen.de goMATLAB.de goLaTeX.de


 Impressum  | Nutzungsbedingungen  | Datenschutz  | Werbung/Mediadaten | Studentenversion | FAQ | goMatlab RSS Button RSS


Copyright © 2007 - 2020 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
Partner: LabVIEWforum.de

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.