-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 16

Thema: uC -> rs232 -> Matlab / Plotten

  1. #1
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    23.04.2007
    Ort
    stuttgart
    Beiträge
    1.127

    uC -> rs232 -> Matlab / Plotten

    Anzeige

    Hallo,
    ich möchte daten die vom uC über die RS232 Kommen in Matlab plotten.
    Allerdings bekomme ich folgenden fehler:
    Code:
    >> s = serial('COM3','BaudRate',9600);
    >> fopen(s)
    ??? Error using ==> fopen
    Port: COM3 is not available. No ports are available.
    Use INSTRFIND to determine if other instrument objects are connected to the requested device.
    bei instrfind bekomme ich folgendes:
    Code:
    >> INSTRFIND(s)
    
       Serial Port Object : Serial-COM3
    
       Communication Settings 
          Port:               COM3
          BaudRate:           9600
          Terminator:         'LF'
    
       Communication State 
          Status:             closed
          RecordStatus:       off
    
       Read/Write State  
          TransferStatus:     idle
          BytesAvailable:     0
          ValuesReceived:     0
          ValuesSent:         0
    habe Matlab 6.5 unter Windoof XP...

    Alternative Frage: gibt es vielleicht ein Tool mit dem ich die Daten einfach Plotten kann, am besten für Linux ??
    (in echtzeit, nicht mit copy+paste+exel)

    Danke schon mal....
    meine projekte: robotik.dyyyh

  2. #2
    Erfahrener Benutzer Roboter Genie Avatar von Willa
    Registriert seit
    26.10.2006
    Ort
    Bremen
    Alter
    37
    Beiträge
    1.269
    Hi Goran!
    Hm, wenn ich genau das gleiche mache wie Du (mit com5 statt com3, denn da hängt mein USB-Konverter dran), funktioniert es bei mir. Ich bekomme aber genau das gleiche wie du bei instrfind angezeigt. Da ist irgendetwas komisch, kannst du vielleicht mal die Adresse von deiner Schnittstelle ändern?
    Regler kommen bald zurück :-D !
    p.s. gnuplot kann kein echtzeit, oder? Kenn mich mit Linuxzeugs nicht aus
    Viele Grüße, William
    -> http://william.thielicke.org/

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    23.04.2007
    Ort
    stuttgart
    Beiträge
    1.127
    hmm, ich werde es mal mit einer anderen Version testen, irgendwie kommt mir das verbuggt vor.
    Gnuplot ansich kann kein echtzeit soweit ich weis, aber mit nem kleinen perlscript oder ähnlichem sollte das machbar sein denke ich..
    meine projekte: robotik.dyyyh

  4. #4
    Erfahrener Benutzer Roboter Genie Avatar von Willa
    Registriert seit
    26.10.2006
    Ort
    Bremen
    Alter
    37
    Beiträge
    1.269
    Wenn du es hinbekommst einen Realtimeplot mit Matlab zu machen wäre ich daran auch sehr interessiert... Ich werde mich aber auch mal damit auseinandersetzen.
    Viele Grüße, William
    -> http://william.thielicke.org/

  5. #5
    Erfahrener Benutzer Roboter Genie Avatar von Willa
    Registriert seit
    26.10.2006
    Ort
    Bremen
    Alter
    37
    Beiträge
    1.269
    Hi!
    Nach gefühlten 100 Versuchen habe ich einen Realtimeplot mit Matlab hinbekommen:
    Screencapturevid (meine Mega32 simuliert eine verrauschte Sinuskurve)
    http://www.villalachouette.de/willia...+rncontrol.wmv
    Skript:
    Code:
    clc
    clear
    rmappdata(0,'h');
    rmappdata(0,'i');
    rmappdata(0,'w');
    s = serial('COM5','BaudRate',115200);
    fopen(s);
    s.BytesAvailableFcnMode = 'terminator';
    disp('Ready...')
    s.BytesAvailableFcn = @empfangen; 
    
    figure;
    y=(0:100);
    h=plot (y);
    
    setappdata(0,'h',h); 
    setappdata(0,'i',1); 
    setappdata(0,'w',0);

    Callback (wird immer ausgeführt wenn was empfangen wurde). Dieser Code muss unter dem Dateinamen "empfangen.m" gespeichert werden.
    Code:
    function empfangen (s, event)
    i=getappdata(0,'i');
    h=getappdata(0,'h');
    w=getappdata(0,'w');
    %s=getappdata(0,'s');
    try
        w(i)=str2double(fscanf(s));
    catch
        disp('error reading from serial...');
        fclose(s)
    end
    i=i+1    ;
    setappdata (0,'i',i);
    setappdata (0,'w',w);
    try %ist die Figure geshclossen worden...
        %i ist immer einen größer als länge von w
        if i > 1000
            set(h, 'ydata',w(i-1000:i-1)) 
        else
            set(h, 'ydata',w)
        end
        ylim([-1.5 1.5]); %yachsenlimit einstellen
        drawnow;
    catch
        fclose(s) %...dann wird serialport auch geschlossen.
        disp('...something went wrong or figure was closed.....')
        assignin('base', 'w', w) %variable soll auch im workspace verfügbar sein
    end
    end
    Vielleicht hilft das ja dem ein oder anderen... Mal sehen was ich damit noch anfangen kann.
    Viele Grüße, William
    -> http://william.thielicke.org/

  6. #6
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    23.04.2007
    Ort
    stuttgart
    Beiträge
    1.127
    Kuhl, danke... Das sieht ja richtig gut aus... Was hast du denn für eine Matlab Version??
    bekomme folgenden Fehler:
    Code:
    ??? Error using ==> rmappdata
    Invalid root user property: 'h'.
    
    Error in ==> C:\MATLAB6p5\work\rs232.m
    On line 3  ==> rmappdata(0,'h');
    kann damit nichts anfangen, wozu is denn das rmappdata gut?
    meine projekte: robotik.dyyyh

  7. #7
    Erfahrener Benutzer Roboter Genie Avatar von Willa
    Registriert seit
    26.10.2006
    Ort
    Bremen
    Alter
    37
    Beiträge
    1.269
    Ich hab r2008a.... Deine Uni investiert wohl nicht gerne in Softwareupdates...? ;-D
    rmappdata löscht daten aus dem "hintergrundspeicher" von matlab. Also die Daten, die per "setappdata" abgelegt werden. Bei mir müssen die gelöscht werden, sonst merkt sich matlab immer die seriellen daten von der Messung davor. Aber wenns sowas bei dir nicht gibt funktionierts vielleicht auch ohne die Funktion?

    Ah, ich glaube bei dir meckert Matlab weil es etwas löschen soll was es noch gar nicht gibt...... dann mach mal um die rmappdatablöcke ein try...catch...end rum
    Viele Grüße, William
    -> http://william.thielicke.org/

  8. #8
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    23.04.2007
    Ort
    stuttgart
    Beiträge
    1.127
    hmm irgdnwie geht wohl bei der 6.5er der serial port nicht ... die ist nicht von der uni.. habe mal eine alte lizenz die "übrig war" geschenkt bekommen.. Ich test den code mal morgen am institut....
    wenn ich das bei mir nicht hinbekomm werde ich wohl mal in eine neue version investieren müssen wobei 80 euro für studies echt fair ist....
    meine projekte: robotik.dyyyh

  9. #9
    Erfahrener Benutzer Roboter Genie Avatar von Willa
    Registriert seit
    26.10.2006
    Ort
    Bremen
    Alter
    37
    Beiträge
    1.269
    Ich hab mal versucht aus der Kommunikation mit Matlab was "sinnvolles" zu machen:
    http://www.villalachouette.de/willia...r/matlab3d.wmv
    Die Laage des Copters wird in 3D dargestellt. Ist nur ein erster kleiner Versuch...
    Viele Grüße, William
    -> http://william.thielicke.org/

  10. #10
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    23.04.2007
    Ort
    stuttgart
    Beiträge
    1.127
    feine sache... kannst mir die m-files mal schicken ???
    ich bin grad dabei eine linux gui zu schreiben mit der ich RS232 daten plotten kann... sowas kann man immer gebarauchen.. weil mein matlab mag irgdnwie kein serialport, an der uni gehts aber
    meine projekte: robotik.dyyyh

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •