Оптимизирующий 32-разрядный компилятор построен по оригинальной и проверенной адаптивной технологии, обеспечивающей исключительно надежную и быструю оптимизацию как длины выходного исполняемого кода, так и требуемой памяти. Проход предкомпиляции заголовков также значительно ускорен благодаря снижению объема оперативной памяти для хранения таблицы символов и эффективному доступу к ней. Это достигается кэшированием памяти взамен кэширования обменов с дисковыми накопителями, а также за счет использования таблицы модификации заголовков.
Инкрементальный линкер осуществляет быструю и надежную компоновку эффективной выполняемой программы с минимальными потерями времени. Данные объектных файлов сохраняются вместе с информацией отладчика. Автоматически исключается перекомпоновка не изменившихся объектных файлов и не используемых функций. Таким образом, при развитии и усложнении проекта продуктивность разработки сохраняется на высоком уровне.[3]
Разработанное программное обеспечение позволяет
управлять микроконтроллерами через COM
порт, при этом необходимо наличие на компьютере как минимум трех СОМ портов.
Программа испытаний оформляется в виде таблицы, столбцы которой отвечают за
соответствующие параметры. Передача новых параметров в микроконтроллеры
производится через промежуток времени, указанный в столбце «время». Экранная
форма разработанной программы изображена на рисунке 4.1.
Рисунок 4.1 - Экранная форма программного
управления
Во время запуска программа осуществляет сканирование свободных портов и заполнение списков выбора.
Окно программы разбито на четыре секции: временные параметры, программа испытаний, задание параметров и запуск испытаний.
Секция временных параметров содержит:
информацию о текущем времени, значение которого берется из ОС Windows;
информацию о времени начала испытаний, установка значения происходит после нажатия кнопки «Начать испытания»;
информацию о продолжительности испытаний - затраченное время от начала испытаний до текущего момента;
информацию об оставшемся времени до изменения параметров испытаний, указанную в минутах;
информация о времени окончания испытаний, установка значения происходит после нажатия кнопки «Остановить»;
Секция программы испытаний содержит информацию об этапах, оформленную в виде таблицы. Эти данные можно редактировать во время процесса испытаний, однако редактированию доступны только те данные, значения которых еще не отправлены в управляющие микроконтроллеры. При попытке ввода некорректной информации изменения отменяются.
Ввод данных осуществляется в секции задания параметров испытаний. Добавление параметров осуществляется нажатием кнопки «Ввод». Удаление строки происходит по нажатию кнопки «Очистить поле».
Секция запуска испытаний отвечает за настройку
подключения устройств к компьютеру. Для каждого из устройств управления
выбирается свой COM
порт. При попытке задания неверного номера порта, или назначении одного и того
же порта нескольким устройствам выдается сообщение об ошибке. Начать испытания
невозможно, пока порты для работы не назначены. Экранная форма сообщения об
ошибке представлена на рисунке 4.2.
Рисунок 4.2 - Экранная форма сообщения об ошибке
назначения портов
Испытания начинаются по нажатию кнопки «Запуск испытаний».
Алгоритм работы после программы приведен на рисунке 4.3.
Прервать испытания можно кнопкой «Остановить»,
после чего в микроконтроллеры передаются нулевые значения параметров, которые
обеспечивают остановку всех систем, и таблица испытаний очищается.
Рисунок 4.3 - Алгоритм работы программного
управления
При открытии программы запускается таймер,
который срабатывает каждую секунду. Обработчик события срабатывания таймера
выполняет обновление времени и, при разрешенном флаге запуска испытаний, следит
за временем, оставшимся до следующего шага испытаний. Алгоритм процедуры
«Запуска таймера времени» приведен на рисунке 4.4. Каждую секунду таймер
проверяет буфер приема COM-порта,
отвечающего за обмен данными с устройством управления силовой нагрузкой, если
он не пуст, то происходит остановка испытаний. В зависимости от принятой
информации программа выдает сообщения об ошибке. Если в буфере константа «98» -
ошибка линейного перемещения, заданное перемещение не соответствует
выполненному, если «99» - испытываемый образец разрушен.
Рисунок 4.4 - Алгоритм процедуры
«Запуск таймера времени»
Экранные формы сообщений об ошибках приведены на рисунке 4.5.
После нажатия кнопки «Запуск
испытаний», программа пытается открыть выбранные порты. Если это не удается
сделать, то выдается соответствующее сообщение (рисунок 4.2), при успешном
открытии происходит инициализация устройств, формируется посылка константы
«255» через COM-порт, соответствующего
устройства, устанавливается флаг запуска таймера для проверки слова
инициализации. Проверка буфера приема осуществляется через пол секунды, если
буфер пуст или там находится число отличное от «255», то происходит отмена
испытаний, и генерируются сообщения об ошибке (в зависимости от неисправного
устройства). Экранные формы сообщений ошибки инициализации устройств, приведены
на рисунке 4.5.
Рисунок 4.5 - Экранные формы
сообщений ошибки инициализации устройств
Если принятая константа верна флаг начала испытания выставляется в «1», что приводит к выполнению соответствующей части программы в первом таймере. Параметры соответствующие шагу испытаний отправляются в микроконтроллеры, если не произошло остановки. Отправка последующих параметров происходит по истечении времени, указанном в столбце «Время» и происходит переход на следующий шаг испытаний, если он последний - происходит остановка систем.
Рисунок 4.6 - Экранные формы
сообщений об ошибках во время испытаний
Для работы с COM портом были использованы исходные коды библиотеки SerialPort.dll. SerialPort.dll - динамическая библиотека для работы с COM портами на языке С++. Упрощает программирование последовательных портов за счет использования классов. Имеет возможность определять все установленные в системе COM порты. Корректно работает как с реальными так и виртуальными COM портами. В основе библиотеки лежит класс SerialPort. Используя его методы можно выполнять наиболее часто востребованные действия с COM портом: прием - передача данных, управление линиями взаимодействия, определение доступных портов в системе и т.д. Библиотека содержит все необходимые функции работы и распространяется бесплатно.
Листинг программы приведен в
ПРИЛОЖЕНИИ В.
4.2 Программное
обеспечение микроконтроллера, управляющего скоростью
Алгоритмы программного обеспечения микроконтроллера управляющего скоростью вращения АД1 и АД2 идентичны, различие составляют лишь параметры двигателя загруженные в программу, как константы и коэффициенты ПИД регуляторов. Алгоритм работы программного обеспечения в режиме ожидания изображен на рисунке 4.7.
Для достижения высокой эффективности контроля скорости алгоритм векторного управления должен выполняться после каждого интервала ШИМ. Для этого в программе используется синхронизация АЦП с модулем MCPWM, начало преобразования АЦП выставляется сразу же после каждого интервала ШИМ. Алгоритм работы программы в прерывании от UART, INT0 и АЦП показаны на рисунке 4.8, 4.9, 4.10.
В режиме ожидания программа осуществляет
инициализацию микроконтроллера, разрешаются прерывания от асинхронного
приемо-передатчика и от внешнего сигнала по входу INT0.
Рисунок 4.7 - Алгоритм работы
микроконтроллера управляющего скоростью
Значение о требуемой частоте вращения поступают через COM порт, после успешной инициализации устройства выставляется флаг начала испытаний. В подпрограмме обработки прерывания от АЦП происходит измерение трехфазных статорных токов и частоты вращения ротора. Затем трехфазные токи Ia, Ib, Ic преобразуются к неподвижной системе координат связанной со статором Iα, Iβ. (преобразование Кларка). Неподвижная система координат поворачивается на тот же угол вместе с потокосцеплением ротора, используя угол вычисленный в предыдущем исполняемом цикле, находятся токи Id, Iq из Iα, Iβ (преобразование Парка). Id, Iq - составляющие токов преобразованные к вращающейся системе координат. Для установившегося режима эти токи являются константами. Сигналы ошибки перерегулирования формируются используя Id, Iq. Составляющая тока Id управляет магнитным потоком ротора. Iq - вращающим моментом двигателя. Значения ошибки регулирования являются входными сигналами ПИ регуляторов. Выходной величиной контроллеров являются Ud и Uq - вектора напряжений, которые поступают на двигатель. Далее происходит вычисление нового угла поворота. Скорость ротора, электрическая постоянная времени, Id, Iq являются входными величинами к этому преобразованию. Новый вычисленный угол указывает алгоритму, где поместить следующий вектор напряжения, чтобы получить величину скольжения для текущего режима работы. Ud и Uq, выходные величины ПИ регуляторов, преобразуются к неподвижной системе координат статора, используя новый угол. Значения напряжений Uα, Uβ преобразуются обратно к трехфазным значениям Ua, Ub, Uc. Трехфазные значения напряжений используются для вычисления нового рабочего интервала ШИМ, чтобы сгенерировать требуемый вектор напряжения.
Коэффициенты для ПИ регуляторов получены в математической модели в пакете SIMULINK. Программный код для контроллеров получен полуавтоматическим путем из системы компьютерной математики MATLAB, c использованием библиотек пакета SIMULINK.
Рисунок 4.8 - Алгоритм работы
подпрограммы обработки прерывания от UART
Рисунок 4.9 - Алгоритм работы
подпрограммы обработки прерывания от UART
По внешнему сигналу прерывания INT0 происходит установка частоты вращения в 0 и происходит сброс флага испытаний.
Рисунок 4.10 - Алгоритм работы подпрограммы обработки прерывания от АЦП
4.3 Программное
обеспечение микроконтроллера, управляющего нагружением
Для управления системой нагружения, необходимо управлять шаговым двигателем. Алгоритм работы программного обеспечения в режиме ожидания изображен на рисунке 4.11. Алгоритм обработки прерываний изображен на рисунке 4.12.
После инициализации микроконтроллер определяет текущее положение шагового двигателя, и если он не находится в начальном положении, то выполняется его установка.
Информация о необходимом количестве шагов и перемещении поступает через COM порт. Микроконтроллер выполняет заданное перемещение и сравнивает сигнал датчика с полученным параметром, если разница составляет более 2 мм система отправляет код сообщения об ошибке на ПК, и выдает сигнал прерывания на МК1(МК2). После этих действий микроконтроллер возвращает шаговый двигатель в начальное положение.
Микроконтроллер, управляющий системой
нагружения, также выполняет функции слежения за ходом испытания. При разрушении
испытываемого образца происходит изменение крутящего момента АД1. По полученной
методике разработки системы управления стендом, крутящий момент не должен
изменяться на каждом из этапов испытания более чем на 20%. Если во время
испытаний ошибки перемещения не произошло, то включается таймер проверки
крутящего момента. Проверка момента осуществляется после десяти переполнений
таймера, что соответствует 5 секундам.
Рисунок 4.11 - Основной алгоритм
работы микроконтроллера управляющего нагружением
Разработка программного обеспечения производилась в CCS PCWHD v4.088 (PIC C Compiler) - компилятор языка С высокого уровня. Современная интегрированная (визуальная) среда разработки программного обеспечения Windows IDE, включает в себя текстовый редактор, компилятор и интерпретатор, средства автоматизации сборки и отладчик. Возможность работы, как автономно так и в интеграции с MPLAB IDE (интегрированная среда разработки фирмы MICROCHIP) делают его незаменимым при разработке программ для PIC микроконтроллеров. Поддерживает микроконтроллеры фирмы MICROCHIP PIC10/12/16/18.
Рисунок 4.12 - Алгоритм обработки прерываний
микроконтроллера управляющего нагружением
Листинг программы приведен в ПРИЛОЖЕНИИ Д.
4.4 Выводы по главе
В данной главе дипломного проекта разработано программное обеспечение микроконтроллеров и программное приложение ЭВМ. Произведен выбор среды разработки, приведены алгоритмы программ микроконтроллеров и приложения для ЭВМ. Сделано подробное описание работы каждого алгоритма и системы в целом.
Разработанное приложение для ЭВМ имеет следующие требования для ПК:
наличие как минимум трех COM портов;
операционная система Windows.
Экранные формы разработанного приложения на ЭВМ
включены в описание.
5. ОЦЕНКА СТОИМОСТИ РАЗРАБОТКИ СИСТЕМ УПРАВЛЕНИЯ
ИСПЫТАТЕЛЬНЫМ СТЕНДОМ
Стоимость разработки систем управления скоростью и нагружением испытательного стенда складывается из стоимости разработки программного обеспечения, стоимости разработки и изготовления электронных блоков системы, и стоимости дополнительного оборудования.
Для расчета конечной отпускной цены
разработанного опытного образца необходимо определить количество часов,
затраченных непосредственно на выполнение разработки.
Таблица 5.1 - График выполнения работ
|
Тип исполняемой работы: |
Затраченное время, дни: |
|
1 Разработка схем: |
|
|
Разработка системы управления скоростью |
10 |
|
Разработка системы управления нагружением |
10 |
|
Итого: |
20 |
|
2 Разработка ПО: |
|
|
Разработка программного управления на ПК в Borland С++ Builder 6 |
7 |
|
Разработка алгоритма работы системы управления скоростью |
4 |
|
Разработка управляющей программы в MPLAB 8.6 |
10 |
|
Разработка алгоритма работы системы управления нагружением |
3 |
|
Разработка управляющей программы в CCS PIC C 4.033 |
6 |
|
Итого: |
30 |
Количество дней, затраченных на разработку схем равно:
Количество дней, затраченных на разработку ПО равно:
В среднем количество часов, затраченных на разработку всей системы, составило:
разработка программного обеспечения (ПО) - ЧПО = 4 часа в день:
разработка схем ЧСХ = 4 часа в день.
Тогда, общее количество часов,
затраченных на разработку:
(5.1)