Разработка терминала контроля качества электроэнергии на базе микросхемы DSP TMS320F2812.

Обновление: 12 декабря 2023 г.
DSP (цифровой сигнальный процессор) все чаще используется в современных инженерных приложениях. Для этого есть три основных причины: во-первых, он обладает мощными вычислительными возможностями, способными выполнять различные алгоритмы цифровой обработки сигналов, такие как БПФ и цифровая фильтрация; Во-вторых, основные производители DSP разработали связанные IDE (интегрированные разработки) для своих продуктов. Environment), что делает разработку приложений DSP еще более мощной; в-третьих, он имеет высокую стоимость и абсолютно конкурентоспособен благодаря своим высоким характеристикам и низкой цене.

Компания TI разработала интегрированную среду визуальной разработки CCS (CodeComposerStudio) для DSP компании, а DSP/BIOS является важной частью CCS. По сути, это ядро ​​операционной системы реального времени, основанное на платформе DSP серии TMS320, а также основная часть программного обеспечения реального времени TI. technology-Технология eXpressDSP. DSP/BIOS в основном включает в себя три аспекта: многопоточное ядро, инструмент анализа в реальном времени, библиотеку конфигурации периферийных устройств.

1 Требования к системным функциям

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

В качестве процессорного ядра система выбирает высокопроизводительный DSP-чип TI TMS320F2812, а его скорость обработки 150 MIPS достаточна для удовлетворения требований системы в реальном времени. В соответствии с системными требованиями система разделена на следующие функциональные модули: управляемая самопроверка модуль, модуль выполнения задач сбора, модуль предварительной обработки данных о качестве электроэнергии, операционный модуль анализа качества электроэнергии, модуль хранения данных, модуль связи и модуль взаимодействия человека с компьютером.

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

Появление DSP/BIOS обеспечивает еще один механизм организации функциональных модулей прикладных программ. Он рассматривает каждый функциональный модуль как поток задач. С помощью настраиваемой службы ядра каждый поток задач мультиплексирует ресурсы ЦП в соответствии с приоритетом системного планировщика. Каждый поток задач проходит синхронизацию, связь, обмен данными и т. д. координируются. Этот механизм повышает удобство сопровождения приложения и предоставляет более удобные и расширенные средства повторного тестирования. В соответствии с вышеуказанными характеристиками эта система использует DSP/BIOS в качестве ядра реального времени и на основе этого проектирует всю систему.

На рисунке 1 показана классификация функциональных модулей системы в соответствии с DSP / BIOS.

2 Разработка программного обеспечения на основе DSP / BIOS

2.1 Планирование потока выполнения

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

Потоки с высоким приоритетом могут прерывать потоки с низким приоритетом, а взаимодействия между различными потоками, такие как блокировка, связь и синхронизация, делятся на следующие 4 типа (приоритет от высокого к низкому): Аппаратное прерывание (HWI), Программное прерывание ( SWI), Задача (TSK), Фоновый поток (IDL). В соответствии с функциональными требованиями терминальной системы мониторинга качества электроэнергии подфункциональные модули системы разделены на вышеуказанные 4 типа потоков.

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

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

Основной процесс таков: аналого-цифровой чип собирает данные электросети в реальном времени на определенной частоте, а затем связывается с портом McPSP DSP. DSP получает данные, собранные АЦП, и сохраняет их в определенной области встроенной оперативной памяти для подготовки к работе других потоков. Модуль связи использует RS485 для связи с главным компьютером, который тесно связан с базовым оборудованием системы, а интерфейс SCI самого DSP имеет только FIFO с максимальным количеством слов 16. Если полученные данные не будут обработаны вовремя, данные будут потеряны.

Ниже описаны настройки параметров модуля HWI в DSP/BIOS. Прерывание приема последовательного порта McBSP помещается в позицию HWI_INT6 модуля HWI, а функция ISR ad_rx_isr() прерывания приема заполняется в элементе вызова функции прерывания HWI_INT6; в то же время выберите использование функции планирования HWI DSP/RI-OS при ответе на McBSP. Когда последовательный порт получает прерывание, система автоматически вызовет функцию ad_rx_isr(). Настройка прерывания приема последовательного порта McBSP показана на рисунке 2.

Подобно настройке прерывания приема последовательного порта McBSP, прерывание приема SCIA устанавливается как прерывание приема связи, а его функция ISR scia_rx_isr() заполняется в элементе вызова функции прерывания HWI_INT9. При ответе на прерывание приема система вызывает для обработки функцию scia_rx_isr(). Поток CLK также является одним из потоков аппаратных прерываний HWI. Он обеспечивает привязку ко времени для работы всей системы, предоставляет пользователям метод периодического вызова функций и обеспечивает привязку ко времени для некоторых инструментов оценки кода. Модуль CLK полностью полагается на прерывание по таймеру DSP. TMS320C2812 предоставляет 2 таймера для DSP/BIOS.

Во-вторых, организуйте поток программного прерывания (SWI). Все программные прерывания инициируются посредством вызова API ядра DSP/BIOS. Для облегчения управления в системе для каждого SWI-объекта устанавливается 16-битный почтовый ящик (Mailbox), с помощью которого можно условно запустить соответствующий почтовый ящик. Программное прерывание. Модули подфункций, которые более важны, чем обычные задачи, и происходят часто, могут быть организованы в потоке программного прерывания (SWI). В его подфункциональные модули входят: модуль предварительной обработки данных о качестве электроэнергии, модуль связи (отправка).

Модуль предварительной обработки данных о качестве электроэнергии в основном выполняет последующую обработку результатов аналого-цифрового преобразования. Необходимо предварительно обработать результат аналого-цифрового преобразования. Поскольку АЦП выбирает фиксированную частоту для сбора данных, но частота fo энергосети колеблется, непосредственное выполнение операций БПФ над полученными данными приведет к утечке спектра. Поэтому полученные данные необходимо предварительно обработать. Например, операция БПФ по 1024 точкам выполняется в общей сложности над 1024 данными по 256 точек для каждого из 4 циклов. Предполагая, что средняя частота 4 циклов равна f, разрешение по частоте равно f/4, а результаты операции БПФ равны f/4, 2f/4, 3f/4, f, 5f/4… интенсивность на частоте. Следовательно, когда частота fo электросети изменяется, частота f данных электросети для вычисления БПФ также изменяется соответствующим образом, так что частота f данных электросети перед вычислением БПФ всегда соответствует текущей частоте fo электросети.

Конкретная операция модуля предварительной обработки данных о качестве электроэнергии заключается в интерполяции данных после аналого-цифрового преобразования, а алгоритм интерполяции использует линейную интерполяцию. После проверки при номинальном напряжении погрешность работы БПФ, вызванная алгоритмом линейной интерполяции, находится в пределах 0. В пределах 1‰. Кроме того, еще одной функцией модуля является расчет действующего значения напряжения внутри цикла. Это необходимые данные для расчета колебаний напряжения, а также длительного и кратковременного мерцания. Модуль связи (отправки) отвечает за отправку данных на верхний компьютер. Хотя его требования к реальному времени не высоки, он тесно связан с нижним уровнем аппаратного обеспечения, поэтому устанавливается как поток программного прерывания.

Когда происходит прерывание приема последовательного порта, вызовите функцию scia_rx_isr() для обработки полученной команды данных и отправьте соответствующие данные о качестве электроэнергии в соответствии с соответствующей командой. DSP/BIOS обеспечивает приоритет от 0 до 14 для объекта программного прерывания. В соответствии с важностью вышеуказанного потока приоритет потока обработки данных сбора устанавливается на 14, поток связи с хостом устанавливается на 8, а другие приоритеты зарезервированы для будущих обновлений программного обеспечения.

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

Следовательно, если установлено слишком много аппаратных прерываний или потоков программных прерываний, стек переполнится. По этой причине большинство модулей задач необходимо размещать в потоках задач. Затем запланируйте поток задач (TSK). Как и в большинстве систем реального времени, потоки задач являются основным компонентом всей системы. Функции в потоках задач могут выполняться независимо или параллельно. Модуль управления задачами DSP/BIOS организует работу в соответствии с приоритетом потока задач и завершает преобразование одной задачи в другую посредством функции переключения.

Каждая задача имеет 4 состояния выполнения: выполнение, готовность, блокировка и завершение. Январская миссия создается, и она всегда находится в одном из четырех состояний. DSP/BIOS предоставляет приоритет от -l до 15 для каждого объекта задачи. Задачи будут выполняться в строгом порядке приоритета, задачи с одинаковым приоритетом будут располагаться в порядке выполнения по принципу «первым пришел — первым обслужен». Следует отметить, что при создании потока задачи одновременно необходимо создать выделенный стек, принадлежащий задаче. Стек используется для хранения локальных переменных или дальнейшего вложения вызовов функций.

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

Поток задач расчета гармоник в основном отвечает за выполнение операций БПФ над предварительно обработанными данными о качестве электроэнергии. Операция БПФ в основном состоит из пяти частей: операция преобразования битов, оконная операция, операция «бабочка» на основе 2, операция разделения базы и операция квадратической суммы. Поток задачи расчета колебаний напряжения отвечает за регистрацию колебаний напряжения сети в течение 3 минут. Предыдущий модуль предварительной обработки данных о качестве электроэнергии получил эффективное значение напряжения для каждого цикла.

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

Входной сигнал адаптивной самопроверки проходит через квадратичный демодулятор, полосовую взвешенную фильтрацию, квадратичную фильтрацию нижних частот первого порядка и онлайн-статистическую оценку, чтобы окончательно получить значение мерцания; но этот метод достаточно сложен и трудоемок. Путем упрощения алгоритма получается простой и осуществимый метод расчета: расчет БПФ выполняется для эффективного значения напряжения в течение 256 последовательных циклов, и после серии вычислений, таких как взвешивание, можно получить значение мерцания 12.8 с, а значение мерцания в пределах 10 минут.

Значение может иметь кратковременное мерцание после расчета корреляции, а 12 последовательных кратковременных мерцаний (в течение 2 часов) могут вызывать долговременное мерцание после расчета. После проверки этот алгоритм имеет погрешность в пределах 1‰ по сравнению с алгоритмом мерцания IEC.

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

Наконец, есть фоновый поток (IDL). Фоновый поток (IDL) имеет самый низкий приоритет. Как правило, в него для запуска помещается модуль анализа в реальном времени (TRA), который может выполнять взаимодействие и диагностику приложения DSP в реальном времени во время выполнения приложения. CCS имеет инструменты анализа в реальном времени, такие как диаграмма загрузки ЦП, диаграмма выполнения, управление хост-каналом, запись информации, статистическое наблюдение, панель управления в реальном времени и наблюдение за ядром/объектом. Эта серия функциональных модулей может быть размещена в потоке IDL, с помощью этих инструментов работа всей системы DSP будет понятна с первого взгляда.

2.2 Связь и синхронизация между потоками

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

В среде DSP / BIOS существует три метода связи, а именно связь на основе канала (PIPE), связь на основе потока (SIO) на основе канала и связь на основе канала хоста (HST).

В таблице 1 показаны способы, которыми 4 потока обмениваются данными и достигают синхронизации.

3 Системный анализ и отладка в реальном времени

Накладные расходы самого ядра DSP / BIOS будут влиять на производительность системной программы в реальном времени. По этой причине необходимо оптимизировать ядро ​​DSP / BIOS. Вы можете использовать инструмент анализа DSP / BIOS, входящий в состав CCS, чтобы определить накладные расходы DSP / BIOS и вычислительную мощность всей прикладной системы. Например, диаграмма загрузки ЦП в инструменте анализа в реальном времени, предоставляемом DSP / BIOS, является одним из наиболее часто используемых инструментов.

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

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

Резюме за 4 год

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