Сразу уж TP_20180219, через какое-то время TP_20180923 и так далее.
Представляете как будет выглядеть перечень ФБ? Вообще ни одну схему составить не получится, только и будешь, что список ФБ прокручивать.
Вывод -- не нужно никаких TP_NEW.
Вид для печати
Если ТР будет использоваться внутри схемы с неизменным выставленным временем никаких ошибок от нового ТР и не будет. Их и сейчас нет, если ТР используется с указанным временем больше нуля.
Вся загвоздка вызвана только тем, что кто-то хочет реализовать ТР со сбросом путем записи PT=0, которого в ОЛ просто нет.
Вы не учитываете, что у кого-то может использоваться TP с нулевой уставкой времени.
И у этого кого-то, на этой нулевой уставке может вся схема держаться.
Если поменять поведение, то схема может сломаться.
Поэтому подобные изменения TP и других блоков вредны. Они лишь дестабилизируют ОЛ в угоду маргиналам, которым лишь бы с PT=0 поразвлечься.
еще один аспект, как диагностировать. Например уставка формируется динамически, программист уверен что она не нулевая, а на самом деле из-за ошибок, на таймер подается ноль, сейчас что в ОЛ, что в КДС можно обнаружить импульс/ы, а предложение что то изменить приведдет к тому что если при нуле ничего не будет происходить где искать причину.
Код:/* ------------------- TP ------------------- */
TP::TP()
{
IN = false;
PT = 0;
_M = false;
_StartTime = 0;
Q = false;
ET = 0;
}
TP::TP(unsigned long PT)
{
IN = false;
TP::PT = PT;
_M = false;
_StartTime = 0;
Q = false;
ET = 0;
}
boolean TP::Run(boolean IN)
{
TP::IN = IN;
if (!_M) {
if (TP::IN) {
_M = true; // взводим флаг М
_StartTime = millis();
if (ET < PT)
Q = true;
}
} else {
if (Q) {
ET = millis() - _StartTime; // вычисляем время
if (ET >= PT)
Q = false;
} else {
if (!TP::IN) {
_M = false;
ET = 0;
}
}
}
return Q;
}
Код реализации ТР на ПК - паразитных импульсов при PT=0 НЕТ. что не так с программированием ?
Владимир Ситников если в программе кому-то необходим импульс, то человек просто будет использовать R_Trig без всяких TP с нулевой уставкой. Нет?, я ошибаюсь и применять будут именно ТР ?
capzap ну, наверное будут, зная фича-багу, что при 0 импульс есть. Соглашусь. Но лично меня подобные поведения всегда пугали и подобное никогда не использовал.
Что вы докапались до ТР , при нулевых уставках так же работает R ,F триггер ,а так же блинк при нулях будет выдавать период 2цикла и счетчик будет считать импульсы если вы его прицепите ко входу и будите дергать питание ,а на входе будет 1.А так же D триггер отработает фронт по входу С. Все ФБ которые работают по фронту отработают при включении питания ,если на входе ранее стояла 1....Это знают все электронщики .!