Разработка системы контроля параметров линейной батареи на узле коммутации

Анализ существующих методов реализации системы контроля параметров линейной батареи. Общая характеристика системы Siemens PSS400. Обоснование языка программной реализации. Разработка контроллера интерфейса USB 2.0. Модули обработки и упаковки данных.

Рубрика Коммуникации, связь, цифровые приборы и радиоэлектроника
Вид дипломная работа
Язык русский
Дата добавления 30.12.2010
Размер файла 4,4 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T

PORTF=0x00;

DDRF=0x00;

//инициализация таймеров и счетчиков

// Timer/Counter 0 initialization

// Clock source: System Clock

// Clock value: Timer 0 Stopped

// Mode: Normal top=FFh

// OC0A output: Disconnected

// OC0B output: Disconnected

TCCR0A=0x00;

TCCR0B=0x00;

TCNT0=0x00;

OCR0A=0x00;

OCR0B=0x00;

// Timer/Counter 1 initialization

// Clock source: System Clock

// Clock value: Timer 1 Stopped

// Mode: Normal top=FFFFh

// OC1A output: Discon.

// OC1B output: Discon.

// OC1C output: Discon.

// Noise Canceler: Off

// Input Capture on Falling Edge

// Timer 1 Overflow Interrupt: Off

// Input Capture Interrupt: Off

// Compare A Match Interrupt: Off

// Compare B Match Interrupt: Off

// Compare C Match Interrupt: Off

TCCR1A=0x00;

TCCR1B=0x00;

TCNT1H=0x00;

TCNT1L=0x00;

ICR1H=0x00;

ICR1L=0x00;

OCR1AH=0x00;

OCR1AL=0x00;

OCR1BH=0x00;

OCR1BL=0x00;

OCR1CH=0x00;

OCR1CL=0x00;

// Timer/Counter 2 initialization

// Clock source: System Clock

// Clock value: Timer 2 Stopped

// Mode: Normal top=FFh

// OC2A output: Disconnected

// OC2B output: Disconnected

ASSR=0x00;

TCCR2A=0x00;

TCCR2B=0x00;

TCNT2=0x00;

OCR2A=0x00;

OCR2B=0x00;

// Timer/Counter 3 initialization

// Clock source: System Clock

// Clock value: Timer 3 Stopped

// Mode: Normal top=FFFFh

// Noise Canceler: Off

// Input Capture on Falling Edge

// OC3A output: Discon.

// OC3B output: Discon.

// OC3C output: Discon.

// Timer 3 Overflow Interrupt: Off

// Input Capture Interrupt: Off

// Compare A Match Interrupt: Off

// Compare B Match Interrupt: Off

// Compare C Match Interrupt: Off

TCCR3A=0x00;

TCCR3B=0x00;

TCNT3H=0x00;

TCNT3L=0x00;

ICR3H=0x00;

ICR3L=0x00;

OCR3AH=0x00;

OCR3AL=0x00;

OCR3BH=0x00;

OCR3BL=0x00;

OCR3CH=0x00;

OCR3CL=0x00;

// Ниже запрещаются прерывания по указанным выводам (USB прерывания иные)

// External Interrupt(s) initialization

// INT0: Off

// INT1: Off

// INT2: Off

// INT3: Off

// INT4: Off

// INT5: Off

// INT6: Off

// INT7: Off

EICRA=0x00;

EICRB=0x00;

EIMSK=0x00;

// PCINT0 interrupt: Off

// PCINT1 interrupt: Off

// PCINT2 interrupt: Off

// PCINT3 interrupt: Off

// PCINT4 interrupt: Off

// PCINT5 interrupt: Off

// PCINT6 interrupt: Off

// PCINT7 interrupt: Off

PCMSK0=0x00;

PCICR=0x00;

// Timer/Counter 0 Interrupt(s) initialization

TIMSK0=0x00;

// Timer/Counter 1 Interrupt(s) initialization

TIMSK1=0x00;

// Timer/Counter 2 Interrupt(s) initialization

TIMSK2=0x00;

// Timer/Counter 3 Interrupt(s) initialization

TIMSK3=0x00;

// Analog Comparator initialization

// Analog Comparator: Off

// Analog Comparator Input Capture by Timer/Counter 1: Off

ACSR=0x80;

ADCSRB=0x00;

// Инициализация АЦП

// ADC Clock frequency: 1000,000 kHz

// ADC Voltage Reference: AREF pin

// ADC High Speed Mode: Off

// Only the 8 most significant bits of

// the AD conversion result are used

// Digital input buffers on ADC0: On, ADC1: On, ADC2: On, ADC3: On

// ADC4: On, ADC5: On, ADC6: On, ADC7: On

DIDR0=0x00;

ADMUX=ADC_VREF_TYPE & 0xff;

ADCSRA=0x83;

ADCSRB&=0x7F;

// USB Controller initialization

// USB Mode: Device

// UID Pin: Off

// UVCON Pin: Off

// USB Pad Regulator: Off

// OTG Pad: On

// VBUS Transition interrupt: Off

// ID Transition interrupt: Off

UHWCON=0x80;

USBCON=0x90;

USBINT=0; // Clear the interrupt flags

// SRP interrupt: Off

// VBUS Error interrupt: Off

// B-Connection Error interrupt: Off

// Role Exchange interrupt: Off

// HNP Error interrupt: Off

// Suspend Time-out Error interrupt: Off

OTGIEN=0x00;

OTGINT=0; // Clear the interrupt flags

// SRP Method: Data line pulsing

OTGCON=0x00;

// USB Device mode general registers initialization

// Low Speed Mode: On

UDCON=0x04;

// Suspend interrupt: Off

// Start Of Frame interrupt: Off

// End Of Reset interrupt: Off

// Wake-up CPU interrupt: Off

// End Of Resume interrupt: Off

// Upstream Resume interrupt: Off

UDIEN=0x00;

UDINT=0; // Clear the interrupt flags

// Endpoint 0 selected

UENUM=0;

// Device endpoint registers initialization

// Endpoint 0: Off

UECONX=0x00;

// Endpoint X configuration: Control, OUT

UECFG0X=0x00;

// Endpoint X size: 8

// Endpoint X Banks: 1

UECFG1X=0x00;

// Инициализация модуля LCD

lcd_init(40);

PORTE.0=0; //страховка - изначально аварии не предполагается

// Разрешение глобальных прерываний

#asm("sei")

while (1)

{

if(PIND.2==1)/*пока не подан сигнал K10 (пока не отключена батарея)*/

{

if(u_tmp!=read_adc(0) || i_tmp!=read_adc(1)) /*если полученные данные с АЦП отличаются от предыдущих*/

{

lcd_clear(); //очищаем дисплей

}

/*запоминаем вновь полученные данные по напряжению и току*/

u_tmp=read_adc(0);

i_tmp=read_adc(1);

/*устанавливаем курсор дисплея в верхнюю левую позицию*/

lcd_gotoxy(0,0);

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

lcd_putsf("NORMA");

lcd_gotoxy(0,1); //переводим строку

/*вывод значения напряжения*/

lcd_putsf(" U = ");

Uin=read_adc(0)*Ref/ADCel;/*переводим код с АЦП во входное напряжение*/

Uin=Uin*13.384;/*умножаем на масштабный коэффициент*/

/*переводим значение Uin в char и записываем в переменную buff*/

itoa(Uin,buff);

lcd_puts(buff);//выводим значение переменной buff

lcd_putsf(",");

ost=Uin*100-(int)Uin*100;//запоминаем числа после запятой

itoa(ost,buff);

lcd_puts(buff);// выводим значение переменной buff

/*вывод значения тока аналогичен*/

Iin=read_adc(1)*Ref/ADCel;

lcd_putsf(" I = ");

itoa(Iin*40,buff);

lcd_puts(buff);

/*зажигаем светодиод «Разряда батареи»*/

PORTE.1=1;

/*тушим светодиод «Батарея отключена»*/

PORTE.2=0;

if(read_adc(0)<=203) /*если напряжение меньше допустимого, подаем сигнал K10 (подаем напряжение на реле и отключаем батарею)*/

{

PORTE.0=1;

}

}

else if(PIND.2==0) /*если реле отключено, т.е. батарея отключена от цепи*/

{

if(u_tmp!=read_adc(0) || i_tmp!=read_adc(1)) /*если полученные данные с АЦП отличаются от предыдущих*/

{

lcd_clear(); //очищаем дисплей

}

/*запоминаем вновь полученные данные по напряжению и току*/

u_tmp=read_adc(0);

i_tmp=read_adc(1);

/*устанавливаем курсор дисплея в верхнюю левую позицию*/

lcd_gotoxy(0,0);

/*указываем аварийное состояние разряда*/

lcd_putsf("ALARM");

lcd_gotoxy(0,1); //переводим курсор на нижнюю строку

lcd_putsf(" U = ");

Uin=read_adc(0)*Ref/ADCel; /*переводим код с АЦП во входное напряжение*/

Uin=Uin*13.384; /*умножаем на масштабный коэффициент*/

/*переводим значение Uin в char и записываем в переменную buff*/

itoa(Uin,buff);

lcd_puts(buff); //выводим значение переменной buff

lcd_putsf(",");

ost=Uin*100-(int)Uin*100; //запоминаем числа после запятой

itoa(ost,buff);

lcd_puts(buff); // выводим значение переменной buff

/*вывод значения тока аналогичен*/

Iin=read_adc(1)*Ref/ADCel;;

lcd_putsf(" I = ");

itoa(Iin*40,buff);

lcd_puts(buff);

/*тушим светодиод «Разряда батареи»*/

PORTE.1=0;

/*зажигаем светодиод «Батарея отключена»*/

PORTE.2=1;

if(read_adc(0)>203) /*если напряжение стало больше минимального допустимого, перестаем подавать напряжение на реле и подключаем батарею*/

{

PORTE.0=0;

}

/*делаем так, чтобы светодиод «Батарея отключена» мигал*/

delay_ms(15);

PORTE.2=0;

delay_ms(15);

}

};

}

Драйвер хоста

Файл driver.c:

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <usb.h>

#include "opendevice.h"

#include "../firmware/requests.h"

#include "../firmware/usbconfig.h" /* имена и VID/PID устройства для определения */

static void usage(char *name)

{

fprintf(stderr, "usage:\n");

fprintf(stderr, " %s статус ... запрос текущего состояния светодиода\n", name);

#if ENABLE_TEST

fprintf(stderr, " %s тест ..... запуск драйвера, повторное тестирование\n", name);

#endif /* ENABLE_TEST */

}

int main(int argc, char **argv)

{

usb_dev_handle *handle = NULL;

const unsigned char rawVid[2] = {USB_CFG_VENDOR_ID}, rawPid[2] = {USB_CFG_DEVICE_ID};

char vendor[] = {USB_CFG_VENDOR_NAME, 0}, product[] = {USB_CFG_DEVICE_NAME, 0};

char buffer[4];

int cnt, vid, pid;

usb_init();

if(argc < 2) /* нам нужен как минимум один аргумент */

{

usage(argv[0]);

exit(1);

}

/* вычисляем VID/PID из usbconfig.h */

vid = rawVid[1] * 256 + rawVid[0];

pid = rawPid[1] * 256 + rawPid[0];

/* Следующая функция реализована в opendevice.c: */ if(usbOpenDevice(&handle, vid, vendor, pid, product, NULL, NULL, NULL) != 0)

{

fprintf(stderr, "Could not find USB device \"%s\" with vid=0x%x pid=0x%x\n", product, vid, pid);

exit(1);

}

#if 0

int retries = 1, usbConfiguration = 1, usbInterface = 0;

if(usb_set_configuration(handle, usbConfiguration) && showWarnings){

fprintf(stderr, "Внимание: не возможно установить конфигурацию: %s\n", usb_strerror());

}

while((len = usb_claim_interface(handle, usbInterface)) != 0 && retries-- > 0){

#ifdef LIBUSB_HAS_DETACH_KERNEL_DRIVER_NP

if(usb_detach_kernel_driver_np(handle, 0) < 0 && showWarnings){

fprintf(stderr, "Warning: could not detach kernel driver: %s\n", usb_strerror());

}

#endif

}

#endif

if(strcasecmp(argv[1], "status") == 0)

{

cnt = usb_control_msg(handle, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_IN, CUSTOM_RQ_GET_STATUS, 0, 0, buffer, sizeof(buffer), 5000);

if(cnt < 1)

{

if(cnt < 0)

{

fprintf(stderr, "USB error: %s\n", usb_strerror());

}

else

{

fprintf(stderr, "only %d bytes received.\n", cnt);

}

}

else

{

printf("Питание от Сети %s\n", buffer[0] ? "да" : "нет");

printf("Напряжение: %s\n", buffer[1]);

printf("Ток: %s\n", buffer[2]);

printf("Аварийное питание отключено: %s\n", buffer[3] ? "да" : "нет");

}

}

#if ENABLE_TEST

else if(strcasecmp(argv[1], "test") == 0)

{

int i;

srandomdev();

for(i = 0; i < 50000; i++)

{

int value = random() & 0xffff, index = random() & 0xffff;

int rxValue, rxIndex;

if((i+1) % 100 == 0)

{

fprintf(stderr, "\r%05d", i+1);

fflush(stderr);

}

cnt = usb_control_msg(handle, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_IN, CUSTOM_RQ_ECHO, value, index, buffer, sizeof(buffer), 5000);

if(cnt < 0)

{

fprintf(stderr, "\nUSB error in iteration %d: %s\n", i, usb_strerror());

break;

}

else if(cnt != 4)

{

fprintf(stderr, "\nerror in iteration %d: %d bytes received instead of 4\n", i, cnt);

break;

}

rxValue = ((int)buffer[0] & 0xff) | (((int)buffer[1] & 0xff) << 8);

rxIndex = ((int)buffer[2] & 0xff) | (((int)buffer[3] & 0xff) << 8);

if(rxValue != value || rxIndex != index)

{

fprintf(stderr, "\ndata error in iteration %d:\n", i);

fprintf(stderr, "rxValue = 0x%04x value = 0x%04x\n", rxValue, value);

fprintf(stderr, "rxIndex = 0x%04x index = 0x%04x\n", rxIndex, index);

}

}

fprintf(stderr, "\nTest completed.\n");

#endif /* ENABLE_TEST */

else

{

usage(argv[0]);

exit(1);

}

usb_close(handle);

return 0;

}

Файл opendevice.c:

#include <stdio.h>

#include "opendevice.h"

/* ------------------------------------------------------------------------- */

#define MATCH_SUCCESS 1

#define MATCH_FAILED 0

#define MATCH_ABORT -1

/* частный интерфейс (private interface): проверка на соответсвие text and p, возврат MATCH_SUCCESS, MATCH_FAILED или MATCH_ABORT. */

static int _shellStyleMatch(char *text, char *p)

{

int last, matched, reverse;

for(; *p; text++, p++){

if(*text == 0 && *p != '*')

return MATCH_ABORT;

switch(*p){

case '\\':

/* Буквенное (literal) соответствие со следующим символом. */

p++;

/* FALLTHROUGH */

default:

if(*text != *p)

return MATCH_FAILED;

continue;

case '?':

/* Соответсвие с любым символом. */

continue;

case '*':

while(*++p == '*')

/* Следующие друг за другом звездочки срабатывают как одна */

continue;

if(*p == 0)

/* Последняя звездочка совпадает с любым набором символов*/

return MATCH_SUCCESS;

while(*text)

if((matched = _shellStyleMatch(text++, p)) != MATCH_FAILED)

return matched;

return MATCH_ABORT;

case '[':

reverse = p[1] == '^';

if(reverse) /* Инвертированный класс символа*/

p++;

matched = MATCH_FAILED;

if(p[1] == ']' || p[1] == '-')

if(*++p == *text)

matched = MATCH_SUCCESS;

for(last = *p; *++p && *p != ']'; last = *p)

if (*p == '-' && p[1] != ']' ? *text <= *++p && *text >= last : *text == *p)

matched = MATCH_SUCCESS;

if(matched == reverse)

return MATCH_FAILED;

continue;

}

}

return *text == 0;

}

/* Публичный интерфейс (public interface) для совпадения в стиле шелла (shell): возврат 0 если нет совпадения, 1 если совпадение */

static int shellStyleMatch(char *text, char *pattern)

{

if(pattern == NULL) /* маска NULL является синонимом звездочки "*" */

return 1;

return _shellStyleMatch(text, pattern) == MATCH_SUCCESS;

}

/* ------------------------------------------------------------------------- */

int usbGetStringAscii(usb_dev_handle *dev, int index, char *buf, int buflen)

{

char buffer[256];

int rval, i;

if((rval = usb_get_string_simple(dev, index, buf, buflen)) >= 0)

return rval;

if((rval = usb_control_msg(dev, USB_ENDPOINT_IN, USB_REQ_GET_DESCRIPTOR, (USB_DT_STRING << 8) + index, 0x0409, buffer, sizeof(buffer), 5000)) < 0)

return rval;

if(buffer[1] != USB_DT_STRING){

*buf = 0;

return 0;

}

if((unsigned char)buffer[0] < rval)

rval = (unsigned char)buffer[0];

rval /= 2;

for(i=1;i<rval;i++){

if(i > buflen) /*если переполнен буфер назначения */

break;

buf[i-1] = buffer[2 * i];

if(buffer[2 * i + 1] != 0)

buf[i-1] = '?';

}

buf[i-1] = 0;

return i-1;

}

/* ------------------------------------------------------------------------- */

int usbOpenDevice(usb_dev_handle **device, int vendorID, char *vendorNamePattern, int productID, char *productNamePattern, char *serialNamePattern, FILE *printMatchingDevicesFp, FILE *warningsFp)

{

struct usb_bus *bus;

struct usb_device *dev;

usb_dev_handle *handle = NULL;

int errorCode = USBOPEN_ERR_NOTFOUND;

usb_find_busses();

usb_find_devices();

for(bus = usb_get_busses(); bus; bus = bus->next)

{

for(dev = bus->devices; dev; dev = dev->next)

{ /* последовательный опрос всех устройств на всех шинах */

if((vendorID == 0 || dev->descriptor.idVendor == vendorID)

&& (productID == 0 || dev->descriptor.idProduct == productID))

{

char vendor[256], product[256], serial[256];

int len;

handle = usb_open(dev); /* Нам нужно открыть устройство в соответсвии строкам запроса */

if(!handle)

{

errorCode = USBOPEN_ERR_ACCESS;

if(warningsFp != NULL)

fprintf(warningsFp, "Warning: cannot open VID=0x%04x PID=0x%04x: %s\n", dev->descriptor.idVendor, dev->descriptor.idProduct, usb_strerror());

continue;

}

/* теперь проверяем имена на совпадение: */

len = vendor[0] = 0;

if(dev->descriptor.iManufacturer > 0){

len = usbGetStringAscii(handle, dev->descriptor.iManufacturer, vendor, sizeof(vendor));

}

if(len < 0){

errorCode = USBOPEN_ERR_ACCESS;

if(warningsFp != NULL)

fprintf(warningsFp, "Предупреждение: изготовитель не установлен VID=0x%04x PID=0x%04x: %s\n", dev->descriptor.idVendor, dev->descriptor.idProduct, usb_strerror());

}else{

errorCode = USBOPEN_ERR_NOTFOUND;

if(shellStyleMatch(vendor, vendorNamePattern)){

len = product[0] = 0;

if(dev->descriptor.iProduct > 0){

len = usbGetStringAscii(handle, dev->descriptor.iProduct, product, sizeof(product));

}

if(len < 0){

errorCode = USBOPEN_ERR_ACCESS;

if(warningsFp != NULL)

fprintf(warningsFp, " Предупреждение: изготовитель не установлен VID=0x%04x PID=0x%04x: %s\n", dev->descriptor.idVendor, dev->descriptor.idProduct, usb_strerror());

}else{

errorCode = USBOPEN_ERR_NOTFOUND;

if(shellStyleMatch(product, productNamePattern)){

len = serial[0] = 0;

if(dev->descriptor.iSerialNumber > 0){

len = usbGetStringAscii(handle, dev->descriptor.iSerialNumber, serial, sizeof(serial));

}

if(len < 0){

errorCode = USBOPEN_ERR_ACCESS;

if(warningsFp != NULL)

fprintf(warningsFp, " Предупреждение: серийный № не установлен VID=0x%04x PID=0x%04x: %s\n", dev->descriptor.idVendor, dev->descriptor.idProduct, usb_strerror());

}

if(shellStyleMatch(serial, serialNamePattern)){

if(printMatchingDevicesFp != NULL){

if(serial[0] == 0){

fprintf(printMatchingDevicesFp, "VID=0x%04x PID=0x%04x vendor=\"%s\" product=\"%s\"\n", dev->descriptor.idVendor, dev->descriptor.idProduct, vendor, product);

}else{

fprintf(printMatchingDevicesFp, "VID=0x%04x PID=0x%04x vendor=\"%s\" product=\"%s\" serial=\"%s\"\n", dev->descriptor.idVendor, dev->descriptor.idProduct, vendor, product, serial);

}

}else{

break;

}

}

}

}

}

}

usb_close(handle);

handle = NULL;

}

}

if(handle) /*если устройство найдено*/

break;

}

if(handle != NULL){

errorCode = 0;

*device = handle;

}

if(printMatchingDevicesFp != NULL) /* не возвращать ошибку только для листинга */

errorCode = 0;

return errorCode;

}

/* ------------------------------------------------------------------------- */

Приложение Б

Рисунок Б.1 - Схема жизненного цикла системы контроля параметров линейных батарей узлов коммутации

Рисунок Б.2 - График жизненного цикла программного продукта

Таблица Б.1 - Оценка шансов и рисков проектируемого продукта

Показатели

Балы

Опасность

Нейтрально

Шансы

Итог.

бал.

1

2

3

4

5

6

7

8

9

1. Объем рынка

+

8

2. Рост рынка

+

9

3. Финансовый потенциал

+

8

4. Число конкурентов

+

6

5. Поведение конкурентов

+

5

6. Возможность повышения цен

+

4

7. Изменение конъюнктуры рынка

+

9

8. Потенциал сервиса

+

8

9. Осведомленность потребителя

+

8

Таблица Б.2 - Каталог функций ПП.

Наименование (содержание) функции

Объем функций, тыс УМК

Организация ввода/вывода информации в интерактивном режиме

0,775

Монитор ПС ВТ (управление работой компонентов)

1,555

Монитор системы (управление работой комплекса ПС ВТ)

4,55

Управление внешними устройствами и объектами

3,25

ИТОГО

10,13

Таблица Б.3 - Значение коэффициентов удельных весов трудоемкости стадии в общей трудоемкости разработки ПП

Код стадии

Степень новизны

В

ТЗ

0,09

ЭП

0,07

ТП

0,07

РП

0,61

ВН

0,16

Всего

1,0

Таблица Б.4 - Степень охвата реализуемых функций ПС ВТ типовых программ на каждой стадии разработки

Код стадии

Степень охвата реализ. Функций

Кт

ТЗ

0,9

ЭП

0,7

ТП

0,7

РП

0,8

ВН

0,9

Таблица Б.5 - Исходные данные для расчета часа машинного времени

Основные показатели

Усл. обоз

Ед. изм

Значение

Стоимость основного комплекта оборудования

C

грн.

2500

Потребляемая мощность

W

кВт/час

0,4

Коэффициент использования по мощности

Ки

0,7

Цена 1кВт/час энергии

Цэ

Грн.

0,24

Номинальный фонд времени работы ЭВМ

Fном

Час

2004

Потери на ремонт и профилактику

Тпот

%

5

Коэффициент годовых затрат на ремонт

Кр

%

5

Коэффициент сменности

Ксм

1

Норма амортизационных отчислений на оборудование

Ноб

%

60

Норма амортизационных отчислений на здания

Нзд

%

8

Балансовая стоимость 1 кв.м.

Сбал

грн.

180

Общая производственная площадь

S

Кв. М

20

Отчисления на социальные мероприятия

Кн

%

37

Коэффициент накладных расходов

Кнр

%

60

Оклад оператора или инженера

Ок

грн.

2000

Коэффициент материальных затрат

Кмз

%

5

Приложение В

Расчет годовых эксплуатационных затрат

Материальные затраты (Зм), определяются по формуле:

(ден.ед.) (В.1)

(грн.)

Затраты на электроэнергию (Зэ), определяются по формуле:

, (ден.ед.) (В.2)

(грн.)

Расходы на оплату труда (ФОТ), определяются по формуле:

, (ден.ед.) (В.3)

, (грн.)

Отчисления от заработной платы (Отч), определяются по формуле:

, (ден.ед.) (В.4)

, (грн.)

Затраты на ремонт (Зр):

, (ден.ед.) (В.5)

, (грн.)

Накладные расходы (Зн),определяются по формуле:

, (ден.ед.) (В.6)

, (грн.)

Амортизационные отчисления

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

, (ден.ед.) (В.7)

(грн.)

б) на оборудование (),определяются по формуле:

, (ден.ед.) (В.8)

(грн.)

Тобщ = Тр * Ксл; (чел-дни) (В.9)

В свою очередь коэффициент сложности ПС ВТ (Ксл) рассчитывается следующим образом:

, (В.10)

где Кi - коэффициент, учитывающий уровень повышения сложности по дополнительным характеристикам ПС ВТ. В данном случае Ki =0,08 (функционирование ПС ВТ в расширенной операционной среде);

N - количество дополнительных характеристик ПС ВТ.

Отсюда вычисляем коэффициент сложности Ксл = 1+0,08 =1,08. Группа сложности - 3. Тогда общая трудоемкость составляет:

Toбщ =44,5*1,08= 48,06 [чел-дней].

Трудоемкость каждой стадии разработки ПС ВТ (Тi) определяют по формулам :

Т1 = Lтз * Кн * Тобщ - трудоемкость стадии ТЗ; (В.11)

Т2 = Lэп * Кн * Тобщ - трудоемкость стадии ЭП; (В.12)


Подобные документы

  • Принцип действия, функциональная и структурная схемы системы следящего привода. Исследование и моделирование линейной автоматической системы. Анализ устойчивости с помощью критерия Гурвица. Моделирование в Matlab, оптимизация параметров регулятора.

    лабораторная работа [683,5 K], добавлен 30.11.2011

  • Автоматизация технологического процесса системы телоснабжения. Анализ методов и средств контроля, регулирования и сигнализации технологических параметров. Выбор и обоснование технических средств, микропроцессорного контролера. Оценка устойчивости системы.

    дипломная работа [1,3 M], добавлен 31.12.2015

  • Понятие математической модели линейной дискретной системы (ЛДС) как соотношение вход/выход в виде уравнения или системы уравнений с целью вычисления реакции на сигналы. Моделирование работы ЛДС в программной среде MATLAB. Порядок выполнения работы.

    контрольная работа [221,6 K], добавлен 29.09.2011

  • Обоснование выбора программируемого логического контроллера и разработка автоматизированной системы контроля процесса пайки топливных коллекторов с помощью логического процессора фирмы "ОВЕН". Программное обеспечение датчиковой аппаратуры системы.

    дипломная работа [3,5 M], добавлен 02.06.2014

  • Основные принципы построения системы диспетчерского контроля и управления магистральными нефтепроводами. Система линейной телемеханики контроллер "ЭЛСИ-Т". Выбор и обоснование первичных преобразователей. Датчик прохождения очистного устройства ДПС-5В.

    курсовая работа [285,0 K], добавлен 03.03.2015

  • Физические основы электрокардиографии. Виды помех и их устранение. Погрешности измерения амплитудно-временных параметров ЭКГ. Разработка имитатора сигналов: узел контроля напряжения батареи, расчет блока питания. Проведение поверки электрокардиографа.

    магистерская работа [1,1 M], добавлен 05.02.2012

  • Установление мест, подлежащих блокированию и контролю доступа. Определение требуемого класса системы контроля доступа и системы видеонаблюдения. Разработка структуры сетей системы, подбор необходимого оборудования. Расчет затрат для реализации проекта.

    дипломная работа [1,8 M], добавлен 08.06.2013

  • Анализ существующих систем контроля и управления доступом (СКУД). Разработка структурной схемы и описание работы устройства. Выбор и обоснование эмулятора для отладки программы работы СКУД. Отладка программы системы управления охранной сигнализацией.

    курсовая работа [2,1 M], добавлен 23.03.2015

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

    курсовая работа [197,2 K], добавлен 25.02.2009

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

    курсовая работа [924,7 K], добавлен 04.10.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.