erste Implementierung zur EEPROM Speicherung
This commit is contained in:
parent
14a946bf5f
commit
960140e9db
@ -18,11 +18,18 @@ public:
|
||||
int GetBaudRate();
|
||||
|
||||
private:
|
||||
/*
|
||||
In diesem Beispiel wird Adresse 0 für die Modbus-ID und Adresse 1 für die Baudrate verwendet.
|
||||
Diese Adressen sind willkürlich gewählt und sollten nicht mit anderen Daten im EEPROM überlappen.
|
||||
*/
|
||||
static const int MODBUS_ID_ADDRESS = 0; // Speicheradresse für Modbus-ID
|
||||
static const int BAUD_RATE_ADDRESS = 1; // Speicheradresse für Baudrate
|
||||
static const int MAX_BAUD_RATE = 115200; // Maximal unterstützte Baudrate
|
||||
};
|
||||
|
||||
/*
|
||||
Konstruktor: Der Konstruktor initialisiert die Modbus-ID und die Baudrate auf Standardwerte (1 und 9600),
|
||||
falls die EEPROM-Werte nicht gesetzt sind (d.h. wenn sie 0xFF sind).
|
||||
*/
|
||||
ModBusConfig::ModBusConfig() {
|
||||
// Optional: Initialisieren Sie die EEPROM-Werte, falls erforderlich
|
||||
if (EEPROM.read(MODBUS_ID_ADDRESS) == 0xFF) {
|
||||
10
src/main.cpp
10
src/main.cpp
@ -2,6 +2,7 @@
|
||||
#include <Wire.h>
|
||||
#include <ModbusSlave.h>
|
||||
#include <SHT2x.h>
|
||||
#include "ModbusSlaveConfigToEEPROM.h" // Inkludiere die Header-Datei für ModBusConfig
|
||||
|
||||
// Statische Definition von Modbus-ID und Baudrate
|
||||
#define SLAVE_ID 8
|
||||
@ -29,6 +30,13 @@ Modbus slave(SERIAL_PORTRS485, SLAVE_ID, RS485_CTRL_PIN);
|
||||
Modbus slave(SERIAL_PORTRS485, SLAVE_ID);
|
||||
#endif
|
||||
|
||||
/*
|
||||
Instanz der ModBusConfig-Klasse
|
||||
Aktuell keine Verwendung, eine Testimplementierung, nur Ausgabezwecke
|
||||
*/
|
||||
|
||||
ModBusConfig modbusConfig;
|
||||
|
||||
// Funktion zur Steuerung der digitalen Ausgänge über Modbus
|
||||
uint8_t writeDigitalOut(uint8_t fc, uint16_t address, uint16_t length) {
|
||||
if (address > output_pins_size || (address + length) > output_pins_size) {
|
||||
@ -81,7 +89,7 @@ uint8_t fReadInputRegister(uint8_t fc, uint16_t address, uint16_t length) {
|
||||
slave.writeRegisterToBuffer(i, SERIAL_BAUDRATERS485); // Baudrate
|
||||
break;
|
||||
case 2:
|
||||
slave.writeRegisterToBuffer(i, SLAVE_ID); // Slave-ID
|
||||
slave.writeRegisterToBuffer(i, modbusConfig.GetModbusID()); // Slave-ID aus der ModBusConfig-Klasse
|
||||
break;
|
||||
case 3: {
|
||||
slave.writeRegisterToBuffer(i, static_cast<int>(temperatur * 100));
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user