Siemens S7
Conectar PLC Siemens S7 sobre S7comm: rack y slot, áreas de memoria, direccionamiento tipado por byte y bit, y los tipos de dato nativos.
El driver Siemens S7 habla con PLC Siemens S7 sobre 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. Agregue un dispositivo bajo el driver Siemens S7 en el Connector y llene los campos de abajo; el panel muestra solo los campos que usa este protocolo.
La conexión
| Campo | Significado | Valor inicial |
|---|---|---|
| Host o IP | Dirección IP o nombre de host de la CPU (o del módulo CP que la fronte). | vacío |
| Rack / Slot | Los números de rack y de slot de la CPU, tal como están configurados en la disposición de hardware de Siemens. Dos cajas de número en una misma fila: primero el rack, después el slot. | 0 / 0 |
| Intervalo de sondeo (ms) | El periodo de lectura de todo el dispositivo, para los tags que no lo invaliden. | 1,000 |
El puerto TCP es fijo en 102 (ISO-on-TCP), así que no hay campo de puerto. El
encabezado del dispositivo muestra el punto de conexión armado, por ejemplo
s7://192.168.0.2:0:1 (host, rack, slot).
El rack y el slot tienen que coincidir con el hardware: las CPU S7-1200 y S7-1500 contestan en el rack 0, slot 0 o 1; una CPU S7-300 típica está en el rack 0, slot 2; los racks S7-400 varían según la disposición. Un slot equivocado hace fallar la conexión en lugar de leer datos equivocados.
Cada tag puede poner su propio Intervalo de sondeo (ms); un valor de 0 en el tag cae en el intervalo del dispositivo.
El direccionamiento
Un tag de 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 | Valor inicial |
|---|---|---|---|
| Área | El área de memoria que se lee. | 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 | El desplazamiento en bytes dentro del área donde empieza el valor. En las áreas Timer y Counter la caja 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) | La posición del bit dentro del byte inicial. Se muestra solo en los tags booleanos. | de 0 a 7 | 0 |
| Longitud máxima (en blanco = 254) | El 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 corresponden a 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 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 llenar |
|---|---|---|
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 booleano lee y escribe exactamente un bit en el 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 armada conforme usted edita.
Los tipos de dato
El Tipo de dato del tag decide el tipo nativo de S7 que va en el bus. Están disponibles los trece anchos nativos de S7:
| Tipo de dato | Tipo de 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 falta ninguna.
Un tag String lee la disposición estándar de un 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 del STRING en el bloque (en blanco significa el máximo de S7, 254); el driver transfiere la longitud máxima más 2 bytes por lectura. Un tag DateTime corresponde a la estructura DTL de la familia S7-1200/1500 (del año a los nanosegundos); el DATE_AND_TIME antiguo, de 8 bytes, no se ofrece.
Las escrituras
Los tags cuyo Acceso es Lectura y escritura o Solo escritura se pueden escribir. Las escrituras direccionan la misma área, el mismo byte y el mismo bit que las lecturas: una escritura booleana pone su único bit, y todo lo demás escribe los bytes exactos del tipo. Un tag nuevo arranca como Solo lectura.
El descubrimiento
S7comm no tiene descubrimiento por difusión, así que el Connector no muestra botón Descubrir para este driver. Agregue el dispositivo y sus tags a mano.
Bueno 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 cada bloque de datos que usted direccione. Un DB optimizado no tiene desplazamientos de byte que direccionar.
- Las áreas Timer y Counter se direccionan por número, no por desplazamiento de byte: la caja pide el temporizador o el contador mismo (T0, T1, T2 y C0, C1, C2). Cada valor es una palabra de 16 bits, así que empárejelo con Int16; un tipo de dato más ancho o más angosto se rechaza, con el tag nombrado en el diario técnico, y los demás tags del dispositivo siguen leyendo.
- Un PLC inalcanzable no cuesta nada al arrancar: el dispositivo sigue reintentando en segundo plano y sus tags se leen con mala calidad hasta que la conexión llega.
- Un cable jalado 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 solo en cuanto la red regresa. Una dirección que la CPU rechaza no hace eso, así que un tag mal escrito nunca se lleva consigo al resto del dispositivo.