Главная страница
Навигация по странице:

  • Используемая конструкция : if RadioButton1.Checked thenbegin{тело условия}end;Например

  • 3.2 Запись результатов в файл Для сохранения выходных результатов в файл, была использована процедура FileWrite().Используемая процедура

  • Handle

  • Count

  • 3.3 Отображение графиченских зависимостей

  • Используемая процедура: Series1.AddXY(t,a[i]); Где AddXY(x,y) – рисует график по заданным x и y.3.4 Реализация математического аппарата

  • Используемый математический аппарат

  • 3.4.2 “Оценка координат положения динамического равновесия”

  • Влияние постоянного режима движения

  • 3.4.4 Влияние постоянного режима движения

  • 3.4.6 “Влияние случайной погрешности курсоуказания на поперечный снос судна

  • 3.4.7 “Влияние качки на точность показаний гирокомпаса”

  • 3.4.8 “Оценка переходного процесса гиротахометра”

  • 3.4.9 “Определения бокового смещения”

  • «Разработка программного комплекса моделирования оценок характер. Разработка программного комплекса моделирования оценок характеристик и точности навигационных параметров технических средств судовождения


    Скачать 1.47 Mb.
    НазваниеРазработка программного комплекса моделирования оценок характеристик и точности навигационных параметров технических средств судовождения
    Дата27.05.2022
    Размер1.47 Mb.
    Формат файлаdoc
    Имя файла«Разработка программного комплекса моделирования оценок характер.doc
    ТипДокументы
    #552928
    страница6 из 12
    1   2   3   4   5   6   7   8   9   ...   12

    3. ОСОБЕННОСТИ ПРОГРАММНОЙ РЕАЛИЗАЦИИ



    3.1 Выбор ситуаций
    Для разделения ситуаций происходящих в рейсе судна, была использована конструкция if then. При условии отбора, стало возможным выбирать ситуации в соответствии с выбранным radiobutton’ом.
    Используемая конструкция:

    if RadioButton1.Checked then

    begin

    {тело условия}

    end;
    Например:

    if RadioButton5.Checked then

    begin

    Series1.Clear; Image11.Visible:=false; Image12.Visible:=false;

    Image6.Visible:=true; Image7.Visible:=false; Image9.Visible:=false;

    Chart1.Visible:=false; Image4.Visible:=false; Image8.Visible:=false;

    Image5.Visible:=false; label47.Visible:=false; label48.Visible:=false;

    label5.Visible:=false; label6.Visible:=true; label7.Visible:=true;

    label8.Visible:=true; label43.Visible:=false; label44.Visible:=false;

    label45.Visible:=false; label46.Visible:=false; label9.Visible:=true;

    label10.Visible:=true; label14.Visible:=false; label42.Visible:=false;

    label19.Visible:=false; label29.Visible:=false; label34.Visible:=false;

    label20.Visible:=false; label21.Visible:=false; label22.Visible:=false;

    label23.Visible:=false; label24.Visible:=false; label25.Visible:=false;

    label26.Visible:=false; label27.Visible:=false; label28.Visible:=false;

    StringGrid1.Visible:=false; Chart2.Visible:=false; Memo1.Visible:=false;

    label35.Visible:=false; Image10.Visible:=false;

    y:=StrtoInt(Edit1.Text);

    dfi:=StrtoInt(Edit18.Text);

    D:=StrtoFloat(Edit2.Text);

    tn:=StrtoFloat(Edit3.Text);

    Br:=H*W*sin((y*pi)/180)/(B-C);

    Br:=Br*gr;

    label6.Caption:='Гирокомпас типа "КУРС": Br='+FloatToStr(Br)+' градусов.';
    Ar:=(AzAu*tan((y*pi)/180))*gr;

    bet:=(W*sin((y*pi)/180)/AuH)*gr;

    label7.Caption:='Гирокомпас типа "ВЕГА": Ar='+FloatToStr(Ar)+' градусов. '+' B='+FloatToStr(bet)+' градусов. ';
    dA:=W*tn*sin((y-dfi)*pi/180);

    dAp:=((P*tn*(D/1000))/H1)*gr;

    label8.Caption:='Погрешности:';

    label9.Caption:='1. Неточной учет широты места dA='+FloatToStr(dA);

    label10.Caption:='2. Дебаланс гироблока dAp='+FloatToStr(dAp);
    end;
    3.2 Запись результатов в файл
    Для сохранения выходных результатов в файл, была использована процедура FileWrite().

    Используемая процедура: FileWrite (Handle, Buffer, Count).

    Где Handle – параметр типа integer, может создавать, либо открывать необходимый файл (например, FileCreate(‘resultat.txt’)). Buffer – строковый параметр, в котором хранится информация для записи в файл. Count – параметр типа integer, хранит размер создаваемого файла.
    Используемая процедура в программном коде:

    //Запись в файл

    FileWrite(FileCreate(Edit8.Text),'1.2. Оценка координат положения динамического равновесия',10000);

    FileWrite(FileCreate(Edit8.Text),'1.2.1. Гирокомпас типа "КУРС"',10000);

    FileWrite(FileCreate(Edit8.Text),'На неподвижном основании главная ось чувствительного элемента приходит в меридиан, имея смещение по высоте на угол равный: ',10000);

    FileWrite(FileCreate(Edit8.Text),Br,10000);

    FileWrite(FileCreate(Edit8.Text),'1.2.1. Гирокомпас типа "ВЕГА"',10000);

    FileWrite(FileCreate(Edit8.Text),'Положение равновесия смещено относительно плоскостей меридиана и горизонта на величины:',10000);

    FileWrite(FileCreate(Edit8.Text),'Ar=',10000);

    FileWrite(FileCreate(Edit8.Text),Ar,10000);

    FileWrite(FileCreate(Edit8.Text),'Br=',10000);

    FileWrite(FileCreate(Edit8.Text),bet,10000);

    FileWrite(FileCreate(Edit8.Text),'Погрешности:',10000);

    FileWrite(FileCreate(Edit8.Text),'1. Неточной учет широты места dA=',10000);

    FileWrite(FileCreate(Edit8.Text),dA,10000);

    FileWrite(FileCreate(Edit8.Text),'2. Дебаланс гироблока dAp=',10000);

    FileWrite(FileCreate(Edit8.Text),dAp,10000);

    end;
    3.3 Отображение графиченских зависимостей
    Для изображения графиков, использовалась процедура Series. Находясь непосредственно в компоненте Chart, при обращении к процедуре, происходит рисование графика по заданным значениям.

    Используемая процедура:

    Series1.AddXY(t,a[i]); Где AddXY(x,y) – рисует график по заданным x и y.
    3.4 Реализация математического аппарата
    3.4.1 “Оценка пригодности чувствительного элемента

    Для описания первого случая “Оценка пригодности чувствительного элемента к навигационному использованию” был создан специальный математический аппарат. Для хранения значений 120 точек уравнения движения использовался массив A, размером в 120 значений, вещественного типа. Для вычисления уравнения движения, использовалась следующий программный код:
    Используемый математический аппарат
    m:=m/10000; n:=n/10000; g:=g/1000; t:=0;

    a[0]:=power(g,2)+power(n,2);

    StringGrid1.Visible:=True;
    for i:=1 to 120 do

    begin

    t:=t+180; //время изменяется на 180 секунд

    a[0]:=a[0]*exp(-m*t);

    Td:=(2*pi/g)/60;

    f:=exp(-n*Td/2);

    B1:=m*exp(-n*t)*(g*sin(g*t)+(m-2*n)*cos(g*t));

    c1:=al0/(power(m-n,2)+power(g,2));

    a[i]:=(a[0]+B1)*c1;

    StringGrid1.Cells[1,i]:='a('+IntToStr(i)+')='+FloatToStr(a[i]);

    label5.Visible:=true;

    label5.Caption:='Время Работы ='+IntTostr(t)+' сек.';

    Series1.AddXY(t,a[i]);

    StringLen := Length(StringGrid1.Cells[1,i]);
    3.4.2 “Оценка координат положения динамического равновесия”
    Для описания второго случая “Оценка координат положения динамического равновесия” был создан специальный математический аппарат. Для вычисления уравнения координат для гирокомпасов “Вега” и “Курс”, погрешностей вычисления, использовался следующий программный код:
    Используемый математический аппарат:

    Br:=H*W*sin((y*pi)/180)/(B-C);

    Br:=Br*gr;

    label6.Caption:='Гирокомпас типа "КУРС": Br='+FloatToStr(Br)+' градусов.';

    Ar:=(AzAu*tan((y*pi)/180))*gr;

    bet:=(W*sin((y*pi)/180)/AuH)*gr;

    label7.Caption:='Гирокомпас типа "ВЕГА": Ar='+FloatToStr(Ar)+' градусов. '+' B='+FloatToStr(bet)+' градусов. ';

    dA:=W*tn*sin((y-dfi)*pi/180);

    dAp:=((P*tn*(D/1000))/H1)*gr;

    label8.Caption:='Погрешности:';

    label9.Caption:='1. Неточной учет широты места dA='+FloatToStr(dA);

    label10.Caption:='2. Дебаланс гироблока dAp='+FloatToStr(dAp);


        1. Влияние постоянного режима движения


    Для описания третьего случая “ Влияние постоянного режима движения судна на параметры гирокомпаса” был создан специальный математический аппарат. Для вычисления уравнения направляющего момента, периода незатухающих и затухающих колебаний “Курс”, использовался следующий программный код:
    Используемый математический аппарат:

    R1:=sin(alt1)*H*power(sqrt(W*cos(fi*pi/180)+ve1/Rz),2)+power(vn1/Rz,2);

    R2:=sin(alt2)*H*power(sqrt(W*cos(fi*pi/180)+ve2/Rz),2)+power(vn2/Rz,2);

    label6.Caption:='Направляющий момент R1 = '+FloatToStr(R1);

    label22.Caption:='R2='+FloatToStr(R2)+' (Н*м)';

    W01:=Sqrt(B*Sqrt(power(W*cos(fi*pi/180)+ve1/Rz,2)+power(vn1/Rz,2))/H);

    W02:=Sqrt(B*Sqrt(power(W*cos(fi*pi/180)+ve2/Rz,2)+power(vn2/Rz,2))/H);

    label7.Caption:='Частота незатухающих колебаний Wo1 = '+FloatToStr(W01);

    label23.Caption:='Wo2='+FloatToStr(W02)+' (1/сек.)';

    T01:=2*pi/W01;

    T02:=2*pi/W02;
    3.4.4 Влияние постоянного режима движения
    Для описания четвертого случая “Влияние маневра на точность показаний гирокомпаса” был создан специальный математический аппарат. Для вычисления уравнения значений инерционной девиации 1го рода для гирокомпасов “КУРС” и “Вега” использовался следующий программный код:
    Используемый математический аппарат:

    ve1:=v1*1862/3600*sin(ik1*pi/180);

    ve2:=v2*1862/3600*sin(ik2*pi/180);

    vn1:=v1*1862/3600*cos(ik1*pi/180); vn2:=v2*1862/3600*cos(ik2*pi/180);

    alt1:=-vn1/(Rz*W*cos(fi*pi/180)+ve1); alt2:=-vn2/(Rz*W*cos(fi*pi/180)+ve2);

    sigma1:=(alt2-alt1)*(2*cos(fir)-1);

    sigma1:=sigma1*gr;

    dVn:=v2*1862/3600*cos(ik2*pi/180)-v1*1862/3600*cos(ik1*pi/180);

    sigma2:=(-auh*dVn/9.81)*gr;


        1. Поперечный снос судна


    Для описания пятого случая “Поперечный снос судна” был создан специальный математический аппарат. Для вычисления уравнения движения использовался следующий программный код:
    Используемый математический аппарат:

    for i:=0 to 10 do

    begin

    //вычисление поперечного сноса судна

    td:=(2*pi/g)/60;

    ki:=ki+1;

    Tminutes:=Tminutes+0.15;

    T2:=ki*td*60/10;

    dVn:=v2*1862/3600*cos(ik2*pi/180)-v1*1862/3600*cos(ik1*pi/180);

    l1[i]:=0.0000485*v2*1862/3600*dVn*(1-exp(-m*T2))*A1/m;

    l2[i]:=(1-exp(-n-T2)*cos(g*T2))*(A2*n+A3*g)/(n*n+g*g);

    l3[i]:=(A2*g-A3*n)*exp(-n*T2)*Sin(g*T2)/(n*n+g*g);

    AlSn[i]:=(l1[i]+l2[i]+l3[i])/1862;

    End;
    3.4.6 “Влияние случайной погрешности курсоуказания на поперечный снос судна
    Для описания шестого случая “Влияние случайной погрешности курсоуказания на поперечный снос судна” был создан специальный математический аппарат. Для вычисления уравнения курса КК использовался следующий программный код:
    Используемый математический аппарат:

    for i:=0 to 10 do

    begin

    td:=(2*pi/g)/60; T2:=i*td*60/10;

    U[i]:=(v1*1862/3600)*td*60/6.3*MaxSnos/57.3*(1-cos(2*pi*T2/(td*60)));

    label19.Caption:='Влияние случайной погрешности';

    Memo1.Lines.Add('a('+IntToStr(i)+')='+FloatToStr(U[i]));

    end;
    3.4.7 “Влияние качки на точность показаний гирокомпаса”
    Для описания седьмого случая “Влияние качки на точность показаний гирокомпаса” был создан специальный математический аппарат. Для вычисления уравнения для одногироскопного, двухгироскопного маятникового компаса, для гироазимуткомпаса использовался следующий программный код:
    Используемый математический аппарат:

    x:=6; W011:=6;

    da2:=(Sqr(W011)-Sqr(wk))+Sqr(x)*Sqr(wk);

    y:=(x*wk)/Sqrt(da2);

    e:=ArcTan(-y/Sqrt(-(y*y)+1))+2*ArcTan(1);

    W1:=Sqrt((power(W011,4)*power(dmass,2)*power(g,-2)+Sqr(x)/Sqr(wk)));

    y1:=Sqr(W011)*dmass/g/W1;

    RF:=ArcTan(-y1/Sqrt(-y1*y1+1))+2*ArcTan(1);

    CosRFE:=Cos(RF+e);

    y3:=Sqrt(power(W011,4)*Sqr(dmass)*power(g,-2)+Sqr(x)*power(wk,-2));

    Tup:=-auh*y4*Sqr(wk)*dmass*y3*CosRFE*Sin(2*KK*pi/180);

    Tdown:=(4*W*Cos(fir))*Sqr(W011)*g*60*wk;

    dk:=(Tup/Tdown)*gr;

    Wz:=W*Sin(fir);
    3.4.8 “Оценка переходного процесса гиротахометра”
    Для описания восьмого случая “Оценка переходного процесса гиротахометра” был создан специальный математический аппарат. Для вычисления уравнения качества гиротахометра, чувствительности гиротахометра использовался следующий программный код:
    Используемый математический аппарат:

    for j:=0 to 20 do

    begin

    T1:=Cos(Wd*j*temp);

    T2:=hg1*Sin(Wd*j*temp)/Wd;

    W1:=exp(-hg1*j*temp);

    bet3:=betgr*(1-W1*(T1+T2));

    //Чувствительность гиротахометра

    Wzmin:=Ltr/(hg*1000);
    end;
    3.4.9 “Определения бокового смещения”
    Для описания девятого случая “Определения бокового смещения” был создан специальный математический аппарат. Для вычисления уравнения качества гиротахометра, чувствительности гиротахометра использовался следующий программный код:
    Используемый математический аппарат:

    Wzmin:=Ltr/(hg*1000);

    R:=R*186.2;

    d1:=Wzmin*(V2*1862/3600)*power(tn,2);

    d2:=Wzmin*Sqr(R*(IK2-IK1)*pi/180)/(V2*1862/3600);

    label42.Caption:='1. боковое смещение на прямолинейной траектории движения судна d1='+FloatTostr(d1)+' м.';

    label14.Caption:='2. боковое смещение на криволинейной траектории движения судна d2='+FloatTostr(d2)+' м.';

    end;
    Вывод: В данной главе были описаны все особенности реализации Программного Комплекса. Были учтены математические аппараты, использованные в программном коде, процедуры, часто используемые в реализации графиков, а также конструкции условий, которые позволяют достичь поставленных целей, при реализации программного кода. Описание кода программы завершено. В следующей главе следует рассмотреть правила и требования безопасной работы оператора ЭВМ.

    ОХРАНА ТРУДА

    1   2   3   4   5   6   7   8   9   ...   12


    написать администратору сайта