кажется становится чуток понятнее из Вашего поста если мы хотим записать в порт входа истину, то мы пишем TimerStend.in:=true, а если хотим выполнить таймер, то пишем TimerStend(In:=true, PT:=T#0S) я правильно понял? и сам проект
Вид для печати
кажется становится чуток понятнее из Вашего поста если мы хотим записать в порт входа истину, то мы пишем TimerStend.in:=true, а если хотим выполнить таймер, то пишем TimerStend(In:=true, PT:=T#0S) я правильно понял? и сам проект
когда в РТ пишите ноль секунд, Вы таким образом нарушаете работу таймера, для обычного ТР это сброс, а для TON и TOF это немедленная передача входа на выход. По поводу просто точки и скобок всё верно, только в скобках таймер выполняется
IF NOT Start_Button AND tonhot.Q=FALSE THEN
timerHot:=TRUE;
tofHot.IN:=TRUE;
END_IF;
tonhot(in:=timerHot, pt:=T#10S);
IF tonHot.Q=TRUE THEN
timerHot:=FALSE;
END_IF
tofhot(in:=tonhot.Q, pt:=T#5S);
IF tofHot.Q=FALSE THEN
timerHot:=TRUE;
END_IF
исправил. работает, но на сколько корректно оформил не знаю
Форумчане добрый вечер. не могу запустить генерацию на TOF TON таймерах. работа горит, а болезнь по кругу водит генерацию пытаюсь запустить в подпрограмме Hot_Cam
ну там все печально. какие то не законченные условия, не охватывающие весь диапазон значений, дубляж переменных для управления таймером, какой то изврат с включением выключением таймеров
Лучше напишите что требуется для управления Вашими тенами и вентилятором, опишите какие сигналы действительно должны управлять, а какие включать уже реальные устройства
Вроде запустил, убрал все лишнее. по ТЗ переменные Temp_Ch1 - это термопара с нее берутся значения температуры и если они меньше заданной температуры (Temp_Ch1z - заданная температура (35градусов для отладки)) на 20%(28 градусов для отладки) то просто включаются два (переменные выхода q5,q6) пускателя которые управляют нагревателями и они остаются включенными до тех пор пока температура не превысит 28 градусов. Как только температура превысила 28 градусов в дело вступает примитивный ПИД регулятор который включая и выключая пускатели нагревателей подтягивает температуру к заданной и вся эта температура должна поддерживаться на протяжения времени цикла как только время цикла закончилось то и все выключилось на протяжении всего цикла вентилятор q9 включен
так попробуйтеКод:IF Hot_Run=TRUE AND Hold_Run=FALSE AND Start_Button=TRUE AND VarBOOL2=TRUE THEN //Условие для работы камеры нагрева
q9:=TRUE; // включаем вентилятор камеры нагрева
//timerHot:=FALSE; // Выключаем таймер нагрева
END_IF;
//Условие на включение ПИД, включится когда температура на термопаре будет больше заданной температуры за минусом 20% и меньше или равна заданной
timerHot:=FALSE;
IF Temp_Ch1>(Temp_Ch1z-(Temp_Ch1z*0.2)) AND Temp_Ch1<=Temp_Ch1z THEN
timerHot:=TRUE; //Переменная для запуска таймеров будет менятся в зависимости от того какой таймер сработал
ELSIF Temp_Ch1<=(Temp_Ch1z-(Temp_Ch1z*0.2)) AND pid=FALSE THEN
q5:=TRUE;
q6:=TRUE;
ELSE
q5:=FALSE;
q6:=FALSE;
END_IF;
//
IF tonhot.q THEN
q5:=NOT q5;
q6:=NOT q6;
END_IF;
tonHot(in:=NOT tonHot.Q AND timerHot, pt:=T#2S);
Действительно все работает проверил на железе. оптимизировали так оптимизировали даже нечего сказать просто восхищен. Спасибо