Рефераты. Сеть на основе нейрочипа

char input_buf2[max_char_from_PC]; // Input from PC (2nd time)

char * buf_ptr; // указатель в буфере

boolean packet_found = FALSE; // пакет не найден.

boolean compress_state = FALSE; // датчик не исправен

int last_num_chars; // количество принятых символов

int speed;

char out_char[1];

struct bcd digits; // holds BCD data to be sent to PC

// digits.d1 most significant nibble in ms byte

// digits.d2 least significant nibble in ms byte

// digits.d3 most significant nibble

// digits.d4 least significant nibble

// digits.d5 most significant nibble in ls byte

// digits.d6 least significant nibble in ls byte

struct { // data from bc

unsigned int speed;

unsigned int number;

} bc_data;

struct speed_time bc_number;

/************************************ Timers

******************************************/

mtimer repeating check_CTS;

mtimer repeating get_data_from_bc; // every 100 ms poll bc

// then send to PC

/*********************************** Functions

****************************************/

boolean append_packet( )

description: assert CTS, append data to input_buf[ ] if any

and return append_packet = TRUE if 1st char. = ‘D’

and last char. is a CR.

{

boolean packet;

int i;

int num_chars1;

int num_chars2;

packet = FALSE;

num_chars1 = 0;

num_chars2 = 0;

io_out( CTS, 0 ); // enable cts

num_chars1 = io_in( RXD, input_buf1, max_char_from_PC );

io_out( CTS, 1 ); // disable cts

when (io_puls_up io_5 > porog )

{

num_chars2 = io_in( RXD, input_buf2, max_char_from_PC );

// append data over to where final packet goes

if ( num_chars1 != 0 )

{ // if data append it to input_buf

for ( i = last_num_chars; i < last_num_chars + num_chars1; i++ )

{

input_buf[i] = input_buf1[ i - last_num_chars ]; // append

}

last_num_chars = last_num_chars + num_chars1;

}

if ( num_chars2 != 0 )

{ // if data append it to input_buf

for ( i = last_num_chars; i < last_num_chars + num_chars2; i++ )

{

input_buf[i] = input_buf2[ i - last_num_chars ]; // append

}

last_num_chars = last_num_chars + num_chars2;

}

if ( last_num_chars > 0 ) { // something there

if ( input_buf[0] != ‘D’ )

{ // A packet is started and packet is invalid

last_num_chars = 0; // reset count of total characters read

packet = FALSE;

}

else if ( input_buf[ last_num_chars - 1 ] == ‘/r’ ) {

// 1st char. a ‘D’ and last char. a carriage return

packet = TRUE;

}

} // something there

return( packet );

}

// This function converts a hex character to 2 ASCII characters

// and sends the characters to out the TXC port to the PC

//

void putch_hex(unsigned int hex_char)

{

out_char[0] = ( hex_char >> 4 ) & 0x0f; // keep lower nibble

if( out_char > 9 )

out_char[0] += 0x37;

else

out_char[0] += 0x30;

io_out( TXD, out_char, 1 ); // output 1 char. out the 232 port to the PC

out_char[0] = hex_char & 0x0f;

if(out_char > 9)

out_char[0] += 0x37;

else

out_char[0] += 0x30;

io_out( TXD, out_char, 1 ); // output 1 char. out the 232 port to the PC

}

//

// This function converts two ascii characters to a decimal digit

//

unsigned char to_dec(unsigned char msb,unsigned char lsb)

{

return( (msb - 48) * 10 + (lsb - 48) );

}

/************************************* Reset

*****************************************

when (reset) {

bc_data.hours = 0;

bc_data.minutes = 0;

bc_data.speed = 0;

bc_data.number = 0;

check_CTS = timer1; // repeating timer when to assert CTS

// to check for PC data

get_data_from_bc = 100; // every 100 ms poll bc and then send to PC

when (io_puls_up io_5 >50 )

{

when ( timer_expires(check_CTS) { // go get next character(s)

packet_found = append_packet( ); // append more data if any

// to input_buf[].

// also returns true if

// when finds what looks like a good packet.

check_CTS = timer1;

}

when ( packet_found ) { // process packet

// packet format:

switch( input_buf[1] ) { // select from type of packet byte

case ‘1’:// set time

if ( last_num_chars == 7 ) {

NV_timesetpt_out.temp = 255; // code for do not use

// convert ASCII HHMM in input_buf[2-5] to unsigned int.

bc_data.hours = NV_timesetpt_out.hours =

to_dec(input_buf[2], input_buf[3]);

bc_data.minutes = NV_timesetpt_out.minutes =

to_dec(input_buf[4], input_buf[5]);

}

break;

case ‘2’: // set number

if ( last_num_chars == 5 ) {

// convert ASCII set point in input_buf[2-3] to unsigned int.

bc_data.number = NV_timesetpt_out.speed =

to_dec(input_buf[2], input_buf[3]);

NV_timesetpt_out.hours = 255; // code for do not use

NV_timesetpt_out.minutes = 255; // code for do not use

}

break;

default: // bad packet

break;

}

packet_found = FALSE; // finished last packet

last_num_chars = 0; // reset # of bytes collected in packet

for ( temp = 0; temp < max_packet_size; temp++ ) { // not needed but helps

in d

input_buf[temp] = 0;

}

}

when ( nv_update_fails ) {

}

when ( nv_update_occurs(NV_time_in) ) { // BC to PC time (HHMM)

bc_data.hours = NV_time_in.hours; // HH time

bc_data.minutes = NV_time_in.minutes; // MM time

}

when ( nv_update_occurs(pctobc_temp_in) ) { // BC to PC speed

bc_data.speed = pctobc_temp_in.temp; // BC speed

}

when ( nv_update_occurs(pctobc_setpt_in) ) { // BC to PC number

bc_data.setpoint = pctobc_setpt_in.temp; // BC number

}

when ( nv_update_occurs(NVcomp_state_in) ) {

if (NVcomp_state_in == TRUE) {

compress_state = TRUE;

}

else {

compress_state = FALSE;

}

}

when ( nv_update_occurs(NVfan_state_in) ) {

if (NVfan_state_in == TRUE;

fan_state = TRUE;

}

else {

fan_state = FALSE;

}

}

when ( nv_update_fails(NVcomp_state_in) ) { // datchik not responding

compress_state = FALSE; // assume off

}

when( timer_expires(get_data_from_bc) ) {

// every 100 ms send data to PC and poll fan and compressor for status

poll(NVcomp_state_in); // compressor state

get_data_from_bc = 100; // 100 ms repetitive timer

// packet consists of:

out_char[0] = ‘B’; // Beginning of packet character

io_out(TXD, out_char, 1); // send out 232 port

// output time (hours only)

bin2bcd( (long) bc_data.hours, &digits);

out_char[0] = digits.d5 + 0x30; // high time BCD digit converted to ASCII

io_out( TXD, out_char, 1);

out_char[0] = digits.d6 + 0x30; // low time BCD digit converted to ASCII

io_out( TXD, out_char, 1);

// output time (minutes only)

bin2bcd( (long) bc_data.minutes, &digits);

out_char[0] = digits.d5 + 0x30; // high time BDC digit converted to ASCII

io_out( TXD, out_char, 1);

out_char[0] = digits.d6 + 0x30; // low time BCD digit converted to ASCII

io_out( TXD, out_char, 1);

// output time (speed)

bin2bcd( (long) bc_data.speed, &digits);

out_char[0] = digits.d5 + 0x30; // high speed. BCD digit converted to

ASCII

io_out( TXD, out_char, 1);

out_char[0] = digits.d5 + 0x30; // low speed. BCD digit converted to ASCII

io_out( TXD, out_char, 1);

// output time (number)

bin2bcd( (long) bc_data.number, &digits);

out_char[0] = digits.d5 + 0x30; // high stpt BCD digit converted to ASCII

io_out( TXD, out_char, 1);

out_char[0] = digits.d6 + 0x30; // low stpt BCD digit converted to ASCII

io_out( TXD, out_char, 1);

// output datchik on/off

if ( compress_state == TRUE ) { // datchik is on

// (i.e. LEDs scrolling)

io_out(TXD, “1”, 1); // output to PC datchik is on

}

else {// datchik is off (i.e. LEDs not flashing)

io_out(TXD, “0”, 1); // output to PC datchik is off

}

// a ends the packet

io_out(TXD, “\r”, 1); //

}

Министерство общего и специального образования РФ

Московский Энергетический Институт

(Технический Университет)

Филиал в городе Смоленске

Кафедра вычислительной техники

Техническое задание

к курсовой работе по дисциплине

"Сети ЭВМ и средства коммуникации"

на тему

“Сеть на основе нейрочипа”

| |гр. ВМ1-97 |

| |студент: Вальков К.Г. |

| |преподаватели: Аверченков О.Е. |

г. Смоленск 2000 г.

1. Область применения.

Данное устройство и программное обеспечение может и использоваться на

аэродромах большой площади с разветвленной сетью датчиков для определения

скорости ветра в различных направлениях и областях взлетной полосы. И

дальнейшей передачи на центральную ЭВМ.

2. Цель и назначение

Освоить принципы построения сетей с использованием нейрочипов. Изучить

структуру и программный язык NEURON C. Определить применима ли данная сеть

для различных аэродромов (малой, средней и большой протяженности).

Разработать электрическую схему устройства коммуникации датчик -

центральная ЭВМ с внутренним устройством обработки.

3. Технические требования.

Требования к аппаратуре: для полноценной работы данного устройства

необходимо напряжение питание +(5-12)В. Среда передачи данных : интерфейс

RS232C (25 контактный разъем). Отклонение от приведенных в спецификации

характеристик элементов (2%.

Требования к надежности: устройство должно работать в любом положении

(вертикальное, горизонтальное ), в любых погодных условиях полноценно

выполнять свою задачу и обрабатывать внештатные ситуации, возникающие при

работе, связанные с недостаточной квалификацией оператора.

4.Задание

Разработать устройство и программное обеспечение к нему выполняющему

следующую функцию : обработка информации поступающей с аэродинамических

датчиков (датчики анализа скорости ветра) и передача поступающей информации

по сети в ЭВМ, сеть реализовать на основе нейрочипа

11. Оглавление

Аннотация.__________________________________________________________ 2

1. Введение.__________________________________________________________3

1.1. Причины и последствия объединения компьютеров в сеть.

______________3

1.2. Управление техническими процессами ______________________________4

1.2.1. Классический подход _________________________________________

4

1.2.2. Децентрализованный подход ___________________________________5

1.3. Информационный обмен как основа распределенных систем ___________7

1.3.1. Иерархия систем _____________________________________________7

1.3.2. Семиуровневая модель ISO/OSI

________________________________8

1.4. Топологии _____________________________________________________11

1.5. Инструментарий ________________________________________________15

1.5.1. Основные характеристики микроконтроллеров NEURON Chip _____17

2. Постановка задачи ._______________________________________________ 24

2.1. Обзор литературы и предлагаемых методов решения.________________

24

2.2. Анализ задачи. ________________________________________________ 25

2.3. Описание алгоритма____________________________________________27

3. Разработка программы_____________________________________________28

3.1. Структура программы с описанием._______________________________28

3.2. Структура модулей._____________________________________________29

3.3.Описание интерфейса.___________________________________________30

1. Человеко-машинный интерфейс ______________________________30

2. Обработка ошибок _________________________________________30

4. Результативная часть.______________________________________________31

4.1. Тестирование.___________________________________________________31

4.1.1. Выбор методики тестирования

______________________________31

4.1.2. Описание методики

_______________________________________32

4.1.3. Результаты

______________________________________________32

4.2. Ограничения на программу.______________________________________33

4.3. Инструкция пользователю _______________________________________33

Заключение._______________________________________________________34

Список литературы._________________________________________________36

Приложения._______________________________________________________37

1. Документированный текст программы.______________________________38

2.Техническое задание . ____________________________________________ 43

3. Схема принципиальная -электрическая._____________________________П1

Оглавление.________________________________________________________46

Страницы: 1, 2, 3, 4, 5, 6, 7



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.