Tratamento de Comandos

<< Clique para Mostrar o Sumário >>

 

Tratamento de Comandos

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 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 pela 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

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é 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, 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 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é 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.

// O Bloco AbreFecha é formado por 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 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

Esta página foi útil?