Методология создания аппаратно-программного обеспечения масштабируемых отказоустойчивых интеллектуальных систем управления робототехнических комплексов тема диссертации и автореферата по ВАК РФ 05.13.05, доктор наук Романов Алексей Михайлович

  • Романов Алексей Михайлович
  • доктор наукдоктор наук
  • 2021, ФГБОУ ВО «МИРЭА - Российский технологический университет»
  • Специальность ВАК РФ05.13.05
  • Количество страниц 488
Романов Алексей Михайлович. Методология создания аппаратно-программного обеспечения масштабируемых отказоустойчивых интеллектуальных систем управления робототехнических комплексов: дис. доктор наук: 05.13.05 - Элементы и устройства вычислительной техники и систем управления. ФГБОУ ВО «МИРЭА - Российский технологический университет». 2021. 488 с.

Оглавление диссертации доктор наук Романов Алексей Михайлович

Введение

1. Обзор и анализ систем управления робототехнических комплексов различного масштаба и назначения

1.1. Промышленные роботы

1.1.1. Манипуляционные промышленные роботы

1.1.2. Мобильные промышленные роботы

1.1.3. Интеллектуальное и групповое управление в

промышленной робототехнике

1.1.4. Качественная оценка элементной базы промышленной робототехники

1.2. Сервисные роботы

1.2.1. Бытовые сервисные роботы

1.2.2. Мобильные сервисные роботы

1.2.3. Сервисные роботы на элементной базе для любительских радиомоделей

1.2.4. Модульные реконфигурируемые мобильные роботы

1.2.5. Интеллектуальное и групповое управление в сервисной робототехнике

1.2.6. Качественная оценка элементной базы сервисной робототехники

1.3. Экстремальная робототехника

1.3.1. Промышленная экстремальная робототехника

1.3.2. Космическая робототехника

1.3.3. Подводная робототехника

1.3.4. Военная робототехника

1.3.5. Интеллектуальное и групповое управление в экстремальной робототехнике

1.3.6. Качественная оценка элементной базы экстремальной робототехники

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

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

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

1.4.3. Анализ характеристик отечественных ПЛИС, пригодных для исполнительного уровня

1.4.4. Анализ отечественных интерфейсных микросхем

1.5. Анализ интерфейсов, требуемых для обеспечения

отказоустойчивости и масштабирования

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

1.7. Постановка задач диссертационной работы

2. Концептуальная модель аппаратно-программного обеспечения отказоустойчивой масштабируемой интеллектуальной системы управления на унифицированной элементной базе

2.1.Управление отказоустойчивостью аппаратно-программного обеспечения систем управления

2.2. Обеспечение масштабируемости аппаратно-программного обеспечения систем управления

2.2. Элементная база масштабируемых отказоустойчивых систем управления

2.2.1. Требования к элементной базе

2.2.2. Элементная база исполнительного уровня

2.2.3. Элементная база тактического и стратегического уровней

2.3. Разработка концептуальной модели

2.4. Выводы

3. Методы ресурсоэффективной реализации базовых технологий интеллектуального управления и обработки информации на базе ПЛИС

3.1. Метод синтеза нелинейных импульсных математических операций

3.2. Реализация базовых технологий интеллектуального управления и обработки информации на ПЛИС с использованием нелинейных импульсных математических операций

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

3.2.2. Реализация интеллектуальных регуляторов на базе экспертных систем

3.2.3. Реализация интеллектуальных регуляторов на базе нейронных сетей

3.2.4. Реализация интеллектуальных регуляторов на базе нечёткой логики

3.2.5. Методика автоматического синтеза аппаратно-программного обеспечения интеллектуальных регуляторов для исполнительных устройств

3.3. Метод ресурсоэффективной реализации матричных вычислений в устройствах управления на базе ПЛИС

3.3.1. Требования, предъявляемые к реализации к новой архитектуры

матричного сопроцессора

3.3.2 Новая архитектура матричного сопроцессора для реализации задач

управления

3.3.3. Экспериментальная оценка эффективности предложенного метода в задаче Калмановской фильтрации

3.4. Методика автоматизированного синтеза и верификации аппаратно-программного обеспечения ПЛИС на борту робототехнического комплекса

3.5. Выводы

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

4.1. Методы реализации отказоустойчивого информационного обмена в реальном масштабе времени с использованием ПЛИС

4.1.1. Новый протокол связи для систем реального времени, реализованных на базе ПЛИС

4.1.2. Высокоэффективная модульная архитектура подчинённого узла сети Ethernet POWERLINK на базе ПЛИС

4.2. Методы точной взаимной синхронизации устройств управления с использованием проводных сетей Ethernet TSN и Ethernet POWERLINK

4.2.1. Снижение джиттера периода цикла в сети Ethernet POWERLINK при использовании ведущего устройства на основе операционной системы Linux

4.2.2. Аппаратно-программное обеспечение ПЛИС для точной взаимной синхронизации в сетях Ethernet TSN

4.3. Метод точной взаимной синхронизации при помощи беспроводных сетей стандарта IEEE

4.3.1. Метод синхронизации интегрированных микросхем беспроводной связи и ПЛИС

4.3.2. Метод беспроводной синхронизации устройств в сетях IEEE802

4.3.3. Процедура фильтрации событий синхронизации

4.3.4. Аппаратно-программное обеспечение ПЛИС для беспроводной синхронизации

4.3.5. Экспериментальная апробация предложенного метода беспроводной синхронизации

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

4.4.1. Основы новой архитектуры аппаратно-программного обеспечения системы управления модульного реконфигурируемого робота

4.4.2. Интеллектуальный концентратор для сетей Ethernet POWERLINK

4.4.3. Реализация распределенных вычислений

4.5. Выводы

5. Примеры внедрения разработанной методологии

5.2. Распределённый робототехнический комплекс для передачи информации по

оптическому каналу связи вне прямой видимости

5.2. Система управления малоразмерного модульного реконфигурируемого

мобильного робота

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

контроля

5.4. Реализация систем промышленной связи реального времени

5.4.1. Устройство сопряжения ультразвуковой навигационной системы MarvelMind и системы управления промышленного робота

5.4.2. Кросс-коммутатор для сопряжения элементов системы управления и цифровых двойников робототехнических комплексов

5.4.3. Информационно-измерительная система автономного регистратора для работы в условиях высокоширотной Арктики

5.4.4. Унифицированный блок управления источниками питания с интерфейсом Ethernet POWERLINK

5.5 Система точной беспроводной синхронизации навесного оборудования малоразмерных беспилотных летательных аппаратов

5.6. Выводы

Заключение

Список сокращений

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

Приложение 1. Акты о внедрении результатов диссертационной работы

Приложение 2. Сертификат соответствия международному стандарту разработанного ядра ПЛИС для реализации подчинённого устройства Ethernet POWERLINK

Рекомендованный список диссертаций по специальности «Элементы и устройства вычислительной техники и систем управления», 05.13.05 шифр ВАК

Введение диссертации (часть автореферата) на тему «Методология создания аппаратно-программного обеспечения масштабируемых отказоустойчивых интеллектуальных систем управления робототехнических комплексов»

Введение

В условиях ускорения темпов промышленного развития, высокой конкуренции и, как следствие, стремительного сокращения времени выхода устройств на рынок возникает острая необходимость в оптимизации процесса разработки. Сроки в 2-3 года, считавшиеся ранее обычными для проектирования и создания систем управления, на сегодняшний день являются неприемлемыми. Ответом на этот вызов стало появление и внедрение новых гибких методологий ведения проектов, основанных на Scrum и Agile [1-5], вместо традиционной каскадной методологии [2], применявшейся ранее. Данные методологии предполагают переход от предварительного планирования всех аспектов будущего продукта с последующим их воплощением к итерационной разработке. Первой итерацией является создание минимально жизнеспособного продукта [5]. Под данным термином понимается продукт, обладающий минимальным набором функций, который выпускается на рынок для оценки реального спроса и фактических потребностей потенциальных потребителей. На последующих итерациях происходит доработка и масштабирование минимально жизнеспособного продукта с наделением его новыми функциями. Ключевым отличием новых гибких методологий от применявшихся ранее является отсутствие как единого этапа проектирования применительно к окончательному продукту, так и отсутствие и самого понятия окончательного продукта (рис. 1).

f \ Анализ V У (Проектирование) (Разработка J f \ ( \ ^Тестирование J (^Внедрение Окончательный продукт

а)

б)

- Время

Минимально жизнеспособный продукт (версия 1)

Продукт версии 2 с улучшенным функционалом

Продукт версии 3 с улучшенным функционалом

f N f N f N f N f N

Анализ Проектирование Разработка Тестирование Внедрение

ч.__' ч_у___'__У V___J

Рис. 1. Стадии развития продукта (а) при использовании традиционной каскадной методологии и (б) гибких методологий проектирования, основанных на Scrum и Agile

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

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

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

На сегодняшний день удачные пути для разрешения этого компромисса нашли в разработке программного обеспечения, что и объясняет наибольшее распространение гибких методологий ведения проектов, основанных на Scrum и Agile, именно в этой области [6, 7]. Современная разработка программного обеспечения в подавляющем большинстве случае происходит не с нуля, а на основе так называемых фреймворков: набора инструментов и библиотек программного кода, позволяющих в короткие сроки создавать новые программные продукты в той или иной предметной области.

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

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

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

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

Внедрение модульных принципов разработки делает создание аппаратного обеспечения более гибким, но не решает всех существующих проблем. В подавляющем большинстве случаев под модулем системы управления понимается законченное устройство (сервопривод, блок ввода-вывода, логический контроллер), которое объединяется с остальными компонентами при помощи информационной сети, реализованной, как правило, в виде той или иной полевой шины. Каждый модуль имеет свой состав функций и реализующий его набор печатных плат, который может быть изменён только заменой модуля целиком. Из модулей с одинаковыми функциональными возможностями создаются типоряды, позволяющие в процессе масштабирования заменить вычислительное устройство на более мощное или при необходимости добавить дополнительный сервопривод. Таким образом, модуль становится минимальной единицей масштабирования системы: его можно заменить, убрать, добавить, но сами функции аппаратного обеспечения этого модуля изменить нельзя.

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

Одним из основных направлений развития современной робототехники является применение алгоритмов интеллектуального управления [17-19], которое делится на три уровня: стратегический, тактический и исполнительный. С точки зрения аппаратного обеспечения наибольшим уровнем абстракции обладают алгоритмы стратегического уровня. Для их исполнения могут быть задействованы не только вычислительные устройства самого робота, но и дополнительные, расположенные в облаке [20, 21]. Алгоритмы тактического уровня используются для непосредственного формирования траекторий перемещения элементов робототехнического комплекса. Они, как правило, реализуются на центральном бортовом вычислителе в виде программного обеспечения и могут быть абстрагированы от аппаратного обеспечения операционной системой. Наибольшую сложность составляет реализация алгоритмов интеллектуального управления исполнительного уровня, так как, с одной стороны, этот уровень предъявляет наиболее высокие требования к частоте обработки информации и формирования управляющего воздействия, а с другой стороны, данные алгоритмы

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

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

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

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

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

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

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

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

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

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

Предметом исследования являются: архитектура аппаратно-программного обеспечения масштабируемых отказоустойчивых интеллектуальных систем управления робототехническими комплексами; модели масштабирования аппаратно-программного обеспечения элементов робототехнических систем; модели информационного обмена между элементами систем управления; методы реализации элементов устройств управления на отечественной элементной базе; методы реализации элементов систем управления на базе программируемых логических интегральных схем (ПЛИС) типа «программируемая пользователем вентильная матрица»; методы аппаратной реализации базовых технологий интеллектуального управления; методы автоматической реконфигурации аппаратно-программного обеспечения систем управления; отказоустойчивые информационные сети; методы взаимной синхронизации устройств управления, в том числе по беспроводным сетям.

Методы исследования: теория автоматического управления, математическое моделирование, статистический анализ, анализ видов и

последствий отказов, компьютерное моделирование, анализ результатов синтеза аппаратно-программного обеспечения ПЛИС, экспериментальные исследования.

1. Обзор и анализ систем управления робототехнических комплексов различного масштаба и назначения

На сегодняшний день в робототехнике не существует единой всеобщей классификации, что связано с огромной номенклатурой разрабатываемых и производимых изделий по всему миру. Оставляя за пределами данного исследования нанороботы [22] и биороботы [23], современные робототехнические комплексы могут иметь размеры от десятков миллиметров до нескольких метров и могут быть предназначены для работы в различных отраслях: от машиностроения до космических исследований. На основе анализа широкого спектра работ [24-28], так и или иначе затрагивающих вопросы классификации в робототехнике, можно выделить три наиболее крупных класса по области применения: промышленная, сервисная и экстремальная робототехника. Каждый из этих классов можно разделить на мобильные и манипуляционные роботы. Мобильные роботы, в свою очередь, подразделяют на воздушные, наземные, морские и разносредные [24].

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

1.1. Промышленные роботы

1.1.1. Манипуляционные промышленные роботы

Промышленные роботы — это самый распространённый [25] класс в робототехнике. Существенную его часть составляют манипуляционные роботы (рис. 2). Также к этому классу можно отнести современные многокоординатные станки и обрабатывающие центры с ЧПУ.

Системы управления таких роботов, как правило, имеют схожую структуру [11, 29-42], которая в обобщённом виде представлена на рис. 3. Для управления отдельными степенями подвижности используются промышленные сервоприводы, на базе которых реализованы регуляторы исполнительного уровня. Сервоприводы подключаются к устройству управления тактического уровня,

которое может быть выполнено на базе программируемого логического контроллера [32] или промышленного компьютера [29].

• ««

а)

б)

в)

Рис. 2. Манипуляционные промышленные роботы (а) ABB IRB 4600 (б) Fanuc M-1

(в) Comau Rebel-S

Стратегический уровень

о §

о >а

Sh 3

§ 5 §

>s ar

0 в Ä g 'S ö.

1 4 t §

r

Система оперативного управления производством

Тактический уровень

Устройство управления тактического уровня

а ж

ö CU К S

s 5

3 &

§ о § g

4 §

3 Л £ §

О,

Исполнительный уровень

С Сервопривод 1 ^ У

t—I

Г Л Сервопривод N

Дискретные выходы

Дискретные входы

Система технического зрения

Рис. 3. Обобщённая структурная схема системы управления манипуляционного

промышленного робота

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

реального времени, как на уровне отдельных приводов, так и на уровне формирования траектории движения.

Главной задачей устройства управления тактического уровня является формирование желаемой траектории движения для каждого из сервоприводов с учётом кинематики и динамики робота. Для связи между устройством управления тактического уровня, сервоприводами и системой очувствления используется одна из стандартизированных промышленных полевых шин на базе RS485, CAN или Ethernet, работающая в режиме реального времени. При этом стоит отметит, что для промышленной элементной базы в целом и для промышленной робототехники в частности характерна глубокая стандартизация интерфейсов информационного обмена, как на физическому уровне, так и на уровне обмена данными. При этом сами тексты стандартов или полностью открыты или доступны для участников отраслевых сообществ [37].

Для задания траектории движения рабочего органа робота используются внешние сетевые интерфейсы или технологические программы, реализованные на одном из задачно-ориентированных языков программирования (ARPS, RAPID, KRL и др.) или в форме G-кодов. В последнем случае на устройстве управления тактического уровня должна быть реализована система числового программного управления. В подавляющем большинстве случаев на устройстве управления тактического уровня используется операционная система для абстрагирования программного обеспечения от конкретной элементной базы. Чаще всего в качестве операционной системы используется система реального времени VxWorks [29, 31, 39-41] и Linux с патчем реального времени [42, 43], реже — операционные системы на базе Windows [36]. Все элементы системы управления, в независимости от габаритов робота, в подавляющем большинстве случаев размещают в отдельном блоке или стойке управления. Как следствие в манипуляционной промышленной робототехнике практически отсутствует миниатюрные элементная база.

Анализирую элементную базу, рассмотренных промышленных роботов, можно отметить, что в ней отсутствуют компоненты нижней ценовой категории. Это связано в первую очередь с тем, что производители и потребители пытаются минимизировать не себестоимость создания роботов, а себестоимость владения ими на всём протяжении жизненного цикла [44, 45]. В тоже время для построения наиболее бюджетных систем предлагается использовать менее стандартизированную элементную базу, которая более характерна для сервисной робототехники [38, 46, 47].

Номенклатура доступных элементов отечественного производства крайне ограничена. Она в первую очередь представлена системами ЧПУ и соответствующими им линейками сервоприводов [48-51]. Необходимо отметить, что существенная часть производимых в России ЧПУ [50, 51] строится на основе зарубежной микроэлектронике. В то же время существуют работы, демонстрирующие возможность создания ключевых элементов систем управления роботами на отечественной элементной базе (например, [52]), однако даже они предполагают её комбинацию с зарубежными компонентами.

1.1.2. Мобильные промышленные роботы

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

тактического уровня используются программируемые логические контроллеры и промышленные компьютеры [53-55].

Рис. 4. Мобильные промышленные роботы (а) Omron Lynx (б) Divel DAV 4000-GS

(в) KUKA KMP 600

Рис. 5. Обобщённая структурная схема системы управления мобильного промышленного

робота

В качестве сервоприводов и датчиков используются стандартные промышленные решения, а для их соединения с устройством управления тактического уровня активно применяются стандартизированные полевые шины [53-56]. В то же время относительно малое количество датчиков и

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

В качестве стратегического уровня управления у промышленных роботов выступает система оперативного управления производством (MES) [59-61] в случае станков с числовым программным управлением и манипуляционных роботов, и системы автоматического управления складом (WMS) — в случае промышленных мобильных роботов [62-64]. Связь с системами WMS и MES осуществляется по проводным и беспроводным каналам связи путём формирования задачи для тактического уровня (выбора требуемой технологической программы или маршрута движения к целевой точке). Режим реального времени в таких каналах связи не требуется. В качестве канала передачи данных, как правило, используется Ethernet для проводных и IEEE 802.11 или IEEE802.15.1 — для беспроводных сетей. В то же время исследователи ищут способы снижения централизации промышленных робототехнических систем и предлагают пути переноса части функций стратегического уровня непосредственно на сами роботы [65, 66].

1.1.3. Интеллектуальное и групповое управление в промышленной робототехнике

Похожие диссертационные работы по специальности «Элементы и устройства вычислительной техники и систем управления», 05.13.05 шифр ВАК

Список литературы диссертационного исследования доктор наук Романов Алексей Михайлович, 2021 год

Источник питания

Octave

^-%

Программное обеспечение для генерации кода и автоматической сборки ^ конфигурации ПЛИС ^

-"N

Программное обеспечение для управления экспериментом и анализа его результатов yj

Рис. 58. Структурная схема экспериментального стенда

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

Характеристика Значение

Напряжение питания 24 В

Сопротивление якоря 4.5 Ом

Индуктивность якоря 0.676 мГн

Коэффициент передачи по моменту 0.071 Нм/A

Коэффициент противо-ЭДС 0.071 В/фад/c)

Момент инерции, приведенный к валу 168.2 гсм2

Электрическая постоянная времени 150 мкс

Механическая постоянная времени 15 мс

Количество меток датчика на 1 оборот 500

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

компьютер под управлением операционной системы Linux с программным обеспечением Octave (рис. 58).

В рамках проведения эксперимента были реализованы и исследованы две системы управления электроприводом по положению на базе ПИД-регулятора (рис. 59, а) и на базе нечёткого регулятора предложенной в данной работе структуры (рис. 59, б).

Оба варианта системы управления (рис. 59) были реализованы на базе ИМО, в обоих случаях в качестве траекторного задатчика использовался апериодический фильтр первого порядка с постоянной времени 20 мс, на который подавался ступенчатый сигнал амплитудой 10 рад. Во всех экспериментах использовались одинаковые настройки ПИД-регулятора (табл. 14), а его дифференциальный канал был реализован на базе датчика обратной связи.

a)

0.02 s + 1

Система управления по положения на базе ПИД регулятора

На-

0.02 s + 1

Кп

Ки

S

кд

Выходной

сигма-дельта un 1

модулятор

Инкрементный датчик

Система управления по положения на базе нечеткого регулятора

0.02 s + 1

0.02 s +1

Кп

Ки

S

кд

Выходной

сигма-дельта —> UNI

модулятор

Инкрементный датчик

Рис. 59. Структурные схемы систем управления электроприводом по положению, реализованных в рамках научной работы на базе экспериментального стенда: (а) на базе ПИД-регулятора; (б) на базе нечёткого регулятора

Таблица 14. Параметры ПИД-регулятора, использованные в процессе эксперимента

Параметр регулятора Значение

Коэффициент пропорционального звена (Кп) 78.57 В/рад

Коэффициент интегрального звена (Ки) 681.10 В/рад/с

Коэффициент дифференциального звена (Кд) 1.389 В/рад-с

Для каждого варианта системы управления (рис. 59) был поставлен идентичный эксперимент, в ходе которого на траекторный задатчик подавалось ступенчатое воздействие амплитудой 10 рад, а на 500 мс эксперимента создавалось возмущение амплитудой 200 мНм. В процессе эксперимента оценивалось время регулирования, перерегулирование, время и степень компенсации возмущения.

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

На начальном этапе экспериментов оба регулятора отстают от траектории, формируемой траекторным задатчиком на базе апериодического звена. Это связано с тем, что данная траектория на начальном участке не выполнима для используемого исполнительного двигателя при напряжении питания в 24 В из-за слишком высокой скорости. Однако, как только требуемая скорость падает до допустимых значений, интеллектуальный регулятор быстро подстраивается под задающую траекторию, в то время, как ПИД регулятор продолжает движение с максимальной скоростью, что приводит к существенному перерегулированию.

Анализ ресурсоёмкости синтезированного аппаратно-программного обеспечения ПЛИС (рис. 60) показывает, что суммарная ресурсоёмкость интеллектуального регулятора составила 2812 логических ячеек или около 28% используемой ПЛИС 5576ХС4Т. Из них более чем 1700 ячеек были заняты для реализации ПИД регулятора, сумматоров обратной связи и траекторных

задатчиков по скорости и положению. По результатам синтеза, транспортные задержки не превысили 25 нс, что позволяет работать на ПЛИС, тактируемой частотой до 40 МГц.

Положение, рад. ю

Положение, рад.

/

/

/

1

1 ПИП пат пат« 1П

ипн рб1 улп ■ им Нечеткий+ПИД регулятор Апериодическое звено с постоянной времени 20 мс

О 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0 0.1 02 03 04 0.5 06 07 0.8 09 1

Время, с Время, с

Характеристики реализации на ПЛИС и БМК

НР пид Итого

Требуемые ресурсы 10881_Е 17241_Е 28121_Е

ПЛИС 5576ХС4Т (200к) 10,9% 1 7,3% 28.2%

ПЛИС 5576ХС6Т (50 к) 37,7% 60% 97,7%

БМК 5521 (75к+) ~18 500 э.в. -30 000 э.в. -48 500 э.в.

Частота работы 40 МГц

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

Экстраполируя полученные результаты синтеза на другие микросхемы серии ВЗПП, можно сделать вывод, что данный регулятор мог бы быть реализован и на отечественных микросхемах с меньшей логической ёмкостью, в том числе на ПЛИС 5576XC6T.

Оценка требуемого количества ресурсов БМК осуществлялась на основе результатов синтеза для ПЛИС 5576ХС4Т (рис. 60) и данных о логической ёмкости этой ПЛИС, выраженной в эквивалентных вентилях. Данный способ оценки, являясь безусловно грубым, тем не менее, позволяет оценить порядок требуемого объёма ресурсов БМК. Так, в базисе ПЛИС 5576ХС4Т разработанный

интеллектуальный регулятор потребовал примерно 48 500 эквивалентных вентилей. Заложив дополнительный запас на различия в архитектуре ПЛИС серии 5576 и БМК серии 5521, можно говорить о том, что данная система управления реализуема на БМК указанной серии ёмкостью от 75 000 эквивалентных вентилей.

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

3.3. Метод ресурсоэффективной реализации матричных вычислений в устройствах управления на базе ПЛИС

В теории управления активно используется матричная форма записи систем дифференциальных уравнений, описывающих те или иные динамические процессы для синтеза и анализа различных элементов систем управления, имеющих много входов и много выходов [409]. В общем случае синтезированные таким образом регуляторы или наблюдатели необязательно реализовывать с использованием именно матричных вычислений. Часто результаты синтеза могут быть в конечном счёте представлены в виде совокупности непрерывных передаточных функций, охваченных системой обратных связей. В таком виде они просто и эффективно реализуются при помощи ИМО. При этом речь идёт, в том числе, о достаточно сложных нелинейных алгоритмах. Так, в работе [388] автором была продемонстрирована возможность реализации при помощи ИМО нелинейного наблюдателя Люенбергера пятого порядка для оценки составляющих вектора потокосцепления асинхронного двигателя. Изначально, наблюдатель был синтезирован в матричной форме, однако впоследствии, на её основе была построена структурная схема, состоящая из непрерывных интеграторов, умножителей и сумматоров, которая и была в конечном счёте реализована при помощи базовых блоков ИМО, описанных в [365]. Аналогичным образом могут

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

При этом, существует большой класс элементов систем управления, представление которых в непрерывной или квазинепрерывной форме если не невозможно, то крайне затруднительно. Яркими представителями систем такого типа являются нелинейные формы фильтра Калмана: расширенный [410] и сигма-точечный [411]. Для этих фильтров характерен существенный рост требований к вычислительной точности при увеличении их частоты расчёта, что делает невыгодным использование мегагерцовых частот, которые характерны для ИМО. По аналогии с методами реализации интеллектуальных регуляторов, описанных в предыдущем параграфе, для выполнения дискретных расчётов на базе ИМО возможно использование дополнительных демодуляторов. Однако в случае нелинейной Калмановской фильтрации — уже для фильтров выше 4 порядка количество необходимых демодуляторов будет измеряться десятками. При этом точность расчётов, которая является критическим параметром для фильтра Калмана, будет зависеть от соотношения периода ИП и окна применяемого усредняющего фильтра. При этом, например, для частоты ИП 50 МГц точность вычислений в 16 бит достижима только для фильтров, рассчитываемых с частотой менее 1 кГц. В условиях же существенно меньшей по сравнению с частотой тактирования ПЛИС частоты вычислений теряется смысл в полностью параллельной аппаратной реализации всех математических операций, что является обязательным условием применения ИМО.

В то же время, нелинейная Калмановская фильтрация крайне активно применяется в системах управления роботами как на исполнительном, так и на

более высоких уровнях систем управления, являясь частью алгоритмов управления двигателями [388], навигации [412], слежения за подвижными объектами [391]. Это делает актуальным поиск эффективных методов реализации Калмановской фильтрации на базе ПЛИС.

Наиболее простым способом является использование софт-процессоров общего назначения и набора программных библиотек для организации матричных вычислений. Однако производительность арифметическо-логического устройства (АЛУ) таких процессоров не позволит обеспечить достаточную производительность даже на большинстве зарубежных ПЛИС бюджетных серий, не говоря уже об их отечественных аналогах. Так, с учётом множества оптимизаций на базе микроконтроллера Freescale МРС555, оснащённого аппаратным блоком вычислений с плавающей точкой и тактируемого генератором 40 МГц, в работе [413] удалось достичь частоты расчёта расширенного фильтра Калмана пятого порядка не более 1 кГц. При этом аналогичные этим микроконтроллерам софт-процессоры будут иметь меньшую производительность [346].

Известные решения модулей аппаратного ускорения матричных вычислений [269, 414-416] хоть и показывают высокую производительность, но и требуют для своей реализации сотни аппаратных умножителей и десятки тысяч логических ячеек, делая фактически невозможной их реализацию на базе подавляющего большинства отечественных ПЛИС. Главный причиной является то, что эти модули рассчитаны на обеспечение предельной производительности при работе матрицами большого и сверх большого размера. Это оправдано при обработке изображений или радиосигналов, но не в системах управления роботами, где при реализации Калмановской фильтрации размер матриц редко превышает 9x9. В результате, предлагаемые в [269, 414-416] алгоритмы ускорения вычислений и их аналоги не дают существенного преимущества производительности в задачах управления, но при этом требуют для реализации существенное количество ресурсов ПЛИС.

В связи с отсутствием готовых ядер, удовлетворяющих требованиям, предъявляемым системами управления исполнительного уровня роботов и робототехнических комплексов, было принято решение разработать новую модульную архитектуру для выполнения матричных операций на базе ПЛИС. При её проектировании были учтены ограничения по функциональности и ресурсоёмкости, связанные с использованием отечественных ПЛИС, а также бюджетных ПЛИС зарубежного производства. Впервые данная архитектура было описана в работах автора [224, 385].

Основу разработанной архитектуры составляет набор базовых модулей для создания специализированного матричного сопроцессора (рис. 61). Он включает в себя блоки памяти, блоки матричных и скалярных операций, элементы, необходимые для загрузки/выгрузки операндов и т.д.

Линия А

Память матриц со о

Блок памяти АВ О а х 3 со и о X ш

Он о и

Блок памяти СО о ей £ а £

Линия В

Линия С

Линия Б

к

к к

ей 03

о о.

к

к о к

о Я я

а.

н

а а о

з

I

Линия А

Блок наложения шаблона

Линия В

Блок наложения шаблона

Линия С

Линия Б

1

Матричные математические операции

АЛУ

Скалярные математические операции

«

к

X о и к

ей С

о.

н о

к

1-4

Рис. 61. Новая архитектура матричного сопроцессора на базе ПЛИС

Для определения порядка выполнения матричных операций предполагается использовать конечный автомат или модифицированное процессорное ядро Л, предложенное в предыдущем параграфе. Конечные автоматы наилучшим образом подходят для специализированных вычислительных ядер, которые не меняют алгоритм вычислений в процессе работы (например, всевозможные наблюдатели на базе фильтра Калмана [388]), а софт-процессоры для ускорения расчётов в рамках распределенных вычислительных систем на базе ПЛИС [391].

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

Для интеграции таких операций в общий тракт ИМО предполагается использоваться тот же подход, что ранее применялся для реализации экспертных регуляторов: демодуляция входных сигналов, модуляция выходных сигналов и обеспечение заданного цикла расчёта при помощи внешнего генератора сигнала сброса (рис. 62).

Такой подход позволяет успешно создавать системы замкнутого управления электроприводом на базе ИМО, имеющие в контуре фильтры Калмана, построенные на базе матричного сопроцессора предложенной архитектуры [388]. В следующих разделах данная архитектура будет рассмотрена более подробно, включая требования, на основе которых она была разработана, описания отдельных ядер ПЛИС, входящих в её состав, а также оценены её производительность и ресурсоёмкость схемотехнических решений на её основе в сравнении с известными аналогами.

Рис. 62. Структурная схема блока Калмановской фильтрации

3.3.1. Требования, предъявляемые к реализации к новой архитектуры матричного сопроцессора

Основными требованиями к разрабатываемому сопроцессору являются функциональная возможность реализации Калмановоской фильтрации; производительность, позволяющая рассчитывать наблюдатели потокосцепления 5 порядка с частотой не менее 100 кГц [388]; а также малая ресурсоёмкость, позволяющая синтезировать сопроцессор для отечественных ПЛИС и зарубежных ПЛИС бюджетных серий, таких как Xilinx Spartan 3E.

Функциональная возможность реализации Калмановоской фильтрации, в первую очередь, определяет состав необходимых операций АЛУ сопроцессора. Так, для вычисления классического и расширенного фильтров Калмана [410] используются четыре матричные операции: умножение, сложение, инверсия и транспонирование. В расчёте сигма-точечного фильтра Калмана также участвует разложение Холецкого [411]. Таким образом, этот набор из пяти операций можно зафиксировать как минимально необходимый набор функций АЛУ матричного сопроцессора.

Специфической особенностью матричных вычислений в задачах управления является относительно малый размер операндов: в задачах слежения за динамическими объектами и траекторных задатчиках применяются фильтры с вектором состояния длиной 3 и максимальным размером матриц 3x3 [391]. В бездатчиковых системах управления электроприводом переменного тока применяются фильтры с вектором состояния длиной 4 и 5 элементов, с максимальным размером не более 5x5 [388]. В задачах комплексирования данных в навигационных системах применяются фильтры, использующие матрицы размером до 15x15 [417]. Принимая во внимание общепринятую двоичную систему адресации памяти, максимальный целевой размер матричных операндов был округлен до ближайшей степени 2 и принят 16x16.

Как отмечалось выше, известные методы реализации матричных вычислений на базе ПЛИС оптимизируются под матрицы существенно большого размера, что приводит к большим затратам, как логических ресурсов, так и специализированных аппаратных блоков: умножителей и блочной памяти. Например, один только блок инверсии, предложенный в [414], требует более 9000 логических ячеек и 22 аппаратных умножителя 18x18, что уже превышает возможности одной из наиболее современных отечественных ПЛИС 5578ТС024. Таким образом, для обеспечения требуемой производительности необходимо найти новые пути, которые будут обеспечивать малую ресурсоёмкость. В данной работе в качестве основных подходов к увеличению производительности

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

3.3.2 Новая архитектура матричного сопроцессора для реализации задач управления

Структура матричного сопроцессора

Ключевым новым элементом разработанной архитектуры (рис. 61) является сдвоенная матричная память, которая состоит из двух одинаковых блоков двухпортовой памяти ЛБ и CD и коммутатора. Каждый из блоков памяти может включать в себя 2к матричных переменных. Каждая матричная переменная представляет из себя квадратную матрицу порядка 2Ь, при этом операции могут выполняться как над всей матричной переменной, так и над любой её частью. Ь и к являются параметрами и выбираются инженером исходя из требований конкретной задачи. В том числе, Ь может превышать 4, однако в этом случае, начиная с определённой величины, рассматриваемая архитектура будет проигрывать другим ранее известным методам (например, [269, 414-416]), изначально ориентированным на работу с матрицами большого и неограниченного размера.

Матричная память имеет 4 независимых линии доступа. Линии Л, Б используются для доступа к блоку памяти ЛБ, а С, D — для доступа к блоку CD. По внешней команде, получаемой через регистры управления, коммутатор может менять линии доступа местам, в результате чего через Л и Б организуется доступ к блоку памяти CD, а через линии С, D — доступ к блоку памяти ЛБ. Для целевого порядка матриц (не выше 16) каждый блок матричной памяти может быть реализован при помощи одного блока двухпортовой памяти, которая входит

в базовые элементы большинства современных ПЛИС, включая серию 5578, производимую ВЗПП-С. При этом предложенная схема работы с памятью полностью соответствует ограничениям отечественных ПЛИС 5578, описанным в [402], и синтезируемых для этой серии.

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

>/ X

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

вычитываются операнды

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

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

Для повышения быстродействия доступа к отдельным ячейкам матричной памяти реализующая её блочная память ПЛИС адресуется непосредственно индексом матричной переменной в блоке памяти в сочетании с номерами столбца и строки элемента матричной переменной. При этом, если необходимый элемент находится за пределами матричной переменной, то выборка адреса производится по модулю максимального размера элементов матричной памяти (рис. 64).

Линии A,B,C,D матричной памяти проходят через блоки транспонирования (рис. 61), которые по команде, переданной через регистры управления, могут менять местами номера строки и столбца в адресе запрашиваемого элемента памяти. Таким образом, транспонирование выполняется параллельно с другой матричной операцией (например, сложением или умножением), увеличивая время её расчёта всего на 1 такт вне зависимости от размера матрицы и не требуя дополнительной памяти для хранения промежуточного результата. В случае же, если требуется произвести транспонирование как отдельную операцию, то она может быть совмещена, например, со сложением с нулевой матрицей.

Матричная переменная 00 00 01 10 11

Адрес в памяти ПЛИС 00 10 11-

Блок двухпортовой памяти

Адрес матричной переменной

Адрес столбца

Адрес строки

Рис. 64. Адресация матричных переменных блочной памяти ПЛИС

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

создании алгоритмов проведения вычислений с использованием данного матричного сопроцессора.

Помимо блоков транспонирования, линии Л и Б проходят через блоки наложения шаблона, которые работают следующим образом. Все элементы матричной переменной делятся на основе своих индексов на 6 групп (рис. 65): лежащие на главной диагонали, ниже главной диагонали, выше главной диагонали, на побочной диагонали, выше побочной диагонали и ниже побочной диагонали. На вход каждого блока поступает шаблон, представляющий из себя 7-битный код. Старший бит отвечает за то, для каких групп определён шаблон. Если он равен 0, то шаблон будет применяться к первым трём группам элементов, определенным относительно главной диагонали, если 1 — то к последним трём группам, определенным относительно побочной диагонали. Следующие 6 бит включают последовательно три двухбитовых кода, определяющих, какие выходные значения будут сформированы для элементов каждой группы. Код 00 соответствует оригинальному значению поступившему на вход блока, код 10 соответствует 0, код 01 соответствует 1, а код 11 — -1. В результате, если применяется нулевой шаблон, то на выход матричной операции поступает переменная, вычитанная из матричной памяти, а если, например, применяется шаблон 0 00 10 10, то уже — диагональная матрица, сформированная на основе выбранной матричной переменной. Другими примерами стандартных шаблонов могут быть 0 10 10 10 — для формирования нулевой матрицы, 0 01 10 10 — для формирования единичной матрицы и 0 00 10 00 — для формирования верхней треугольной матрицы. Работа блока наложения шаблона проиллюстрирована на рис. 65.

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

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

Я=0

00

01

10 11

Я=1

Я СС ВВ АА

Кодирование значений АА, ВВ, СС:

00 - исходный элемент матрицы

01 - принудительно установить 1

10 - принудительно установить 0

11 - принудительно установить -1

Исходная матрица

После наложения шаблона 0 00 10 10

После наложения шаблона 1 11 01 00

00 01 10 11 00 01 10 11 00 01 10 11

00 1 2 3 4 00 1 0 0 0 00 1 1 1 -1

01 5 6 7 8 01 0 6 0 0 01 1 1 -1 8

10 9 10 11 12 10 0 0 11 0 10 1 -1 11 12

11 13 14 15 16 11 0 0 0 16 и -1 14 15 16

Рис. 65. Принцип действия блока наложения шаблона

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

1. Конвейеризованные сумматоры — 2 шт.

2. Конвейеризованные умножители — 2 шт.

3. Блок деления — 1 шт.

4. Блок извлечения квадратного корня — 1 шт.

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

1. Ядро поэлементных матричных операций сложения и умножения (matrix_simple_ops).

2. Ядро матричного умножения (таМх тиЩ.

3. Ядро инверсии матрицы произвольного размера (таМх_ту).

4. Ядро разложения Холецкого (таМх_^о1).

5. Ядро инверсии матрицы 2 порядка (таМх_ту_2х2).

6. Ядро для выполнения неконвейеризованных поэлементных матричных операций (matrix_long_ops).

Ядро таМх_ту_2х2 дублирует таМх ту, однако это оправдано тем, что частный случай инверсии матриц 2 порядка может быть реализован с куда меньшими вычислительными затратами, чем требуется в общем случае. Наконец, ядро matrix_long_ops было добавлено в АЛУ как опциональное — для выполнения поэлементных операций деления и извлечения квадратного корня, так как необходимые скалярные операции все равно присутствуют в АЛУ для обеспечения работы ядер 3-5. Такие операции могут быть востребованы на шаге моделирования для нелинейных наблюдателей.

Перечисленные ниже ядра матричных операций будут рассмотрены более подробно с описанием особенностей их применения для проведения вычислений.

Ядро поэлементных матричных операций сложения и умножения

(matrix_simple_ops).

Ядро matrix_simple_ops предназначено для реализации достаточно широкого набора поэлементных операций:

1. Сложение матриц

2. Поэлементное умножение двух матриц

3. Умножение матрицы на константу

4. Вычисление линейной комбинации двух матриц

5. Копирование матриц между блоками памяти

6. Формирование специальных матриц (совместно с блоками наложения шаблона).

Принцип работ ядра matrix_simple_ops проиллюстрирован на рис. 66.

Рис. 66. Принцип работы ядра matrix_simple_ops

Данное ядро всегда получает аргументы по линиям A и B, а записывает результат — по линиям C и D. В качестве входных данных matrix_simple_ops использует следующие входные параметры:

тА — индекс переменной в матричной памяти, доступной по линии A. тв — индекс переменной в матричной памяти, доступной по линии B. тс — индекс переменной в матричной памяти, доступной по линии С mD — индекс переменной в матричной памяти, доступной по линии D. Жа — количество столбцов в области матричной переменной, доступной по линии A (подматрицы A) над которой будет произведена операция. На — количество строк подматрицы A. 1а — номер столбца, с которого начинается подматрица A. tA — номер строки, с которой начинается подматрица А. Жв — количество столбцов в подматрице B. Нв — количество строк в подматрице B. 1в — номер столбца, с которого начинается подматрица B. tв — номер строки, с которой начинается подматрица B. 1с — номер столбца, с которого начинается подматрица С tс — номер строки, с которой начинается подматрица С ^ — номер столбца, с которого начинается подматрица D. tD — номер строки, с которой начинается подматрица D. Са — константа, на которую умножается подматрица A. Св — константа, на которую умножается подматрица B. Ог — тип операции.

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

Тип операции Ог представляет собой 6-битный код, который однозначно описывает один из 32-х возможных способов функционирования ядра. Каждый

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

Таблица 15. Описание значения отдельных битов кода типа операции Ot

Номер бита Ot Функционирование ядра при значении бита, равном 0 Функционирование ядра при значении бита, равном 1

0 X = А о В X = СаА

1 Y = А о В Y = Св-В

2 С = X + Y С = X

3 Б = X - Y Б = Y

4 С будет изменено в результате операции С не будет изменено в результате операции

5 Б будет изменено в результате операции Б не будет изменено в результате операции

Для описания операций, выполняемых АЛУ матричного сопроцессора, здесь и далее применены следующие обозначения:

А — подматрица, которая расположена внутри матричной переменной с индексом тА в блоке памяти, доступном по линии А. Левый верхний элемент данной подматрицы имеет индекс /а,?а внутри матричной переменной, а сама подматрица имеет ширину WA и высоту На.

В — подматрица, которая расположена внутри матричной переменной с индексом тв в блоке памяти, доступном по линии В. Левый верхний элемент данной подматрицы имеет индекс /в,?в внутри матричной переменной, а сама подматрица имеет ширину Wв и высоту Нв.

С — подматрица, которая расположена внутри матричной переменной с индексом тс в блоке памяти, доступном по линии А. Левый верхний элемент данной подматрицы имеет индекс /с^с внутри матричной переменной, а сама подматрица имеет ширину Wc и высоту Не. Здесь и далее, параметры Wc и Не задаются только в том случае, если они не могут быть однозначно определены из размеров подматриц А и В для выполняемой матричной операции.

D — подматрица, которая расположена внутри матричной переменной с индексом mD в блоке памяти, доступном по линии В. Левый верхний элемент

данной подматрицы имеет индекс внутри матричной переменной, а сама подматрица имеет ширину WD и высоту Здесь и далее, параметры Жс и Нс задаются только в том случае, если они не могут быть однозначно определены из размеров подматриц А и В для выполняемой матричной операции.

X и Y — промежуточные матрицы, участвующие в расчётах. Они являются математической абстракцией и фактически не хранится в памяти сопроцессора.

Длительность операций составляет тах(ЖАНА,ЖвНв) + N10 тактов задающего генератора, где N10 — количество стадий конвейера ядра таМх ^тр1е_ор1. N10, в свою очередь, равно сумме 4 + NSum + где ^иь — количество стадий конвейера умножителей, а N1ит — количество стадий конвейера сумматоров. Таким образом, минимально достижимое значение N10 = 6. В то же самое время, при выполнении операций копирования и умножения матрицы на число можно подматрицами А и В разделить исходную матрицу на две части и выполнять операцию для каждой из них параллельно. Это позволяет до двух раз сократить слагаемое тах(ЖА-НА,ЖвНв), существенным образом влияющее на длительность вычислений.

Ядро матричного умножения (таМх тиЬ)

Ядро таМх тик предназначено для реализации умножения двух матриц. Принцип работ ядра проиллюстрирован на рис. 67.

Данное ядро всегда получает аргументы по линиям А и В, а записывает результат — по линии С. В качестве входных данных таМх тик использует следующие входные параметры, передаваемые через регистры управления: тА — индекс переменной в матричной памяти, доступной по линии А. тв — индекс переменной в матричной памяти, доступной по линии В. тс — индекс переменной в матричной памяти, доступной по линии С. Жа — количество столбцов подматрицы А. На — количество строк подматрицы А. 1а — номер столбца, с которого начинается подматрица А.

tA — номер строки, с которой начинается подматрица А. Wв — количество столбцов в подматрице В. 1в — номер столбца, с которого начинается подматрица В. tв — номер строки, с которой начинается подматрица В. 1с — номер столбца, с которого начинается подматрица С. tс — номер строки, с которой начинается подматрица С.

Ядро выполняет операцию С = А-В за WA■HA■Wв + N„^1 тактов задающего генератора, где N„1111 — количество стадий конвейера ядра таМхтиЫ. В общем случае ^ик равно сумме 5 + NSum + ^ин, где ^ип — количество стадий конвейера умножителей, а NSum — количество стадий конвейера сумматоров. Таким образом, минимально достижимое значение N„^1 = 7.

Ядро инверсии матрицы произвольного размера (matrix_inv)

Ядро matrix inv предназначено для инвертирования квадратной матрицы. Принцип работы ядра проиллюстрирован на рис. 68.

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

mc — индекс переменной в матричной памяти, доступной по линии C (индексы mc и mD должны совпадать).

mD — индекс переменной в матричной памяти, доступной по линии D (индексы mc и mD должны совпадать)..

WA — ширина и высота инвертируемой области.

^ — номер столбца, с которого в выбранной матричной переменной начинается инвертируемая область.

tc — номер строки, с которой в выбранной матричной переменной начинается инвертируемая область

Инверсия выполняется итерационным алгоритмом, описанным в [418]. Результат записывается в ту же область матричной памяти, в которой

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

Ядро инверсии матрицы 2 порядка (таМх^т_2х2)

Ядро таМх^т_2х2 предназначено для инвертирования квадратной матрицы размера 2x2. Принцип работы ядра и его входы/выходы полностью совпадают с ранее рассмотренным ядром таМх^т (рис. 68), что делает их взаимозаменяемыми для матриц второго порядка (вход WA при использовании таМх^т_2х2 игнорируется, а ширина инвертируемой области принимается равной 2). Главное отличие состоит в том, что операции инверсии и поиска определителя осуществляются с использованием выражений (40) и (41).

1 = а Ь -1= 1 ' d — Ь

. с d ^ det А —с а

detA=ad-Ьс (41)

Это позволяет обеспечить фиксированное время выполнения операции, равное 15+Nd1v тактам задающего генератора, где N4™ — длительность скалярной инверсии одного числа.

Ядро разложения Холецкого (таМх_^о1)

Ядро таМх_с^1 предназначено для выполнения декомпозиции Холецкого. Принцип работы ядра проиллюстрирован на рис. 69.

Данное ядро использует только линии C и D, при этом индексы матричной переменной, выбранной по каждой из линий, должны совпадать. В качестве входных данных таМх_с^1 использует следующие входные параметры, передаваемые через регистры управления:

тс — индекс переменной в матричной памяти, доступной по линии C (индексы тс и mD должны совпадать).

mD — индекс переменной в матричной памяти, доступной по линии D (индексы тс и mD должны совпадать).

WA — ширина и высота области, над которой производится декомпозиция.

1с — номер столбца, с которого в выбранной матричной переменной начинается область, над которой производится декомпозиция.

Хс — номер строки, с которой в выбранной матричной переменной начинается над которой производится декомпозиция.

Декомпозиция Холецкого выполняется итерационным алгоритмом, описанным в [419]. Результат записывается в ту же область матричной памяти, в которой располагалась исходная матрица. При этом в ходе выполнения расчётов ядро таХпх_^о1 заведомо предполагает, что входная матрица симметричная и положительно определённая, не осуществляя дополнительных проверок и подразумевая, что такие проверки при необходимости могут быть проведены ранее управляющим конечным автоматом или софт-процессором. Также стоит отметить, что таХпх_^о1 работает только с элементами, расположенными выше и на главной диагонали области, переданной ему матричной переменной, никак не изменяя элементы ниже главной диагонали. Если в результате вычислений необходимо получить именно верхнетреугольную матрицу, то после выполнения декомпозиции Холецкого ядром таХпх_^о1, её результат можно скопировать в

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

Ядро для выполнения неконвейеризованных поэлементных матричных операций

(matrix_long_ops)

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

Блок памяти АВ

Матричная переменная тА 00 01 10 11

00 ¡а>'а

01 на)

10 гл

11

Поэлементные

математические

операции

( \ 1-1

\]а

V. >

Г 1 1

а

V У

Блок памяти СБ

Матричная переменная та 00 01 10 11

00

НА г

Рис. 70. Принцип работы ядра matrix_long_ops Данное ядро получает аргументы по линии A, а записывает результат —по линии D, что позволяет использовать совместно с ним блоки транспонирования и наложения шаблона. В качестве входных данных matrix_long_ops использует следующие входные параметры, передаваемые через регистры управления: mA — индекс переменной в матричной памяти, доступной по линии A. mD — индекс переменной в матричной памяти, доступной по линии D. WA — количество столбцов подматрицы A. На — количество строк подматрицы A. и — номер столбца, с которого начинается подматрица A.

tA — номер строки, с которой начинается подматрица А.

^ — номер столбца, с которого начинается подматрица результата в памяти CD.

tD — номер строки, с которой начинается подматрица результата в памяти CD.

Ядро выполняет вычисления без использования конвейера, поэтому время расчёта результата прямо пропорционально количеству элементов входного матричного операнда и длительности одной операции. Суть данного ядра — не обеспечить максимальную производительность, а позволить использовать для выполнения поэлементных операций блоки деления и извлечения квадратного корня, которые уже присутствуют в АЛУ и предназначены для поддержки работы других ядер (matrix_inv, matrix_inv_2x2, matrix_chol). В случае отсутствия необходимости данное ядро, как и любое из вышеописанных, может быть исключено из АЛУ матричного сопроцессора при помощи соответствующего параметра, определяемого на этапе синтеза аппаратно-программного обеспечения ПЛИС.

Пример организации вычислений при помощи матричного сопроцессора

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

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

Рассмотрим пример организации расчёта фильтра Калмана разработанный и впервые описанный Волковой М.А в [389, 391], предназначенного для оценки скорости и ускорения динамического объекта при помощи матричного сопроцессора, предложенного в данной работе. Данный пример демонстрирует, как правильный выбор структуры размещения переменных в матричной памяти и порядка выполнения операций может обеспечить минимальное количество дополнительных операций, не связанных с вычислениями (например, копирований).

Сперва рассмотрим уравнения фильтра, которые легли в основу реализованного специализированного вычислительного ядра ПЛИС, построенного на основе матричного сопроцессора.

Для оценки перемещения, скорости и ускорения объекта по одной из координат в [389, 391] был использован фильтр Калмана, описываемый выражениями (42)-(52).

Хп =

А =

и \

V п

\а п/

1 Т 0 0 1 Т 0 0 1

(42)

Н=[ 1 0 0 ],

Р 0 = I,

(43)

(44)

(45)

Q=

Т 4 Т з

4 о2 2 о2

ТТ з Т2

2 о22 о2

0 Т о2

0

Т &

о

(46)

R = г, (47)

X п+1=Ахп, (48)

Р п+1=АРпАТ+Q, (49)

Кп+1 = Р п+1Ц ...зд (Рп+1|1,1+R )-1, (50)

Хп + 1 = Хп + 1+ Кп +1 ( 5п + 1 - Хп+1|1,1), (51)

Рп+1=( 1-Кп+1 Н )Рп+1. (52)

В выражениях (42)-(52) использованы следующие обозначения:

хп — вектор состояния на текущий момент времени.

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

A — матрица, определяющая параметры линейной динамической модели в нормальной матричной форме Коши.

Р п+1— предсказание апостериорной ковариационной матрицы ошибок на следующем измерении.

Pn — апостериорная ковариационная матрица ошибок на текущий момент времени.

Q — ковариационная матрица шумов процесса.

R — ковариационная матрица шумов измерений.

K — вектор коэффициентов коррекции фильтра Калмана.

H — матрица наблюдений.

— измеренное положение наблюдаемого объекта в проекции на выбранную ось системы координат.

$ — оценка положения наблюдаемого объекта в проекции на выбранную ось системы координат.

V — оценка скорости наблюдаемого объекта в проекции на выбранную ось системы координат.

а — оценка ускорения наблюдаемого объекта в проекции на выбранную ось системы координат.

Т — период расчёта фильтра.

п — итерация расчёта фильтра

а — уровень шума ускорения (параметр фильтра, определяющий его фильтрующие свойства и зависящий от динамических характеристик наблюдаемого объекта).

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

Р п+1|1 ...3,1 — первый столбец матрицы Р п+1, Р П+1|1Д — первый элемент первого

столбца матрицы Рп+1, а хп+1|1,1 — первый элемент вектора хп+1.

Для реализации данного фильтра был использован матричный сопроцессор, каждый блок матричной памяти которого содержал 4 матричные переменные размером 4x4 (Ь=2, к=2). Для выполнения всех необходимых операций, АЛУ матричного сопроцессора было сконфигурировано со следующим составом ядер матричных операций: matrix_simple_ops, таМх тиЫ и таМхту.

На рис. 71 показано распределение переменных фильтра Калмана в памяти матричного сопроцессора.

1

Блок памяти АВ

у

Ълок памяти СО

хп

1-Кп+ /Я

А

4 Р -

г +

1

1

р„

1 -ч 1 + с: 1 п АР>т?

1

А

-

<2

<

Н

Кп+]($п+гХп+1\1}) \

К п+1 н

. \

(Рп+1\1,1+Ю~

Рис. 71. Распределение переменных в матричной памяти

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