Добрый день! помогите пож-та с программированием ПЛК 150.
есть датчик температуры. надо в зависимости от температуры управлять электродвигателем, скоростью его вращения (эл/двиг управляется сигналом 0-5В). кто может помочь с этой простой прогой?
Добрый день! помогите пож-та с программированием ПЛК 150.
есть датчик температуры. надо в зависимости от температуры управлять электродвигателем, скоростью его вращения (эл/двиг управляется сигналом 0-5В). кто может помочь с этой простой прогой?
Здравствуйте, Fix_m.
Проще на ТРМ10
Последний раз редактировалось Gans; 22.10.2012 в 15:55.
Автоматизация Диспетчеризация Сервис
e-mail: ads-kaluga@mail.ru
Если плк 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) и опять таки про конфигурацию задач. как добавить в цикл.выполняемую?
буду благодарен за подробный ответ.
Очень внимательно читаем PLC_Configuration_OWEN.pdf ( идет на диске с плк), конкретно стр 33, 42... Но в целом скажу, что надо все прочесть РЭ_ПЛК150.pdf, "Порядок программирования ПЛК1хх_РП.pdf" .
На мой взгляд ST, но ИМХО
Очень много вкусностей и полезностей , в доке к ней все написанно
Да
Значения этих переменных, инициализирует сама библиотека
CTRL_PID ,из диапазона 0-1000, большая часть "железных" регуляторов выдают мощность в %, первая строка и переделывает в проценты.
вторая строка диапазон 0-1000, апроксимирует на 0-5, по скольку на вых. ПЛК должно быть 0-5 в.
читаем CodeSys.pdf там все просто написанно
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 (не знаю, как по-другому добавить рисунки)
В канал аналогового модуля из программы ПЛК передается число,
равное желаемому выходному значению фиксированного модуля аналогового входа. Для ЦАП типа «Ток» это значения от 4 до 20, для напряжения – от 0 до10. Если записать 20, то все равно будет 10.
Это не совсем правильно, нужен гистерезис, иначе может сильно дергать двигатель при температуре ~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
Имена переменных должны отличаться от имен каналов
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.
Разрешите вопрос по теме?
Подскажите, как реализовать подобную программу, если мне просто нужно изменять значения на аналоговом выходе через определенно заданные промежутки времени (без всяких зависимостей от входов).
Можно ли воплотить это в жизнь на языке LD?