Перенос идентичного алгоритма на языке Structured Text с контроллера Siemens на платформу под управлением среды Codesys нередко преподносит инженерам неприятный физический сюрприз. Вроде бы формулы одни и те же, логика вычисления скважности совпадает до знака, но исполнительный механизм ведет себя совершенно иначе: двигатель начинает издавать пронзительный писк, на осциллографе видна рваная форма тока, а корпус мотора или силовой транзисторный ключ разогреваются значительно сильнее расчетных величин.
Причина такого поведения лежит не в программном коде, а в принципиальной разнице между аппаратным и программным формированием широтно-импульсной модуляции.
Анатомия импульса: аппаратный таймер против программного цикла
Широтно-импульсная модуляция, или сокращенно ШИМ, представляет собой способ управления мощностью, подаваемой на нагрузку. Вместо плавного изменения уровня напряжения источник питания быстро включается и выключается.
Мощность регулируется коэффициентом заполнения, который часто называют скважностью или Duty Cycle. Это отношение длительности включенного состояния импульса ко всему периоду колебания. Если за период в десять миллисекунд импульс длится пять миллисекунд, нагрузка получает ровно половину от максимальной мощности.
В контроллерах семейства Siemens S7-1200 широтно-импульсная модуляция реализована на специализированных скоростных выходах.
Внутри центрального процессора находится отдельный независимый кремниевый таймер-счетчик. Пользовательский код в основном организационном блоке OB1 совершенно не тратит время на включение и отключение контакта. Функция CTRL_PWM всего лишь раз за цикл сканирования записывает числовое значение скважности в аппаратный регистр контроллера, а сам генератор тактовых импульсов формирует фронты сигнала автономно.
В контроллерах под управлением среды Codesys реализация ШИМ чаще всего ложится на плечи программиста и стандартные функциональные блоки задержки TON или таймеры одиночных импульсов TP.
Период выходного сигнала в этом случае оказывается жестко привязан к времени одного программного скана, то есть к тому интервалу, за который центральный процессор успевает последовательно прочитать входы, выполнить код и выставить выходы.
В среде реального времени продолжительность скана никогда не бывает строго постоянной: на нее влияют обработка сетевых пакетов, вычисления и внутренние системные прерывания. Возникает временной джиттер, то есть паразитная нестабильность и фазовое дрожание фронтов импульса. Период управляющего сигнала постоянно растягивается и сжимается во времени, превращая строгую математическую сетку частоты в хаотично пульсирующий процесс.
|
Характеристика генерации |
Siemens S7-1200 (CTRL_PWM) |
Программная реализация в Codesys (TON/TP) |
|
Физический уровень генерации |
Аппаратный кремниевый таймер |
Программная логика в общем потоке вычислений |
|
Влияние времени скана программы |
Отсутствует, сигнал формируется автономно |
Прямое, каждый скан сдвигает фронт импульса |
|
Уровень временного джиттера |
Ничтожно мал, доли микросекунды |
Высокий, от единиц до десятков миллисекунд |
|
Доступная частота коммутации |
До десятков и сотен килогерц |
От долей герца до нескольких сотен герц |
|
Характер тока в нагрузке |
Сглаженный постоянный ток с малой пульсацией |
Глубокие пульсирующие провалы и всплески |
Физика токовых пульсаций и механизм тепловых потерь
Токовые пульсации представляют собой размах переменной составляющей тока относительно его среднего расчетного значения. Любая обмотка электродвигателя, клапана или электромагнита обладает собственной индуктивностью, которая оказывает естественное сопротивление мгновенному нарастанию и спаду электрического тока.
Когда аппаратный ШИМ в Siemens работает на высокой частоте порядка 10-20 килогерц, время одного периода составляет доли микросекунды. За этот короткий промежуток ток в индуктивности просто не успевает существенно уменьшиться во время паузы. В цепи течет практически непрерывный, хорошо сглаженный ток, а пиковое значение амплитуды почти не отличается от среднего.
При программном формировании сигнала в Codesys предельная частота ограничена временем задачи и обычно не превышает 100-200 герц. Период коммутации растягивается до нескольких миллисекунд. За время длинной паузы индуктивность успевает полностью разрядиться, ток падает почти до нуля, а при следующем импульсе резко нарастает до пиковых значений.
Возникает глубокий размах пульсаций, который запускает два разрушительных механизма тепловыделения:
- Джоулевы потери в меди обмоток. Нагрев проводника определяется среднеквадратичным значением тока, которое при одинаковой полезной мощности на валу оказывается тем выше, чем больше амплитуда пиков. Проводники обмоток начинают выделять избыточное тепло, вызывая преждевременную деградацию изоляционного лака.
- Вихревые токи в магнитопроводе статора и ротора. Резкие перепады магнитного потока высокой амплитуды наводят паразитные круговые токи Фуко прямо в металлических пластинах сердечника. Сердечник начинает работать как индукционная плита, разогревая мотор изнутри.
- Акустическая кавитация и магнитострикционный гул. Низкая частота попадает в диапазон слышимости человеческого уха, заставляя витки обмотки и пластины магнитопровода физически вибрировать с характерным неприятным писком.
Практические наблюдения на реальных объектах
Наглядную разницу демонстрирует испытание типового вентилятора принудительного охлаждения постоянного тока.
При подключении вентилятора к выходу S7-1200 на частоте 16 кГц двигатель работает практически бесшумно, крыльчатка вращается равномерно, а температура корпуса не превышает комнатных значений более чем на 5 градусов.
При переводе того же самого двигателя на контроллер с программным ШИМ частотой 150 Гц электродвигатель издает ощутимый свист. Несмотря на то, что программная скважность в коде выставлена ровно на те же 40%, температура корпуса электродвигателя уже через полчаса непрерывной работы возрастает на 18-22 градуса.
На тепловых нагрузках вроде нагревательных спиралей и ТЭНов программный джиттер почти незаметен благодаря колоссальной термической массе нагревателя. Однако на динамических, магнитных и индуктивных нагрузках разница между стабильным аппаратным импульсом и плавающим программным циклом приводит к существенному перерасходу электроэнергии и ускоренному износу оборудования.
Если архитектура проекта строится на платформе Codesys, для ответственных задач управления приводами необходимо выбирать специализированные модули вывода с аппаратным встроенным ШИМ-генератором на борту.
Андрей Повный
