Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Мемс рус.doc
Скачиваний:
5
Добавлен:
01.05.2025
Размер:
2 Мб
Скачать
☆

Отладка с помощью редактора программ Editor/Debugger

Одним из средств инструментального поиска ошибок является применение встроенной системы редактирования и отладки программ Editor/Debugger.

Ознакомимся с опциями отладчика на примере программы Circuit1_debug.

Перед началом сеанса целесообразно очистить Workspace с помощью команды Clear и Command Window с помощью команды Clc ( можно использовать с этой целью Главное менюEditClear Workspace и Главное менюEditClear Command Window ).

 Запустите отладчик программ. Для этого в главном меню Editor/Debugger нажмите DebugRun. После этого, подводя курсор к любой переменной или массиву в тексте программы, можно проследить их численные (или символьные) значения.

 Очистите Workspace и Command Window . Установите курсор перед каким-либо оператором. Пусть это будет оператор в строке 13

XL=2*pi*f*L2;

Нажмите на иконку Set/clear breakpoint на панели инструментов. Красная точка слева от указанного оператора обозначает точку прерывания при выполнении программы. Нажмите DebugRun. Появившаяся в тексте программы зеленая стрелка указывает на оператор, перед которым остановлены вычисления. В Command Window вы увидите приглашение

K>>

к вводу дальнейших указаний. Прежде, чем вы сделаете это, подведите курсор к значениям переменных, вычисленных до прерывания. Система покажет эти значения. Но значений переменных и массивов после прерывания вы не увидите, поскольку на момент прерывания они не определены.

 Нажмите на иконку Step на панели инструментов. Зеленая стрелка переместится на одну строку вниз. Программа выполнила один оператор и снова остановилась. Таким образом, можно выполнять программу по шагам, контролируя как последовательность вычислений, так и значения вычисленных переменных и массивов. Доведите до конца выполнение программы, используя пошаговое вычисление. Наблюдайте изменение и появление новой информации.

 Снова запустите программу на счет (нажмите DebugRun). Для того, чтобы после прерывания выполнить программу до конца, нажмите на панели инструментов кнопку Continue. Результаты вычислений вы увидите в Command Window .

 При помощи кнопки Set/clear breakpoint можно снять указанную курсором точку прерывания. Кнопкой Clear all breakpoints можно снять все точки прерывания в программе.

 Для отработки пошаговой отладки с заходом в подпрограмму вызовем из редактора программ М-файл Circuit 3. Сохраним его в той же директории как Circuit 3_debug. С целью экономии времени заменим операторы диалогового ввода на операторы ввода данных методом присваивания ( используйте для этой цели операторы ввода М-файла Circuit 1 ).

 Программа должна выглядеть следующим образом:

%ПРИМЕР РАСЧЕТА ЦЕПИ СИНУСОИДАЛЬНОГО ТОКА

%Circuit 3_debug

f=50;

R1=1;

R2=2;

R3=3;

L2=1e-3;

C3=1e-4;

ph1=30;

ph2=60;

XL=2*pi*f*L2;

XC=1/(2*pi*f*C3);

E1=100/sqrt(2)*exp(ph1*pi/180*i);

E2=200/sqrt(2)*exp(ph2*pi/180*i);

Z1=R1; Z2=R2+i*XL; Z3=R3-i*XC;

M=[1 -1 -1;

Z1 0 Z3;

0 Z2 -Z3];

F=[0; E1; -E2];

I=M\F;

disp(['I1=',num2str(I(1,1))]);

disp(['I2=',num2str(I(2,1))]);

disp(['I3=',num2str(I(3,1))]);

%ПРОВЕРКА ПО 2 ЗАКОНУ КИРХГОФА

eps=E1-E2-Z1*I(1,1)-Z2*I(2,1);

disp([' error calculation eps=',num2str(eps)]);

%ВЫЧИСЛЕНИЕ МОДУЛЕЙ И АРГУМЕНТОВ (В РАДИАНАХ) ВЫЧИСЛЕННЫХ ТОКОВ

I1M=abs(I(1,1));

I2M=abs(I(2,1));

I3M=abs(I(3,1));

phI1=angle(I(1,1));

phI2=angle(I(2,1));

phI3=angle(I(3,1));

disp(['I1M=',num2str(I1M),' phI1=',num2str(phI1/pi*180)]);

disp(['I2M=',num2str(I2M),' phI2=',num2str(phI2/pi*180)]);

disp(['I3M=',num2str(I3M),' phI3=',num2str(phI3/pi*180)]);

% GRAPH

h=0.04/200;

t(1)=0;

i1(1)=current(I1M,f,phI1,t(1));

i2(1)=current(I2M,f,phI2,t(1));

i3(1)=current(I3M,f,phI3,t(1));

for k=2:201

t(k)=t(k-1)+h;

i1(k)=current(I1M,f,phI1,t(k));

i2(k)=current(I2M,f,phI2,t(k));

i3(k)=current(I3M,f,phI3,t(k));

end

plot(t,i1,t,i2,t,i3);

 Для того, чтобы исследовать работу программы в цикле, как правило, достаточно сделать 2 – 3 захода в него. Поэтому заменим верхний предел оператора цикла следующим образом

for k=2:5

t(k)=t(k-1)+h;

i1(k)=current(I1M,f,phI1,t(k));

i2(k)=current(I2M,f,phI2,t(k));

i3(k)=current(I3M,f,phI3,t(k));

end

Сохраните измененную программу.

 Установите курсор перед оператором определения шага задания значений функциям токов в ветвях

h=0.04/200;

и установите точку прерывания.

 Для контроля выполнения подпрограмм воспользуемся опцией Step in на панели инструментов, которая дает возможность проследить пошаговое выполнение операторов подпрограммы. Выполните программу до конца с помощью этой опции.

 Опция Step out позволяет выйти из подпрограммы на любом этапе ее выполнения.

 Опция Exit Debug Mode реализует выход из режима отладки.

Из Main menu Breakpoints menu можно вызвать дополнительные опции отладки:

 Stop If Error – останов программы в случае ошибки;

 Stop If Warning – останов программы в случае предупреждения системы о возможной ошибке;

 Stop If NaN Or Inf – останов в случае не числового или бесконечного значения вычисляемой величины.

Применение тех или иных способов и опций отладки программ определяется самим программистом в зависимости от его опыта, квалификации, степени сложности решаемой задачи и индивидуального стиля программирования.