Controllino und UDP

Hallo,
ich habe schon öfters versucht, meinen Controllino Maxi Automation per UPD mit einem PC kommunizieren zu lassen, jedoch gestaltet sich dies bisher als sehr schwierig. Der Controllino antwortet einfach nicht. Ich habe den Code bei einem Adruino Uno mit Ehtnernet Shield ausprobiert und konnte diesen ohne Probleme verbinden. Da lauft Hersteller beide denselben Chip haben und entsprechend es auf dem Controllino ganz genauso funktionieren soll, bin ich etwas ratlos. Hier mein Code:

#include <Controllino.h> 
#include <SPI.h>         // needed for Arduino versions later than 0018
#include <Ethernet.h>
#include <EthernetUdp.h>         // UDP library from: bjoern@cs.stanford.edu 12/30/2008


// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = {
  0xDE, 0xAD, 0xAE, 0xEF, 0xFE, 0xED
};
IPAddress ip(192, 168, 1, 177);

unsigned int localPort = 8888;      // local port to listen on

// buffers for receiving and sending data
char packetBuffer[UDP_TX_PACKET_MAX_SIZE];  //buffer to hold incoming packet,
char  ReplyBuffer[] = "acknowledged";       // a string to send back
char sendbuffer[50];
char convertbuffer[10];

// An EthernetUDP instance to let us send and receive packets over UDP
EthernetUDP Udp;
int i=0;

void setup() {
  // start the Ethernet and UDP:
  Ethernet.begin(mac, ip);
  Udp.begin(localPort);
  Serial.begin(9600);
}

void loop() {
  // if there's data available, read a packet
  int packetSize = Udp.parsePacket();
  if (packetSize) {
    //Serial.print("Received packet of size ");
    //Serial.println(packetSize);
    //Serial.print("From ");
    /*IPAddress remote = Udp.remoteIP();
    for (int i = 0; i < 4; i++) {
      Serial.print(remote[i], DEC);
      if (i < 3) {
        Serial.print(".");
      }
    }
    Serial.print(", port ");
    Serial.println(Udp.remotePort());*/

    // read the packet into packetBufffer
    Udp.read(packetBuffer, UDP_TX_PACKET_MAX_SIZE);
    //Serial.println("Contents:");
    Serial.println(i);
    Serial.println(packetBuffer);
    
    // send a reply to the IP address and port that sent us the packet we received
    Udp.beginPacket(Udp.remoteIP(), Udp.remotePort());
    itoa(i,convertbuffer,10);
    Udp.write("M");
    Udp.write(convertbuffer);
    Udp.write("\t");
    Udp.write(convertbuffer);
    Udp.write("\t");
    Udp.write(convertbuffer);
    i++;
    Udp.write(sendbuffer);
    Udp.endPacket();
  }

  if (i>6) { i=0; }
  delay(500);
}

Setze Deinen Code bitte in Codetags (</>-Button oben links im Forumseditor oder [code] davor und [/code] dahinter ohne *).
Dann ist er auch auf mobilen Geräten besser lesbar.
Das kannst Du auch noch nachträglich ändern.

Gruß Tommy

gehen andere Sketche mit Ethernet auf diesem Device? Also ein kleiner Webserver oder Webclient abruf -

HelloServer und WebClientRepeating aus den IDE Beispielen?

WebClientRepeating funktioniert nicht, es kommt am Anfang My IP address: 255.255.255.255

und anschließend connection failed, Beim Chatserver kommt: Chat server address:255.255.255.255

Der Controllino ist nicht an einem Router angeschlossen, sondern direkt am PC, kann das ein Problem sein?

Dann lege mal ein Kabel zum Router und berichte.

Und probier auch den Webserver (nicht den Chatserver).

Gibts von diesem Controllino auch ein Handbuch wo drinnen steht, wie Ethernet funktionieren soll, an welchen Port hängt deren CS? Einen Mustersketch von denen?

(Das Ding taucht manchmal hier auf, imho nur mit Problemen...)

Hi

Davon ab: Warum sollten sich Controllino-Nutzer sonst hier melden, außer bei Problemen? Wenn Alles läuft, gibt's keinen Grund in den Tiefen des WWW damit rumzuspamen :)

Kaum ein Thread (bis auf geile Projekte) dürfte ohne Problem ins Leben gerufen worden sein - weshalb ich, gerade bei den Exoten, von 100% Problem-Anfragen ausgehen würde.

MfG

cosmoc202: Hallo, ich habe schon öfters versucht, meinen Controllino Maxi Automation per UPD mit einem PC kommunizieren zu lassen, jedoch gestaltet sich dies bisher als sehr schwierig. Der Controllino antwortet einfach nicht. Ich habe den Code bei einem Adruino Uno mit Ehtnernet Shield ausprobiert und konnte diesen ohne Probleme verbinden. Da lauft Hersteller beide denselben Chip haben und entsprechend es auf dem Controllino ganz genauso funktionieren soll, bin ich etwas ratlos.

Das stimmt so nicht ganz. Die Controllino Mini Serie verwendet denselben Chip wie der Arduino UNO, nämlich ATmega328. Die Conttollino Maxi Serie - von der hier die Rede ist - verwendet aber den ATmega2560, also ähnlich wie der Arduino MEGA.

Inwiefern das Auswirkungen hat, kann ich nicht sagen. Ich habe bisher zwar ein paar Controllinos verbaut (und laufen seit Jahren), waren immer nur welche aus der Mini-Serie. Und Arduino MEGA habe ich nur weil ich hin und wieder etwas mit mehreren UARTs brauche, das aber eher selten. Die Unterschiede zum UNO sind schon größer als auf den ersten Blick ersichtlich: Fängt schon an bei den Pins für I2C und SPI u.s.w.

Controllino-spezifische Infos (incl. Forum) hier: https://www.controllino.biz/knowledge-base/

Leider macht es keinen Unterschied, ob ich einen Router dazwischen hänge. Auch der WebServer funktioniert nicht, er sagt stets, seine IP sei 255.255.255.255, auch anpingen mit der eingestellten IP klappt nicht. Laut Hersteller ist das Board für ModBus-Ethenert angelegt, kann es sei, dass deshalb Low-profile Protokolle nicht funktionieren?

Hast du dieses Tutorial von der Contollino-Website schon (an)gesehen und ausprobiert? TCP connection tutorial

Hey, oh man, das tut mir Leid und ist mir ein bisschen peinlich. Ich habe die Arduino IDE geupdatet, danach lief es ohne weiteres. Ich dachte, es wäre ausreichend, wenn die Boardbibliotheken auf dem neuesten Stand wären, aber offensichtlich muss auch die IDE up-to-date sein, jetzt läuft der Controllino ganz genauso wie der Uno...

Danke für die Rückmeldung. Super, dass es jetzt funktioniert!