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