Conteúdo

Introdução

Familia de drivers Siemens S7. Baseado na biblioteca LibNodave de Thomas Hergenhahn (thomas.hergenhahn@web.de). Este driver não usa Libnodave, ele é uma reescrita da mesma.

 

Tags suportados pelo driver TISOTCPDriver

O Driver TISOTCPDriver suporta as seguintes classes de tag:

  • TPLCTagNumberplctagnumber
  • TPLCBlockplcblock
  • TPLCStructplcstruct
  • TPLCStringplcstring

 

 

Tipo de conexão do driver tisotcpdriver

O driver TISOTCPDriver utiliza um socket TCP/IPv4 para estabelecer a conexão lógica com o CLP. Este fato o torna num driver 1 para 1, ou seja, para cada CLP adicionado ao projeto, será necessário inserir um novo componente de porta de comunicação e um novo componente de protocolo para representá-lo dentro da sua aplicação.  O mesmo acontece com outros protocolos que operam sobre TCP/IP, tal como o Modbus TCP.

 

Sequencia básica de configuração

Para configurar um ou mais tags para comunicar com um CLP Siemens através protocolo S7 você deve fazer:

  1. Insira uma porta de comunicação da classe TTCP_UDPPort na sua aplicação;
  2. Configure a porta (passo 1) para conectar no endereço IPv4 do seu CLP, porta 102/TCP e ative-a;
  3. Insira instancia da classe TISOTCPDriver na sua aplicação;
  4. Configure as propriedades PLCStation, PLCRack e PLCSlot da instancia do driver de protocolo (inserido no passo 3) para que estas reflitam o endereçamento do CLP desejado.
  5. Conecte o protocolo (passo 3) com a porta (passo 1), através da propriedade CommunicationPort;
  6. Insira os tags manualmente ou através da ferramenta “Tag builder”
  7. Caso inserir os tags manualmente, configurar as propriedades dos tags inseridos conforme descrito a seguir;
  8. Conectar o tag ao driver de protocolo através da propriedade ProtocolDriver presente em cada tag.

Para configurar as tag manualmente, é necessário preencher as propriedades MemAddress e MemReadFunction. Caso a variável esteja dentro de um DB, preencha também a propriedade MemFile_DB com o número do DB. O tipo da variável é escolhida na propriedade TagType.

Caso o tipo da variável seja Word, ShortInt, LongInt, DWord ou Real é necessário que as propriedades SwapBytes e SwapWord sejam iguais a true para que os valores fiquem iguais aos do CLP.

Para escolher o tipo (área de memória) que se deseja ler, preencha a propriedade MemReadFunction de acordo com a tabela abaixo:

Area Valor Observação
Inputs, Entradas 1
Outputs, Saidas 2
Flags ou M’s 3
DB e VM no S7-200 4
Counter, S7 300/400 5 Precisa que a propriedade TagType seja igual pttWord
Timer, S7 300/400 6 Precisa que a propriedade TagType seja igual pttWord
Special Memory, SM, S7-200 7
Entrada analógica, S7-200 8
Saída analógica, S7-200 9
Counter, S7-200 10 Precisa que a propriedade TagType seja igual pttWord
Timer, S7-200 11 Precisa que a propriedade TagType seja igual pttWord
Entrada analógica (PIW), S7 300/400 12 Precisa que a propriedade TagType seja igual pttWord

 

Configurações a serem feitas no CLP

Para configurar variáveis em CLP’s familia S7-1200, S7-1500 e ET-200SP, você deve desabilitar o acesso simbólico para que o protocolo consiga acessar estas variáveis, principalmente se estas variáveis estiverem em DataBlocks (DB) ou em Instance DataBlocks (DB criado a partir de um FB).

Você também terá que ir na configuração de hardware dos CLP’s S7-1200, S7-1500 e ET-200SP,  localizar o item “Protection & security” => “Connection mechanisms” e marcar a opção “Permit access with PUT/GET communication from remote partner” .

Continuando no item “Protection & security” => “Access level” configure o nível de acesso que a aplicação de supervisão terá dentro do CLP. Nota: Senhas não são ainda suportadas.

A imagem abaixo mostra estas configurações, que devem ser feitas no Tia Portal.

Exemplos

Acessando o byte de entradas digitais 3 (IB3):

  • MemReadFunction = 1, conforme tabela acima)
  • MemAddress = 3
  • TagType = pttByte

 

Para acessar a MD100 (DWord):

  • MemReadFunction = 5, conforme tabela acima
  • MemAddress = 100
  • TagType = pttDword
  • SwapBytes = true
  • SwapWords = true

 

Para acessar a DB10.DBD512 como real:

  • MemReadFunction = 4, conforme tabela acima
  • MemAddress = 512
  • MemFile_DB = 10
  • TagType = pttFloat
  • SwapBytes = true
  • SwapWords = true

2 comentários em “S7 Protocol sobre ISOTCP

  1. Marcos Responder

    bom dia
    parabéns gostei muito, tenho uma pergunta
    este protocolo tem restrição de tamanho ou quantidade de variáveis
    pois tenho 6.000 variáveis e não estou conseguindo coletar todas

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *