Прошу сильно не пинать, первые шаги в освоении ST....
использовал учебник Иванова и мануал по ПР-205:
решил с простого начать:
Задача модели мониторить датчики в емкости и обрабатывать принудительный ручной запуск набора воды в емкость. Насос скважины качает соленую воду, прогоняет через осмос (в осмосе свой насос высокого давления)
и набирает емкость 750 литров до уровня FULL. включение по датчику LOW. На всякий случай аварийный датчик переполнения, если с датчиком FULL что-то произойдет.
В модели 4 клапана, один подает воду в емкость 750 литров, второй (на будущее) будет подавать воду во вторую емкость 5000 литров, если 750 наполнена уже или принудительно. Третий открывает дренаж на слив грязной воды.
Четвертый открывается чтобы подавать неочищенную воду, естественно, закрывая все остальные.(это тоже TODO...)
1. не совсем понял как в режиме симуляции в интерактивном режиме менять значения на входах реле, чтобы увидеть как работает модель.(выставлять 0 или 1 на выбранном входе и наблюдать изменения).
нашел только что можно открыт окно просмотра при запущенной симуляции и там добавить вход и в нем поменять переменную... а вот чтобы щелкнуть на виртуальную кнопку (как, например, в Proteus) такого там нет?
2. как работает в принципе функциональный блок, исполняется ли он в цикле или же разово? т.е. крутится в цикле, опрашивает входы или же выполняется как только происходит изменения на входных переменных?
или же мониторинг входов нужно вешать на триггеры, которые срабатывают при изменении одного из входов и тогда запускать на выполнение функциональный блок? Хочу понять принцип и подход. Как я понимаю, постоянно гонять
опрос входов - это грузить процессор на 100%? или тут другая ситуация?
3. как отключить насос скважины через 5 секунд после остановки насоса осмоса. Не выключается выход реле через 5 секунд. Включение насоса c задержкой 10 секунд идет нормально, клапана тоже все открываются нормально, при сбросе I4 в 0 все выключается , а PumpSKV остается работать...
d
Код:
//включение режима подачи воды из скважины и очистки ее установкой осмоса
//с подачей очищенной воды в емкость 750 литров.
function_block OsmosHomeMode
var_input
Level750_Overflow : bool;
Level750_LOW : bool;
Level750_FULL : bool;
Manual_Start : bool;
end_var
var_output
PumpSKV : bool; //выход на контактор насоса скважины
PumpOSMOS : bool; //выход на контактор насоса установки обратного осмоса
Klapan750 : bool;//клапан на емкость 750 литров для подачи в дом
Klapan5000 : bool;//клапан на емкость 5000 литров для полива
KlapanSLIV : bool;//клапан открывает дренажную трубу для слива грязной воды, концентрата
KlapanRAW : bool; //клапан подачи неочищенной воды
end_var
var
OSMOSPump_ON_Delay : SYS.TON;
SKVPump_OFF_Delay : SYS.TOF;
NeedSTOP : bool;
end_var
IF Level750_LOW or Manual_Start THEN //нажали кнопку с фиксацией или уровень упал ниже минимального
Klapan750 := TRUE; //открываем клапан на набор очищенной воды в емкость 750л
KlapanSLIV := TRUE; //открываем клапан на дренаж концентрата после осмоса
Klapan5000 := FALSE; //закрываем клапан на емкость 5000
KlapanRAW := FALSE; //закрываем клапан слива неочищенной воды
PumpSKV:=TRUE; //включаем насос скважины
OSMOSPump_ON_Delay(I:=Level750_LOW or Manual_Start,T:=T#10S,Q=>PumpOSMOS);//включение насоса осмоса через10 секунд после насоса скважины
ELSE
PumpOSMOS:=FALSE; //отключаем насос установки осмоса
Klapan750 := FALSE; //закрываем клапан на набор очищенной воды в емкость 750л
Klapan5000 := FALSE; //закрываем клапан на емкость 5000
KlapanRAW := FALSE; //закрываем клапан слива неочищенной воды
//NeedSTOP := NOT ((NOT Manual_Start) OR Level750_FULL or Level750_Overflow); //если отключится кнопка или сработает датчик наполнения или аварийный
NeedSTOP:=TRUE;
SKVPump_OFF_Delay(I:=NeedSTOP,T:=T#5S);//выключение насоса скважины через 5 секунд после насоса осмоса
PumpSKV:=SKVPump_OFF_Delay.Q; //!!! насос не выключается через 5 секунд
KlapanSLIV := FALSE; //закрываем клапан на дренаж
END_IF;
end_function_block