-
Controllino MAXI and Controllino MEGA come with Ethernet controller WIZnet W5100 builtin.
There is Built-In library compatible with Controllino MAXI and Controllino MEGA see:
[img]https://i.postimg.cc/Nj6n4Zmr/Ethernet-library.png[/img]
So it is possible to include Ethernet library:
#include "Ethernet.h"
To make the ethernet work, some parameters must be declared:
byte mac[] = {0xE8, 0x2A, 0xEA, 0x4B, 0x1F, 0xC3}; IPAddress localip(192, 168, 6, 191); IPAddress serverip(192, 168, 6, 2);
mac is HW MAC address, localip is IP address of Controllino itself, serverip is IP address of remote client (can be other Controllino).
Ethernet library provides EthernetClient and EthernetServer classes, EthernetClient for connecting to remote and EthernetServer for setup “TCP listener”
EthernetClient client; EthernetServer server(50001);
For EthernetServer 50001 is the port number on which Controllino will listen.
Ethernet has to be initialized:
Ethernet.begin(mac, localip);
And then, a message can be sent to a remote server:
client.connect(serverip, 50001); delay(10); client.println("Execute Script: "script A0";"); delay(10); client.stop();
Or message can be received:
EthernetClient proxyserver = server.available(); if (proxyserver) { while (proxyserver.connected()) { if (proxyserver.available()) { char c = proxyserver.read(); message += c; } } proxyserver.stop(); }
-
This discussion was modified 3 years, 2 months ago by
ivan-controllino.
-
This discussion was modified 3 years, 2 months ago by
-
It is also possible to use several Controllino devices in a Master-Slave Scenario.
Example scenario see:
[img]https://i.postimg.cc/3rkZ3XYJ/Controllino-net.jpg%5B/img%5DWhere two “slave” Controllinos are connected to one “Master” Controllino and these 3 devices acts like “one”.
When “Master” acts like “proxy” for TCP messages from “slaves”.
Real setup with logical “1” connected to A0 of each Controllino see:
[img]https://i.postimg.cc/8cxNFhG3/Controllino-setup.jpg%5B/img%5DFor listening on PC Hercules tool has been used see:
[img]https://i.postimg.cc/13tbxgZV/Controllino-Hercules-listen.jpg%5B/img%5DWhich receives messages from all 3 devices.
Master Controllino sketch:
Code:
#include
#include
#include/*
CONTROLLINO – Demonstration of TCP protocol usage, Version 01Compatible with CONTROLLINO MAXI, MAXI Automation and MEGA.
IMPORTANT INFORMATION!
Please, select proper target board in Tools->Board->Controllino MAXI/MEGA before Upload to your CONTROLLINO.(Refer to https://github.com/CONTROLLINO-PLC/CONTROLLINO_Library if you do not see the CONTROLLINOs in the Arduino IDE menu Tools->Board.)
Created 14 Jun 2019
by Jasin
https://controllino.biz/Check https://github.com/CONTROLLINO-PLC/CONTROLLINO_Library for the latest CONTROLLINO related software stuff.
Visit our forum here: https://forum.controllino.biz/
*/// Set MAC adress
byte mac[] = {0xE8, 0x2A, 0xEA, 0x4B, 0x1F, 0xC3};
// Set local IP
IPAddress localip(192, 168, 6, 191);
// Set remote IP of server
IPAddress serverip(192, 168, 6, 2);EthernetClient client;
EthernetServer server(50001);String message = “”;
void setup()
{
pinMode(CONTROLLINO_A0, INPUT);//initialize Ethernet
Ethernet.begin(mac, localip);// Check for Ethernet hardware present
if (Ethernet.hardwareStatus() == EthernetNoHardware)
{
while (true)
{
delay(1); // do nothing, no point running without Ethernet hardware
}
}server.begin();
}void loop()
{message = “”;
// check incoming connection
EthernetClient proxyserver = server.available();
if (proxyserver)
{
//read incomming message
while (proxyserver.connected())
{
if (proxyserver.available())
{
char c = proxyserver.read();
message += c;
}
}//Send received message to server (serverip)
client.connect(serverip, 50001);
delay(10);
client.print(message);
delay(10);
//close both TCP connection
client.stop();
proxyserver.stop();
}
delay(400);
//handle local input
if (digitalRead(CONTROLLINO_A0))
{
//connect to server
client.connect(serverip, 50001);
delay(10);
//send a message to server (serverip)
client.println(“Execute Script: “script A0″;”);
delay(10);
//close TCP connection
client.stop();
delay(400);
}
}Client 1 Controllino sketch:
Code:
#include
#include
#include/*
CONTROLLINO – Demonstration of TCP protocol usage, Version 01Compatible with CONTROLLINO MAXI, MAXI Automation and MEGA.
IMPORTANT INFORMATION!
Please, select proper target board in Tools->Board->Controllino MAXI/MEGA before Upload to your CONTROLLINO.(Refer to https://github.com/CONTROLLINO-PLC/CONTROLLINO_Library if you do not see the CONTROLLINOs in the Arduino IDE menu Tools->Board.)
Created 14 Jun 2019
by Jasin
https://controllino.biz/Check https://github.com/CONTROLLINO-PLC/CONTROLLINO_Library for the latest CONTROLLINO related software stuff.
Visit our forum here: https://forum.controllino.biz/
*/// Set MAC adress
byte mac[] = { 0xE8, 0x2A, 0xEA, 0x4B, 0x1F, 0xC3 };
// Set local IP
IPAddress localip(192, 168, 6, 192);
// Set remote IP of server
IPAddress server(192, 168, 6, 191);EthernetClient client;
void setup(){
pinMode(CONTROLLINO_A0, INPUT);//initialize Ethernet
Ethernet.begin(mac, localip);// Check for Ethernet hardware present
if (Ethernet.hardwareStatus() == EthernetNoHardware) {
while (true) {
delay(1); // do nothing, no point running without Ethernet hardware
}
}}
void loop(){
//handle local input
if(digitalRead(CONTROLLINO_A0))
{
//connect to server
client.connect(server, 50001);
delay(10);
//send a message to server
client.println(“Execute Script: “script A10″;”);
delay(10);
//close TCP connection
client.stop();
delay(1000);
}
}Client 2 Controllino sketch:
Code:
#include
#include
#include/*
CONTROLLINO – Demonstration of TCP protocol usage, Version 01Compatible with CONTROLLINO MAXI, MAXI Automation and MEGA.
IMPORTANT INFORMATION!
Please, select proper target board in Tools->Board->Controllino MAXI/MEGA before Upload to your CONTROLLINO.(Refer to https://github.com/CONTROLLINO-PLC/CONTROLLINO_Library if you do not see the CONTROLLINOs in the Arduino IDE menu Tools->Board.)
Created 14 Jun 2019
by Jasin
https://controllino.biz/Check https://github.com/CONTROLLINO-PLC/CONTROLLINO_Library for the latest CONTROLLINO related software stuff.
Visit our forum here: https://forum.controllino.biz/
*/// Set MAC adress
byte mac[] = { 0xE8, 0x2A, 0xEA, 0x4B, 0x1F, 0xC4 };
// Set local IP
IPAddress localip(192, 168, 6, 193);
// Set remote IP of server
IPAddress server(192, 168, 6, 191);EthernetClient client;
void setup(){
pinMode(CONTROLLINO_A0, INPUT);//initialize Ethernet
Ethernet.begin(mac, localip);// Check for Ethernet hardware present
if (Ethernet.hardwareStatus() == EthernetNoHardware) {
while (true) {
delay(1); // do nothing, no point running without Ethernet hardware
}
}}
void loop(){
//handle local input
if(digitalRead(CONTROLLINO_A0))
{
//connect to server
client.connect(server, 50001);
delay(10);
//send a message to server
client.println(“Execute Script: “script A20″;”);
delay(10);
//close TCP connection
client.stop();
delay(1000);
}
}
Log in to reply.