This is topic RS-триггер с инверсией - ERROR in forum Редактор Базы Каналов (Математика) / Channel Base Editor at Форум TRACE MODE: техническая поддержка.


To visit this topic, use this URL:
http://forum.adastra.ru/ultimatebb.php/ubb/get_topic/f/2/t/000153.html

Posted by Kramarenko Stanislav (Участник № / Member № 119) on :
 
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 :
 
Это не глюк! [Усмешка / Big Grin]
Объясняется все очень просто: положительная обратная связь с четным количеством инвертеров с задержкой образует автогенератор тактовых импульсов. Выход и вход триггера или инвертера как раз и образуют два элемента этого кольца, потому как на каждом такте система берет значение на входе, вычисляет его и помещает на выход.
Вы даже можете более наглядно увидеть это, построив замкнутую цепочку только из одних инвертеров. Для того чтобы такая цепочка вошла в атоколебания она должна содержать всегда нечетное количество инвертеров, потому как один из них всегда будет выполнять роль элемента задержки сигнала.
 
Posted by Kramarenko Stanislav (Участник № / Member № 119) on :
 
В Вашем ответе очевидное несоответствие - Вы говорите про автогенератор на нечетном количестве инверторов и это справедливо, но в случае с триггером число инверторов ЧЕТНОЕ и триггер в такой схеме должен встать в устойчивое состояние.

А как вам автогенерация без обратной связи...???
Я обновил свой проект по тому же адресу - так вот посмотрите как триггер в РАЗОМКНУТОЙ схеме генерит на выходе 1/0.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
1) Ага, а инвертирование выхода - это по-Вашему что, не элемент контура? А про то, что число FBD-инвертеров нечетное, я же пояснил, что один из низ всегда выполняет роль элемента задержки сигнала! Возьмите электрическую схему мультивибратора на транзисторах и RC-цепочке или генератор импульсов на двух вентилях К155ЛА3 и одном конденсаторе - все будет сразу понятно: четное количество инвертеров и элемент задержки, задающий частоту колебаний! [clever / умный]

2) Что-то я не увидел в Вашем проекте ни одной РАЗОМКНУТОЙ схемы, у Вас там ВСЕ схемы замкнуты! Посмотрите внимательней привязки программ по каналам. [Вращающиеся глаза / Roll Eyes]
 
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-блоком Инверсии.
 


Новости АСУ ТП / News | SCADA / HMI | Обучение / Trainings | Свяжитесь с нами / Contact Us



Powered by Infopop Corporation
UBB.classic™ 6.7.2