Разработка принципиальной схемы, выбор управляющего микроконтроллера. Общий алгоритм работы программы. Блок анализа и реализации команд, принятых от персонального компьютера. Описание используемых интерфейсов. Формат данных RS-232C, листинг программы.
Аннотация к работе
Если температуры не равны, то включается двигатель, после отработки которого, температуры сравниваются снова. Если она температура меньше минимальной, включается тэн и начинается опрос датчика давления и сравнение полученных им данных с максимально возможным значением. Цикл повторяется до тех пор пока температура и давление в емкости не примут допустимые значения. К микроконтроллеру необходимо подключить 3 датчика температуры, датчик давления, клавиатуру, знакосинтезирующий LCD индикатор, схемы управления тэна, насос откачки вещества,4 клапана для подачи вещества и спуска давления, двигатель, 4 электрода, удаленный компьютер; В результате анализа рынка было выяснено что датчик I2C более дорог по сравнению с датчиком IWARE - 50-70 руб., в качестве датчиков было решено использовать датчики IWARE DS1820 или его модификацию.Схема устройстваint sec,min,hour,nach_hour,nach_min,konec_hour,konec_min;//переменные, в которых храняться значения секунд, минут и часов char kod[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39};//коды цифр 0..9 void timer2(void) interrupt 5//прерывание таймера2 для подсчета времени i ;//по каждому прерыванию (переполнению) переменная i наращивается if (i==16)//как только i станет равным 16, значит прошла 1 секунда (1 машин цыкл=1мкс, т.е. за одно переполнение пройдет 65536мкс(0.065536сек).неоходимо 15ю.25 переполнения для одной секунды } if (sec==60){min ; sec=0;}//если колво сек=60, мин увеличив-ся на 1 if (min==60){hour ; min=0;}//если колво мин=60, часы увеличив-ся на 1 if (hour==24)hour=0;//если колво=24, обнуляем.
Введение
Общие особенности управляющих микроконтроллеров.
Основные требования, которые потребители предъявляют к управляющим блокам приборов можно сформулировать следующим образом: низкая стоимость, высокая надежность, высокая степень миниатюризации, малое энергопотребление, работоспособность в жестких условиях эксплуатации;
достаточная производительность для выполнения всех требуемых функций.
В отличие от универсальных компьютеров к управляющим контроллерам, как правило, не предъявляются высокие требования к производительности и программной совместимости.
Выполнение всех этих довольно противоречивых условий одновременно затруднительно, поэтому развитие и совершенствование техники пошло по пути специализации и в настоящее время количество различных моделей управляющих микроконтроллеров чрезвычайно велико.
Однако можно выделить некоторые черты архитектуры и системы команд, общие для всех современных микроконтроллеров, это: так называемая Гарвардская архитектура - то есть раздельные области памяти для хранения команд (программы) и данных. Они могут иметь разную разрядность, в системе команд для обращения к ним предусмотрены различные команды и т.д. интеграция в одном корпусе микросхемы (на одном кристалле) практически всех блоков, характерных для полнофункционального компьютера - процессора, ПЗУ, ОЗУ, устройств ввода-вывода, тактового генератора, контроллера прерываний и т.д. Поэтому в русскоязычной литератур подобные устройства часто называются однокристальные ЭВМ (ОЭВМ).
Микроконтроллеры обычно классифицируют по разрядности обрабатываемых чисел: четырехразрядные - самые простые и дешевые, восьмиразрядные - наиболее многочисленная группа (оптимальное сочетание цены и возможностей), к этой группе относятся микроконтроллеры серии MCS-51 (Intel) и совместимые с ними, PIC (Microchip), HC68 (Motorola), Z8 (Zilog) и др. шестнадцатиразрядные - MCS-96 (intel) и др. - более высокопроизводительные но более дорогостоящие тридцатидвухразрядные - обычно являющиеся модификациями универсальных микропроцессоров, например 180186 или I386EX.
Техническое задание
В рамках курсовой работы проведена разработка системы управления технологическим процессом. Процесс осуществляет контроль химической реакции. Результаты температуры и давления выводятся на жидкокристаллический дисплей.
Основные узлы, а также их функции: 3 датчика температуры - контроль температуры нагрева воды;
датчик давления - контроль давления;
4 клапана - 3 для подачи реагентов, один для регулирования давления в емкости;
электродвигатель - вращение емкости для перемешивания реагентов;
насос для откачки результирующего вещества из емкости;
нагревательный элемент (тэн) - нагрев вещества в емкости;
блок управления тэном- управление тэном;
блок управления насосом;
блок управления клапанами;
блок управления двигателем;
ЖК индикатор;
восьмиклавишная клавиатура.
4 датчика воды - контроль уровня веществ в емкости.
Управление контроллером ведется через восьмиклавишную клавиатуру: Клавиша выбора «START» - начало работы.
Клавиша «ОТКАЧКА» - для откачки результирующей смеси.
«ДВИГАТЕЛЬ»- включение двигателя после выбора реагентов.
Клавиша для выбора 1-го реагента.
Клавиша для выбора 2-го реагента.
Клавиша для выбора 3-го реагента.
Основные функции: Управление двигателем для перемешивания реагентов.
Индикация температуры и давления.
Управление клапанами (открытие/закрытие).
Включение/выключение насоса для откачки результирующей смеси.
Управление нагревательным элементом.
Также управление может вестись с удаленного компьютера по RS232 интерфейсу.
1. Разработка функциональной схемы
Для правильного последующего проектирования устройства и реализации его в виде принципиальной электрической схемы требуется первоначально провести анализ основных функций и построение функциональной схемы устройства.
Рис. 1
МК- управляющий микроконтроллер
ДД- датчик давления. Приборный цифровой датчик.
БДТ- блок датчиков температуры. Приборные цифровые датчики.
ДВ - датчик воды. Фиксирует уровень заполнения бака водой.
БК- блок клавиатуры. Специализированная микросхема клавиатурного шифратора. 8 клавиш. Клавиатура предназначена для управления устройством.
LCD - знакосинтезирующий LCD индикатор. Выводит как текст так и цифры.
БУТ - блок управления тэном.
БУМ - блок управления мотором откачки вещества.
БУД - блок управления двигателем.
БУК - блок у правления клапанами подачи реагентов.
Предыдущие 4 блока управляются рптосемисторными ключами. Слаботочный на МОС 306 подключенный через токоограничивающий резистор выполняет ключевую функцию для мощного ключа BT 139, выполняет развязку между низковольтными цепями системы и высоковольтными цепями электрической цепи. Обеспечивает ток до 25А.
БСУК - блок связи с удаленным компьютером.
С клавиатуры задаются клапаны, которые поочередно открываются. По мере наполнения быка, контролируется уровень жидкости, при достижении необходимого уровня, закрываются клапаны. После этого включается двигатель на 5 минут. Далее организуется бесконечный цикл, в котором сначала поочередно опрашиваются датчики температуры, затем сравниваются температуры между ними. Если температуры не равны, то включается двигатель, после отработки которого, температуры сравниваются снова. Если температуры равны, то это значение сравнивается с минимально возможной температурой. Если она температура меньше минимальной, включается тэн и начинается опрос датчика давления и сравнение полученных им данных с максимально возможным значением. Если давление превышает норму, открывается клапан 4. Тэн отключается при достижении значения температуры выше минимальной. Цикл повторяется до тех пор пока температура и давление в емкости не примут допустимые значения. На ЖКИ выводится сообщение соответствующее окончанию цикла, с клавиатуры включается насос для откачки вещества.
2. Разработка принципиальной схемы
2.1 Выбор управляющего микроконтроллера
Для решения поставленной задачи прежде всего необходимо выбрать управляющий микроконтроллер. Основные требования для выбора данного микроконтроллера: наличие достаточного количества портов ввода-вывода. К микроконтроллеру необходимо подключить 3 датчика температуры, датчик давления, клавиатуру, знакосинтезирующий LCD индикатор, схемы управления тэна, насос откачки вещества,4 клапана для подачи вещества и спуска давления, двигатель, 4 электрода, удаленный компьютер;
наличие программного пакета для написания и отладки программы микроконтроллера;
достаточная изученность микроконтроллера.
Для реализации МПС были выбраны 3 контроллера: МК AT89S52, AVR Atmega8 и PIC16F628. Для выполнения выбора подробнее рассмотрим каждый из контроллеров.
Как видно из приведенных технических характеристик контроллер имеет высокую производительность достаточную программную память и необходимые АЦП и порты. Имеется среда разработки на С. Недостаток отсутствие функций умножения и деления требуют написания специальных подпрограмм необходимых для перевода получаемых значений в цифровой вид и разделения значащих разрядов на сотни единицы и десятки.
Далее рассмотрим следующую серию МК PIC16F628 она имеет следующие основные особенности: RISC архитектуру и всего 35 простых для изучения инструкции;
Все инструкции исполняются за один такт (400 нс);
Скорость работы: тактовая частота до 10 МГЦ;
Память программ 2K FLASH;
Память данных ОЗУ (байт) 68
15 аппаратных регистров специального назначения четыре источника прерывания: внешний вход RB0/INT переполнение таймера TMR0 прерывание при изменении сигналов на линии порта B (PORTB) по завершению записи данных в ЭСППЗУ (EEPROM)
Данный контроллер к сожалению не имеет встроенного АЦП и не имеет команд деления и умножения в остальном он удовлетворяет нашей задаче.
Последним для рассмотрения был выбран МК 51 серии - AT89C52. Этот контроллер имеет встроенный АЦП и по предварительной оценке по параметрам полностью подходит для выполнения поставленной задачи.
Рис. 2 - Контактная группа выводов AT89C52
Рис. 3 - Функциональная блок-схема
Отличительные особенности: Совместимость с серией MCS-51 SISC архитектура.
8 КБ флэш-памяти с внутрисхемным программированием (ISP) Со стойкостью ПЗУ программ: 1000 циклов записи/стирания
Рабочий диапазон питания 4.0…5.5В
Полностью статическое функционирование: 0 …24 МГЦ
Внутреннее ОЗУ размером 256x 8
32 программируемые линии ввода-вывода
Три 16-разрядных таймера-счетчика
Восемь источников прерываний
Полнодуплексный канал последовательной связи на УАПП
Достоинство данного контроллера не только в большом числе периферии, но и наличии команд умножения и деления, что значительно упрощает программу и позволяет реализовать ее с меньшими временными затратами. Также данная архитектура изучена хорошо в курсе лабораторных работ, что позволяет упростить разработку, так как часть программного кода уже написана и отлажена. Также контроллер имеет невысокую цену 300р. Что важно для практической реализации управляющего устройства.
Учитывая все вышесказанное окончательно было решено использовать контроллер 51 серии как наиболее доступный и подходящий по параметрам.
2.2 Выбор электронных элементов
Выбраны интеллектуальные цифровые датчики температуры, сейчас наиболее распространены 2 типа датчиков. Один с четырех проводным подключением по шине I2C, второй по шине 2-3-х проводной ware(3-х проводная шина когда дополнительно 3-я используется для питания датчика).
В результате анализа рынка было выяснено что датчик I2C более дорог по сравнению с датчиком IWARE - 50 -70 руб., в качестве датчиков было решено использовать датчики IWARE DS1820 или его модификацию. Для более детального понимания рассмотрим архитектуру датчика и его работу более подробно.
DS1820 - калиброванный цифровой термометр. Диапазон измеряемых температур от -55°C до 125°C. Абсолютная погрешность преобразования меньше ±0,5°C в диапазоне контролируемых температур -0°C до 70°C. Результирующее значение температуры считывается, как девятиразрядное слово и с помощью специальной программной обработки позволяет достигнуть разрешающей способности преобразования 0,01°C.
Зависимость выходного кода от температуры приведена в таблице: Температура Выходной код (Binary) Выходной код (Hex)
Ст. байт Мл. байт
125°C 0000 0000 1111 1010 00FAH
25°C 0000 0000 0011 0010 0032h
0.5°C 0000 0000 0000 0001 0001h
0°C 0000 0000 0000 0000 0000h
-0.5°C 1111 1111 1111 1111 FFFFH
-25°C 1111 1111 1100 1110 FFCEH
-55°C 1111 1111 1001 0010 FF92h
Типовое время полного преобразования 750 мс. Энергонезависимая память температурных установок микросхемы обеспечивает запись произвольных значений верхнего и нижнего контрольных порогов. Термометр имеет индивидуальный 64-разрядный регистрационный номер (групповой код 010Н) и обеспечивает возможность работы без внешнего источника энергии, только за счет питания 1-Wire-линии (вариант двухпроводного подключения с ограниченным числом датчиков до 5 и расстоянием до 3-5м). В трехпроводном подключении питание микросхемы через отдельный внешний вывод 4,5 В до 5,5 В. Термометр размещается в транзисторном корпусе PR-35. Линия прерывания int 0 для подключения датчика температуры. Для обеспечения требуемого тока в данной линии установлен резистор сопротивлением 5Ком который необходим на шине IWARE.
Для управления всей системой решено использовать восьмиклавишную клавиатуру, которая реализована с помощью специальной микросхемы - шифратора К155ТВ1, которая определяет, какая из клавиш нажата и передает код клавиши всего по трем проводам, что сокращает число необходимых для использования портов.
Рис. 4 - Условное графическое обозначение ИМС К155ИВ1
Электрические параметры
1 Номинальное напряжение питания 5 В 5 %
2 Выходное напряжение низкого уровня 0,4 В
3 Выходное напряжение высокого уровня 2,4 В
4 Входной ток низкого уровня по входу 10 по входам 1-5,11-13 - 1,6 МА - 3,2 МА
5 Входной ток высокого уровня по входу 10 по входам 1-5,11-13 0,04 МА 0,08 МА
6 Входной пробивной ток 1 МА
7 Ток потребления 60 МА
8 Потребляемая статическая мощность 330 МВТ
9 Среднее время задержки распространения 21 нс
Для вывода информации используется знакосинтезирующий LCD индикатор. Выводит информацию в двух строках. Для управления им используется две дополнительные шины RS - выбор команды, E - стробирующая запись данных в индикатор.
GND- потенциал общего провода ("земли");
E- линия стробирования/синхронизации;
RS- линия выбора регистра;
RW- линия выбора операции;
CS- Chip Select;
DB(0-7)- линия данных Рис 4 - условное гр графическое обозначение ЖКИ
Рис. 5
В качестве датчика давлении был выбран датчик типа DMD 331. Датчик дифференциального давления для универсального применения в промышленности. Устойчив к односторонней перегрузке равной статическому давлению. В зависимости от разности давлений на входах DMD 331 генерируется выходной сигнал пропорциональный разности номинального давления.
Зависимость выходного кода от температуры приведена в таблице:
Рис. 6 - Технические характеристики
Для контроля уровня воды в баке на входе контроллера используются токоограничивающие резисторы стабилитроны на 5В, таким образом даже при попадании какого либо повышенного напряжения стабилитрон выполнит свою защитную функцию.
Для сброса контроллера при зависании используется скрытая клавиша сброса, для этого используется стандартная схема цепочки сброса.
Схема включения кварцевого резонатора и цепи сброса типовая рекомендованная производителем поэтому, считаю она не требует описания.
Схемы управления тэном, двигатель, клапаном и мотором откачки подключаются к портам микроконтроллера и представляют собой слаботочные оптоэлектронные семисторные ключи MOC306 (коммутируемый ток до 1А). Эти ключи управляют далее более мощными семисторами ВТ139 (с током коммутации до 25А или 5КВТ) к которым непосредственно и подключены тэн, двигатель, клапан и мотор откачки.
Связь микроконтроллера с персональным компьютером должна осуществляться по последовательному каналу RS-232. Для этого необходимо использовать микросхему MAX232. Технические характеристики MAX232: скорость (макс.) 0.12 МБОД, ESD защита 2КВ, Tx 2шт, VCCOT 4.5 до 5.5В, Rx 2шт, ICC 10МА, TA от -40 до 85°C, Корпус DIP-16 SOIC-16 SOIC-16-Wide.
Рис. 7 - Контактная группа выводов MAX232
3. Разработка программы управления
3.1 Разработка алгоритма программы
Общий алгоритм работы
Сначала устанавливаются начальные значения таймеров, необходимые режимы таймеров и последовательного порта ввода-вывода.
Затем организуется бесконечный цикл, в котором сначала поочередно опрашиваются датчики температуры, затем сравниваются температуры между ними. Если температуры не равны, то включается двигатель, после отработки которого, температуры сравниваются снова. Если температуры равны, то это значение сравнивается с минимально возможной температурой. Если она температура меньше минимальной, включается тэн и начинается опрос датчика давления и сравнение полученных им данных с максимально возможным значением. Если давление превышает норму, открывается клапан 4. Тэн отключается при достижении значения температуры выше минимальной. Цикл повторяется до тех пор пока температура и давление в емкости не примут допустимые значения.
В программе заданы обработчики прерываний от таймера, от внешнего источника, последовательного порта. Данные подпрограммы выполняются только при возникновении прерывания. Обработчик прерывания от таймера 0 выполняет подсчет времени. Обработчик прерывания от внешнего источника (клавиатуры) выполняет выбор реагентов, первоначальное включение двигателя и включение насоса. Обработчик прерывания от последовательного порта считывает информацию (команды), помещенную в буфер. Более подробное описание обработчиков приведено ниже.
Так же выводиться время начала и окончания процесса.
Структура программы
В программе можно выделить следующие блоки: Обработчик прерывания от последовательного порта. Выполняет считывание команд, переданных от персонального компьютера: общий сброс, открытие клапанов, запуск двигателя и насоса.
Обработчик прерывания от таймера 0. Выполняет подсчет времени (минут).
Обработчик прерывания от внешнего источника INT0. Для реализации клавиатуры, имеющей 6 клавиши: старт, открытие клапана 1,2,3, насос, двигатель.
Блок установки режимов таймеров и необходимых регистров.
Блок инициализации последовательного порта приема-передачи, с помощью которого реализован канал RS-232.
Блок анализа и реализации команд, принятых от персонального компьютера.
Блок считывания температуры и давления с датчиков и приведение этих значений к допустимым.
Блок вывода происходящего процесса: заполнение реагентом, работа насоса или двигателя, регулирование температуры и давления.
Разработанный алгоритм представлен в графическом виде на рисунке 8.
Рис. 8 - Графическое представление алгоритма программы
3.2 Описание программы
Основная часть программы находится в файле main.c. Процедуры работы с датчиками температуры и давления размещены в других файлах. Для корректной работы вначале программы подключены необходимые файлы, стандартные библиотеки, объявляем переменные.
Далее в программе описаны обработчики прерываний таймера, обработчик прерывания внешнего источника, прерывания последовательного порта.
Обработчик прерывания от последовательного порта (void sint(void) interrupt 4). Выполняет считывание байта информации из буфера последовательного порта в переменную rs232, которая затем анализируется в цикле основной процедуры.
Обработчик прерывания от таймера 0 (void timer0(void) interrupt 1). Выполняет подсчет времени. Для данного таймера установлен 1 режим работы, для которого коэффициент пересчета составляет 216 (65536). Необходимо рассчитать количество переполнений, которые произойдут за 1 секунду. Один машинный цикл при частоте тактового генератора 12МГЦ составляет 1мс, то есть переполнение произойдет через 0,065536 секунды (65536/106). Таким образом, одна секунда это 15,2587 переполнений (1/0,065536). В программе необходимо контролировать 4800 переполнений.
Обработчик прерывания от внешнего источника INT0 (void int0(void) interrupt 0). Реализует клавиатуру. По нажатию на кнопку ее код выставляется на порты Р3.4, P3.5 и Р3.6. В программе анализируется этот код: если код равен 111 (1 клавиша), то происходит сброс значений введенных СС клавиатуры, если 110,101,100 (2, 3, 4 клавиша) - открываются клапаны 1,2,3 соответственно. При коде равном 011 (5 клавиша) происходит включение насоса. При коде равном 010 (6 клавиша) происходит включение двигателя. Действие соответствующее клавише отображается на ЖКИ.
Следующие блоки расположены в теле основной процедуры (void main()).
Блок установки режимов таймеров и регистров. В регистр TMOD помещается значение 0XA9 (первый режим для таймера 0, второй режим для таймера 1). Устанавливаются флаги разрешения прерывания от таймеров ЕТ0 и ЕТ1, а также от внешнего источника EX0. Затем производится программный запуск таймера TR0=1.
Блок инициализации последовательного порта приема-передачи (com_initialize ()). Заключается в том, что устанавливается в регистр управления энергопотреблением (PCON) значение 0х80 (1000 00002). То есть устанавливается двойная скорость передачи последовательного канала. Последовательный порт работает под управлением таймера 1. Задаются начальные значения таймера TH1=0XF9 и TL1=0XF9, высчитанные по формуле 256 - (12000 / (192 * 9600)) = 24910 = 0XF916, где 9600 бод - необходимая скорость передачи, 12000Гц - частота тактового генератора, 256 - коэффициент пересчета таймера 1 во 2 режиме. Также необходимо установить флаг ES - разрешение прерывания от последовательного приемопередатчика, и установить в регистр управления работой приемопередатчиков (SCON) значение 0x50 (010100002), 4 бит - разрешение приема, 6,7 - номер режима (первый).
Остальные подпрограммы выполняются в бесконечном цикле.
Блок анализа и реализации команд, принятых от персонального компьютера. Включает проверку 6 типов команд: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06. Команда 0x01 -сброс. Производится сброс предыдущих команд. Команда 0x02, 0x03, 0x04 - открытие клапанов 1,2,3. Команда 0x05 - запуск насоса. Команда 0x06 - запуск двигателя.
Блок считывания температуры с датчика. Все сеансы приема данных с датчика начинаются подачей в линию сигнала обнуления RESET (init_18s20()). В переменную D (на линию DQ датчика) устанавливается значение 0, которое удерживается 500 мкс. Затем в эту же переменную записывается 1 (70 мкс). В ответ датчик должен выдать в линию сигнал наличия (Presence) длительностью 60...240 мкс. В программе после вывода сигнала reset проверяется наличие сигнала наличия. Затем устанавливается задержка в 120 мкс. Затем передаются управляющие команды 0XCC и 0x44 для начала измерения температуры (write_18s20(0xcc);write_18s20(0x44)). Для этого организован цикл от 0 до 7, выставляется в переменную D логический 0, удерживается 15 мкс. Затем выставляется младший бит команды, выполняется задержка длительностью 60 мкс (передача каждого бита длится 60 мкс), производится циклический сдвиг команды вправо. Таким образом, при следующих проходах будут выставлены остальные биты команды. Далее посылаются команды для начала считывания температуры с датчика 0ХСС и 0ХВЕ (write_18s20(0xcc); write_18s20(0xbe)). После этого производится непосредственно чтение данных, выставленных датчиком на шину (read_18s20()). Снова организуется цикл от 0 до 7, в котором на шину выставляется ноль, делается задержка в 15 мкс, затем единица (45 мкс), после которой датчик выставляет младший бит температуры на DQ. То есть необходимо считать значение переменной D и поместить его в бит CY регистра признаков PSW, затем выполнить сдвиг переменной вправо для того, чтобы туда автоматически записался бит, хранимый в CY. Снова сделать задержку 80 мкс. Таким образом, по окончанию цикла в переменной будет значение температуры.
Блок считывания давления с датчика. Дачтчик постоянно передает на линию данные. В переменную D (на линию DQ датчика) устанавливается значение 0, которое удерживается 500 мкс. Затем в эту же переменную записывается 1 (70 мкс). Затем устанавливается задержка в 120 мкс. После этого производится непосредственно чтение данных, выставленных датчиком на шину (read_18s20()). Снова организуется цикл от 0 до 7, в котором на шину выставляется ноль, делается задержка в 15 мкс, затем единица (45 мкс), после которой датчик выставляет младший бит температуры на DQ. То есть необходимо считать значение переменной D и поместить его в бит CY регистра признаков PSW, затем выполнить сдвиг переменной вправо для того, чтобы туда автоматически записался бит, хранимый в CY. Снова сделать задержку 80 мкс. Таким образом, по окончанию цикла в переменной будет значение давления.
В Цикле постоянно ведется сравнение температур и давления с минимальными и максимальными значениями соответственно, и регулирование полученных данных посредством запуска двигателя, тэна и клапана.
Листинги программ с комментариями приведены в приложении 2.
3.3 Описание используемых интерфейсов
Интерфейс 1 Ware
Протокол 1 WIRE определяет структуру сообщений, которая используется и распознается устройствами, подключенными к однопроводному интерфейсу.
Он описывает способ запроса устройством (ведущим) доступа к другим устройствам (ведомым) и способ ответа на запросы. Обмен сообщениями по линии связи возможен при наличии в сети одного ведущего устройства и одного или нескольких ведомых устройств. Сообщения могут быть нескольких видов: - инициализация линии; - команды доступа к ПЗУ; - команды доступа к памяти; - команды чтения данных. Обмен сообщениями по 1 WIRE начинается с инициализирующей последовательности, состоящей из импульса сброса, передаваемой ведущим и ответным импульсом присутствия. Появление импульса присутствия является признаком наличия в линии одного или нескольких ведомых устройств. После получения импульса присутствия ведущий может отправить одну из следующих команд доступа к ПЗУ: - Команда чтения ПЗУ [33h]. Эта команда позволяет прочитать идентификатор устройства, 48 битный серийный номер и контрольную сумму. Эта команда может быть использована только при наличии одного ведомого на линии во избежание коллизий при одновременном ответе нескольких устройств. - Команда совпадения ПЗУ [55h]. Эта команда, за которой следует 64 битный уникальный код устройства, позволяет ведущему получить доступ к конкретному устройству при наличии нескольких устройств на линии. - Команда пропуска ПЗУ [CCH]. Команда применима только в том случае, если на линии присутствует только одно устройство и обеспечивает доступ к нему без передачи уникального серийного номера. - Команда поиска ПЗУ [F0h]. Эта команда используется для определения серийных номеров всех устройств 1 WIRE После команды выбора ПЗУ в линию связи может быть передана одна из следующих команд транспортного уровня: - Команда чтения регистра статуса [20h]. Установленный в единицу 5 бит ответного сообщения указывает на готовность нового результата давления, еще не прочитанного ведущим. Бит 5 сбрасывается в 0 при чтении результата. - Чтение значения давления [03h]. Ответное сообщение преобразователей содержит три информационных байта и CRC. Первый байт содержит старшую часть давления в двоично-десятичном виде; второй - младшую часть; третий байт имеет следующую структуру: D7 - знак числа (0 - положительное, 1 - отрицательное); D6…D4 - положение десятичной точки в числе, представленном 1 и 2 информационными байтами; D3 - резерв; D2…D0 - размерность полученной величины (0 - КПА, 1 - МПА, 2 - КГС/см2, 3 - % от верхнего предела измерений).
Вычисление контрольной суммы: Прием байта начинается с младшего бита. Вначале идет байт кода семейства. За кодом семейства идет 6 байт серийного номера, начиная с младшего. Затем идет байт контрольной суммы (CRC). В вычислении байта контрольной суммы принимают участие первые 7 байт, или 56 передаваемых бит. Для вычисления используется следующий полином: CRC = X8 X5 X4 1
После вычисления контрольной суммы мастер должен сравнить получившееся значение с переданной CRC. Если эти значения совпадают, значит прием данных прошел без ошибок. Можно также вычислить контрольную сумму для всех 64 принятых бит, тогда результат должен быть равен нулю. Блок-схема алгоритма вычисления контрольной суммы показана на рис. 9. Алгоритм использует операции сдвига и «исключающего или». Квадратиками показаны биты переменной, которая используется для вычисления CRC. Перед вычислением ее необходимо обнулить, а затем на вход алгоритма нужно последовательно подать 56 принятых бит в том порядке, в котором они были приняты. В результате переменная будет содержать значение CRC.
Интерфейс RS 232
Интерфейс RS-232-C соединяет два устройства. Линия передачи первого устройства соединяется с линией приема второго и наоборот (полный дуплекс) Для управления соединенными устройствами используется программное подтверждение (введение в поток передаваемых данных соответствующих управляющих символов). Возможна организация аппаратного подтверждения путем организации дополнительных RS-232 линий для обеспечения функций определения статуса и управления.
Порядок обмена по интерфейсу RS-232C
Наименование Направление Описание Контакт (25-контактный разъем) Контакт (9-контактный разъем)
DCD IN Carrie Detect (Определение несущей) 8 1
RXD IN Receive Data (Принимаемые данные) 3 2
TXD OUT Transmit Data (Передаваемые данные) 2 3
DTR OUT Data Terminal Ready (Готовность терминала) 20 4
GND - System Ground (Корпус системы) 7 5
DSR IN Data Set Ready (Готовность данных) 6 6
RTS OUT Request to Send (Запрос на отправку) 4 7
CTS IN Clear to Send (Готовность приема) 5 8
RI IN Ring Indicator (Индикатор) 22 9
Интерфейс RS-232C предназначен для подключения к компьютеру стандартных внешних устройств (принтера, сканера, модема, мыши и др.), а также для связи компьютеров между собой. Основными преимуществами использования RS-232C являются возможность передачи на значительно большие расстояния и гораздо более простой соединительный кабель. В то же время работать с ним несколько сложнее. Данные в RS-232C передаются в последовательном коде побайтно. Каждый байт обрамляется стартовым и стоповыми битами. Данные могут передаваться как в одну, так и в другую сторону (дуплексный режим).
Компьютер имеет 25-контактный (DB25P) или 9-контактный (DB9P) разъем для подключения RS-232C. Назначение контактов разъема приведено в таблице.
Назначение сигналов следующее. FG - защитное заземление (экран). -TXD - данные, передаваемые компьютером в последовательном коде (логика отрицательная). -RXD - данные, принимаемые компьютером в последовательном коде (логика отрицательная). RTS - сигнал запроса передачи. Активен во все время передачи. CTS - сигнал сброса (очистки) для передачи. Активен во все время передачи. Говорит о готовности приемника. DSR - готовность данных. Используется для задания режима модема. SG - сигнальное заземление, нулевой провод. DCD - обнаружение несущей данных (детектирование принимаемого сигнала). DTR - готовность выходных данных. RI - индикатор вызова. Говорит о приеме модемом сигнала вызова по телефонной сети.