GSV-3USB und Matlab
Verfasst: Mo 7. Apr 2014, 18:18
Die Messwerterfassung mit Matlab kann die Windows DLL "megsv.dll" eingesetzt werden.
Alternativ ist auch die Erfassung von Messwerten ohne Windows DLL möglich.
Dazu sollte der Messverstärker auf "text-Modus" eingestellt sein und auf "Einzelwertabfrage";
Dann wird ein Messwert auf Anforderung durch das Senden des zeichens ";" übertragen.
Den Code hat Martin von der TU München zur Verfügung gestellt.
('#' durch die Com port Nummer ersetzen):
Dadurch wird ein "serial port object" definiert, die Serielle Schnittstelle geöffnet, nach einem Wert gefragt, dieser Wert (der ja eigentlich aus 3 zweistelligen Hexadezimalzahlen besteht) dezimal in der Variablen "dec" gespeichert ( z.B. dec = [ 165 128 30] ), und die Verbindung wieder geschlossen. Dabei wird davon ausgegangen, dass der Logger-Modus wie vorgeschlagen bereits vorher z.B. in ME GSV Control aktiviert wird.
Um die Kraft aus der Variablen (/dem Vektor) "dec" zu erhalten, müssen die beiden hinteren Einträge einzeln in das Hexadezimalystem umgewandelt, aneinandergehängt, und wieder ins Dezimalsystem umgewandelt werden. Den entstehenden Wert kann man dann entsprechend den Anweisungen im kb-convert.pdf in eine Kraft umwandeln.
Meiner Meinung nach kann man die Messwerterfassung etwas eleganter lösen, indem man mehrere Matlabskripte verwendet, die z.B. nur das Öffnen/Schließen der seriellen Schnittstelle oder die Messwerterfassung übernehmen, und diese von einem zentralen Skript aus aufruft wenn man sie benötigt. Das würde aber über das "Hello World" Konzept hinausgehen.
Alternativ ist auch die Erfassung von Messwerten ohne Windows DLL möglich.
Dazu sollte der Messverstärker auf "text-Modus" eingestellt sein und auf "Einzelwertabfrage";
Dann wird ein Messwert auf Anforderung durch das Senden des zeichens ";" übertragen.
Den Code hat Martin von der TU München zur Verfügung gestellt.
('#' durch die Com port Nummer ersetzen):
Code: Alles auswählen
s1 = serial('COM#',...
'BaudRate',38400,...
'DataBits',8,...
'StopBits',1,...
'FlowControl','none',...
'Parity','none');
fopen( s1 );
fprintf( s1 , '%s' , ';' );
dec = fread( s1 , [1,3] );
fclose( s1 );
delete( s1 );
clear s1;
Dadurch wird ein "serial port object" definiert, die Serielle Schnittstelle geöffnet, nach einem Wert gefragt, dieser Wert (der ja eigentlich aus 3 zweistelligen Hexadezimalzahlen besteht) dezimal in der Variablen "dec" gespeichert ( z.B. dec = [ 165 128 30] ), und die Verbindung wieder geschlossen. Dabei wird davon ausgegangen, dass der Logger-Modus wie vorgeschlagen bereits vorher z.B. in ME GSV Control aktiviert wird.
Um die Kraft aus der Variablen (/dem Vektor) "dec" zu erhalten, müssen die beiden hinteren Einträge einzeln in das Hexadezimalystem umgewandelt, aneinandergehängt, und wieder ins Dezimalsystem umgewandelt werden. Den entstehenden Wert kann man dann entsprechend den Anweisungen im kb-convert.pdf in eine Kraft umwandeln.
Meiner Meinung nach kann man die Messwerterfassung etwas eleganter lösen, indem man mehrere Matlabskripte verwendet, die z.B. nur das Öffnen/Schließen der seriellen Schnittstelle oder die Messwerterfassung übernehmen, und diese von einem zentralen Skript aus aufruft wenn man sie benötigt. Das würde aber über das "Hello World" Konzept hinausgehen.