Você está na página 1de 30

s MODBUS TCP

S7-1200 / S7-1500 / ET200SP CPU

MODBUS TCP

S7-1200 / S7-1500 / ET200SP CPU

Denilson Pegaia

Objetivo: Prover uma visão geral de como configurar comunicação MODBUS TCP usando
os controladores SIMATIC S7-1200 / S7-1500 / ET200 SP CPU. O documento é focado em
controladores Siemens, mas os conceitos gerais podem ser expandidos para com outros
dispositivos.

Aviso: Este documento apresenta dicas e exemplos sobre o produto e supõe que o leitor possua conhecimento básico
prévio sobre o mesmo. Para informações completas e atualizadas, deve-se consultar o manual do produto. O intuito deste
texto é meramente didático, podendo ser alterado pela Siemens sem aviso prévio. Os exemplos devem ser adaptados ao uso
final e exaustivamente testados antes de utilizados em projetos reais.

Índice

1. Introdução - Conceitos ................................................................................................... 2


1.1. Endereçamento de variáveis ................................................................................................................. 3

2. Pré-requisitos - Informações necessárias ...................................................................... 6


3. Configuração ................................................................................................................. 7
3.1. Configuração do Cliente ........................................................................................................................ 7
3.2. Configuração do Servidor .................................................................................................................... 16

4. Técnicas de diagnóstico............................................................................................... 23
5. Dicas para múltiplos acessos ....................................................................................... 26
Acessos múltiplos a um mesmo servidor .......................................................................................................... 26
Acesso a vários servidores ............................................................................................................................... 28

6. Dicas gerais de configuração ....................................................................................... 29


7. Referências.................................................................................................................. 30
8. Suporte técnico e treinamento ..................................................................................... 30

28/04/2018 Página 1 / 30
s Industry Sector - Technical Support & Hotline www.siemens.com.br/Hotline
s MODBUS TCP
S7-1200 / S7-1500 / ET200SP CPU

1. Introdução - Conceitos

MODBUS é um protocolo de comunicação usado em sistemas de automação industrial.

Existem algumas variações de MODBUS que dizem respeito ao meio físico e a formatação
do telegrama. As formas mais comuns de MODBUS encontradas são MODBUS RTU e
MODBUS TCP.

Tipo de MODBUS Meio de transmissão


MODBUS TCP Ethernet
MODBUS RTU Serial (em geral RS 485, podendo ser também em RS 422 ou RS 232)

No MODBUS, os participantes da comunicação podem adquirir dois tipos de papeis: os que


são responsáveis por solicitar valores / mandar ordens e os que são responsáveis por
responder as solicitações / acatar as ordens. As terminologias usadas para estes papéis
são as seguintes:

Tipo de MODBUS Requisita / dá ordem Responde / acata ordens


MODBUS TCP Cliente (Client) Servidor (Server)
MODBUS RTU Mestre (Master) Escravo (Slave)

Nota: A identificação do tipo e do papel que exerce é fundamental para configuração da


comunicação.

28/04/2018 Página 2 / 30
s Industry Sector - Technical Support & Hotline www.siemens.com.br/Hotline
s MODBUS TCP
S7-1200 / S7-1500 / ET200SP CPU

1.1. Endereçamento de variáveis

O MODBUS pode trabalhar com diferentes tipos de variáveis. Estes tipos de variáveis são
denominados coils (sinais binários) e registros (palavras de 16 bits).

O padrão MODBUS não especifica a forma como as variáveis internas dos equipamentos
são mapeadas (fica a cargo de cada fabricante). Por isso, a forma como os equipamentos
apresentam o endereçamento das variáveis internas pode variar, tanto no conceito como
nos valores:

 Alguns fabricantes começam a contar suas variáveis a partir da posição zero,


enquanto outros contam a partir da posição um.

 Alguns fabricantes “quebram”, o endereçamento das variáveis em dois


componentes: o “Function code” (que representa o tipo de acesso, leitura/escrita
coil/registro) e a posição (endereço) da variável. Outros fabricantes usam um
endereçamento que é, em si, uma combinação de “Functions code” e posição do
registro.

Por exemplo, para a leitura da primeira variável de 16 bits, os fabricantes podem apresentar
as nomenclaturas:

 “Function code” 3, registro 0 (as variáveis de 16 bits começa a ser contadas a partir
da posição 0).

 “Function code” 3, registro 1 (as variáveis de 16 bits começa a ser contadas a partir
da posição 1).

 Endereço 40.000 (40.000 representa o “Function code” 3 + 0 representa primeiro


registro = 40.000).

 Endereço 40.001 (40.000 representa o “Function code” 3 + 1 representa primeiro


registro = 40.001).

Nos controladores S7-1200/ S7-1500 o MODBUS TCP as variáveis são endereçadas por
um binômio de duas variáveis: MB_MODE e MB_DATA_ADDR. Além destas duas
variáveis, uma terceira, MB_DATA_LEN indica a quantidade de coils/registros que serão
lidos de uma vez a partir do endereço inicial especificado.

Existe uma relação entre o binômio “Function code”/”número de registro” e o binômio


MB_MODE / MB_DATA_ADDR. A tabela a seguir mostra esta relação.

Existem mais de uma opção MB_MODE / MB_DATA_ADDR para cada par “Function
code”/”número de registro”. Cada uma destas opções assume um endereçamento interno
começando de valores diferentes (por exemplo, começando do 0 ou de 40001). Isto permite
ao programador flexibilidade sobre a forma de representar os endereços em seu programa.

28/04/2018 Página 3 / 30
s Industry Sector - Technical Support & Hotline www.siemens.com.br/Hotline
s MODBUS TCP
S7-1200 / S7-1500 / ET200SP CPU

Descrição Endereçamento MODBUS Endereçamento Siemens


Function Registro
Significado Code MB_MODE MB_DATA_ADDR MB_DATA_LEN
0 a 9998 0 1 a 9999 1 a 2000
Leitura de "output bits"
(bits) 01 0 a 65535 101 0 a 65535 1 a 2000

0 a 9998 0 10001 a 19999 1 a 2000


Leitura de "input bits"
(bits) 02 0 a 65535 102 0 a 65535 1 a 2000

0 a 9998 40001 a 49999


0 1 a 125
0 a 65534 400001 a 465535
Leitura de "holding
registers” (words) 03 0 a 65535 103 0 a 65535 1 a 125

0 a 9998 0 30001 a 39999 1 a 125


Leitura de "input
registers” (words) 04 0 a 65535 104 0 a 65535 1 a 125

0 a 9998 1 1 a 9999 1
Escrita de um "output
bits" (bit) 05 0 a 65535 105 0 a 65535 1

0 a 9998 40001 a 49999


1 1
0 a 65534 400001 a 465535
Escrita de um "holding
registers” (word) 06 0 a 65535 106 0 a 65535 1

0 a 9998 1 1 a 9999 2 a 1968


Escrita de vários "output
bits” (bits) 15 0 a 65535 115 0 a 65535 2 a 1968

0 a 9998 40001 a 49999


1 2 a 123
0 a 65534 400001 a 465535
Escrita de vários "holding
registers” (words) 16 0 a 65535 116 0 a 65535 2 a 123

Tabela 1 – Relação entre a terminologia de endereçamento MODBUS e os parâmetros dos controladores.


Existem mais de uma opção MB_MODE / MB_DATA_ADDR para cada par “Function code”/”número de
registro”. Cada uma destas opções assume um endereçamento interno começando de valores diferentes
(por exemplo, começando do 0 ou de 40001). Isto permite ao programador flexibilidade sobre a forma de
representar os endereços em seu programa.

28/04/2018 Página 4 / 30
s Industry Sector - Technical Support & Hotline www.siemens.com.br/Hotline
s MODBUS TCP
S7-1200 / S7-1500 / ET200SP CPU

Exemplos de endereçamento na prática:

 “É preciso ler registro (variável de 16 bits, word), a documentação do fabricante diz


que tem endereço 40.056”.

Pela tabela, a leitura de registros é feita pelo Function Code 03. Há duas
possibilidades de endereçamento por parte do Siemens: MODE = 0 ou MODE = 103.
Como o fornecedor do equipamento usou endereçamento na da faixa dos 40.000,
sugere-se neste caso, usar MODE = 0. Desta forma, no programa do usuário,
poderá usar endereçamento igualmente na faixa dos 40.000 (MB_MODE = 0,
MB_DATA_ADDR = 40.056, MB_DATA_LEN = 1).

 “É preciso ler três registros (variáveis de 16 bits, word), a documentação do


fabricante diz que tem endereço 127, 128 e 129”.

Pela tabela, a leitura de registros é feita pelo Function Code 03. Há duas
possibilidades de endereçamento por parte do Siemens: MODE = 1 ou MODE = 103.
Como o fornecedor do equipamento usou endereçamento fora da faixa dos 40.000,
sugere-se neste caso, usar MODE = 103. Desta forma, no programa do usuário,
poderá usar endereçamento igualmente fora da faixa dos 40.000 (MB_MODE = 1,
MB_DATA_ADDR = 127, MB_DATA_LEN = 3).

 “É preciso escrever registro (variável de 16 bits, word), a documentação do


fabricante diz que tem endereço 40.056”.

Pela tabela a escrita de registros é feita pelo Function Code 16. Há duas
possibilidades de endereçamento por parte do Siemens: MODE = 1 ou MODE = 116.
Como o fornecedor do equipamento usou endereçamento na faixa dos 40.000,
sugere-se neste caso, usar MODE = 1. Desta forma, no programa do usuário,
poderá usar endereçamento igualmente fora da faixa dos 40.000 (MB_MODE = 1,
MB_DATA_ADDR = 40.056, MB_DATA_LEN = 1).

 “É preciso escrever três registros (variáveis de 16 bits, word), a documentação do


fabricante diz que tem endereço 127, 128 e 129”.

Pela tabela a escrita de registros é feita pelo Function Code 16. Há duas
possibilidades de endereçamento por parte do Siemens: MODE = 1 ou MODE = 116.
Como o fornecedor do equipamento usou endereçamento fora da faixa dos 40.000,
sugere-se neste caso, usar MODE = 116. Desta forma, no programa do usuário,
poderá usar endereçamento igualmente fora da faixa do 40.000 (MB_MODE = 116,
MB_DATA_ADDR = 127, MB_DATA_LEN = 3).

28/04/2018 Página 5 / 30
s Industry Sector - Technical Support & Hotline www.siemens.com.br/Hotline
s MODBUS TCP
S7-1200 / S7-1500 / ET200SP CPU

2. Pré-requisitos - Informações necessárias

Para que uma comunicação MODBUS possa ser configurada é necessário levantar as
seguintes informações:

 Confirmar tipo de MODBUS que será usado (MODBUS TCP).


 Endereços que cada participante vai usar:
o Qual dos participantes será o responsável por estabelecer a conexão e qual
vai “atender” a este pedido (a escolha é arbitrária e não depende de quem
vai enviar ou receber dados – Neste exemplo, o controlador que fará o papel
de cliente será o responsável por estabelecer a conexão).
o Endereço IP de ambos os participantes (eles devem estar na mesma faixa de
IP ou deverá haver um roteador para tornar a comunicação viável).
o Porta de conexão (ou socket): este “sub endereço” pode ser pré-definido em
ambos os participantes ou somente do lado de quem “atender” ao pedido de
conexão. Em geral, a porta é um número arbitrário combinado entre as
partes (mas alguns equipamentos têm valores fixos, em especial em termos
de MODBUS TCP é comum o uso da porta 502). Alguns valores de porta são
reservados para determinados serviços (por exemplo, páginas HTML, e-
mail), por isso a Siemens sugere o uso de portas com número >= 2000.
 O papel que cada um dos equipamentos vai exercer (quem é cliente, quem é
servidor).
 Endereço das variáveis a serem trabalhadas, forma de notação usada e qual valor
inicial é adotado (vide item Endereçamento de variáveis). Quantos bytes de dados
serão enviados / recebidos e onde eles serão armazenados de cada lado.

Figura 1 – Lista de informações necessárias para comunicação MODBUS TCP.

28/04/2018 Página 6 / 30
s Industry Sector - Technical Support & Hotline www.siemens.com.br/Hotline
s MODBUS TCP
S7-1200 / S7-1500 / ET200SP CPU

3. Configuração

3.1. Configuração do Cliente

Configurar o hardware do equipamento como usual. Habilitar System memory bits e Clock
System memory bits.

Anotar a constante de sistema que identifica a porta Ethernet que vai ser usada. Isto é feito
no Device View -> selecionar a porta Ethernet -> Properties -> System Constants (neste
exemplo a porta tem nome simbólico Local~PROFINET_interface_1 e valor 64):

Figura 2 - Identificação de hardware

Inserir no programa do usuário (e.g. OB1 ou por um OB de interrupção cíclica) o bloco


MB_CLIENT (divisão Communication, pasta Others, MODBUS TCP):

28/04/2018 Página 7 / 30
s Industry Sector - Technical Support & Hotline www.siemens.com.br/Hotline
s MODBUS TCP
S7-1200 / S7-1500 / ET200SP CPU

Criar um DB para definição das configurações de comunicação (estrutura de diretórios do


projeto, pasta Program blocks, Add new block; Data Block, Global DB):

Criar uma variável neste DB (neste exemplo, “myConnection”) com data type =
TCON_IP_v4 (digitar este formato manualmente):

28/04/2018 Página 8 / 30
s Industry Sector - Technical Support & Hotline www.siemens.com.br/Hotline
s MODBUS TCP
S7-1200 / S7-1500 / ET200SP CPU

Abrir a estrutura criada e preencher com os dados da comunicação:

Dados do servidor:

 Endereço IP do servidor a ser acessado (vide Figura 1 item G). Por exemplo, o
endereço 192.168.0.1 teria ADDR[1] = 192, ADDR[2] = 168, ADDR[3] = 0, ADDR[4]
= 2:

 Porta (e.g. 502 – vide Figura 1 item I):

28/04/2018 Página 9 / 30
s Industry Sector - Technical Support & Hotline www.siemens.com.br/Hotline
s MODBUS TCP
S7-1200 / S7-1500 / ET200SP CPU

Dados do cliente:

 Se o controlador é responsável por estabelecer a conexão (neste exemplo é


responsável = TRUE – vide Figura 1 item D):

 Interface: identificação de hardware (vide Figura 2, em nosso exemplo = 64):

28/04/2018 Página 10 / 30
s Industry Sector - Technical Support & Hotline www.siemens.com.br/Hotline
s MODBUS TCP
S7-1200 / S7-1500 / ET200SP CPU

 ID (número arbitrário, único, que representa a conexão para o controlador, adotar


numeração sequencial começando por 1- neste exemplo, por ser a primeira e única
comunicação, adotar o número 1):

 Porta local (número único, e.g. 502 para a primeira conexão– vide Figura 1 item E):

28/04/2018 Página 11 / 30
s Industry Sector - Technical Support & Hotline www.siemens.com.br/Hotline
s MODBUS TCP
S7-1200 / S7-1500 / ET200SP CPU

Preencher as variáveis de entrada do bloco MB_CLIENT:

 REQ = atribuir uma variável pulsante (em geral sugere-se que esta entrada seja
ligada a um clock memory de tempo razoável para monitoração a olho nu durante a
fase de testes, neste exemplo, variável de sistema “Clock_1Hz”):

 DISCONNECT = atribuir o valor False (neste exemplo, variável de sistema “Always


FALSE”):

28/04/2018 Página 12 / 30
s Industry Sector - Technical Support & Hotline www.siemens.com.br/Hotline
s MODBUS TCP
S7-1200 / S7-1500 / ET200SP CPU

 MB_MODE = em geral se atribuir o valor 0 para leitura ou 1 para escrita (neste


exemplo, leitura = 0 – maiores detalhes vide Endereçamento de variáveis):

 MB_DATA_ADDR = atribuir o número do registro inicial do servidor a ser lido /


escrito (neste exemplo, 40001 – maiores detalhes vide Endereçamento de
variáveis):

28/04/2018 Página 13 / 30
s Industry Sector - Technical Support & Hotline www.siemens.com.br/Hotline
s MODBUS TCP
S7-1200 / S7-1500 / ET200SP CPU

 MB_DATA_LEN = atribuir quantos registros vão ser lidos a partir do endereço inicial
(para leitura/escrita de apenas uma variável, usar 1 - neste exemplo, 10 registros):

 MB_DATA_PTR = Atribuir um ponteiro que indique os dados a serem recebidos /


enviados. Neste exemplo tomamos um ponteiro apontando para 20 bytes a partir do
endereço M10.0, para corresponder a quantidade de 10 words acessadas:

A notação de ponteiros com endereço absoluto segue a regra P# + endereço do


primeiro bit a ser enviado + BYTE + quantidade de bytes enviados.
Outras notações são possíveis (inclusive simbólicas). Para efeito de primeiros
testes, contudo, sugerimos o uso de ponteiros com endereços absolutos apontando
para áreas de memória M.
28/04/2018 Página 14 / 30
s Industry Sector - Technical Support & Hotline www.siemens.com.br/Hotline
s MODBUS TCP
S7-1200 / S7-1500 / ET200SP CPU

 CONNECT = Atribuir a variável que descreve a conexão (criada em passo anterior;


neste exemplo, variável “myConnection” do “Data_block_1):

28/04/2018 Página 15 / 30
s Industry Sector - Technical Support & Hotline www.siemens.com.br/Hotline
s MODBUS TCP
S7-1200 / S7-1500 / ET200SP CPU

3.2. Configuração do Servidor

Configurar o hardware do equipamento como usual. Habilitar System memory bits e Clock
System memory bits.

Anotar a constante de sistema que identifica a porta Ethernet que vai ser usada. Isto é feito
no Device View -> selecionar a porta Ethernet -> Properties -> System Constants (neste
exemplo a porta tem nome simbólico Local~PROFINET_interface_1 e valor 64):

Figura 3 - Identificação de hardware

Inserir no programa do usuário (e.g. OB1 ou por um OB de interrupção cíclica) o bloco


MB_SEVER (divisão Communication, pasta Others, MODBUS TCP):

28/04/2018 Página 16 / 30
s Industry Sector - Technical Support & Hotline www.siemens.com.br/Hotline
s MODBUS TCP
S7-1200 / S7-1500 / ET200SP CPU

Criar um DB para definição das configurações de comunicação (estrutura de diretórios do


projeto, pasta Program blocks, Add new block; Data Block, Global DB):

Criar uma variável neste DB (neste exemplo, “myConnection”) com data type =
TCON_IP_v4 (digitar este formato manualmente):

28/04/2018 Página 17 / 30
s Industry Sector - Technical Support & Hotline www.siemens.com.br/Hotline
s MODBUS TCP
S7-1200 / S7-1500 / ET200SP CPU

Abrir a estrutura criada e preencher com os dados da comunicação:

Dados do cliente:

 Endereço IP do cliente que vai acessá-lo (vide Figura 1 item A). Por exemplo o
endereço 192.168.0.1 teria ADDR[1]=192, ADDR[2]=168, ADDR[3]=0, ADDR[4] =2:

Nota: usando o valor default 0.0.0.0, o servidor MODBUS aceitará conexão com
qualquer IP de cliente que queira se conectar falar com ele. Na ausência de
especificações em contrário, sugere-se usar o valor default.

 Porta (e.g. 502 – vide Figura 1 item E):

Nota: usando o valor default 0, o servidor MODBUS aceitará conexão com qualquer
porta que o cliente queira usar na comunicação. Na ausência de especificações em
contrário, sugere-se usar o valor default.

28/04/2018 Página 18 / 30
s Industry Sector - Technical Support & Hotline www.siemens.com.br/Hotline
s MODBUS TCP
S7-1200 / S7-1500 / ET200SP CPU

Dados do cliente:

 Se o controlador é responsável por estabelecer a conexão (neste exemplo é


responsável = TRUE – vide Figura 1 item D):

 Interface: identificação de hardware (vide Figura 3, em nosso exemplo = 64):

28/04/2018 Página 19 / 30
s Industry Sector - Technical Support & Hotline www.siemens.com.br/Hotline
s MODBUS TCP
S7-1200 / S7-1500 / ET200SP CPU

 ID (número arbitrário, único, que representa a conexão para o controlador, adotar


numeração sequencial começando por 1- neste exemplo, por ser a primeira e única
comunicação, adotar o número 1):

 Porta local (número único, e.g. 502 para a primeira conexão– vide Figura 1 item K):

28/04/2018 Página 20 / 30
s Industry Sector - Technical Support & Hotline www.siemens.com.br/Hotline
s MODBUS TCP
S7-1200 / S7-1500 / ET200SP CPU

Preencher as variáveis de entrada do bloco MB_SERVER:

 DISCONNECT = atribuir o valor False (neste exemplo, variável de sistema “Always


FALSE”):

 MB_HOLD_REG = Atribuir um ponteiro que indique os dados a serem acessados


pelo cliente. Neste exemplo tomamos um ponteiro apontando para 20 bytes a partir
do endereço M10.0, para corresponder a quantidade de 10 words acessadas:

A notação de ponteiros com endereço absoluto segue a regra P# + endereço do


primeiro bit a ser enviado + BYTE + quantidade de bytes enviados.
Outras notações são possíveis (inclusive simbólicas). Para efeito de primeiros
testes, contudo, sugerimos o uso de ponteiros com endereços absolutos apontando
para áreas de memória M.

28/04/2018 Página 21 / 30
s Industry Sector - Technical Support & Hotline www.siemens.com.br/Hotline
s MODBUS TCP
S7-1200 / S7-1500 / ET200SP CPU

 CONNECT = Atribuir a variável que descreve a conexão (criada em passo anterior;


neste exemplo, variável “myConnection” do “Data_block_1):

28/04/2018 Página 22 / 30
s Industry Sector - Technical Support & Hotline www.siemens.com.br/Hotline
s MODBUS TCP
S7-1200 / S7-1500 / ET200SP CPU

4. Técnicas de diagnóstico

Para efeitos de debug de primeiros testes e para obter um diagnóstico durante operação
sugere-se a implantação de programa de usuário adicional para processar as variáveis de
saída dos blocos MB_CLIENT e MB_SERVER.

Descrição das saídas do bloco MB_CLIENT:

 DONE fica em TRUE durante um ciclo (“scan”), para indicar que o pedido de
reconfiguração do módulo de comunicação (REQ = TRUE) foi completado com
sucesso.
 ERROR fica em TRUE durante um ciclo (“scan”) para indicar que o pedido de
reconfiguração do módulo de comunicação (REQ = TRUE) não foi completado com
sucesso, isto é, houve um erro.
 STATUS indica o status do bloco durante o respectivo ciclo (“scan”). Apenas valores
na casa dos 8000 (hexadecimal) indicam efetivamente erros. Nota: a indicação do
tipo do erro ocorrido ocorre somente durante um ciclo (“scan”) correspondente ao
momento em que a variável ERROR fica em TRUE. O significado dos códigos de
erro podem ser obtidos do sistema de ajuda do TIA Portal (selecionar o bloco e
pressionar F1).

Descrição das saídas do bloco MB_SERVER:

 NDR fica em TRUE durante um ciclo (“scan”), para indicar que o cliente escreveu
novos dados com sucesso.
 DR fica em TRUE durante um ciclo (“scan”), para indicar que o cliente leu dados
com sucesso.
 ERROR fica em TRUE durante um ciclo (“scan”) para indicar que o pedido de
comunicação (REQ = TRUE) não foi completado com sucesso, isto é, houve um
erro.
 STATUS indica o status do bloco durante o respectivo ciclo (“scan”). Apenas valores
na casa dos 8000 (hexadecimal) indicam efetivamente erros. Nota: a indicação do
tipo do erro ocorrido ocorre somente durante um ciclo (“scan”) correspondente ao
momento em que a variável ERROR fica em TRUE. O significado dos códigos de
erro podem ser obtidos do sistema de ajuda do TIA Portal (selecionar o bloco e
pressionar F1).

Os eventos registrados por estas variáveis ficam disponíveis por apenas um ciclo (“scan”)
do programa. Por isso é necessário processar estes sinais pelo programa a fim de que
usuário possa ter acesso a estas informações.

É interessante contar durante quantos ciclos (“scans”) o sinal de DONE, D, NDR e ERROR
ficaram em TRUE e salvar (MOVE) em alguma memória auxiliar (não temporária) o valor de
STATUS para o ciclo (“scan”) em que ERROR estiver em TRUE. Vide exemplos de lógica
abaixo:

28/04/2018 Página 23 / 30
s Industry Sector - Technical Support & Hotline www.siemens.com.br/Hotline
s MODBUS TCP
S7-1200 / S7-1500 / ET200SP CPU

Figura 4 - Exemplo de programa para avaliação do diagnóstico para o bloco MB_CLIENT memorizando o
valor de STATUS para o evento de ERROR = TRUE e contando o número de ciclos (“scans”) em que
DONE = TRUE (o mesmo conceito de contagem pode ser usado também).

28/04/2018 Página 24 / 30
s Industry Sector - Technical Support & Hotline www.siemens.com.br/Hotline
s MODBUS TCP
S7-1200 / S7-1500 / ET200SP CPU

Figura 5 – Exemplo de programa para avaliação do diagnóstico para o bloco MB_SERVER memorizando
o valor de STATUS para o evento de ERROR = TRUE e contando o número de ciclos (“scans”) em que
NDR, DR e ERROR ficam em TRUE.

28/04/2018 Página 25 / 30
s Industry Sector - Technical Support & Hotline www.siemens.com.br/Hotline
s MODBUS TCP
S7-1200 / S7-1500 / ET200SP CPU

5. Dicas para múltiplos acessos

Acessos múltiplos a um mesmo servidor

A técnica mais simples para que um cliente faça múltiplos acessos a um mesmo servidor
(e.g. para ler e escrever valores) é alternar as chamadas de blocos MB_CLIENT de modo
que apenas uma destas chamadas seja executada por vez.

O exemplo a seguir mostra uma forma simples de implementação:

Valor máximo para


a variável “Index”

Figura 6 – Neste seguimento são geradas as variáveis de controle para a chamada do bloco MB_CLIENT.
A variável “Index” sofre um acréscimo de 1 a cada segundo. Seu valor varia de um até um número
máximo (neste exemplo 2). A variável “Trigger” gera um pulso atrasado um ciclo após uma alteração de
“Index”.

28/04/2018 Página 26 / 30
s Industry Sector - Technical Support & Hotline www.siemens.com.br/Hotline
s MODBUS TCP
S7-1200 / S7-1500 / ET200SP CPU

MB_CLIENT lê
variáveis do servidor
quando “Index”= 1

MB_CLIENT escreve
variáveis do servidor
quando “Index”= 2

Figura 7 – Chamadas condicionais do bloco MB_CLIENT de modo que faça leituras de variáveis do
servidor (para “Index”= 1) alternadamente com escritas (para “Index”= 2)

28/04/2018 Página 27 / 30
s Industry Sector - Technical Support & Hotline www.siemens.com.br/Hotline
s MODBUS TCP
S7-1200 / S7-1500 / ET200SP CPU

Acesso a vários servidores

A técnica mais simples para que um cliente acessar mais de um servidor é usar um recurso
de comunicação (connection) para cada acesso. Em termos de programação isto implica
em:

 Uma chamada independente do MB_CLIENT para cada servidor acessado.


 Um instance DB único para cada chamada do MB_CLIENT
 Uma variável única (tipo TCON_IP_v4 ) para definir cada conexão

Em termos de definição da conexão:

 O ID da conexão deverá ser único no PLC e, portanto, diferente para cada servidor
acessado. Em geral adota-se ID=1 para a primeira conexão, ID = 2 para a segunda
e assim sucessivamente.
 Cada conexão deverá ter uma porta local única.

Notas:

Os blocos MB_CLIENT podem ser chamados ao mesmo tempo.

O número de conexões de um controlador é limitado. Caso sejam necessárias mais


acessos do que o número de conexões que uma CPU suporta, é possível ativar ou
desativar a conexão de um bloco MB_CLIENT (via entrada DISCONNECT) de modo que
blocos com mesmo número de conexão não trabalhem simultaneamente.

28/04/2018 Página 28 / 30
s Industry Sector - Technical Support & Hotline www.siemens.com.br/Hotline
s MODBUS TCP
S7-1200 / S7-1500 / ET200SP CPU

6. Dicas gerais de configuração

 Manter STEP 7 V1X (TIA Portal), atualizados.

 Versões mais atuais de blocos / bibliotecas, compatíveis com o HW/FW utilizado.

 Utilização correta dos projetos exemplos:


o Os projetos exemplos, como o próprio nome diz, são exemplos. Use-os para
entender como a teoria dos manuais pode ser aplicada na prática.

o Não tenha a expectativa de que simplesmente descarregar o exemplo no


controlador vai ser o suficiente para fazer sua aplicação rodar. Os exemplos
precisam ser adaptados as suas condições.

o Em algumas raras vezes, os exemplos não contém a versão mais atual dos
blocos. Por isso é melhor olhar o que foi feito e realizar seu projeto copiando
ideias, mas não objetos do exemplo.

 Desenvolver a aplicação em passos, partindo de uma tarefa simples e indo


gradualmente para passos mais complexas:
o Testar individualmente cada uma das partes comunicando com um simulador
de MODBUS. Conferir os telegramas de cada um dos testes, para ver se
coincidem. Somente após isso, unir os dois equipamentos. Isto pode ser
especialmente útil para identificar os números corretos de registros a serem
usados.

o Testar primeiramente a comunicação entre o PLC e um único escravo.


Somente teste programas lendo múltiplos equipamentos depois de ter
funcionado individualmente com cada um dos deles.

28/04/2018 Página 29 / 30
s Industry Sector - Technical Support & Hotline www.siemens.com.br/Hotline
s MODBUS TCP
S7-1200 / S7-1500 / ET200SP CPU

7. Referências

FAQ desenvolvida por Denilson Pegaia e revisada por Fabricio Campidelli Gozzo.

Dicas postadas no site do Suporte Técnico.

 How do you program and parameterize Modbus/TCP communication between S7-


1500 CPUs and S7-1200 CPUs?
https://support.industry.siemens.com/cs/br/en/view/102020340

 Which ports are released for Modbus/TCP communication and how many Modbus
clients can communicate with a SIMATIC S7 PN-CPU as Modbus server?
https://support.industry.siemens.com/cs/br/en/view/34010717

Dicas postadas no fórum do Suporte Técnico.

 Tips and sample program for MODBUS TCP


https://support.industry.siemens.com/tf/ww/en/posts/tips-and-sample-program-for-
modbus-tcp/61795/?page=0&pageSize=10

 Sample Program: Modbus TCP with S7-1500


https://support.industry.siemens.com/tf/ww/en/posts/sample-program-modbus-tcp-
with-s7-1500/98690/?page=0&pageSize=10

8. Suporte técnico e treinamento

Suporte Técnico

Requisição de suporte: www.siemens.com.br/Hotline/SR


Tel.: 0800 7 73 73 73

Portal de Suporte: www.siemens.com.br/Hotline

Homepage Brasil: www.siemens.com.br

Centro de treinamento - SITRAIN

Informações: www.siemens.com.br/sitrain

Tel.: 0800 7 73 73 73

28/04/2018 Página 30 / 30
s Industry Sector - Technical Support & Hotline www.siemens.com.br/Hotline

Você também pode gostar