WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Messdaten aus Blöcken separieren und plotten

 

Peter Weiss
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 17.07.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.07.2019, 11:02     Titel: Messdaten aus Blöcken separieren und plotten
  Antworten mit Zitat      
Hallo Community,
ich bin ein kompletter Anfänger was Programmieren und Matlab angeht. Folgendes Problem. Ich habe einen 6-Achs-Kraft Momenten Sensor über einen Arduino mit meinem Computer verbunden. Der Arduino Sketch dekodiert die erhaltenen Daten des Sensors in sauber abgetrennte Blöcke vom Format:

Received packet of size 36
Fx=2N Fy=20N Fz=-3N Tx=2Nm Ty=15 Nm Tz=0.5 Nm .

Diese Daten lese ich jetzt über Matlab an der seriellen Schnittstelle ein und bekomme sie auch als diese Textblöcke ausgegeben. Soweit so gut. Jetzt möchte ich jedoch die Sensordaten aus diesen Textblöcken separieren und über GUI plotten. Habt ihr eventuell eine Möglichkeit, wie ich das anstellen kann? Klingt vielleicht für Leute die Ahnung davon haben simpel aber ich stehe echt auf dem Schlauch. Hier der Code in Matlab
Code:
s = serial('COM6'); % change the COM Port number as needed
%% Connect the serial port to Arduino
s.InputBufferSize = 1; % read only one byte every time
try
fopen(s);
catch err
fclose(instrfind);
error('Make sure you select the correct COM Port where the Arduino is connected.');
end

%% Read and plot the data from Arduino
Tmax=20;

Ts = 0.01; % Sampling time (s)
i = 0;
data = 0;
data= char;
t = 0;
tic % Start timer
while toc <= Tmax
i = i + 1;
%% Read buffer data
data (i) = fread(s)

t(i) = toc;
if i > 1
T = toc - t(i-1);
while T < Ts
T = toc - t(i-1);
end
end
t(i) = toc;

    end


fclose(s);


Danke im Voraus. Gruß Peter
Private Nachricht senden Benutzer-Profile anzeigen


Peter Weiss
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 17.07.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.07.2019, 13:12     Titel:
  Antworten mit Zitat      
Da ich die Lösung ziemlich zeitnahe bräuchte, wäre ich bereit, bei entsprechender Hilfe eine Vergütung zu zahlen. Ziel soll es am Ende sein, eine GUI zu haben, in der zwei Koordinatensysteme untereinanderstehen. In dem oberen Koordinatensystem werden die jeweiligen Kräfte Fx,Fy,Fz und in dem unteren Koordinatensystem die jeweiligen Momente Tx, Ty, Tz während der Auslesung geplottet und anschließend werden die Messdaten in Excel Tabellen abgespeichert. So ist jedenfalls der grobe Plan. Ich hoffe er ist umsetzbar.
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 19.07.2019, 10:30     Titel: Re: Messdaten aus Blöcken separieren und plotten
  Antworten mit Zitat      
Hallo Peter Weiss,

Wenn du eine Vergütung anbieten möchtest, poste dies bitte in der Kategorie "Progarmmieraufträge".

Was macht denn der gezeigte Code?
Bekommst du so bereits alle Daten, die du brauchst? Die "BytesAvailableFcn" wäre wohl effizienter als eine Schleife.

Zitat:
Diese Daten lese ich jetzt über Matlab an der seriellen Schnittstelle ein und bekomme sie auch als diese Textblöcke ausgegeben.

Wie sehen diese Textblöcke denn aus?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Peter Weiss
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 17.07.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.07.2019, 10:55     Titel:
  Antworten mit Zitat      
Moin Jan,

vielen Dank erstmal für deine Antwort!
Der gezeigte Code soll die Daten der seriellen Schnittstelle einlesen. Dies tut er auch. Ich bekomme quasi die Daten in dem Format angegeben, wie in dem Arduino programmiert. Vom Format her so:

Received packet of size 36
Fx=-0.30N Fy=3.10N Fz=-57.50N Tx=0.38Nm Ty=0.24Nm Tz=0.41Nm
//
Edit: Ich habe jetzt den Arduino Code umgeschrieben, sodass nur noch Zahlen mit Einheit als Antwort erscheinen, im Format:

1.30 3.50 -30.10 0.30 0.18 0.41
//
Und das halt über die Dauer Tmax immer die aktuellen Messwerte, diese stimmen auch, also passt bis hier alles.

Jetzt möchte ich quasi ein Programm in Matlab, was die Messdaten aus der Antwort separiert. Ich denke mit einem Array. Wenn ich diese Werte dann habe könnte ich sie doch mit einem Pointer in einem Plot abbilden oder nicht?
Ich hoffe ich schreibe nicht absoluten Mist, ich kenne mich wirklich nicht gut aus mit programmieren.

Gruß Peter
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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

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.