Hi Leute, ich danke euch fuer eure Antworten.
habe mal ein Bild (1) der Hardware in den Anhang gesetzt.
P3 ist mit D3 gebrückt = TX
P4 ist mit D2 gebrückt = RX
Wenn ich im Programm die beiden Pins auf High setze, leuchten die LEDs D1 (gruen) und D2 (rot) rechts am Board. Außerdem misst man an den Ausgängen A und B des H1 eine Spannungsdifferenz von ~3 V, gehen die Pins wieder auf Low gehen die LEDS aus und die Differenz ist 0.65 V. Diese Spannungsdifferenzen messe ich auch am Sensor, die Verbindung steht also. Wenn ich nicht die Pins sondern D9 auf high/low setze, dann gehen die LEDs nicht an und die Spannungsdifferenze am Ausgang bleibt auf 0.65 V bestehen. Sowohl mit D9_CTRL als auch mit TX_CTRL. Oben links im Bild der Sensor (der schwarze Chip am unteren Ende). Viel Einstellmöglichkeiten gibts also nicht, eigentlich nur D9_CTRL und TX_CTRL.
Zu Serial.println(au16data[0]);
ich habe mal die ersten 50 Wörter ausgegeben (Bild 2)
for(int i = 0 ; i < 50 ; i++)
Serial.print(au16data[i]);
Serial.println();
Man sieht die ersten 16 Wörter sind 0, was ja auch der Größe des Arrays entspricht.
Zu uint8_t u8txenpin: Mir kommt das auch sehr suspekt vor, dass ich nirgendwo RE/DE toggle. Die Definition:
Modbus master(0);
kommt aus dem Beispiel der Library die SoftwareSerial miteinbezieht. Es gibt auch eine ohne SoftwareSerial, da sieht das ganze so aus:
/**
* Modbus object declaration
* u8id : node id = 0 for master, = 1..247 for slave
* u8serno : serial port (use 0 for Serial)
* u8txenpin : 0 for RS-232 and USB-FTDI
* or any pin number > 1 for RS-485
*/
Modbus master(0,0,0); // this is master and RS-232 or USB-FTDI
Das passt besser zu dem was in dem Kommentar beschrieben wird, aber wenn ich dem Modbus Objekt 3 Parameter zu übergeben versuche, so wie das hier der Fall ist, dann wird nichts mehr ausgegeben, nichtmal mehr die Nullen. Das Programm arbeitet dann nur noch bis kurz vor master.query( telegram ); bevor es abbricht und void loop(); neu durchläuft...
Ich habe da alle Möglichkeiten durchgeprüft, z.B. Modbus master(0, 9, 2) mit Jumper sowohl auf D9_CTRL als auch TX_CTRL.
Ich muss sagen das erscheint mir alles sehr seltsam. Wenn ich den Sensor direkt über Adapter an den PC anschließe und mit ComTestPro anspreche bekomme ich auch etwas Gescheites zurück. ComTestPro macht ja auch nichts anderes als die eingestellten Parameter mit einem Modbus Telegram an den Sensor zu schicken. Die Arduino Libraries machen ja das Gleiche. Das heißt das Problem hängt definitiv mit dem Shield zusammen, oder was meint ihr?
Bild 3 zeigt die Parameter die ich in ComTestPro übergebe.
Viele Gruesse
Winterwurst


