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.

Ver como Markdown

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.