Вот сто лет тому назад выкладывал таймер с прямым и обратным отсчётом времени:
https://owen.ru/forum/showthread.php...l=1#post353353
Вы как будто только сегодня после обеда с луны упали, мне так кажется!
Вот сто лет тому назад выкладывал таймер с прямым и обратным отсчётом времени:
https://owen.ru/forum/showthread.php...l=1#post353353
Вы как будто только сегодня после обеда с луны упали, мне так кажется!
Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
справиться с проблемами, либо это не твои проблемы.
Раз пошла такая пьянка то тоже выложу свое.
Принципиальным считаю имена. Одно имя - одно поведение для портаций туды-сюды
Лишних полей не люблю
Запись без уступов терпеть не могу
Код:function_block TP //полный эквивалент Кодесис/Standart/TP с ТЕМ ЖЕ дебильным мерцанием при PT = 0 IN = TRUE var_input //описание полей - см справка Кодесис IN: bool; PT: udint; //мс end_var var_output Q : bool; ET: udint; //мс //++ к Кодесис/Standart/TP REM: udint; //мс, оставшееся время работы end_var var StartTime: time; end_var if Q then ET := time_to_udint(get_time() - StartTime); if ET >= PT then ET := PT; end_if Q := ET < PT; REM := PT - ET; elsif not IN then ET := 0; REM := PT; elsif ET = 0 then StartTime := get_time(); Q := true; end_if end_function_block
Последний раз редактировалось Валенок; 29.08.2025 в 17:14.
Добрый день! Подскажите пожалуста, вот на ST выражениеЖ
if LE_PR AND PUSK OR PUSK_F_RIGT AND NOT L_KONC AND NOT STOP then
MOTOR :=TRUE;
PUSK_F_RIGT:=true;
ELSE
MOTOR :=false;
PUSK_F_RIGT:=false;
А это скрин сииммуляцциии его в лоджике
end_ifbandicam 2025-08-30 10-03-58-419.jpg. вопрос _почему когда входные переменные:
LE_PR=1 PUSK=1 и L_KONC=1 выходная переменная MOTOR тоже равна 1 хотя условие and not L_KONC должно запрещать выходной переменной MOTOR true? Наверное я чегото с синтаксисом не так написал?
Влияет
OR PUSK_F_RIGT
Если написать например так
if (LE_PR AND PUSK OR PUSK_F_RIGT) AND NOT L_KONC AND NOT STOP then
то будет работать
спасибо, сейчас попробую. Только сейчас заметил что задал вопрос не втой ветке и продублировал его в ,,правильной,,
Да все верно, работает.БЛАГОДАРЮ
Операция and - это логическое умножение, or - сложение. И приоритеты у ниж такие же как в обычной математике. Т.е., в вашем случае получилось:
1 * 1 + 1 * 0 * 1 = 1 + 0 = 1. Так что выделяйте нужный порядок скобками
А еще, так, для справки, выражение not A and not B можно записать как not (A or B), ну и, также not A or not B = not (A and B)
Последний раз редактировалось Dimensy; 30.08.2025 в 11:31.
Я б ещё добавил, что если юзается чисто бинарное выражение (if else) да ещё и и с присвоением по сути результата if, то сам if не нужен, можно просто присвоить
Мотор := логическое выражение //выше норм сказали
А второй переменной (здесь) присвоить Мотор
В кодесис можно было бы сделать сквозное присвоение
Мотор := вторая переменная := логическое выражение
Теперь,наверное, в правильной ветке задам вопрос. Напмсал ФБ на ST_проверил его в симуляторе все работает ошибок нетbandicam 2025-08-30 11-42-55-798.jpg
Перенес его на основной ,,холст,, лоджика_плдключил необходимые переменные_ включаю симуляцию и две из четырех переменных привязаных к физичиским входам не активны в симуляторе (на скрине их отметил красными стрелками)
bandicam 2025-08-30 11-42-11-537.jpg. Если одну из этих ,, мертвых,, перееемеых ,,отвязываю,, от ФБ и соединяю с любым из не используемых выходов на ,,холсте,, она,,оживает,,.. Прикручиваю оббраатно - вхоод нова становиться не доступным . Может кто подскажет что с ними не так?
В качестве эксперимента отсоеденил от ФБ ,,мертвый,, *Пуск_П* и к нему прикрутил используемый в другом участке схемы физичиский вход *З_право* - вс нормально вход доступен в симуляции, значит дело не в написаном мною ФБ.bandicam 2025-08-30 11-57-30-567.jpg