Hallo,
ich habe schon so einige Forschungsergebnisse.
Ich habe hier im Forum Beiträge zur Modbuskommunikation
mit einem Arduino gefunden.
Also mit dem Arduino UNO + Ethernetshield funktioniert es.
#include <SPI.h>
#include <Ethernet.h>
#include "Mudbus.h"
Mudbus Mb;
void setup()
{
uint8_t mac[] = { 0x90, 0xA2, 0xDA, 0x00, 0x51, 0x06 };
uint8_t ip[] = { 192, 168, 178, 5 };
uint8_t gateway[] = { 192, 168, 178, 1 };
uint8_t subnet[] = { 255, 255, 255, 0 };
Ethernet.begin(mac, ip, gateway, subnet);
//Avoid pins 4,10,11,12,13 when using ethernet shield
delay(5000);
Serial.begin(9600);
}
void loop()
{
Mb.Run();
Mb.R[1] = 1234;
}
Mein Projekt ist es nun aber das ganze auf einem NODE MCU mit ESP8266 ans laufen zu bekommen.
mir ist jetzt nicht klar wie ich das anstellen kann. Ich habe auch ein Beispiel gefunden das sehr vielversprechend aussieht,
aber mit diesem Code verbindet sich der ESP nicht mal mit dem Wlan.
#include <ESP8266WiFi.h>
#include <ModbusTCPSlave.h>
//WIFI Settings
byte ip[] = { 192, 168, 1, 126};
byte gateway[] = { 192, 168, 1, 1 };
byte subnet[] = { 255, 255, 255, 0 };
ModbusTCPSlave Mb;
unsigned long timer;
unsigned long checkRSSIMillis;
void setup()
{
Mb.begin("Telecom-28778737", "passwordwificasa47893000", ip, gateway, subnet);
delay(1000);
Mb.MBInputRegister[0] = 100;
Mb.MBInputRegister[1] = 65500;
Mb.MBInputRegister[2] = 300;
Mb.MBInputRegister[3] = 400;
Mb.MBInputRegister[4] = 500;
Mb.MBHoldingRegister[0] = 1;
Mb.MBHoldingRegister[1] = 2;
Mb.MBHoldingRegister[2] = 3;
Mb.MBHoldingRegister[3] = 4;
Mb.MBHoldingRegister[4] = 5;
}
void loop()
{
Mb.Run();
delay(10);
if (millis() - timer >= 1000) {
timer = millis();
Mb.MBInputRegister[1]++;
}
if (millis() - checkRSSIMillis >= 10000) {
checkRSSIMillis = millis();
Mb.MBInputRegister[0] = checkRSSI();
}
}
/*****FUNZIONI*****/
byte checkRSSI() {
byte quality;
long rssi = WiFi.RSSI();
if (rssi <= -100)
quality = 0;
else if (rssi >= -50)
quality = 100;
else
rssi = rssi + 100;
quality = byte(rssi * 2);
return quality;
}