Дипломный проект - Программно-аппаратный терминал с CAN-шиной
скачать (3931.1 kb.)
Доступные файлы (45):
avr.c | |||
main.c | |||
Programmator.hex | |||
spi_init.c | |||
usart_init.c | |||
1 системотехническое проектирование.doc | 199kb. | 22.06.2011 21:36 | ![]() |
Programmator.hex | |||
Project1.bpr | |||
Project1.~bpr | |||
Project1.cpp | |||
Project1.~cpp | |||
Project1.obj | |||
Project1.res | |||
TrComPort_BCB.lib | |||
TrComPort.dll | |||
TrComPort.h | |||
Unit1.cpp | |||
Unit1.ddp | |||
Unit1.dfm | |||
Unit1.h | |||
Unit1.obj | |||
2 структурное проектирование.doc | 170kb. | 22.06.2011 21:41 | ![]() |
3 схемотехническое проектирование.doc | 1434kb. | 22.06.2011 21:53 | ![]() |
4 конструктоское проектирование.doc | 75kb. | 23.06.2011 00:03 | ![]() |
5 разработка ПО микроконтроллера.doc | 93kb. | 22.06.2011 22:05 | ![]() |
6 экономика1.docx | 98kb. | 22.06.2011 23:10 | ![]() |
7.doc | 90kb. | 22.06.2011 23:58 | ![]() |
8.doc | 99kb. | 23.06.2011 00:02 | ![]() |
(A1)ПЕЧАТНАЯ ПЛАТА.vsd | |||
(A1)ПЛАКАТ.vsd | |||
(A1)ПРИНЦИПИАЛЬНАЯ СХЕМА1.vsd | |||
(A1)СТРУКТУРНАЯ СХЕМА.vsd | |||
(A1)СХЕМА ПРОГРАММЫ.vsd | |||
(A1)СХЕМА ПРОГРАММЫ(С++).vsd | |||
ВВЕДЕНИЕ.doc | 42kb. | 17.06.2011 10:42 | ![]() |
Задание - шаблон.doc | 37kb. | 23.06.2011 00:16 | ![]() |
Заключение.doc | 32kb. | 23.06.2011 00:02 | ![]() |
ПРОЧИТАТЬ!!!!!!!!!!.txt | 1kb. | 03.07.2011 23:28 | ![]() |
Содерж.doc | 65kb. | 21.06.2011 20:48 | ![]() |
список исп. источников.doc | 34kb. | 23.06.2011 01:29 | ![]() |
текст программы2.doc | 35kb. | 20.06.2011 22:09 | ![]() |
текст программы.doc | 36kb. | 15.06.2011 11:11 | ![]() |
текст программы титульник2.doc | 100kb. | 20.06.2011 22:05 | ![]() |
текст программы титульник.doc | 100kb. | 20.06.2011 22:05 | ![]() |
Титульный лист и аннотация.docx | 31kb. | 17.06.2011 10:27 | ![]() |
5 разработка ПО микроконтроллера.doc

5 Разработка программного обеспечения
5.1 Разработка программного обеспечения для микроконтроллера
Целью является разработка программного обеспечения (ПО) для микроконтроллера Atmega128 программно-аппаратного терминала. Для разработки программного обеспечения микроконтроллера используется язык программирования С, среда AVRStudio 4, компилятор WinAVR.
Во время разработки ПО будут использоваться протоколы передачи данных SPI, CAN 2.0, RS232.
CAN - последовательный протокол связи, который эффективно поддерживает распределенное управление в реальном масштабе времени с высоким уровнем безопасности.
Область применения - от высокоскоростных сетей до дешевых мультиплексных шин. В автоматике, устройствах управления, датчиках используется CAN со скоростью до 1 Mбит/с.
Задача данной спецификации состоит в том, чтобы достигнуть совместимости между любыми двумя реализациями CAN - систем. Однако, совместимость имеет различные аспекты относительно, например электрических элементов и интерпретации данных, которые будут передаваться.
Для достижения прозрачности проекта и гибкости реализации, CAN был подразделен на различные уровни согласно модели ISO/OSI:
уровень передачи данных (Data Link Layer);
подуровень логического управления линией (LLC);
подуровень управления доступом к среде передачи (MAC);
физический уровень (Physical Layer).
В предыдущих версиях спецификации CAN функции LLC и MAC подуровней, уровня передачи данных, были описаны в уровнях, обозначенных как объектный уровень и канальный уровень.
Область LLC подуровня:
обеспечение сервиса для передачи данных и для удалённого запроса данных;
решение, какие сообщения, полученные LLC подуровнем, должны быть фактически приняты;
обеспечение средствами для управления восстановлением и уведомления о перегрузке.
Область MAC подуровня главным образом – протокол передачи, то есть: арбитраж, проверка на ошибки, сигнализация и типизация ошибок. Внутри MAC подуровня решается, является ли шина свободной для начала новой передачи или возможен только приём данных.
В MAC подуровень также включены некоторые элементы битовой синхронизации. Всё это находится внутри MAC подуровня и не имеет никакой возможности к модификации.
Область физического уровня - фактическая передача битов между различными узлами с соблюдением всех электрических правил.
Внутри одной сети, физический уровень одинаков для всех узлов.
Однако существует свобода в выборе физического уровня. Цель этой спецификации - определить MAC подуровень и небольшую часть LLC подуровня уровня передачи данных и описать действие протокола CAN на окружающие уровни
Основные характеристики:
приоритетность сообщений;
гарантированное время отклика;
гибкость конфигурации;
групповой прием с синхронизацией времени;
система непротиворечивости данных;
обнаружение ошибок и их сигнализация;
автоматическая ретрансляция испорченных сообщений, как только шина снова станет свободной;
различие между нерегулярными ошибками и постоянными отказами узлов и автономное выключения дефектных узлов.
Для достижения безопасности передачи данных, в каждом узле CAN имеются мощные средства самоконтроля, обнаружения и сообщения об ошибках.
Имеются два формата, которые отличаются по длине поля идентификатора:
кадры с 11-разрядным идентификатором - называются стандартными кадрами;
кадры, содержащие 29 разрядные идентификаторы, называются расширенными кадрами.
Кадр данных передает данные от передатчика приемнику. Кадр удаленного запроса данных передается узлом, чтобы запросить передачу кадра данных с тем же самым идентификатором.
Кадр ошибки передается любым узлом при обнаружении ошибки на шине.
Кадр перегрузки используется, чтобы обеспечить дополнительную задержку между предшествующим и последующим кадром данных или кадром удаленного запроса данных.
Кадры данных и кадры удаленного запроса данных могут использоваться и в стандартном и в расширенном формате; они отделяются от предшествующих кадров межкадровым пространством.
В таблице 5.1 представлена структура информационного пакета.
Таблица 5.1 – Формат информационного пакета
Поле данных | Название | Значение |
1 | Начало кадра | Это поле состоит из одиночного нулевого бита |
2 | Поле арбитража | В стандартном формате поле арбитража, состоит из 11 разрядного идентификатора и RTR-бита. Биты идентификатора обозначены. В расширенном формате поле арбитража состоит из 29 разрядного идентификатора, SRR-бита, IDE-бита, и RTR-бита |
3 | Поле управления | Поле управления состоит из шести бит: код длины данных (DLC), бит IDE, который передается нулевым уровнем (см. выше), и зарезервированный бит r0. |
4 | Поле данных | Поле данных состоит из данных, которые будут переданы внутри кадра данных. Оно может содержать от 0 до 8 байт, каждый содержит 8 бит, которые передаются, начиная с MSB. |
5 | Поле CRC | Содержит последовательность CRC и CRC - разделитель |
6 | Поле подтверждения | Поле подтверждения имеет длину два бита и содержит: "область подтверждения" и разделитель подтверждения. |
7 | Конец кадра | Каждый кадр данных и кадр удаленного запроса данных ограничен последовательностью флагов, состоящей, из семи единичных бит. |
За реализацию данного протокола будет отвечать CAN-контроллер, который обеспечивает взаимодействие с сетью. Таким образом, протокол CAN реализуется на аппаратном уровне. Данные на CAN-контроллер будут передаваться через SPI интерфейс.
Интерфейс SPI позволяет осуществлять высокоскоростную синхронную передачу данных между микроконтроллером AVR и периферийными устройствами или между несколькими микроконтроллерами AVR. В большинстве случаев этот интерфейс имеет второе назначение — он используется для внутрисхемного программирования (ISP).
Взаимодействие между двумя устройствами SPI всегда осуществляется между устройством в режиме Master (далее по тексту «ведущий») и устройством в режиме Slave (далее по тексту «ведомый»). В отличие от некоторых периферийных устройств, таких как датчики, которые могут выступать только в роли ведомых, интерфейс SPI микроконтроллеров AVR может быть сконфигурирован как для работы в режиме ведущего, так и для работы в режиме ведомого. Режим работы интерфейса SPI микроконтроллера AVR определяется битом master (MSTR) регистра управления интерфейсом SPI (SPCR). Особое внимание следует уделить линии SS, подробнее о которой будет написано далее в разделе «Системы с несколькими ведомыми – функционирование линии SS».
SPI содержит четыре сигнальных линии. Это линия генератора сдвига (SCK), линия «Выход ведущего вход ведомого» (Master Out Slave In или MOSI), линия «Вход ведущего выход ведомого» (Master In Slave Out или MISO) и линия выбора ведомого с низким активным уровнем (SS) [5]. Когда SPI включен, направление передачи данных на выводах SCK, MOSI, MISO и SS изменяется в соответствии с таблицей 5.2.
Таблица 5.2 – Направление выводов в режимах ведущего и ведомого
Вывод | Направление в режиме ведущего | Направление в режиме ведомого |
MOSI | Определяется пользователем | Вход |
MISO | Вход | Определяется пользователем |
SCK | Определяется пользователем | Вход |
__ SS | Определяется пользователем | Вход |
Из таблицы видно, что автоматически инициализируются только входные линии. Выходные линии должны быть явно инициализированы программой. Это сделано с целью избежать повреждения портов.
RS232 - популярный протокол, применяемый для связи компьютеров с модемами и другими периферийными устройствами.
Скорость передачи информации по RS-232 измеряется в Бодах. Эта единица названа в честь Эмиля Бодо (Jean Maurice-Emile Baudot) (1845-1903), французского инженера по телеграфии, изобретателя первого печатающего устройства для телеграфа (телепринтера) , представленного на Международной Телеграфной конференции в 1927. Максимальная скорость согласно стандарту 20000 Бод. Однако современное оборудование может работать значительно быстрее. Не имеет значения, на сколько быстрое (медленное) ваше соединение – максимальное число чтения за секунду можно установить с помощью используемого программного обеспечения.
При передаче по последовательному каналу контроль четности может быть использован для обнаружения ошибок при передаче данных. При использовании контроля четности посылаются сообщения подсчитывающие число единиц в группе бит данных. В зависимости от результата устанавливается бит четности. Приемное устройство также подсчитывает число единиц и затем сверяет бит четности.
Для обеспечения контроля четности компьютер и устройство должны одинаково производить подсчет бита четности. То есть, определиться устанавливать бит при четном (even) или нечетном (odd) числе единиц. При контроле на четность биты данных и бит четности всегда должны содержать четное число единиц. В противоположном случае соответствует для контроля на нечетность.
Проверка на четность - это простейший способ обнаружения ошибок. Он может определить возникновение ошибок в одном бите, но при наличии ошибок в двух битах уже не заметит ошибок. Также такой контроль не отвечает на вопрос какой бит ошибочный. Другой механизм проверки включает в себя Старт и Стоп биты, циклические проверки на избыточность, которые часто применяются в соединениях Modbus.
В программе необходимо обрабатывать данные, поступающие от интерфейса RS232 и интерфейса CAN-bus.
Сначала необходимо проинициализировать микроконтроллер, для чего используются функция void usart_init(void) – инициализация USART. Так же необходима инициализация внутренних регистров микроконтроллера. USART проинициализируем таким образом: скорость передачи 9600 бод, данные передаются по 8 бит, бит паритета отсутствует, 1 стоповый бит.
Для приема/передачи данных через USART будут использоваться функции get_usart() и put_usart(), которые предназначены для посимвольного обмена данными.
После того, как принят информационный пакет из линии RS232, он анализируется на наличие ошибок (функция анализа ErrorAnalys()). Если все в порядке, то после конвертации информационного пакета происходит его передача в линии CAN-bus через SPI (функция передачи spi_transmit()). После этого происходит передача ответного информационного пакета из линии CAN-bus (ответный информационный пакет spi_receive()). После конвертации ответного информационного пакета происходит передача его в линии RS232.
Схема алгоритма работы разрабатываемого программно-аппаратного терминала изображена на чертеже БрГТУ.07817 – 12 90 00.
^
Целью является разработка программного обеспечения (ПО) для ПЭВМ, выполняющего функцию управления программно-аппаратным терминалом. Для разработки программного обеспечения для ПЭВМ используется язык программирования С++, среда разработки С++ Builder 6.
C++Builder – одна из самых мощных систем, позволяющих на самом современном уровне создавать как отдельные прикладные программы Windows, так и разветвленные комплексы, предназначенные для работы в корпоративных сетях и в интернет.
Объектно-ориентированное программирование (сокращенно ООП) – это в наше время совершенно естественный подход к построению сложных (и не очень сложных) программ и систем. Когда вы открываете любую программу Windows, вы видите окно с множеством кнопок, разделов меню, окон редактирования, списков и т.п. Все это объекты. Причем сами по себе они ничего не делают. Они ждут каких-то событий – нажатия пользователем клавиш или кнопок мыши, перемещения курсора и т.д. Когда происходит подобное событие, объект получает сообщение об этом и как-то на него реагирует: выполняет некоторые вычисления, разворачивает список, заносит символ в окно редактирования. Такая программа Windows и есть объектно-ориентированная программа [6].
Приложение, построенное по принципам объектной ориентации – это не последовательность каких-то операторов, не некий жесткий алгоритм. Объектно-ориентрованная программа – это совокупность объектов и способов их взаимодействия. Отдельным (и главным) объектом при таком подходе во многих случаях можно считать пользователя программы. Он же служит и основным, но не единственным, источником событий, управляющих приложением.
В программе необходимо передавать данные через COM-порт и обрабатывать данные, поступающие от интерфейса RS232. Программа представляет собой приложение, с помощью которого пользователь сможет осуществлять управление работой программно-аппаратного терминала. Для этого пользователю будет предложено меню, посредством выбора пунктов которого он сможет выполнять какие-либо операции.
Для организации меню в программе мы воспользовались компонентов MainMenu. Главное меню представлено на рисунке 5.1 и содержит следующие пункты:
пункт “Открыть” – вызов диалогового окна для выбора и подтверждения файла hex, который необходимо открыть (использовали компоненту OpenDialog) ;
пункт “Сохранить” – вызов диалогового окна для указания места, в котором нужно сохранить текущий открытый файл, и его имени (использовали компоненту SaveDialog);
пункт “Редактировать” – делает доступной опцию редактирования открытого файла;
пункт “Передать” – начинает передачу данных, содержащихся в текущем файле;
пункт “Выход” – закрывает приложение.

Рисунок 5.1 – Главное меню
Пункт “Печать” – позволяет настроить опции печати и выполнить печать.
Для реализации окна редактирования используется компонента Memo, которая является окном редактирования многострочного текста. Она снабжена множеством функций, свойственных большинству редакторов.
Для реализации передачи и приема данных через COM-порт использовали библиотеку TrComPort.lib. Функция TrComPortWriteAndRead() осуществляет непосредственно прием и передачу данных. Для побайтового считывания данных из файла будет использована стандартная функция ввода/вывода fscanf();
Схема алгоритма работы разрабатываемого приложения для программно-аппаратного терминала изображена на чертеже БрГТУ.07817.012 – 12 91 00.
Скачать файл (3931.1 kb.)