кажется становится чуток понятнее из Вашего поста если мы хотим записать в порт входа истину, то мы пишем TimerStend.in:=true, а если хотим выполнить таймер, то пишем TimerStend(In:=true, PT:=T#0S) я правильно понял? и сам проект
кажется становится чуток понятнее из Вашего поста если мы хотим записать в порт входа истину, то мы пишем TimerStend.in:=true, а если хотим выполнить таймер, то пишем TimerStend(In:=true, PT:=T#0S) я правильно понял? и сам проект
когда в РТ пишите ноль секунд, Вы таким образом нарушаете работу таймера, для обычного ТР это сброс, а для TON и TOF это немедленная передача входа на выход. По поводу просто точки и скобок всё верно, только в скобках таймер выполняется
Bad programmers worry about the code. Good programmers worry about data structures and their relationships
среди успешных людей я не встречала нытиков
Барбара Коркоран
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
ну там все печально. какие то не законченные условия, не охватывающие весь диапазон значений, дубляж переменных для управления таймером, какой то изврат с включением выключением таймеров
Лучше напишите что требуется для управления Вашими тенами и вентилятором, опишите какие сигналы действительно должны управлять, а какие включать уже реальные устройства
Bad programmers worry about the code. Good programmers worry about data structures and their relationships
среди успешных людей я не встречала нытиков
Барбара Коркоран
Вроде запустил, убрал все лишнее. по ТЗ переменные 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);
Bad programmers worry about the code. Good programmers worry about data structures and their relationships
среди успешных людей я не встречала нытиков
Барбара Коркоран
Действительно все работает проверил на железе. оптимизировали так оптимизировали даже нечего сказать просто восхищен. Спасибо