C贸mo conectar el PLC basado en Arduino con la familia de PLCs Siemens S7 equipados a trav茅s de Ethernet
10 diciembre, 2018 por
C贸mo conectar el PLC basado en Arduino con la familia de PLCs Siemens S7 equipados a trav茅s de Ethernet
Alejandro Jabalquinto

Introducci贸n聽

En este post se muestra c贸mo conectar Industrial Shields Arduino based PLC (M-Duino鈥榮con un PLC 漏 Siemens equipado con puerto Ethernet o procesador de comunicaci贸n. Cualquier PLC es compatible excepto para la antigua familia S5漏. Para ello tenemos que usar聽Settimino.聽Settimino聽es una biblioteca Ethernet de c贸digo abierto para interconectar Arduino con Siemens漏 S7 PLC. Tambi茅n se admiten los modelos 1200/1500 LOGO 0BA7 y S7200 de la CPU. Descargar siguiendo este enlace聽Settimino.

Requisitos

Ethernet PLC:

Productos de la familia MDuino
Biblioteca Ethernet2 :Biblioteca Arduino Ethernet2.h
Siemens漏 PLC con conexi贸n Ethernet聽


Metodolog铆a

Una vez que tengamos todos los requisitos, podemos proceder a explicar c贸mo funciona. La clase principal es s7Client objeto que es capaz de conectar y transferir datos entre PLC basado en Arduino y Siements漏 PLC.El chip Ethernet W5100 soporta 4 clientes y utiliza un buffer de datos para todo el cliente porque s贸lo uno se puede conectar al mismo tiempo. Este b煤fer de datos puede contener solo una PDU (consulte la comunicaci贸n de 漏 Siemens para saber lo que eso significa).

La variable PDU es global, esto significa que es visible desde el croquis. Vea un ejemplo (consulte la sintaxis de S7Client para obtener una mejor comprensi贸n).

Esta es la PDU definida en Settimino.h:聽

typedef struct {
   byte H [ Size_WR ];                      Header PDU //
   byte Data [ Shift + MaxPduSize-Size_WR ];  // Data PDU
TPDU};
TPDU PDU; // Declaration

La matriz H contiene el encabezado del protocolo y la matriz de datos contiene la carga 煤til.

Transferencia big data:

byte mybuffer [1024]; // 1K matrix
Cliente.ReadArea(S7AreaDB , 24, 0, 1024, y mybuffer);

Estamos diciendo que el cliente puede acceder a la base de datos 24, para leer de 0 a 1024 bytes y controlar en mybuffer.聽

Transferencia small data:

Cliente.ReadArea(S7AreaDB, 24, 0, 64, NULL);
Serial.println聽(PDU.DATA [0]);聽// Printing the first byte
Serial.println聽(PDU.DATA [1]);聽// Printing the second byte and so on ...

Estamos diciendo que el cliente puede acceder a la base de datos 24, leer 64 bytes de 0 a 64 y manejar en el b煤fer interno.

Para escribir tenemos que hacerlo de la misma manera poniendo datos a PDU. DATA[] y luego llame a WriteArea().

S7Helper

Los datos de la 漏 Siemens son Big-endian y los datos de Arduino son Little-endian.S7Helper es un objeto que permite extraer valores de derecha a izquierda con un formato intermedio de bytes de memoria. The name of the request is S7.

Supongamos que queremos cargar esta base de datos:

Direcci贸nNombreTipo聽Valor inicialComentario
0.0Struct
+0.0PRESSUREREAL0.00000e+000TRANSDUCER TP1
+4.0ENCODERDWORDDWs16s0MOTOR ENCODER
+8.0COMP_NUMBERINT0COMPONENT NUMBER
=10.0END_STRUCT

flotar pressure;
unsigned long Encoder;
int16_t components;
// getting 10 bytes from 0
Client.ReadArea(S7AreaDB , 100, 0, 10, y mybuffer);

Mi b煤fer contendr谩 un trastorno serial de bytes.

Para acceder a esto podemos escribir:

Pressure = S7.FloatAt (y mybuffer , 0);
Encoder = S7.DWordAt (y mybuffer , 4);
Componeny = S7.IntegerAt (y mybuffer , 8);

Memoria de modelos

Para optimizar a煤n m谩s la impresi贸n, los modelos de memoria de 谩rbol est谩n disponibles: peque帽os, normales y extendidos.聽

A pesar de que el modelo extendido funciona perfectamente en Arduino Leonardo y Arduino Mega, es posible que desee reducir a煤n m谩s el uso de la memoria.Por ejemplo, Settimino Client puede controlar el modo Stop o el modo Run del PL, pero si solo necesita datos de lectura/escritura, no necesita esta caracter铆stica.聽

Para establecer el modelo de memoria que simplemente necesita modificar la directiva al principio de la escritura Settimino.h:

#define _SMALL
or
#define _NORMAL
or
#define _EXTENDED

El modelo peque帽o tiene el grupo m铆nimo de funciones para conectarse a un PLC y leer/escribir datos.

El modo normal tiene el S7Helper.

Por 煤ltimo, el modelo extendido tambi茅n tiene las funciones extendidas restantes.聽

De forma predeterminada, Settimino se libera como Extendido.聽

Configuraci贸n S7 1200:聽

  • En las propiedades de base de datos, debe seleccionar "Acceso optimizado para el bloque" en la pesta帽a de atributos.聽
  • En el 谩rea de protecci贸n de las propiedades del PLC s贸lo debe seleccionar "Acceso completo (sin protecci贸n)" y "Permitir el acceso a la comunicaci贸n PUT/GET desde PLC, HMI, OPC..."


C贸mo conectar el PLC basado en Arduino con la familia de PLCs Siemens S7 equipados a trav茅s de Ethernet
Alejandro Jabalquinto
10 diciembre, 2018
Compartir
Archivar

驴Buscas 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.


Comparaci贸n PLC industrial >>>

驴Quieres m谩s informaci贸n?

隆Rellena el formulario!

隆Cu茅ntame m谩s!