Saltar al contenido principal

S7 (Siemens)

El protocolo S7 permite la comunicación directa y en tiempo real con la familia de PLCs Simatic de Siemens. Al utilizar un driver nativo, ofrece una latencia significativamente menor que otras alternativas como OPC UA, lo que lo hace ideal para aplicaciones que requieren una alta velocidad de respuesta.

Parámetros de Conexión

Para configurar la comunicación con el PLC Siemens, define los siguientes campos:

  • Nombre: Identificador único del protocolo.
  • Dirección IP: La dirección IP del PLC en la red.
  • Rack: Número de rack donde se ubica la CPU (habitualmente 0).
  • Slot: Número de slot donde se ubica la CPU (habitualmente 1 para S7-1200/1500 y 2 para S7-300).

Configuración de Variables

El driver S7 accede directamente a las áreas de memoria del PLC. Para que la comunicación funcione correctamente, es imprescindible que los bloques de datos (DBs) a los que se acceda tengan el acceso optimizado desactivado en TIA Portal.

  • Nombre: Nombre identificativo de la variable en InDataX.
  • Tipo: Tipo de dato (Real, Entero, Counter, etc.).
  • Audit trail: Registro de auditoría ante cambios de valor.
  • Registrar valor: Inclusión en los históricos de la Thing.
  • Dirección PLC: La dirección exacta de memoria del dato.

Sintaxis de Direccionamiento

Para que InDataX pueda leer o escribir en el PLC, la dirección debe seguir un formato específico que combina el área de memoria, el tipo de dato y la posición.

Formato General

[Tipo de bloque][Número de bloque],[Tipo de dato][Byte de inicio].[Número de bit]

DBs no optimizados

El acceso optimizado de Siemens impide el direccionamiento directo por offset. Asegúrate de que tus DBs sean "estándar" (no optimizados) y que hayas cargado la configuración en el PLC antes de intentar leer desde InDataX.

Componentes de la Dirección

ComponenteDescripciónValores posibles
Tipo de bloqueÁrea de memoria del PLCDB (Data Block), CT (Contador), MK (Marcas/Merker), PA (Salidas periféricas), PE (Entradas periféricas), TM (Temporizador)
Número de bloqueIdentificador del bloqueNúmero del DB o área (p.ej. 1, 01)
Tipo de datoFormato del valorBI (Bit), BY (Byte), IN (Integer 16b), DI (Double Integer 32b), RE (Real/Float 32b)
Byte de inicioOffset de memoriaPosición del primer byte (p.ej. 0, 4, 10)
Número de bitSolo para tipo BIIndice del bit dentro del byte (0 al 7)

Ejemplos comunes

  • DB1,RE0: Lee un valor Real del DB 1 empezando en el Byte 0.
  • DB10,DI4: Lee un Double Integer del DB 10 empezando en el Byte 4.
  • DB5,BI10.2: Lee el Bit 2 del Byte 10 dentro del DB 5.
  • MK0,BY5: Lee el Byte 5 del área de Marcas.

Resolución de Problemas y Optimización

Para garantizar un rendimiento óptimo en la comunicación con PLCs Siemens, es importante tener en cuenta los siguientes escenarios:

Direcciones Inexistentes o Incorrectas

InDataX optimiza la lectura agrupando las variables por bloques de memoria (mismo tipo y número de bloque). Esto reduce el número de peticiones al PLC. Sin embargo, si una sola variable tiene una dirección incorrecta o que no existe en el PLC, la lectura de todo el grupo de variables al que pertenece fallará.

  • Solución: Verifica que todos los offsets y números de DB existan físicamente en el PLC y que el DB no sea más pequeño que el offset solicitado.

Acumulación de Errores de Conexión

Si tienes configurados múltiples protocolos que sufren errores continuos de conexión o de lectura, los reintentos constantes pueden degradar el rendimiento general del sistema.

  • Solución: Desactiva temporalmente los protocolos que no estén en uso o cuyos dispositivos estén fuera de línea para liberar recursos de procesamiento.

Límites de Rendimiento y Grandes Volúmenes

Aunque InDataX es altamente eficiente, gestionar más de 10,000 variables en un solo protocolo S7 puede causar latencia y problemas de rendimiento.

  • Solución:
    1. División por protocolos: Divide la carga en varios protocolos S7 (lo que abrirá varias conexiones en paralelo al PLC).
    2. Arquitectura distribuida: Considera dividir la carga entre diferentes nodos o sistemas InDataX conectados entre sí para repartir el procesamiento.