Siemens S7

Conectar autómatas Siemens S7 por S7comm: bastidor y ranura, áreas de memoria, direccionamiento tipado por byte y bit, y los tipos de dato nativos.

Ver como Markdown

El controlador Siemens S7 habla con autómatas Siemens S7 por S7comm, el protocolo clásico de Step 7 transportado sobre ISO-on-TCP. Usa direccionamiento absoluto (área de memoria, número de bloque de datos, byte y bit), así que funciona sin ninguna exportación de símbolos del proyecto de ingeniería. Añada un dispositivo bajo el controlador Siemens S7 en el Connector y rellene los campos de abajo; el panel muestra solo los campos que usa este protocolo.

Conexión

Campo Significado Por defecto
Host o IP Dirección IP o nombre de host de la CPU (o del módulo CP que la antecede). vacío
Bastidor / Ranura Los números de bastidor y de ranura de la CPU, tal como están configurados en la disposición de hardware de Siemens. Dos casillas numéricas en una misma fila: primero el bastidor, después la ranura. 0 / 0
Intervalo de sondeo (ms) Periodo de lectura para todo el dispositivo, para los tags que no lo sustituyen. 1.000

El puerto TCP está fijado en 102 (ISO-on-TCP), así que no hay campo de puerto. La cabecera del dispositivo muestra el punto de conexión ya compuesto, por ejemplo s7://192.168.0.2:0:1 (host, bastidor, ranura).

El bastidor y la ranura tienen que coincidir con el hardware: las CPU S7-1200 y S7-1500 responden en el bastidor 0, ranura 0 o 1; una CPU S7-300 típica está en el bastidor 0, ranura 2; los bastidores S7-400 varían con la disposición. Una ranura equivocada hace fallar la conexión, en lugar de leer datos equivocados.

Cada tag puede fijar su propio Intervalo de sondeo (ms); un valor de 0 en el tag recae en el intervalo del dispositivo.

Direccionamiento

Un tag S7 se direcciona con campos tipados, no con una cadena de texto libre. El panel los muestra en la tarjeta Origen del tag:

Campo Significado Valores aceptados Por defecto
Área El área de memoria que se va a leer. DataBlock, Merker, ProcessInput, ProcessOutput, Timer, Counter DataBlock
Número de DB Qué bloque de datos, mostrado solo cuando el Área es DataBlock. 0 en adelante 1
Byte inicial Desplazamiento en bytes dentro del área donde empieza el valor. En las áreas Timer y Counter la casilla se rotula Número de temporizador o Número de contador y pide el número del temporizador o del contador en su lugar. 0 en adelante 0
Bit (0 a 7) Posición del bit dentro del byte inicial. Se muestra solo en los tags Boolean. 0 a 7 0
Longitud máxima (en blanco = 254) Máximo declarado de un STRING de S7. Se muestra solo en los tags String fuera de las áreas Timer y Counter. 1 en adelante, o en blanco en blanco

Las áreas se corresponden con la notación habitual de Siemens: Merker es la memoria de marcas (M), ProcessInput las entradas de la imagen de proceso (I/E), ProcessOutput las salidas de la imagen de proceso (Q/A), y Timer/Counter las áreas de temporizadores y de contadores de S7. Los temporizadores y los contadores se direccionan por número, no por byte: Timer con el número 5 lee T5, y Counter con el número 3 lee C3. Traduciendo las direcciones absolutas clásicas:

Dirección clásica Tipo de dato Campos que hay que rellenar
DB5.DBD12 con un REAL Float Área DataBlock, Número de DB 5, Byte inicial 12
DB1.DBX3.4 Boolean Área DataBlock, Número de DB 1, Byte inicial 3, Bit 4
DB2.DBW20 con un INT Int16 Área DataBlock, Número de DB 2, Byte inicial 20
MW10 Int16 Área Merker, Byte inicial 10
M10.3 Boolean Área Merker, Byte inicial 10, Bit 3
IB2 Byte Área ProcessInput, Byte inicial 2
Q4.1 Boolean Área ProcessOutput, Byte inicial 4, Bit 1
T5 Int16 Área Timer, Número de temporizador 5
C3 Int16 Área Counter, Número de contador 3

Un tag Boolean lee y escribe exactamente un bit del bus; nunca reescribe el byte que lo rodea. Todos los demás tipos se direccionan por byte en el byte inicial, con el ancho exacto de su tipo de dato. La línea de solo lectura Dirección de origen (bus) de la tarjeta Origen muestra la dirección ya compuesta mientras se edita.

Tipos de dato

El Tipo de dato del tag decide el tipo nativo de S7 que viaja por el bus. Están disponibles los trece anchos nativos de S7:

Tipo de dato Tipo S7 Tamaño en el bus
Boolean BOOL 1 bit
SByte SINT 1 byte
Byte USINT 1 byte
Int16 INT 2 bytes
UInt16 UINT 2 bytes
Int32 DINT 4 bytes
UInt32 UDINT 4 bytes
Int64 LINT 8 bytes
UInt64 ULINT 8 bytes
Float REAL 4 bytes
Double LREAL 8 bytes
String STRING longitud máxima + 2 bytes
DateTime DTL 12 bytes

Los valores de varios bytes usan automáticamente el orden de bytes big-endian nativo de S7; no hay opción de orden de bytes porque no hace ninguna falta.

Un tag String lee la disposición estándar del STRING de S7: un byte con el máximo declarado, un byte con la longitud actual, y luego los caracteres ASCII. La Longitud máxima tiene que coincidir con la declaración STRING del bloque (en blanco significa el máximo de S7, 254); el controlador transfiere la longitud máxima más 2 bytes en cada lectura. Un tag DateTime se corresponde con la estructura DTL de la familia S7-1200/1500 (del año a los nanosegundos); el antiguo DATE_AND_TIME de 8 bytes no se ofrece.

Escrituras

Se pueden escribir los tags cuyo Acceso es Lectura y escritura o Solo escritura. Las escrituras direccionan la misma área, el mismo byte y el mismo bit que las lecturas: una escritura Boolean pone su único bit, y todo lo demás escribe los bytes exactos del tipo. Un tag nuevo nace como Solo lectura.

Descubrimiento

S7comm no tiene descubrimiento por difusión, así que el Connector no muestra ningún botón Descubrir para este controlador. Añada el dispositivo y sus tags a mano.

Conviene saber

  • En las CPU S7-1200/1500, el direccionamiento absoluto de S7comm exige dos ajustes en el proyecto de Siemens: Permitir el acceso con comunicación PUT/GET en la CPU, y el acceso optimizado a bloques desactivado en todo bloque de datos que se direccione. Un DB optimizado no tiene desplazamientos en bytes que direccionar.
  • Las áreas Timer y Counter se direccionan por número, no por desplazamiento en bytes: la casilla pide el temporizador o el contador en sí (T0, T1, T2 y C0, C1, C2). Cada valor es una palabra de 16 bits, así que combínelo con Int16; un tipo de dato más ancho o más estrecho se rechaza nombrando el tag en el diario técnico, y los demás tags del dispositivo siguen leyendo.
  • Un autómata inalcanzable no cuesta nada en el arranque: el dispositivo sigue reintentando en segundo plano y sus tags se leen con mala calidad hasta que la conexión aterriza.
  • Un cable tirado después de que el dispositivo esté en línea se nota en la siguiente lectura: el dispositivo se va sin conexión, sus tags pasan a mala calidad, y se reconecta por su cuenta en cuanto vuelve la red. Una dirección que la CPU rechaza no hace eso, así que un tag mal escrito nunca se lleva por delante al resto del dispositivo.