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

RS232, Terminator funktioniert nicht

 

pfeili
Forum-Century

Forum-Century


Beiträge: 177
Anmeldedatum: 27.08.08
Wohnort: ---
Version: R2019b
     Beitrag Verfasst am: 19.04.2011, 16:16     Titel: RS232, Terminator funktioniert nicht
  Antworten mit Zitat      
Liebe Leute,

ich möchte über eine serielle Schnittstelle einen Frequenzumrichter steuern. Dazu habe ich mir mittels "guide" ein GUI erstellt, in dessen OpeningFcn die seriellen Schnittstellen deklariert werden:

Code:

% --- Executes just before Pumpensteuerung is made visible.
function Pumpensteuerung_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
% varargin   command line arguments to Pumpensteuerung (see VARARGIN)

% alle Schnittstellen löschen
delete(instrfindall)

% serielle Schnittstellen als globale Variablen definieren
global serial1 serial2
% Abfrage vorhandener serieller Schnittstellen
available_ports = instrhwinfo('serial');
% Zuweisung der 1. seriellen Schnittstelle zu serial1
serial1 = serial([available_ports.SerialPorts{1}]);
% Festlegung der Eigenschaften von serial1
set(serial1, 'BaudRate', 4800, 'Parity', 'Even', 'DataBits', 8, 'StopBits', 1,'Terminator', 13);
% Zuweisung der 2. seriellen Schnittstelle zu serial2
serial2 = serial([available_ports.SerialPorts{2}]);
% Festlegung der Eigenschaften von serial2
set(serial2, 'BaudRate', 4800, 'Parity', 'Even', 'DataBits', 8, 'StopBits', 1);
% Choose default command line output for Pumpensteuerung
handles.output = hObject;

% Update handles structure
guidata(hObject, handles);

% UIWAIT makes Pumpensteuerung wait for user response (see UIRESUME)
% uiwait(handles.figure1);
 


Mit einem Start-Button wird folgender Code ausgeführt:

Code:

% --- Executes on button press in start_axial.
function start_axial_Callback(hObject, eventdata, handles)
% hObject    handle to start_axial (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
clc
global serial1
fopen(serial1)

sendestring = 'S995';
fprintf(serial1,[sendestring 13])
antwort1 = fscanf(serial1)
while strncmp(antwort1,'S995',4) == 0
    sendestring = 'S995';
    % Antwort Umrichter
    fprintf(serial1,[sendestring 13])
    antwort1 = fscanf(serial1)
end

% gegebene Drehzal aus dem GUI ablesen
n_axial = get(handles.n_axial, 'String');

% Reglerfreigabe erteilen
sendestring = 'X951=1';
fprintf(serial1,[sendestring 13])
% Antwort Umrichter
antwort2 = fscanf(serial1)

% Drehzahleingabe freischalten
sendestring = 'X952=1';
fprintf(serial1,[sendestring 13])
% Antwort Umrichter
antwort3 = fscanf(serial1)

% Übergabe der gewählten Drehzahl (als String) in Hz
sendestring = ['V950=+' n_axial];
fprintf(serial1,[sendestring 13])
% Antwort Umrichter
antwort4 = fscanf(serial1)

fclose(serial1)
 


Jeder Schreibbefehl wird durch ein CR beendet. Laut Handbuch soll es so sein, dass auch die Antworten des Frequenzumrichters mit einem CR enden, weswegen ich den Terminator als solchen festgelegt habe. Jedes Befehl wird vom Umrichter beantwortet (nämlich mit der Rückgabe des Befehls selber) und ich möchte diese Antworten gern in die zugehörigen Antwortvariablen speichern. Leider kommen bei den fscanf-Funktionen nicht immer diese Werte zurück, sondern Teile/Aneinanderreihungen davon oder Fehlercodes (z.B. F518).

Meiner Ansicht nach scheint der Terminator nicht so zu funktionieren, wie ich es mir vorgestellt habe. Kann mir diesbezüglich bitte jemand helfen? Vielen Dank im Voraus.

Beste Grüße

pfeili
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 - 2025 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.