Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
PSIM_1_Описание.doc
Скачиваний:
3
Добавлен:
01.04.2025
Размер:
3.02 Mб
Скачать

4.6.4 Внешний блок динамической библиотеки (ddl)

Внешний блок динамической библиотеки позволяет пользователям писать код на языке программирования C/C++ или языке Fortant, и транслировать его в DDL, используя или Microsoft C/C++ или Borland C++ или Digital Visual Fortran, а также соединить все это с PSIM. Эти блоки могут использоваться или в силовом контуре или в цепи управления.

Рисунок:

Характеристика:

Параметр

Описание

File Name

Имя DDL файла

Узел, обозначенный точкой, предназначен для первого входа (в [0]). Имя DDL файла может быть произвольным. Однако, DLL файл должен находится в той же директории, что и файл описания схемы, использующий DLL файл.

Блок DDL принимает значения из PSIM на входе, выполняет вычисления и описывает значение на выходе. PSIM вызывает программу DLL в каждый такт моделирования. Однако, когда входы блока DLL подключены к одному из этих дискретных элементов (фиксатор нулевого порядка, элемент единичной задержки, дискретные интеграторы и дифференциаторы, функциональные блоки z-преобразования и цифровые фильтры), он вызывается только в дискретные моменты выборки.

Типовые файлы соответствуют программам Microsoft C/C++, Borland C++ и Fortran. Пользователи могут использовать эти файлы как шаблон для написания собственных программ. Все действия, как транслировать программу DLL и связать ее с PSIM, изложены в этих файлах и сетевой справке.

Пример:

Ниже приведенный пример показывает схему корректора коэффициента мощности с обратной связью по напряжению нагрузки. Входное напряжение используется для генерирования опорного тока. Управляющая схема реализуется в цифровой среде с частотой дискретизации 30 кГц. Схема вводится во внешний код С и состыковывается с силовой цепью через блок DDL.

На входе блока DDL – выбранное входное напряжение, ток индуктора и выходное напряжение. Один из выходов блока DDL – модуляция волны Vm , которая сравнивается с несущей волной для создания управляющего сигнала ШИМ для переключателя.

Часть исходного кода, которая находится в файле “pfc_vi_dll.c”, показана ниже. Как внутренняя токовая петля, так и внешняя петля напряжения, используют PI - контроллер. Для дискретизации контроллеров используется формула трапеций. Дискретизация с использованием прямого метода Эйлера также реализуется, но коды прокомментированы.

//Эта типовая программа осуществляет управление цепью “pfc-vi-dll.sch” в подпрограмме С.

//Ввод: in[0] = Vin; in[1] = iL; in[2]=Vo

//Вывод: Vm=out[0]; iref=out[1]

//Вы можете изменять названия переменных (к примеру, от “t” до “Time”)

//Но НЕ ИЗМЕНЯЙТЕ названия функции, число переменных, тип переменной и последовательность.

//Переменные:

// t: Время, пройденное от PSIM на величину

// delt: Такт, пройденный в PSIM за величину

// in: Входной массив, пройденный от PSIM ссылкой

// out: Выходной массив, отправленный обратно к PSIM (следует заметить: величины out[*] могут быть видоизменены)

// Максимальная длина входного и выходного массивов “in” и “out” составляет 20

// Предупреждение: Глобальные переменные над функцией simuser (t, delt, in, out) не допускаются!!!

#include <math.h>

__declspec(dllexport) void simuser (t, delt, in, out)

//Следует отметить, что все переменные должны быть определены как “двойные”

double t, delt;

double *in, *out;

{

// Поместите ваш код здесь……….начало

double Voref=10.5, Va, iref, iL, Vo, Vm, errv, erri, Ts= 33.33e-6;

static double yv=0., yi=0., uv=0., ui=0.;

//Ввод

Va=fabs(in[0]);

iL =in[1];

Vo=in[2];

//Внешний цикл

errv=Voref-Vo;

//Формула трапеций

yv=yv+(33.33*errv+uv)*Ts/2.;

iref=(errv+yv)*Va;

//Внутренний цикл

erri=iref-iL;

//Формула трапеций

yi=yi+(4761.9*erri+ui)*Ts/2.;

Vm=yi+0.4*erri;

//Сохранять прежние величины

uv=33.33*errv;

ui=4761.9*erri;

//Вывод

out[0]=Vm;

out[1]=iref;

//Поместите ваш код здесь……………конец

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]