Según altos estándares industriales

Busca en nuestro Blog. Encontrarás múltiples aplicaciones, soluciones, ejemplos de código. Navega utilizando la nube de etiquetas o busca utilizando criterios específicos

Llibreria de Industrial Shields para usar Arduino y FTP

Cómo enviar y recibir archivos con el controlador industrial Arduino

Industrial Shields Arduino IDE Library - FTP


Introducción

Hemos creado una librería que te permite enviar y recibir archivos des de un servidor FTP. 

Un Servidor FTP (del Inglés File Transfer Protocol) es comunmente usado para transferir archivos entre ordenadores conectados en una red. El mecanismo básico, así como el conjunto de comandos y respuestas de protocolo, se han definido en el contexto de una arquitectura simplificada. 

En este post se explica cómo esta hecha la librería arduino-FTP y su funcionamiento. 


Requerimientos

Descargar el archivo comprimido de la librería del github:Arduino-FTP Library >>.


Industrial Arduino Controller

M-Duino PLC>>


Librería Arduino FTP

Puede utilizar cualquier cliente para enviar y recibir archivos desde un servidor FTP. En primer lugar, debe incluir la biblioteca y crear un objeto FTP:


#include <FTP.h>
FTP ftp(ftpControl, ftpData);


Tanto ftpControl como ftpData son objetos Client, igual que EthernetClient o otro:


EthernetClient ftpControl;
EthernetClient ftpData;


El servicio FTP es ofrecido por la capa de aplicación del modelo TCP/IP de red al usuario, normalmente se usa el puerto 20 o el 21. Para conectar al Servidor FTP solo tienes que definir una dirección IP, un usuario (user) y una contraseña (password). Opcionalmente puedes establecer el puerto TCP, pero por defecto es el 21. 

ftp.connect(serverIP, user, password);


o en en caso de querer otro TCP port (por ejemplo el 6758):


ftp.connect(serverIP, 6758, user password);


Cuando la conexión esté lista, es posible descargar contenido de archivos del Servidor FTP:


char fileContent[512];
ftp.retrieve(fileName, fileContent, 512);


o cargar archivos al servidor FTP:


const char *fileContent = "This is the new file content";
ftp.store(fileName, fileContent, strlen(fileContent));


Puedes ver ejemplos completos de cargar (store) y descargar  You can see complete examples of store and retrieve files data in the directorio de Ejemplos del repositorio de Github. 


Ejemplo Cargar

// FTP library example
// by Industrial Shields

#include <FTP.h>

#if defined(MDUINO_PLUS)
#include <Ethernet2.h>
#else
#include <Ethernet.h>
#endif

uint8_t mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(10, 10, 10, 6);
IPAddress namesServer(8, 8, 8, 8);
IPAddress gateway(10, 10, 10, 1);
IPAddress netmask(255, 255, 255, 0);

IPAddress server(192, 168, 1, 220);
const char *user = "YOUR-USER";
const char *pass = "YOUR-PASSWORD";
const char *fileName = "YOUR-FILE";

EthernetClient ftpControl;
EthernetClient ftpData;

FTP ftp(ftpControl, ftpData);

////////////////////////////////////////////////////////////////////////////////////////////////////
void setup() {
  Serial.begin(9600UL);

  Ethernet.begin(mac, ip, namesServer, gateway, netmask);
  Serial.print("IP address: ");
  Serial.println(Ethernet.localIP());

  if (!ftp.connect(server, user, pass)) {
    Serial.println("Error connecting to FTP server");
    while (true);
  }

  Serial.println("You have 10 seconds to write something...");
  delay(10000UL);

  // Send the written content to the FTP file
  ftp.store(fileName, Serial);

  Serial.println("The written content is sent to the FTP file");
}

////////////////////////////////////////////////////////////////////////////////////////////////////
void loop() {
  // Nothing to do
}


Ejemplo Descargar

// FTP library example
// by Industrial Shields

#include <FTP.h>

#if defined(MDUINO_PLUS)
#include <Ethernet2.h>
#else
#include <Ethernet.h>
#endif

uint8_t mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(10, 10, 10, 6);
IPAddress namesServer(8, 8, 8, 8);
IPAddress gateway(10, 10, 10, 1);
IPAddress netmask(255, 255, 255, 0);

IPAddress server(192, 168, 1, 220);
const char *user = "YOUR-USER";
const char *pass = "YOUR-PASSWORD";
const char *fileName = "YOUR-FILE";

EthernetClient ftpControl;
EthernetClient ftpData;

FTP ftp(ftpControl, ftpData);

////////////////////////////////////////////////////////////////////////////////////////////////////
void setup() {
  Serial.begin(9600UL);

  Ethernet.begin(mac, ip, namesServer, gateway, netmask);
  Serial.print("IP address: ");
  Serial.println(Ethernet.localIP());

  if (!ftp.connect(server, user, pass)) {
    Serial.println("Error connecting to FTP server");
    while (true);
  }

  // Print FTP file content to Serial
  Serial.println("FTP file content: ");
  size_t len = ftp.retrieve(fileName, Serial);

  Serial.println();
  Serial.print("FTP file size: ");
  Serial.println(len);
}

////////////////////////////////////////////////////////////////////////////////////////////////////
void loop() {
  // Nothing to do
}

Conoce la gama Ethernet

Arduino Mega para soluciones industriales

Ethernet Programmable Logic Controller range


Ethernet Programmable Logic Controller range


Hasta 58 entradas-salidas disponibles.

Múltiples protocolos y otras opciones a tu disposición como:
LoRa - Solución de larga distancia.
WiFi - Wireless option.
GPRS - Si no hay opción de tener un soporte físico.
DALI - Protocolo de iluminación para soluciones específicas.

Gama Ethernet >>


¿Estás buscando tu PLC ideal?


Mira esta comparativa con otros controladores industriales

Comparamos entradas, salidas, comunicaciones y otras características con las de algunas de las marcas relevantes


Comparativa PLCs >>

¿Quieres más información? 

¡Solo llena el formulario! 

¡Quiero saber más!  Por favor, llene el formulario correctamente.