6.5 Расчёт затрат на проведение НИОКР

Для расчета сметы затрат по проведению НИОКР необходимо определить количество исполнителей, трудоемкость работ, материальные затраты и др. Согласно сетевому графику для выполнения работы требуется три исполнителя: ведущий конструктор, инженер, техник. Трудоемкость на каждого исполнителя рассчитана на основании данных таблицы 6.3 по формуле:

, (6.14)

где: Nи - количество исполнителей;

tij - ожидаемая продолжительность работы.

В статью «Основная заработная плата» включаются прямая заработная плата, доплаты по поясному коэффициенту, премия. Прямую заработную плату рассчитываем по формуле:

, (6.15)

где: Mi – трудоемкость работ, чел. · дн.;

Si – часовая тарифная ставка, руб./час;

Доплаты по поясному коэффициенту составляют 15% от прямой заработной платы. Премии составляют 20% от суммы прямой заработной платы и доплаты по поясному коэффициенту. Данные по расчету основной заработной платы представлены в таблице 6.4.



Таблица 6.4 – Расчет основной заработной платы

Затраты по статье расхода «Дополнительная заработная плата» на предприятии рассчитаны в размере 14,5% от ОЗП.

Затраты по статье расхода «Отчисления на социальные нужды» рассчитаны в размере 35,9% от суммы основной и дополнительной заработной платы (ФЗП).

Расшифровка затрат по статье «Материалы» представлена в таблице 6.5

Таблица 6.5 – Материалы


Расшифровка затрат по статье «Комплектующие» представлена в таблице 6.6.


Таблица 6.6 – Комплектующие


Затрат на спецоборудование для данных работ нет, так как спецоборудование для данной работы не приобреталось, расходы на командировки отсутствуют. Накладные расходы, включающие затраты на управление и хозяйственное обслуживание, которые не могут быть отнесены прямым счетом на конкретную тему составляют 5% от суммы затрат по предыдущим статьям.

Смета затрат на НИОКР сведена в табл. 6.7.

Таблица 6.7 – Смета затрат на НИОКР


6.6 Расчет текущих затрат на стадии единичного производства

Расчет текущих затрат будем производить для данного выпуска продукции. Планируется выпустить N=5 изделий.

Затраты на основные материалы и комплектующие рассчитаем по данным таблицы 6.5, таблицы 6.6 умножением на программу выпуска продукции N = 5 шт.

Расходы на топливо и энергию на технологические цели рассчитываем из условия, что в час на данном предприятии тратится в среднем 1 кВт электроэнергии, стоимость которой 3,6 руб. Умножив стоимость электроэнергии в час на время, затраченное на сборку и наладку одного изделия (54 мин 30 сек), получим необходимые затраты на блок.

Для реализации программы выпуска изделия на предприятии необходимо организовать одно рабочее место техника – сборщика. Часовая тарифная ставка рабочего составляет 45 руб./час. Сборка одного изделия занимает 54 мин 30 сек. Прямая заработная плата равна произведению ставки рабочего на количество часов, затраченных на производство изделий.

Фонд основной заработной платы определяется как сумма прямой заработной платы, доплаты по поясному коэффициенту, премии. Доплаты по поясному коэффициенту составляют 15% от прямой заработной платы. Премии составляют 20% от суммы прямой заработной платы и доплаты по поясному коэффициенту.

Дополнительная заработная плата производственных рабочих составляет 14,5% от фонда основной заработной платы. Расходы на подготовку производства составляют 5% от фонда основной заработной платы. Износ инструмента и специальные расходы составляют 10% от фонда основной заработной платы. Расходы на содержание и эксплуатацию оборудования составляют 50% от фонда заработной платы. Цеховые расходы приняты исходя из опыта работы предприятия в размере 70% от основной заработной платы производственных рабочих. Общезаводские расходы составляют 65% от фонда основной заработной платы производственных рабочих. Прочие производственные расходы составляют 0,7% от основной заработной платы. Внепроизводственные расходы составляют 0,45% от величины производственной себестоимости.

Текущие затраты на стадии единичного производства сведены в таблицу 6.8.

Исходя из годовой себестоимости программы выпуска, найдем себестоимость одного изделия по формуле:


, (6.6.1)

где: Сполн – полная себестоимость программы выпуска, руб.;

N – объем выпуска, шт.

Получим Сизд = 1439,22 руб.

Таблица 6.8 – Затраты на стадии производства


Единовременных затрат на транспортировку изделий нет, поскольку на предприятии действует самовывоз. В затратах на монтаж, наладку, пуск изделие не нуждается.

 


6.7 Расчет экономического эффекта

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

Доход – это сумма денег, полученная после реализации произведенных товаров или услуг

D = P · Q, (6.7.1)

где D – доход;

P = 30000 руб. – рыночная цена единицы товара;

Q = 5 – количество произведенных и проданных единиц товара.

Затраты на разработку, внедрение и применение проекта

Зсум = Зпр + Звн + Зпп, (6.7.2)

где Зсум – суммарные затраты на проект и производство продукции;

Зпр – затраты на разработку технической документации проекта. Исходя из данных таблицы 6.7, Зпр = 114553,04 руб.

Звн – затраты на внедрение проекта. Это деньги, которые придется потратить на приобретение материальных элементов необходимых для технической реализации проекта.

Звн = Зм + Ззп, (6.7.3)

где Зм – затраты на приобретение материальных элементов (деталей, узлов, комплектующих), которые будут необходимы для создания разработанного объекта или устройства; Исходя из данных таблицы 6.6, Зм = 1224,62 руб.

Ззп – затраты на заработную плату работников которые будут внедрять проект. Данные затраты можно принять как 30…40% от материальных затрат

Ззп = (0,3…0,4) Зм (6.7.4)

Получим: Ззп = 0,35 ·Зм = 0,35 · 1224,62= 428,617 руб.

Зпп – затраты на производство готовой продукции (себестоимость). Исходя из данных таблицы 6.8, Зпп = 7196,12 руб.

Зсум = 114553,04 + 1224,62 + 428,61 + 7196,12 = 123402,4 руб.

Экономический эффект первого года проекта

Э1 = D1 − Зсум = 150000 – 123402,4 = 26597,6 руб.,

где Э1 – доход полученный за первый год реализации проекта.

Экономический эффект от внедрения проекта составит 26597,6 рубля за год.

Ток = Э1 / D1 = 0,215 (6.7.5)

Срок окупаемости проекта – 6 месяцев.

Проведенное планирование работ позволило выполнить поставленную задачу в установленный срок. Экономические расчеты показали эффективность разработки и производства генератора.


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

1.         Рэд Э. Справочное пособие по высокочастотной схемотехнике. – Москва.: Мир. – 1990. – 254 с.: ил.

2.         З.А. Зима, И.А. Колпаков, А.А. Романов, М.Ф. Тюхтин. Системы кабельного телевидения. – Москва: Издательство МГТУ имени Баумана. – 2004. – 600 с.: ил.

3.         М.С. Воробьёв, Л.П. Кудрин, Н.И. Сазонов, А.Б. Толкачёв, А.Б. Хашимов. Приёмные распределительные системы телевидения. – Челябинск: Издатель Татьяна Лурье, 2002. – 240 с.: ил.

4.         Б.И. Крук, В.Н. Попантонопуло, В.П. Шувалов. Телекоммуникационные системы и сети. Современные технологии. – под ред. В.П. Шувалова. – 2003. – 647 с.: ил.

5.         Проектирование радиопередающих устройств СВЧ: Учебное пособие для вузов / Уткин Г.М., Благовещенский М.В., Жуховицкая В.П. и др.; Под реда. Г.М. Уткина. – М.: Сов. Радио. – 1979. – 320 с.: ил

6.         Активные RC‑фильтры на операционных усилителях. Перевод с англ. Г.Н. Алексакова. – М.: «Энергия», 1974. – 64 с., ил.

7.         Зааль Р. Справочник по расчету фильтров: Пер. с нем. – М.: Радио и связь, 1983. – 752 с., ил.

8.         Сетевые методы планирования и управления: Методические указания к курсовому проекту для студентов Приборостроительного факульткта / Составители: В.С. Зинневич, Л.А. Баев, И.П. Мешковой. – Челябинск: Изд. ЮУрГУ, 1998. – 22 с.

9.         Н.З. Шварц. Линейные транзисторные усилители СВЧ. – М.: Сов. Радио. – 1980. – 368 с.: ил.

10.       Организация дипломного проектирования: Методические указания к выполнению выпускных квалификационных работ / Д.В. Астрецов, Т.М. Лысенко. Екатеринбург: ГОУ ВПО УГТУ-УПИ, 2003. 48 с.

11.       Стандарт предприятия. Дипломная научно-исследовательская работа студента. Структура и правила оформления. СТП ЮУрГУ 19–2003 / Составители: Т.И. Парубочая, Н.В. Сырейщикова, С.Д. Ваулин, В.Р. Гофман. – Челябинск: Изд. ЮУрГУ, 2003. – 19 с.

 
Листинг фрагмента программы

void ClrUART0_RecBuf (BYTE ClrBytes)

{

if (ClrBytes > UART0. InPk_Len)

ClrBytes = UART0. InPk_Len;

 // **

ChangeIPL(1);

UART0. InPk_Len -= ClrBytes;

UART0. InPk_Start = (UART0. InPk_Start + ClrBytes) & c_InPk0_lenmsk;

ChangeIPL(0);

UART0. InPk_Processed = 0;

 // **

}

BYTE GetByteFrUART0InB (BYTE Index)

{

return UART0. InPk_Buf[(UART0. InPk_Start + Index) & c_InPk0_lenmsk];

}

BYTE CheckCompCmd_TypeLen (BYTE Type, WORD Len)

{

BYTE i;

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

if (Type == ComCmds[i].CmdType_v && Len == ComCmds[i].CmdLen)

return 1;

 // Иначе возвращается '0'.

return 0;

}

void CopyFromCycBuf (BYTE* To, BYTE* Buf, BYTE Start, BYTE Len, WORD BufLen)

{ // Копирование из циклического буфера произвольной длины в линейный.

Buf += Start;

while (Len–)

{

*To++ = *Buf++;

if (++Start == BufLen)

{

Start = 0;

Buf -= BufLen;

}

}

}

BYTE ComputeCRC (BYTE* Buf, BYTE last_xor, WORD HowMuch)

{

do

last_xor ^= *Buf++;

while(–HowMuch);

return last_xor;

}

BYTE FillCProtoShellAndType (xCProto_CmdShell *pPk, BYTE Type, WORD RestPkLen)

{ // Заполнение обязательных одинаковых для всех пакетов полей и подсчёт КС.

pPk->Header = c_COMM_HEADER;

pPk->SenderID = c_DEVICE_ID;

pPk->RestPk_Len = RestPkLen;

*((BYTE*)&pPk->RestPk_Len + sizeof (pPk->RestPk_Len)) = Type;

return ComputeCRC((BYTE*) pPk+1, 0, sizeof (xCProto_CmdShell)+1–1);

}

#ifndef Tuner_1v1

 // Версия функции для платы CMU_1v0.

void LoadFwdTuner (WORD Freq, WORD Level)

{

BYTE i, j, mask;

xFwdTuner FwdTunerLoadWord;

 // xTunerMeasCmdWord TunerCmdW;

 // xMeasDescr TunerCmdDescr;

FwdTunerLoadWord.byte_s.B[3] = 0;

FwdTunerLoadWord.byte_s.B[2] = 0;

FwdTunerLoadWord.bit_s.OS = 0;

 // FwdTunerLoadWord.bit_s.RSB = 0; //Reference divider = 640.

FwdTunerLoadWord.bit_s.RSB = 1; //Reference divider = 512/1024.

 // FwdTunerLoadWord.bit_s.RSA = 0; //Reference divider = 1024.

FwdTunerLoadWord.bit_s.RSA = 1; //Reference divider = 512/640.

FwdTunerLoadWord.bit_s.T_2_0 = 1; //Normal operation.

FwdTunerLoadWord.bit_s.CP = 0; // 60uA Current of charge pump.

 // FwdTunerLoadWord.bit_s.N_14_0 = 6800;

FwdTunerLoadWord.bit_s.N_14_0 = (Freq<<1); /// ((WORD) (0.0078125*128)); //Reference divider = 512.

 // FwdTunerLoadWord.bit_s.N_14_0 = ((Freq)*5)>>1; //Reference divider = 640.

// FwdTunerLoadWord.bit_s.N_14_0 = ((Freq+4)<<2); //Reference divider = 1024.

FwdTunerLoadWord.bit_s.BS_4_1 = 0;

 // Загрузка синтезатора частоты в модуляторе прямого канала.

FWD_CE = 1;

i = 3;

j = 3;

mask = 0x04;

do

{

do

{

if (FwdTunerLoadWord.byte_s.B[i] & mask)

SIO4_DATA = 1;

else

SIO4_DATA = 0;

mask >>= 1;

SIO4_CLK = 1;

asm («NOP»);

asm («NOP»);

asm («NOP»);

SIO4_CLK = 0;

}

while(–j);

j = 8;

mask = 0x80;

} while (i–);

SIO4_DATA = 0;

FWD_CE = 0;

 // Загрузка ЦАП'а в модуляторе прямого канала.

Level = Level*cnst_FwdTransm_Lev_mult + cnst_FwdTransm_Lev_add;

FwdTunerLoadWord.byte_s.B[0] = (Level) & 0xFF;

FwdTunerLoadWord.byte_s.B[1] = (Level) >> 8; // Уровень на выходе ЦАП'а.

i = 1;

j = 8;

mask = 0x80;

FWD_ADCE = 0;

do

{

do

{

if (FwdTunerLoadWord.byte_s.B[i] & mask)

SIO4_DATA = 1;

else

SIO4_DATA = 0;

mask >>= 1;

SIO4_CLK = 1;

asm («NOP»);

asm («NOP»);

asm («NOP»);

SIO4_CLK = 0;

}

while(–j);

j = 8;

mask = 0x80;

} while (i–);

SIO4_DATA = 0;

FWD_ADCE = 1;

}

#else

 // Версия функции для тюнера Tuner_1v1.

void LoadFwdTuner (WORD Freq, WORD Level)

{ // Загрузка синтезатора I2C‑шного передатчика и ЦАП'а DAC7513.

BYTE i, j, mask;

xFwdTuner FwdTunerLoadWord;

xTunerMeasCmdWord tmpTunerCmdW;

xMeasDescr volatile tmpTunerCmdDescr;

 // Загрузка ЦАП'а в модуляторе прямого канала.

Level = Level*cnst_FwdTransm_Lev_mult + cnst_FwdTransm_Lev_add;

FwdTunerLoadWord.byte_s.B[0] = (Level) & 0xFF;

FwdTunerLoadWord.byte_s.B[1] = (Level) >> 8; // Уровень на выходе ЦАП'а.

i = 1;

j = 8;

mask = 0x80;

FWD_ADCE = 0;

do

{

do

{

if (FwdTunerLoadWord.byte_s.B[i] & mask)

SIO4_DATA = 1;

else

SIO4_DATA = 0;

mask >>= 1;

SIO4_CLK = 1;

asm («NOP»);

asm («NOP»);

asm («NOP»);

SIO4_CLK = 0;

}

while(–j);

j = 8;

mask = 0x80;

} while (i–);

SIO4_DATA = 0;

FWD_ADCE = 1;

 // Подготовка для отдачи команды на загрузку синтезатора передатчика.

tmpTunerCmdW. Cmd = cmdMT_LoadFwdTransmitter;

tmpTunerCmdW. MeasDescr = (xMeasDescr*)&tmpTunerCmdDescr;

tmpTunerCmdDescr. StartFreq = Freq;

tmpTunerCmdDescr. Flags. Busy = 1;

tmpTunerCmdDescr. Flags. Interrupt = 0;

cQueueSend (CommandQueue_of_TunMeas, &tmpTunerCmdW, 0);

while (tmpTunerCmdDescr. Flags. Busy == 1)

vTaskDelay(1);

}

#endif

void MakeAndSendFwdPack (BYTE Cmd, BYTE Param)

{

xStruct_PtrAndLen FwdTrCmd;

BYTE i;

switch(Cmd)

{

union

{ // Структура, которая используется только внутри switch'а.

struct xs_FWD_CMD_00 pack_0_body;

struct xs_FWD_CMD_01 pack_1_body;

struct xs_FWD_CMD_02 pack_2_body;

struct xs_FWD_CMD_03 pack_3_body;

struct xs_FWD_CMD_03 pack_4_body;

} xFwdPacks;

case fwdtr_ConfigOfPSG_Fr:

{ // Команда «Настройка ГПС: частоты».

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

{ // Заполняем тело пакета частотами ГПСа.

WORD f = PsgArray[Param].Freqs[i].Freq;

if (f!= cnst_PSG_null_freq)

{

xFwdPacks.pack_0_body. Freqs[i].MHz = f>>3;

xFwdPacks.pack_0_body. Freqs[i].kHz = f & 0x07;

}

else

break;

}

xFwdPacks.pack_0_body. Cmd = fwdtr_ConfigOfPSG_Fr;

xFwdPacks.pack_0_body.PSG. GenNum = Param;

xFwdPacks.pack_0_body.PSG. Freqs = i;

xFwdPacks.pack_0_body.PSG.nevermind = 0;

i = sizeof (xFwdPacks.pack_0_body) – ((cnst_PSG_Num_Of_Freqs-i)<<1);

FwdTrCmd. Cnt = sizeof(xFwdChPackOblFields) + i + sizeof(WORD);

FwdTrCmd. Ptr = pvPortMalloc (FwdTrCmd. Cnt);

FastByteConstLoad((void*) (FwdTrCmd. Ptr + sizeof(xFwdChPackOblFields)),

(WORD)&xFwdPacks.pack_0_body,

(BYTE) ((DWORD)&xFwdPacks.pack_0_body >> 16),

i);

break;

} // Конец case'а по «Настройка ГПС: частоты».

case fwdtr_ConfigOfPSG_Txt:

{ // Команда «Настройка ГПС: комментарии».

xFwdPacks.pack_1_body. Cmd = fwdtr_ConfigOfPSG_Txt;

xFwdPacks.pack_1_body.PSG. GenNum = Param;

xFwdPacks.pack_1_body.PSG.nevermind = 0;

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

{

BYTE s = PsgArray[Param].TextMsg[i];

if (s!= 0) // Записываем в пакет ненулевые символы.

xFwdPacks.pack_1_body. TxtMsg[i] = s;

else

break; // Встретили нулевой символ.

}

 // Здесь i – кол-во ненулевых символов.

xFwdPacks.pack_1_body. TxtMsg[i] = 0; // Конец строки, как и обещал.

i += 3;

FwdTrCmd. Cnt = sizeof(xFwdChPackOblFields) + i + sizeof(WORD);

FwdTrCmd. Ptr = pvPortMalloc (FwdTrCmd. Cnt);

FastByteConstLoad((void*) (FwdTrCmd. Ptr + sizeof(xFwdChPackOblFields)),

(WORD)&xFwdPacks.pack_1_body,

(BYTE) ((DWORD)&xFwdPacks.pack_1_body >> 16),

i);

break;

} // Конец case'а по «Настройке ГПС: комментарии».

case fwdtr_LevelsOfPSG:

{ // Команда «Уровни сигнала с ГПС».

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

{ // Заполняем тело пакета чатотами ГПСа.

if (PsgArray[Param].Freqs[i].Freq!= cnst_PSG_null_freq)

xFwdPacks.pack_2_body. Levels[i] = PsgArray[Param].Freqs[i].Level;

else

break;

}

xFwdPacks.pack_2_body. Cmd = fwdtr_LevelsOfPSG;

xFwdPacks.pack_2_body.PSG. GenNum = Param;

xFwdPacks.pack_2_body.PSG. Freqs = i;

xFwdPacks.pack_2_body.PSG.nevermind = 0;

i = (i<<1) + 2;

FwdTrCmd. Cnt = sizeof(xFwdChPackOblFields) + i + sizeof(WORD);

FwdTrCmd. Ptr = pvPortMalloc (FwdTrCmd. Cnt);

FastByteConstLoad((void*) (FwdTrCmd. Ptr + sizeof(xFwdChPackOblFields)),

(WORD)&xFwdPacks.pack_2_body,

(BYTE) ((DWORD)&xFwdPacks.pack_2_body >> 16),

i);

break;

} // Конец case'а по «Уровни сигнала с ГПС».

case fwdtr_LevelsOfSpectrum:

{ // Команда «Спектр обратного канала».

xFwdPacks.pack_3_body. Cmd = fwdtr_LevelsOfSpectrum;

xFwdPacks.pack_3_body. StartFr = Param;

xFwdPacks.pack_3_body. StopFr = Param + 1;

i = sizeof (xFwdPacks.pack_3_body);

FwdTrCmd. Cnt = sizeof(xFwdChPackOblFields) + i + sizeof(WORD);

FwdTrCmd. Ptr = pvPortMalloc (FwdTrCmd. Cnt);

FastByteConstLoad((void*) (FwdTrCmd. Ptr + sizeof(xFwdChPackOblFields)),

(WORD)&xFwdPacks.pack_3_body,

(BYTE) ((DWORD)&xFwdPacks.pack_3_body >> 16),

3);

FastByteConstLoad((void*) (FwdTrCmd. Ptr + sizeof(xFwdChPackOblFields) + 3),

(WORD) (&pw_RC_Scan_Buf [Param*_1MHz_subdiv – cnst_RevMinFreq]),

(BYTE) ((DWORD) (&pw_RC_Scan_Buf [Param*_1MHz_subdiv – cnst_RevMinFreq]) >> 16),

i‑3);

break;

} // Конец case'а по «Спектр обратного канала».

case fwdtr_LevelsOfAFC:

{ // Команда «Спектр обратного канала».

xFwdPacks.pack_4_body. Cmd = fwdtr_LevelsOfAFC;

xFwdPacks.pack_4_body. StartFr = Param;

xFwdPacks.pack_4_body. StopFr = Param + 1;

i = sizeof (xFwdPacks.pack_4_body);

FwdTrCmd. Cnt = sizeof(xFwdChPackOblFields) + i + sizeof(WORD);

FwdTrCmd. Ptr = pvPortMalloc (FwdTrCmd. Cnt);

FastByteConstLoad((void*) (FwdTrCmd. Ptr + sizeof(xFwdChPackOblFields)),

(WORD)&xFwdPacks.pack_4_body,

(BYTE) ((DWORD)&xFwdPacks.pack_4_body >> 16),

3);

FastByteConstLoad((void*) (FwdTrCmd. Ptr + sizeof(xFwdChPackOblFields) + 3),

(WORD) (&pw_RC_Scan_Buf [Param*_1MHz_subdiv – cnst_RevMinFreq]),

(BYTE) ((DWORD) (&pw_RC_Scan_Buf [Param*_1MHz_subdiv – cnst_RevMinFreq]) >> 16),

i‑3);

break;

} // Конец case'а по «АЧХ обратного канала».

} // Конец switch'а.

(*(xFwdChPackOblFields*) FwdTrCmd. Ptr).PreSync_00 = 0x00;

(*(xFwdChPackOblFields*) FwdTrCmd. Ptr).PreSync_FF = 0xFF;

(*(xFwdChPackOblFields*) FwdTrCmd. Ptr).Sync_55 = 0x55;

(*(xFwdChPackOblFields*) FwdTrCmd. Ptr).SourceDevAddr = 0x02;

(*(xFwdChPackOblFields*) FwdTrCmd. Ptr).RestPackLen =

FwdTrCmd. Cnt – sizeof(xFwdChPackOblFields);

*(WORD*) (FwdTrCmd. Ptr + sizeof(xFwdChPackOblFields) + i) =

usHdw_crc (0, FwdTrCmd. Ptr + sizeof(xFwdChPackOblFields), i);

/* #ifdef LogDebg

{

xStruct_PtrAndLen TrCmd;

BYTE *CommOutB;

CommOutB = pvPortMalloc(128);

 // Рисуем адрес размещенной области памяти, где лежит пакет.

TrCmd. Cnt = DwrdSymbolize((DWORD) (FwdTrCmd. Ptr), CommOutB);

CommOutB [TrCmd. Cnt++] = ' ';

// Рисуем длину пакета.

TrCmd. Cnt += DwrdSymbolize (FwdTrCmd. Cnt, &CommOutB [TrCmd. Cnt]);

for (i=0; i<FwdTrCmd. Cnt; ++i)

{

CommOutB [TrCmd. Cnt++] = ' ';

 // Рисуем содержимое пакета.

TrCmd. Cnt += DwrdSymbolize (FwdTrCmd. Ptr[i], &CommOutB [TrCmd. Cnt]);

}

TrCmd. Cnt += MyStrLoad (&CommOutB[TrCmd. Cnt], // Абзац.

(BYTE far*) ExtraDispInfoStrings[11]) – 1;

TrCmd. Ptr = CommOutB;

cQueueSend (CommandQueue_of_Uart0Transm, (void*)&TrCmd, 0);

}

#endif*/

cQueueSend (CommandQueue_of_FwdTransm, (void*)&FwdTrCmd, 0);

}

void vRevChProc (portSHORT Param)

{

BYTE a, b, c;

xs_RevChCmd xRCCmd;

xs_RevChVars *pxRCVars;

pxRCVars = 0;

for(;)

{

DWORD Time = ulTaskGetTickCount();

if (pxRCVars == 0 ||

(pxRCVars!= 0 && pxRCVars->b_rcproc_action == rcpac_Thinking &&

usQueueMessagesWaiting (CommandQueue_of_RevChProc)!= 0))

{ // Приём управляющей команды.

cQueueReceive (CommandQueue_of_RevChProc, (void*)&xRCCmd, 0);

Time = ulTaskGetTickCount();

switch (xRCCmd. Cmd)

{

// *** СТАРТ ***.

case rccmd_StartProc:

{ // Запуск процесса обработки ОК.

 // Выделяется память под переменные, обнуляется.

if (pxRCVars == 0 &&

(xRCCmd. Param == tskid_MainMnuT ||

xRCCmd. Param == tskid_Uart0T))

{

pxRCVars = pvPortMalloc (sizeof(xs_RevChVars));

FastNearMemFill (pxRCVars, sizeof (xs_RevChVars), 0);

}

 // Запоминаем название задачи, которая нас запускает.

if (xRCCmd. Param == tskid_MainMnuT)

pxRCVars->xFlags.xOwners. MainMnuExec = 1;

else if (xRCCmd. Param == tskid_Uart0T)

pxRCVars->xFlags.xOwners.U0Proc = 1;

if (xPrgFlags2. RevChProcActive == 1)

 // На самом деле обработчки уже запущен, поэтому без инициализации.

break;

pxRCVars->w_rcproc_scanfreq = pxRCVars->w_rcproc_newfreq = cnst_RevMinFreq;

 // Блок таймеров.

pxRCVars->xLastTimes.dw_LT_PSGs_Check =

Time – cnst_PSG_Time_CheckMinPeriod;

pxRCVars->xLastTimes.dw_LT_RC_Scan =

Time – cnst_PSG_Time_ScanFullRCDiap;

pxRCVars->xLastTimes.dw_LT_FindScanningPSG =

Time;

pxRCVars->xLastTimes.dw_LT_FwdTr_Pack0 =

Time – cnst_FwdTr_Time_Pack0;

pxRCVars->xLastTimes.dw_LT_FwdTr_Pack1 =

Time – cnst_FwdTr_Time_Pack1;

 // Инициализация команды для тюнера.

pxRCVars->xRC_MeasCmd. MeasDescr = &pxRCVars->xRC_MeasDescr;

pxRCVars->xRC_MeasDescr.pwMaxLev_StatVal = &pxRCVars->wMaxLev_StatVal;

{ // Установка аттенюатора.

xMEASURE_OPTIONS xMeasOptions;

ReadSingleDevOption((void*)&xMeasOptions, pos_opAttenuation, sz_opAttenuation);

SetMeasureDescrAtt (&xMeasOptions, &pxRCVars->xRC_MeasDescr);

xPrgFlags2. AttVal = pxRCVars->xRC_MeasDescr. Flags. AttVal;

xPrgFlags2. AutoAtt = pxRCVars->xRC_MeasDescr. Flags. AutoAtt;

}

 // Инициализация структуры ГПС-ов.

{

for (a=0; a<cnst_PSG_Num_Of_Devs; ++a)

{

FastNearMemFill((PsgArray[a].TextMsg), cnst_PSG_TextMsgLen, ' ');

for (b = 0; b < cnst_PSG_Num_Of_Freqs; ++b)

{

PsgArray[a].Freqs[b].Freq = cnst_PSG_null_freq;

PsgArray[a].Freqs[b].Level = 0;

PsgArray[a].Freqs[b].WarningLevel = cnst_PSG_PauseAllFreqDel;

}

PsgArray[a].xPrstInfo. PresetNum = 0xFF;

PsgArray[a].xPrstInfo. UsingPreset = 0;

PsgArray[a].xAttributes. Scanning = 0;

}

}

 // Инициализация пресетов ГПС-ов.

pxRCVars->bNum_of_ActvPSGs += bPSGPresetsHandler (0, 0, psgprst_InitPrsts);

#ifdef LogDbg2

{

xStruct_PtrAndLen TrCmd;

BYTE *CommOutB;

CommOutB = pvPortMalloc(40);

// Пишем 'ActivePSG: x'.

TrCmd. Cnt = MyStrLoad (CommOutB,

(BYTE far*) ExtraDispInfoStrings[28]) – 1;

CommOutB [TrCmd. Cnt++] = '0' + pxRCVars->bNum_of_ActvPSGs;

CommOutB [TrCmd. Cnt++] = '\n';

TrCmd. Ptr = CommOutB;

cQueueSend (CommandQueue_of_Uart0Transm, (void*)&TrCmd, 0);

}

#endif

 // Выделение памяти под буфер спектра ОК.

pw_RC_Scan_Buf =

pvPortMalloc((cnst_RevMaxFreq+1 – cnst_RevMinFreq)*sizeof(WORD));

FastNearMemWordFill((void*) pw_RC_Scan_Buf,

(cnst_RevMaxFreq+1 – cnst_RevMinFreq),

0);

 // !!! Временно, для отладки.

 // Якобы есть у нас генератор, который мы будем измерять.

 // PsgArray[2].Freqs[0].Freq = mac_ConvFreqFromMHz(10);

 // pxRCVars->bNum_of_ActvPSGs = 1;

 // !!! Временно, для отладки.

#ifdef LogDebg

{

xStruct_PtrAndLen TrCmd;

BYTE *CommOutB;

CommOutB = pvPortMalloc(32);

TrCmd. Cnt = DwrdSymbolize (Time, &CommOutB[0]); // Нарисовали текущее время.

TrCmd. Cnt += MyStrLoad (&CommOutB[TrCmd. Cnt], //ClrAllStages.

(BYTE far*) ExtraDispInfoStrings[12]) – 1;

TrCmd. Cnt += MyStrLoad (&CommOutB[TrCmd. Cnt], // Абзац.

(BYTE far*) ExtraDispInfoStrings[11]) – 1;

TrCmd. Ptr = CommOutB;

cQueueSend (CommandQueue_of_Uart0Transm, (void*)&TrCmd, 0);

}

#endif

 // Вот теперь можно сказать, что обработка ОК запущена.

xPrgFlags2. RevChProcActive = 1;

break;

} // Конец case'а по запуску обработчика ОК.

 // *** КОНЕЦ «СТАРТ ОК» ***.

 // *** «ЗАВЕРШЕНИЕ РАБОТЫ ОК» ***.


Информация о работе «Комплекс измерения параметров обратного канала»
Раздел: Коммуникации и связь
Количество знаков с пробелами: 73898
Количество таблиц: 10
Количество изображений: 17

Похожие работы

Скачать
69323
0
0

еоценить значение МП и микроЭВМ при создании автоматизированных средств измерений, предназначенных для управления, исследования, контроля и испытаний сложных объектов. Развитие науки и техники требует постоянного совершенствования средств измерительной техники, роль которой неуклонно возрастает.   Основные понятия и определения   Понятия и определения, используемые в измерительной технике, ...

Скачать
121804
11
7

... питания, блока сопряжения с компьютером, компьютер, индикатор. Блок – схема радиоприемника представлена на рисунке.2.1. Рисунок 2.1 - Структурная схема дистанционного комплекса контроля функционального состояния 1 – приемник; 2 – дешифратора; 3 – детектора; 4 – усилителя; 5 – усилителя вертикального отклонения; 6 – электронно-лучевой трубки; 7 – задающего генератора ...

Скачать
118823
4
24

... м, в течение 10-15 мин. Группа низкоустойчивых (НУ) животных выдерживала эту высоту только в течение 1-1.5 мин. Глава 5. Результаты и обсуждения   5.1 Параметры функционирования митоКАТФ канала у крыс с различной резистентностью, а также у животных, адаптированных к гипоксии В этом разделе работы исследовались такие показатели, как дыхание МХ, скорость АТФ-зависимого К+ транспорта, ...

Скачать
67774
17
7

... используемых транзисторов Для разрабатываемого устройства тарнзисторы выбирались по исходному материалу, рассеиваемой мощности, диапазону рабочих частот, принципу действия. Для PIC контроллерного устройства измерения временных величин сигналов, а именно для его входной части усилителя–формирователя подошли транзисторы КП313А (маломощный полевой транзистор) и КТ368А (высокочастотный маломощный ...

0 комментариев


Наверх