驴C贸mo enviar la informaci贸n de una SD a PLC Arduino a trav茅s de un FTP?

Recopilaci贸n de datos de un controlador industrial Arduino
23 de octubre de 2019 por
驴C贸mo enviar la informaci贸n de una SD a PLC Arduino a trav茅s de un FTP?
Boot & Work Corp. S.L., David Martin

Introducci贸n

En este post vamos a聽enviar la informaci贸n guardada en una SD聽de un PLC industrial a un Servidor FTP.

Un Servidor FTP聽es communmente usado para聽transferir archivos entre los sistemas inform谩ticos conectados por una red de comunicaci贸n. El mecanismo b谩sico, as铆 como el conjunto de comandos de protocolo y las respuestas se han definido en el contexto de una arquitectura simplificada.聽

En este ejemplo, vamos a guardar informaci贸n sobre nuestras entradas en la tarjeta SD de nuestro Arduino industrial, y vamos a enviar informaci贸n a un servidor FTP una vez por minuto.

Lecturas previas

Recomendamos que te leas los siguientes blogs con el fin de que puedas entender el programa de este blog. Hemos utilizado los siguientes posts para hacer este ejemplo:

Requisitos

Adem谩s debes configurar el sistema RTC聽para ser capaz de saber la fecha en la que se guard贸 la informaci贸n. Te sugerimos que leas el siguiente art铆culo para configurar el sistema RTC antes de continuar con el ejemplo:

Ejemplo de c贸digo

/*
聽* This example program saves the analog value of the input I0.12 into the SD card every second
聽* Once per minute, send the information through FTP connection to the server and start
聽* again the process
聽*/

// Library includes #include <Filter.h> #include <SD.h> #include <FTP.h> #include <RTC.h> #if defined(MDUINO_PLUS) #include <Ethernet2.h> #else #include <Ethernet.h> #endif // Set Ethernet properties of our PLC uint8_t mac[] = { 0xDE, 0xAD, 0x4E, 0x55, 0xFE, 0xED }; IPAddress ip(192, 168, 1, 2); IPAddress netmask(255, 255, 255, 0); IPAddress server(192, 168, 1, 1); // Define the variables for FTP management EthernetClient ftpControl; EthernetClient ftpData; FTP ftp(ftpControl, ftpData); // Set the user and password of FTP server const char *user = "anonymous"; const char *pass = "industrialShields"; const char *fileName = "FILE_NAME"; // Variable to save the hour and second int savedHour; int savedSecond; // Variables to manage the SD card Sd2Card card; SdVolume volume; // Variable for the analog filter AnalogFilter<5, 2> aFilter; // Setup function void setup() { // Set the speed of the serial port Serial.begin(9600UL); // Configure the ethernet protocol in our PLC Ethernet.begin(mac, ip, netmask); // Try to connect to the ftp server if (!ftp.connect(server, user, pass)) { // Connection was wrong Serial.println("Unable to connect to the FTP server"); while (true) ; } // Check and save the RTC hour if (!RTC.read()) { // RTC system detected an error Serial.println("Error detected in the RTC system"); while(true) ; } else { // RTC system is OK. Get the hour savedHour = RTC.getMinute(); savedSecond = RTC.getSecond(); } // Init the SD Card if (!SD.begin(53)) { Serial.println("Card failed, or not present"); while(true) ; } } // Loop function void loop() { // Capture the value of the analog input int input = analogRead(I0_12); int filtered = aFilter.update(input); // Check if the RTC detected a new hour if (RTC.read()) { // Do this process each second if (savedSecond != RTC.getSecond()) { savedSecond = RTC.getSecond(); logToSd(filtered); Serial.println(analogRead(filtered)); } // Do this process each hour if (savedHour != RTC.getMinute()) { savedHour = RTC.getMinute(); sendToFTP(); SD.remove("datalog.txt"); Serial.println("Saved completed"); } } else { // RTC system detected an error while (true) ; } } // Function to save information to SD void logToSd(int value) { File dataFile = SD.open("datalog.txt", FILE_WRITE); if (dataFile) { Serial.println("Saving to SD"); dataFile.println(value); dataFile.close(); } else { Serial.println("Error opening datalog.txt"); while (true) ; } } // Function to send the SD information through FTP void sendToFTP(void) { // Open the SD file File dataFile = SD.open("datalog.txt"); // Check if the file was succesfully open if (dataFile) { Serial.println("Sending trough FTP connection"); ftp.store("datalog.txt", dataFile); dataFile.close(); } else { Serial.println("Error opening datalog.txt"); while (true) ; } }

Search in our Blog

驴C贸mo enviar la informaci贸n de una SD a PLC Arduino a trav茅s de un FTP?
Boot & Work Corp. S.L., David Martin 23 de octubre de 2019
Compartir
Archivar

驴Est谩s buscando tu Controlador L贸gico Programable ideal?

Echa un vistazo a esta comparativa de producto de varios controladores industriales basados en Arduino.

Comparamos entradas, salidas, comunicaciones y otras especificaciones con las de los equipos de otras marcas destacadas.


Industrial PLC comparison >>>