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!
09.09.2015, 14:08 (Dieser Beitrag wurde zuletzt bearbeitet: 10.09.2015 09:21 von jg.)
ich klinke mich mal ein bevor ich ein neues Thema starte, da ich froh bin dass dieser Thread recht aktuell ist.
Ich habe mir alle Threads zum Thema Modbus durchgelesen, sowie auch die PDFs und Files von NI selber und blicke noch nicht durch.
Die NI Modbus Libary ist installiert.
Ich besitze einen Beckhoff BK9100 Buskoppler und möchte für den Anfang einfach nur den Ausgang ansteuern und sehen, dass die zugehörige Led auf der Klemme leuchtet.
Ich habe die "MB Ethernet Master" und die dazugehörige Slave datei benutzt. Wenn ich mit der voreingestellten IP die Coils setzte leuchten die visualisierten Led auf dem Slave Panel.
Wenn ich nun die Ip adresse des Kopplers eingebe dann blinkt ständig die "com"Led des Kopplers (also findet kommunukation statt) aber sobald ich einen Coil sezte tut sich nichts und die Kommunikation bricht auch ab.
Ab und an blinkt die "WDG" Led dauerhaft. Ich habe gelesen dass man den Watchdogzyklus wohl höher stellen muss aber in beiden Blockdiagrammen finde ich nicht die Einstellung daür.
Ich weiß es handelt sich wahrscheinlich echt um Basics, deswegen habe ich es auf eigene Faust probiert aber ich komme nicht weiter.
Ich Danke für jede Hilfe!
Grüße
EDIT jg: Thema getrennt. Bei anderen Thread ging es zwar um Modbus, aber um eine Motorsteuerung, nicht Beckhoff-Koppler
10.09.2015, 07:16 (Dieser Beitrag wurde zuletzt bearbeitet: 10.09.2015 07:39 von panduci.)
lade einmal dein aktuelles VI hoch.
Hast du den Busskoppler direkt mit dem PC verbunden oder mit Hub/Switch?
lg panduci
Es gibt zweierlei Arten von Neugier:
1) Die eine aus Eigennutz, die uns antreibt zu erfahren, was uns nützen kann.
2) Die andere aus Stolz, die dem Trieb entspringt, zu wissen, was andere nicht wissen.
10.09.2015, 08:02 (Dieser Beitrag wurde zuletzt bearbeitet: 10.09.2015 08:03 von mrgigi.)
Also die MB Ethernet Examples sind aus der NI Library.
Da nehme ich z.B den functionscode 5 um einzelne Bits zu beschreiben. Aber am Koppler tut sich nichts.
Ich muss auch gestehen, dass ich nicht verstehe wie der das auch soll wenn ich nicht einzeln die Adressen vergebe. Ich adressiere ja nirgends oder passiert dass durch das Protokoll?
Das Beckhoff Beispiel habe ich hier aus dem Forum. Erster Beitrag
Wie ich gelesen habe gibt es ja ein Problem mit dem Watchdog so dass dieser immer gesetzt und wieder zurück gesetzt werden muss da er ansonsten in keinen weiteren Zyklus geht. Das wird bei diesem Vi ja gemacht. Als starting adress geb ich die 0x801 ein. Unten die visuelle LED setze ich und unter "Outputs" leuchtet die Visuelle LED.
Hast du denn ein ausgekreuztes Netzwerkkabel benützt?
Laut Hilfe solle man bei Direktverbindung mit dem PC ein ausgekreuztes Netzwerkkabel nehmen.
Lg panduci
Es gibt zweierlei Arten von Neugier:
1) Die eine aus Eigennutz, die uns antreibt zu erfahren, was uns nützen kann.
2) Die andere aus Stolz, die dem Trieb entspringt, zu wissen, was andere nicht wissen.
10.09.2015, 09:12 (Dieser Beitrag wurde zuletzt bearbeitet: 10.09.2015 09:15 von mrgigi.)
Danke für den Tipp. Ich habe es nun durch ein Crossoverkabel ersetzt und noch einmal alles getestet. Sobald ich bei Labview auf Start drücke wird Kommunikation aufgebaut und das COM lämpchen der Status LEDs am BK leuchtet. Aber an der Ausgangsklemme tut sich nichts.
Laut Modbus Protokoll sind ab 0x0800 die Ausgänge definiert? Das heißt ich muss nur den richtigen Funktionscode zum schreiben nutzten z.B. 5 und als Adresse 801 und er spricht selber einen Ausgang an der Klemme an? Zumindest bei dem "Beckhoff Modbus Example" was ich nutzte.
Bei dem "MB Ethernet Example" von NI was muss ich den da als Register eintragen und wie kann ich mir das vorstellen?
Habe da leider ziemliche Verständnisprobleme.
Grüße
10.09.2015, 12:00 (Dieser Beitrag wurde zuletzt bearbeitet: 10.09.2015 12:11 von th13.)
Ich habe keine direkte Lösung, nur ein paar Hinweise:
- Watchdog:
Schau mal auf die Rückseite des Buskopplers, welche Firmwareversion der hat. Die Version 5 hat laut Beckhoff einen Bug bzgl. des Watchdogs. Man kann den Standardwert von 1000ms nicht ändern und darf ihn auch nicht ändern, sonst resettet sich das Modul. D.h. sobald du das erste Mal etwas geschrieben hast, muss du alle 1000ms wieder schreiben, sonst löst der Watchdog aus und du darfst nicht mehr schreiben.
- KS2000
Wenn du etwas Geld investierst und dir das USB-Kabel von Beckhoff (ca 50€) holst, kannst du mit KS2000 sehr schön deine Beckhoffmodule konfigurieren. Damit kannst du auch eine neue Firmware aufspielen.
- Netzwerk:
Ein Crossoverkabel brauchst du normalerweise nicht. Alle aktuellen Netzwerkkarten erkennen das eigentlich mittlerweile automatisch. Wir benutzen bei uns keine, wenn wir den Buskoppler direkt an den Rechner hängen, beide müssen nur eine IP haben, die im selben Subnetz liegt.
- Register
Im Prinzip sind Register verschiedene Variablen, die du entweder lesen oder schreiben kannst. Sie bilden einen Speicherbereich auf Adressen ab. Zu deinem Modul, das du an den Buskoppler angehängt hast, gibt es eine Dokumentation, wo die einzelnen Register und die Prozesskommunikation beschrieben sind.
Also der Code auf der Rückseite bestehend aus Zahlen und Buchstaben beginnt mit einer 5. Der KS2000 sagt es sei die Firmware: B4 00
Ich versuche mal die Firmware zu updaten evt. funktionierts ja dann.
In dem VI Beckhoff Modbus Example passiert das doch dass es immer wieder neu geschrieben wird oder?
Ich habe mal in der Dokumentation zum KL2114 nachgeschaut und dort steht man bräuchte keine Einstellungen für die Adressen. Aber irgendwo muss ich doch die Register deklarieren genau wie bei Variablen, wenn ich deine Erklärung richtig verstanden habe.
Ich hab mir das einfacher vorgestellt aber das umdenken von Step7 zu Labview bzw kommunikation über Modbus fällt mir sehr schwer. Da gings es alles über die Hardwareeinstellungen und die MacAdresse und dann den Adressbereich festlegen und im Code nur noch deklarieren. Bei Labview funktioniert das ja anders, aber ich habe mir sagen lassen wenn man das Prinzip versteht soll es einfacher sein.
Aber bis auf die IpAdresse des BK und den Prot 502 damit es per Modbus kommunziert und den Functionscode damit es weiß was es zu tun hat, gebe ich ja an Labview keine Geätespezifischen Daten.
Bei dem Beckhoff Modbus Example aus dem Forum vergeb ich ja wenigstens noch eine Anfansadresse 0x0801
Ich bin für jede Hilfe dankbar!
11.09.2015, 09:47 (Dieser Beitrag wurde zuletzt bearbeitet: 15.09.2015 08:08 von jg.)
Ja leider erreiche ich so auch keinen DO bei dem "Beckhoff Modbus Example" .
Bei den Modbus Master Slave Beispielen von NI selber gibt es ja nur den Schalter zum umlegen für einzelne Coils und auch das funktioniert nicht.
Ansonsten gibt es dort nur noch die Möglichkeit die Register einzugeben. Das habe ich probiert 800, 80x usw da dort aber kein Hexa eingeben werden kann habe ich es auch mit 40000, 40001 erfolglos probiert.
Ich bin echt für jede Hilfe Dankbar. Ich hänge echt daran fest und weiß nicht warum.
Danke!
Grüße
15.09.2015, 08:33 (Dieser Beitrag wurde zuletzt bearbeitet: 15.09.2015 09:55 von jg.)
Jetzt fällt mir erst auf, dass im von dir hochgeladenen "Beckhoff-VI" der Eingang "MBAP Header" an allen Modbus VIs noch auf Standard (0;0) steht.
Aus meiner Erfahrung mit Modbus gibt es aber keinen Modbus Slave mit Unit-ID 0. Deshalb musst du überall eine Konstante (0;1) anschließen (hoffentlich hat der Koppler ID 1)...
Das selbe Problem besteht beim Modbus Ethernet Example, auch hier ist leider kein MBAP Header eingerichtet.
Die Anzeige einer numerischen Konstante (oder Controls oder Indicators) kannst du übrigens jederzeit auf HEX umschalten. Rechtsklick -> Visible Items -> Radix!
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!