Comunicação Remota

Bloco de Controle Padrão
Função Comunicação Remota
Nro. da Função 235
Caminho Programa/Editor Ladder/Elementos/Especiais/Bloco de controle Padrão
Grupo Especiais
Ícone ico
Tabela de compatibilidade de firmwares
Geração de Firmware [GII, GII-DUO, G3, G3S, G3R

A função deste bloco é viabilizar a comunicação remota com outros controladores ou dispositivos remotos que possuem o protocolo SCP-HI ou MODBUS-RTU.

Para utilizar o elemento no programa deve-se posicionar o cursor do editor ladder na posição onde o elemento será inserido, selecionar no menu à esquerda o grupo Especiais e clicar no botão associado ico .

Nota

A execução deste comando pode levar vários ciclos de scan para ser concluído. Portanto, verifique a condição da saída do bloco para certificar-se que o processo está terminado e, avalie o valor para parâmetro P4 para identificar possíveis falhas.

Parâmetros

Parâmetros
Parâmetros Tipos Valores Descrição
P1 K 0..Max(K) Função do bloco SCB de comunicação com dispositivos remotos. Deve ser uma constante inteira com valor igual a 235.
P2 M M[x + 0] Identificador do canal de comunicação serial mestre do controlador. Obs Z1
M[x + 1] Identificador do dispositivo remoto a ser acessado (1..255). Obs Z2
M[x + 2] Código da função de comunicação a ser executada, vide Códigos para o protocolo SCP-HI ou Códigos para o protocolo MODBUS para mais informações sobre este parâmetro.
M[x + 3] Se leitura; número da primeira variável Rxx, Mxx ou Dxx na baselocal do controlador, onde serão transferidos os valores obtidos do dispositivo remoto. Se escrita, número da primeira variável Rxx, Mxx, Lxx ou Dxx na base local do controlador, que será enviada para o dispositivo remoto.
M[x + 4] Quantidade de variáveis Rxx, Mxx, Lxx ou Dxx a serem escritas ou lidas no/do dispositivo remoto. Obs Z3
M[x + 5] Se leitura, número da primeira variável na base do dispositivo remoto, onde serão obtidos os valores a serem lidos. Se escrita, número da primeira variável na base dispositivo remoto, onde serão escritos os valores enviados.
P3 M M[y + 0] Parâmetro não utilizado para esta função (parâmetro dummy).
P4 M M[z + 0] Código de retorno da execução da função, onde: Igual a 0 Indica função executada com sucesso Diferente de 0 - Indica condição de falha. Vide Tabela de códigos de retorno do controlador .

Obs.:

Z1 Para identificação de um canal de comunicação utilize os valores definidos a seguir :
Codigo = Canal de comunicação
  • -1 = Socket cliente do canal Ethernet
  • 0 = Canal serial COM 1
  • 1 = Canal serial COM 2
  • 2 = Canal serial COM 3
  • 3 = Canal CBUS (Válido apenas para controlador P7C)
  • 10 = Socket 0 do canal Ethernet (Plataforma G3S)
  • 11 = Socket 1 do canal Ethernet (Plataforma G3S)
  • 12 = Socket 2 do canal Ethernet (Plataforma G3S)
  • 13 = Socket 3 do canal Ethernet (Plataforma G3S)
O número de canais disponíveis depende do modelo do controlador utilizado. Consulte o manual do equipamento associado para obter mais informações sobre os recursos de comunicação disponíveis.
Z2
Especificamente para os controladores P7C com acesso aos módulos PPU306 via o CBUS, o endereço de acesso as PPU´s segue a seguinte regra:
  • Endereço da CPU302 + numero do slot onde está alocado a PPU306 no bastidor do controlador P7C.
Por exemplo, considerando os seguintes módulos no bastidor do P7C:
  • No slot 0 do bastidor do P7C com módulo CPU302 com endereço 5
  • No slot 1 do bastidor do P7C com módulo PPU306 com endereço 30
  • No slot 2 do bastidor do P7C com módulo PPU306 com endereço 31
  • No slot 4 do bastidor do P7C com módulo PPU306 com endereço 32
Assim temos :
  • Na CPU302, para endereçarmos a PPU306 do slot 1 devemos utilizar o endereço : 6 = 5 (end. da CPU302) + 1 (slot da PPU306)
  • Na CPU302, para endereçarmos a PPU306 do slot 2 devemos utilizar o endereço : 7 = 5 (end. da CPU302) + 2 (slot da PPU306)
  • Na CPU302, para endereçarmos a PPU306 do slot 4 devemos utilizar o endereço : 9 = 5 (end. da CPU302) + 4 (slot da PPU306) = 9
Z3 A quantidade máxima de dados trocados (leitura ou escrita) em cada ativação do bloco SCB de comunicação remota é de 248 bytes, independente do protocolo de comunciação utilizado.
Considerando os tipos de dados básicos dos controladores da HI Tecnologia, em cada transação de comunicação podemos trocar a seguinte quantidade de dados:
  • Tipo R = 248 variáveis
  • Tipo M = 124 variáveis
  • Tipo D = 62 variáveis
  • Tipo L = 62 variáveis
Assim, por exemplo, se desejar ler 100 variáveis do tipo D, será necessário realizar 2 ciclos de comunicação utilizando este bloco SCB, ou seja, ler as primeiras 62 variáveis D e depois ler as 38 variáveis D restantes, totalizando as 100 variáveis D desejadas.

Códigos para o protocolo SCP-HI

Código dec[hexa] R/W Descrição
0 [00] R Leitura de variáveis remotas do tipo R
128 [80] W Escrita de variáveis remotas do tipo R
1 [01] R Leitura de variáveis remotas do tipo M
129 [81] W Escrita de variáveis remotas do tipo M
2 [02] R Leitura de variáveis remotas do tipo D
130 [82] W Escrita de variáveis remotas do tipo D
3 [03] R Leitura de variáveis remotas do tipo L
131 [83] W Escrita de variáveis remotas do tipo L
11 [11] R Leitura de variáveis remotas do tipo F (Variáveis de Sistema)
139 [8B] W Escrita de variáveis remotas do tipo F (Variáveis de Sistema)

Códigos para o protocolo MODBUS

Código dec[hexa] R/W Descrição
0 [00] R Leitura de variáveis remotas do tipo COIL
128 [80] W Escrita de variáveis remotas do tipo COIL
1 [01] R Leitura de variáveis remotas do tipo HOLDING REGISTER
129 [81] W Escrita de variáveis remotas do tipo HOLDING REGISTER
2 [02] R Leitura de duplas de variáveis remotas do tipo HOLDING REGISTER
130 [82] W Escrita de duplas de variáveis remotas do tipo HOLDING REGISTER
5 [05] R Leitura de variáveis remotas do tipo INPUT REGISTER
6 [06] R Leitura de variáveis remotas do tipo DISCRETE INPUTS

Códigos para o funções especiais

Código dec[hexa] Descrição
108 [6C] Obtem status de conexão TCP com o equipamento remoto.
109 [6D] Obtem o IP e porta corrente do socket cliente
110 [6E] Abre conexão TCP com o equipamento remoto no IP especificado.
111 [6F] Fecha conexão do socket cliente

Códigos de Erros de P4

Códigos de Erros de P4 - Sistema Operacional do CLP
Código de erro Descrição
0 Função executada com sucesso. Nenhuma falha identificada no processo.
5 Parâmetro(s) inválido(s). Por exemplo, código da função de comunicação inválido, etc.
10 Excedido tempo de espera para execução da função de comunicação.
12 Driver de comunicação não está instalado no controlador.
74 Identificador do canal de comunicação inválido.
206 Variável R, M ou D acessada na base de dados do PLC pelo programa de aplicação não está alocada. No caso, pode ser uma variável R, M ou D especificada como origem ou destino para a função de troca de dados que excede a base de dados do PLC.
Códigos de Erros de P4 - Protocolo MODBUS-RTU/TCP
Código de erro Descrição
1 Illegal Function: Função solicitada não está implementada no dispositivo remoto.
2 Illegal Data Address: O endereço do dado acessado (registrador ou bit) não existe no dispositivo remoto.
3 Illegal Data Value: O valor inválido especificado para o dado, por exemplo, fora da escala permitida, dado não permite escrita, etc.
4 Slave Device Failure.
5 Acknowledge.
6 Slave Device Busy.

Para mais informações sobre os códigos de erro consulte a Tabela de códigos de retorno do controlador .

Entradas

Descrição das Entradas
Entrada Função Estado Descrição
A1 Ativação Inativo Neste estado o bloco não executa nenhuma ação, repassando apenas o estado inativo para a saída B1.
Ativo Neste estado o bloco executa a funcionalidade associada ao mesmo. OBS: Cabe ressaltar que, para o bloco SCB, esta entrada opera por transição ou seja, o bloco é executado apenas quando a entrada A1 muda do estado inativo para o estado ativo. Uma vez ativada, a entrada A1 deverá permanecer ativa até o término da execução da função que é sinalizado através da ativação da saída B1 do bloco.

Saída

Descrição das Saídas
Saída Função Estado Descrição
B1 Ativação/Falha Inativo A saída B1 sempre estará inativa se a entrada A1 estiver inativa. Quando a entrada A1 for ativada a saída B1 permanecerá inativa enquando o bloco estiver executando o comando associado indicando que o processo ainda não terminou.
Ativo Indica fim de execução do processo associado ao bloco. Para identificar se a função foi executada com sucesso é necessário examinar o parâmetro P4, que contém o código indicando o resultado da execução do processo associado. Para mais informações sobre os códigos disponíveis para esta função consulte a Tabela de códigos de retorno do controlador .

Os controladores podem operar em modo Mestre ou Escravo, ou se o mesmo possuir dois canais seriais de comunicação, pode-se configurar um canal para operar em modo Mestre e outro para operar em modo Escravo, bem como uma serial configurada para o protocolo SCP-HI e a outra configurada com o protocolo MODBUS. O controlador mestre é responsável por iniciar uma comunicação com o equipamento escravo, tanto para solicitar dados como para enviar dados. O equipamento escravo apenas responde às solicitações de comunicação provenientes do mestre.

No caso do controlador possuir mais de um canal de comunicação serial disponível, pode-se operar com mais de um canal de comunicação em modo mestre, e assim realizar a troca de dados com mais de um dispositivo remoto simultaneamente.

Comunicação Remota Via Protocolo SCP-HI

São os seguintes as funções de comunicação disponíveis para utilização quando utilizando o protocolo SCP-HI:

  • Função de comunicação 0: Através desta função, o controlador mestre pode ler variáveis do tipo “R” de outro controlador escravo e armazenar os valores lidos em variáveis do tipo “R” no controlador mestre.
  • Função de comunicação 128: Através desta função, o controlador mestre pode escrever um conjunto de variáveis do tipo “R” em outro conjunto de variáveis do tipo “R” de um controlador escravo.
  • Função de comunicação 1: Através desta função, o controlador mestre pode ler variáveis do tipo “M” de outro controlador escravo e armazenar os valores lidos em variáveis do tipo “M” do controlador mestre.
  • Função de comunicação 129: Através desta função, o controlador mestre pode escrever um conjunto de variáveis do tipo “M” em outro conjunto de variáveis do tipo “M” de um controlador escravo.
  • Função de comunicação 2: Através desta função, o controlador mestre pode ler variáveis do tipo “D” de outro controlador escravo e armazenar os valores lidos em variáveis do tipo “D” do controlador mestre.
  • Função de comunicação 130: Através desta função, o controlador mestre pode escrever um conjunto de variáveis do tipo “D” em outro conjunto de variáveis do tipo “D” de um controlador escravo.

Comunicação Remota Via Protocolo MODBUS-RTU/TCP

São os seguintes as funções de comunicação disponíveis para utilização quando utilizando o protocolo MODBUS-RTU/TCP:

Função Código Descrição
0 READ_COIL Através desta função, o controlador pode ler variáveis do tipo “coil” do dispositivo remoto e armazenar os valores lido em variáveis do tipo R do controlador mestre. Neste caso, cada variável do tipo “coil” lida do dispositivo remoto é mapeada em uma variável do tipo R do controlador mestre.
128 WRITE_MULTIPLE_COIL Através desta função, o controlador pode escrever o valor de uma variável do tipo R em uma variável do tipo “Coil” do dispositivo remoto. Neste caso, cada variável do tipo R do controlador mestre é mapeada em uma variável do tipo “Coil” do dispositivo remoto. No caso dos controladores a utilização do código de função de comunicação é comum para mapear as funções “Write Single Coil” e “Write Multiple Coils”. Se a quantidade de variáveis a ser escrita for igual a 1 (um), será utilizada a função “Write Single Coil”, caso contrário, para quantidades maiores que 1, será utilizada a função “Write Multiple Coils”. Assim, a configuração dos parâmetros no bloco SCB difere apenas no parâmetro associado à quantidade de variáveis “Coil” a serem escritas no dispositivo remoto.
1 READ_HOLDING_REGISTERS Através desta função, o controlador pode ler variáveis do tipo “holding register” do equipamento remoto e armazenar os valores lidos em variáveis do tipo M do controlador mestre. Neste caso, cada variável do tipo “holding register” especificada para leitura no dispositivo remoto é mapeada em uma variável do tipo M do controlador mestre.
129 WRITE_MULTIPLE_REGISTERS Através desta função, o controlador pode escrever uma única variável do tipo M do controlador mestre em uma variável do tipo “register” do equipamento remoto. Neste caso, cada variável do tipo M do controlador mestre é mapeada em uma variável do tipo “register” no dispositivo remoto. No caso dos controladores, a utilização do código de função é comum para mapear as funções “Write Single Register” e “Write Multiple Registers”. Se a quantidade de variáveis a ser escrita for igual a 1 (um), utiliza-se a função “Write Single Register”, caso contrario, para quantidades maiores que 1, utiliza-se a função “Write Multiple Registers”. Assim, a configuração dos parâmetros no bloco SCB difere apenas no parâmetro associado à quantidade de variáveis “register” a serem escritas no dispositivo remoto.
130 WRITE_MULTIPLE_REGISTERS (DUPLO). Através desta função, o controlador pode escrever o conteúdo de variáveis do tipo D em variáveis do tipo “register” do equipamento remoto. Neste caso, cada variável do tipo D do controlador HI mestre é mapeada em duas variáveis do tipo “register” no dispositivo remoto, de forma seqüencial.
5 READ_INPUT_REGISTERS Através desta função, o controlador pode ler o conteúdo de variáveis do tipo “input register” e armazenar os valores lidos em variáveis do tipo M do controlador mestre. No caso, cada “input register” lido do dispositivo remoto é mapeado em uma variável do tipo M do controlador mestre.
6 READ_DISCRETE_INPUTS Através desta função, o controlador pode ler variáveis do tipo “discrete inputs” do dispositivo remoto, e armazenar os valores lidos em variáveis do tipo M do controlador mestre. No caso, cada “discrete input” lido do dispositivo remoto é mapeado em um bit de uma variável do tipo M do controlador mestre.

Nota

Dispositivos que disponibilizam o protocolo MODBUS, geralmente apresentam o seu mapa de endereços composto por um número indicativo, gerando um valor de OFFSET no respectivo endereço. Neste caso, deve-se subtrair este OFFSET para determinar o endereço da variável a ser acessada no dispositivo.