Hi Jens,
ich hab noch ein bisschen weiter nach dem Fehler gesucht. Bis zum VISA schreiben im Block läuft auf jeden Fall alles ohne Fehler. Danach kommt es noch zu einem Timeoutfehler 6101. Dieser tritt im Receive auf. Ich glaube, dass das Gerät nicht antwortet oder ggf. mit einer Antwort die nicht implementiert ist.
Weißt du evtl wo der Timeoutfehler zustande kommt.
Beim Decodieren habe ich nun eine andere Typwandlung genommen, da die aus den alten Bildern wahrscheinlich zu Fehlern führen wird.
Vlt noch eine kleine Nebenfrage: Ich habe an meinem RS-485-USB-Wandler die Eingänge TDx und RDx. Kannst du oder jemand anders mir einer den Unterschied dazwischen sagen ?
Gruß
Max
Suche im Sourcecode ist nicht deine Stärke:
[
attachment=60958]
Sprich, es kam gar keine Antwort.
Passt die Verkabelung überhaupt? Hast du eine Software des Herstellers zur Hand, um das zu überprüfen?
RDx ist im Normalfall die Receiveleitung
TDx ist im Normalfall die Transmitleitung
Bei 2-Draht RS-485 gibt es das aber eigentlich nicht. Da gibt es nur A und B. Auf diesen Leitungen werden die Botschaften differentiell übertragen, und es kann immer nur 1 Teilnehmer senden, die anderen müssen zuhören.
Was hast du da für einen Wandler?
Gruß, Jens
Und hier auf Grund deines Screenshots im ersten Beitrag die Antwort zu deinem USB-RS422/485 Wandler - Google sei Dank:
http://advdownload.advantech.com/product...919qsg.pdf
Je nach DIP-Switch Einstellung kannst du den im 2-Wire oder 4-Wire (RS-422) Modus betreiben.
Im 4-Wire-Modus sind 2 Leitungen die Reveice Leitungen, über die Nachrichten reinkommen, und 2 die Transmit-Leitungen, über die die Nachrichten rausgehen. Jeweils 2, da bei RS422 die Signale differentiell übertragen werden (1x Spannung Positiv, 1x Spannung Negativ).
Gruß, Jens
Hallo zusammen,
vielen Dank für eure Antworten. Ich hab es mittlerweile ans Laufen bekommen. Bedingt durch eine anfänglich falsche Verkablung hat sich das Motorsteuergerät wohl aufgehangen und stand dauerhaft auf Receive. Nach einem Reset klappt nun alles mehr oder minder und ich erhalte die gewünschten Daten.
Allerdings habe ich noch zwei kleiner Fragen, auf die ich zwar selber schon eine Antwort habe, jedoch bin ich mir nicht sicher ob das die richtige sind.
1. Ich wandle alle Daten ganz stumpf in FLOAT32 um (auch Daten die als INT32 vom Steuergerät gespeichert werden). Nun habe ich in meiner Ausgabe ein paar Werte mit der Potenz 10 hoch -42 bis -49. Liege ich da richtig mit der Annahme, dass es sich bei diesen Werten um Nullen (weil diese sich in der Nähe des kleinsten FLOAT32-Wertes aufhalten) handeln müsste und diese bei der "stumpfen" Umwandlung von mir verfälscht werden ?
2. Wenn ich die Abfrage über Labview starte stoppen die Motoren sofort. Ich vermute, dass dies mit den Einstellungen des Herstellers zusammenhängt. Oder besteht die Möglichkeit, dass dies in irgendeiner Form mit den Modbustreibern zusammenhängt, die ggf. eine Einstellung haben, die dazu führen, dass sie immer im Vordergrund ausgeführt werden. Den Support des Hersteller habe ich diesbezüglich schon angeschrieben, jedoch keine Antwort erhalten.
Gruß
Max
Hallo Max,
Zitat:1. Ich wandle alle Daten ganz stumpf in FLOAT32 um (auch Daten die als INT32 vom Steuergerät gespeichert werden). Nun habe ich in meiner Ausgabe ein paar Werte mit der Potenz 10 hoch -42 bis -49. Liege ich da richtig mit der Annahme, dass es sich bei diesen Werten um Nullen (weil diese sich in der Nähe des kleinsten FLOAT32-Wertes aufhalten) handeln müsste und diese bei der "stumpfen" Umwandlung von mir verfälscht werden ?
Wieso wandelst du "stumpf" alles in SGL, wenn du auch I32-Werte erwartest? Das ist grob fahrlässig FALSCH!
Wenn du einen I32 erwartest, dann musst du das auch so umwandeln!
(Die Datenkodierung bei SGL ist komplett anders als bei I32, einfach mal Bücher oder Wikipedia lesen!)
Zitat:2. Wenn ich die Abfrage über Labview starte stoppen die Motoren sofort. Ich vermute, dass dies mit den Einstellungen des Herstellers zusammenhängt. Oder besteht die Möglichkeit, dass dies in irgendeiner Form mit den Modbustreibern zusammenhängt, die ggf. eine Einstellung haben, die dazu führen, dass sie immer im Vordergrund ausgeführt werden. Den Support des Hersteller habe ich diesbezüglich schon angeschrieben, jedoch keine Antwort erhalten.
Ich vermute ja, dass die Antwort darauf im Manual deines Herstellers steht…
Was fragst du denn ab, wenn der Motor danach gleich stoppt?
Wieso werden "Modbustreiber im Vordergrund" ausgeführt? Im Vordergrund vor welchem Hintergrund?
Hallo Gerd,
1.
"stumpf" frage ich im wesentlichen ab um mir den Arbeitsaufwand klein zu halten ^^ Ich weiß, dass das nicht besonders gründlich geschweige denn ordentlich ist, jedoch benötige ich die INT32 Werte nicht weiter. Die Frage war nur zur Plausibilitätsprüfung.
Die restlichen Wert stimmen bis auf 0,5 mm genau.
2.
Manual ist so eine Sache. Das was der Hersteller als Manual bezeichnet würde ich eher beschriftete Fotostrecke nennen. Dort werden leider überhaupt keine genauen Angaben zur Kommunikation mit der RS-485 gemacht. Alle Angaben zur Kommunikation habe ich aus dem angefügten Dokument entnommen. Und bevor die Frage kommt warum man sowas von so einem Hersteller anschafft: Es war das einzige Gerät was das Anforderungsprofil ansatzweise erfüllt hat. xD
Ich frage in ca 500ms die Funktion "general infos" ab.
Mit Vorder- und Hintergrund war gemeint, ob ich ggf. die Treiber so modifizieren kann, dass er quasi nur mit ließt was rauskommt und danach wieder den Status/Zustand vor der Abfrage herstellt.
Gruß Max
Hallo Max,
Zitat:Ich frage in ca 500ms die Funktion "general infos" ab.
Mit Vorder- und Hintergrund war gemeint, ob ich ggf. die Treiber so modifizieren kann, dass er quasi nur mit ließt was rauskommt und danach wieder den Status/Zustand vor der Abfrage herstellt.
Wenn dein Gerät sich "komisch" verhält, wenn du nur einen Befehl zur Abfrage von "fast read general informations" schickst, dann hat das erstmal nichts direkt mit einem Modbus-Treiber zu tun: das ist dann etwas in der (internen) Programmierung dieses Gerätes!
Zitat:Dort werden leider überhaupt keine genauen Angaben zur Kommunikation mit der RS-485 gemacht.
Es wird gleich ziemlich am Anfang auf die offiziellen Quellen zu Modbus verwiesen: was genau willst du denn noch mehr zum Thema wissen?
RS485 ist "nur" der Kommunikationskanal, in diesem Fall eine "simple" serielle Schnittstelle. Das Protokoll ist (mindestens) eine Ebene höher und bei Modbus.org gut erläutert…