Conector Siemens S7
Descripción General
Sección titulada «Descripción General»El conector Siemens S7 permite la comunicación directa con PLCs de la serie S7 de Siemens sin requerir OPC UA u otro middleware.
Tipos de Conector:
S7Reader- Leer datos de PLCs S7S7Writer- Escribir datos en PLCs S7
PLCs Soportados:
- S7-300
- S7-400
- S7-1200
- S7-1500
Configuración Básica
Sección titulada «Configuración Básica»Lector S7
Sección titulada «Lector S7»{ "type": "S7Reader", "config": { "endpoint": "192.168.0.1:102", "pollingRate": 1000, "rack": 0, "slot": 2 }, "variables": [ { "key": "temperature", "dataType": "Real", "memoryArea": "DB", "blockNumber": 1, "startIdx": 0, "size": 4, "bitOrder": "BigEndian" }, { "key": "counter", "dataType": "Dint", "memoryArea": "DB", "blockNumber": 1, "startIdx": 4, "size": 4, "bitOrder": "BigEndian" } ]}Escritor S7
Sección titulada «Escritor S7»{ "type": "S7Writer", "config": { "endpoint": "192.168.0.1:102", "rack": 0, "slot": 2 }, "variables": [ { "key": "setpoint", "dataType": "Real", "memoryArea": "DB", "blockNumber": 1, "startIdx": 100, "size": 4, "bitOrder": "BigEndian" } ]}Parámetros de Configuración
Sección titulada «Parámetros de Configuración»Endpoint
Sección titulada «Endpoint»Dirección IP del PLC y puerto (el puerto por defecto es 102):
{ "endpoint": "192.168.0.1:102"}Rack y Slot
Sección titulada «Rack y Slot»Ubicación física del módulo CPU:
{ "rack": 0, "slot": 2}Configuraciones comunes:
- S7-300: rack=0, slot=2
- S7-400: rack=0, slot=2 o 3
- S7-1200: rack=0, slot=1
- S7-1500: rack=0, slot=1
Tasa de Sondeo
Sección titulada «Tasa de Sondeo»Para lectores, intervalo en milisegundos:
{ "pollingRate": 1000}Áreas de Memoria
Sección titulada «Áreas de Memoria»DB (Bloques de Datos)
Sección titulada «DB (Bloques de Datos)»Área más común para datos estructurados:
{ "key": "temperature", "dataType": "Real", "memoryArea": "DB", "blockNumber": 1, "startIdx": 0, "size": 4}Requiere blockNumber para especificar qué DB.
M (Merkers/Flags)
Sección titulada «M (Merkers/Flags)»Memoria de propósito general:
{ "key": "flag_value", "dataType": "Word", "memoryArea": "M", "startIdx": 0, "size": 2}I (Inputs)
Sección titulada «I (Inputs)»Señales de entrada físicas (solo lectura):
{ "key": "sensor_input", "dataType": "Bool", "memoryArea": "I", "startIdx": 0, "size": 1}Q (Outputs)
Sección titulada «Q (Outputs)»Señales de salida físicas (lectura/escritura):
{ "key": "motor_output", "dataType": "Bool", "memoryArea": "Q", "startIdx": 0, "size": 1}C (Counters)
Sección titulada «C (Counters)»Valores de contadores:
{ "key": "production_count", "dataType": "Word", "memoryArea": "C", "startIdx": 0, "size": 2}Tipos de Datos
Sección titulada «Tipos de Datos»Bool (1 bit)
Sección titulada «Bool (1 bit)»Valor booleano:
{ "dataType": "Bool", "size": 1}Byte (8 bit)
Sección titulada «Byte (8 bit)»Entero sin signo de 8 bits (0-255):
{ "dataType": "Byte", "size": 1}Word (16 bit)
Sección titulada «Word (16 bit)»Entero sin signo de 16 bits (0-65535):
{ "dataType": "Word", "size": 2}Dword (32 bit)
Sección titulada «Dword (32 bit)»Entero sin signo de 32 bits:
{ "dataType": "Dword", "size": 4}Int (16 bit con signo)
Sección titulada «Int (16 bit con signo)»Entero con signo de 16 bits (-32768 a 32767):
{ "dataType": "Int", "size": 2}Dint (32 bit con signo)
Sección titulada «Dint (32 bit con signo)»Entero con signo de 32 bits:
{ "dataType": "Dint", "size": 4}Real (32 bit float)
Sección titulada «Real (32 bit float)»Punto flotante de 32 bits:
{ "dataType": "Real", "size": 4}Char (8 bit ASCII)
Sección titulada «Char (8 bit ASCII)»Carácter ASCII:
{ "dataType": "Char", "size": 1}Orden de Bytes
Sección titulada «Orden de Bytes»Los PLCs S7 usan orden de bytes Big Endian por defecto:
{ "bitOrder": "BigEndian"}Estructura de Variable
Sección titulada «Estructura de Variable»Definición completa de variable:
{ "key": "temperature", // Clave de carga de Meddle "dataType": "Real", // Tipo de datos S7 "memoryArea": "DB", // Área de memoria "blockNumber": 1, // Número de DB (para área DB) "startIdx": 0, // Desplazamiento de byte inicial "size": 4, // Tamaño en bytes "bitOrder": "BigEndian" // Orden de bytes}Casos de Uso Comunes
Sección titulada «Casos de Uso Comunes»1. Monitoreo de Producción
Sección titulada «1. Monitoreo de Producción»{ "type": "S7Reader", "config": { "endpoint": "192.168.1.10:102", "pollingRate": 1000, "rack": 0, "slot": 2 }, "variables": [ { "key": "machine_status", "dataType": "Word", "memoryArea": "DB", "blockNumber": 10, "startIdx": 0, "size": 2, "bitOrder": "BigEndian" }, { "key": "production_count", "dataType": "Dint", "memoryArea": "DB", "blockNumber": 10, "startIdx": 2, "size": 4, "bitOrder": "BigEndian" }, { "key": "cycle_time", "dataType": "Real", "memoryArea": "DB", "blockNumber": 10, "startIdx": 6, "size": 4, "bitOrder": "BigEndian" } ]}2. Control de Proceso
Sección titulada «2. Control de Proceso»{ "type": "S7Writer", "config": { "endpoint": "192.168.1.10:102", "rack": 0, "slot": 2 }, "variables": [ { "key": "temperature_setpoint", "dataType": "Real", "memoryArea": "DB", "blockNumber": 20, "startIdx": 0, "size": 4, "bitOrder": "BigEndian" }, { "key": "enable_process", "dataType": "Bool", "memoryArea": "M", "startIdx": 0, "size": 1, "bitOrder": "BigEndian" } ]}Solución de Problemas
Sección titulada «Solución de Problemas»Conexión Fallida
Sección titulada «Conexión Fallida»Soluciones:
- Verifica la dirección IP del PLC y el puerto
- Verifica la conectividad de red:
ping [ip-plc] - Asegúrate de que el PLC permita conexiones externas (verifica la configuración del PLC)
- Verifica que los números de rack y slot coincidan con la configuración de tu PLC
- Verifica las reglas del firewall (puerto 102)
Acceso Denegado
Sección titulada «Acceso Denegado»Soluciones:
- Verifica la configuración de protección del PLC
- Verifica que la comunicación PUT/GET esté habilitada en el PLC
- Asegúrate de que no haya protección por contraseña en el PLC
- Verifica si el PLC está en modo RUN (algunas operaciones requieren modo STOP)
Valores de Datos Incorrectos
Sección titulada «Valores de Datos Incorrectos»Soluciones:
- Verifica que
startIdx(desplazamiento de byte) sea correcto - Verifica que
sizecoincida con el tipo de datos - Confirma
blockNumberpara áreas DB - Verifica
bitOrder(debería ser BigEndian para S7) - Usa TIA Portal o STEP 7 para verificar el diseño de memoria
Mejores Prácticas
Sección titulada «Mejores Prácticas»- Usa Bloques de Datos: Organiza datos en DBs para mejor estructura
- Documenta el Diseño de Memoria: Mantén un mapa de tu estructura DB
- Agrupa Direcciones Consecutivas: Más eficiente que lecturas dispersas
- Prueba Primero en Modo STOP: Más seguro para pruebas iniciales
- Usa Tipos de Datos Apropiados: Coincide exactamente con los tipos de datos del programa del PLC
Limitaciones
Sección titulada «Limitaciones»Conectores Relacionados
Sección titulada «Conectores Relacionados»- OPC UA - Alternativa con soporte más amplio
- Modbus - Protocolo industrial alternativo
- Filter - Filtrar datos S7
- InfluxDB Writer - Almacenar datos S7