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

Relaiskarte von Matlab über RS232 ansteuern

 

josekamara
Forum-Meister

Forum-Meister


Beiträge: 529
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: 529
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: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     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.
 
ubay

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.12.2016, 16:23     Titel:
  Antworten mit Zitat      
Hallo Leute,

ich habe auch das selbe Problem. Wie kann ich das Kommando eingeben ? Hat einer vielleicht ne Idee?

Viele Grüße
 
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.