Timing von CAN-Nachrichten auf cRIO-9014/9112 und 9853
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!
Timing von CAN-Nachrichten auf cRIO-9014/9112 und 9853
Hallo, seit kurzem bin ich in meiner Firma an einem Prüfstand, bei dem Messsignale auf einem CAN-Bus ausgegeben werden sollen. Als Hardware liegen mir eine cRIO-9014, cRIO-9112 und das 9853 CAN-Modul vor.
An sich habe ich es bereits geschafft, dass alle Nachrichten in ihrem jeweiligen vorgesehenen Intervall rausgeschickt werden. Ich habe auf die Frame bzw. Channel-API verzichtet und mir die Nachrichten als Array selbst aufgebaut.
Die VI für den FPGA ist im als Ausschnitt im Bild zu sehen. Die äußere Sequenz initialisiert im ersten Rahmen die Module und im zweiten befinden sich dann die einzelnen Schleifen zum generieren der Nachrichten.
Für jede CAN-ID und den entsprechenden Port habe ich eine FPGA I/O Node erstellt. Das innere Wait gibt das Intervall vor, wobei das erste Intervall in der Gesamtsequenz eine Art Verzögerung vorgibt, damit die Nachrichten mit einem zeitlichen Versatz am Port herausgeschickt werden. Nicht schön, aber es funktioniert.
Jetzt bin ich aber das "Problem" gestoßen, dass die Größe der Bitfiles nach der Synthese fast an der Grenze liegt. Also wollte ich das Generieren und das Intervall der CAN-Nachrichten dem Real-Time Controller überlassen. Im Groben sollte das Timing dabei auch stimmen, das einzige worüber ich gerade stolpere ist die "Abtastung" des FPGAs.
Wenn ich in der Host-VI also alle 20ms eine Nachricht generiere und dem FPGA übergebe, dann versucht doch dieser in der Zwischenzeit die ganze Zeit die Message am Port rauszuschicken. Also angenommen ich würde den Schleifentimer im FPGA auf 1ms setzen, dann sollte die Nachricht jede Millisekunde auf dem CAN-Bus erscheinen.
Ist mein Anliegen oder Problem verständlich? Leider tue ich mich mit der grafischen Programmierung etwas schwer. Das ganze in C würde mir irgendwie leichter fallen, wobei doch eine Menge an Arbeit abgenommen wird.