Хорошо, так что, если я вас понимаю, все оборудование уже сделано?
Итак, ваша система имеет командный вход, который представляет собой текущий уровень в амперах (заданный, скажем, числом с плавающей запятой двойной точности в программном обеспечении), а выходной сигнал контроллера представляет собой напряжение, которое управляет оборудованием, которое потребляет ток, ваша установка схема и обратная связь, вероятно, представляют собой 8, 10 или 16-битные числа - либо подписанные, либо без знака в зависимости от вашего АЦП.
Итак, ваша система выглядит так:
альтернативный текст http://steves -wiki.wikispaces.com / file / view / control_diagram.jpg / 64043668
Ваш самый быстрый и самый грязный подход - это, вероятно, ПИД-контроль. Вы можете освежить в общих чертах этой статьи Википедии , и есть некоторые советы по реализации в этой embedded.com статье .
В двух словах вы хотите вычислить ошибку системы, которая в вашем примере является командой Current - Current Feedback. Убедитесь, что все в тех же единицах, надеюсь, ампер. Затем, после расчета вашей ошибки, вы должны исправить ее с помощью команды. В вашей системе это команда напряжения для вашего источника тока, управляемого напряжением. При использовании PID команда рассчитывается путем умножения ошибки, интеграла ошибки и производной ошибки на коэффициенты усиления и суммирования результата. Прибыль - сложная часть. ДРУГИЕ хитрые детали: убедиться, что ваши юниты согласованы, убедиться в правильности выбора времени и правильном расчете интеграции / производной.
В вашей системе у вас много единиц: ошибка - Amps, команда - Volts, которая превращается в Amps, затем текущее использование - Amps, которое сообщается как Volts, которое превращается в целое число со знаком или без знака, которое должно быть уменьшил в амперах, чтобы исправить ошибку. У вас будет много переменных, убедитесь, что вы можете отслеживать, какие физические единицы применяются к каждой.
Алгоритм управления работает в режиме реального времени и должен работать с выделенной скоростью. Я бы порекомендовал по крайней мере 100 Гц (вычисления каждые 10 мс). Электронные схемы движутся быстро - не как электромеханические системы. Вам может потребоваться более высокая ставка, чтобы оставаться в курсе событий. Но это должно быть трудно в реальном времени - это означает, последовательный. Возможно, вы даже не сможете сойти с рук с программными таймерами.
Интеграция и производные вычисления сложны, но есть только так много способов сделать их. Самый простой алгоритм - это правило прямоугольника - он тупой, но, вероятно, сработает. Если вам нужно быть более точным, используйте трапециевидное правило. Проверьте алгоритмы здесь . Скорее всего, вы не будете использовать производное управление - оно делает вещи нестабильными и не требуется в большинстве систем. Вы должны быть в порядке с интегральным + пропорциональным контролем.
Есть много подводных камней, но это должно помочь вам начать. Если у вас был опыт в теории управления, то все должно вернуться к вам. Как только структура будет создана, вы потратите много времени на настройку пропорционального и интегрального коэффициента усиления - это главное в работе. Если это все еще кажется вам слишком сложной математикой, извините - это примерно так же просто, как и для элементов управления.