.. include:: glb_defs.txt .. |ico| image:: ../shared_img/_cmd/m7.png .. _`SCB Comunicação Remota`: Comunicação Remota #################### +----------------------------------------------------------------------------------+ |:ref:`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| | +--------------+-------------------------------------------------------------------+ .. only:: hitec +-----------------------------------------------+ |:ref:`compatibilidade de firmware` | +-------------------+---------------------------+ |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| . .. note:: 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 :ref:`tabela de códigos de erro` . | +------------+------+----------+-----------------------------------------------+ Obs.: .. rst-class:: tbobs ========= =================================================================================================================== |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 :ref:`tabela de códigos de erro` . 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 :ref:`tabela de códigos de erro` .| +---------+-----------------+----------+----------------------------------------------------+ 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. ======== ======================== ========================================================================= .. note:: 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. .. raw:: pdf PageBreak