Hallo,
hab erst mal nur ModBus stehen lassen, Werde dieses heute und morgen mal testen.
Wenn es da streikt dann wird es wohl daran liegen.
Was meint Ihr kann man dies dann so eingrenzen?:
#include <SPI.h>
#include <Ethernet.h>
#include "Mudbus.h"
int sensorwert; // LM35 Temperatur auslesen.
int temperatur = 0; //Unter d
Mudbus Mb;
//Function codes 1(read coils), 3(read registers), 5(write coil), 6(write register)
//signed int Mb.R[0 to 125] and bool Mb.C[0 to 128] MB_N_R MB_N_C
//Port 502 (defined in Mudbus.h) MB_PORT
void setup()
{
uint8_t mac[] = { 0x90, 0xA2, 0xDA, 0x00, 0x51, 0x06 };
uint8_t ip[] = { 192, 168, 178, 70 };
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
}
void loop() {
Mb.Run();
//Ausgänge 2-13, anstatt 10 ist 45
analogWrite(2, Mb.R[2]);
analogWrite(3, Mb.R[3]);
analogWrite(4, Mb.R[4]);
analogWrite(5, Mb.R[5]);
analogWrite(6, Mb.R[6]);
analogWrite(7, Mb.R[7]);
analogWrite(8, Mb.R[8]);
analogWrite(9, Mb.R[9]);
analogWrite(45, Mb.R[10]);
analogWrite(11, Mb.R[11]);
analogWrite(12, Mb.R[12]);
analogWrite(13, Mb.R[13]);
// Digitale Eingänge herauslesen und zu Modbus übergeben:
//Pin31
Mb.R[14] = digitalRead(31);
//Pin33
Mb.R[15] = digitalRead(33);
//Pin35
Mb.R[16] = digitalRead(35);
//Pin37
Mb.R[17] = digitalRead(37);
//Pin39
Mb.R[18] = digitalRead(39);
//Pin41
Mb.R[19] = digitalRead(41);
//Pin43
Mb.R[20] = digitalRead(43);
//Pin47
Mb.R[21] = digitalRead(47);
//Pin49
Mb.R[22] = digitalRead(49);
//Pin53
Mb.R[23] = digitalRead(53);
// Analoge Eingänge herauslesen und zu Modbus übergeben:
//Pin Analog 0
Mb.R[24] = analogRead(0);
//Pin Analog 1
Mb.R[25] = analogRead(1);
//Pin Analog 2
Mb.R[26] = analogRead(2);
//Pin Analog 3
Mb.R[27] = analogRead(3);
//Pin Analog 4
sensorwert = analogRead(4); // LM35 am Pin A4 Platine Mega - Modbus
temperatur = map(sensorwert, 0, 307, 0, 150);
Mb.R[28] = temperatur;
}
Danke euch.
Gruß