ElipseDocsDocumentação
PDF

Tratamento de Comandos

Este Driver suporta o recebimento de comandos Select, Operate ou Direct Operate para os Objetos 12 Variação 1 (um) e 41 Variações 1 (um), 2 (dois), 3 (três) ou 4 (quatro).

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

  1. O comando Select, Operate ou Direct Operate é recebido.
  2. Um Tag PLC ou Tag Bloco com o parâmetro N2 igual a 3 (três), 4 (quatro) ou 5 (cinco) deve ser lido e tratado por uma aplicação, como por exemplo repassar para outro Driver que vai reenviá-lo para um equipamento.
  3. Ao receber a resposta deste comando ao equipamento, deve-se escrever de volta no mesmo Tag cujo comando foi lido o status. Se a resposta do comando ao equipamento foi positiva, deve escrever o mesmo valor de volta. Caso contrário, deve escrever um valor diferente.
  4. Se nenhuma escrita é realizada no Tag no intervalo de 10 segundos, este Driver envia uma resposta com status igual a 6 (seis, Request Not Accepted. Hardware Problems).

Para receber uma solicitação de comando destes Objetos, pode-se utilizar um Tag Individual ou um Tag Bloco.

Objeto 12 Variação 1 (um)

Para um Tag individual, o valor do Tag quando lido contém o valor do campo Control Code. Para o uso das operações Select e Operate devem ser criados dois Tags, e cada um recebe a leitura no momento que a operação correspondente, Select ou Operate, ocorrer. Para o uso da operação Direct Operate (cinco) só é necessário um único Tag com os parâmetros a seguir:

  • N1: Não usado
  • N2: 3 (três), 4 (quatro) ou 5 (cinco)
  • N3: 1201 ou 41XX
  • N4: Índice do ponto

Para um Tag Bloco, valem as mesmas configurações anteriores, porém este Tag Bloco pode ter até 6 (seis) Elementos. A diferença é que não importa a operação, Select, Operate ou Direct Operate, só é necessário um único Tag Bloco, 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: Operação (3: Select, 4: Operate ou 5: Direct Operate)
  • Elemento 6: Endereço do Mestre

Objeto 41 Variações 1 (um), 2 (dois), 3 (três) ou 4 (quatro)

Para um Tag individual, o valor do Tag quando lido contém o valor do campo Control Code. Para o uso das operações Select e Operate devem ser criados dois Tags, e cada um recebe a leitura no momento que a operação correspondente, Select ou Operate, ocorrer. Para o uso da operação Direct Operate (cinco) só é necessário um único Tag com os parâmetros a seguir:

  • N1: Não usado
  • N2: 5 (cinco)
  • N3: 1201 ou 41XX
  • N4: Índice do ponto

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

  • Elemento 0: Valor
  • Elemento 1: Status
  • Elemento 2: Operação

Exemplo de script para tratar a recepção de comandos em um Objeto 12 Variação 1 (um).

// O Bloco AbreFecha é formado por 5 (cinco) Elementos
// O exemplo pressupõ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 ou não formatado
      CmdOk = 0
  End Select

  If Not(CmdOk) Then
    WStatus = 7
  Else
    If Digitais.Item("ESTADODL01").WriteEx(VComando, , , WStatus) Then
      WStatus = 0 'Força o valor 0 (zero) ou sucesso na escrita
      '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