de:project:modbus_rtu_uno_slave_sw_serial

Differences

This shows you the differences between two versions of the page.

de:project:modbus_rtu_uno_slave_sw_serial [2022/04/21 15:01] ()
 1:  1:
 +====== Modbus RTU Slave mit SW-Serial ======
 +
 +Das Programm läuft an Arduino UNO. UNO hat nur einen seriellen Port, daher ist SW-Serial eine sehr nützliche Funktion, damit mehrere Quasi-UARTs öffnen können. Problem ist, daß es nicht mehreren Kommunikationslösungen funktioniert mit. In diesem Fall fungiert der Arduino Modbus als RTU-Slave und führt gleichzeitig den seriellen Monitor aus.
 +
 +===== Verdrahtung =====
 +{{:hu:arduino:modbus_rtu_over_max485_with_sw_serial_steckplatine.png|Modbus RTU Slave mit SW-Serial}}
 +
 +===== Libraries =====
 +  * modbusrtu.h: https://github.com/smarmengol/Modbus-Master-Slave-for-Arduino
 +  * SoftwareSerial.h: https://www.arduino.cc/en/Reference/softwareSerial
 +
 +==== Program ====
 +<code c>
 +
 +#include <ModbusRtu.h>
 +#include <SoftwareSerial.h>
 +#define SSerialTxControl 10
 +SoftwareSerial mySerial(2, 3);
 +int count = 0;
 +
 +// data array for modbus network sharing
 +uint16_t au16data[16] = {
 +  3, 1415, 9265, 4, 2, 7182, 28182, 8, 0, 0, 0, 0, 0, 0, 1, -1 };
 +
 +Modbus slave(1); 
 +
 +void setup() {
 +  Serial.begin(9600);
 +  slave.begin( &mySerial, 9600, SSerialTxControl );
 +  slave.start();
 +}
 +
 +void loop() {
 +  count++;
 +  au16data[0] = count;
 +  delay(100);
 +  slave.poll( au16data, 16 );
 +}
 +</code>
 +
 +{{:de:arduino:com12221.png|Log}}
  
  • de/project/modbus_rtu_uno_slave_sw_serial.txt
  • 2022/04/21 15:01
  • ()