Я с Вашего разрешения выложил эту разработку на профильном форуме и меня изрядно покритиковали. Как оказалось я заложил устаревший алгоритм работы, как оказалось самый передовой алгоритм другой. Поэтому и интерес никакой. Принцип правильный, а метод другой, более оптимальный. Если у Вас не пропал интерес, я могу выложить новое видение проблемы. Было бы здорово изменить программу.
Принцип формирования управляющего клапаном импульса остается прежним.
d - время на которое клапан открыт p - периодичность включения клапана n - число от 1 до 1024
d=n*p/1024
1. При ручном управлении просто задаем число n0.
d=n0*p/1024
O=k*n0
2. При автоматическом управлении такая работа:
d=n*p/1024
O=k*n
- при переключении с ручного управления на автоматический (тумблер) запоминается текущая температура Т0 и регулировка производится относительно ее. - текущая температура Т поддерживается около Т0+0.05 - температура имеет тенденцию к медленному росту и при регулировке не должна падать до Т0. - при Т=Т0+0.1 отбор закрывается (n=0) для исключения потери качества. - для учета атмосферного влияния каждый час отбор закрывается (n=0) на 5 мин. В конце этих 5 мин запоминается новая Т0 и процесс возобнавляется.
Принцип регулировки температуры ( пропорциональный, ПИД или другой) не могу сказать.
В настройках исключаем t0, t1, t2, n1, n2. Остаются без изменений p, n0, k - размерности прежние.
Остальные сигналы:
При A/R = 1 автоматический режим A/R = 0 ручной режим
При BLOC = 1 контроллер работает BLOC = 0 клапан закрыт ( OUT = 0 ), на индикатор выводится "bloc".
При неисправности датчика температуры на выходе BUZ формируется 1 длительностью 30 сек, на индикатор Err (при индикации температуры) .
Сигнал НОТ исключаем.
При нажатии на PLUS на индикатор выводятся показания О, при нажатии на MINUS текущая температура с дискретностью 0,01.
Я знаю, что дискретность датчика DS18B20 0.06, но вычитал, что можно как то фильтровать или делать несколько замеров и усреднять. Поскольку процесс длительный, температура в кубе ( не та которую мы измеряем контроллером) изменяется всего на 14 градусов за примерно двое суток то мне кажется, что 10 замеров в течении 10 сек будет нормально.
Общее впечатление: Очень похоже на очередной тренировочный вариант. Надеюсь последний. Если не уверены, то лучше еще раз подумайте, больше я к этой теме возвращаться не буду. Теперь вопросы.
variaevg писал(а):
- текущая температура Т поддерживается около Т0+0.05
А чем она поддерживается? Не вижу формулы, в которой участвуют T и T0.
variaevg писал(а):
...10 замеров в течении 10 сек будет нормально.
Сотые получим, но система будет "тормознутая" на 10 сек. Не критично?
Очень похоже на очередной тренировочный вариант. Надеюсь последний.
Подобные методы используются, только реализацией не делятся.
Цитата:
А чем она поддерживается? Не вижу формулы, в которой участвуют T и T0.
Работать должно так: В ходе процесса смесь в кубе обедняется, температура кипения растет и Т имеет тенденцию к росту. Т должно поддерживаться в диапазоне от Т0-0.03 до Т0+0.03. Мне кажется что пропорциональное регулирование наиболее правильное (так и у других). Регулировка производится изменением числа n. Т.е. если температура выросла, то новое n(новое)=n(предыдущее) - n1, если снизилась то + n1. Чтобы не получить вялое регулирование или перерегулирование надо дополнительно ввести в настройки: - число n1 [1-100] - периодичность внесения коррекции p1 [сек] от 10 до 100 с дискретностью 5.
Т.е. измерение собирается за 5 сек, если Т изменилось на 0.01 то коррекция на число n1 происходит с периодичностью p1.
Цитата:
Сотые получим, но система будет "тормознутая" на 10 сек. Не критично?
В диапазоне от Т0-0.03 до Т0+0.03 ничего не меняем. Если Т=Т0+0.04 и больше текущее n уменьшается на n1 Если Т=Т0-0.04 и меньше текущее n увеличивается на n1
Т0 определяется при переключении с ручного режима на автоматический. Начальное n тоже запоминается при переключении с ручного режима на автоматический. n1 и p1 подбираются экспериментально.
В диапазоне от Т0-0.03 до Т0+0.03 ничего не меняем. Если Т=Т0+0.04 и больше текущее n уменьшается на n1 Если Т=Т0-0.04 и меньше текущее n увеличивается на n1
Ещё раз переспрошу для очистки совести, Вы уверены? Могу Вам гарантировать, что стабилизации практически не будет.
variaevg писал(а):
Начальное n тоже запоминается при переключении с ручного режима на автоматический.
Могу Вам гарантировать, что стабилизации практически не будет.
Я извиняюсь. Протупил как дурак. Дал неправильную формулу.
Если Т=Т0+0.09 и больше текущее n уменьшается на n1 Если Т=Т0+0.03 и меньше текущее n увеличивается на n1 Отключение отбора при Т=Т0+0.12 А в связи с чем не будет стабилизации. Нужно поддерживать температуру в заданном диапазоне.
А в связи с чем не будет стабилизации. Нужно поддерживать температуру в заданном диапазоне.
Формула никак не учитывает величину отклонения, а только факт. Если отклонение произошло на 0,01 град или на 0,1 град, то очевидно, что корректирующее воздействие на систему должно быть разное... Или Вы исключаете воздействие внешних факторов на процесс? Я попробую реализовать тот алгоритм, что Вы предлагаете, но, скорее всего, это напрасно потраченное время.
Я бы назвал это методом последовательного приближения. У нас не разовая коррекция, а неоднократная, через каждые p1 сек на фиксированную величину n1, если того требует соотношение Т и Т0. А они подбираются для достижения более менее ровного процесса.
В Вашем алгоритме не прописаны приоритеты при разных ситуациях, не буду их сейчас все перечислять. Пробуйте, а что не так - скажете, тогда и обсудим. P.S. Одна особенность. При включении питания достоверные значения температуры будут только спустя 10 успешных измерений. В это время управление запрещено, показания мигают.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения