Теми рефератів
> Реферати > Курсові роботи > Звіти з практики > Курсові проекти > Питання та відповіді > Ессе > Доклади > Учбові матеріали > Контрольні роботи > Методички > Лекції > Твори > Підручники > Статті Контакти
Реферати, твори, дипломи, практика » Курсовые проекты » Горизонтальний астрокомпас

Реферат Горизонтальний астрокомпас





ідбудеться помилка формату даних. Рішення - введення в процедуру зчитування даних з клавіатури перевірку на помилку формату, і в разі виконання цієї умови ініціалізація повторення цієї процедури.

5) При розрахунку даних можуть відбутися невідомі помилки, внаслідок яких значення істинного і ортодроміческое курсу можуть прийняти значення - 2147483648 градусів і - 2147483648 хвилин. Рішення для ортодроміческое курсу - при його обчисленні замінити перехідні в нуль знаменники на 10-9. При розрахунку поправки також додано виняток для тангенса, якщо значення кута, від якого він береться, одно 90 градусам (значення тангенса 900 при розрахунку замінюється на значення тангенса 890).

) Безпосередньо перед виведенням додана перевірка на перевищення значення в 360 градусів для вихідних даних.


6.4 Лістинг програми


Щоб проаналізувати роботу розроблюваної системи, вона була змодельована на платі National Instruments. Розробка програмного забезпечення здійснювалася на мові С #.


using System;

using System.Collections.Generic;

using System.Linq; System.Text; NationalInstruments.DAQmx;

ConsoleApplication

{Program

{


//модуль ініціалізацііAnalogMultiChannelReader init ()//ініціалізація 0 і 1 каналів

{Reader; DS=DaqSystem.Local; [] PhChNames; AICh; T=new Task ( Вимірювання напруги ); i;=DS.GetPhysicalChannels (PhysicalChannelTypes.AI, PhysicalChannelAccess.External) ; (i=0; i lt; 4; i ++)=T.AIChannels.CreateVoltageChannel (PhChNames [i], Voltage mesure + i, AITerminalConfiguration.Nrse, - 10, 10, AIVoltageUnits.Volts);=new AnalogMultiChannelReader (T.Stream); Reader;

}


//модуль вводу даннихdouble SetAng (string s)//введення кутових вихідних даних

{gr, min, res;:

{. WriteLine ( Введіть + s) ;. Write ( Введіть градуси: t );

gr=Convert.ToDouble (Console.ReadLine ()) ;. Write ( Введіть хвилини: t t );=Convert.ToDouble (Console.ReadLine ()) * (1/60.0);=gr + Math.Sign (gr) * min;// З урахуванням знакаres;

} (FormatException)

{. Write ( Помилка введення ); thisplace;

}

}


//модуль ізмереніяvoid GetData (AnalogMultiChannelReader Reader, out double i, out double KU)

{// Зчитування даних з датчіковint amount=100;

const int Ki=2; int Kku=36; [] data, S; k, j;=new double [4];=new double [4]; (k=0; k lt ; amount; k ++)

{= Reader.ReadSingleSample (); (j=1; j lt; 4; j ++) [j] +=data [j];

}=(S [1]/amount) * Ki; =(S [2]/amount) * Kku;

}


//модуль виведення результату

static void PrintAng (double ang)//Висновок кутових величин

{gr, min;=(int) ang;=(int) Math.Round ((ang - gr) * 60); (min == 60)

{++;=0;

}. WriteLine ( {0: d3} градусів і {1: d2} хвилин raquo ;, gr, min);

}

void PrintData (double i, double KU)//Виведення даних отриманих з датчиків

{. SetCursorPosition (1, 1) ;. SetCursorPosition (1, 3) ;. Write ( Крен пеленгатора (канал 1): t t ); (i) ;. SetCursorPosition (1, 4) ;. Write ( Курсовий кут (канал 2): t t ); (KU);

}

double GetA (double fi, double l, double d, double t)//Розрахунок азимута

{fir, lr, dr, res; B1, C, A1, A;=(fi/180) * Math.PI;=(l/180) * Math.PI;=(d/180) * Math.PI;=Math.Sin (t) * Math.Cos (dr);=Math.Cos (fir) * Math.Sin (dr) - Math.Sin (fir) * Math.Cos (dr ) * Math.Cos (t); (B1 == 0) B1=0.000000001;=Math.Atan (C/B1); ((B1 gt; 0) amp; (Math.Sin (t) gt; 0)) res=2 * Math.PI - A1; ((B1 lt; 0) amp; (Math.Sin (t) lt; 0)) res=Math.PI - A1; ((B1 lt; 0) amp; (Math.Sin (t) gt; 0)) res=Math.PI - A1; ((B1 gt; 0) amp; (Math.Sin (t) lt; 0)) res=-A1; res=1;=( res * 180)/Math.PI; res;

} double GetB (double Fi, double F_or, double L_or, double l)//Розрахунок колійного кута

{res, F_orr, Fir, L_orr, lr; _orr=(F_or/180) * Math.PI;=(Fi/180) * Math.PI; _orr=(L_or/180) * Math.PI;=(l/180) * Math.PI; ((Math.Sin (L_orr - lr) == 0) || (Math.Tan (L_orr - lr) == 0))

{= Math.Atan (Math.Cos (Fir) * Math.Tan (F_orr) * (1/0.000000001) - Math.Sin (Fir) * (1/0.000000001));

}

{= Math.Atan (Math.Cos (Fir) * Math.Tan...


Назад | сторінка 8 з 11 | Наступна сторінка





Схожі реферати:

  • Реферат на тему: Double Standards in Modern Politics
  • Реферат на тему: Double Entry Types of Balance Sheet
  • Реферат на тему: Double electric layer. Mechanism of formation and theory of structure
  • Реферат на тему: Оператори введення - виведення даних
  • Реферат на тему: Введення вихідних даних в програму 1С та підготовка її для автоматизації ма ...