This is topic RS-триггер с инверсией - ERROR in forum Редактор Базы Каналов (Математика) / Channel Base Editor at Форум TRACE MODE: техническая поддержка.
RS-триггер с инверсией по выходу работает как-то странно.
Если на Set подать ноль, а инверсный Output замкнуть на инверсный Reset через атрибут канала, то триггер входит в режим автогенерации.
Если же Output не инвертировать, а пропустить через FBD-блок NOT, то генерации не происходит - как и должно быть.
Автогенерации не удалось добиться в режиме эмуляции программы, но в режиме эмуляции проекта и в режиме работы она есть.
По адресу http://stas2100.narod.ru/RS-trigger.rar лежит проект с двумя каналами и с двумя привязанными к ним программами на FBD. (правильная и неправильная)
Posted by Сафронов (Участник № / Member № 408) on :
у RS триггеров согласно справки ТМ нельзя инвертировать выходы... А у нас и PREG с инвертированным выходом работает странно.. О нем в справке вроде-бы ничего не сказано о запрете инвертирования выходов.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Это не глюк! Объясняется все очень просто: положительная обратная связь с четным количеством инвертеров с задержкой образует автогенератор тактовых импульсов. Выход и вход триггера или инвертера как раз и образуют два элемента этого кольца, потому как на каждом такте система берет значение на входе, вычисляет его и помещает на выход. Вы даже можете более наглядно увидеть это, построив замкнутую цепочку только из одних инвертеров. Для того чтобы такая цепочка вошла в атоколебания она должна содержать всегда нечетное количество инвертеров, потому как один из них всегда будет выполнять роль элемента задержки сигнала.
Posted by Kramarenko Stanislav (Участник № / Member № 119) on :
В Вашем ответе очевидное несоответствие - Вы говорите про автогенератор на нечетном количестве инверторов и это справедливо, но в случае с триггером число инверторов ЧЕТНОЕ и триггер в такой схеме должен встать в устойчивое состояние.
А как вам автогенерация без обратной связи...??? Я обновил свой проект по тому же адресу - так вот посмотрите как триггер в РАЗОМКНУТОЙ схеме генерит на выходе 1/0.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
1) Ага, а инвертирование выхода - это по-Вашему что, не элемент контура? А про то, что число FBD-инвертеров нечетное, я же пояснил, что один из низ всегда выполняет роль элемента задержки сигнала! Возьмите электрическую схему мультивибратора на транзисторах и RC-цепочке или генератор импульсов на двух вентилях К155ЛА3 и одном конденсаторе - все будет сразу понятно: четное количество инвертеров и элемент задержки, задающий частоту колебаний!
2) Что-то я не увидел в Вашем проекте ни одной РАЗОМКНУТОЙ схемы, у Вас там ВСЕ схемы замкнуты! Посмотрите внимательней привязки программ по каналам.
Posted by Kramarenko Stanislav (Участник № / Member № 119) on :
Бог с ними - с контурами - давайте с разомкнутой системой разберемся. У меня в проекте 4 (четыре) канала: 1) NotRight - замкнутый через In с FBD "RS" в Управлении; 2) Right_ - замкнутый через In с FBD "RS-not" в Управлении; 3) NotRight2 - разомкнутый с FBD "RS" в Трансляции (между аппаратным и реальным); 4) Right2 - разомкнутый с FBD "RS-not" в Трансляции (между аппаратным и реальным).
При этом при отработке на старте значения =1 в канале №3-"NotRight2" в Реальном значении происходит генерация 1/0.
И ещё - объясните мне принципиальное различие моих FBD программ "RS" и "RS-not" - с точки зрения логики они идентичны. И почему интересно эмуляция программы и эмуляция проекта работают по-разному? И как я должен строить программу, если в ней появляются какие-то скрытые элементы задержки? Если уж мне такой понадобиться, так я его сам поставлю!
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
1) Дело в том, что для RS-триггера его внутреннее состояние хранится в атрибуте канала, к которому привязан его выход, а значение для входов беруться также с атрибутов каналов. Повесив инверсию на вход и выход блока - Вы тем самым инвертируете не вход и выход блока, а привязок! Если Вы запустите отладчик в РБК (не в самом редакторе FBD, а именно отладчик РКБ по F10) переведете его в пошаговый режим и дважды кликните по каналу "NotRight2", чтобы видеть все его привязки в программе, то Вам станет все понятно. 2) С точки логики в редакторе FBD - да, идентичны! Но вот с точки зрения привязки программы к атрибутам канала - нет! Инверсия на аргументе блока и инверсия как FBD-блок - это не одно и тоже после того как Вы привяжете такие аргументы к атрибутам канала, смотрите пункт выше.
Posted by Kramarenko Stanislav (Участник № / Member № 119) on :
А если RS-триггееров несколько, и они вообще не привязаны к атрибутам каналов (после них стоит другая логика), то где они хранят своё состояние? Понаблюдал привязки в отладчике - это чудо какое-то. Так быть не должно! Если прораммы логически идентичны так и работать они должны одинаково!!!
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Свзяи между выходами и выходами FBD-блоков хранятся во внутренних переменных программы. Логически - это еще не значит функционально! Я же уже объяснил Вам разницу между инверсией аргумента и FBD-блоком Инверсии.