Применение метода частотных диаграмм к исследованиям устойчивости систем с логическими алгоритмами управления — страница 4

  • Просмотров 1945
  • Скачиваний 435
  • Размер файла 118
    Кб

заменяем p на jw и имеем вид: Для построения гадогрофа выведем формулы для P(w), jQ(w) которые имеют вид: P(w)= jQ( Графики можно посмотреть в приложении N 2. Учитывая , что добротность x должна быть ³ 0.5¸0.7 мы можем определить добротность нашей системы, она примерно равна 0.5. Отсюдо видно, что из-за увеличения и x уменьшается, можно сделать вывод, что колебательность звена увеличиться. Это можно наблюдать на графиках 1.13 - 1.16 в приложении N 2.

Но это не подходит по требованию нашей задачи. Так как , то можно сделать вывод, что коректор будет влиять только на высоких частотах, а на низких будет преобладать Минемальные значения полки нечуствительности можно наблюдать на графиках 1.9 - 1.12, особенно при минемальном значении Приложение N 1. Программа для построения годографов на языке программирования СИ ++. #include <graphics.h> #include <iostream.h> #include <conio.h> #include <dos.h> #include

<stdlib.h> #include <stdio.h> #include <math.h> #include <string.h> void Godograf(float Tpr, float Ko, float Kos, int Color, int Xc, int Yc, int x, int y, int z, int err); void Osi(int Xc, int Yc, int kol); int xmax, ymax; float Kos[]={0.1,1.0}, Ko[] ={10.0,100.0}, Tpr[]={0.01,0.09,0.2,0.5}; void main(void) { float P_w, Q_w, w; int driver, mode, err; driver = DETECT; initgraph(&driver,&mode,""); err = graphresult(); if (err!=grOk) {cout<<"\n\t"<<grapherrormsg(err); getch();} else { xmax = getmaxx(); ymax = getmaxy(); int Xc=(int)(xmax/2), Yc=(int)(ymax/2); for(int i=0;i<=1;i++) for(int j=0;j<=1;j++) for(int k=0;k<=3;k++){ cleardevice(); setviewport(0,0,xmax,ymax,0); Osi((int)(xmax/2),(int)(ymax/2),i+j+k);

Godograf(Tpr[k],Ko[j],Kos[i],15,(int)(xmax/2),(int)(ymax/2),k,j,i,1); setcolor(7); setlinestyle(1,0,1); rectangle(Xc-18,Yc-15,Xc+18,Yc+15); setlinestyle(0,0,1); rectangle(10,Yc+5,250,Yc+205); setcolor(15); setviewport(10,(int)(ymax/2)+5,250,(int)(ymax/2)+205,1); setfillstyle(1,0); floodfill(5,5,7); line(10,100,230,100); line(125,10,125,190); Godograf(Tpr[k],Ko[j],Kos[i],15,125,100,k,j,i,0);}; closegraph(); } } void Godograf(float Tpr, float Ko, float Kos, int Color, int Xc, int Yc, int x, int y, int z, int err) { float P_w1=0.0, Q_w1=0.0, P_w, Q_w, To=0.5, Tg=0.1, P_w_min=0.0; for(float w=0;w<=100;w=w+0.05){ if(((Kos*Ko-(To+Tpr)*w*w)*(Kos*Ko-(To+Tpr)*w*w)+ (w+Tpr*Kos*Ko*w-To*Tpr*w*w*w)*(w+Tpr*Kos*Ko*w-To*Tpr*w*w*w))!=0){ P_w = (Ko*w*Tg*(w+Tpr*Kos*Ko*w-To*Tpr*w*w*w)+

(Kos*Ko*Ko-(To+Tpr)*Ko*w*w))/ ((Kos*Ko-(To+Tpr)*w*w)*(Kos*Ko-(To+Tpr)*w*w)+ (w+Tpr*Kos*Ko*w-To*Tpr*w*w*w)*(w+Tpr*Kos*Ko*w-To*Tpr*w*w*w)); Q_w = (Tg*(Kos*Ko*Ko*w-(To+Tpr)*Ko*w*w)- Ko*(w+Tpr*Kos*Ko*Ko*w-Ko*To*Tpr*w*w*w))/ ((Kos*Ko-(To+Tpr)*w*w)*(Kos*Ko-(To+Tpr)*w*w)+ (w+Tpr*Kos*Ko*w-To*Tpr*w*w*w)*(w+Tpr*Kos*Ko*w-To*Tpr*w*w*w)); if (abs(P_w)>abs(P_w1)) P_w1=P_w; if (abs(Q_w)>abs(Q_w1)) Q_w1=Q_w; if (P_w<P_w_min) P_w_min = P_w; if (P_w1==0) P_w1=P_w1+0.01; if (Q_w1==0) Q_w1=Q_w1+0.01; }; }; float KmasX =(float)(xmax-Xc-100)/P_w1, KmasY =(float)(ymax-Yc-100)/Q_w1; if (KmasX<0) KmasX=-KmasX; if (KmasY<0) KmasY=-KmasY; if (KmasX>=220) KmasX=150; if (KmasY>=140) KmasY=100; if (err==0) {KmasX=KmasX*4; KmasY=KmasY*4;}; w = 0;

if(((Kos*Ko-(To+Tpr)*w*w)*(Kos*Ko-(To+Tpr)*w*w)+ (w+Tpr*Kos*Ko*w-To*Tpr*w*w*w)*(w+Tpr*Kos*Ko*w-To*Tpr*w*w*w))!=0){ P_w = KmasX*(Ko*w*Tg*(w+Tpr*Kos*Ko*w-To*Tpr*w*w*w)+ (Kos*Ko*Ko-(To+Tpr)*Ko*w*w))/ ((Kos*Ko-(To+Tpr)*w*w)*(Kos*Ko-(To+Tpr)*w*w)+ (w+Tpr*Kos*Ko*w-To*Tpr*w*w*w)*(w+Tpr*Kos*Ko*w-To*Tpr*w*w*w)); Q_w = KmasY*(Tg*(Kos*Ko*Ko*w-(To+Tpr)*Ko*w*w)- Ko*(w+Tpr*Kos*Ko*Ko*w-Ko*To*Tpr*w*w*w))/ ((Kos*Ko-(To+Tpr)*w*w)*(Kos*Ko-(To+Tpr)*w*w)+ (w+Tpr*Kos*Ko*w-To*Tpr*w*w*w)*(w+Tpr*Kos*Ko*w-To*Tpr*w*w*w)); moveto(Xc+P_w,Yc-Q_w); }; setcolor(Color); setcolor(9); line(Xc+P_w_min*KmasX,10,Xc+P_w_min*KmasX,ymax-10); gotoxy(2,5); printf("K2="); printf("%f",(-1/P_w_min)); setcolor(15); for(w=0;w<=700;w=w+0.05){ if(((Kos*Ko-(To+Tpr)*w*w)*(Kos*Ko-(To+Tpr)*w*w)+