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

Тема: программирование на ПЛК 150

  1. #1

    По умолчанию программирование на ПЛК 150

    Добрый день! помогите пож-та с программированием ПЛК 150.
    есть датчик температуры. надо в зависимости от температуры управлять электродвигателем, скоростью его вращения (эл/двиг управляется сигналом 0-5В). кто может помочь с этой простой прогой?

  2. #2

    По умолчанию

    Здравствуйте, Fix_m.
    Цитата Сообщение от Fix_m Посмотреть сообщение
    Добрый день! помогите пож-та с программированием ПЛК 150.
    есть датчик температуры. надо в зависимости от температуры управлять электродвигателем, скоростью его вращения (эл/двиг управляется сигналом 0-5В). кто может помочь с этой простой прогой?
    Проще на ТРМ10
    Последний раз редактировалось Gans; 22.10.2012 в 15:55.
    Автоматизация Диспетчеризация Сервис
    e-mail: ads-kaluga@mail.ru

  3. #3

    По умолчанию

    Цитата Сообщение от Gans Посмотреть сообщение
    Здравствуйте, Fix_m.

    Проще на ТРМ10
    Спасибо! но потом надо будет усложнять схему управления. мне для начала надо хотя бы такому простому научиться. сможете помочь написать прогу? на Codesys, как я понимаю.

  4. #4
    Пользователь
    Регистрация
    31.08.2010
    Адрес
    г. Тамбов
    Сообщений
    35

    По умолчанию

    Если плк 150 с индексом У ( аналоговые выходы ПЛК150/154 ЦАП 0...10 В)
    то приблизительно как то так

    1. В конфигурации плк определяем вход ( термодатчик) PV и аналоговый выход OUT
    2. в глобальных переменных

    VAR_GLOBAL RETAIN PERSISTENT
    SP : REAL := 30; (* Уставка для температуры *)
    KP : REAL := 1;
    TN : REAL := 0;
    TV : REAL := 0;

    END_VAR

    3. скачиваем с сайта oscat.de библиотеку , и добавляем ее в проект
    4. В основной программе
    PROGRAM PLC_PRG

    VAR
    CTRL : CTRL_PID;
    PWR : REAL;
    END_VAR

    CTRL(
    ACT:= PV,
    SET:= SP,
    M_I:= ,
    MAN:= ,
    RST:=,
    KP:= KP,
    TN:= TN,
    TV:= TV,
    Y=> PWR,
    );

    PWR := LIMIT(0,PWR,1000)/10;
    OUT:=SCALE_R(PWR*10,0,1000,0,5);( * для выхода 0-5 в *)

    5. В конфигурации задач, добавляем наш PLC_PRG, в циклически выполняемую ( на пр. раз в секунду)

    6. Подбираем коэф. ПИД регулятора KP, TN, TV

    PS
    Писал по памяти, на вскидку, так что имеет смысл все самому еще раз проверить

  5. #5

    По умолчанию

    Цитата Сообщение от nik9999 Посмотреть сообщение
    Если плк 150 с индексом У ( аналоговые выходы ПЛК150/154 ЦАП 0...10 В)
    то приблизительно как то так

    1. В конфигурации плк определяем вход ( термодатчик) PV и аналоговый выход OUT
    2. в глобальных переменных

    VAR_GLOBAL RETAIN PERSISTENT
    SP : REAL := 30; (* Уставка для температуры *)
    KP : REAL := 1;
    TN : REAL := 0;
    TV : REAL := 0;

    END_VAR

    3. скачиваем с сайта oscat.de библиотеку , и добавляем ее в проект
    4. В основной программе
    PROGRAM PLC_PRG

    VAR
    CTRL : CTRL_PID;
    PWR : REAL;
    END_VAR

    CTRL(
    ACT:= PV,
    SET:= SP,
    M_I:= ,
    MAN:= ,
    RST:=,
    KP:= KP,
    TN:= TN,
    TV:= TV,
    Y=> PWR,
    );

    PWR := LIMIT(0,PWR,1000)/10;
    OUT:=SCALE_R(PWR*10,0,1000,0,5);( * для выхода 0-5 в *)

    5. В конфигурации задач, добавляем наш PLC_PRG, в циклически выполняемую ( на пр. раз в секунду)

    6. Подбираем коэф. ПИД регулятора KP, TN, TV

    PS
    Писал по памяти, на вскидку, так что имеет смысл все самому еще раз проверить
    вот это здорово! спасибо!!
    только я совсем еще начинающий.
    1) как определить входы-выходы в конфигурации ПЛК? как в программе указать, например, с какого физического входа принимать сигнал?
    2) это всё на каком языке лучше писать?
    3) про глобальные переменные понял
    4) что в этой библиотеке нового? которую советуете скачать.
    5) "CTRL_PID" - это из новой библиотеки?
    6)"M_I:= , - этого, честно говоря, вообще не понял. для чего это?
    MAN:= ,
    RST:=,"
    7) "PWR := LIMIT(0,PWR,1000)/10;
    OUT:=SCALE_R(PWR*10,0,1000,0,5);( * для выхода 0-5 в *)"
    что означают эти записи? вкратце.
    8) и опять таки про конфигурацию задач. как добавить в цикл.выполняемую?
    буду благодарен за подробный ответ.

  6. #6
    Пользователь
    Регистрация
    31.08.2010
    Адрес
    г. Тамбов
    Сообщений
    35

    По умолчанию

    Цитата Сообщение от Fix_m Посмотреть сообщение
    вот это здорово! спасибо!!
    только я совсем еще начинающий.
    1) как определить входы-выходы в конфигурации ПЛК? как в программе указать, например, с какого физического входа принимать сигнал?
    Очень внимательно читаем PLC_Configuration_OWEN.pdf ( идет на диске с плк), конкретно стр 33, 42... Но в целом скажу, что надо все прочесть РЭ_ПЛК150.pdf, "Порядок программирования ПЛК1хх_РП.pdf" .
    Цитата Сообщение от Fix_m Посмотреть сообщение
    2) это всё на каком языке лучше писать?
    На мой взгляд ST, но ИМХО
    Цитата Сообщение от Fix_m Посмотреть сообщение
    4) что в этой библиотеке нового? которую советуете скачать.
    Очень много вкусностей и полезностей , в доке к ней все написанно
    Цитата Сообщение от Fix_m Посмотреть сообщение
    5) "CTRL_PID" - это из новой библиотеки?
    Да
    Цитата Сообщение от Fix_m Посмотреть сообщение
    6)"M_I:= , - этого, честно говоря, вообще не понял. для чего это?
    MAN:= ,
    RST:=,"
    Значения этих переменных, инициализирует сама библиотека
    Цитата Сообщение от Fix_m Посмотреть сообщение

    7) "PWR := LIMIT(0,PWR,1000)/10;
    OUT:=SCALE_R(PWR*10,0,1000,0,5);( * для выхода 0-5 в *)"
    что означают эти записи? вкратце.
    CTRL_PID ,из диапазона 0-1000, большая часть "железных" регуляторов выдают мощность в %, первая строка и переделывает в проценты.
    вторая строка диапазон 0-1000, апроксимирует на 0-5, по скольку на вых. ПЛК должно быть 0-5 в.
    Цитата Сообщение от Fix_m Посмотреть сообщение
    8) и опять таки про конфигурацию задач. как добавить в
    цикл.выполняемую?
    буду благодарен за подробный ответ.
    читаем CodeSys.pdf там все просто написанно

  7. #7

    По умолчанию

    nik9999, спасибо! стал разбираться, читать. уже стало понятнее.
    но остались вопросы.
    1) "OUT:=SCALE_R(PWR*10,0,1000,0,5);( * для выхода 0-5 в *)"
    Как ПЛК должен понять, что 0-5 означают вольты? а если написать 0-20, то на аналоговом выходе всё равно будет 0-10В ?

    2) если пока не брать ПИД регулирование. Допустим, надо написать такую программу. Если на аналоговом входе температура больше 20 градусов, то двигатель должен крутиться на полную мощность (т.е. выходной сигнал должен быть 5В). если меньше, то 1В.
    при компиляции вывел ошибки. неправильно называю переменными входы-выходы. что я делаю не так?
    рисунки приложил. http://zalil.ru/upload/33886372 (не знаю, как по-другому добавить рисунки)

  8. #8
    Пользователь
    Регистрация
    31.08.2010
    Адрес
    г. Тамбов
    Сообщений
    35

    По умолчанию

    Цитата Сообщение от Fix_m Посмотреть сообщение
    nik9999, спасибо! стал разбираться, читать. уже стало понятнее.
    но остались вопросы.
    1) "OUT:=SCALE_R(PWR*10,0,1000,0,5);( * для выхода 0-5 в *)"
    Как ПЛК должен понять, что 0-5 означают вольты? а если написать 0-20, то на аналоговом выходе всё равно будет 0-10В ?
    В канал аналогового модуля из программы ПЛК передается число,
    равное желаемому выходному значению фиксированного модуля аналогового входа. Для ЦАП типа «Ток» это значения от 4 до 20, для напряжения – от 0 до10. Если записать 20, то все равно будет 10.
    Цитата Сообщение от Fix_m Посмотреть сообщение
    2) если пока не брать ПИД регулирование. Допустим, надо написать такую программу. Если на аналоговом входе температура больше 20 градусов, то двигатель должен крутиться на полную мощность (т.е. выходной сигнал должен быть 5В). если меньше, то 1В.
    при компиляции вывел ошибки. неправильно называю переменными входы-выходы. что я делаю не так?
    рисунки приложил. http://zalil.ru/upload/33886372 (не знаю, как по-другому добавить рисунки)
    Это не совсем правильно, нужен гистерезис, иначе может сильно дергать двигатель при температуре ~20!

    VAR
    HS: HYST_1;
    END_VAR

    HS(IN := PV, low:= 19, high := 21 ); (*Гистерезис в 2 градуса*)

    IF HS.Q THEN
    OUT :=5; (*Включаем мотор*)
    ELSE
    OUT :=1; (*Выключаем*)
    EBD_IF;

    PS
    Имена переменных должны отличаться от имен каналов

  9. #9

    По умолчанию

    nik9999, понял, спасибо!

    что будет между 19 и 21 градусом? двиг будет выключен или работать на средних оборотах?

    привильно ли я понимаю работу "HS.Q" ? На выходе Q блока HYST_1 будет высокий уровень, если t>21, и двиг включится (OUT :=5), будет низкий уровень, если t<19, и двиг выкл (OUT :=1) ? эти уровни логические (как 0 и 1)??
    Последний раз редактировалось Fix_m; 30.10.2012 в 09:45.

  10. #10

    По умолчанию

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

Похожие темы

  1. Программирование на SFC
    от TYER в разделе ПЛК1хх
    Ответов: 32
    Последнее сообщение: 02.11.2012, 19:02
  2. Программирование ПЧВ
    от ЕвгенийНК в разделе Эксплуатация
    Ответов: 1
    Последнее сообщение: 06.12.2011, 07:11
  3. Программирование СИ-8
    от rozhko76 в разделе Эксплуатация
    Ответов: 1
    Последнее сообщение: 10.10.2011, 10:51
  4. St программирование
    от TouchS в разделе ПЛК1хх
    Ответов: 28
    Последнее сообщение: 19.02.2010, 16:37
  5. Программирование ПЛК 100 и 150
    от незарегистрированный в разделе ПЛК1хх
    Ответов: 7
    Последнее сообщение: 27.04.2009, 10:42

Ваши права

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