Sumário
Communication Driver Name: DNP3
Current Version: 1.0
Implementation DLL: T.ProtocolDriver.DNP30.dll
Protocol: DNP3.0 Master standard protocol
Interface: TCP/IP ou Serial
Description: O driver é utilizado para a comunicação com dispositivos de aquisição de dados (IED's) que utilizam o protocolo DNP3 Nível 3. A comunicação pode ser feita através de canal serial multiponto ou utilizando rede local Ethernet e protocolo TCP-IP, sendo que, nesse caso, cada IED tem um endereço IP.
IEDs types supported: Qualquer IED compatíivel DNP3
Communication block size: Maximum 250 bytes, formato FT 1.2
Protocol Options: Modo "LinkConfirm" e endreç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. Os objetos com a indicação L4 estão implementados, mas são definidos no nivel L4.
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 |
|
|
|
|
1 |
1 |
Single Bit Binary Input (packed) |
1 |
00,01,06 |
|
129 |
00, 01 |
|
1 |
2 |
Binary Input with status |
1 |
00,01,06 |
|
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 –L4 |
22 |
00,01,06 |
|
|
|
|
3 |
1 |
Double-bit Binary Input – Packed –L4 |
1 |
00,01,06 |
|
129 |
00, 01 |
|
3 |
2 |
Double-bit Binary Input – With flags–L4 |
1 |
00,01,06 |
|
129 |
00, 01 |
|
4 |
0 |
Double-bit Binary Input Event – Any Variation–L4 |
1 |
06,07,08 |
|
|
|
|
4 |
1 |
Double-bit Binary Input Event – whitout time–L4 |
1 |
06,07,08 |
|
129,130 |
17,18 |
|
4 |
2 |
Double-bit Binary Input Event- with absolut time–L4 |
1 |
06,07,08 |
|
129,130 |
17,18 |
|
4 |
3 |
Double-bit Binary Input Event - with relative time–L4 |
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 |
00,01 |
|
12 |
1 |
Control relay output block |
3,4,5,6 |
17,28 |
|
129 |
Echo of request |
|
20 |
0 |
Binary Counter – all variations |
1,7,8,9,10 |
|
|
|
|
|
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 |
1,22 |
|
|
|
|
|
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 |
9 |
Frozen Counter – 32-bit without flag |
1 |
00,01,06 |
|
129 |
00, 01 |
|
21 |
10 |
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) – L4 |
1 |
00,01,06 |
|
129 |
00, 01 |
|
32 |
0 |
Analog Input event – all variations |
1 |
06,07,08 |
|
|
|
|
32 |
1 |
Analog Input event - 32 Bits without time |
1 |
06,07,08 |
|
129,130 |
17,18 |
|
32 |
2 |
Analog event without flag – 16 Bits – Without time |
1 |
06,07,08 |
|
129,130 |
17,18 |
|
32 |
3 |
32 Bit Analog event with flag – L4 |
1 |
06,07,08 |
|
129,130 |
17,18 |
|
32 |
4 |
16 Bit Analog event with flag– L4 |
1 |
06,07,08 |
|
129,130 |
17,18 |
|
32 |
5 |
Analog input event single float –without time– L4 |
1 |
06,07,08 |
|
129,130 |
17,18 |
|
32 |
7 |
Analog input event single float –with time– L4 |
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 –L4 |
1 |
00,01,06 |
|
129 |
00, 01 |
|
41 |
1 |
Analog output block - 32Bit |
3,4,5,6 |
17,28 |
|
129 |
Echo of request |
|
41 |
2 |
Analog output block - 16 Bit |
3,4,5,6 |
17,28 |
|
129 |
Echo of request |
|
41 |
3 |
Analog output block – Single float - L4 |
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 |
Seleciona |
Mestre |
4 |
Opera |
Mestre |
5 |
Opera direto (sem seleção) |
Mestre |
6 |
Opera 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 |
Coloca o objeto em uma classe |
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:
Variáveis estáticas não associadas às classes 1, 2 ou 3 não causam eventos;
A associação de variáveis a classes deve ser feita no IED (dispositivo servidor), utilizando um programa de configuração do mesmo. O SCADA executa a aquisição de dados das classes sem, entretanto, definir que variável pertence a que classe.
Funcionamento geral
A sequência normal de operação do mestre é:
- Ao ser iniciado, envia pedido de leitura de eventos de classe 1, 2 e 3 (60/2, 60/3 e 60/4) para todas as IED's;
- Em sequência envia pedido de leitura de classe 0 (leitura de integridade - 60/1) para todas as IED's;
- Ciclicamente, com intervalos de tempo conforme definido no arquivo de inicialização, faz leitura das classes 0, 1, 2 e 3 (60/1 a 60/4);
- Quando recebe uma mensagem com IIN (Internal Indication) informando que IED requer sincronismo, envia mensagens de sincronismo (50,1). Essa mensagem só é enviada por solicitação da IED;
- Quando recebe uma mensagem com IIN indicando que IED reiniciou (restart), executa uma escrita de "clear device flag" (80/1) e vai para (1);
- Quando o usuário executa um comando de saída digital ou saída analógica, o software envia a respectiva requisição para o IED (12/1 ou 41/2);