O driver DNP Slave suporta o recebimento de comandos SELECT, OPERATE ou DIRECT OPERATE para os seguintes objetos:
Objeto 12 – Variação 1
Objeto 41 – Variações 1, 2, 3 ou 4
Para que os comandos sejam tratados pela aplicação, a opção Command Response Profile deve ser definida como Wait for Application Response. A sequência completa para o tratamento de um comando é a seguinte:
1. O comando SELECT, OPERATE ou DIRECT OPERATE é recebido pelo driver escravo.
2. Um tag ou bloco com N2 = 3, 4 ou 5 deve ser lido e tratado pela aplicação (por exemplo, repassado para outro driver, que vai reenviá-lo para um equipamento).
3. Ao receber a resposta desse comando ao equipamento, escreva de volta no mesmo tag de cujo comando foi lido o status. Se a resposta do comando ao equipamento foi positiva, escreva o mesmo valor de volta; caso contrário, escreva um valor diferente.
4. Se nenhuma escrita for realizada no tag no intervalo de 10 segundos, o próprio driver enviará uma resposta com status=6 (Request Not Accepted. Hardware Problems.)
Para receber uma solicitação de comando, pode-se utilizar um Tag Individual ou um Tag Bloco.
Objeto 12 Variação 1:
Tag Individual: N1 = Não Importa; N2 = 3, 4 ou 5; N3 = 1201; N4 = Índice do Ponto. Quando lido, o valor do Tag conterá o valor do campo CONTROL CODE. Para o uso de SELECT e OPERATE, devem ser criados dois tags; cada um receberá a leitura no momento que a operação correspondente (SELECT ou OPERATE) ocorrer. Para o uso de DIRECT OPERATE (5), só é necessário um único tag.
Tag Bloco: Possui as mesmas configurações acima, porém o bloco poderá ter até seis elementos. A diferença é que a operação (SELECT, OPERATE, DIRECT OPERATE) não importa, só será necessário um único bloco, pois a operação é retornada no Elemento 5.
Objeto 41 Variações 1, 2, 3 ou 4:
Tag Individual: N1 = Não Importa; N2 = 3, 4 ou 5; N3 = 4101, 4102, 4103 ou 4104; N4 = Índice do Ponto. Quando lido, o valor do Tag conterá o valor do campo CONTROL CODE. Para o uso de SELECT e OPERATE devem ser criados dois tags; cada um receberá a leitura no momento que a operação correspondente (SELECT ou OPERATE) ocorrer. Para o uso de DIRECT OPERATE (5), só é necessário um único tag.
Tag Bloco: Possui as mesmas configurações acima, porém o bloco poderá 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 (objeto 12 Variação 1):
// O Bloco AbreFecha é formado por 5 elementos.
// O Exemplo supõe o envio do comando recebido para um outro driver DNP Mestre
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 invalido / 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 valor 0 – Sucesso na escrita
‘Status esperados pelo Mestre em caso de erro:
‘select case WStatus
‘case 1
‘Endtext = “Operate recebido depois do Timeout 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
Aplicação exemplo em anexo desenvolvida no Elipse E3 v4.5.245.