OpenDSS
Introducao ao OpenDSS
Autor:
Jason Sexauer, OpenDSS User
Traducao e Edicao: Paulo Radatz e Celso Rocha
26 de julho de 2016
OpenDSS Primer - Portuguese Version
Program Revision: 7.6 July 2016
2
OpenDSS Primer - Portuguese Version
Program Revision: 7.6 July 2016
1 License
Copyright (c) 2008-2012, Electric Power Research Institute, Inc.
1
OpenDSS Primer - Portuguese Version
Program Revision: 7.6 July 2016
2
OpenDSS Primer - Portuguese Version
Program Revision: 7.6 July 2016
Sumario
1 License 1
8 Recursos Adicionais 30
8.1 Onde ir a partir daqui? . . . . . . . . . . . . . . . . . . . . . . . . . . 31
8.2 Recursos de Referencia . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3
OpenDSS Primer - Portuguese Version
Program Revision: 7.6 July 2016
4
OpenDSS Primer - Portuguese Version
Program Revision: 7.6 July 2016
5
OpenDSS Primer - Portuguese Version
Program Revision: 7.6 July 2016
foi implementada atraves da versao DLL do programa para permitir que usuarios
mais experientes possam utilizar os recursos do software para realizar novos tipos
de estudos. Atraves da interface COM, o usuario e capaz de projetar e executar
modos de solucao proprios atraves de um programa externo e realizar as funcoes
do simulador, incluindo a definicao dos dados dos modelos. Em outras palavras, o
OpenDSS pode ser implementado inteiramente de modo independente de qualquer
banco de dados fixo ou de um circuito definido em um arquivo de texto fixo.
Por exemplo, o OpenDSS pode ser controlado por programas como Python, MATrix
LABoratory (MATLAB), por ferramentas da MS Office, com destaque para o Visual
Basic for Applications (VBA), dentre outros programas.
6
OpenDSS Primer - Portuguese Version
Program Revision: 7.6 July 2016
7
OpenDSS Primer - Portuguese Version
Program Revision: 7.6 July 2016
3.1 Barra
.. N
.
3
2
1
0
3.2 Terminal
8
OpenDSS Primer - Portuguese Version
Program Revision: 7.6 July 2016
N M
9
OpenDSS Primer - Portuguese Version
Program Revision: 7.6 July 2016
Terminal
PC
10
OpenDSS Primer - Portuguese Version
Program Revision: 7.6 July 2016
de Energia.
EnergyMeter: Esse elemento de suporte corresponde a um medidor que fornece
diversos resultados sobre a sua area de medicao.
Monitor: Os monitores sao instalados em pontos especficos para fornecerem
resultados eletricos escolhidos.
CapControl: Esse elemento de suporte corresponde a um elemento de controle
que tem como objetivo controlar um capacitor.
RegControl: Esse elemento de suporte corresponde a um elemento de controle
que tem como objetivo controlar o tap ou taps de um transformador.
11
OpenDSS Primer - Portuguese Version
Program Revision: 7.6 July 2016
12
OpenDSS Primer - Portuguese Version
Program Revision: 7.6 July 2016
13
OpenDSS Primer - Portuguese Version
Program Revision: 7.6 July 2016
Cada comando corresponde a uma linha de texto. Via de regra, cada comando
apresenta um Verbo e alguns Parametros.
14
OpenDSS Primer - Portuguese Version
Program Revision: 7.6 July 2016
O segundo tipo de linha de comando corresponde aquela em que o verbo nao interage
com um elemento, por exemplo:
VerboComando Param1=Valor1 Param2=Valor2
S e t mode=d a i l y s t e p s i z e =1h number=24
5.2 Verbo
A Tabela 1 apresenta os verbos mais comuns. Para encontrar todos os verbos dis-
ponveis, clique no botao de Ajuda e selecione a opcao Executive.
5.3 Parametros
15
OpenDSS Primer - Portuguese Version
Program Revision: 7.6 July 2016
especificados atraves de seu nome completo, a menos que o contexto deixe claro
qual e o elemento. Por exemplo, quando especificamos um elemento CapControl, o
elemento capacitor ja e inferido. Por esse motivo, o nome da classe do elemento nao
precisa ser includo, ou seja, se o capacitor Capacitor.Cap1 deve ser controlado por
um elemento CapControl, na descricao do elemento CapControl deve-se especificar
apenas Cap1, isto e, capacitor = Cap1.
O nome completo de um elemento possui o seguinte formato:
C l a s s e E l e m e n t o . NomeElemento
Li ne . Linha
Para acessar uma propriedade de um elemento, o seguinte formato deve ser utilizado:
C l a s s e E l e m e n t o . NomeElemento . PropriedadeNome
Li ne . Linha . Phases
Alem disso, os parametros tambem podem ser especificados na sua ordem padrao.
Isso e comumente feito quando se especifica a propriedade elemento ou objeto, pois
geralmente essas propriedades sao as primeiras a serem descritas. Por fim, a es-
pecificacao pela ordem e pelo par parametro/valor podem ser misturadas, como
mostrado abaixo:
New EnergyMeter . Feeder Li ne . L115 , t e r m i n a l =1, e n a b l e d=f a l s e
Ao especificar um novo dispositivo, a muitos dos seus parametros sao dados valores
razoaveis. A documentacao completa sobre quais parametros devem ser especifica-
16
OpenDSS Primer - Portuguese Version
Program Revision: 7.6 July 2016
dos, quais parametros recebem possuem/valores padroes (default) e quais sao esses
valores e fornecida na documentacao dos comandos.
Em geral, classes de elementos que possuem as propriedades element, object, termi-
nal, bus1 ou bus2 nao possuem valores padrao e deve ser especificados no instante
da criacao do dispositivo.
5.4 Comentarios
Para inserir comentarios em multiplas linhas e necessario utilizar (/* ... */), con-
forme exemplo a seguir:
/ Comentando um t r e c h o de c o d i g o
New Monitor . FontePQ Vsource . Fonte 1 mode=1 p p o l a r=no
New Monitor . FonteVI Vsource . Fonte 1 mode=0 V I p o l a r=Yes
/
17
OpenDSS Primer - Portuguese Version
Program Revision: 7.6 July 2016
Ha duas maneiras de incluir arquivos DSS externos dentro do codigo analisado pelo
OpenDSS:
1. Comando Compile: Esse comando adiciona no codigo analisado o arquivo
selecionado, entretanto o diretorio onde os resultados sao salvos e alterado
para o diretorio no qual o arquivo escolhido pelo comando Compile esta salvo.
2. Comando Redirect: Esse comando adiciona no codigo analisado o arquivo sele-
cionado, entretanto, diferentemente do comando Compile, o diretorio continua
sendo o do arquivo analisado.
Alem disso, algumas propriedades como, por exemplo, mult presente na classe Lo-
adShape, pode exigir uma lista imensa de valores. Por esse motivo, o OpenDSS
possibilita a leitura desses valores em arquivos externos que podem estar em for-
mato *.txt ou *csv. Segue um exemplo:
LoadShape . LS1 mult=( F i l e= Example . csv )
5.7 Exemplo
18
OpenDSS Primer - Portuguese Version
Program Revision: 7.6 July 2016
// Sempre i n t e r e s s a n t e l i m p a r a memoria do OpenDSS
clear
New o b j e c t=c i r c u i t . E x a m p l e C i r c u i t
basekv =115 1 . 0 0 0 . 0 6 0 . 0 3 20000 21000 4 . 0 3 . 0
// D e f i n i n d o o t r a n s f o r m a d o r da s u b e s t a c a o
New t r a n s f o r m e r . subxfrm p h a s e s=3 w i n d i n g s=2 b u s e s =(SourceBus subbus )
conns = d e l t a wye kvs =(115 1 2 . 4 7 ) kvas =(20000 2 0 0 0 0 ) XHL=7
// D e f i n i n d o l i n h a s
New l i n e . l i n e 1 bus1=subbus bus2=l o a d b u s 1 l i n e c o d e =336 matrix l e n g t h =10
New l i n e . l i n e 2 l o a d b u s 1 l o a d b u s 2 336 matrix 10
New l i n e . l i n e 3 Loadbus2 l o a d b u s 3 336 matrix 20
// D e f i n i n d o c a r g a s
New l o a d . l o a d 1 bus1=l o a d b u s 1 p h a s e s=3 kv =12.47 kw=1000.0 p f =0.88 model
=1
c l a s s =1 duty=day
New l o a d . l o a d 2 bus1=l o a d b u s 2 p h a s e s=3 kv =12.47 kw=500.0 p f =0.88 model=1
c l a s s =1 duty=day conn=d e l t a
// D e f i n i n d o um c a p a c i t o r e s e u c o n t r o l e
New c a p a c i t o r . Cap1 bus1=l o a d b u s 2 p h a s e s=3 kvar =600 kv =12.47
New c a p c o n t r o l . Cap1Ctrl e l e m e n t=l i n e . l i n e 3 t e r m i n a l=1 c a p a c i t o r=Cap1
type=c u r r e n t c t r a t i o =1 ONsetting=60 OFFsetting=55 d e l a y=2
// Transformador que c o n e c t a a GD na r e d e
19
OpenDSS Primer - Portuguese Version
Program Revision: 7.6 July 2016
// D e f i n i n d o o s r e g u l a d o r e s
New r e g c o n t r o l . s u b x f r m C t r l t r a n s f o r m e r=subxfrm winding=2 v r e g =125
band=3 p t r a t i o =60 d e l a y =10
New r e g c o n t r o l . r e g 1 C t r l t r a n s f o r m e r=r e g 1 winding=2 v r e g =122 band=3
p t r a t i o =60 d e l a y =15
// D e f i n i n d o a g e r a c a o e o l i c a de 8MW
New g e n e r a t o r . gen1 bus1=r e g b u s kV=12.47 kW=8000 p f=1 conn=d e l t a
duty=wind Model=1
// D e f i n i n d o m o n i t o r e s para o b t e r a s g r a n d e z a s e l e t r i c a s e s c o l h i d a s
! Monitor que armazena a p o t e n c i a f o r n e c i d a p e l a Wind no i n t e r v a l o de
simulacao
New Monitor . gen1 e l e m e n t=g e n e r a t o r . gen1 t e r m i n a l =1 mode=1
! Monitor que armazena a s t e n s o e s e c o r r e n t e s da b a r r a LoadBus2
New Monitor . l o a d b u s 2 l o a d . l o a d 2 1 mode=0
! Monitor que armazena a s t e n s o e s e c o r r e n t e s s e q u e n c i a s no i n c i o da
linha 3
New Monitor . l i n e 3 l i n e . l i n e 3 1 mode=48
! Para p l o t a r o p e r f i l de t e n s a o eh n e c e s s a r i o um e n e r g y m e t e r no i n i c i o
do c i r c u i t o
New Energymeter . em1 l i n e . l i n e 1
// D e f i n i n d o a s t e n s o e s de b a s e do c i r c u i t o
S e t v o l t a g e b a s e s =(115 1 2 . 4 7 . 4 8 )
// C a l c u l a n d o a s t e n s o e s de b a s e para f o r n e c e r a s r e s p o s t a s , tambem , em
pu
Calcvoltagebases
// Resolvendo
Solve
// A p r e s e n t a r o s r e s u l t a d o s
20
OpenDSS Primer - Portuguese Version
Program Revision: 7.6 July 2016
! G r a f i c o da t e n s a o na Barra LoadBus2 d u r a n t e o d i a
P l o t monitor , o b j e c t=loadbus2 , Channels = ( 1 , 3 , 5 )
! V i z u a l i z a n d o a p o t e n c i a que f l u i p e l a l i n h a 1 para o u l t i m o segundo
simulado
V i s u a l i z e e l e m e n t=Li ne . l i n e 1 what=powers
! G r a f i c o do p e r f i l de t e n s a o para o u l t i m o segundo s i m u l a d o
Plot p r o f i l e
21
OpenDSS Primer - Portuguese Version
Program Revision: 7.6 July 2016
V e r i f i c a n d o s e o o b j e t o OpenDSS f o i c r i a d o com s u c e s s o
I f Not DSSObj . S t a r t ( 0 ) Then
MsgBox ( Unable t o s t a r t t h e OpenDSS Engine )
Return
End I f
Criando a t a l h o s para a s 3 p r i n c i p a i s i n t e r f a c e s
DSSText = DSSObj . Text
22
OpenDSS Primer - Portuguese Version
Program Revision: 7.6 July 2016
DSSCircuit = DSSObj . A c t i v e C i r c u i t
DSSSolution = DSSCircuit . S o l u t i o n
Como pode ser visto, do objeto DSS pai, derivam varias classes filhos. As principais
sao:
Interface Text
Interface Circuit
Interface Solution
A interface Text e a interface mais simples e uma das mais utilizadas. Essa interface
permite executar linhas de comandos na linguagem do OpenDSS, ou seja, qualquer
comando da versao Standalone esta imediatamente disponvel para o usuario.
Para usar essa interface, defina a sua propriedade Command com um comando da
versao Standalone, conforme apresentado a seguir:
Carregando o a r q u i v o IEEE123Master . d s s
DSSText . Command = Compile C: \ example \ IEEE123Master . dss
Criando um novo c a p a c i t o r a t r a v e s da i n t e r f a c e Text
DSSText . Command = New C a p a c i t o r . C1 Bus1=1 Phases=3 kVAR=1200
DSSText . Command = Enabled=f a l s e
A l t e r a n d o a b a r r a 1 da l i n h a L1
DSSText . Command = L in e . L1 . Bus1 = 5
Se o comando utilizado gera algum relatorio, o resultado pode ser recuperado usando
a propriedade Result da interface text, conforme exemplo a seguir:
Exportar a s t e n s o e s para uma a r q u i v o . c s v
Dim Filename As S t r i n g
DSSText . Command = Export V o l t a g e s
Filename = DSSText . R e s u l t
MsgBox ( F i l e saved t o : & Filename )
23
OpenDSS Primer - Portuguese Version
Program Revision: 7.6 July 2016
Essas classes filho tambem possuem funcoes convenientes que permitem a iteracao
ao longo dos elementos membros, que pode ser util quando se utiliza um loop no
algoritmo externo. Por exemplo, no codigo a seguir e utilizado um loop com objetivo
de incrementar em 20% a potencia ativa de todas as cargas.
Passe por t o d a s a s c a r g a s e i n c r e m e n t e a p o t e n c i a
Dim i L o a d s As I n t e g e r
i L o a d s = DSSCircuit . Loads . F i r s t C o n f i g u r a r a p r i m e i r a c a r g a da l i s t a
de c a r g a s como a t i v a
While i L o a d s
M u l t i p l i c a r a p o t e n c i a a t i v a da c a r g a s e l e c i o n a d a por 1 . 2
DSSCircuit . Loads .kW = DSSCircuit . Loads .kW 1 . 2
Passe para a proxima c a r g a da l i s t a , tornandoa a c a r g a a t i v a
i L o a d s = DSSCircuit . Loads . Next
End While
Entretanto, a vantagem deste metodo sobre simplesmente usar a interface Text, como
mostrado abaixo, e discutvel. Use o metodo que lhe seja mais conveniente.
D e f i n a a p o t e n c i a nominal do c a p a c i t o r C83 ( kvar ) para 1200
A t r a v e s da I n t e r f a c e Text
DSSText . Command = C a p a c i t o r . C83 .kVAR = 1200
24
OpenDSS Primer - Portuguese Version
Program Revision: 7.6 July 2016
Para mais informacoes sobre como obter resultados do fluxo de potencia a partir da
interface Circuit, veja em All commands(AllElementLoses,AllNodeVmagByPhase,
etc...) na secao COM no manual do OpenDSS.
Por fim, a interface circuit fornece informacoes muito especficas quanto ao metodo
e controle por tras da solucao. Usando os varios metodos de solucao(por exemplo,
25
OpenDSS Primer - Portuguese Version
Program Revision: 7.6 July 2016
V e r i f i c a n d o s e o o b j e t o OpenDSS f o i c r i a d o com s u c e s s o
I f Not DSSObj . S t a r t ( 0 ) Then
MsgBox ( Unable t o s t a r t t h e OpenDSS Engine )
Return
End I f
Criando a t a l h o s para a s 3 p r i n c i p a i s i n t e r f a c e s
DSSText = DSSObj . Text
26
OpenDSS Primer - Portuguese Version
Program Revision: 7.6 July 2016
DSSCircuit = DSSObj . A c t i v e C i r c u i t
DSSSolution = DSSCircuit . S o l u t i o n
Carregando o a r q u i v o IEEE123Master . d s s
DSSText . Command = Compile C: \ example \ IEEE123Master . dss
Criando um novo c a p a c i t o r a t r a v e s da i n t e r f a c e Text
DSSText . Command = New C a p a c i t o r . C1 Bus1=1 Phases=3 kVAR=1200
DSSText . Command = Enabled=f a l s e
A l t e r a n d o a b a r r a 1 da l i n h a L1
DSSText . Command = L in e . L1 . Bus1 = 5
Exportando t e n s o e s em c s v f i l e
Dim Filename As S t r i n g
DSSText . Command = Export V o l t a g e s
Filename = DSSText . R e s u l t
MsgBox ( F i l e saved t o : & Filename )
Passe por t o d a s a s c a r g a s
Dim i L o a d s As I n t e g e r V e r i f i c a r q u a l c a r g a s e s t a s e l e c i o n a d a
i L o a d s = DSSCircuit . Loads . F i r s t
While i L o a d s
M u l t i p l i c a r a p o t e n c i a a t i v a da c a r g a s e l e c i o n a d a por 1 . 2
DSSCircuit . Loads .kW = DSSCircuit . Loads .kW 1 . 2
Passe para a proxima c a r g a da l i s t a
i L o a d s = DSSCircuit . Loads . Next
End While
Armazenar a s t e n s o e s n o d a i s
Dim BusNames As S t r i n g ( )
Dim V o l t a g e s As Double ( )
BusNames = DSSCircuit . AllBusNames
V o l t a g e s = DSSCircuit . AllBusVmagPu
Resolva o c i r c u i t o
DSSSolution . S o l v e ( )
I f DSSSolution . Converged Then
MsgBox ( O c i r c u i t o f o i r e s o l v i d o com s u c e s s o )
27
OpenDSS Primer - Portuguese Version
Program Revision: 7.6 July 2016
End I f
% V e r i f i c a n d o s e o o b j e t o OpenDSS f o i c r i a d o com s u c e s s o
i f DSSObj . S t a r t ( 0 ) ,
d i s p ( Unable t o s t a r t t h e OpenDSS Engine )
return
end
% Criando a t a l h o s para a s 3 p r i n c i p a i s i n t e r f a c e s
DSSText = DSSObj . Text ;
DSSCircuit = DSSObj . A c t i v e C i r c u i t ;
DSSSolution = DSSCircuit . S o l u t i o n ;
% Carregando o a r q u i v o IEEE123Master . d s s
DSSText . Command = Compile C: \ example \ IEEE123Master . d s s ;
% A l t e r a n d o a b a r r a 1 da l i n h a L1
DSSText . Command = Li ne . L1 . Bus1 = 5 ;
% Exportando t e n s o e s em c s v f i l e
DSSText . Command = Export V o l t a g e s ;
Filename = DSSText . R e s u l t ;
d i s p ( [ F i l e saved t o : Filename ] )
% Passe por t o d a s a s c a r g a s
i L o a d s = DSSCircuit . Loads . F i r s t ;
w h i l e iLoads ,
% M u l t i p l i c a r a p o t e n c i a a t i v a da c a r g a s e l e c i o n a d a por 1 , 2
28
OpenDSS Primer - Portuguese Version
Program Revision: 7.6 July 2016
% Armazenar a s t e n s o e s n o d a i s
BusNames = DSSCircuit . AllBusNames ;
V o l t a g e s = DSSCircuit . AllBusVmagPu ;
% Resolva o c i r c u i t o
DSSSolution . S o l v e ( ) ;
i f DSSSolution . Converged ,
d i s p ( The C i r c u i t S o l v e d S u c c e s s f u l l y )
end
# Criando a t a l h o s para a s 3 p r i n c i p a i s i n t e r f a c e s
DSSText = DSSObj . Text
DSSCircuit = DSSObj . A c t i v e C i r c u i t
DSSSolution = DSSCircuit . S o l u t i o n
# Carregando o a r q u i v o IEEE123Master . d s s
29
OpenDSS Primer - Portuguese Version
Program Revision: 7.6 July 2016
# Exportando t e n s o e s em c s v f i l e
DSSText . Command = Export V o l t a g e s
Filename = DSSText . R e s u l t
p r i n t F i l e saved t o : + Filename
# Passe por t o d a s a s c a r g a s
i L o a d s = DSSCircuit . Loads . F i r s t
while iLoads :
# M u l t i p l i c a r a p o t e n c i a a t i v a da c a r g a s e l e c i o n a d a por 1 , 2
DSSCircuit . Loads .kW = DSSCircuit . Loads .kW 1 . 2
# Passe para a proxima c a r g a da l i s t a
i L o a d s = DSSCircuit . Loads . Next
# Armazenar a s t e n s o e s n o d a i s
BusNames = DSSCircuit . AllBusNames
V o l t a g e s = DSSCircuit . AllBusVmagPu
# Resolva o c i r c u i t o
DSSSolution . S o l v e ( )
i f DSSSolution . Converged :
p r i n t The C i r c u i t S o l v e d S u c c e s s f u l l y
8 Recursos Adicionais
Ao continuar a usar o OpenDSS e explorar a sua capacidade, voce devera se de-
parar com situacoes que requerem mais informacoes do que as motradas nesse guia
introdutorio. Por esse motivo, os desenvolvedores do OpenDSS e a comunidade tem
fornecido varios recursos para os usuarios.
30
OpenDSS Primer - Portuguese Version
Program Revision: 7.6 July 2016
Com as informacoes nesse documento, voce deve estar preparado para comecar a
utilizar o software. Uma extensa serie de exemplos de recursos do OpenDSS sao
fornecidos no diretorio Examples na pasta onde o OpenDSS foi instalado. Para
assistir um vdeo com uma breve explicacao sobre onde encontrar esses arquivoes,
clique aqui. Os principais recursos sao:
1. Exemplos de codigos no diretorio Example/Scripts.
2. Exemplos de simulacoes em diferentes modos: sequenciais no tempo; analise
de Monte Carlo; analise dinamica; analise harmonica; estudo de curto-circuito;
otimizacao da localizacao de capacitores.
3. Exemplos da utilizacao de varios elementos, tais como:
Reguladores de tensao e os seus controles, capacitores e o seus controles,
e controladores de otimizacao volt-VAR centralizados.
Geradores, sistemas fotovoltaicos, geradores com fator de potencia fixo,
geradores de inducao, baterias, dentre outros.
Fusveis, religadores, reles e elementos de curto-circuito.
Curvas de carga, curvas de geracao, curvas de crescimento de demanda,
espectro harmonicos, arranjos de cabos, curvas de temperatura, medido-
res e monitores.
4. Exemplos do controle do OpenDSS utilizando diferentes software.
5. Modelos de alimentadores reais sao fornecidos no diretorio EPRITestCir-
cuits.
6. Um modelo de uma linha de transmissao simples e fornecido no diretorio
Examples/Stevenson.
7. No diretorio Paulo Example esta o trabalho de conclusao de curso entregue
a Escola Politecnica da Universidade de Sao Paulo realizado por Paulo Radatz,
em portugues.
8. No diretorio Tranning encontram-se alguns arquivos PowerPoint realizados
por Roger Dugan.
31
OpenDSS Primer - Portuguese Version
Program Revision: 7.6 July 2016
32
OpenDSS Primer - Portuguese Version
Program Revision: 7.6 July 2016
8.4 Contato
Caso voce tenha encontrado algum erro nesse documento, por favor, contate os
autores/tradutores no seguintes e-mails:
paulo.radatz@gmail.com
celsorocha11@gmail.com
Obrigado!
33