WWW.LIBRUS.DOBROTA.BIZ
БЕСПЛАТНАЯ  ИНТЕРНЕТ  БИБЛИОТЕКА - собрание публикаций
 

«высшего образования «НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ ТОМСКИЙ ПОЛИТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ» Школа Инженерная школа информационных технологий и робототехники Направление подготовки 15.03.04 ...»

Министерство образования и науки Российской Федерации

федеральное государственное автономное образовательное учреждение

высшего образования

«НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ

ТОМСКИЙ ПОЛИТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»

Школа Инженерная школа информационных технологий и робототехники

Направление подготовки 15.03.04 «Автоматизация технологических процессов и производств»

Отделение школы (НОЦ) Отделение автоматизации и робототехники

БАКАЛАВРСКАЯ РАБОТА

Тема работы Создание системы управления электродвигателем на базе микроконтроллера STM32 УДК 004.896:004.31:621.313.13 Студент Группа ФИО Подпись Дата 8Т4Б Житников Алексей Дмитриевич Руководитель Ученая степень, Должность ФИО Подпись Дата звание Фадеев Александр Доцент ОИТ к.т.н .

Сергеевич

КОНСУЛЬТАНТЫ:

По разделу «Финансовый менеджмент, ресурсоэффективность и ресурсосбережение»

Ученая степень, Должность ФИО Подпись Дата звание Старший преподава- Хаперская Алена — тель ОСГН Васильевна По разделу «Социальная ответственность»

Ученая степень, Должность ФИО Подпись Дата звание Невский Егор СергеАссистент ИШХБМТ евич

ДОПУСТИТЬ К ЗАЩИТЕ:

Руководитель ООП ФИО Ученая степень, Подпись Дата звание Томск – 2018 г .

ПЛАНИРУЕМЫЕ РЕЗУЛЬТАТЫ ОБУЧЕНИЯ ПО ООП

Код Результат обучения результата (Выпускник должен быть готов) Профессиональные компетенции Демонстрировать базовые естественнонаучные и математические знания для решения научных и инженерных задач в области анализа, синтеза, проектироР1 вания, производства и эксплуатации систем автоматизации технологических процессов и производств. Уметь сочетать теорию, практику и методы для решения инженерных задач, и понимать область их применения .

Иметь осведомленность о передовом отечественном и зарубежном опыте в обР2 ласти теории, проектирования, производства и эксплуатации систем автоматизации технологических процессов и производств .

Применять полученные знания для определения, формулирования и решения инженерных задач при разработке, производстве и эксплуатации современных Р3 систем автоматизации технологических процессов и производств с использованием передовых научно-технических знаний и достижений мирового уровня, современных инструментальных и программных средств .

Уметь выбирать и применять соответствующие аналитические методы и метоР4 ды проектирования систем автоматизации технологических процессов и обосновывать экономическую целесообразность решений .

Уметь находить необходимую литературу, базы данных и другие источники Р5 информации для автоматизации технологических процессов и производств .

Уметь планировать и проводить эксперимент, интерпретировать данные и их Р6 использовать для ведения инновационной инженерной деятельности в области автоматизации технологических процессов и производств .

Уметь выбирать и использовать подходящее программно-техническое оборуР7 дование, оснащение и инструменты для решения задач автоматизации технологических процессов и производств .

Универсальные компетенции Владеть иностранным языком на уровне, позволяющем работать в интернациР8 ональной среде с пониманием культурных, языковых и социальноэкономических различий .

Эффективно работать индивидуально, в качестве члена и руководителя группы с ответственностью за риски и работу коллектива при решении инновациР9 онных инженерных задач в области автоматизации технологических процессов и производств, демонстрировать при этом готовность следовать профессиональной этике и нормам .





Иметь широкую эрудицию, в том числе знание и понимание современных общественных и политических проблем, вопросов безопасности и охраны здороР10 вья сотрудников, юридических аспектов, ответственности за инженерную деятельность, влияния инженерных решений на социальный контекст и окружающую среду .

Понимать необходимость и уметь самостоятельно учиться и повышать квалиР11 фикацию в течение всего периода профессиональной деятельности .

–  –  –

Школа Инженерная школа информационных технологий и робототехники Направление подготовки 15.03.04 «Автоматизация технологических процессов и производств»

Отделение школы (НОЦ) Отделение автоматизации и робототехники

–  –  –

Тема работы:

Система управления частотой электродвигателя на базе микроконтроллера STM32 Утверждена приказом директора (дата, номер) №2183/с от 28.03.2018 г .

Названия разделов, которые должны быть написаны на русском и иностранном языках:

— Дата выдачи задания на выполнение выпускной квалификационной работы по линейному графику

–  –  –

Школа Инженерная школа информационных технологий и робототехники Направление подготовки 15.03.04 «Автоматизация технологических процессов и производств»

Уровень образования Бакалавриат Отделение школы (НОЦ) Отделение автоматизации и робототехники Период выполнения осенний / весенний семестр 2017/2018 учебного года

–  –  –

Исходные данные к разделу «Социальная ответственность»:

1. Характеристика объекта исследования (вещество, Система управления частотой электроматериал, прибор, алгоритм, методика, рабочая зона) и двигателя на базе микроконтроллера области его применения STM32

–  –  –

Реферат Выпускная квалификационная работа выполнена на 95 с., содержит 30 рисунков, 21 таблицу, 6 приложений .

Ключевые слова: микроконтроллер STM32, электродвигатель, система управления, протокол Modbus, протокол UART, устройство сопряжения .

Объектом исследования является система управления электродвигателем на базе микроконтроллера STM32 .

Цель работы — разработка системы управления частотой электродвигателя на базе микроконтроллера STM32 .

В работе рассмотрены компоненты системы управления. Для сопрягающего устройства проведен сравнительный анализ микроконтроллеров. Рассмотрено программное обеспечение для программирования микроконтроллера STM32, а также протоколы обмена данными UART и Modbus. Показаны этапы создания сопрягающего устройства между диспетчерской станцией и преобразователем частоты. Проведено тестирование и отладка сопрягающего устройства .

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

Актуальность работы обусловлена растущей популярностью микропроцессорной техники, в частности микроконтроллеров .

Достоинством работы является снижение стоимости системы управления за счет внедрения микроконтроллера в технологический процесс управления электродвигателем вместо коммутирующих устройств и промышленных контроллеров .

Оглавление Введение

1. Компоненты системы управления двигателем

Оборудование системы управления

1.1 .

Сопрягающее устройство

1.1.1 .

Преобразователь частоты вращения электродвигателя........ 19 1.1.2 .

Организация каналов связи между устройствами................. 19 1.1.3 .

Программное обеспечение для создания и отладки алгоритмов 1.2 .

работы на STM32

Графический генератор кода STM32CubeMX

1.2.1 .

Среда разработки — Keil uVision.

1.2.2 .

Программа обмена данными по протоколу Modbus — Viewer 1.2.3 .

1.2.4. Terminal v1.9b

Протоколы обмена данными

1.3 .

Протокол физического уровня передачи данных — UART. 27 1.3.1 .

Протокол Modbus RTU

1.3.2 .

1.4. Выводы по главе 1

–  –  –

4. Раздел «Социальная ответственность»

Аннотация

4.1 .

Структура проекта

4.2 .

Краткое описание протокола Modbus RTU

4.3 .

Помехоустойчивое кодирование в Modbus RTU

4.4 .

Функция разгрузки информационного потока

4.5 .

Резервирование и самодиагностика

4.6 .

Заключение

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

Приложение А. Листинг функции расчета CRC-16

Приложение Б. Листинг приема/отправки информации по UART протоколу

Приложение В. Листинг обмена данными по протоколу Modbus............. 89 Приложение Г. Листинг работы устройства сопряжения

Приложение Д. Карта сегментирования рынка

Приложение Е. Временные показатели научного исследования............... 95 Введение В настоящее время происходит интенсивное развитие микропроцессорной техники, в частности микроконтроллеров (МК) [1]. Все больше они выступают в качестве устройств управления для домашних систем автоматизации, которые могут включать в себя контроль освещения, сигнализацию, дистанционное управление электроприборами и т.д .

Использование таких систем имеет ряд значительных достоинств, таких как: дешевизна самих микроконтроллеров, малое энергопотребление, быстрота разработки новых систем и модернизации старых, возможность расширения систем.

Однако, микроконтроллеры имеют ряд недостатков:

• Низкая надежность систем, построенных на таких микроконтроллерах, в сравнении с системами, построенными на базе промышленных контроллеров, обусловленная влиянием окружающей среды [1]. Большое влияние на стабильность работы оказывают температура, электромагнитные помехи, радиация. Особенно чувствительны контроллеры к электромагнитным воздействиям, которые вызывают зависания и самопроизвольные перезагрузки .

• Требование профессиональных компетенций для разработки систем. Для написания качественного кода требуется большой объем знаний в области программирования, в отличие от написания программы на персональном компьютере (ПК), микроконтроллер гораздо чувствительнее к ошибкам программиста [1]. Ограниченный объем памяти, требования к быстродействию «по тактам» требуют высокой квалификации разработчика, также нужно уметь предвидеть различные ситуации, которые возникнут непосредственно в ходе протекания процесса .

Для задач управления опасным для жизни людей технологическим процессом, например, для задачи изменения и контроля положения управляющих стержней ядерного реактора, устойчивость систем к отказам и сбоям является очень важным фактором, именно поэтому в производстве используются промышленные контроллеры, обладающие высокой надежностью .

Однако, принимая во внимание стоимость промышленных контроллеров, и технологический процесс, в регулировании которого они участвуют, использование таких контроллеров не всегда целесообразно. В свою очередь, микроконтроллер, при грамотном подходе к проектированию, может функционально заменить промышленный контроллер и обеспечить необходимый уровень надежности .

Одной из частых задач на производстве является управление насосами, вентиляторами, компрессорами, станками и другими механизмами, большинство из которых содержит электропривод с электродвигателем постоянного или переменного тока, для которых важно поддерживать скорость вращения вала двигателя, либо определенный технологический параметр [2] .

Основным элементом современного электропривода является система управления электродвигателем: частотный преобразователь или сервопривод .

Преобразователь частоты (ПЧ) позволяет управлять моментом и скоростью вращения электродвигателя и исполнительного механизма. Сервопривод позволяет точно управлять угловым положением, скоростью и ускорением исполнительного механизма [3] .

Связь частотного преобразователя и ПК может быть выполнена по промышленному протоколу Modbus RTU, который является наиболее широко используемым протоколом во всей промышленной автоматизации по ряду причин:

• Modbus — протокол с открытым исходным кодом. Это означает, что он может быть включен в широкий диапазон типов устройств от любого поставщика оборудования;

• Modbus использует простую структуру сообщений, что делает ее менее сложной для развертывания и отладки. Это является конкурентным преимуществом в сравнении с другими протоколами, которые могут потребовать месяцев для изучения и развертывания;

• Modbus используется с двумя типами последовательных соединений: RS-232 и RS-485 .

В данной работе рассматривается применение микроконтроллера STM32, как связывающего устройства между преобразователем частоты и персональным компьютером, осуществляющее передачу данных между ними посредством протокола Modbus RTU .

Цель работы:

• разработка системы управления частотой электродвигателя на базе микроконтроллера STM32 .

Задачи работы:

• изучить структуру системы управления частотой электродвигателя;

• изучить среду разработки Keil MDK-ARM и программное обеспечение (ПО) для конфигурирования STM32 — STM32CubeMX;

• реализовать протокол передачи данных Modbus RTU;

• разработать программу, осуществляющую связь между частотным преобразователем и ПК посредством протокола Modbus RTU;

• протестировать управление частотой вращения электродвигателя через ПК .

–  –  –

Рисунок 1– Структурная схема системы управления электродвигателем С диспетчерской станции на сопрягающее устройство поступают команды управления преобразователем частоты. Команды с диспетчерской станции могут приходить по различным протоколам, функция сопрягающего устройства состоит в преобразовании протокола данных с диспетчерской станции в протокол Modbus. Далее данные поступают на частотный преобразователь, который преобразует входные данные в токовый сигнал управления электродвигателем .

В реализованной системе в качестве диспетчерской станции выступает персональный компьютер. Для упрощения реализации системы на первых этапах, команды с ПК на сопрягающее устройство поступают сразу по протоколу Modbus, тогда в функционал устройства входит проверка данных на целостность и информационная разгрузка подключаемых устройств .

1.1.1. Сопрягающее устройство Учитывая функции сопрягающего устройства, было принято решение использовать для его реализации микроконтроллер. Промышленные контроллеры в качестве сопрягающего устройства не рассматривались. Их надежность и технические характеристики превосходят микроконтроллеры, но и цена тоже имеет существенные отличия. Также, использование для таких целей микроконтроллеров представляет широкий интерес для разработчиков встраиваемых систем .

Для выбора сопрягающего устройства был проведен сравнительный анализ между двумя микроконтроллерами ATmega328P на базе аппаратной платформы Arduino Nano (рисунок 2) и STM32F103C8T6 (рисунок 3) .

–  –  –

Анализ технических характеристик показал, что STM32F103 превосходит Arduino Nano практически по всем показателям.

Особенно большие различия наблюдаются в быстродействии, характеризуемом частотой микроконтроллера и в возможностях подключения периферийных устройств, характеризуемых количеством каналов ввода-вывода:

• тактовая частота STM32 превышает частоту оппонента в 4,5 раза, то есть система, созданная на базе STM32, заранее имеет более высокие показатели быстродействия;

• UART (Universal asynchronous receiver/transmitter) — универсальный асинхронный приемопередатчик, физический протокол передачи данных [6]. Наличие трех UART каналов на плате STM32 позволяет отлаживать созданный проект, не используя дополнительных плат. В случае с Arduino Nano понадобилось бы подключать модули расширения, что привело бы к повышению стоимости комплектующих проекта и дополнительным затратам энергоресурсов .

Также STM32 имеет модуль DMA (Direct Memory Access — прямой доступ к памяти — режим обмена данными между устройствами компьютера или же между устройством и основной памятью, в котором центральный процессор (ЦП) не участвует. Так как данные не пересылаются в ЦП и обратно, скорость передачи увеличивается) [7]. Данный модуль будет применен при дальнейшей разработке системы и увеличении ее быстродействия .

Отсутствие возможности программировать STM32 через USB-порт компенсируется использованием программатора JTAG, который имеет высокоскоростной интерфейс для подключения к ПК, а также обеспечивает питание самой плате .

1.1.1.2. Достоинства и недостатки микроконтроллеров Arduino и STM32 Одно из главных достоинств Arduino – собственная «экосистема» .

Огромное количество датчиков и модулей расширения позволяет создавать проекты высокой сложности и для широкого спектра нужд. Информационная база по Arduino включает в себя множество русскоязычных ресурсов с подробно описанными проектами и детальными инструкциями.

Большое количество пользователей Arduino подразумевает и широкий программный функционал:

ежедневно создаются десятки библиотек для различного применения аппаратной платформы [8] .

Однако, данные преимущества Arduino влекут за собой и недостатки:

• большое количество неотлаженных библиотек, неэффективно использующих память микроконтроллера и работающих не всегда правильно;

• в сравнении с STM32, отсутствие хорошего отладчика, из-за чего поиск и устранение ошибок занимает большое количество времени;

• отсутствие избыточной профессиональной информации. Подавляющее количество информации представляется на форумах, самими пользователями [8] .

Преимущество Arduino перед STM32 очевидно — данная аппаратная платформа подходит для начала изучения мира микроконтроллеров и создания небольших проектов в сфере домашней автоматизации и робототехники. Однако, для создания проектов, участвующих в сфере промышленной автоматизации, большее внимание уделяется не наличию написанных библиотек и русскоязычной литературы, а повышенной надежности и более высокой производительности микроконтроллеров. Технические преимущества STM32 не оставляют сомнений, также микроконтроллер обладает более высокой стабильностью, связанной с тем, что ядро и периферия микроконтроллера работают от напряжения 1.8В, при напряжении питания 3.3В, когда периферия микроконтроллера ATmega328 работает от напряжения 2.7В, при напряжении питания 5В .

Также, большое преимущество STM32 — разнообразие инструментов разработки и отладки. Это касается как аппаратных, так и программных средств [9] .

Исходя из всех вышеперечисленных аргументов, было сделано заключение, что для данного проекта подходит микроконтроллер STM32F103C8T6 .

1.1.2. Преобразователь частоты вращения электродвигателя В качестве преобразователя частоты используется устройство для управления двигателями постоянного тока, использующего микроконтроллер TMS320F2803x, относящийся к семейству микроконтроллеров C2000. В данном устройстве встроены алгоритмы динамического управления двигателями, использующие широтно-импульсную модуляцию. Высокая производительность микроконтроллера позволяет адаптировать алгоритмы управления к изменениям в системе в режиме реального времени и одновременно с этим отслеживать параметры электродвигателя [10] .

1.1.3. Организация каналов связи между устройствами Для создания канала связи между персональным компьютером и STM32 используется плата FTDI232, выполняющая функцию переходника между интерфейсами UART и RS485, позволяющая, используя минимум внешних компонентов (разъем и пассивные компоненты), организовать последовательный обмен данными между внешним устройством на микроконтроллере и компьютером через шину USB (рисунок 4) .

Рисунок 4 – плата FTDI232 Информация с сопрягающего устройства передается на преобразователь частоты по протоколу UART и не требует дополнительных схемотехнических решений .

1.2. Программное обеспечение для создания и отладки алгоритмов работы на STM32

Программирование микроконтроллера STM32 состоит из трех этапов:

1. Конфигурирование периферии микроконтроллера. Выполняется в программе STM32CubeMX .

2. Написание кода основной программы. Выполняется в среде разработке Keil uVision .

3. Отладка работы устройства. Выполняется в программах Terminal v1.9b, Viewer, а также с помощью встроенного отладчика среды разработки Keil uVision .

Далее приведено описание возможностей и функционала всех вышеперечисленных программ .

1.2.1. Графический генератор кода STM32CubeMX Генераторы программного кода предназначены для того, чтобы создавать отдельные файлы исходного кода или всего проекта на основе заданных настроек. Чаще всего генераторы используют популярные библиотеки, что позволяет унифицировать процесс генерации исходных текстов. В зависимости от количества настраиваемых параметров они могут за счет реализации части функционального обеспечения значительно минимизировать время, затрачиваемое на создание основы для дальнейшей разработки. Практика использования подобных генераторов для разработки прикладного ПО во многих отраслях стала стандартной, а знание соответствующих инструментов является обязательным. В то же время, в сфере разработки встраиваемых систем подобные генераторы применяются благодаря преимуществам, которые они предоставляют, однако все еще находятся на этапе развития и получения признания среди разработчиков .

STM32CubeMX - это графический инструмент генерации низкоуровневого кода для микроконтроллеров STM32 [11] .

STM32CubeMx — программный продукт, позволяющий при помощи понятного графического интерфейса произвести настройку любой имеющейся на борту микроконтроллера периферии. STM32CubeMx является единым инструментом для настройки и конфигурирования большого количества микроконтроллеров и, сопутствующим им, библиотекам и документациям [12] .

Визуальный редактор настроек STM32CubeMX является составной частью инфраструктуры STM32Cube, которая также включает специализированные библиотеки для работы с различными линейками микроконтроллеров STM32 .

Основными функциями, которые предоставляет визуальный редактор конфигурации, являются:

• настройка использования выводов периферийными устройствами в составе микроконтроллера (рисунок 5);

Рисунок 5 – Окно настройки выводов микроконтроллера

• настройка тактирования (рисунок 6);

Рисунок 6 – Окно настройки тактирования

• настройка периферийных устройств;

• расчет потребления энергии в соответствии с планируемыми режимами работы .

Интерфейс самой программы, несмотря на наличие большого количества настроек, прост и понятен. Он не перегружен ненужными функциями, а визуальное представление различных систем МК позволяет полностью сложить картину о конечном результате выполненных настроек .

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

• библиотеку CMSIS;

• библиотеку для работы с периферийными устройствами (Hardware

Abstraction Layer – HAL);

• библиотеки, упрощающие использование возможностей популярных плат (Board Support Package – BSP);

• библиотеки более высокого прикладного уровня, позволяющие реализовать специализированные возможности (система реального времени FreeRTOS, поддержка файловой системы FAT, работа со стеком протоколов TCP/IP благодаря библиотеке lwIP, использование возможностей USB и др.). Не все библиотеки данного уровня могут быть доступны для подключения при использовании конкретного микроконтроллера .

К недостаткам генераторов кода можно отнести ограниченное количество настроек, которое не позволяет учесть все особенности проекта. Также при разработке проекта для динамической системы, которая часто изменяет параметры собственной работы в зависимости от внутренних и внешних условий, генераторами можно описать лишь ограниченное количество состояний данной системы. Необходимость учета большого количества критериев влечет за собой внесение большого количества изменений в программную реализацию [13] .

После настройки периферии и генерации кода можно приступать непосредственно к разработке и отладке основных алгоритмов работы устройства .

1.2.2. Среда разработки — Keil uVision .

Для программирования устройства была выбрана программная среда Keil uVision .

Keil uVision — среда разработки, представляющая собой набор утилит для выполнения полного комплекса мероприятий по написанию программного обеспечения для микроконтроллеров (рисунок 7) .

Рисунок 7 – Среда разработки Keil uVision Среда программирования разработана компанией Keil, которая была основана в Мюнхене в 1982 году братьями Гюнтером и Рейнхардом. В октябре 2005 года Keil вошла в состав американской корпорации ARM. На сегодняшний день она представляет широкий спектр различных средств для разработки программ, включающих Cи-компиляторы, макроассемблеры, отладчики, симуляторы, линкеры, IDE-приложения и оценочные платы для различных семейств микроконтроллеров .

Keil uVision позволяет работать с проектами любой степени сложности, начиная с введения и правки исходных текстов и заканчивая внутрисхемной отладкой кода и программированием ПЗУ микроконтроллера. От разработчика скрыта большая часть второстепенных функций, что сильно разгружает интерфейс и делает управление интуитивно понятным. Однако при возрастании сложности реализуемых задач, всегда можно задействовать весь потенциал модулей, функционирующих под управлением единой оболочки .

Среди основных программных средств Keil uVision можно отметить:

1. Базу данных микроконтроллеров, содержащую подробную информацию обо всех поддерживаемых устройствах. Здесь хранятся их конфигурационные данные и ссылки на источники информации с дополнительными техническими описаниями. При добавлении нового устройства в проект все его уникальные опции устанавливаются автоматически .

2. Менеджер проектов, служащий для объединения отдельных текстов программных модулей и файлов в группы, обрабатываемые по единым правилам. Подобная группировка позволяет намного лучше ориентироваться среди множества файлов .

3. Встроенный редактор, облегчающий работу с исходным текстом за счет использования многооконного интерфейса, выделения синтаксических элементов шрифтом и цветом. Существует опция настройки в соответствии со вкусами разработчика. Редактирование остается доступным и во время отладки программы, что позволяет сразу исправлять ошибки или отмечать проблемные участки кода .

4. Средства автоматической компиляции, ассемблирования и компоновки проекта, которые предназначены для создания исполняемого (загрузочного) модуля программы. При этом между файлами автоматически генерируются новые ассемблерные и компиляторные связи, которые в дальнейшем позволяют обрабатывать только те файлы, в которых произошли изменения или файлы, находящиеся в зависимости от изменённых. Функция глобальной оптимизации проекта позволяет достичь наилучшего использования регистров микроконтроллера путем неоднократной компиляции исходного кода. Компиляторы uVision работают с текстами, написанными на Си или ассемблере для контроллеров семейств ARM, MSC51, C166 и многих других. Кроме того, возможно использование компиляторов других производителей .

5. Отладчик-симулятор, отлаживающий работу скомпилированной программы на виртуальной модели микропроцессора. Довольно достоверно моделируется работа ядра контроллера и его периферийного оборудования: портов ввода-вывода, таймеров, контроллеров прерываний. Для облегчения комплексной отладки разрабатываемого программного обеспечения возможно подключение программных моделей нестандартного оборудования [14] .

1.2.3. Программа обмена данными по протоколу Modbus — Viewer Программа Viewer (рисунок 8), созданная компанией «ЭлиСи» осуществляет соединение персонального компьютера с устройством, обменивается данными с подключённым устройством по протоколу Modbus, использует функции записи данных в устройство и чтения данных из устройства. Функция чтения данных позволяет отслеживать параметры технологического процесса в реальном времени. С помощью данной программы производится отладка работы протокола Modbus на микроконтроллере, а также осуществляется управление электродвигателем .

Рисунок 8 – Основное окно программы Viewer

1.2.4. Terminal v1.9b Программа Terminal v1.9b (рисунок 9) позволяет настраивать соединение с устройством по UART протоколу, отслеживать принятые через USB-порт данные, а также отправлять данные на подключенное устройство, просматривать полученные или отправленные сообщения с точностью до битов. В данном проекте программа используется для отладки протокола физического уровня — UART .

Рисунок 9 – Программа Terminal v1.9b

1.3. Протоколы обмена данными Процесс обмена данными системы основан на протоколах Modbus RTU и UART .

Под протоколом UART подразумевается физический уровень передачи данных протокола Modbus .

Далее представлено описание структуры протоколов .

1.3.1. Протокол физического уровня передачи данных — UART UART — интерфейс для связи цифровых устройств, предназначенный для передачи данных в последовательной форме. Является очень распространённым и имеет аппаратную реализацию во многих микроконтроллерах. Микроконтроллер STM32F103C8T6 содержит три USART .

USART (Universal Synchronous-Asynchronous Receiver/Transmitter) - универсальный синхронно-асинхронный приёмопередатчик - аналогичный UART интерфейс, но дополнительно к возможностям UART, поддерживает режим синхронной передачи данных - с использованием дополнительной линии тактового сигнала. Впрочем, синхронная передача используется гораздо реже асинхронной, и в нашем случае, посредством STM32CubeMX, USART будет использовать режим асинхронной передачи данных .

UART может использоваться как для взаимодействия компонентов внутри одного устройства, так и для подключения устройств между собой. Распространёнными стандартами физического уровня для UART, которые подходят для подключения внешних устройств является RS232/485/422. Этим стандартам соответствует последовательный порт (COM-порт) компьютера. Так что, микроконтроллер с помощью схемы преобразования уровней может обмениваться информацией с COM-портом компьютера .

1.3.1.1. Формат передачи данных по UART протоколу В отсутствии передачи на выходе UART присутствует уровень логической единицы. Данные передаются в виде посылок (фреймов), каждая из которых состоит из стартового бита, битов данных и одного или нескольких стопбитов (рисунок 10). Длительность всех битов одинакова, связана со скоростью передачи соотношением T=1/S. Существует ряд стандартных скоростей передачи: 110, 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400, 460800, 921600 бод. Если внутри одного устройства связь можно осуществлять на произвольной скорости, то для связи с внешними устройствами следует придерживаться стандартных величин .

Рисунок 10 – Формат посылки UART Посылка начинается со стартового бита, он всегда имеет значение логического нуля. После стартового бита передаются биты данных. Количество битов данных может составлять 5-9 в зависимости от настроек UART. Обычно передаётся 8 бит данных или 9 бит (8 бит собственно данных и один бит чётности). Завершается посылка стоп-битами, их значение - всегда логическая единица, количество обычно составляет 1, 1.5 или 2. Под количеством стоп-битов понимается длительность соответствующего им единичного импульса по отношению к длительности битов данных и старт-бита. Этим объясняется возможность выражать количество битов дробным числом. Сразу же после стопбитов может начинаться передача следующей посылки или может быть пауза произвольной длительности, во время которой на выходе также формируется уровень логической единицы .

Так как во время передачи стоп-бита и пока линия свободна, на выходе присутствует единичное значение, а старт-бит имеет значение логического нуля, старт-бит позволяет выявить момент начала передачи данных, разделить две последовательные посылки и осуществить синхронизацию передатчика и примника .

Если передатчик и приёмник работают на одной скорости, настроены на работу с одинаковым количеством битов данных, стоп битов, одинаково сконфигурированы в отношении бита чётности, то для обмена данными не требуется передавать отдельно тактовый сигнал - он может быть восстановлен приёмником самостоятельно [15] .

1.3.2. Протокол Modbus RTU Modbus – открытый протокол обмена данными в малых локальных сетях .

Как правило, используется для передачи данных через интерфейсы RS-232, RSRS-422, в сетях TCP/IP, UDP. Благодаря своей простоте и универсальности Modbus получил широкое распространение и стал де факто стандартом в малых распределенных вычислительных системах. Практически все современные контроллеры поддерживают работу в сетях Modbus .

В сети Modbus контроллеры, как правило, соединены по топологии «Общая шина». Взаимодействие контроллеров происходит в соответствии с моделью master-slave (ведущий-ведомый) (рисунок 11) .

–  –  –

Рисунок 11 – Схема топологии «Общая шина»

В сети есть главное устройство - ведущее. А также несколько подчиненных устройств – ведомые. Обмен может быть инициирован только ведущим устройством .

Транзакция (последовательность операций при обмене данными) состоит из запроса и ответа .

Ведущее устройство может адресовать запрос любому ведомому контроллеру или инициировать широковещательное сообщение, для всех ведомых устройств одновременно .

Ведомое устройство, определив свой адрес в запросе, формирует ответ .

В запросе от ведущего устройства обязательно содержится код функции, т.е. что надо делать. Также в зависимости от функции в запросе могут содержаться данные .

Существуют 3 варианта протокола ModBus:

• ModBus ASCII – текстовый протокол. В нем используются только ASCII символы. Каждый байт передается как два шестнадцатеричных символа;

• ModBus RTU – числовой протокол. Данные передаются в двоичном виде. Байт, передаваемый по сети это число протокола;

• ModBus TCP – протокол для передачи данных в TCP/IP сетях .

1.3.2.1. Формат передачи данных по Modbus RTU протоколу Ведущее устройство инициирует транзакцию – обмен данными. Транзакция может быть индивидуальной (запрос-ответ) или широковещательной (адресуются одновременно все ведомые устройства). Транзакция состоит из одного кадра запроса и одного кадра ответа. При широковещательной транзакции используется только кадр запроса .

Данные кадра передаются сплошным потоком. Пауза между передачей данных не должна превышать время передачи 1,5 символа. Признаком нового кадра является отсутствие обмена в сети (молчание) в течение времени необходимого на передачу 3,5 символов. Если в течение этого времени линия сети находилась в неактивном состоянии, то ведомые устройства воспринимают первое принятое данное как начало кадра .

В общем случае кадр запроса имеет следующий формат (рисунок 12) .

–  –  –

Рисунок 12 – Кадр запроса ведущего устройства Кадр начинается с поля адреса, которое состоит из 8 разрядов. Содержит адрес ведомого устройства, которому предназначено сообщение от ведущего .

Каждое ведомое устройство должно иметь уникальный адрес от 1 до 247. И только адресуемое ведомое устройство должно ответить на запрос ведущего. В ответе сообщается ведущему устройству, с каким из ведомых установлена связь .

Адрес 0 используется в широковещательном режиме. Все ведомые устройства выполняют заданную в запросе функцию, но подтверждение не посылают .

Поле функции сообщает адресуемому ведомому устройству, какую операцию выполнить .

Старший бит байта функция устанавливается в 1 в ответе ведомого устройства, чтобы сообщить ведущему, что операция была выполнена с ошибкой. При успешной операции старший бит равен 0 .

1.3.2.2. Функции протокола Modbus RTU

Выделяются 3 категории кодов функций:

• стандартные команды. Коды, определенные стандартом на протокол ModBus;

• пользовательские команды. Для кодов 65…72 и 100…110 пользователь может сам назначить произвольную функцию;

• зарезервированные команды. Это коды, которые не были изначально определены стандартом, но уже используются в устройствах разных производителей .

В созданном проекте используются две функции:

• Чтение значений одного или нескольких регистров хранения (READ HOLDING REGISTERS). Код функции – 03;

• Последовательная запись нескольких регистров хранения (FORCE MULTIPLE REGISTERS). Код функции – 10 .

Запрос ведущего устройства на чтение данных имеет формат, представленный в таблице 2 .

–  –  –

Функция с кодом 10 используется для записи данных в несколько, последовательно расположенных регистров. В запросе передается адрес первого регистра, количество регистров и значения для них. В ответе возвращается начальный адрес и количество измененных регистров .

Формат запроса функции записи регистров хранения представлен в таблице 4 .

Таблица 4 – Формат запроса ведомого устройства на запись данных

–  –  –

При успешной записи данных в регистры, ведомое устройство отправит ответ, представленный в таблице 5 .

Таблица 5 – Формат ответа ведомого устройства Адрес Количество ID ведомого Код функции начального записанных CRC-16 устройства регистра регистров 0x01 0x10 0x00 0x02 0x00 0x02 0xE0 0x3B 1.3.2.3. Помехоустойчивое кодирование в протоколе Modbus RTU В процессе передачи и хранения данных неизбежно возникают ошибки .

Обнаружение ошибок и их исправление является важной задачей для создания любого канала связи .

Для проверки целостности поступающих данных, протокол Modbus использует CRC .

CRC (Cyclic Redundancy Code - циклический избыточный код) — алгоритм расчёта контрольной суммы для передаваемого сообщения, основанный на полиномиальной арифметике .

Основная идея алгоритма CRC состоит в представлении сообщения в виде огромного двоичного числа, делении его на другое фиксированное двоичное число и использовании остатка от этого деления в качестве контрольной суммы. Получив сообщение, приёмник должен выполнить аналогичное действие и сравнить полученный результат с принятой контрольной суммой. Сообщение считается достоверным, когда выполняется это равенство .

Алгоритм CRC базируется на полиномиальной арифметике, а это означает, что сообщение, делитель и остаток могут быть представлены в виде полиномов с двоичными коэффициентами или в виде строки битов, каждый из которых является коэффициентом полинома. Чтобы выполнить вычисление CRC, необходимо выбрать делитель - полином. Важной характеристикой, определяющей дальнейшие расчёты, является степень полинома. Обычно выбирается степень 16 или 32, так как они являются кратными разрядности регистров современных процессоров, что значительно упрощает реализацию алгоритмов CRC .

Для ускорения расчёта CRC используется табличный алгоритм. В таблицу внесены все возможные 256 значений расчета полинома. Тогда, вместо алгоритма расчета, используется алгоритм поиска значений CRC по готовой таблице, индексами которой являются исходные данные [16] .

Код для расчета CRC-16 табличным методом представлен приложении А .

1.4. Выводы по главе 1 Была рассмотрена система управления электродвигателем постоянного тока, а также оборудование, необходимое для создания и функционирования системы. В ходе сравнительного анализа, в качестве сопрягающего устройства был выбран микроконтроллер STM32F103C8T6. Рассмотрено программное обеспечение для отладки работы микроконтроллера и протоколов связи в системе управления. Приведено описание протоколов Modbus и UART .

Реализация системы управления электродвигателем 2 .

Для постепенного изучения функционала программного обеспечения и периферии микроконтроллера создание системы управления было разделено на три этапа:

Реализация UART протокола и отладка его функционирования .

1 .

Реализация протокола Modbus RTU. Для отладки протокола микроконтроллер выступает ведомым устройством, а персональный компьютер ведущим .

Реализация алгоритмов работы сопрягающего устройства:

3 .

• функция проверки информации. Алгоритм проверки устройством входной информации на целостность частично включает в себя ранее реализованный протокол Modbus RTU;

• создание функции информационной разгрузки ведомых устройств .

2.1. Реализация UART протокола В процессе создания UART-протокола были выполнены этапы конфигурирования периферии и инициализация выходов STM32 в STM32CubeMX, написание алгоритма работы в Keil uVision, тестирование созданного устройства .

2.1.1. Конфигурирование периферийных устройств Настройка функционального назначения выводов было произведено в первой из четырех рабочих вкладок STM32CubeMX (рисунок 13). Рабочая область вкладки разделена на две части: в первой отображается дерево конфигурации периферийных модулей и специализированных программных компонентов, а во второй организовано графическое представление МК и использования его выводов .

Рисунок 13 – Вкладка назначения выводов микроконтроллера Интерфейс USART был настроен таким образом, чтобы передача данных выполнялась в асинхронном режиме .

Следующим этапом была выполнена настройка параметров UART (рисунок 14):

• скорость передачи данных в битах в секунду – 9600 бит/с;

• длина кадра – 8 бит;

• количество стоп-битов – 1;

• контроль четности – не используется;

• направление потока данных – прием и передача .

Рисунок 14 – Вкладка настройки UART На этом необходимые настройки периферии окончены. Далее в STM32CubeMх был сгенерирован проект для среды Keil uVision, в которой был написан код основной программы .

Код программы представлен в приложении Б .

2.1.2. Алгоритм работы программы Выполнение программы происходит в режиме активного ожидания центрального процессора, когда в цикле while процессор постоянно выполняет алгоритм, прописанный внутри цикла. Это имеет свой недостаток. Процессор постоянно ждет поступления информации по UART, даже когда информация не поступает, он все равно опрашивает входы на ее наличие. Это заметно ухудшает производительность микроконтроллера в целом, а также увеличивает риск возникновения ошибки при получении/отправке данных. В данном случае такое решение не является критичным, поскольку для стабильной работы канала связи нужна обработка только одного UART-канала с минимумом действий, но при дальнейшем создании более сложных программ целесообразнее использовать прерывания .

Созданная программа работает по следующему алгоритму:

микроконтроллер ожидает сообщения с персонального компьютера размером 1 байт. При получении сообщения, STM32 отправляет полученное сообщение обратно персональному компьютеру .

Данный алгоритм позволяет отладить функции отправки и получения данных:

• HAL_UART_Receive — функция приема фиксированного количества байт;

• HAL_UART_Transmit — функция отправки фиксированного количества байт .

2.1.3. Отладка программы Для отладки алгоритма установлено соединение STM32 c программой Terminal v1.9b через СOM-порт персонального компьютера. В терминальной программе установлены настройки UART аналогичные настройкам UART на STM32 (раздел 2.1.1) .

Исходя из приведенного выше алгоритма работы программы, при отправке каждого байта информации с терминала, микроконтроллер должен отправить точно такие же данные на ПК. Для проверки написанного алгоритма используется встроенный отладчик в среде разработки Keil uVision и программа Terminal v1.9b .

В нижней части рисунка 15 показана программа Terminal v1.9b. В верхней части программы приведены настройки UART, которые идентичны настройкам UART на STM32. Ниже расположены два поля «Receive» и «Transmit». В качестве тестового сигнала был отправлен символ «7», на рисунке это показано в поле «Transmit». В поле «Receive» отображается «7», это означает, что контроллер принял семерку и отправил ее на ПК, а, следовательно, программа работает правильно .

Правильность работы алгоритма подтверждает верхнее окно «Watch 1»

отладчика Keil uVision, где показана переменная str, в которую записано значение «7» .

Рисунок 15 – Отладчик Keil uVision и Terminal v1.9b

2.2. Реализация протокола Modbus RTU При создании протокола Modbus используется ранее отлаженный протокол физического уровня UART. Ведущим устройством выступает персональный компьютер, ведомым микроконтроллер .

2.2.1. Конфигурирование периферийных устройств Конфигурация периферии микроконтроллера практически совпадает с приведенной выше конфигурацией для создания UART протокола (раздел 2.1.1). Различие заключается в том, что вся программа будет работать с использованием прерываний, а не в режиме активного ожидания. Для этого в настройке UART были разрешены прерывания (рисунок 16) .

Рисунок 16 – Окно настройки прерываний UART Прерывание - это событие, как правило, связанное с каким-либо блоком периферии микроконтроллера STM32. Событий, которые могут породить прерывание может быть множество. Например, в блоке периферии UART могут быть такие события: передача завершена, приём завершен, возникла ошибка чётности и так далее. Использование прерываний позволяет нашей программе реагировать на подобные события в режиме реального времени, а также разгружает время работы процессора, освобождая ресурсы под выполнение других задач. Сам термин прерывание означает, что прерывается выполнение основного кода программы и управление передается некоторому другому фрагменту кода, который называется обработчиком прерывания [17] .

После настройки прерываний UART в STM32CubeMх был сгенерирован проект для среды Keil uVision, в которой был написан код основной программы. Код представлен в приложении В .

2.2.2. Алгоритм работы программы На рисунках 17, 18 представлен алгоритм работы программы. Как уже было описано выше (раздел 1.3.2.2), в реализованном протоколе Modbus используются функции чтения и записи данных. Это подразумевает, что сопрягающее устройство должно уметь получать запросы разной информационной длины. Длина запроса на чтение данных составляет 8 байт, на запись данных

13. Причем устройство не может знать заранее, какой запрос отправит диспетчерская станция. Следовательно, для данной задачи невозможно использовать функцию фиксированного приема данных «HAL_UART_Receive». Данная задача была решена введением алгоритма побайтового приема данных .

начало Проверка флага прерывания, отвечающего за прием данных

–  –  –

Рисунок 18 – Продолжение алгоритма приема/передачи данных по протоколу Modbus При поступлении первого байта запроса на микроконтроллер, срабатывает прерывание по приему информации и программа начинает выполнять алгоритм, заложенный внутри обработчика этого прерывания .

Каждый принятый байт записывается в массив и инкрементируется счетчиком, то есть программа всегда знает количество полученных байтов. По правилам организации протокола Modbus, второй байт запроса идентифицирует функцию чтения или записи. Тогда микроконтроллер, обрабатывая второй байт, узнает функцию запроса, а, следовательно, узнает и всю длину запроса. Когда счетчик байтов достигает нужного значения, весь запрос обрабатывается и микроконтроллер выполняет запрос диспетчерской станции. Далее массив запроса и счетчик байтов обнуляется, после чего микроконтроллер готов принимать новый запрос .

2.2.3. Отладка программы Для проверки работы протокола Modbus был создан массив для тестирования функции чтения данных — data_for_read, и массивы для тестирования функции записи данных: rec_1, rec_2, rec_3, rec_4. В таблице 6 отображено содержимое массива data_for_read .

Таблица 6 – Содержимое массива data_for_read Индекс элемента 0 1 2 3 4 5 6 7 8 9 Значение элемента 0 1 2 3 4 5 6 7 8 9 На рисунке 19 представлена работа программы при обработке запроса диспетчерской станции на чтение данных из памяти микроконтроллера. В нижней части рисунка представлена программа Viewer, с помощью которой были запрошены данные элемента с индексом 2 массива data_for_read, данному элементу присвоено значение «2», значит, при успешном выполнении операции, в окне программы во вкладке «Значение» отобразится считанная с массива двойка. В нижней части рисунка отображены окна отладчика среды Keil uVision. В окне «Watch 1» отображен принятый микроконтроллером запрос на чтение. В окне «Watch 2» отображены данные массива txar_read, которые соответствует формату ответа по протоколу Modbus. Первому элементу массива присвоен номер ведомого устройства, выполнившего запрос. Второму элементу код функции, которую устройство должно было выполнить. Далее идут два элемента, которых указывается количество прочитанных байтов. Элементу с индексом четыре присвоено значение, которое нужно было считать. Последним двум элементам присвоено значение посчитанного CRC. В результате программа Viewer принимает ответ микроконтроллера и записывает значение «2» в значение запрошенного параметра .

Рисунок 19 – Отладка алгоритма чтения данных На рисунке 20 представлена работа программы при обработке запроса диспетчерской станции на запись данных в память микроконтроллера. Согласно настройке формата данных для записи в программе Viewer, максимальный размер информации на запись составляет 4 байта, значит, при записи данных, в память микроконтроллера всегда приходит 4 байта. Каждому байту соответствует отдельный массив. В нижней части рисунка, в программе Viewer значение параметра «test_param5» с адресом «4» равно девяти. Это означает, что в элемент массива микроконтроллера с индексом 4 должно быть записано число девять. Символ «9» занимает один байт памяти, следовательно, в элемент массива rec_2 с индексом четыре будет записана девятка, а в элементы массивов rec_1, rec_3 и rec_4, индекс которых равен четырем, будут записаны нули. В левой части рисунка показаны окна отладчика среды Keil uVision. В окне «Watch 1» отображен принятый микроконтроллером запрос на запись символа «9». В окне «Watch 2» отображены данные массива txar_write, которые соответствует формату ответа по протоколу Modbus. Элемент с нулевым индексом содержит номер ведомого устройства, с индексом один — код выполненной функции .

Следующий элемент содержит адрес начального регистра. Элемент с индексом 3 содержит количество считанных байт. Следующие два элемента содержат количество считанных регистров. Элементы с индексами 6 и 7 содержат рассчитанный для данного ответа CRC .

Рисунок 20 – Отладка алгоритма записи данных Для проверки работы функции записи было проведено дополнительное тестирование. В параметр «test_param1» было записано число 32455678, а в «test_param7» число 56567. Отладчик среды Keil uVision отображает информацию на микроконтроллере в шестнадцатеричной системе исчисления. Число 32455678, записанное в десятеричной системе исчисления равно 1EF3BFE в шестнадцатеричной системе. Данное число разделено на четыре байта, каждый из которых записан в элемент с индексом 1 соответствующего массива. Число 56567(10) равно DCF7(16). Это число также разделено на байты, в данном случае два байта, которые записаны в элементы с индексом 6 соответствующих массивов. На рисунке 21 отображены результаты выполнения алгоритма и показаны данные массивов rec_1, rec_2, rec_3 и rec_4, которые подтверждают правильность выполнения программы .

Рисунок 21 – Запись данных и массивы данных

2.3. Реализация функционала устройства сопряжения Устройство сопряжения используется в качестве промежуточного звена между диспетчерской станцией и преобразователем частоты, которое поочередно выступает в роли ведомого и ведущего устройства .

Проверяет входные данные на целостность и выполняет функцию разгрузки потока данных, поступающих на ведомые устройства. Реализация протокола Modbus на различных устройствах может отличаться по причине разной трактовки некоторых стандартов протокола. В дальнейшем планируется расширить функционал и добавить алгоритм преобразования различных входных протоколов в протокол Modbus на выходе, соответствующий протоколам подключенных ведомых устройств .

2.3.1. Конфигурирование периферийных устройств Помимо сконфигурированного ранее канала UART, для отладки работы устройства задействовали два дополнительных UART канала (рисунок 22) и задали им параметры, аналогичные первому каналу .

Рисунок 22 – Конфигурация трех UART каналов Далее STM32CubeMх был сгенерирован проект для среды Keil uVision, в которой был написан код основной программы .

Код программы представлен в приложении Г .

2.3.2. Алгоритм работы устройства На рисунках 23, 24 представлен алгоритм работы устройства. Данный алгоритм использует схожую последовательность действий, с ранее созданным алгоритмом обмена данными по протоколу Modbus. Отличия алгоритма заключаются в том, что сопрягающее устройство не создает ответ для диспетчерской станции, а пересылает его от подключенного к нему ведомого устройства. На разных устройство ожидает разные форматы ответов .

UART-каналах начало

–  –  –

В разделе 1.3.2 было показано, что устройства, обменивающиеся данными по протоколу Modbus, используют топологию «Общей шины». То есть ведущее устройство отправляет команду всем ведомым устройствам. Каждое ведомое устройство обязано сверить адрес полученной команды со своим и, в случае совпадения адресов, выполнить команду. Тем самым, при отправке любой команды с ведущего устройства, все ведомые устройства выполняют проверку этой команды на соответствие адреса .

Для уменьшения информационного потока на ведомые устройства, в STM32 была создана функция, осуществляющая селекцию ведомых устройств в зависимости от адреса, указанного в команде ведущего устройства. Иными словами, созданная функция разгружает работу ведомых устройств и гарантирует, что на каждое ведомое устройство придет команда, предназначенная именно ему .

Сопоставление адресов в командах и каналов, подключенных ведомых устройств производится в теле программы микроконтроллера с помощью оператора ветвления CASE. Структурная схема алгоритма представлена на рисунке 25 .

<

–  –  –

Рисунок 25 – Алгоритм разгрузки информационного потока 2.3.3. Отладка сопрягающего устройства Отладка устройства производилась без подключения преобразователя частоты, поэтому для имитации отправки команд на ведомое устройство и имитации получения ответов использовались три UART канала .

Данные с диспетчерской станции на сопрягающее устройство поступают по каналу UART2, после проверки данных на целостность он ретранслируются на ведомое устройство по каналу UART1. Для тестирования алгоритма канал UART1 физически подключен к каналу UART3, значит, чтобы узнать, что данные по каналу UART1 успешно ретранслировались, необходимо считать полученные данные на канале UART3. В случае совпадения данных, отправленных с диспетчерской станции и данных, полученных на канале UART3, можно утверждать, что ведомое устройство, подключенное к сопрягающему по каналу UART1, успешно получило команду от диспетчерской станции .

На рисунке 26 показаны окна отладчика среды Keil uVision. В окне Watch 1 показана информация, записанная в массив «rxar», которую получило устройство сопряжения от диспетчерской станции по каналу UART2. В окне Watch 2 отображена информация, записанная в массив rxar3, полученная по каналу UART3 .

Рисунок 26 – Данные массивов «rxar» и «rxar3»

Содержимое массивов на обоих окнах идентично, следовательно, алгоритм работает верно .

Процесс приема информации с ведомого устройства и ее ретрансляции на диспетчерскую станцию по своему алгоритму схож с приведенным выше, поэтому в отладке данного процесса меняется только последовательность задействования UART-каналов. Для проверки алгоритма было проведено аналогичное тестирование, которое показало успешное выполнение заданного алгоритма. Следовательно, созданное сопрягающее устройство работает согласно поставленному заданию .

2.4. Выводы по главе 2 Во второй главе были рассмотрены этапы создания сопрягающего устройства. На физическом уровне был организован протокол UART и проведено его тестирование, которое показало правильность работы алгоритма. На канальном и прикладном уровне передачи данных был создан протокол Modbus RTU. Тестирование алгоритмов передачи данных по протоколу Modbus показало успешные результаты. Заключительным этапом было создание устройство, в алгоритмы работы которого вошли оба, ранее созданных и отлаженных, протокола, а также функция разгрузки входной информации на ведомые устройства .

Поэтапная разработка и тестирование алгоритмов позволили успешно создать итоговое сопрягающее устройство .

Финансовый менеджмент, ресурсоэффективность и ресурсосбережение 3 .

В настоящее время оценка коммерческой разработки является важным условием для поиска источников финансирования. Нужно уметь оценить свои силы на рынке конкурентов, увидеть недостатки в их продукции и минимизировать их в своем проекте, оценить преимущества и индивидуальность своего проекта для поиска источников финансирования. Коммерциализация результатов проекта необходима разработчикам, так как способствует дальнейшему обеспечению развития проекта и его доведению до конечного продукта .

3.1. Оценка коммерческого потенциала и перспективности проведения научных исследований с позиции ресурсоэффективности и ресурсосбережения 3.1.1. Потенциальные потребители результатов исследования Потенциальными потребителями данного проекта могут быть различные компании, предприятия и фирмы, ведущие разработки в сферах автоматизации и связи .

В приложении Д представлена карта сегментации рынка, в которой учитываются потребности разных по величине предприятий в использовании управляющих устройств.

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

Промышленные контроллеры используют крупные предприятия, 1 .

это связано с тем, что, в условиях сложных и опасных технологических процессов, большое внимание уделяется надежности системы. Промышленные контроллеры могут изготавливается во взрывозащищенных корпусах и обладают высоким классом надежности, однако, обладают высокой стоимостью, и поэтому часто недоступны для мелких и средних предприятий .

Средние предприятия могут использовать контроллеры разных типов, в зависимости от вида технологического процесса и требуемых показателей надежности и качества процесса. Во многом такие предприятия первыми пробуют внедрять микроконтроллеры в новые сферы человеческой деятельности. Благодаря таким компаниям и фирмам растет популярность среди микроконтроллеров STM32 и других .

Мелкие предприятия, проекты которых включают в себя «домашнюю» автоматизацию, создание интернет-вещей, широко используют микроконтроллеры различных производителей. Для начального изучения и освоения микроконтроллеров хорошо подходят устройства на базе Arduino, обладающие широким выбором дополнительных устройств управления, датчиков и исполнительных механизмов .

3.1.2. Анализ конкурентных технических решений Детальный анализ конкурирующих разработок помогает вносить коррективы в научное исследование, чтобы успешнее противостоять своим соперникам. Важно реалистично оценить сильные и слабые стороны разработок конкурентов .

С этой целью может быть использована вся имеющаяся информация о конкурентных разработках:

технические характеристики разработки;

конкурентоспособность разработки;

уровень завершенности научного исследования (наличие макета прототипа и т.п.);

бюджет разработки;

уровень проникновения на рынок;

финансовое положение конкурентов, тенденции его изменения и т.д .

Анализ конкурентных технических решений с позиции ресурсоэффективности и ресурсосбережения позволяет провести оценку сравнительной эффективности научной разработки и определить направления для ее будущего повышения. В таблице 7 представлена оценочная карта для сравнения конкурентных технических решений .

–  –  –

Для оценки ресурсоэффективности были выбраны следующие критерии:

надежность, масштабируемость, возможности продукта, удобство в эксплуатации и качество интерфейса пользователя. Каждый из критериев играет важную роль при выборе продукта. На любом производстве важна степень надежности используемого оборудования, по данному критерию продукт проигрывает конкурентам, но имеет все возможности на повышение надежности при дальнейших разработках. По остальным техническим показателям продукт является конкурентно способным. Сильными сторонами продукта являются масштабируемость и возможность использования в различных сферах производства .

Для оценки экономической эффективности были выбраны следующие экономические критерии: конкурентоспособность продукта, цена, сервисное обслуживание, предполагаемый срок эксплуатации .

Результаты анализа выявили, что созданный продукт имеет низкую себестоимость, в сравнении с конкурентными продуктами и, при развитии технологии, обладает большим потенциалом для создания и развития новых продуктов .

Также целью является не только продажа продукта, но и дальнейшее послепродажное обслуживание. Помощь при внедрении в эксплуатацию и сопровождение продукта поможет заинтересовать и завоевать доверие покупателей .

3.1.3. SWOT-анализ SWOT – Strengths (сильные стороны), Weaknesses (слабые стороны), Opportunities (возможности) и Threats (угрозы) – представляет собой комплексный анализ научно-исследовательского проекта. SWOT-анализ применяют для исследования внешней и внутренней среды проекта .

Первый этап заключается в описании сильных и слабых сторон проекта, в выявлении возможностей и угроз для реализации проекта, которые проявились или могут появиться в его внешней среде .

Сильные стороны – это ресурсы или возможности, которыми располагает руководство проекта и которые могут быть эффективно использованы для достижения поставленных целей .

Слабые стороны – это то, что плохо получается в рамках проекта или где он располагает недостаточными возможностями или ресурсами по сравнению с конкурентами .

Возможности включают в себя любую предпочтительную ситуацию в настоящем или будущем, возникающую в условиях окружающей среды проекта .

Угроза представляет собой любую нежелательную ситуацию, тенденцию или изменение в условиях окружающей среды проекта, которые имеют разрушительный или угрожающий характер для его конкурентоспособности в настоящем или будущем .

Таблица 8 – матрица SWOT

Сильные стороны: Слабые стороны:

С1. Низкая цена. Сл1. Надежность С2. Широкий спектр сфер Сл2. Среды проприменения. граммирования С3. Возможность расширения Сл3. Время разраи дополнения проекта. ботки С4. Обновление и совершенствование комплектующих проекта .

Возможности:

В1. Повышение надежности комплектующих проекта В2. Осваивание новых отраслей .

В3. Увеличение масштаба проектов .

В4. Повышение квалификации сотрудников .

<

–  –  –

3.2. Планирование проектных работ 3.2.1. Структура работ в рамках проекта

Планирование комплекса предполагаемых работ осуществлено в следующем порядке:

–  –  –

3.2.2. Определение трудоемкости выполнения работ Трудовые затраты в большинстве случаях образуют основную часть стоимости разработки, поэтому важным моментом является определение трудоемкости работ каждого из участников проекта .

Трудоемкость выполнения проекта оценивается экспертным путем в человеко-днях и носит вероятностный характер, т.к. зависит от множества трудно учитываемых факторов.

Для определения ожидаемого (среднего) значения трудоемкости tожi используется следующая формула:

3t mini + 2t maxi Tожi =, (1) где tожi – ожидаемая трудоёмкость выполнения i-ой работы, человекодни;

t mini – минимально возможная трудоемкость выполнения заданной iой работы (оптимистическая оценка: в предположении наиболее благоприятного стечения обстоятельств), человеко-дни;

t maxi – максимально возможная трудоемкость выполнения заданной i-ой работы (пессимистическая оценка: в предположении наиболее неблагоприятного стечения обстоятельств), человеко-дни .

По формуле 2, рассчитывается продолжительность каждой работы в рабочих днях Tрi, с учетом численности исполнителей на каждом этапе выполнения работ .

t ожi Tpi =, (2) Чi где Tpi – продолжительность i-ой работы, рабочие дни;

t ожi – ожидаемая трудоёмкость выполнения i-ой работы, человеко-дни;

Чi – численность исполнителей, выполняющих одновременно одну и ту же работу на данном этапе, человек .

Для удобства построения графика проведения научного исследования необходимо перевести длительность каждого из этапов работ из рабочих в календарные дни с помощью формулы 3 .

Tкi = Tрi k кал, (3) где Tкi – продолжительность выполнения i-й работы в календарных днях;

Tрi – продолжительность выполнения i-й работы в рабочих днях;

k кал – коэффициент календарности .

Для расчёта длительности каждого из этапов работ в календарных днях необходимо рассчитать коэффициент календарности k кал используя формулу 4 .

Tкал K кал =, (4) Tкал Tвых Tпр где k кал – коэффициент календарности;

Tкал – количество календарных дней в году;

Tкал – количество выходных дней в году;

Tпр – количество праздничных дней в году .

В 2018 году количество календарных дней составляет 365 дней, а сумма выходных и праздничных дней равна 118 дням. Из этого следует, что коэффициент календарности для 2018 года равен k кал = 1,478 .

Для построения календарного плана-графика необходимо рассчитать временные показатели проведения научного исследования. Все расчеты представлены в таблице 13 .

Таблица 13 – Временные показатели проведения научного исследования

–  –  –

3.3.3. Отчисление во внебюджетные фонды (страховые отчисления) В данной статье расходов отражаются обязательные отчисления по установленным законодательством Российской Федерации нормам органам государственного социального страхования (ФСС), пенсионного фонда (ПФ) и медицинского страхования (ФФОМС) от затрат на оплату труда работников .

Величина отчислений во внебюджетные фонды определяется исходя из следующей формулы 10:

Звнеб = внеб (Зосн + Здоп ), (10) где внеб – коэффициент отчислений на уплату во внебюджетные фонды (пенсионный фонд, фонд обязательного медицинского страхования и пр.) На 2014 г. в соответствии с Федеральным законом от 24.07.2009 №212ФЗ установлен размер страховых взносов равный 30%. На основании пункта 1 ст.58 закона №212-ФЗ для учреждений, осуществляющих образовательную и научную деятельность в 2014 году водится пониженная ставка – 27,1%. Отчисления во внебюджетные фонды рекомендуется представлять в табличной форме (таблица 15) .

Таблица 15 – расчет отчислений во внебюджетные фонды Коэффициент Основная ЗП, Дополнительная отчислений во Исполнитель Звнеб, руб .

руб. ЗП, руб. внебюджетные фонды НР 15264 1832 0,271 4633 И 98432 11812 0,271 29876 Итого: 34509 Исходя из данных таблицы получили, что 34509 руб. уйдет во внебюджетные фонды .

3.3.4. Прочие расходы Данная статья включает стоимость всех материалов, покупных изделий, полуфабрикатов и других материальных ценностей, расходуемых непосредственно в процессе выполнения работ. Цена материальных ресурсов определяется по соответствующим ценникам и приведена в таблице 16 .

–  –  –

Таблица 17 – Бюджет затрат по каждому исполнению НТИ Сумма, руб. Сумма, руб. Сумма, руб .

Наименование статьи (Исп.2) (Исп.3) (Исп.1) Материальные затраты НТИ и прочие расходы Затраты по основной заработной плате исполнителей Затраты по дополнительной заработной плате Отчисления во внебюджетные фонды Бюджет затрат НТИ 155497 155497 155497

3.4. Определение ресурсной, финансовой, бюджетной, социальной и экономической эффективности исследования Научно-технический уровень характеризует, в какой мере выполнены работы и обеспечивается научно-технический прогресс в данной области. Для оценки научной ценности, технической значимости и эффективности, планируемых и выполняемых НИР, используется метод бальных оценок .

–  –  –

Исходя из полученных данных и проведенного анализа эффективности можно сделать вывод, что вариант исполнения 1 является наиболее эффективным с позиции финансовой и ресурсоэффективности .

Раздел «Социальная ответственность»

4 .

4.1. Аннотация Представление понятия «Социальная ответственность» сформулировано в международном стандарте (МС) ICCSR-08260008000: 2011 «Социальная ответственность организации» .

В соответствии с МС - Социальная ответственность - ответственность организации за воздействие ее решений и деятельности на общество и окружающую среду через прозрачное и этичное поведение, которое:

1. содействует устойчивому развитию, включая здоровье и благосостояние общества;

2. учитывает ожидания заинтересованных сторон;

3. соответствует применяемому законодательству и согласуется с международными нормами поведения (включая промышленную безопасность и условия труда, экологическую безопасность);

4. интегрировано в деятельность всей организации и применяется во всех ее взаимоотношениях (включая промышленную безопасность и условия труда, экологическую безопасность) [18] .

4.2. Структура проекта Основная идея устройства, созданного на базе микроконтроллера STM32, заключается в отделении органа управления от преобразователя частоты. В нашем случае основное управление и слежение за частотой вращения электродвигателем осуществляется через ПК. Список оборудования, используемого в проекте, представлен в таблице 20 .

Таблица 20 – Оборудование, используемое в проекте Наименование оборудования Количество Плата отладочная на базе микроконтроллера 1 шт .

STM32

–  –  –

Рисунок 28 – Структурная схема проекта с беспроводным каналом связи Это гарантирует безопасное расстояние диспетчерской станции от объекта управления, а также разрешает доступ к управлению объектом с любой точки мира, где есть выход в сеть .

4.3. Краткое описание протокола Modbus RTU На текущем этапе отлажена работа устройства по проводному каналу .

Для передачи данных используется протокол Modbus RTU. Modbus — протокол, работающий по принципу «клиент-сервер». Широко применяется в промышленности. Modbus может использоваться для передачи данных через последовательные линии связи RS-485, RS-422, RS-232, а также сети TCP/IP .

Контроллеры на шине Modbus взаимодействуют, используя masterslave модель, основанную на транзакциях, состоящих из запроса и ответа. Обычно в сети есть только одно ведущее, так называемое, «главное» (англ. master) устройство, и несколько ведомых — «подчинённых» (англ. slaves) устройств .

Главное устройство (мастер) инициирует транзакции (передаёт запросы). Мастер может адресовать запрос индивидуально любому подчиненному или инициировать передачу широковещательного сообщения для всех подчиненных устройств. Подчинённое устройство, опознав свой адрес, отвечает на запрос, адресованный именно ему. При получении широковещательного запроса ответ подчинёнными устройствами не формируется .

Ведущим устройством в проекте является персональный компьютер, в качестве ведомого выступает преобразователь частоты. Так как к STM32 помимо частотного преобразователя может быть подключено несколько устройств, то, по правилам протокола, частотный преобразователь будет прерываться на обработку каждой команды, сверяя адрес устройства. В данной реализации протокола было принято решение переложить обязанность сравнения адресов на STM32 .

Благодаря данной опции, конкретное ведомое устройство прерывается на обработку команд, адресованных конкретно ему. В нашем случае это позволяет повысить производительность частотного преобразователя и уменьшить риск его сбоя .

4.4. Помехоустойчивое кодирование в Modbus RTU При передаче данных возможны различные помехи, помехой называют постороннее электрическое колебание, мешающее нормальному приему сигналов. Причиной и источниками помех могут являться различные факторы, и помехи могут быть классифицированы по различным признакам. В зависимости от места возникновения посторонние электрические колебания можно разделить на внешние и внутренние помехи. Внутренние помехи возникают в узлах аппаратуры и трактах систем связи. Внешние помехи обусловлены действием источников помех, внешних по отношению к системе связи и не связанных с ее функционированием .

В нашем случае большое влияние оказывают внутренние помехи. Для борьбы с ними, в программной среде для STM32 предусмотрена процедура проверки флагов устройства, которые указывают на различные неисправности .

Но такая диагностика невозможна при удаленной работе устройства, поэтому, для проверки целостности поступающих данных, протокол Modbus использует CRC .

CRC — циклический избыточный код (англ. Cyclic redundancy check). Алгоритм нахождения контрольной суммы, предназначенный для проверки целостности данных. CRC является практическим приложением помехоустойчивого кодирования .

Существуют разные варианты нахождения CRC, важно, чтобы метод расчета CRC совпадал на всех устройствах .

В созданном проекте расчет CRC осуществляется табличным методом .

Далее представлен алгоритм проверки достоверности информации, реализованный на STM32 (рисунок 29) .

–  –  –

Рисунок 29 – Алгоритм проверки целостности полученных данных

4.5. Функция разгрузки информационного потока Как упоминалось выше, протокол Modbus предполагает отправку команд с ведущего устройства всем ведомым устройствам В структуре команды ведущего устройства есть поле адреса ведомого устройства, которому предназначается команда (таблица 21) .

Таблица 21 – Формат команды запроса на чтение данных

–  –  –

Каждое ведомое устройство обязано сверить адрес полученной команды со своим и, в случае успеха, выполнить команду. Тем самым, при отправке любой команды с ведущего устройства, все ведомые устройства выполняют проверку этой команды на соответствие адреса .

Для уменьшения информационного потока на ведомые устройства, в STM32 была создана функция, осуществляющая селекцию ведомых устройств в зависимости от адреса, указанного в команде ведущего устройства. Иными словами, созданная функция разгружает работу ведомых устройств и гарантирует, что на каждое ведомое устройство придет команда, предназначенная именно ему .

Сопоставление адресов в командах и каналов, подключенных ведомых устройств производится в теле программы микроконтроллера с помощью оператора ветвления CASE. Структурная схема алгоритма представлена на рисунке 30 .

<

–  –  –

Рисунок 30 – Алгоритм разгрузки информационного потока на ведомые устройства

4.6. Резервирование и самодиагностика В зависимости от сферы применения созданной системы управления возможно повышение ее надежности с помощью резервирования. Составной частью систем с резервированием является подсистема автоматического контроля работоспособности и диагностики неисправностей .

В случае, когда система некритична к времени простоя величиной в несколько минут достаточно использовать холодное резервирование. Ненагруженный резерв («холодный» резерв) — резервный элемент, находящийся в ненагруженном режиме до начала его использования вместо основного элемента .

Ненагруженный резерв позволяет получить системы с самой высокой надёжностью, но с низким коэффициентом готовности .

В системах, технологический процесс которых не позволяет простоя в отслеживании и регулировании параметров стоит использовать нагруженный резерв («горячий» резерв) — резервный элемент, который находится в таком же режиме, как и основой. В системах автоматизации с «горячим» резервом переход на резерв может занимать время от нескольких миллисекунд до единиц секунд.

Для обеспечения «горячей» замены необходимо предусмотреть следующее:

защиту от статического электричества, которое может возникать на теле оператора, выполняющего замену устройства;

необходимую последовательность подачи напряжений питания и внешних сигналов (для этого используют, например, разъёмы с контактами разной длины и секвенсоры внутри устройства);

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

защиту устройства от перенапряжения, короткого замыкания, превышения напряжения питания, ошибочного подключения .

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

Существуют также методы увеличения надежности, на основе самодиагностики. Например, во FLASH памяти можно иметь две прошивки МК, каждая из которых будет проверяться перед стартом на контрольную сумму (некоторое значение, рассчитанное по набору данных путём применения определённого алгоритма и используемое для проверки целостности данных при их передаче или хранении) и запускаться только в случае ее соответствия. В итоге, полученная система является более надежной и, даже в случае единичной ошибки во FLASH памяти, она сможет запуститься с резервной копии .

Заключение В данной выпускной квалификационной работе были выполнены задачи по изучению системы управления частотой электродвигателя. Разработана система управления, включающая в себя сопрягающее устройство на основе микроконтроллера STM32. Устройство работает в двунаправленном режиме, обрабатывая и принимая данные с диспетчерской станции и преобразователя частоты. Для программирования устройства было изучено программное обеспечение: графический генератор кода STM32CubeMX и среда разработки Keil uVision. При программировании в среде Keil uVision основное внимание было уделено изучению функциональных возможностей библиотеки, на которой базируется сгенерированный в STM32CubeMX код .

При реализации протокола Modbus RTU, отдельной задачей стояла задача реализации функции приема данных, поскольку библиотечная функция принимает только фиксированное количество байт, а в разрабатываемой системе принимались пакеты различной длины. Для этого был организован прием данных на уровне регистров. Это позволило включить операторы ветвления после каждого ключевого байта (байт кода функции), благодаря этому был реализован гибкий алгоритм, принимающий пакеты различной длины .

Для реализации сопрягающего устройства использовались разработанные ранее программы протоколов UART и Modbus. При тестировании устройства возникали ошибки, связанные с физическим нарушением данных в каналах связи. Обнаружить данные проблемы удалось с помощью отладчика Keil uVision, в котором можно просматривать регистры флагов микроконтроллера, которые и указали на причину проблемы .

Введение функции разгрузки в устройства сопряжения изменило топологию обмена данными по протоколу Modbus с «общей шины» на иерархическую, однако, это не создало неудобств при приеме/передачи данных между ведущим и ведомыми устройствами, поскольку ресурсы STM32 позволяют обрабатывать большой поток информации. В дальнейшем планируется введение функции преобразования протоколов, получая известный протокол на входе, устройство будет преобразовывать данные в заданный протокол на выходе. Также планируется реализовать алгоритм обмена данными устройства с WI-FI модулем, тогда отслеживание параметров и управление электродвигателем будет возможно удаленно от места нахождения двигателя. Это позволит изолировать диспетчерскую станцию от технологического процесса .

Список литературы Две стороны повсеместного применения микроконтроллеров [Электронный ресурс]/Хабр: https://habr.com/post/137987/, свободный. Яз. Рус. Дата обращения: 27.05.2018 .

Управление двигателями постоянного тока [Электронный ресурс]/ 2 .

РадиоЛоцман: https://www.rlocman.ru/shem/schematics.html?di=157614, свободный. Яз. Рус. Дата обращения: 27.05.2018 .

Способы управления электродвигателями [Электронный ресурс]/ 3 .

Инженерные решения: http://engineering-solutions.ru/motorcontrol/techniques/, свободный. Яз. Рус. Дата обращения: 27.05.2018 .

Modbus, протокол: описание, сфера применения, достоинства и недостатки [Электронный ресурс]/FB: http://fb.ru/article/349993/modbus-protokolopisanie-sfera-primeneniya-dostoinstva-i-nedostatki, свободный. Яз. Рус. дата обращения: 27.05.2018 .

STM32 и Arduino: сравнение характеристик, плюсы и минусы 5 .

[Электронный ресурс]/Arduino+: https://arduinoplus.ru/stm32-i-arduinosravnenie/, свободный. Яз. Рус. дата обращения: 27.05.2018 .

UART протокол [Электронный ресурс]/Хабр:

6 .

https://habr.com/post/109395/, свободный. Яз. Рус. Дата обращения: 27.05.2018 .

Прямой доступ к памяти [Электронный ресурс]/Википедия:

7 .

https://ru.wikipedia.org/wiki/Прямой_доступ_к_памяти, свободный. Яз. Рус. Дата обращения: 27.05.2018 .

STM32 и Arduino: сравнение характеристик, плюсы и минусы 8 .

[Электронный ресурс]/Arduino+: https://arduinoplus.ru/stm32-i-arduinosravnenie/, свободный. Яз. Рус. Дата обращения: 27.05.2018 .

Программные средства разработки ПО для STM32 [Электронный 9 .

ресурс]/Компэл: https://www.compel.ru/lib/ne/2017/1/8-prostyie-besplatnyieprogrammnyie-sredstva-razrabotki-po-dlya-stm32, свободный. Яз. Рус. Дата обращения: 27.05.2018 .

10. Управление двигателями постоянного тока [Электронный ресурс] URL: http://www.ti.com/lit/an/tida012/tida012.pdf, свободный. Яз. Рус. Дата обращения: 27.05.2018 .

11. STM32CubeMX - With Example Work-flow [Электронный ресурс]/FreeRTOS:

https://www.freertos.org/FreeRTOSPlus/BSP_Solutions/ST/STM32CubeMX.html, свободный. Яз. Рус. Дата обращения: 27.05.2018 .

12. STM32Cube Создание проекта [Электронный ресурс]/MicroTechnics: http://microtechnics.ru/stm32cube-sozdanie-proekta/, свободный. Яз. Рус. Дата обращения: 27.05.2018 .

13. Визуализация возможностей: графический генератор кода

STM32CubeMX [Электронный ресурс]/Компэл:

https://www.compel.ru/lib/ne/2014/11/4-vizualizatsiya-vozmozhnosteygraficheskiy-generator-koda-stm32cubemx, свободный. Яз. Рус. Дата обращения:

27.05.2018 .

14. Keil uVision [Электронный ресурс]/схem.net:

свободный. Яз. Рус. Дата обращения:

http://cxem.net/software/keil.php, 27.05.2018 .

15. UART и USART [Электронный ресурс]/Hamper's site:

http://www.rotr.info/electronics/mcu/arm_usart.htm, свободный. Яз. Рус. Дата обращения: 27.05.2018 .

16. CRC16 - Описание алгоритма и пример расчёта [Электронный ресурс]/PIClist: http://piclist.ru/S-CRC16-RUS/CRC16.html, свободный. Яз. Рус .

Дата обращения: 27.05.2018 .

17. [Электронный ресурс]/EasySTM32: http://easystm32.ru/forbeginners/25-interrupts-handling-in-stm32, свободный. Яз. Рус. Дата обращения:

27.05.2018 .

18. Романенко С.В., Анищенко Ю.В. Социальная ответственность: методическое указание / Томский политехнический университет. - Томск: Изд-во Томского политехнического университета, 2016. с .

-21 Приложение А. Листинг функции расчета CRC-16 (основное) Листинг функции расчета CRC-16 uint16_t CRC16(uint8_t *p, uint16_t len) // инициализация функции расчета CRC { const uint8_t auchCRCLo[256]= // инициализация таблиц { 0x00, 0xC0, 0xC1, 0x01, 0xC3, 0x03, 0x02, 0xC2, 0xC6, 0x06, 0x07, 0xC7, 0x05, 0xC5, 0xC4, 0x04, 0xCC, 0x0C, 0x0D, 0xCD, 0x0F, 0xCF, 0xCE, 0x0E, 0x0A, 0xCA, 0xCB, 0x0B, 0xC9, 0x09, 0x08, 0xC8, 0xD8, 0x18, 0x19, 0xD9, 0x1B, 0xDB, 0xDA, 0x1A, 0x1E, 0xDE, 0xDF, 0x1F, 0xDD, 0x1D, 0x1C, 0xDC, 0x14, 0xD4, 0xD5, 0x15, 0xD7, 0x17, 0x16, 0xD6, 0xD2, 0x12, 0x13, 0xD3, 0x11, 0xD1, 0xD0, 0x10, 0xF0, 0x30, 0x31, 0xF1, 0x33, 0xF3, 0xF2, 0x32, 0x36, 0xF6, 0xF7, 0x37, 0xF5, 0x35, 0x34, 0xF4, 0x3C, 0xFC, 0xFD, 0x3D, 0xFF, 0x3F, 0x3E, 0xFE, 0xFA, 0x3A, 0x3B, 0xFB, 0x39, 0xF9, 0xF8, 0x38, 0x28, 0xE8, 0xE9, 0x29, 0xEB, 0x2B, 0x2A, 0xEA, 0xEE, 0x2E, 0x2F, 0xEF, 0x2D, 0xED, 0xEC, 0x2C, 0xE4, 0x24, 0x25, 0xE5, 0x27, 0xE7, 0xE6, 0x26, 0x22, 0xE2, 0xE3, 0x23, 0xE1, 0x21, 0x20, 0xE0, 0xA0, 0x60, 0x61, 0xA1, 0x63, 0xA3, 0xA2, 0x62, 0x66, 0xA6, 0xA7, 0x67, 0xA5, 0x65, 0x64, 0xA4, 0x6C, 0xAC, 0xAD, 0x6D, 0xAF, 0x6F, 0x6E, 0xAE, 0xAA, 0x6A, 0x6B, 0xAB, 0x69, 0xA9, 0xA8, 0x68, 0x78, 0xB8, 0xB9, 0x79, 0xBB, 0x7B, 0x7A, 0xBA, 0xBE, 0x7E, 0x7F, 0xBF, 0x7D, 0xBD, 0xBC, 0x7C, 0xB4, 0x74, 0x75, 0xB5, 0x77, 0xB7, 0xB6, 0x76, 0x72, 0xB2, 0xB3, 0x73, 0xB1, 0x71, 0x70, 0xB0, 0x50, 0x90, 0x91, 0x51, 0x93, 0x53, 0x52, 0x92, 0x96, 0x56, 0x57, 0x97, 0x55, 0x95, 0x94, 0x54, 0x9C, 0x5C, 0x5D, 0x9D, 0x5F, 0x9F, 0x9E, 0x5E, 0x5A, 0x9A, 0x9B, 0x5B, 0x99, 0x59, 0x58, 0x98, 0x88, 0x48, 0x49, 0x89, 0x4B, 0x8B, 0x8A, 0x4A, 0x4E, 0x8E, 0x8F, 0x4F, 0x8D, 0x4D, 0x4C, 0x8C, 0x44, 0x84, 0x85, 0x45, 0x87, 0x47, 0x46, 0x86, 0x82, 0x42, 0x43, 0x83, 0x41, 0x81, 0x80,0x40 };

const uint8_t auchCRCHi[256]= { 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40 };

uint8_t crc_hi, crc_lo, n;

if (len256U) return (0);

n = (uint8_t)len;

crc_hi = 0xFF; // зануляем старший байт CRC crc_lo = 0xFF; // зануляем младший байт CRC do { uint8_t i = crc_hi ^ *p++;

crc_hi = crc_lo ^ (uint8_t)auchCRCHi[i]; // расчет CRC crc_lo = (uint8_t)auchCRCLo[i];

} while (--n);

return ((crc_hi 8) | crc_lo);

int main(void) { /* USER CODE BEGIN 1 */ uint8_t str[2]; // объявление переменной str /* USER CODE BEGIN WHILE */ while (1) { HAL_Delay(100); // задержка 100мс if(huart1.RxXferCount==0) // счетчик USART, отвечающий за количество принятых байт { HAL_UART_Receive(&huart1,(uint8_t*) str,1,100); // прием байта HAL_UART_Transmit(&huart1,(uint8_t*) str,1,100); // отправка байта str[0]=0; // обнуление переменной } /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ } /* USER CODE END 3 */ } } }



Похожие работы:

«1    196128, г. С.-Петербург, Благодатная ул., д. 2 www.tsensor.ru, e-mail: technosensor@yandex.ru тел./факс (812) 369-91-64; (812) 911-15-31 Существующие решения, обеспечивающие высокоточные измерения массы сжиженных углеводородных газов в автоцистернах газовозов Терешин В.И., 2Совлуков А.С. ОOO "Техносенсор"...»

«Государственное управление. Электронный вестник Выпуск № 68. Июнь 2018 г. Никулина И. Е., Николаенко В. С. Становление и развитие концепций управления проектами и риск-менеджмента Никулина Ирина Евгеньевна — доктор экономических наук, профессор, Томский политехнический университет, Томский государственный университет, г. Томск, РФ. E-ma...»

«40 АВТОМЕТРИЯ. 2015. Т. 51, № 4 УДК 528.8 ПОДХОД К АНАЛИЗУ ДИНАМИКИ ЛАНДШАФТНОГО ПОКРОВА С ИСПОЛЬЗОВАНИЕМ ИДЕНТИФИКАЦИИ ИЗМЕНЕНИЙ И ПРОСТРАНСТВЕННОГО СТОХАСТИЧЕСКОГО МОДЕЛИРОВАНИЯ А. В. Замятин1, А. А. Афанасьев2, П. Кабрал3 Томский го...»

«ФГБ ОУ ВПО "М О СК О ВС КИ Й ГО С У ДА РС ТВЕН Н Ы Й У Н И ВЕРС И ТЕТ ПУТЕЙ С О О БЩ ЕН И Я " Кафедра "С троительны е конструкции, здания и сооружения" B.C. Ф ЕДО РО В, Я.И. Ш ВИДКО Ж ЕЛ Е ЗО БЕТ О Н Н Ы Е С ТРО П И ЛЬН Ы Е АРКИ Рекомендовано редакционно-издательским советом университета в качестве учебного пособия для студенто...»

«ББК 74.113.8 Ж92 Руководитель проекта "Предшкольная пора" — член-корреспондент Российской академии образования, профессор Н.Ф. Виноградова Журова Л.Е.Азбука для дошкольников : играем со звуками и словами : Ж92 рабочая тетрадь № 2 для...»

«СТРОИТЕЛЬСТВО ФОРМИРОВАНИЕ СРЕДЫ ЖИЗНЕДЕЯТЕЛЬНОСТИ 26 28 апреля 2017 г. ПРОГРАММА ХХ Международной межвузовской научно-практической конференции студентов, магистрантов, аспирантов и молодых учёных РЕГЛАМЕНТ ПРОВЕДЕНИЯ КОНФЕРЕНЦИИ 26 апреля 2017 г. г. Москва, Ярославск...»

«Збірка наукових праць. Випуск 5, 2007 3. Воробьев В.А., Андрианов Р.А., Ушков В.А. Горючесть полимерных строительных материалов. М., Стройиздат, 1978, 224 с.4. Ми Зуи Тхань Горючая загрузка в современных жилых помещениях // Пожаровзрывобезопасность. – 2005. Т. 14, №4 – С. 30-37.5. Кірєєв О.О., Савче...»

«СВЕТОДИОДНОЕ ОБОРУДОВАНИЕ В 2017 году была основана компания LightPhenomenON, приоритетным направлением деятельности которой является производство светильников на основе LED технологий. Целью нашей компании является создание продукции, отвечающей критериям высокого качества и доступной цены, по...»

«2013 EDISON. Центр разработки программного обеспечения www.edsd.ru www.edsd.biz www.electrooffice.com [ТЕХНИЧЕСКОЕ ЗАДАНИЕ ПО РАЗРАБОТКЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ГУ "КУЗБАССПАССАЖИРАВТОТРАНС", ФАЗА №1] Документ описывает требования к первой фазе разработки автома...»

«КАТАЛОГ АВТОХИМИИ LAVR SERVICE catalog of auto chemistry NEW BRAND OF AUTOMOBILE CHEMICAL GOODS НОВЫЙ БРЕНД АВТОХИМИИ СПЕЦИАЛЬНО ДЛЯ СЕРВИСОВ SERVICE.LAVR.RU О БРЕНДЕ LAVR SERVICE – препараты, разработанные химиками и двигателистами для профессиональн...»







 
2019 www.librus.dobrota.biz - «Бесплатная электронная библиотека - собрание публикаций»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.