Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Разработка windows-приложения на С для комплекта robox. Идентификация сервопривода метод. указания к лабораторной работе № 6

.pdf
Скачиваний:
0
Добавлен:
15.11.2022
Размер:
518.69 Кб
Скачать

Составитель:

канд. техн. наук, доцент кафедры автоматики и телемеханики Н.В. Андриевская

УДК 007.52 Р177

Рецензент:

д-р техн. наук, профессор С. Ф. Тюрин (Пермский национальный исследовательский политехнический университет)

Разработка windows-приложения на «С» для комплекта Р177 robox. Идентификация сервопривода : метод, указания к лабо­ раторной работе № 6 / сост. Н.В. Андриевская. - Пермь : Изд-

во Перм. нац. исслед. политехи, ун-та, 2021. - 20 с.

ISBN 978-5-398-02559-0

Рассмотрен шестой этап создания в ШЕ Pelles С диалогового приложения, позволяющего создать модель сервопривода. На этом этапе снимаются экспериментальные данные по угловой скорости сервопривода и рассчитывается модель сервопривода для дальней­ шего расчета регулятора угловой скорости сервопривода.

Издание ориентировано на студентов бакалавриата и магистра­ туры, направлений 27.03.04 и 27.04.04 «Управление в технических системах», 15.03.06 и 15.04.06 - «Мехатроника и робототехника», а также студентов других направлений и специальностей техниче­ ского профиля.

УДК 007.52

ISBN 978-5-398-02559-0

©ПНИПУ, 2021

 

СОДЕРЖАНИЕ

 

1.

Разработка функции снятия кривой разгона сервопривода

.............4

2. Расчет модели сервопривода...................................................................

8

 

2.1. Ввод экспериментальных данных...................................................

8

 

2.2. Вызов графического интерфейса

 

 

System Identification Toolbox.................................................................

10

 

2.3. Импорт экспериментальных данных...........................................

10

 

2.4. Построение модели...........................................................................

13

 

2.5. Анализ моделей.................................................................................

16

3. Ход выполнения работы ........................................................................

19

1 . РАЗРАБОТКА ФУНКЦИИ СНЯТИЯ КРИВОЙ

РАЗГОНА СЕРВОПРИВОДА

1.1. Разработать функцию void StartAccCurve (void) запуска экс­ перимента, формирующего данные необходимые для расчета моде­ ли сервопривода.

а) Объявить следующие глобальные переменные.

Указатель на файл, в котором будут сохраняться результаты эксперимента в текстовом формате:

static FILE*file;

Счетчик точек кривой разгона:

static UINT16 CurveCnt;

Флаг разрешения рисования кривой разгона в окне приложения:

static UINT8 DrawAccCurveEn;

Предыдущие координаты в окне приложения точки кривой разгона:

static POINT ср;

Время старта снятия кривой разгона:

static DWORD t start;

Целевая скорость разгона:

static INT 16 Speed;

Флаг достижения целевой скорости при разгоне:

static UINT8 AccTimeOK;

б) Объявить координаты начала рисования кривой разгона, на­ пример:

#define Xi_OFFSET 370

#defme Yi OFFSET 350

в) Шаблон функции запуска снятия кривой разгона:

static void StartAccCurve(void)

{

int i;

char text[16]; char *endptr;

if (CurveCnt==0){

file=fopen("AccCurve.txt",Mw+");//oTKpbiTHe файла для записи рез. cp.x=Xi_OFFSET ;

cp.y=Yi_OFFSET ;

Установить режим работы сервопривода SPEED. Нарисовать горизонтальную ось (время) кривой разгона. Включить двигатель.

DrawAccCurveEn=l;

TimerEn=l;

Считать из элемента редактирования с идентификатором

IDPOINT значение целевой скорости вращения (в переменную

Speed), коэффициенты пропорциональной, интегральной и диффе­

ренциальной составляющей ПИД-регулятора. Установить значения коэффициентов.

/ГУстановка целевой скорости. set_point(MbCom.hCOM,servo_addr,Speed);

//Чтение текущего времени t_start = timeGetTime();

// Кривая разгона снимается с шагом 100 мс SetTimer(ghwndDlg,2,100,NULL); AccTimeOK=0;

}else{

Выключить двигатель.

KillTimer(ghwndDlg, 2);

TimerEn=0;

DrawAccCurveEn=0;

CurveCnt=0;

fclose(file);

}

}

1.2. Разработать функцию static void DrawAccCurvefvoia), отобра­ жающую в окне приложения очередную точку эксперимента и записывающую ее значение в текстовый файл. В файл также записы­ вать момент времени, когда сервопривод достигнет целевой скорости.

static void DrawAccCurve(void)

{

char text[64]; DWORD t; float f;

if(DrawAccCurveEn){

CurveCnt++;

if (CurveCnt>249){ CurveCnt=0; DrawAccCurveEn=0;

Выключить двигатель.

Закрыть файл с результатами эксперимента;

}else{

t = timeGetTimeO;

f = ((float)t -(float) t_start)/1000;

if (ServoData.speed>=Speed&&AccTimeOK==0) { AccTimeOK=l;

sprintf(text,"Acceleration Time=%2.1f sec\r\n", f);

ErrorMessageList (text);

Fwrite(text,l,strlen(text),file);

}

sprintf(text,"%d: %d\r\n", CurveCnt,ServoData.speed);

fwrite(text,l,strlen(text),fîle);

Нарисовать текущую точку кривой в окне приложения, соеди­ нив ее с предыдущей.

cp.x=Xi_OFFSET+ CurveCnt; cp.y=Yi_OFFSET-abs(ServoData.speed)*8;

}

}

}

Функцию AccDrawCurve вызывать в обработчике таймера 2 по­ сле вывода считанных параметров сервопривода в соответствующие текстовые элементы окна приложения.

1.3. В case WM INITDIALOG вписать в Combo-box с именем

ЮМОDESELECT строку 13 с текстом-подсказкой о снятии кривой разгона сервопривода:

SendDlgItemMessage(hwndDlg, IDMODESELECT,

CBJNSERTSTRING, 13,

(LPARAM)"13-AccCurve");

Дописать действия по нажатию кнопки с именем 1DSETMODE - вызов выбранной из списка с именем IDMODESELECT функции сня­ тия кривой разгона сервопривода:

case IDSETMODE: i=SendDlgItemMessage(hwndDlg, IDMODESELECT,

CB_GETCURSEL, 0, 0); switch (i)

{

case 0:

II...

break;

case 8:

II...

break;

case 13:

StartAccCurve();

break;

2.РАСЧЕТ МОДЕЛИ СЕРВОПРИВОДА

Расчет осуществляется с помощью прикладного программного пакета System Identification Toolbox в программной среде MATLAB

2.1. Ввод экспериментальных данных

Построение модели начинается с формирования эксперимен­ тальных данных в виде файлов.

В качестве эксперимента выбраны следующие исходные дан­ ные САУ :

Г0 =0.1 К п = 0 £ „ = 0 .0 1 Кд = 0

Исходные данные для идентификации оформлены в виде табл. 2.1.

 

 

Таблица 2.1

 

Исходные данные для идентификации

 

t

X

У

0.0

10

0

0.1

10

2

0.2

10

3

0.3

10

4

0.4

10

5

0.5

10

6

0.6

10

7

0.7

10

7

0.8

10

7

0.9

10

7

1.0

10

8

1.1

10

8

1.2

10

8

1.3

10

9

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