Devido à abrangência da especificação CIM, uma implementação completa iria consumir muito tempo e não seria o mais adequado para o protótipo. Fez-se um trabalho de redução das classes originais para o estritamente necessário de modo a modelar a subestação definida na seção 5.2. Com a exclusão das classes, muitos pacotes também não tiveram representação, sendo eliminados. A Figura 14 mostra o diagrama de classes completo do modelo reduzido gerado para o protótipo. Foi ocultada a classe Core.Naming do diagrama para evitar a poluição visual, pois ela é a superclasse de todas as demais do modelo que precisam de identificação por nome.
A implementação do CIM reduzido foi feita na forma de objetos criados estaticamente. Não foi usado banco de dados nem persistência para esses objetos.
Nem todas as classes do modelo reduzido foram necessárias. A lista de todos os objetos presentes na aplicação Java executada na subestação estão na Tabela 2.
Os comentários na linha das medidas significam que outros atributos do objeto foram preenchidos. O número entre parênteses identifica o valor considerado normal para a medida. A letra n representa a faixa de variação considerada normal.
Foi implementado apenas um sensor (MeasurementValue) por medida (Measurement).
Apesar de haver no modelo a classe para definição do transformador, seus enrolamentos e comutador de taps, eles ainda não foram utilizados na implementação.
58
Breaker (from Wires) Connector
(from Wires) Version : Logical View::jav a::lang::String = "cim10_030501"
LastUpdate : Logical View::jav a::lang::String = "11/05/2006"
CimVersionREDUZIDO()
BusbarSection (from Wires)
PowerTransf ormer (from Wires) EquipmentContainer
(from Core)
Equipment (from Core) 0..1
0..n 0..1
+Contains_Equipments 0..n
ConductingEquipment (from Core)
Limit (from Meas)
PowerSy stemResource (from Core)
Terminal (from Core)
0..n
1 +Terminals
0..n
+ConductingEquipment
1 Measurement
Value (from Meas)
LimitSet (from Meas)
1 0..n
+LimitSet 1
+Limits 0..n ValueToAlias
(from Meas)
Measurement (from Meas)
0..1
0..n
+MemberOf _PSR
0..1
+Contains_Measurements 0..n
0..n
0..1 +Measurements
0..n
+Terminal
0..1 1..n
1
+Contain_MeasurementValues 1..n
+MemberOf _Measurement 1
0..n
0..n
+Measurements0..n
+LimitSets 0..n ValueAliasSet
(from Meas) 1
1..n
+ValueAliasSet 1
+Values 1..n
0..n 0..1
+Measurements 0..n +ValueAliasSet
0..1
Unit (from Core)
0..n
1
+Measurements 0..n
+Unit 1 Control
(from Meas) 0..1
+ControlledBy _Control 0..1 0..1
+MeasuredBy _Measurement 0..n 0..1
0..1 +Controls
0..n
+ValueAliasSet 0..1
1 0..n
+Unit 1
+Controls 0..n
Switch (from Wires) Substation
(from Core) SubControl
Area (from Core)
0..1 1..n
+Contain_Substations
1..n +MemberOf _SubControlArea
0..1
Line (from Wires)
ACLineSegment (from Wires)
+Contains_ACLineSegments[]
Conductor (from Wires)
Figura 14 - Modelo CIM reduzido para o protótipo.
Classe CIM Objeto atributo.name atributo.aliasName Outros atributos Substation SE "ARC" "SE Araucaria"
SubControlArea AreaControle "COE_CCO" "COE Campo Comprido"
Terminal[3] TerminalConexao
TerminalConexao[0] "T_BARRA" "Terminal Barramento"
TerminalConexao[1] "T_CIRC_1" "Terminal Circuito 1"
TerminalConexao[2] "T_CIRC_2" "Terminal Circuito 2"
Breaker[3] Disjuntor
Disjuntor[0] "DJ_P" "DJ Principal"
Disjuntor[1] "DJ_1" "DJ Circuito 1"
Disjuntor[2] "DJ_2" "DJ Circuito 2"
BusbarSection Barra "BP" "Barra Principal"
Line Linha "LF" "Linha Fonte"
ACLineSegment[2] Circuito
Circuito[0] "C1" "Circuito 1"
Circuito[1] "C2" "Circuito 2"
Control[3] Controle
Controle[0] "C_DJ_P" "Controle Disjuntor Principal"
Controle[1] "C_DJ_1" "Controle Disjuntor Circuito 1"
Controle[2] "C_DJ_2" "Controle Disjuntor Circuito 2"
Measurement[9] Medida
Medida[0] "M_VB" "Tensao barramento" 10 < n(13.8) < 14 Medida[1] "M_FB" "Frequencia barramento" 55 < n(60) < 65 Medida[2] "M_I1" "Corrente Circuito 1" 0 < n(300) < 350 Medida[3] "M_P1" "Potencia Circuito 1" 0 < n(4) < 4.8 Medida[4] "M_I2" "Corrente Circuito 2" 0 < n(15) < 175 Medida[5] "M_P2" "Potencia Circuito 2" 0 < n(2) < 2.4 Medida[6] "M_DJ_P" "Estado DJ Principal"
Medida[7] "M_DJ_1" "Estado DJ Circuito 1"
Medida[8] "M_DJ_2" "Estado DJ Circuito 2"
MeasurementValue[9] ValorMedida
ValorMedida[0] "S_VB" "Sensor Tensao Barramento" double; sensor satura +30% do normal ValorMedida[1] "S_FB" "Sensor Frequencia Barramento" double; sensor satura +8,33% do normal ValorMedida[2] "S_I1" "Sensor Corrente Circuito 1" double; sensor satura +30% do normal ValorMedida[3] "S_P1" "Sensor Potencia Circuito 1" double; sensor satura +30% do normal ValorMedida[4] "S_I2" "Sensor Corrente Circuito 2" double; sensor satura +30% do normal ValorMedida[5] "S_P2" "Sensor Potencia Circuito 2" double; sensor satura +30% do normal ValorMedida[6] "S_E_DJ_P" "Sensor Estado DJ Principal" boolean; registro de timestamp ValorMedida[7] "S_E_DJ_1" Sensor Estado DJ Circuito 1 boolean; registro de timestamp ValorMedida[8] "S_E_DJ_2" "Sensor Estado DJ Circuito 2" boolean; registro de timestamp
LimitSet[1] CjtoLimitesVB Modelado apenas limites para a medida
M_VB CjtoLimitesVB[0] "CJ_LIM_N_VB" "Conjunto de Limites Normais da
VB" apenas um conjunto de limites normais
Limit[2] LimiteNormal
LimiteNormal[0] "LIM_N_VB_SUP" "Limite Superior VB para
ALarme" definido com o valor 14
LimiteNormal[1] "LIM_N_VB_INF" "Limite Inferior VB para ALarme" definido com o valor 13
Unit[5] Unidade
Unidade[0] "kV"
Unidade[1] "Hz"
Unidade[2] "MW"
Unidade[3] "A"
Unidade[4] "DIGITAL"
ValueAliasSet[1] DicionarioValores DicionarioValores[0]
Para o prototipo, há apenas um dicionario de valores para associar em todas as medidas / controles necessários ValueToAlias[2] Verbete
Verbete[0] "ABERTO" booleano definido como falso
Verbete[1] "FECHADO" booleano definido como verdadeiro
Tabela 2 - Objetos CIM para subestação do protótipo.
A Figura 15 identifica no diagrama unifilar da subestação os elementos que foram modelados em objetos CIM. Os retângulos representam os objetos dos
sensores. São os sensores que fornecem ao sistema o valor das medidas analógicas e digitais. As setas identificam as associações entre os objetos, conforme o diagrama de classes do CIM apresentado na Figura 14.
Figura 15 – Identificação dos objetos CIM sobre o unifilar.
As seguintes associações foram realizadas:
• A medida de tensão no barramento M_VB se associa com um conjunto
de limites CJ_LIM_N_VB. Este conjunto contém dois objetos de limites identificados na geração de alarmes para ultrapassagem de nível alto e nível baixo;
• Os disjuntores DJ_P, DJ_1, DJ_2 se associam respectivamente com as medidas M_DJ_P, M_DJ_1, M_DJ_2;
• As medidas M_DJ_P, M_DJ_1, M_DJ_2 se associam com os respectivos controles C_DJ_P, C_DJ_1, C_DJ_2;
COE_CCO ARC
T_BARRA
T_CIRC_1 T_CIRC_2
DJ_P
DJ_1 DJ_2
S_VB LF
C1 C2
C_DJ_P
C_DJ_1 C_DJ_2
M_P1
M_VB
M_I1
M_FB
M_P2 M_I2
M_DJ_P
M_DJ_1 M_DJ_2
S_FB
BP
S_I1 S_P1 S_I2 S_P2
S_E_DJ_1
S_E_DJ_P
S_E_DJ_2 CJ_LIM_N_VB
LIM_N_VB_SUP LIM_N_VB_INF
• As medidas M_DJ_P, M_DJ_1, M_DJ_2 se associam com seus respectivos sensores S_E_DJ_P, S_E_DJ_1, S_E_DJ_2;
• Todos os sensores se associam com as suas respectivas medidas;
• A barra BP se associa ao terminal T_BARRA;
• O terminal de conexão T_BARRA se associa com as medidas M_VB e M_FB;
• As medidas M_VB e M_FB se associam com seus respectivos sensores S_VB e S_FB;
• Os circuitos C1 e C2 se associam aos respectivos terminais de conexão T_CIRC_1 e T_CIRC_2;
• O terminal T_CIRC_1 se associa com as medidas M_I1 e M_P1 e estas aos seus sensores S_I1 e S_P1;
• O terminal T_CIRC_2 se associa com as medidas M_I2 e M_P2 e estas aos seus sensores S_I2 e S_P2;
• Todas as medidas se associam obrigatoriamente com um objeto de identificação da unidade de grandeza sendo medida;
• Todos os controles se associam a uma unidade também;
• As medidas digitais M_DJ_P, M_DJ_1, M_DJ_2 se associam a um
dicionário de valores para identificar o que significa cada estado digital;
Exemplo: Para uma medida digital, os estados verdadeiro/falso significam abertura/fechamento do equipamento, respectivamente. Para outra medida, os mesmos estados significam operação normal/falha.
• Os controles digitais C_DJ_P, C_DJ_1, C_DJ_2 também se associam
ao mesmo dicionário de valores;
Por enquanto, não há associação de linhas com elementos da subestação e nem de modelagem do transformador.
O terminal (terminal de conexão) serve como ponto de junção entre um barramento ou circuito e seus respectivos pontos de medição de valores.
O breaker (disjuntor) é um equipamento do sistema elétrico (derivado da classe PowerSystemResource) para efetuar comando e para ler medidas digitais.
As atualizações a seguir foram necessárias para adaptar as classes do modelo CIM à ontologia do JADE:
• Core.Naming
o Implementação da interface jade.content.Concept. Para que uma
classe do modelo possa ser mapeada num esquema de ontologia do JADE como um conceito, ela precisa implementar esta interface. Para facilitar, a implementação foi feita uma única vez diretamente na superclasse do CIM para objetos que utilizam atributos de nome;
o Inclusão dos métodos setters/getters para acesso aos atributos.
Conforme documentação do JADE [JadeOnto04], classes ontológicas (classes associadas a um esquema de ontologia por reflexão) devem fornecer esses métodos de acesso a atributos.
• Domain.Numeric
o Implementação da interface jade.content.Concept. Pelo mesmo
motivo usado nas classes nomeadas, a classe que define um tipo numérico de dado também será usada como um conceito na ontologia do protótipo;
o Implementação dos setter/getters para os atributos. Classes
ontológicas devem implementar métodos de acesso padronizados para seus atributos;
o Inicialização dos atributos atualmente utilizados (INT_TYPE = 0, DOUBLE_TYPE = 0, BOOLEAN_TYPE = false).
• Meas.MeasurementValue
o Implementação dos setter/getters para os atributos.
As classes abaixo foram removidas do modelo por possuírem correspondentes na linguagem Java:
• Domain.Boolean;
• Domain.Integer;
• Domain.Double;
• Domain.Short.