|
<< Clique para Mostrar o Sumário >>
Configuração de Gateway |
Para aplicações de gateway, onde é necessário o envio dos dados deste Driver para outros protocolos, tais como DNP 3.0 ou IEC 104, é possível ocorrer situações onde, em caso de reinício de uma aplicação ou chaveamento para uma aplicação redundante, ou Hot-Standby, há uma perda ou duplicação de eventos.
Isto pode ocorrer quando um evento foi recebido por este Driver e repassado adiante, mas ainda não foi recebido pelo mestre remoto do outro protocolo, conforme o exemplo da figura a seguir.

Configuração de Gateway
A imagem anterior mostra que é possível existir eventos transferidos e pendentes de transmissão nos diversos componentes (61850 Server, 61850 Client, DNP Slave e DNP Master). Esta fila de eventos pendentes pode ser maior ou menor dependendo das configurações destes componentes e da arquitetura de rede, dentre outros fatores.
Quando ocorre um chaveamento do Gateway A para o Gateway B, por exemplo, os eventos que estavam pendentes de transmissão podem tanto serem perdidos ou serem duplicados, dependendo da configuração da aplicação. Isto porque o protocolo 61850 permite que sejam recebidas novamente as mensagens de Buffered Reports, a partir da programação do campo EntryID de cada Report, que é um identificador único de cada mensagem enviada.
Este Driver já possui um recurso de geração de arquivos com o último EntryID de cada Report, que é utilizado para habilitação dos Reports quando este Driver inicia novamente. Entretanto, estes EntryIDs são atualizados com base no instante de recepção das mensagens por este Driver, e não pela recepção de fato do dado em um elemento externo, no caso do exemplo anterior, no centro de controle.
Desta forma, ao habilitar o recurso de Gateway pela opção Wait for Gtw Ref on Startup, este Driver espera que uma aplicação Elipse Power informe uma String que representa o endereço de um Tag 61850 dentro de um outro Driver, como por exemplo DNP ou IEC 104 Escravo. Quando este outro Driver recebe a confirmação que um evento foi entregue ao centro de controle, DNP ou IEC 104 Mestre, aquele pode informar este Driver sobre este evento, e desta forma este Driver pode posicionar os controles de EntryID à frente para que, caso haja um novo chaveamento, o fluxo de eventos continue a partir deste último ponto, evitando assim ao máximo a perda ou repetição de eventos.

Gerenciamento de EntryIDs
Os passos para a configuração deste recurso são os seguintes:
1.Habilite as opções Check BRCB Entry ID, R/W Entry ID File (.EID) e Wait for Gtw Ref on Startup. Além disto, caso o IED utilize os mesmos Reports para os dois gateways, deve-se avaliar o uso de uma lista fixa de Reports na opção User Defined Report List, evitando assim que uma aplicação redundante tente habilitar outros Reports que não são os esperados.
2.Neste Driver, crie o Tag FinishedGtwRef e os Tags Bloco GatewayRef e GatewayEventOK, conforme a imagem a seguir. Estes Tags estão descritos no tópico Referência de Tags - Tags Internos.

Tags criados neste Driver
3.Tomando o Driver DNP Slave como exemplo, crie um Tag Bloco com o parâmetro N2 igual a -22, que recebe no evento OnRead uma lista com todos os eventos confirmados pelo Mestre. Consulte a documentação do Driver DNP para mais informações.

Tag Bloco no Driver DNP Slave
4.Os Tags no Driver DNP Slave devem receber Associações dos Tags deste Driver. A imagem a seguir mostra um exemplo em que o Tag AI_0, um objeto DNP 3205 com índice 0 (zero), é alimentado por uma corrente da fase A vinda deste Driver.

Propriedades do Tag
5.A aplicação, ao iniciar, deve inicializar as referências, passando um texto que representa o endereço DNP para cada Tag deste Driver necessário para realizar o controle de EntryIDs. Porém esta escrita só pode ser realizada no momento que este Driver estiver com os Logical Devices criados, caso contrário a escrita falha. Para solucionar este problema, o exemplo a seguir mostra um Tag Interno que tenta enviar a configuração a cada 5 (cinco) segundos. A partir do momento que obtém sucesso, não tenta mais. Ao final do processo é escrito o Tag FinishedGtwRef.
6.Também neste exemplo, a String de referência foi obtida através da união do objeto e variação do Tag DNP mais o índice. No Driver DNP Slave, estes valores são obtidos nos parâmetros N3 e N4, respectivamente.
•Valor inicial do Tag InitGateway: True (Boolean)
•Evento WhileNotOK: Expressão: Value Repetir o Evento a cada 5000 ms
Sub InitGateway_WhileNotOK()
Set DNPSlave = Application.GetObject("DNPSlave")
Set Ref = Application.GetObject("IEC61850").Item("GatewayRef")
bFirst = FALSE
For Each tag in DNPSlave
If TypeName(tag) = "IOTag" Then
If tag.N2 = 1 Then
Source = tag.Links.Item("Value").Source
Set s = Application.GetObject(Source)
arr = Split(s.ParamDevice,":")
Ref.Item("IEDName").Value = arr(0)
Ref.Item("LDName").Value = arr(1)
Ref.Item("Object").Value = s.ParamItem
Ref.Item("Ref").Value = CStr(tag.N3) + ";" + CStr(tag.N4)
If NOT bFirst Then
bFirst = Ref.Write(1) 'sync
If NOT bFirst Then Exit Sub
Else
Ref.Write 2 'async unconfirmed
End If
End If
End If
Next
res = Application.GetObject("IEC61850").Item("FinishedGtwRef").WriteEx(2) 'async unconfirmed
If res Then Value = FALSE
End Sub
7.Quando o Tag Bloco EventOK é lido no Driver DNP Slave, significa que um novo evento foi recebido pelo DNP Master. O script a seguir obtém as informações deste evento e repassa a este Driver. No caso específico do Driver DNP Slave, este Tag Bloco retorna algumas informações sobre o evento, como objeto e variação, índice, classe DNP, valor, estampa de tempo válida e estampa de tempo. Todos estes parâmetros são enviados para este Driver via escrita no Tag Bloco GatewayEventOK, exceto a classe DNP, que não é relevante.
Sub EventOK_OnRead()
Set IECBlock = Application.GetObject("IEC61850.GatewayEventOK")
IECBlock.Item("Ref").Value = CStr(Item("ObjVar").Value) + ";" + CStr(Item("Index").Value)
IECBlock.Item("Value").Value = Item("Value").Value
IECBlock.Item("TSValid").Value = Item("TSValid").Value
IECBlock.Item("Time").Value = Item("Time").Value
IECBlock.Write 2 'async
End Sub
8.Neste momento, este Driver posiciona os EntryIDs para o próximo evento pendente. Para sincronizar os EntryIDs com o computador redundante, é necessário seguir os passos indicados no tópico Redundância - Utilizando Arquivos EID.
9.Para posicionar os EntryIDs, este Driver utiliza a seguinte metodologia:
•Quando um novo Report é recebido, verifica se algum objeto teve uma variação de valor ou qualidade. Se houve, um novo evento é adicionado à uma lista interna individual por objeto.
•Quando um evento é quitado por um Driver externo e recebido pelo Tag Bloco GatewayEventOK, a lista interna é comparada com o evento removido da seguinte forma:
•Se a estampa de tempo não é válida, ou seja, um Tag no Driver DNP ou IEC 104 não está usando estampa de tempo, todos os eventos são removidos da lista
•Se a estampa de tempo é válida, os eventos são removidos se são iguais ou mais antigos que o evento recebido
Para evitar processamento desnecessário, recomenda-se que apenas sejam adicionadas referências de Tags que não podem ter mudanças perdidas ou duplicadas, tipicamente Tags digitais ou de estados simples ou duplos com estampa de tempo. Também recomendamos que, neste caso, os Datasets associados aos Reports sejam separados por tipo de Tag, como por exemplo não colocar no mesmo Dataset Tags Digitais e Analógicos, de forma a evitar a recepção de valores analógicos antigos sem necessidade.