[an error occurred while processing this directive]
[an error occurred while processing this directive]
|
Вот конкретные цифры.
1. АЦП 10 бит щелкает с периодом 64 мкс. Отсчеты проверяются на зашкаливание. Индикатор зашкаливания в экспериментах не загорается.
2. 7812 отсчётов суммируются (24 бит) за 0.5 с и умножаются на коэффициент, чтоб вогнать в диапазон 0...1. (16 бит числа с фиксированной точкой, 0х4000 = 1.0000).
3. Задвижка полностью открывается за 6.2 с.
4. Дырка треугольная - поток пропорционален квадрату времени открывания. Ну и наверняка на это ещё и некоторая нелинейность наложена.
Аглоритм.
1. Измеряется относительная разница = (сигнал - уставка) / уставка.
2. Эта разница умножается на корень из уставки (поправка на треугольность) и на константу. Получается время, которое должен работать мотор, чтоб выйти точно на уставку.
Это кривая формула, она даёт правильный результат только при небольших отклонениях. Но кванты времени (0.5 с) как раз и подразумевают небольшое отклонение. Т.е., если время получится, скажем, 2 с, то мотор включится и будет крутиться куда надо, но через 0.5 с это время будет пересчитано и мотор получит новое значение. И ещё может показаться, что в ней не учитывается задержка, так эти 0.25 с и есть учёт.
3. Если время получилось больше 0.25 с, то оно применяется к мотору, если меньше, то начинает работать совсем другой алгоритм (работает хорошо).
Этот алгоритм на модели везде, а на натуре при малых (до 0.4) потоках устанавливает поток достаточно близко к уставке.
Модель считается с шагом 64 мкс. Моделируется отработка мотором заданного времени + ошибка, моделируется мгновенное изменение потока + флуктуации, время падения продукта до датчика. Ессно, суммируются мгновенные значения. А потом раз в 0.5 с...
Уф. Сделаю я паузы на успокоение и гори огнём!
E-mail: info@telesys.ru