Sumário
Communication Driver Name: DNP30S
Current Version: 1.0
Implementation DLL: T.ProtocolDriver.DNP30S.dll
Protocol: DNP3.0 Slave standard protocol
Interface: TCP/IP ou Serial
Description: O driver é utilizado para a comunicação em modo escravo (ou Servidor) com supervisórios ou outros equipamentos que utilizam o protocolo DNP3 Nível 2 em Modo MESTRE (ou Cliente). A comunicação pode ser feita através de canal serial ponto a ponto ou utilizando rede local Ethernet e protocolo TCP-IP como escravo único de um endereço IP.
Masters types supported: Qualquer equipamento em Modo MESTRE compatíivel DNP 3.0
Communication block size: Maximum 250 bytes, formato FT 1.2
Protocol Options: Modo "LinkConfirm" e endereço da estação mestre.
Multi-threading: Configurável pelo usuário, default é cinco threads para cda nó da rede.
Max number of nodes: user defined
PC Hardware requirements: Standard PC Ethernet interface board, RS485 or RS232 port
PC Software requirements: ActionNET system.
Objetos de dados suportados
O quadro abaixo apresenta os objetos DNP e suas variantes, suportados por esta implementação.
Objeto |
|
|
Requisição (Mestre) |
|
Resposta (Escravo) |
|
|
|
Obj. |
Var |
Descrição |
Function Codes (decimal) |
Qualifier. Codes (Hex) |
|
Function Codes (decimal) |
Qualifier Codes (Hex) |
|
1 |
0 |
Binary Input (any variation) |
1 |
00,01,06 |
|
|
|
|
|
|
|
22 |
00,01,06 |
|
129 |
|
|
1 |
1 |
Single Bit Binary Input (packed) |
1 |
00,01,06 |
|
129 |
00, 01 |
|
1 |
2 |
Binary Input with status |
|
|
|
129 |
00, 01 |
|
2 |
0 |
Binary Input event (any variation) |
1 |
06,07,08 |
|
|
|
|
2 |
1 |
Binary Input change without time |
1 |
06,07,08 |
|
129,130 |
17,18 |
|
2 |
2 |
Binary Input change with absolut time |
1 |
06,07,08 |
|
129,130 |
17,18 |
|
2 |
3 |
Binary Input change with relative time |
1 |
06,07,08 |
|
129,130 |
17,18 |
|
3 |
0 |
Double bit Binary input – Any variation |
22 |
00,01,06 |
|
|
|
|
3 |
1 |
Double-bit Binary Input – Packed |
1 |
00,01,06 |
|
129 |
00, 01 |
|
3 |
2 |
Double-bit Binary Input – With flags |
1 |
00,01,06 |
|
129 |
00, 01 |
|
4 |
0 |
Double-bit Binary Input Event – Any Variation |
1 |
06,07,08 |
|
|
|
|
4 |
1 |
Double-bit Binary Input Event – whitout time |
1 |
06,07,08 |
|
129,130 |
17,18 |
|
4 |
2 |
Double-bit Binary Input Event- with absolut time |
1 |
06,07,08 |
|
129,130 |
17,18 |
|
4 |
3 |
Double-bit Binary Input Event - with relative time |
1 |
06,07,08 |
|
129,130 |
17,18 |
|
10 |
1 |
Binary Output – Any Variation |
1 |
00,01,06 |
|
|
|
|
10 |
2 |
Binary Output – status with flags |
1 |
00,01,06 |
|
129 |
|
|
12 |
1 |
Control relay output block |
3,4,5 |
17,28 |
|
129 |
Echo of request |
|
20 |
0 |
Binary Counter – all variations |
|
|
|
|
|
|
20 |
1 |
Counter – 32-bit with flag |
1 |
00,01,06 |
|
129 |
00, 01 |
|
20 |
2 |
Counter – 16-bit with flag |
1 |
00,01,06 |
|
129 |
00, 01 |
|
20 |
5 |
Counter – 32-bit without flag |
1 |
00,01,06 |
|
129 |
00, 01 |
|
20 |
6 |
Counter – 16-bit without flag |
1 |
00,01,06 |
|
129 |
00, 01 |
|
21 |
0 |
Frozen counter – all variations |
|
|
|
|
|
|
21 |
1 |
Frozen Counter – 32-bit with flag |
1 |
00,01,06 |
|
129 |
00, 01 |
|
21 |
2 |
Frozen Counter – 16-bit with flag |
1 |
00,01,06 |
|
129 |
00, 01 |
|
21 |
3 |
Frozen Counter – 32-bit without flag |
1 |
00,01,06 |
|
129 |
00, 01 |
|
21 |
4 |
Frozen Counter – 16-bit without flag |
1 |
00,01,06 |
|
129 |
00, 01 |
|
22 |
0 |
Counter Event – Any Variation |
1 |
06 |
|
|
|
|
22 |
1 |
Counter Event – 32-bit with flag |
1 |
06,07,08 |
|
129,130 |
17,18 |
|
22 |
2 |
Counter Event – 16-bit with flag |
1 |
06,07,08 |
|
129,130 |
17,18 |
|
23 |
0 |
Frozen Counter Event – Any Variation |
1 |
06,07,08 |
|
|
|
|
23 |
1 |
Frozen Counter Event – 32-bit with flag |
1 |
06,07,08 |
|
129,130 |
17,18 |
|
23 |
2 |
Frozen Counter Event – 16-bit with flag |
1 |
06,07,08 |
|
129,130 |
17,18 |
|
30 |
0 |
Analog Input – all variations |
1, 22 |
00,01,06 |
|
|
|
|
30 |
1 |
32 Bits Analog Input |
1 |
00,01,06 |
|
129 |
00, 01 |
|
30 |
2 |
16 Bit Analog input with flag |
1 |
00,01,06 |
|
129 |
00, 01 |
|
30 |
3 |
32 Bits Analog Input without flag |
1 |
00,01,06 |
|
129 |
00, 01 |
|
30 |
4 |
16 Bit Analog input without flag |
1 |
00,01,06 |
|
129 |
00, 01 |
|
30 |
5 |
Short Floating Point (32bits) |
1 |
00,01,06 |
|
129 |
00, 01 |
|
32 |
0 |
Analog Input event – all variations |
1 |
06,07,08 |
|
|
|
|
32 |
1 |
32 Bits Analog Input event |
1 |
06,07,08 |
|
129,130 |
17,18 |
|
32 |
2 |
16 Bit Analog event without flag |
1 |
06,07,08 |
|
129,130 |
17,18 |
|
32 |
3 |
32 Bit Analog event with flag |
1 |
06,07,08 |
|
129,130 |
17,18 |
|
32 |
4 |
16 Bit Analog event with flag |
1 |
06,07,08 |
|
129,130 |
17,18 |
|
32 |
5 |
Analog input event single float –without time |
1 |
06,07,08 |
|
129,130 |
17,18 |
|
32 |
7 |
Analog input event single float –with time |
1 |
06,07,08 |
|
129,130 |
17,18 |
|
40 |
0 |
Analog Output Status–any variation |
1 |
|
|
|
|
|
40 |
1 |
Analog Output Status – 32bits with flag |
1 |
00,01,06 |
|
129 |
00, 01 |
|
40 |
2 |
Analog Output Status -16bits with flag |
1 |
00,01,06 |
|
129 |
00, 01 |
|
40 |
3 |
Analog output status – Single float with flag |
1 |
00,01,06 |
|
129 |
00, 01 |
|
41 |
1 |
32Bit Analog output block |
3,4,5,6 |
17,28 |
|
129 |
Echo of request |
|
41 |
2 |
16 Bit Analog output block |
3,4,5,6 |
17,28 |
|
129 |
Echo of request |
|
41 |
3 |
Analog output block – Single float |
3,4,5,6 |
17,28 |
|
129 |
Echo of request |
|
50 |
1 |
Time and Data – Absolut time |
1,2 |
0x07 |
|
129 |
07 |
|
51 |
1 |
Time and Date CTO – Absolute time, synchronized |
|
|
|
129,130 |
07 |
|
51 |
2 |
Time and Date CTO – Absolute time, unsynchronized |
|
|
|
129,130 |
07 |
|
52 |
1 |
Time Delay – Coarse |
|
|
|
129 |
07 |
|
52 |
2 |
Time Delay – Fine |
|
|
|
129 |
07 |
|
60 |
1 |
Class 0 data |
1 |
0x06 |
|
|
|
|
60 |
2 |
Class 1 data |
1,20,21 |
06,07,08 |
|
|
|
|
60 |
3 |
Class 2 data |
1,20,21 |
06,07,08 |
|
|
|
|
60 |
4 |
Class 3 data |
1,20,21 |
06,07,08 |
|
|
|
|
80 |
1 |
Internal indications |
1,2 |
00,01 |
|
129 |
01 |
|
Na implementação do protocolo o mestre só executa as requisições destacadas em azul. O equipamento servidor, responde utilizando as respostas destacadas em amarelo. Observe-se que cabe ao equipamento servidor decidir como será a resposta e o mestre deve suportar todas as funções do nível 2 possíveis de serem utilizadas como resposta.
Os objetos, variações de objeto, códigos de função e qualificadores tem seus significados padronizados no DNP. Abaixo são mostradas as tabelas de código de função e qualificador:
Código de Função |
Descrição |
Origem |
1 |
Ler |
Mestre |
2 |
Escrever |
Mestre |
3 |
Selecionar |
Mestre |
4 |
Operar |
Mestre |
5 |
Operar direto (sem seleção) |
Mestre |
6 |
Operar direto (sem ack) |
Mestre |
7 |
Congela Imediatamente |
Mestre |
8 |
Congela Imediatamente (sem ack) |
Mestre |
9 |
Congela e limpa |
Mestre |
10 |
Congela e lê |
Mestre |
13 |
Restart (Cold) |
Mestre |
14 |
Restart (Warm) |
Mestre |
20 |
Habilita mensagem não solicitada |
Mestre |
21 |
Desabilita mensagem não solicitada |
Mestre |
22 |
Assinala classe a objeto |
Mestre |
23 |
Medida com delay |
Mestre |
129 |
Resposta |
Escravo |
130 |
Resposta não solicitada (não existe no nível 2) |
Escravo |
Código de Qualificador |
Uso em requisição |
Uso em resposta |
00,01 |
Um intervalo de pontos estáticos (classe 0) ou um único ponto com um número |
Objeto estático |
06 |
Todos os pontos |
Inválido |
07,08 |
Uma quantidade limitada de eventos. |
Um ponto simples sem número (isto é uma data / hora) |
17, 28 |
Controles (usualmente um ou mais pontos não relacionados) |
Objetos evento (usualmente um ou mais pontos não relacionados) |
O DNP tem o conceito de classes de dados, sendo definidas quatro classes:
Classe 0: Corresponde ao ponto estático, analógico ou digital. Seu conteúdo é o valor de uma variável analógica ou digital, de entrada ou saída, em um dado momento;
Classe 1, 2 e 3: Corresponde a eventos de transição de estados ou de variáveis de classe 0 ou situações internas à remota / relé que causam o evento.
O que ocorre normalmente nos IED's ao utilizar-se o DNP, é associar à variação de estado de variáveis digitais ou valores de banda morta de variáveis analógicas as classes 1, 2 e 3. Dessa forma, a modificação do estado / valor dessas variáveis causará eventos que serão transmitidos através do pedido de eventos das respectivas classes (60/2, 60/3 e 60/4). Periodicamente, pode ser feita uma leitura cíclica para verificação de integridade. Essa leitura, corresponde a um pedido de classe 0 (60/1).
Observações:
- Nesta implementação é considerado automaticamente que variáveis digitais Tipo BI, quando sofrerem alteração serão enviadas como de Classe 1, na forma do Objeto 2 com variação 2 (Binary input with time stamp).
- Nesta implementação é considerado automaticamente que variáveis analógicas AI, AIF, quando sofrerem alteração serão enviadas como de Classe 2, na forma dos Objetos 30 variação 3, para AI e como 30 variação 5 para o AIF.
Funcionamento geral
A sequência normal de operação do escravo é:
- Caso seja necessário na instalação o mestre deverá enviar mensagem de sincronismo (50,1) periodicamente. A data e horário recebido será entendido como UCT (ou GMT), e será utilizada para alterar o relógio do computador "host".
- Ao iniciar a execução, nas primeiras mensagens de resposta com, enviará flags de IIN indicando que IED reiniciou (restart). O mestre deverá então executar uma escrita de "clear device flag" (80/1) para limpar esta indicação;
- Sempre que houver alteração do estado de digitais ou analógicas, que sejam configurados na tabela POINTS, com AccesType como ReadWrite, será enviada mensagem de evento como Classe 1 ou Classe 2. Caso não se desejar eventos em alguns pontos usar para estes AccessType = Read;
- Quando o modo escravo recebe um pedido de comando de saída digital ou saída analógica, através software envia a respectiva requisição para o IED (12/1 ou 41/2);