Проектирование искусственного освещения производственных помещений
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

 

При проектировании рабочего искусственного освещения производственного помещения в качестве источника света выбираем люминесцентные лампы. При выполнении в помещении зрительной работы средней точности применяется общая система освещения. При выборе типа светильника необходимо учитывать требования к распределению светового потока. Для указанного выше характера работы выбираем светильники рассеянного света. При размещении светильников необходимо учитывать удобство обслуживания, необходимую равномерность освещения и другие факторы.

Определяем размеры, определяющие размещение светильников в помещении :

1) высота подвеса светильника

 

h = H – hc - hp,

 

где H = 3 м – высота помещения;

hc = 0 – свес;

hp = 1 – высота рабочей поверхности;

h = 2 (м);

 

2) расстояние между светильниками

 

L » 1.4 h » 1.4 * 2 = 2.8 (м);

 

3) расстояние от крайнего ряда светильников до стен при учёте, что рабочие поверхности горизонтальные и расположены у стен

 

l = (0.25..0.33) L = 0.25 * 2.8 = 0.7 (м).

 

Существует несколько методов расчёта искусственного освещения :

1) метод коэффициента использования светового потока (для расчёта общего равномерного освещения горизонтальной поверхности при светильниках любого типа);

2) точечный метод (для расчёта равномерного общего локализованного и местного освещения помещений при светильниках прямого света и наружного освещения);

3) метод «удельных мощностей» (при приближенных расчётах).

Воспользуемся методом коэффициента использования светового потока.

При принятом количестве светильников искомой величиной является необходимый световой поток одной лампы, определяемый по формуле (8.2):

 

 (8.2)

 

где Ен = 150 – нормируемая минимальная освещённость, определяется по табл. 2.1 ;

S = 16 м2 – площадь освещенного помещения;

N = 4 – число светильников;

n = 4 – число ламп в светильнике;

кз = 1.4 – коэффициент запаса (принимается в пределах 1.3..2.0 в зависимости от содержания пыли в производственных помещениях с учетом регулярной очистки светильников и вида источника света);

z = 1.2 – коэффициент неравномерности освещения (1.1..1.25);

h = 0.47- коэффициент использования светового потока (зависит от индексов помещения i и значения коэффициента отражения стен и потолка rс и rп), определяется по таблице 2.2;

Индекс помещения вычисляется по формуле:

 

 

где А и В – соответственно длина и ширина помещения, м;

h = 2 м – расчётная высота подвеса светильников.

 

 

Подставляя в формулу (8.1) имеющиеся значения, получаем:

 

(Лм)

 

Вывод

 

Разработанное программное обеспечение должно эксплуатироваться на IBM PC/AT совместимых компьютерах в помещении, соответствующем санитарным нормам, а именно: площадью не менее 16 м2 и объёмом воздуха 15 м3. В производственном помещении в дневное время должно быть обеспечено достаточное естественное освещение, для чего необходимо расположить два окна размером 2х2 м2, а в темное время суток – искусственное освещение, в качестве источника света которого являются люминесцентные лампы (световой поток одной лампы составляет 536.2 Лм).



Заключение

 

В рамках дипломного проекта разработана концепция распределенной системы терминального управления робототехническим комплексом, оперирующем в зоне опасной для жизни человека. При разработке концепции использованы современные подходы к организации сбора и передачи информации. В частности рассмотрены основы использования CAN-интерфейса. Для определения коэффициентов терминального управления разработана функция вычисления коэффициентов на двух языках программирования (язык m-скриптов и на языке C++). Возможность применения синтезированного закона опробована на специально разработанной экспериментальной модели системы. Разработка модели и апробация проведены в среде инженерных расчетов Matlab. Конечным продуктом проекта является программное обеспечение пульта управления РСТУ, которое позволяет произвести вычисление коэффициентов терминального управления, построить управляющую функцию, произвести визуализацию результатов работы, создание и сохранение файла протокола, передачу расчетных данных на борт робота манипулятора по сетевому интерфейсу. При разработке учтены все требования технического задания.



Библиографический список

 

1. Дистанционно управляемые роботы и манипуляторы / ВС. Кулешов, Н.А Лакота, В.В. Андрюнин и др.; Под общ. Ред. Е.П. Попова. – М.Машиностроение, 1986. – 328 с. ил.

2. Батенко А.П. Системы терминального управления. – М.: Радио и связь, 1984. – 160 с., ил.

3. Медведев В.С., Лесков А.Г., Системы управления манипуляционных роботов/Под ред. Е.П. Попова. – М.: Наука, 1978 – 416 с.

4. Летов А.М. Динамика полета и управление. – М.: Наука, – 1969. – 359 с.

5. Красовский А.А. Аналитическое конструирование систем квазитерминального управления // Автоматика и телемеханика. – 1972. – №4. – С. 5-14.

6. Seal C.E., Stabberud A.R. On final value control // IEEE Trans. – 1969. – V.7 – №2. – P. 133-143.

7. Green W.G. Logarithmic navigation for precise guidance for space vehicles // IRE Trans. – 1961. – V. ANE-8 – №2 – P. 59-71.

8. Ястребов В.С., Филатов А.М. Системы управления движением робота. – М.: Машиностроение, 179. 176 с.

9. Батенко А.П. Управление конечным состоянием движущихся объектов. – М.: Сов. радио, 1977. – 256 с.

10. Батенко А.П. Конечное управление цепочкой интеграторов // Автоматика. – 1977. – №2. – С. 63-71.

11. http://www.kaskod.ru

12. http://www.mstu.edu.ru

13. Чиликин М.Г., Ключев В.И. Теория автоматизированного электропривода. – М.: Энергия, 1979. – 616 с.

14. Borland C++Builder. Программирование на С++ без проблем / Шамис В.А.. – М.: «Нолидж», 1997 – 266с., ил.

15. Программирование в среде С++Builder / Сурков К.А., Сурков Д.А., Вальвачев А.Н.. – Мн.: ООО «Попурри», 1998. – 576 с.:ил.



Приложение а

 

(Обязательное)

Исходные тексты основных функций

 

А.1 Исходный текст функции вычисления коэффициентов терминального управления на языке Matlab

 

% ФУНКЦИЯ РАСЧЕТА ТЕРМИНАЛЬНОГО УПРАВЛЕНИЯ

% ----------------------------------------

% ВХОДНЫЕ ПАРАМЕТРЫ:

% Xo - ВЕКТОР НАЧАЛЬНЫХ УСЛОВИЙ

% Xk - ВЕКТОР КОНЕЧНЫХ УСЛОВИЙ

% T - ВРЕМЯ ЗА КОТОРОЕ НЕОБХОДИМО ВЫПОЛНИТЬ ПЕРЕХОД

% dT - ВРЕМЯ ОПЕРЕЖЕНИЯ ФАЗОВОЙ ТОЧКИ

% ----------------------------------------

% ВЫХОДНЫЕ ПАРАМЕТРЫ:

% C - КОЭФФИЦИЕНТЫ ПАРАМЕТРОВ УПРАВЛЕНИЯ

% ----------------------------------------

function [C]=terminal_control(Xo,Xk,T,dT)

r=length(Xo); % КОЛИЧЕСТВО НАЧАЛЬНЫХ УСЛОВИЙ

n=length(Xk); % КОЛИЧЕСТВО КОНЕЧНЫХ УСЛОВИЙ

C=zeros(1,2*r+n);

%---------------------------------------------------------------% РАСЧЕТ ПАРАМЕТРОВ УПРАВЛЕНИЯ Сi

%---------------------------------------------------------------for i=0:r-1

 C(i+1)=Xo(i+1)/factorial(i); % ПЕРВЫЕ r ПАРАМЕТРОВ Ci (i=0,1,...,r-1)

end

for i=r:r+n-1

 summa_1=0;

 summa_2=0;

 for nu=0:i-1

 summa_1=summa_1+factorial(r+n-nu-1)*C(nu+1)/factorial(r+n-i-1)/factorial(i-nu)/T^(i-nu);

 end

 for nu=0:r+n-i-1

 summa_2=summa_2+((-1)^nu)*factorial(r+n-nu-1)*Xk(nu+1)/factorial(i)/factorial(r+n-i-nu-1)/factorial(nu)/T^(i-nu);

 end

 C(i+1)=summa_2-summa_1;

end

disp(['---------- ВЫХОДНАЯ ФУНКЦИЯ ----------'])

disp(['X(t)='])

for i=0:r+n-1

 disp(['C' num2str(i) '*t^' num2str(i) '+'])

end

disp(['---------- НАЧАЛЬНЫЕ УСЛОВИЯ Xo ----------'])

for i=0:r-1

 disp(['Xo(' num2str(i) ')=' num2str(Xo(i+1))])

end

disp(['---------- КОНЕЧНЫЕ УСЛОВИЯ Xk ----------'])

for i=0:n-1

 disp(['Xk(' num2str(i) ')=' num2str(Xk(i+1))])

end

disp(['---------- ВРЕМЯ ----------'])

disp(['T=' num2str(T)])

disp(['---------- dT ----------'])

disp(['dT=' num2str(dT)])

disp(['---------- КОЭФФИЦИЕНТЫ Ci ----------'])

for i=0:r+n-1

 disp(['C(' num2str(i) ')=' num2str(C(i+1))])

end

 

А.2 Исходный текст модуля вычисления коэффициентов терминального управления на языке С++

 

// Функции для вычисления параметров

// терминального управления v.1.0

 

#include <math.h>

 

//----------------------------------//

// ФУНКЦИЯ ВЫЧИСЛЕНИЯ ФАКТОРИАЛА N! //

//----------------------------------//

double Factorial(int n)

{

    double result=1;

    int i=1;

    // Если аргумент функции отрицательный возвращаем -1

    if (n<0) return -1;

    // Расчет факториала

    while (i<=n)

    {

              result*=i;

              i++;

    }

    // Возвращаем результат

    return result;

}

 

//-------------------------------------//

// ФУНКЦИЯ ВЫЧИСЛЕНИЯ ПАРАМЕТРОВ Сi //

//-------------------------------------//

// Входные параметры:

// Xo - массив начальных условий

// r - количество начальных условий

// Xk - массив конечных условий

// n - количество конечных условий

// Tk - конечное время

// Выходные параметры:

// Указатель на массив коэффициентов Ci

//-------------------------------------//

double *CoeffC(double Xo[], int r, double Xk[], int n, double Tk)

{

    // Определяем массив коэффициентов

    // Памать под массив необходимо очистить

    // вызывающей функции delete[] Ci !!!

    double *Ci = new double[r+n];

    // Вычисляем первые r коэффициентов Ci

    for (int i=0; i<=r-1; i++)

    {

              Ci[i]=(double)(Xo[i]/Factorial(i));

    }

    // Вычисляем оставшиеся n коэффициентов Ci

    // См. Батенко А.П. "Синтез терминального управления" формула (4.16)

    int v;

    double sum_1, sum_2;

    sum_1=sum_2=0.0;

    for (int i=r; i<=r+n-1; i++)

    {

              for (v=0; v<=i-1; v++)

              {

                       sum_1+=(double)(Factorial(r+n-v-1)/Factorial(r+n-i-1)/Factorial(i-v)/pow(Tk,i-v)*Ci[v]);

              }

              for (v=0; v<=r+n-i-1; v++)

              {

                       sum_2+=(double)(pow(-1,v)*Factorial(r+n-v-1)/Factorial(i)/Factorial(r+n-i-v-1)/Factorial(v)/pow(Tk,i-v)*Xk[v]);

              }

              Ci[i]=-sum_1+sum_2;

              sum_1=sum_2=0.0;

    }

    r=(int)sizeof(Ci)/sizeof(double);

    return Ci;

}

//-------------------------------------//

 

А.2 Исходный текст функций программного обеспечения РСТУ

 

//--------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

 : TForm(Owner)

{

}

//--------------------------------------------------------------void __fastcall TForm1::bbCloseClick(TObject *Sender)

{

 Close();

}

//--------------------------------------------------------------

 

void __fastcall TForm1::bOkClick(TObject *Sender)

{

 Series1->Clear();

 ListBox1->Clear();

 int i, k;

 String S, s;

 //------------------------------------------------------------

 // Ввод исходных данных для расчета

 //------------------------------------------------------------ int InitConditionNum=StrToInt(Edit1->Text); // Кол-во начальных условий

 int FiniConditionNum=StrToInt(Edit3->Text); // - " - конечных условий

 String InitCondition=Edit2->Text;

 String FiniCondition=Edit4->Text;

 double T=StrToFloat(Edit5->Text);

 //------------------------------------------------------------

 // Формирование массива начальных условий

 //------------------------------------------------------------

 S=Edit2->Text;

 s="";

 k=0;

 double *xo;

 xo=new double[InitConditionNum];

 for (i=1; i<=S.Length(); i++)

 {

 if ((S[i]!=' ')&(S[i]!='[')&(S[i]!=']'))

 {

 s+=S[i];

 }

 else

 {

 if (!s.IsEmpty())

 {

 xo[k]=StrToFloat(s);

 s="";

 k++;

 }

 }

 }

 //------------------------------------------------------------

 // Формирование массива конечных условий

 //------------------------------------------------------------

 S=Edit4->Text;

 s="";

 k=0;

 double *xf;

 xf=new double[FiniConditionNum];

 for (i=1; i<=S.Length(); i++)

 {

 if ((S[i]!=' ')&(S[i]!='[')&(S[i]!=']'))

 {

 s+=S[i];

 }

 else

 {

 if (!s.IsEmpty())

 {

 xf[k]=StrToFloat(s);

 s="";

 k++;

 }

 }

 }

 //------------------------------------------------------------

 // Вычисляем коэффициенты терминального управления

 //------------------------------------------------------------

 // Указатель на массив коэффициентов

    double *C;

 C=CoeffC(xo, InitConditionNum, xf, FiniConditionNum, T);

 for (i=0; i<InitConditionNum+FiniConditionNum; i++)

 {

 ListBox1->Items->Add("C["+IntToStr(i)+"] = "

 +FloatToStrF(C[i], ffFixed, 7, 5));

 }

 //------------------------------------------------------------

 // Вычисляем управляющую функцию u(t)

 //------------------------------------------------------------

 double dT, t=0.0;

 dT=StrToFloat(Edit6->Text);

 int N=(int)T/dT;

 StringGrid1->RowCount=N+3;

 double u, sum=0.0;

 for(i=0; i<=N+1; i++)

 {

 StringGrid1->Cells[0][i+1]=FloatToStrF(t, ffFixed, 7, 5);

 for (k=0; k<InitConditionNum+FiniConditionNum; k++)

 {

 if (k==0)

 {

 sum+=C[k];

 }

 else

 {

 sum+=C[k]*pow(t, k);

 }

 }

 Series1->AddXY(t, sum, "", clTeeColor);

 Application->ProcessMessages();

 StringGrid1->Cells[1][i+1]=FloatToStrF(sum, ffFixed, 5, 3);

 sum=0.0;

 t+=dT;

 }

 //------------------------------------------------------------

 delete[] C;

 delete[] xo;

 delete[] xf;

 

}

//--------------------------------------------------------------

void __fastcall TForm1::FormCreate(TObject *Sender)

{

 StringGrid1->Cells[0][0]="Время [сек]";

 StringGrid1->Cells[1][0]="U(t)";

}

//--------------------------------------------------------------

void __fastcall TForm1::bbSaveClick(TObject *Sender)

{

 ofstream out;

 int i;

 if (SaveDialog1->Execute())

 {

 out.open(SaveDialog1->FileName.c_str(), 0);

 out<<"Файл протокола от "<<DateToStr(Now()).c_str()<<"\n";

 for (i=0; i<ListBox1->Count; i++)

 {

 out<<"C["<<i<<"] = "<<ListBox1->Items->Strings[i].c_str()<<"\n";

 }

 for (i=0; i<StringGrid1->RowCount; i++)

 {

 out<<StringGrid1->Cells[0][i].c_str()<<"\t"<<StringGrid1->Cells[1][i].c_str()<<"\n";

 }

 out.close();

 }

}

//--------------------------------------------------------------

void __fastcall TForm1::bbSendClick(TObject *Sender)

{

 String S="@";

 int i;

 //------------------------------------------------------------

 // Формируем пакет для передачи информации

 //------------------------------------------------------------

 for (i=0; i<ListBox1->Count; i++)

 {

 S+=ListBox1->Items->Strings[i]+"%";

 }

 S+="#";

 //------------------------------------------------------------

 // Вводим IP-адрес

 //------------------------------------------------------------

 UDP->Host=MaskEdit1->Text;

 //------------------------------------------------------------

 // Пересылка данных

 //------------------------------------------------------------

 try

 {

 UDP->Send(S);

 }

 catch(...)

 {

 ShowMessage("Не удалось передать информационный пакет!");

 }

 //------------------------------------------------------------

}

//--------------------------------------------------------------

void __fastcall TForm1::bbAboutClick(TObject *Sender)

{

 FormAbout->ShowModal();

}

//--------------------------------------------------------------

Дата: 2019-12-10, просмотров: 220.