Comandos no Protocolo DNP Escravo

<< Clique para Mostrar o Sumário >>

 

Comandos no Protocolo DNP Escravo

Este Driver suporta o recebimento de comandos Select, Operate ou Direct Operate para os objetos 12 Variação 1 e 41 Variações 1, 2, 3 ou 4.

Caso a opção Command Response Profile esteja definida como Wait for Application Response, a sequência completa para tratar um comando é a seguinte:

1.Um comando Select, Operate ou Direct Operate é recebido.

2.Um Tag individual ou Tag Bloco com o parâmetro N2 ou B2 igual a 3 (três), 4 (quatro) ou 5 (cinco) deve ser lido e tratado pela aplicação, como por exemplo repassando para outro Driver reenviá-lo para um equipamento.

3.Ao receber a resposta deste comando ao equipamento, deve-se escrever de volta no mesmo Tag cujo status de comando foi lido. Se a resposta do comando ao equipamento foi positiva, deve-se escrever o mesmo valor de volta. Caso contrário, deve-se escrever um valor diferente.

4.Se nenhuma escrita é realizada no Tag no intervalo de 10 segundos, o Driver envia uma resposta com status igual a 6, ou seja, Request Not Accepted. Hardware Problems.

 

Para receber uma solicitação de comando destes objetos, pode-se utilizar um Tag Individual ou um Tag Bloco, conforme os objetos a seguir.

 

Objeto 12 Variação 1

Para um Tag individual, O valor do Tag quando lido contém o valor do campo Control Code. Para o uso dos comandos Select e Operate devem ser criados dois Tags, cada um recebendo a leitura no momento em que o comando correspondente ocorrer, Select ou Operate. Para o uso do comando Direct Operate (5) só é necessário um único Tag com os seguintes parâmetros:

N1: Não usado

N2: 3, 4 ou 5

N3: 1201 ou 41XX

N4: Índice do ponto

 

Para um Tag Bloco, use as mesmas configurações anteriores, porém este Tag Bloco pode ter até seis Elementos. A diferença é que independente do comando, Select, Operate ou Direct Operate, só é necessário um único Tag Bloco com os Elementos a seguir, pois a operação é retornada no Elemento 5 (cinco).

Elemento 0: Control Code

Elemento 1: Count

Elemento 2: On Time

Elemento 3: Off Time

Elemento 4: Status

Elemento 5: Comando (3: Select, 4: Operate ou 5: Direct Operate)

 

Objeto 41 Variações 1, 2, 3 ou 4

Para um Tag individual, o valor do Tag quando lido contém o valor do campo Control Code. Para o uso dos comando Select e Operate devem ser criados dois Tags, cada um recebendo a leitura no momento em que o comando correspondente ocorrer, Select ou Operate. Para o uso do comando Direct Operate (5) só é necessário um único Tag com os seguintes parâmetros:

N1: Não usado

N2: 5

N3: 1201 ou 41XX

N4: Índice do ponto

 

Para um Tag Bloco, use as mesmas configurações anteriores, porém este Tag Bloco pode ter até três Elementos:

Elemento 0: Valor

Elemento 1: Status

Elemento 2: Comando

 

O exemplo a seguir trata a recepção de comandos em um Objeto 12 Variação 1.

// O Tag Bloco AbreFecha é formado por 5 Elementos
// O exemplo supõe o envio do comando recebido
// para um outro Driver DNP Mestre
 
Sub AbreFecha_OnRead()
  Set Digitais = Parent.Parent.Item("LeituraDigitais")
  ControlCode = Item("ControlCode").Value
 
  Trip = 1
  Close = 0
  CmdOk = 1
 
  Select Case ControlCode
    Case 65 'Pulse On Close
      VComando = Close
    Case 66 'Pulse off close
      VComando = Close
    Case 67 'Latch On Close
      VComando = Close
    Case 68 'Latch Off Close
      Vcomando = Close
    Case 129 'Pulse On Trip
      VComando = Trip
    Case 130 'Pulse Off Trip
      VComando = Trip
    Case 131 'Latch On Trip
      VComando = Trip
    Case 132 'Latch Off Trip
      VComando = Trip
    Case Else 'Comando inválido
      CmdOk = 0
  End Select
 
  If Not(CmdOk) Then
    WStatus = 7
  Else
    If Digitais.Item("ESTADODL01").WriteEx(VComando, , , WStatus) Then
      WStatus = 0 'Força valor 0 - Sucesso
      'Status esperados pelo Mestre em caso de erro
      'Select Case WStatus
      '  Case 1
      '    Endtext = "Operate recebido depois do time-out de seleção"
      '  Case 2
      '    Endtext = "Sem mensagem de seleção anterior"
      '  Case 3
      '    Endtext = "Erro de formatação no comando"
      '  Case 4
      '    Endtext = "Operação não suportada para este ponto"
      '  Case 5
      '    Endtext = "Fila está cheia ou ponto já está ativo"
      '  Case 6
      '    Endtext = "Problemas de hardware"
      '  Case Else
      '    Endtext = "Problema não definido"
      'End Select
    Else
      WStatus = 7
    End If
  End If
  Item("Status").Value = WStatus
  Write(EWriteSyncMode)
End Sub

Esta página foi útil?