goMatlab - Mein MATLAB Forum

Mein MATLAB Forum

 
Login  | Registrieren
Bücher:

Modellbildung und Simulation hochdynamischer Fertigungssyste

Studierende:
Abschlussarbeit - Multikriterielle Optimierung eines modellbasierten Abgastemperatur-Reglers für PKW-Dieselmotoren
Fahrzeug-/Automobilelektronik
IAV GmbH - Gifhorn

Abschlussarbeit Entwicklung von innovativen Technologien (Leistungselektronik, Regelungstechnik, Matlab; Bachelorarbeit)
Energieversorgung
SMA Solar Technology AG - Niestetal

Entwicklung eines echtzeitfähigen HIL-Prüfstandes für elektrische Stellantriebe
Kfz-Zulieferindustrie
ZF Friedrichshafen AG - Friedrichshafen

Praktikanten/Werkstudenten (m/w) für die Analyse und Optimierung der Ansteuerung einer Fehlersimulation
Sicherheitskritische Systeme
Silver Atena Electronic Systems Engineering GmbH - München

Praktikant Aufbau und Inbetriebnahme eines Demonstrators für Hardware-in-the-Loop Simulation (m/w)
Fahrzeugtechnik
MBtech Group GmbH & Co. KGaA - Sindelfingen bei Stuttgart

weitere Angebote

Partner:




Vermarktungspartner


Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Relaiskarte von Matlab über RS232 ansteuern

 

josekamara
Forum-Meister
Forum-Meister

Beiträge: 527
Anmeldedatum: 26.04.08
Wohnort: München
Version: ---
     Beitrag Verfasst am: 08.11.2010, 10:05     Titel: Relaiskarte von Matlab über RS232 ansteuern
  Antworten mit Zitat      
Hallo,

ich stehe wieder vor einem Problem und brauche eure Hilfe. Ich habe im Forum gesucht allerdings komme ich trotzdem nicht weiter.

Ich will eine Relaiskarte von Matlab aus über RS232 Schnittstelle ansteuern. Mit dem unteren Befehl kann ich kein Relais anschalten.
Code:

serobj = serial('COM1','Baudrate', 19200,'Parity', 'none','Databits', 8, 'StopBits', 1);
     
fopen(serobj);
get(serobj, 'Status')

fwrite(serobj, [0,1,0,0,0,0,0,0,0], 'uint8');

fclose(serobj);
 


Danke Euch.

Jose
_________________

Simulation
Private Nachricht senden Benutzer-Profile anzeigen


josekamara
Themenstarter

Forum-Meister
Forum-Meister

Beiträge: 527
Anmeldedatum: 26.04.08
Wohnort: München
Version: ---
     Beitrag Verfasst am: 13.11.2010, 15:44     Titel:
  Antworten mit Zitat      
Lösung gefunden.
Code:

fwrite(serobj, CommadEingabe, 'uint8');
 


Diese Eingabe hängt von dem Controller Sprache zur Steuerung dieser Relaiskarte ab. Sobald diese Eingabe bekannt ist, kann man mit dem fwrite steuern.
_________________

Simulation
Private Nachricht senden Benutzer-Profile anzeigen
 
lars-mey
Gast

Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.01.2012, 18:09     Titel: Funktion mit Conrad Relaiskarte
  Antworten mit Zitat      
Hallo zusammen,

Ich bin Neuling und versuche mich in Matlab einzuarbeiten, da mir dieses Programm im Studium frei zur Verfügung steht und viele Möglichkeiten der Steuerung verschiedener Hardware bietet.

Ich habe versucht den oben beschriebenen Code zu verwenden. Dazu gebe ich diesen in das Command window von Matlab ein. Nach betätigen der Eingabetaste erscheint bei mir folgende Fehlermeldung:

??? Error using ==> serial.fopen at 72
Port: COM3 is not available. No ports are available.
Use INSTRFIND to determine if other instrument objects are connected to the requested
device.



Erstes Ziel ist, die Relaiskarte mit Matlab überhaupt anzusteuern. Danach wollte ich eine Zeitsteuerung einbauen, die ein Relais 2sek einschaltet, dann wieder aus und dann das gleiche mit einem anderen macht usw...

Ich benutze ein USB/SERIELL ADAPTER, Windows7 64bit Version, und eine bereits fertige serell ansteuerbare Relaiskarte von Conrad elektronic (Artikelname C-Control 8fach-Relaiskarte 230 V/AC 16 A Baustein 8 Relaisausgänge, Artikelnummer 197730 - V0) und last but not least Matlab 7.10.0 (R2010a)

Nun meine Fragen:
1. Hat das ewige Nichtgelingen meiner Versuche die Relaiskarte anzusteuern mit einer meiner Hardwarekomponenten, oder vielleicht sogar mit Windows7 zu tun?

2. Ist die Version von Matlab ein Faktor? Oder bediene ich Matlab vielleicht sogar falsch weil ich den Code im Command Windows eingebe?

Alternativ kann ich noch nen alten Rechner Flott machen, der kein Adapter benötigt, und Windows mit 32 bit system hat... Wenn das helfen sollte

Wäre sehr schade mein Projekt in dieser Frühen Phase aufzugeben, da noch viele weitere folgen sollen... Aber dieser Anfang fällt mir leider besonders schwer.

Danke für jede Hilfe!
 
lars-mey
Gast

Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.01.2012, 14:08     Titel:
  Antworten mit Zitat      
Nach etlicher Tüftelei hat es immernoch keinen Erfolg gebracht...

Kann doch nicht sein dass das noch niemand gemacht/versucht hat?!

Ich versende mittlerweile Daten über den Seriellen port. Meine Karte kann diese aber nicht verarbeiten. Mit einem Portmonitor sehe ich, welche daten das Originalprogramm verwendet und versuche diese zu kopieren.

Das Problem besteht darin, dass die kommandos Hex versendet werden. Laut der Beschreibung von Matlab wird mit der Funktion fwrite(serobj,... , uint...) nur binäre Daten verschickt. Ich will 4 Bytes versenden, da so der Kommandorahmen aufgebaut ist.

Wenn ich
Code:
fwrite(serobj, 03-00-03-00, 'unit32')


schreibe zeigt mir das portmonitor-Programm an, dass 4 Bytes mit 00 00 00 00 versand wurden....

versuche die hex daten in bin zu schreiben hat ebenfalls keinen effekt. Kann auch nicht einfach 32bit hintereinander schreiben da Matlab dann meckert, nur leerzeichen zwischen den Bytes auch nicht, mit einem - (s.o.), klammern setzen geht auch nicht usw....

Wie muss ich also einen 4 Byte langes kommando schreiben, damit meine Karte das kommando erkennt und ausführt?
Ist Matlab überhaupt dazu geeignet?
 
denny
Supporter
Supporter


Beiträge: 2606
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2007b, R2009b
     Beitrag Verfasst am: 30.01.2012, 15:20     Titel:
  Antworten mit Zitat      
Hallo

kann dir wenig helfen, weil ich mich noch nicht damit beschäftigt habe.

ich glaube da übergibst falsch, wenn du deklarierst dass FWRITE UINT32 Daten versenden soll, dann musst du auch die Werte in dem Bereich übergeben.

also z.B
Code:

fwrite(serobj, 128, 'unit32')
 


Übrigens wenn du "03-00-03-00" übergibst, dann rechnet Matlab zuerst den Ausdruck aus, 03-00-03-00, das wäre dann 0

Schaue mal hier rein
http://cnx.org/content/m12062/latest/
Private Nachricht senden Benutzer-Profile anzeigen
 
lars-mey
Gast

Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.02.2012, 16:06     Titel:
  Antworten mit Zitat      
Danke schonmal für die Rückmeldung!

Das klappt leider auch nicht.

Wie versende ich denn eine Bytefolge mit folgendem Inhalt:

Byte1: 1
Byte2:1
Byte3:0
Byre4:0

Dies ist das Kommando für die Initialisierung der Karte. Die Zahlen sind dezimal.


Dann würde ich die zweite Bytefolge senden mit

Byte1: 3 (Komanndo: Relais schalten)
Byte2: 1 (Adresse der Karte)
Byte3: 8 (Relais nummer 8 Schalten)
Byte4: 11 (Checksumme XOR)


Wie übergebe ich diese Daten richtig mit der richtigen deklaration und allem... Sobald das versendet und von der Karte erkannt wird ist der Rest gut machbar.
 
Neues Thema eröffnen Neue Antwort erstellen



Options and Permissions
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
.


goMatlab ist ein Teil des goForen-Labels
goForen.de goMATLAB.de goLaTeX.de goPCB.de


 Impressum  | Werbung/Mediadaten | Studentenversion | FAQ | goMatlab RSS Button RSS


Copyright © 2007 - 2012 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
Partner: LabVIEWforum.de

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.