Показано с 1 по 9 из 9

Тема: Проблема работы ПЛК-150 в автономном режиме

  1. #1

    По умолчанию Проблема работы ПЛК-150 в автономном режиме

    У нас имеется программа регулировки температуры в камере. В ней имеется две пид-функции для нагрева (нагрев - включение тена, охлаждение - выключение тена) и для охлаждения (охлаждение - включение компрессора, нагрев - отключение компрессора). Также имеется алгоритм выбора какой из пид-функции пользоваться. Также мы сделали возможность задавать значение уставки температуры с панели оператора, а также отображение температуры с датчика на панели оператора. Когда контроллером управляем из среды программирования CoDeSys (просто меняем значение уставки в CodeSys) у нас весь алгоритм работает правильно (правильно выбирает чем надо регулировать, и правильно дает ШИМ-сигнал на выходные реле). Затем мы зашиваем программу в ПЛК и начинаем задавать уставку с панели СМИ. У нас ПЛК начинает работать не правильно. Когда нужно нагревать он нагревает, а когда нужно охлаждать он этого не делает.

    В чем проблема разобраться пока не можем. Есть версия что мы не правильно зашиваем программу в ПЛК.

    Если у вас есть версия в чем причина данной ошибки, ответьте пожалуйста побыстрее.
    Последний раз редактировалось DimaSik; 28.01.2010 в 15:29.

  2. #2

    По умолчанию

    Также хотел бы отметить, что мы до этого его прошивали другой программой для проверки его автономной работы. Программа была простая (уставка больше порога, нагревание, меньше порога охлаждение) и она работала. Есть ли вероятность того что мы ее не до конца удалили, и она как-то влияет. Удаляли ее командой Reset (original). И после этого записывали уже новую программу.

  3. #3

    По умолчанию

    Если из CoDeSys все работает верно, то проблема не в проекте, а в наладке связи с СМИ1 - там и копайте.

  4. #4

    По умолчанию

    Связь ПЛК с панелью оператора правильная. Мы наблюдаем за работой в режиме LOgin а управляем уставкой из панели оператора. Все получается. ЗАтем зашиваем эту программу в ПЛК с помощью команды creat bootproject. Перезагружаем контроллер и он включается автоматически и начинает работать, но уже охлаждение не выполняется.

    Сегодня пытался разбираться, и смотрел что он делает, по шагово. Алгоритм выбора режима (Режим нагрева и режим охладение) делается правильно, выбирает все то что должен.

    А загвостка оказалось вот в чем. До перезагрузки контроллера выход пид-функции довал как и положено -100, а когда начал работать автономно, на выходе пид-функции постоянно ноль. Хотя уставка меньше температуры датчика на 10 градусов. Смотрел уставка с панели приходит. А также выполняется режим нагрева, в случаи когда уставка больше температуры датчика, как и положено дает сигнал на нагрев.
    Последний раз редактировалось DimaSik; 01.02.2010 в 08:56.

  5. #5

    По умолчанию

    Управление компрессором с помощью ПИД регулятора несколько не рационально, получается что при достижении уставки компрессор будет отключаться, при этом температура опустится ниже уставки и включится ПИД тэна, систему реально заколбасит туды сюды, добиться таким образом точного поддержания температуры будет не возможно. Плюс ко всему компрессоры очень копрризная вещь и частое включение/отключения для него крайне не желательно(это особенно важно в двухкаскадных системах охлаждения).
    Для точного поддержания температуры гораздо лутьше включить/выключать компрессор "вручную" прописав в программе алгоритм изходя из текущей температуры и требуемой уставки, т.е. при работе на минусе работает компрессор и тэн, а при работе на плюсе(температура уставки выше температуры окружающей среды) работать только тэном. Тэном управлять ПИД регуляторами, причем если хорошо подобрать коэффициенты на плюсе и на минусе можно использовать одни и теже ПИДкоэфициенты. Главное чтобы на минусе мощность тэна была больше мощности на испарителе выдаваемой компрессором...
    Последний раз редактировалось Crusash; 01.02.2010 в 16:15.

  6. #6

    По умолчанию

    У нас просто бывает случаи когда нужно выйти с температуры плюс 50 на температуру 30 за 10 минут и в это деле без компрессора не обойтись. Ну эту мы проблему решили. У нас нет такого что одновременно выполняется Пид-компрессором и Пид-теном. Мы сделали чтобы действия выбирались при изменении уставки. То есть когда поменялась уставка, в этом момент происходит сравнение температуры датчика с температурой новой уставки ,и делается вывод, что надо делать. И в дальнейшем температура датчика не сравнивается с уставкой. Только при следующей смене уставки. На основе этих сравнений делается вывод что делать, нагревать, или охлаждать.

  7. #7

    По умолчанию

    Конечно можно использовать и пид регулирование компрессором, особенно если он настроен исключительно как пропорциональный, то вероятность того что при подходе к уставке он не начнёт вкл/выкл компрессор достаточно мала.
    Тем неменее при достижении уставки вам необходимо будет переводить машину в нормальный режим работы, для чего вам необходимо создать отдельный алгоритм (например сброс флага) сигнализирующий о достижении уставки. Т.е. появляется два алгоритма работы камеры: алгоритм достижения температуры уставки и алгоритм удержания температуры уставки.
    Алгоритм достижения уставки определяется из разности температуры уставки и текущей температуры(если разность положительна - греем, если отрицательна - холодим).
    Алгоритм удержания уставки определяется изходя из температуры уставки (вобщей форме: если нужная температура ниже 30 - холодим и пидим тэном, иначе только пидим)...
    Главное отработать функцию информирующий о достижении уставки...
    ...вовсяком случае я делал именно так...

    Для чего цеплять пид регулятор к управлению компрессора для меня всё равно не понятно...

  8. #8

    По умолчанию

    Если есть возможность не могли бы скинуть пример вашей программы.

  9. #9

    По умолчанию

    Ну весь проект я выкладывать не буду, а сам алгоритм регулировки могу:
    Код:
    PROGRAM Regul (*регулировка управления климатической камерой (mashina)*)
    VAR_INPUT
    	iy:INT;
    END_VAR
    VAR
    	delta_t:REAL;(*разность температур уставки*)
    	b_dhod: BOOL;(*бит о  достижения диопазона температур уставки, нужен для перегрузки ПИД регулятора*)
    END_VAR
    
    delta_t:=mashina.ust_t-mashina.tek_t;
    mashina.i_airing:=FALSE;
    IF delta_t<10 AND delta_t>-10 THEN (*регулировка удержания*)
    	mashina.i_airing:=FALSE;
    	IF mashina.ust_t<=mashina.tek_t_sreda+9 AND mashina.ust_t>=mashina.tek_t_sreda+11 THEN
    		mashina.r_ten:=TRUE;
    		mashina.r_kompressor:=FALSE;
    	ELSIF mashina.ust_t>mashina.tek_t_sreda+10 THEN
    		mashina.r_ten:=TRUE;
    		mashina.r_kompressor:=FALSE;
    	ELSE
    		mashina.r_ten:=TRUE;
    		mashina.r_kompressor:=TRUE;
    	END_IF
    
    	IF b_dhod=FALSE THEN(*включаем бит достижения уставки, перегружаем тен*)
    		IF delta_t < 0 THEN
    			Mashina.r_ten:=FALSE;
    		END_IF
    		b_dhod:=TRUE;
    	END_IF
    ELSE (*delta_t>=10 OR delta_t<=-10 THEN*)
    	mashina.kompressor_revers:=FALSE;
    	b_dhod:=FALSE;(*температура уставки не достигнута*)
    	IF mashina.tek_t>50 THEN
    		IF delta_t<0 THEN
    			mashina.i_airing:=TRUE;
    			mashina.r_ten:=FALSE;
    		ELSE
    			mashina.i_airing:=FALSE;
    			mashina.r_ten:=TRUE;
    		END_IF
    
    		mashina.r_kompressor:=FALSE;
    	ELSE
    		mashina.i_airing:=FALSE;
    		IF delta_t>0 THEN
    			mashina.r_ten:=TRUE;
    			mashina.r_kompressor:=FALSE;
    		ELSE
    			mashina.r_ten:=FALSE;
    			mashina.r_kompressor:=TRUE;
    		END_IF
    	END_IF
    END_IF
    эта не полная версия(чёто мне ёе не найти), но рабочая,
    в этой есть небольшой баг(ну думаю сами найдёте)...
    mashina - простинкая структура с температурами и режимами работы,
    i_airing - это режим проветривания.
    r_ten,r_kompressor - тэн и холодилка,
    b_dhod используктся только для перегрузки пид регулятора тэна(когда тэн выключен он перегружается...

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •