- •1.2.1.2 Лінійні датчики серії длп.
- •1.3 Датчики кута повороту – енкодери
- •1.4 Датчики кута нахилу - инклинометра.
- •1.5 Принцип роботи uart.
- •3.1.2 Критерій вибору датчика для визначення лінійного зміщення.
- •5.1 Визначення вартості витратних матеріалів, необхідних для розробки програмного продукту
- •5.3 Розрахунок відрахувань на соціальні заходи
- •5.4 Розрахунок витрат на оплату машинного часу при розробці програмного продукту
- •5.5 Розрахунок інших накладних витрат у складі витрат на розробку програмного продукту
- •5.6 Розрахунок собівартості апаратного забезпечення
- •5.7.2 Аналіз собівартості системи
- •Висновок
- •Додаток а
- •Єдина тарифна сітка розрядів і коефіцієнтів по оплаті праці робітників
- •Розрахунок сумарної потужності устаткування
- •Приложение I
- •Int y0,y1,y2,y3,y4; //буфер для значения датчика
Додаток а
Єдина тарифна сітка розрядів і коефіцієнтів по оплаті праці робітників
-
Тарифні розряди
Тарифні коефіцієнти
1
1,00
2
1,09
3
1,18
4
1,27
5
1,36
6
1,45
7
1,54
8
1,64
9
1,73
10
1,82
11
1,97
12
2,12
13
2,27
14
2,42
15
2,58
16
2,79
17
3,00
18
3,21
19
3,42
20
3,64
21
3,85
22
4,06
23
4,27
24
4,36
25
4,51
ДОДАТОК Б
Значення коефіцієнта кваліфікації розробника ПЗ
Стаж роботи розробника |
Коефіцієнт кваліфікації розробника ( ) |
до 2-х років |
0,8 |
від 2-х до 3-х лет |
1,0 |
від 3-х до 5 лет |
1,1…1,2 |
від 5 до 7 лет |
1,2…1,3 |
більше 7 лет |
1,3…1,5 |
ДОДАТОК В
Значення коефіцієнта, що враховує новизну програми
Програмні продукти за новизною відносяться до 4 груп:
група А – рішення нових задач;
група Б – розробка оригінальних програм;
група В – розробка програм з використанням типових рішень;
група Г – реалізація разової типової задачі.
За ступенем важкості програмні продукти можуть бути віднесені до одної з 3 груп:
1 – алгоритми оптимізації та моделювання систем;
2 – задачі обліку, статистики;
3 – стандартні алгоритми.
Значення коефіцієнту вибирається з представленої нижче таблиці:
ДОДАТОК Г
Розрахунок сумарної потужності устаткування
ДОДАТОК Д
Схема принципова, система опитування кутових енкодеров.
ДОДАТОК Е
Плата друкована, модуль системи опитування датчиків.
ДОДАТОК Є
Схема принципова, схема узгодження рівні RS-232 і USART.
ДОДАТОК Ж
Плата друкована, схеми узгодження рівнів RS-232 і USART.
ДОДАТОК З
Программа прошивка.
#include <avr/io.h>
#include <util/delay.h>
#include "pin_macros.h"
#include "scmRTOS/Common/scmRTOS.h"
#include "uart.h"
#include "as5040.h"
#define EncoderCount 5
//---------------------------------------------------------------------------
//
// Process types
//
typedef OS::process<OS::pr0, 100> TProc1;
typedef OS::process<OS::pr1, 100> TProc2;
//---------------------------------------------------------------------------
//
// Process objects
//
TProc1 Proc1;
TProc2 Proc2;
//---------------------------------------------------------------------------
UART::CUart MyUart;
as5040 Encoder;
Data d[EncoderCount]; //значения датчиков
struct TData
{
char a;
};
OS::channel<TData,5> RXChannel;
//---------------------------------------------------------------------------
int main()
{
MyUart.init();
Encoder.init();
Encoder.readPosition(EncoderCount,d); //сброс буферов датчиков
_delay_ms(50);
// Start System Timer
TCCR0 = (1 << CS02)|(0 << CS01) | (0 << CS00); // clk/256
TIMSK |= (1 << TOIE0);
//Запускаем ОС
OS::Run();
return 0;
}
//---------------------------------------------------------------------------
namespace OS {
char STATUS;
TMutex MutexData;
template<> OS_PROCESS void TProc1::Exec()
{
char Err[]="00000000";
TData data;
STATUS=1;
for(;;)
{
Sleep(200);
if(data.a=='s') //start
{
STATUS=1;
}
if(STATUS==2)
{
MutexData.Lock();
MyUart.sendMass("previos0: ",10);
itoa(d[0].data,Err,10);
MyUart.sendMass(Err,4);
MyUart.sendByte(0x0D);
MyUart.sendByte(0x0A);
MyUart.sendMass("previos1: ",10);
itoa(d[1].data,Err,10);
MyUart.sendMass(Err,4);
MyUart.sendByte(0x0D);
MyUart.sendByte(0x0A);
MyUart.sendMass("previos2: ",10);
itoa(d[2].data,Err,10);
MyUart.sendMass(Err,4);
MyUart.sendByte(0x0D);
MyUart.sendByte(0x0A);
MyUart.sendMass("previos3: ",10);
itoa(d[3].data,Err,10);
MyUart.sendMass(Err,4);
MyUart.sendByte(0x0D);
MyUart.sendByte(0x0A);
MyUart.sendMass("previos4: ",10);
itoa(d[4].data,Err,10);
MyUart.sendMass(Err,4);
MyUart.sendByte(0x0D);
MyUart.sendByte(0x0A);
MyUart.sendMass("==========",10);
MyUart.sendByte(0x0D);
MyUart.sendByte(0x0A);
MutexData.Unlock();
}else if (STATUS==3)
{
MyUart.sendMass("=====Error=====",15);
MyUart.sendByte(0x0D);
MyUart.sendByte(0x0A);
}
}
} // TProc1::Exec()
//процес опрашивает датчики
template<> OS_PROCESS void TProc2::Exec()
{
//STATUS==1 - старт
//STATUS==2 - постоянный опрос датчиков
//STATUS==3 - ошибка
//STATUS==4 - простой
char Err[]="00000000";
for(;;)
{
//Ожидание события начала измерений
if(STATUS==1) //Начало измерений
{
TCritSect cr; //критическая секция.
Encoder.readPosition(EncoderCount,d); //получение первоначальных данных
//инициализация
for(char i=0;i<EncoderCount;i++)
{
d[i].zero=d[i].data; //засекаем точку нуля
d[i].res=0; //Сбрасываем результаты измерений
d[i].previos=0; //предыдущее значение
//MyUart.sendByte('1');
}
STATUS=2; //начало обработки данных
cr.~TCritSect(); //конец критической секции
}
else if(STATUS==2)
{
char err=0;
TCritSect cr;
Encoder.readPosition(EncoderCount,d); //чтение данных
cr.~TCritSect();
//обработка данных
MutexData.Lock();
err=Encoder.correctData(EncoderCount,d);
MutexData.Unlock();
}
//Sleep(500);
}
} // TProc2::Exec()
}
//-----------------------
OS_INTERRUPT void USART_RXC_vect()
{
OS::TISRW_SS ISRW;
TData data;
data.a=UDR;
RXChannel.push(data);
}
//------ end of file main.cpp -------------------------------------------