Техника для балансировки контроллера ввода и вывода - PullRequest
1 голос
/ 15 июня 2011

У меня есть система, в которой я использую RS232 для управления лампой, которая принимает входное значение, заданное в плавающем значении, представляющем напряжение (в диапазоне 2,5 - 7,5). Затем система управления выдает выходной сигнал в диапазоне от 0 до 6000, который является яркостью, измеряемой датчиком.

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

Существует ли какой-нибудь стандартный алгоритм или метод, чтобы найти, какое должно быть напряжение на входе, чтобы получить конкретный выход? Я думал об алгоритме, который итеративно пробует значения, и с каждой попытки он определяет какое-то новое значение, которое должно быть лучше для достижения определенного выходного значения. (в моем случае это 3000).

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

Я просто ищу название для техники или алгоритма, но псевдокод работает так же хорошо. :)

Ответы [ 3 ]

1 голос
/ 23 июня 2011

После еще одного просмотра википедии я нашел это:

Механизм обратной связи контура управления:

previous_error = setpoint - actual_position
integral = 0
start:
  error = setpoint - actual_position
  integral = integral + (error*dt)
  derivative = (error - previous_error)/dt
  output = (Kp*error) + (Ki*integral) + (Kd*derivative)
  previous_error = error
  wait(dt)
goto start

[править]

Удаляя «составной» компонент и настраивая веса (Ki и Kd), цикл работает отлично.

1 голос
/ 23 июня 2011

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

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

1 голос
/ 15 июня 2011

Выполните калибровку системы при первоначальном запуске, испробовав все напряжения от 2,5 до 7,5 с шагом, например, 0,1 В, и запишите выходной сигнал датчика.

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

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