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 |