Форум кафедры Техники и Электрофизики Высоких Напряжений

Онлайн-сообщество ТВНщиков
Гостям форума:

Добро пожаловать на форум по технике высоких напряжений!
Для получения доступа ко всем разделам необходимо зарегистрироваться


Текущее время: 17 ноя 2018, 14:21

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
 Заголовок сообщения: Анимированный график
СообщениеДобавлено: 27 апр 2013, 18:31 
Не в сети
Аватара пользователя

Зарегистрирован: 19 сен 2012, 23:54
Сообщения: 26
В курсовой работе по ТОЭ необходимо построить анимированный график прямой и обратной волн для трёх линий. Какие краткие и рациональные способы для этого существуют?

Возможно, подобная тема где-то поднималась, но на форуме её сходу не нашёл.

_________________
Бобр обыкновенный


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Анимированный график
СообщениеДобавлено: 27 апр 2013, 19:34 
Не в сети
Site Admin

Зарегистрирован: 03 сен 2008, 16:09
Сообщения: 4258
Откуда: Д-3
Так?
Анимация решения - включение ВЛ через КЛ


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Анимированный график
СообщениеДобавлено: 27 апр 2013, 19:43 
Не в сети
Site Admin

Зарегистрирован: 03 сен 2008, 16:09
Сообщения: 4258
Откуда: Д-3
Код для построения анимации весьма простой:

Код:
figure
set(gca,'xlim',[0 6],'ylim',[-160 420], 'NextPlot','replacechildren','Visible','on')
mov = avifile('T_vkl_kl_vl_xx.avi', 'compression', 'none', 'fps', 25);
for J=1:1501
    plot(0.001*[x1 x1(end)+x2(2:length(x2))],[UL1(J,:) UL2(J,2:length(x2))],'linewidth',1.5);
    leg = ['t = ' num2str(1e6*t(J), '%4.1f') ' мкс'];
    legend(leg)
    xlabel('x, км')
    ylabel('U(x)/E, %')
    title('Включение воздушной линии через кабельную (E=const)')
    grid on
    F = getframe(gcf);
    mov = addframe(mov,F);
end
mov = close(mov);


Здесь строится анимация напряжений в двух линиях (массивы напряжений UL1 и UL2). Если нужен код для их расчета - спрашивайте.

При создании видео-контейнера в коде указано отсутствие компрессии ('compression', 'none'). Так сделано для совместимости - у всех будет работать. По-хорошему, нужно пройтись по видео каким-нибудь кодеком, а то размер получается великоват.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Анимированный график
СообщениеДобавлено: 27 апр 2013, 21:30 
Не в сети
Аватара пользователя

Зарегистрирован: 19 сен 2012, 23:54
Сообщения: 26
Спасибо. Да, было бы здорово посмотреть, как рассчитываются сами напряжения. То есть какие функции для этого используются.

_________________
Бобр обыкновенный


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Анимированный график
СообщениеДобавлено: 28 апр 2013, 00:44 
Не в сети
Site Admin

Зарегистрирован: 03 сен 2008, 16:09
Сообщения: 4258
Откуда: Д-3
Для расчета напряжений в промежуточных точках линии здесь используются уравнения характеристик, которые увязывают напряжения в линии с напряжениями и токами по ее концам. В приведенном коде напряжения и токи по концам линии считываются из текстовых файлов в массивы I1-I4 и U1-U4. Их расчет выполнен с помощью отдельной программы, но для линий без потерь его легко можно сделать и в Matlab.
Код:
clear all
clc
v1=1.5e8;
Zc1=60;
v2=3e8;
Zc2=400;

l1=3e3;
l2=3e3;

RDATA = dlmread('U1.txt')
t = 1.e-3*RDATA(:,1).';
U1 = RDATA(:,2).';
RDATA = dlmread('U2.txt')
U2 = RDATA(:,2).';
RDATA = dlmread('I1.txt')
I1 = RDATA(:,2).';
RDATA = dlmread('I2.txt')
I2 = RDATA(:,2).';
RDATA = dlmread('U3.txt')
U3 = RDATA(:,2).';
RDATA = dlmread('U4.txt')
U4 = RDATA(:,2).';
RDATA = dlmread('I3.txt')
I3 = RDATA(:,2).';
RDATA = dlmread('I4.txt')
I4 = RDATA(:,2).';
I4 = zeros(1,length(I3));

x1=0:l1/200:l1;
x2=0:l2/200:l2;
dt=t(2);
tau1 = 0.00001;
tau2 = 0.00001;

f1 = zeros(length(t),length(x1));
f2 = zeros(length(t),length(x1));
f3 = zeros(length(t),length(x2));
f4 = zeros(length(t),length(x2));
UL1 = zeros(length(t),length(x1));
UL2 = zeros(length(t),length(x2));

for I=1:length(t)
    for J=1:length(x1)
        K1=int32((t(I)-x1(J)/v1)/dt);
        if K1>=0
            f1(I,J) = 0.5*(U1(K1+1)+Zc1*I1(K1+1));
        end
        K2 = int32((t(I)-(l1-x1(J))/v1)/dt);
        if K2>=0
            f2(I,J) = 0.5*(U2(K2+1)-Zc1*I2(K2+1));
        end
    end
end
UL1=f1+f2;

for I=1:length(t)
    for J=1:length(x2)
        K1=int32((t(I)-x2(J)/v2)/dt);
        if K1>=0
            f3(I,J) = 0.5*(U3(K1+1)+Zc2*I3(K1+1));
        end
        K2 = int32((t(I)-(l2-x2(J))/v2)/dt);
        if K2>=0
            f4(I,J) = 0.5*(U4(K2+1)-Zc2*I4(K2+1));
        end
    end
end
UL2=f3+f4;


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB