Siemens S7
Conecte CLPs Siemens S7 por S7comm: rack e slot, áreas de memória, endereçamento tipado por byte e bit, e os tipos de dado nativos.
O driver Siemens S7 conversa com CLPs Siemens S7 por S7comm, o protocolo clássico do Step 7 transportado sobre ISO-on-TCP. Ele usa endereçamento absoluto (área de memória, número do bloco de dados, byte e bit), então funciona sem nenhuma exportação de símbolos do projeto de engenharia. Adicione um dispositivo sob o driver Siemens S7 no Connector e preencha os campos abaixo; o painel mostra só os campos que este protocolo usa.
Conexão
| Campo | Significado | Padrão |
|---|---|---|
| Host | Endereço IP ou nome de host da CPU (ou do módulo CP que fica na frente dela). | vazio |
| Rack / Slot | Os números de rack e slot da CPU, como configurados no layout de hardware da Siemens. Duas caixas numéricas numa linha: rack primeiro, slot depois. | 0 / 0 |
| Intervalo de leitura (ms) | Período de leitura de todo o dispositivo, para as tags que não o sobrepõem. | 1.000 |
A porta TCP é fixa em 102 (ISO-on-TCP), então não há campo de porta. O
cabeçalho do dispositivo mostra o endpoint montado, por exemplo s7://192.168.0.2:0:1
(host, rack, slot).
Rack e slot precisam bater com o hardware: CPUs S7-1200 e S7-1500 respondem no rack 0, slot 0 ou 1; uma CPU S7-300 típica fica no rack 0, slot 2; os racks do S7-400 variam com o layout. Um slot errado faz a conexão falhar, em vez de ler dados errados.
Cada tag pode definir o próprio Intervalo de leitura (ms); um valor 0 na tag recai no intervalo do dispositivo.
Endereçamento
Uma tag S7 é endereçada por campos tipados, não por uma cadeia de texto livre. O painel os mostra no cartão Origem da tag:
| Campo | Significado | Valores aceitos | Padrão |
|---|---|---|---|
| Área | A área de memória a ler. | DataBlock, Merker, ProcessInput, ProcessOutput, Timer, Counter |
DataBlock |
| Número do DB | Qual bloco de dados, mostrado só quando a Área é DataBlock. |
0 ou mais | 1 |
| Byte inicial | Deslocamento de byte dentro da área em que o valor começa. Nas áreas Timer e Counter a caixa é rotulada Número do timer ou Número do counter e pede o número do timer ou do contador em vez do byte. |
0 ou mais | 0 |
| Bit (0–7) | Posição do bit dentro do byte inicial. Mostrado só em tags booleanas. | 0–7 | 0 |
| Comprimento máximo (em branco = 254) | Máximo declarado de um STRING do S7. Mostrado só em tags String fora das áreas Timer e Counter. |
1 ou mais, em branco | em branco |
As áreas correspondem à notação Siemens de sempre: Merker é a memória de marcadores (M),
ProcessInput são as entradas da imagem de processo (I/E), ProcessOutput são as
saídas da imagem de processo (Q/A), e Timer/Counter são as áreas de timer e contador
do S7. Timers e contadores são endereçados por número, não por byte: Timer com
o número 5 lê T5, e Counter com o número 3 lê C3. Traduzindo
endereços absolutos clássicos:
| Endereço clássico | Tipo de dado | Campos a preencher |
|---|---|---|
DB5.DBD12 guardando um REAL |
Float | Área DataBlock, Número do DB 5, Byte inicial 12 |
DB1.DBX3.4 |
Boolean | Área DataBlock, Número do DB 1, Byte inicial 3, Bit 4 |
DB2.DBW20 guardando um INT |
Int16 | Área DataBlock, Número do 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 do timer 5 |
C3 |
Int16 | Área Counter, Número do counter 3 |
Uma tag booleana lê e escreve exatamente um bit no barramento; ela nunca reescreve o byte ao redor. Todo outro tipo é endereçado por byte, no byte inicial, com a largura exata do seu tipo de dado. A linha somente leitura Endereço de origem (barramento) do cartão Origem mostra o endereço montado enquanto você edita.
Tipos de dado
O Tipo de dado da tag decide o tipo nativo do S7 no barramento. As treze larguras nativas do S7 estão disponíveis:
| Tipo de dado | Tipo S7 | Tamanho no barramento |
|---|---|---|
| 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 | comprimento máximo + 2 bytes |
| DateTime | DTL | 12 bytes |
Valores de vários bytes usam automaticamente a ordem big-endian nativa do S7; não existe opção de ordem de bytes porque nenhuma é necessária.
Uma tag String lê o layout STRING padrão do S7: um byte com o máximo declarado, um byte com o comprimento atual e então caracteres ASCII. O Comprimento máximo precisa bater com a declaração do STRING no bloco (em branco significa o máximo do S7, de 254); o driver transfere comprimento máximo + 2 bytes por leitura. Uma tag DateTime corresponde à estrutura DTL da família S7-1200/1500 (do ano até os nanossegundos); o DATE_AND_TIME antigo, de 8 bytes, não é oferecido.
Escritas
Tags cujo Acesso é Leitura e escrita ou Somente escrita podem ser escritas. As escritas endereçam a mesma área, o mesmo byte e o mesmo bit das leituras: uma escrita booleana liga o bit dela sozinho, e todo o resto escreve os bytes exatos do tipo. Uma tag nova nasce como Somente leitura.
Descoberta
O S7comm não tem descoberta por difusão, então o Connector não mostra botão Descobrir neste driver. Adicione o dispositivo e as tags dele à mão.
Bom saber
- Em CPUs S7-1200/1500, o endereçamento absoluto do S7comm exige duas definições no projeto Siemens: Permitir acesso com comunicação PUT/GET na CPU, e acesso otimizado ao bloco desligado em todo bloco de dados que você endereçar. Um DB otimizado não tem deslocamentos de byte a endereçar.
- As áreas Timer e Counter são endereçadas por número, não por deslocamento de byte: a caixa pede o próprio timer ou contador (T0, T1, T2 e C0, C1, C2). Cada valor é uma palavra de 16 bits, então combine-o com Int16; um tipo de dado mais largo ou mais estreito é recusado, com a tag nomeada no diário, e as outras tags do dispositivo seguem lendo.
- Um CLP inalcançável não custa nada na inicialização: o dispositivo segue tentando em segundo plano e as tags dele leem qualidade ruim até a conexão acontecer.
- Um cabo puxado depois de o dispositivo estar online é percebido na próxima leitura: o dispositivo fica offline, as tags dele viram qualidade ruim, e ele reconecta sozinho assim que a rede volta. Um endereço que a CPU recusa não faz isso, então uma tag digitada errada nunca derruba o resto do dispositivo junto.