INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

MODBUS-RTU_RS-485_Ni9871



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!

02.03.2015, 10:42
Beitrag #1

Brainbug Offline
LVF-Grünschnabel
*


Beiträge: 30
Registriert seit: May 2014

LV 2014 Professional Development
2014
DE


Deutschland
MODBUS-RTU_RS-485_Ni9871
Hallo liebe LabVIEW-Gemeinde,
ich möchte gerne einen Aktuator über die RT/FPGA ebene ansteuern. Als Schnittstelle dient die RS-485 mit MODBUS-RTU. System: cRIO 9075 mit Ni 9871 RS-485) und NI 9215 (Spannungsmesskarte).
Viel Erfahrung habe ich noch nicht mit LabVIEW, daher fallen mir derzeit noch einige Dinge etwas schwer. Ich habe einige Modbus-libs bei NI gefunden. So wie es aussieht laufen die jedoch nur bis max RT Ebene, so dass mir der Zugriff auf die FPGA ebene verwehrt bleibt.
Diese habe ich gefunden.

https://decibel.ni.com/content/docs/DOC-30140

http://www.ni.com/example/29756/en/#reviews

Gibt es eine Lib bei der auch der Zugriff auf den FPGA möglich ist? Oder ist es sogar mit den aufgeführten möglich?

Zum Funktionstest habe ich das Beispiel genutzt:
http://www.ni.com/example/31166/en/
Nach Anpassung auf das entsprechende Modul funktioniert dies auch soweit.

Jetzt ist der Punkt gekommen an dem das Programmdesign ansteht und ich mir in einigen Dingen nicht ganz sicher bin. Probleme offenbaren sich da mir vor allem mit timing und Regelung. Daher erhoffe ich mir hier den einen oder anderen guten Tip bzw. Ratschlag zu erhaschen, der mich auf den Richtigen Weg führt.

Problem 1: Über die Spannungsmesskarte soll ein Schwellwert erfasst werden und den Aktuator steuern (Das Einleiten der Gegenrichtung muss so schnell wie möglich sein)
Ablauf:
1. Der Motor fährt los.
2. Ab 0,5 V sollen Werte aufgezeichnet werden (Spannung und Position vom Aktuator)
3. bei 5 V soll die Gegenrichtung eingeleitet werden.
4. Werte < 0,5 V Aufzeichnung wieder stoppen
5. (Die Werterfassung soll in verschiedenen Messfrequenzen (bis 1500kHz möglich sein)
Fragen:
Da die Messfrequenz > 1000 kHz liegt scheidet Scan Engine aus?
Lasse ich die Abfragen auf der FPGA ebene auswerten und den Befehl zum Einleiten der Gegenrichtung ebenfalls vom FPGA senden oder schicke ich diese erst an die RT und zurück an den FPGA?
Reichen für die Anwendung while schleifen (auf dem FPGA) oder muss ich hier mit Zeitgesteuerten Schleifen arbeiten?

Vielen Dank für schon im Voraus für eure Antworten und Anregungen
Cheers
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
02.03.2015, 20:52
Beitrag #2

Holy Offline
LVF-Stammgast
***


Beiträge: 339
Registriert seit: Sep 2008

2014
2007
EN

09XXX
Deutschland
RE: MODBUS-RTU_RS-485_Ni9871
Ich vermute du meinst eine Samplingrate von 1,5 kHz? Für das cRIO gibt es aktuell kein Modul welches 1500 kHz Samplingrate kann.
Man kann mit der Scan-Engine auch mehr als 1 kHz realiseren aber davon ist im Allgemeinen abzuraten.
Wenn man die Scan-Engine für die Erfassung des Analogsignals außen vor lässt, müsstest du folgendermaßen vorgehen:

1. Sampling des Analogsignal und Signalisierung von Schwellwertüberschreitung an RT (z.B. über Interrupt)
2. Versenden der notwendigen Kommunikationsbefehle über die direkte VISA-Einbindung deines seriellen Moduls (Scan-Engine Support)

Für die Schleifen im FPGA sind While-Schleifen mit Metronom vollkommend ausreichend.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
05.03.2015, 08:41 (Dieser Beitrag wurde zuletzt bearbeitet: 05.03.2015 11:18 von Brainbug.)
Beitrag #3

Brainbug Offline
LVF-Grünschnabel
*


Beiträge: 30
Registriert seit: May 2014

LV 2014 Professional Development
2014
DE


Deutschland
RE: MODBUS-RTU_RS-485_Ni9871
Moin Holy,

danke für die Antwort.


Sorry hab mich verschrieben...meinte 1,5 kHz! Blush

Mit direkter VISA-Einbindung meinst du das nutzen der Modbus-lib auf der RT-Ebene?
Kann ich die Kommunikation denn teils "selbst" bewältigen wie im oben aufgeführten Beispiel und dies dann noch mit der MODBUS-lib auf RT-Ebene kombinieren?

edit: Hab grad mal Rücksprache mit NI gehalten....dort sagte man mir, dass eine Kombination von VISA mit selbstgeschriebenen FPGA-code nicht möglich ist, es sei denn man unterbricht das FPGA-Programm...was für mich auch soweit Sinn macht.

Cheers Brainbug
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
05.03.2015, 18:18 (Dieser Beitrag wurde zuletzt bearbeitet: 05.03.2015 18:18 von Holy.)
Beitrag #4

Holy Offline
LVF-Stammgast
***


Beiträge: 339
Registriert seit: Sep 2008

2014
2007
EN

09XXX
Deutschland
RE: MODBUS-RTU_RS-485_Ni9871
Also ich denke einie Implementierung des Modbus-Protokolls direkt im FPGA ist prinzipiell nicht unmöglich aber denke ich nicht wirklich sinnvoll. Daher der Vorschlag das Modul im Scan Engine Mode zu betreiben und damit direkt auf RT-Ebene mit VISA zu arbeiten und damit letztendlich auch direkt mit den verfügbaren Modbus-Implementierungen.
Hinsichtlich des Einwandes von NI ist es korrekt das du dieses Modul entweder direkt im FPGA oder per Scan Engine einbinden kannst. Was aber trotzdem geht ist die Kombination von Einbindung des seriellen Moduls über Scan Engine und Verwendung des analogen Moduls über FPGA.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
06.03.2015, 13:17
Beitrag #5

Brainbug Offline
LVF-Grünschnabel
*


Beiträge: 30
Registriert seit: May 2014

LV 2014 Professional Development
2014
DE


Deutschland
RE: MODBUS-RTU_RS-485_Ni9871
Kann es dann nicht zu timing Problemen kommen, wenn ich beide Module in unterschiedlichen "Modis" betreibe?
Und wenn ich die Scan Engine nutze falle ich dann nicht wieder unter meine 1,5 kHz? Der Motor muss schnellst möglich reagieren.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
06.03.2015, 16:04
Beitrag #6

Holy Offline
LVF-Stammgast
***


Beiträge: 339
Registriert seit: Sep 2008

2014
2007
EN

09XXX
Deutschland
RE: MODBUS-RTU_RS-485_Ni9871
Nein es gibt deswegen keine Timingprobleme. Der Scan-Engine Support für das serielle Modul bedeutet, dass innerhalb der Scan-Engine die sonst übliche Einbindung des seriellen Moduls erfolgt und im RT-Teil dieses dem VISA untergejubelt wird. Ist nur bedingt vergleichbar mit Scan-Engine für analoge und digitale Module.
Die Ansteuerung erfolgt ja über Modbus und daher ist der limitierende Faktor eher die Baudrate etc. Hinsichtlich der Schwellwertermittlung kannst du ja im FPGA direkt mit der maximalen Abtastrate deines analogen Erfassungsmoduls arbeiten und eine Schwellwertverletzung per Interrupt dem RT mitteilen. Hier versendest du bei auftreten des Interrupt direkt die notwendigen Befehle per Modbus.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
30
Antwort schreiben 


Gehe zu: