Sistemas Eléctricos de
Potencia
MODULO VII PROGRAMACIÓN APLICADA
EN SISTEMAS DE POTENCIA
© Inel
Sistemas Eléctricos de Potencia [email protected]
DIgSILENT PROGRAMMING LANGUAGE
(DPL)
El lenguaje de programación DIgSILENT DPL ofrece una interfaz para el
usuario, para la automatización de tareas en PowerFactory. Por medio de
un lenguaje de programación simple y construido en el editor, el usuario
puede definir comandos de automatización (Scripts) para realizar cálculos
iterativos o repetitivas en las redes de destino y post-procesar los
resultados.
Sistemas Eléctricos de Potencia 2
INTRODUCCIÓN
Los scripts DPL definidos por el usuario se pueden usar en todas las áreas
del análisis del sistema de potencia, por ejemplo:
✓ Optimización de la red.
✓ Coordinación de protección.
✓ Análisis de estabilidad.
✓ Análisis de barrido paramétrico.
✓ Análisis de contingencia.
✓ Etc.
Sistemas Eléctricos de Potencia 3
INTRODUCCIÓN
Los scripts DPL pueden incluir lo siguiente:
✓ Comandos de flujo de programa como ‘if-else’ y ‘do-while’.
✓ Comandos propios de PowerFactory (por ejemplo, comandos de flujo
de carga o cortocircuito: ComLdf, ComShc).
✓ Rutinas de entrada y salida.
✓ Expresiones matemáticas.
✓ Llamadas a procedimientos de objeto PowerFactory.
✓ Llamadas de subrutina.
Sistemas Eléctricos de Potencia 4
CARACTERÍSTICAS
El DPL posee muchas características similares a otros lenguajes de
programación una filosofía propia en el DIgSILENT:
✓ Sintaxis fácil.
✓ Fácil acceso a objetos.
✓ Flexible
✓ Sintaxis tipo C++.
✓ Orientada a objetos.
✓ Subrutinas anillables.
✓ Etc.
Sistemas Eléctricos de Potencia 5
ESTRUCTURA
Figura 1: Principio de un comando DPL
Sistemas Eléctricos de Potencia 6
ESCRITO DEL LENGUAJE DPL
El lenguaje de Script DPL utiliza una sintaxis bastante similar al lenguaje de
programación C++. Este tipo de lenguaje es intuitivo, fácil de leer y fácil de
aprender.
La sintaxis se puede dividir en las siguientes partes:
1. Definición de variables.
2. Asignaciones y expresiones.
3. Instrucciones de flujo del programa.
Sistemas Eléctricos de Potencia 7
DEFINICIÓN DE VARIABLES
DPL utiliza los siguientes tipos de parámetros internos:
➢ double, un número real.
➢ int, un número entero.
➢ string, una cadena.
➢ object, una referencia a un objeto PowerFactory.
➢ set, un conjunto de objetos.
Sistemas Eléctricos de Potencia 8
DEFINICIÓN DE VARIABLES
Ejemplos
• double Losses, Length, Pgen;
• int NrOfBreakers, i, j;
• string txt1, nm1, nm2;
• object 01, 02, BestSwitchToOpen;
• set AllSwitches, AllBrs;
Sistemas Eléctricos de Potencia 9
DEFINICIÓN DE VARIABLES
Parámetros constantes:
DPL usa parámetros constantes que no se pueden cambiar. Por lo tanto, no
se acepta asignar un valor a estas variables, hacerlo dará lugar a un
mensaje de error, por ejemplo:
• SEL es la selección general de DPL.
• NULL es el objeto “nulo”.
• this es el comando DPL propio.
Sistemas Eléctricos de Potencia 10
ASIGNACIONES Y EXPRESIONES
La siguiente sintaxis se usa para asignar un valor a una variable:
variable = expresión
variable + = expresión
variable - = expresión
La asignación de suma “+ =“ agrega el valor del lado derecho a la variable y
la asignación resta “- =“ resta el valor del lado derecho al número.
Sistemas Eléctricos de Potencia 11
ASIGNACIONES Y EXPRESIONES
Funciones estándares:
Los siguientes operadores y funciones están disponibles:
❑ Operadores aritméticos: +, -, *, /
❑ Funciones estándar (todas funciones trigonométricas basadas en
radianes (RAD).
❑ Constantes:
pi ( ) pi
twopi ( ) 2 pi
e() e
Sistemas Eléctricos de Potencia 12
ASIGNACIONES Y EXPRESIONES
Sistemas Eléctricos de Potencia 13
INSTRUCCIONES DE FLUJO DE
PROGRAMA
Los siguientes comandos de flujo están disponibles:
if ( [boolexpr] ) [statlist]
if ( [boolexpr] ) [statlist] else [statlist]
do [statlist] while [boolexpr]
while ( [boolexpr] ) [statlist]
for (declaración; [boolexpr]; declaración) [statlist]
Sistemas Eléctricos de Potencia 14
INSTRUCCIONES DE FLUJO DE
PROGRAMA
En el cual:
[boolexpr] = expresión [boolcomp] expresión
[boolexpr] = “<“ | “>” | “=“ | “>=“ | “>=“ | “<=“ | “<>”
[statlist] = declaración ; {declaración; [statlist]}
Operadores unarios: “.not”
Operadores binarios: “.and.” | “.or.” | “.nand.” | “.nor.” | “.eor.”
Paréntesis: {expresión lógica}
Sistemas Eléctricos de Potencia 15
INSTRUCCIONES DE FLUJO DE
PROGRAMA
El comando ‘input’ le pide al usuario que ingrese un valor,
input(var,string);
El comando ‘output’ escribe una línea de texto en la ventana de salida,
output(string);
Para el comando ‘output’ la cadena puede contener signos ‘= -’ seguidos
de un nombre de una variable. El nombre de la variable será reemplazdo
por el valor de la variable.
Nota: El comando ‘output’ se considera obsoleto y ha sido reemplazado
por las funciones más versátiles ‘printf’ y ‘sprintf’.
Sistemas Eléctricos de Potencia 16
INSTRUCCIONES DE FLUJO DE
PROGRAMA
El comando ‘printf’ emite una cadena formateada, este comando usa la
sintaxis de formateo de C++ printf().
string printf(string format [,string t |double x |int i,...])
Argumentos:
format : Cadena de caracteres, esto es obligatorio
t : Cadena de caracteres, esto es opcional.
x : Cadena de punto flotante, esto es opcional.
i : Cadena de números enteros, esto es opcional.
Sistemas Eléctricos de Potencia 17
INSTRUCCIONES DE FLUJO DE
PROGRAMA
Especificador del tipo de variable a visualizar:
%s Cadena de caracteres.
%d %i Valor entero.
%f Punto flotante.
%o Imprime el icono de la clase y el nombre de un objeto dado.
%b Imprime el icono la clase del objeto.
Sistemas Eléctricos de Potencia 18
DIgSILENT SIMULATION LANGUAGE (DSL)
• DSL puede describir:
✓ Cualquier sistema lineal o no lineal de Ecuaciones Diferenciales.
✓ Tiempo muerto (Ej. Ecuaciones de onda ideal).
✓ Cualquier ecuación aritmética o lógica (Ej. Controladores digitales).
✓ Cualquier evento (Ej. Apertura de interruptor si x>y).
• DSL puede ser usado para:
✓ Escribir un programa DSL.
✓ Dibujar un diagrama de bloques.
✓ Combinación de ambas.
Sistemas Eléctricos de Potencia 19
ECUACIONES DIFERENCIALES
• Ecuación diferencial lineal, explícita:
𝑑𝑥
= 𝑎𝑥 + 𝑏𝑤
𝑑𝑡
• Ecuación diferencial no lineal, explícita:
𝑑𝑥
= 𝑥 2 + sin(𝑥)
𝑑𝑡
• Ecuación diferencia implícita
𝑑𝑥 2
𝑥2 + ( ) +1 = 0
𝑑𝑡
Sistemas Eléctricos de Potencia 20
SISTEMA DE ECUACIONES DIFERENCIALES
• Sistema de ecuaciones diferenciales lineales, explícito:
𝑑𝑥1
= 𝑥1 + 𝑥2 + 𝑦𝑖
𝑑𝑡
𝑑𝑥2
= 𝑥1 − 𝑥2 + 𝑦𝑖
𝑑𝑡
• Forma general de un sistema de ecuaciones diferenciales explícito:
𝑥Ԧሶ = 𝑓(
Ԧ 𝑥,
Ԧ 𝑦Ԧ𝑖 )
𝑦Ԧሶ 0 = 𝑔(
Ԧ 𝑥,
Ԧ 𝑦Ԧ𝑖 )
Sistemas Eléctricos de Potencia 21
TRANSFORMADA DE LAPLACE. DOMINIO DEL TIEMPO Y
DE LA FRECUENCIA
• Frecuencia compleja: 𝑠 = 𝜎 + 𝑗𝜔
𝑑𝑥
• Frecuencia compleja: → 𝑠𝑥
𝑑𝑡
• Ejemplo: Retardo de primer orden
1
𝑥(𝑠) = 𝑦 (𝑠)
1 + 𝑠𝑇 𝑖
𝑑𝑥 𝑦𝑖 − 𝑥
=
𝑑𝑡 𝑇
𝑦𝑜 = 𝑥
Sistemas Eléctricos de Potencia 22
VARIABLES DSL
Un modelo DSL puede usar los siguientes tipos de variables:
• Señales de entrada y salida: disponibles para conectar con otros bloques.
• Variables de estado: señales dependientes del tiempo, generadas y usadas en el
interior del modelo DSL.
• Variables internas: solo existen dentro del modelo.
• Parámetros: Números del tipo ‘read only’ que son ajustados para alterar el
comportamiento del modelo del DSL.
Sistemas Eléctricos de Potencia 23
SINTAXIS DSL
• Tamaño máximo de una línea es 80 caracteres. Líneas más largas son interrumpidas por
el signo ‘&’ en la primera columna.
• Todas las palabras claves, funciones, modelos, macros, etc. son case sensitive.
• Los espacios son removidos cuando el código DSL es procesado. Excepción: espacios
se mantiene en strings.
• Comentarios son precedidos con el signo ‘!’
• Ejemplo:
! comments may start at the beginning of a line
x1. = select(at<>0, ! comments may be used in broken lines
& (1-sqr(x1)/sqr(at))/Tw, 0)
Sistemas Eléctricos de Potencia 24
SINTAXIS DSL
• Sintáxis de asignación:
varname = expr asigna expresión 'expr' a variable 'varname'.
varname. = expr asigna expresión ‘expr’ a la primer derivada de la variable
‘varname’.
• Ejemplos:
𝑦 = sin 𝑎 + 3 ∗ 𝑥1
𝑥1. = (𝑥𝑒 − 𝑥1)/𝑇1
𝑥2. = 𝑥1
• Funciones estándar:
sin(x), cos(x), tan(x), asin(x), acos(x), atan(x), sinh(x), cosh(x), tanh(x), exp(x),ln(x), log(x)
(base 10), sqrt(x) (square root), sqr(x) (power of 2), pow(x,y), abs(x), min(x,y), max(x,y),
modulo(x,y), trunc(x), frac(x), round(x), ceil(x), floor(x).
Sistemas Eléctricos de Potencia 25
FUNCIONES DE CONTROL LÓGICO
• y = select(bool,ex1,ex2)
- Si la condición booleana es verdadera, retorna la expresión ex1, de lo contrario la
expresión ex2.
- Ejemplo: y = select(T>0,10*x,2*x).
Si T>0, entonces y = 5x
Caso contrario, y = 2x
Sistemas Eléctricos de Potencia 26
FUNCIONES DE CONTROL LÓGICO
• y = picdro(expr,Tpic,Tdrop)
- La salida y es binaria (0 ó 1)
- y transiciona a 1 si la expresión lógica expr se verifica (verdadera) durante Tpic
segundos.
- Y transiciona a 0 si la expresión lógica expr no se verifica (falsa) durante Tdrop
segundos.
Sistemas Eléctricos de Potencia 27
DEFINICIÓN DE EVENTOS DE SIMULACIÓN
• event(condition,trigger,string)
- condition(integer): variable booleana para activar (=1) o desactivar (=0) el evento.
- trigger(double): el evento se ejecutará cuando el trigger se vuelva > 0.
- string: se utiliza para ajustar los parámetros del evento.
Sistemas Eléctricos de Potencia 28
DEFINICIÓN DE EVENTOS DE SIMULACIÓN
• Mediante el argumento tipo string se ajustan los parámetros del evento
- name: nombre del evento a ejecutar
- target: slot correspondiente al elemento para el que se quiere crear el evento
- create: clase del evento a crear (ej.”EvtParam” para un evento de parámetro)
- dtime: tiempo de ejecución
- var: variable a modificar
- val: nuevo valor de la variable
Sistemas Eléctricos de Potencia 29
CONCEPTOS DEL MODELADO DINÁMICO EN
POWERFACTORY - TERMINOLOGÍA
• Composite Frame: un diagrama general que muestra las interconexiones entre los slots.
Un composite frame contiene las definiciones de cada slot, indicando el tipo de objeto
que debe asignarse al slot. Los frames son objetos de tipo que pertenecen a la biblioteca
de tipos de equipamiento.
• Composite Model: es un objeto de la red que representa un sistema dinámico completo
(e.g. un generador con motor primario y control de tensión). Vincula el composite frame
(que contiene los slots) a los elementos de red reales, dispositivos de medición y DSL
common models en la red.
Sistemas Eléctricos de Potencia 30
CONCEPTOS DEL MODELADO DINÁMICO EN
POWERFACTORY - TERMINOLOGÍA
• Model Definition: define la función de transferencia de un modelo dinámico, en forma de
ecuaciones y / o diagramas de bloques gráficos. Puede verse como el diseño o el
esquema de una pieza de equipo (e.g, diseño para un modelo de controlador XYZ).
Model definitions son objetos de tipo que pertenecen a la biblioteca de tipo de equipo.
• Common Model: vincula un model definition a una pieza real de equipo con ajustes de
parámetros específicos. Mientras que el block definition podría verse como el diseño o
modelo para una pieza de equipo, el common model puede verse como una instancia
física específica del elemento de equipo mismo (e.g., la unidad del controlador físico).
Common models son elementos de la red que pertenecen a la red.
Sistemas Eléctricos de Potencia 31
ANALOGÍAS TIPO - ELEMENTO
Una tabla de analogías tipo versus elementos se muestra en la Tabla a continuación:
Tipo Elemento Observaciones
Objeto de la biblioteca Objeto de la red
Composite frame Composite model
Model definition Common model
Clase Objeto instanciado Analogía de
programación
Esquema / diseño Equipo en el campo Analogía física
Analogías tipo y elemento
Sistemas Eléctricos de Potencia 32
EJEMPLO 1
Figura 2: Un model definition referenciado por dos common models (uno a muchos).
Sistemas Eléctricos de Potencia 33
EJEMPLO 2
Figura 3: Dos model definitions cada una referenciadas por un common model (uno a uno).
Sistemas Eléctricos de Potencia 34
EJEMPLO: SISTEMA DE CONTROL DE UN GENERADOR
Figura 4 Represa hidroeléctrica, turbina y generador.
Sistemas Eléctricos de Potencia 35
EJEMPLO: SISTEMA DE CONTROL DE UN GENERADOR
Figura 5: Composite frame para el sistema de generación hidroeléctrica
Sistemas Eléctricos de Potencia 36
EJEMPLO: SISTEMA DE CONTROL DE UN GENERADOR
Figura 6: Model definition para un controlador de tensión simple.
Sistemas Eléctricos de Potencia 37
EJEMPLO: SISTEMA DE CONTROL DE UN GENERADOR
Figura 7: Composite model completo para un generador hidráulico.
Sistemas Eléctricos de Potencia 38
EJEMPLO: SISTEMA DE CONTROL DE UN GENERADOR
Figura 8: Composite model para un generador hidráulico en el administrador de datos.
Sistemas Eléctricos de Potencia 39