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: <D><command><data>
switch( input_buf[1] ) { // select from type of packet byte
case ‘1’:// set time <D><1><xxxx><CR>
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 <D><2><xx><CR>
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: <start><time><temperature><setpt><compressor><fan><CR>
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 <CR> ends the packet
io_out(TXD, “\r”, 1); // <CR>
}
Министерство общего и специального образования РФ
Московский Энергетический Институт
(Технический Университет)
Филиал в городе Смоленске
Кафедра вычислительной техники
Техническое задание
к курсовой работе по дисциплине
"Сети ЭВМ и средства коммуникации"
на тему
“Сеть на основе нейрочипа”
гр. ВМ1-97студент: Вальков К.Г.преподаватели: Аверченков О.Е. |
г. Смоленск 2000 г.
1. Область применения.
Данное устройство и программное обеспечение может и использоваться на аэродромах большой площади с разветвленной сетью датчиков для определения скорости ветра в различных направлениях и областях взлетной полосы. И дальнейшей передачи на центральную ЭВМ.
2. Цель и назначение
Освоить принципы построения сетей с использованием нейрочипов. Изучить структуру и программный язык NEURONC. Определить применима ли данная сеть для различных аэродромов (малой, средней и большой протяженности). Разработать электрическую схему устройства коммуникации датчик - центральная ЭВМ с внутренним устройством обработки.
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
3.4.1. Человеко-машинный интерфейс ______________________________30
3.4.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
Список литературы._________________________________________________36
Приложения._______________________________________________________37
1. Документированный текст программы.______________________________38
2.Техническое задание . ____________________________________________ 43
3. Схема принципиальная -электрическая._____________________________П1
Оглавление.________________________________________________________46