Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
Hallo,
ich schreibe gerade meine Bachelorarbeit und musste in diesem Zug, da ich mal etwas über den Tellerrand schauen wollte, mich mit der Elektrotechnik und Messtechnik beschäftigen. Es ist zwar alles sehr interessant, leider aber auch nich grad einfach sich in etwas einzuarbeiten, wovon man wenig Ahnung hat. Bin ein absoluter Neuling mit LabView und auch wenn ich bisher eigentlich zurecht gekommen bin, habe ich jetzt eine kleines, für mich nicht lösbares Problem.
Ich bin dabei mit LabView, über eine RS232 Schnittstelle, mehrere Relais anzusteuern. Das heißt, ich betätige in LabView einen Schalter und es wird ein bestimmter Befehl aus dem C-Programm ausgeführt. Außerdem wird, durch den betätigten Schalter, eine LED eingeschaltet die anzeigt welches der Relais an bzw. aus geschaltet wurden. Das funktionert soweit auch.
Jetzt habe ich gestern versucht, einen bestimmten Zustand der Relais zu speichern, um ihn später wieder abrufen zu können. Dazu müsste aber eine Kommunikation von den Relais, also der Hardware, zu LabView erfolgen, da die LEDs leuchten und somit anzeigen müssten, welche Schalten offen oder geschlossen sind. Die Speicherung und wieder Abrufung der Werte sollte gehen, dies sind ja nur Befehle aus dem C-Code. Aber wie bekomme ich diese umgekehrte Kommunikation hin, dass sich die Schalter dann automatisch betätigen und die LEDs leuchten?
Ich hoffe ich habe mich verständlich ausgedrückt und hoffe Ihr könnt mir helfen.
Zitat:mit LabView, über eine RS232 Schnittstelle, mehrere Relais anzusteuern. ...ein bestimmter Befehl aus dem C-Programm
Da passt aber auch gar nichts zusammen...
RS232 und mehrere Relais? Irgendwelche Hardware noch dazwischen?
LabVIEW und "Befehl aus C-Programm"? Wovon redest du?
Die Relais sind die Hardware, die angesteuert wird.
Ich habe ein Programm in C geschrieben, welches bei bestimmten Signalwörtern bestimmte Funktionen ausführt. LabView ist meine Grafische Oberfläche zu dem C- Programm. Das Niemand mehr "ADDR_1" eintippen muss, sondern nur auf den entsprechenden Knopf zu drücken hat.
Zum Beispiel das einschalten eines bestimmten Relais.
Jetzt wird, in LabView, dieses Signalwort durch Tastendruck ausgeführt, vom PC zur RS232 Schnittstelle geschickt und von dort weiter zum Mikrocontroller, welcher dieses Signalwort in seinem C-Quellcode findet und das Relais ansteuert. Außerdem wird durch den Tastendruck in LabView eine LED eingeschaltet, welche anzeigt das das Relais eingeschaltet wurde.
Jetzt will ich aber die Kommunikation vom Relais zum Mikrocontroller (Atmega8) ==> RS232 ==> LabView. Damit bei einem geladenen Schaltzustand aus dem Speicher des Atmega auch wieder die entsprechenden LEDs, in LabView, leuchten.
Ist es jetzt verständlicher geworden?
04.01.2012, 18:44 (Dieser Beitrag wurde zuletzt bearbeitet: 04.01.2012 18:47 von Lucki.)
(04.01.2012 18:19 )Dinin schrieb: Ist es jetzt verständlicher geworden?
Nein, überhaupt nicht. RS232 ist eine serielle Schnittstelle, mit der man Daten seriell übertragt. Aber mit diesen seriellen Daten kann man nicht in direkter Verdrahtung ein Relais ansteueren. Oder benutzt du die Schnittstelle gar nicht auf übliche Art, sondern zweckentfremdest bestimmte Steuerleitungen der Schnittstelle für die direkte Relaisansteuerung? Auch nicht, denn es kann ja nicht sein, daß du hier um Hlife bittest und so einen fundamentalen Umstand in der Beschreibung unterschlägst. Andererseits - man hat hier schon so manches erlebt.
Aber die Platine mit der RS 232 und dem MAX 232 ist doch nur das Verbindungsglied zwischen dem PC und meinem Mikrokontroller. Angesteuert werden die Relais natürlich über den Atmega.
Auf dem PC gebe ich in einer Konsole meine Befehle aus dem C-Code ein. Diese Eingabe wird über die RS232 zu meinem Atmega geschickt.
(04.01.2012 18:58 )Dinin schrieb: Aber die Platine mit der RS 232 und dem MAX 232 ist doch nur das Verbindungsglied zwischen dem PC und meinem Mikrokontroller. Angesteuert werden die Relais natürlich über den Atmega.
Auf dem PC gebe ich in einer Konsole meine Befehle aus dem C-Code ein. Diese Eingabe wird über die RS232 zu meinem Atmega geschickt.
Ein wenig offtopic:
1) Und woher sollen wir das alles wissen? Wir können nicht hellsehen! (Ausnahme manchmal Lucki).
Zu einer Frage gehört auch eine vollständige Problembeschreibung.
Wie ontopic:
2) Verstehe immer noch nicht, was das mit C-Code zu tun hat. Das hier ist das LabVIEWforum
3) Kannst du deinem ATmega nicht ein Kommando schicken, auf das er dir dann den Zustand der Relais zurücksendet?
Gruß, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
Zitat:1) Und woher sollen wir das alles wissen? Wir können nicht hellsehen! (Ausnahme manchmal Lucki).
Tut mir Leid, ich dachte es wäre klar, dass eine RS232 Schnittstelle als Verbindung zum Steuerelement (Mikrocontroller) dient und damit ansich nix gesteuert wird. Wenn ich ein Stecker in die Steckdose stöpsel, fängt ja auch nich das Auto an zu laufen Ihr habt so geile Smileys!!!
Der Hintergrund warum ich die RS232 erwähnt habe war nur, dass ich in anderen Beiträgen gelesen habe, dass andere das auch getan haben und ich somit dachte es sei wichtig. Wegen Datenübertragung oder Dateiformat, Datenmenge etc.
Zitat:Zu einer Frage gehört auch eine vollständige Problembeschreibung.
Die Schnittstelle ist nicht mein Problem.
Zitat:2) Verstehe immer noch nicht, was das mit C-Code zu tun hat. Das hier ist das LabVIEWforum
Wie gesagt, ich bin totaler Neuling mit LabView und weiß nicht, wozu man das sonst benutzt oder was Ihr damit macht. Ich benutze es, um eine grafische Oberfläche für mein C Programm darzustellen, damit man nicht die Befehle ständig neu in die hässliche Konsole eintippen muss.
Zitat:3) Kannst du deinem ATmega nicht ein Kommando schicken, auf das er dir dann den Zustand der Relais zurücksendet?
Prinzipiell mache ich das sogar. Problem ist aber, dass das LabView total egal ist, was da vom Atmega kommt. LabView interessiert nur, was es selber zum Atmega schickt.
Aus diesem Grund fragte ich, wie ich es schaffen kann, dass LabView auf externe Ereignisse, also das Schalten eines Relais, reagiert.
(04.01.2012 19:39 )Dinin schrieb: Tut mir Leid, ich dachte es wäre klar, dass eine RS232 Schnittstelle als Verbindung zum Steuerelement (Mikrocontroller) dient und damit ansich nix gesteuert wird. Wenn ich ein Stecker in die Steckdose stöpsel, fängt ja auch nich das Auto an zu laufen Ihr habt so geile Smileys!!!
Der Hintergrund warum ich die RS232 erwähnt habe war nur, dass ich in anderen Beiträgen gelesen habe, dass andere das auch getan haben und ich somit dachte es sei wichtig. Wegen Datenübertragung oder Dateiformat, Datenmenge etc.
Eine RS-232-Schnittstelle haben sooo viele Instrumente, nicht nur ATmega.
(04.01.2012 19:39 )Dinin schrieb: Die Schnittstelle ist nicht mein Problem.
Offensichtlich schon, wenn du Antworten, die du per RS-232 zurücksendest, nicht mit LabVIEW sinnvoll verarbeiten kannst. (s. unten)
(04.01.2012 19:39 )Dinin schrieb:
Zitat:2) Verstehe immer noch nicht, was das mit C-Code zu tun hat. Das hier ist das LabVIEWforum
Wie gesagt, ich bin totaler Neuling mit LabView und weiß nicht, wozu man das sonst benutzt oder was Ihr damit macht. Ich benutze es, um eine grafische Oberfläche für mein C Programm darzustellen, damit man nicht die Befehle ständig neu in die hässliche Konsole eintippen muss.
Und weiter bleiben die Infos unklar. Gehe ich richtig in der Annahme, dass das C Programm auf dem Atmega läuft?
Zitat:3) Kannst du deinem ATmega nicht ein Kommando schicken, auf das er dir dann den Zustand der Relais zurücksendet?
Prinzipiell mache ich das sogar. Problem ist aber, dass das LabView total egal ist, was da vom Atmega kommt. LabView interessiert nur, was es selber zum Atmega schickt.
Aus diesem Grund fragte ich, wie ich es schaffen kann, dass LabView auf externe Ereignisse, also das Schalten eines Relais, reagiert.
[/quote]
Wie soll ein PC-Programm (egal ob jetzt in C, C#, .NET, Visual-Basic, LabVIEW) auf das Schalten eines externen Relais reagieren, wenn es keine Rückmeldung darüber gibt?
Du könntest dir natürlich eine Datenerfassungs(kurz DAQ)-Karte als Schnittstelle zur Außenwelt anschaffen und das es dann messen.
Aber das dürfte hier zu viel des Guten sein. Wenn dir der Atmega eine Antwort sendet, dann musst du die nur im PC richtig empfangen und verarbeiten. Fertig.
Wie das im Genauen geht? Zu wenig Infos. Als Einstieg schau dir im NI-Example Finder die Beispiele zur seriellen Kommunikation an.
Gruß, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
Zitat:Und weiter bleiben die Infos unklar. Gehe ich richtig in der Annahme, dass das C Programm auf dem Atmega läuft?
Ja
Zitat:Wenn dir der Atmega eine Antwort sendet, dann musst du die nur im PC richtig empfangen und verarbeiten. Fertig.
Wie das im Genauen geht? Zu wenig Infos.
Ja, genau das versuche ich ja. Ich weiß aber nicht wie ich das anstellen soll. Was braucht ihr denn für Infos? Das senden vom PC an den Atmega funktioniert über 2 Befehle. Ich dachte, andersrum ist es ähnlich einfach.
Zitat:Tut mir Leid, ich dachte es wäre klar, dass eine RS232 Schnittstelle als Verbindung zum Steuerelement (Mikrocontroller) dient und damit ansich nix gesteuert wird. Wenn ich ein Stecker in die Steckdose stöpsel, fängt ja auch nich das Auto an zu laufen
Wenn schon, dann auch richtige Vergleiche:
Wenn du mit dem Auto zu Tanke fährst, solltest du auch wissen, was für ein Motor unter der Haube steckt, bevor du dir einen Tankrüssel aussuchst! Sonst endet das schnell mit Kohlenwasserstoffen im Mund beim Leersaugen des Tanks...