Форум
Приветствую Вас, Гость · RSS Четверг, 28.03.2024, 23:31

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: Soir  
Форум » Форум по статьям сайта » Электросхемы и ТЗ. » Управление клапаном на PIC16F873A
Управление клапаном на PIC16F873A
variaevgДата: Среда, 12.03.2014, 01:08 | Сообщение # 1
Группа: Пользователи
Сообщений: 5
Задача: регулировка скорости расхода жидкости через электромагнитный клапан в 
зависимости от температуры. 

Органы управления:

Тумблер №1 - Авт/Блок разрешает или выключает работу регулятора (на выходе 0)
Тумблер №2 - Авт/Ручн переключает автоматическое управление отбором на ручное
Кнопка "MODE" - выбор режима настройки
Кнопка "PLUS"
Кнопка "MINUS"

После нажатия кнопки "PLUS" дисплей показывает скорость расхода [ml/час].
После нажатия кнопки "MINUS" дисплей показывает температуру. 

 Принцип формирования управляющего клапаном импульса:

  d=n*p/1024

Где
 d - время на которое клапан открыт
 p - периодичность включения клапана
 n - число от 1 до 1024

Предусмотрены два режима работы:

1. При ручном управлении просто задаем число n0. 
   Длительность импульса открытия клапана зависит только от настроек и не зависит от 
   температуры.

   d=n0*p/1024

   На индикаторе отображается скорость расхода О=k*n0 
   Где k - коэффициент. 

2. При автоматическом режиме такая работа:

   d=n*p/1024
   Где n это текущее значение.
   
   - при переключении с ручного управления на автоматический (тумблер) запоминается текущая
     температура t0, регулировка производится относительно нее и текущее значение n 
     начинается с n0.
   - при текущей температуре t=t0+t1 и меньше текущее n увеличивается на n1.
   - при текущей температуре t=t0+t2 и больше текущее n уменьшается на n1.
   - в диапазоне от t0+t1 до t0+t2 текущее n не изменяется.
   - при достижении текущей температуры t=t0+t3 текущее n=0 (клапан закрывается),
     на выходе BUZ формируется 1 длительностью 30 сек. 
   - коррекция значения текущего n производится с периодичностью р1. 

    На индикаторе отображается скорость расхода О=k*n 

В настройках задаем:

   р [сек] от 0,5 до 10 с дискретностью 0,5.
   р1 [сек] от 5 до 600 с дискретностью 5.
   n0 число от 1 до 1024 с дискретностью 1.
   n1 число от 1 до 100 с дискретностью 1.
   k число от 0,1 до 10 с дискретностью 0.01.
   t1 [град] от 0,01 до 1,0 с дискретностью 0,01.
   t2 [град] от 0,01 до 1,0 с дискретностью 0,01.
   t3 [град] от 0,01 до 1,0 с дискретностью 0,01. 

Остальные сигналы:
 
При A/R = 1 автоматический режим
    A/R = 0 ручной режим

При BLOC = 1 контроллер работает
    BLOC = 0 клапан закрыт ( OUT = 0 ), на индикатор выводится "bloc" в случае индикации О.

При неисправности датчика температуры на выходе BUZ формируется 1 длительностью 30 сек,
на индикатор Err (при индикации температуры), клапан не блокируется.

Добавлено (12.03.2014, 01:08)
---------------------------------------------
Собственно почти все работает. Требуется кое что подправить.

 Принципиальные моменты.
1. Сейчас регулирование идет по такому принципу:

   Если t=t0 + 0,09 и больше n уменьшается на n1
   Если t=t0 + 0,03 и меньше n увеличивается на n1
   При достижении t=t0 + 0,12 - bloc

  Необходимо вместо констант 0,03; 0,09 и 0,12 ввести переменные задаваемые в настройках.
  Например t1;t2 и t3 с установками от 0,01 до 1,0 и дискретностью 0,01.
  Добавить формирование сигнала BUZ=1 при достижении t=t0+t3.

2. В связи с тем, что время реакции колонны на изменение числа n реально составляет 
   3-5 минут необходимо увеличить диапазон установки параметра Р1 до 600.
   
Доработки:

1. Включение устройства происходит при 0 на входе bloc.
   Индикатор показывает bloc.
   Если перевести сигнал на входе bloc в 1 гаснет индикатор.
   Запускается индикация кнопкой MODE. В дальнейшем все работает нормально, т.е.
   при разных значениях сигнала на входе bloc индикатор работает. 

2. При сигнале на входе bloc равный 0 на индикаторе "bloc". При этом устройство 
   реагирует на нажатие кнопок, но значения на индикатор не выводятся.
   Надо что бы:
   При режиме индикации расхода (после нажатия кнопки PLUS) на индикаторе отображались 
   или значение расхода (О) или bloc (если на входе bloc 0).
   При режиме индикации температуры (после нажатия кнопки MINUS) на индикаторе 
   отображалась температура или Err (если ошибка датчика).
   Вход в настройки их корректировка должны отображаться всегда.

3. Оказался лишним режим остановки расхода каждый час на 5 мин с последующей коррекцией
   t0. Он еще и подвисал. Это надо убрать.

  Все остальное отлично. Устоявшийся процесс четко стоит с точностью 0,01 град.
  Изменение температуры происходит медленно, регулировка работает.

Прикрепления: 1794363.rar (107.2 Kb)
 
SoirДата: Среда, 12.03.2014, 12:04 | Сообщение # 2
Группа: Hegemoniс
Сообщений: 773
Цитата variaevg ()
 1...Необходимо вместо констант 0,03; 0,09 и 0,12 ввести переменные задаваемые в настройках.   Например t1;t2 и t3 с установками от 0,01 до 1,0 и дискретностью 0,01.

Добавил, проверяйте.
Цитата variaevg ()
 Добавить формирование сигнала BUZ=1 при достижении t=t0+t3.

Добавил 30 сек, проверяйте.
Цитата variaevg ()
 2...увеличить диапазон установки параметра Р1 до 600.

Увеличил.
Цитата variaevg ()
 1. Включение устройства происходит при 0 на входе bloc.    Индикатор показывает bloc.    Если перевести сигнал на входе bloc в 1 гаснет индикатор.    Запускается индикация кнопкой MODE. В дальнейшем все работает нормально, т.е.    при разных значениях сигнала на входе bloc индикатор работает. 

Могу проверять только в симуляторе. Пока такого не наблюдаю. Опишите подробнее. Это происходит только при подаче питания или в процессе работы тоже? Попробуйте с новой прошивкой...
Цитата variaevg ()
 2. При сигнале на входе bloc равный 0 на индикаторе "bloc". При этом устройство     реагирует на нажатие кнопок, но значения на индикатор не выводятся.    Надо что бы:    При режиме индикации расхода (после нажатия кнопки PLUS) на индикаторе отображались     или значение расхода (О) или bloc (если на входе bloc 0).    При режиме индикации температуры (после нажатия кнопки MINUS) на индикаторе     отображалась температура или Err (если ошибка датчика).    Вход в настройки их корректировка должны отображаться всегда.

Изменил, проверьте.
Цитата variaevg ()
 3. Оказался лишним режим остановки расхода каждый час на 5 мин с последующей коррекцией    t0. Он еще и подвисал. Это надо убрать.

Убрал. Надо проверять.
---
Везде пишу проверяйте, так как я не вникаю в весь процесс и алгоритм в целом, а только в отдельную часть программы. Убирая/добавляя могу зацепить другую часть программы...
Прикрепления: Valve_control_P.zip (4.4 Kb)


Россия оккупировала Крым, вооружает террористов, засылает наемников и в открытую вторглась на материковую часть Украины. От рук российских убийц погибают мои соотечественники. Презираю и ненавижу Россию, а россиянам больше не помогаю.
 
variaevgДата: Четверг, 13.03.2014, 13:30 | Сообщение # 3
Группа: Пользователи
Сообщений: 5
Добрый день.

Я в симуляторе не проверяю, сразу в железе.

Цитата
Могу проверять только в симуляторе. Пока такого не наблюдаю. Опишите подробнее. Это происходит только при подаче питания или в процессе работы тоже? Попробуйте с новой прошивкой... 
Исправилось.

Цитата
Добавил 30 сек, проверяйте. 
На выход подается 0 (работает), но на BUZ единица не подается. 

Все остальное вроде хорошо.
Досконально проверить все не могу. Невозможно пальцами задавать температуру с точностью до 0,01 град.
Проверять буду в реальном процессе через 3 - 4 недели, долго сырье заготавливать.
 
SoirДата: Четверг, 13.03.2014, 14:50 | Сообщение # 4
Группа: Hegemoniс
Сообщений: 773
Цитата variaevg ()
На выход подается 0 (работает), но на BUZ единица не подается. 

Проверяйте еще. В симуляторе выдается, должна и в железе. Сигнализация должна работать в течении 30 сек, даже если нарушение осталось через это время она отключится. Для ее повторного включения температура должна снизиться, а затем повыситься снова...


Россия оккупировала Крым, вооружает террористов, засылает наемников и в открытую вторглась на материковую часть Украины. От рук российских убийц погибают мои соотечественники. Презираю и ненавижу Россию, а россиянам больше не помогаю.
 
Форум » Форум по статьям сайта » Электросхемы и ТЗ. » Управление клапаном на PIC16F873A
  • Страница 1 из 1
  • 1
Поиск:

Конструктор сайтов - uCoz
Copyright MyCorp © 2024