Verfasst am: 19.04.2011, 16:16
Titel: RS232, Terminator funktioniert nicht
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;
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)
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
Einstellungen und Berechtigungen
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
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.