Hallo,
ich versuch euch mein Problem so gut wie möglich zu erklären & freue mich über jede Hilfe
Ich verweise gleich mal am Anfang darauf hin, dass ich mein Problem schon in einem Arduino Forum geteilt habe (
https://forum.arduino.cc/index.php?topic=561969.0 ). Jedoch kennt sich dort kaum jemand mit LabVIEW selbst aus und da ich meine Software eben mit LabVIEW schreibe hoffe ich, dass ihr mir hier mit dem Softwareprogramm weiterhelfen könnt. Selbstverständlich stell ich, falls wir eine Lösung gefunden haben, diese sofort auf beiden Foren - möchte keine Crossposts erzeugen, mit denen ihr euch dann ewig beschäftigt, obwohl schon eine Lösung existiert.
Ich habe einen Stellantrieb (Master) und einen Sensor (Slave). Beide sind über I2C miteinander verbunden. Der Slave schickt nach Anforderung des Stellantriebes gewisse Messdaten an diesen. Jetzt soll dieser Sensor jedoch ersetzt werden.
Hierfür muss eine LabVIEW Software geschrieben werden, die je nach dem welche Registeradresse der Stellantrieb anfordert eben einen gewissen Wert zurückgibt. Das habe ich mit einem SubVI realisiert, der mittels Cases verschiedene Aktionen ausführt. Ich habe die Cases in Abhängigkeit von erstellten Adressen aufgebaut. Folglich wird wenn Adresse eins angegeben wird eben die Aktion vom 1 "Casefall" ausgeführt und wenn Adresse 2 dann die Aktion vom 2 "Casefall" usw. (bspw. Bit gesetzt oder nicht, Wert ausgegeben). Alles aktuellen Werte werden dann in einem Array gespeichert und sollen das Register des Stellantriebes nachbilden.
Als Schnittstelle habe ich einen Arduino Uno, da der auch als I2C Slave genutzt werden kann. Dieser Arduino ist über die Daten-, Takt- und Masseleitung mit dem Stellantrieb verbunden und soll nach Anfrage dieses Stellantriebes den gewünschten Wert liefern - wie eben der Orginal-Sensor das macht. Zudem ist der Arduino über USB mit dem PC verbunden.
Es müssen zuerst dem Arduino die Werte über USB übermittelt werden, sodass diese dann über I2C weitergeleitet werden können.
Ich habe jedoch noch nie mit Arduino gearbeitet und meine LabVIEW Erfahrungen sind auch nicht sehr groß.
Die erste Frage ist erstmal, ob ich mit LabVIEW ein Programm schreiben kann, dass dem Arduino Werte über USB schickt, die gespeichert werden und bei der Anfrage des Masters sofort gesendet werden?
Im Arduino Forum wurde darauf hingewiesen, dass der Arduino ein EEPROM hat und man dies eventuell darüber realisieren könnte. Wie schreib ich jedoch über LabVIEW was in den EEPROM? Ich habe bis jetzt nur Bausteine gefunden, mit denen ich die digitalen / analogen Pins beschreiben kann.
Ich habe mir erst einmal die Zusatzbausteine heruntergeladen, sodass ich LabVIEW und Arduino verknüpfen kann. Ich habe einmal die einfachen I2C Bausteinen (Arduino Init, Arduino I2C Read, Arduino I2C Write) und einmal Bausteinen von Arduino Compatible Compiner for Labview Home / Student.
Wie realisiere ich jedoch jetzt, dass mein Arduino ein Slave sein soll? Wie gebe ich dem Arduino eine Slave-Adresse? Wie sende ich ihm die Daten? Und wie werden dann die Daten an den I2C geschickt?
Ich habe schon probiert mit den zwei verschiedenen Baugruppen eine Software zu schreiben (sh. Anhang). Bin ich damit auf dem richtigen Weg oder ist das kompletter Schrott?
Ich freue mich über jede Hilfe
Schon mal vielen Dank im Voraus!
Sarah