Триггер в 1с что это

Обновлено: 07.07.2024

Было уже много обсуждений на эту тему, захотелось выложить свой вариант (на абсолютную истину не претендую, так как то, что происходит внутри платформы 1С, для меня по-прежнему загадка, могу тока догадываться).

Нет ничего сложного в том, чтобы поместить на табличку триггер, который будет сохранять ее перед тем, как в нее будут внесены изменения, но проблема в том, что при внесении изменений в конфигурацию базы данных происходит множество действий: добавление, удаление и изменение уже существующих записей в таблице. А поскольку процесс длительный и непрерывный, то сложность заключается в том, чтобы определить, в какой момент времени необходимо сохранять данные, а в какой ничего не делать. Таким образом, задача сводится к тому, что нужно определить, когда обновление началось и когда оно закончилось.

Так как у меня MS SQL, то логика была такая:

1) Создаем табличку [master].[dbo].[sp_backup_config_tables] полную копию Config.

2) Ставим триггер на таблицу [Config] который при первом выполнении сохраняет таблицу в [sp_backup_config_tables] , а также добавляет еще одну запись в нее (признак того, что идет обновление) , а все последующие транзакции к таблице проверяются на этот признак и, если он есть, то ничего не делают, и на последней транзакции мы удаляем этот признак из таблицы.

Довольно простой алгоритм. Единственная сложность в котором была, это определить окончание обновления, то есть момент, когда этот признак удалить из таблички. Для этого пришлось понять, что происходит в момент обновления конфигурации. Написал три простеньких триггера, соответственно на: добавление, удаление и обновление. Которые писали бы информацию о своем действии в таблицу [Master].[dbo].[Config_Insert] :

Получилось много статистической информации, к примеру:


После анализа нескольких таких таблиц выяснил, что достаточно одного триггера на добавление.

Так как даже на данном примере видно, что 1С сперва производит добавление новых записей в таблицу, а уже потом их обрабатывает.

В ходе анализа статистической информации из таблицы [Master].[dbo].[Config_Insert] выяснилось, что само обновление представляет из себя просто последовательную запись в таблицу строк содержащих файлы метаданных и файлы описаний конфигурации (обезательные “root”,”version”,”versions”) , а также, что существует несколько вариантов обновления (если судить по изменениям в таблице Config) :

1) Обычное штатное обновление

3) Последующие динамические обновления (все динамические обновления после «первого»)

4) Штатное обновление после динамического (при шатном обновлении происходит реструктуризация таблицы Config и стирается вся информация о динамическом обновлении, удаляются все записи с “_dynupdate_” и запись “DynamicallyUpdated”)

5) Отказ от внесения изменений (при любом из вышеперечисленных изменений, конфигуратор попросит вас подтвердить внесения изменения, но при этом в таблицу Config уже будут добавлены записи об изменениях с дополнением “_new” к имени файла и, если вы откажитесь, то они просто будут удалены.)

Я смог выделить только эти варианты (возможно есть еще что-то, что я не увидел).

Именно 5-ый пункт стал решающим при выборе типа триггера, так как мы должны закончить все наши «манипуляции» до момента «принятия решения» (подтверждения обновления в конфигураторе). По этому тип триггера “insert” .

Далее оставалось только учесть в алгоритме триггера все 4 варианта обновления.

Во всех 4 случаях будет запись с именем “ root” – так что её можно использовать как признак окончания операции. И, исключив из проверки частные случаи первых 4-х пунктов в виде записей 'dbStruFinal', 'dynamicCommit', 'DynamicallyUpdated', 'root', 'version', 'version', получаем рабочий триггер:

Данный триггер проверен на платформах 8.2.19.83 и 8.3.5.1231 . И исправно служит для конфигруций «Комплексная автоматизация», «Зарплата и Управление персоналом», «Бухгалтерияя предприятия 2.0» и «Бухгалтерия предприятия 3.0».

Механизм триггеров позволяет автоматизировать выполнение различных действий пользователей. Использование механизма позволяет сократить время работы пользователей с программой, уменьшить количество ошибок при вводе данных, обеспечить соблюдение регламентов по работе с программой.

Механизм триггеров является универсальным и расширяемым. Можно настроить триггеры для решения ряда задач без привлечения программистов. Например, можно создать триггер, который уведомит клиента о поступление от него денег или оповестит коммерческого директора о выставление клиенту коммерческого предложения на 1 миллион.

При необходимости механизм триггеров может быть расширен для решения различных задач. Расширение механизма триггеров выполняется 1С программистом без внесения изменений в код программы и не влияет на обновление программы в будущем.

Как устроены триггеры?

Триггеры — это настройки программы описывающие события системы, условия и действия которые нужно выполнить. Каждый триггер обязательно содержит:

  • Условие срабатывания триггера — событие, которое вызовет срабатывание триггера и условие, при соблюдении которого будет выполнено действие триггера.
  • Действие триггера — действие, которое необходимо выполнить при срабатывании триггера и выполнении заданного условия.

Программа уже содержит условия срабатывания триггеров и действия триггеров, которые можно использовать в произвольном сочетании при создании новых триггеров. Например, программа содержит условие срабатывания триггера «При записи входящего электронного письма (проверка связи с Интересом клиента)». Данное условие будет выполнено при получении ответа на электронное письмо, отправленное клиенту из документа Интерес клиента. Подробное описание примеров использования поставляемых условий срабатывания триггеров и действий триггеров приведено в статье «Примеры настройки механизма триггеров».

При необходимости можно создавать новые условия срабатывания триггеров. Например, добавить условие срабатывания триггера при создании Коммерческого предложения клиенту (дополнительно можно настроить ограничение по сумме предложения). Более сложные условия создаются программистом 1С.

Новые действия триггеров могут быть добавлены в систему только программистом 1С.

Информация!

Обычно триггеры срабатывают при изменении данных пользователем программы. Но можно настроить триггер, который будет срабатывать по заданному расписанию. Настройка триггеров описана в разделе Настройка срабатывания триггера по расписанию.

Добавление и настройка триггера

Добавлять и настраивать новые триггеры может только администратор системы. Для добавления нового триггера:

  1. Откройте список триггеров Настройки — НСИ — Триггеры и нажмите кнопку Создать.
  2. Заполните наименование триггера.
  3. Выберите условие срабатывания триггера.
  4. Нажмите на пиктограмму «шестеренка» напротив условия срабатывания триггера и выполните настройку.
  5. Выберите действие триггера.
  6. Нажмите на пиктограмму «шестеренка» напротив действия триггера и выполните настройку.
  7. Включите триггер. Установите флаг Включен.

Добавление нового триггера

Добавление нового триггера

Создание нового условия срабатывания триггера

Если в списке условий срабатывания триггера нет подходящего условия, тогда создайте новое условие. Например вы можете настроить условие срабатывания триггера при записи документа Коммерческое предложение. Для этого:

  1. Откройте список условий срабатывания триггеров Настройки — НСИ — Условия срабатывания триггеров и нажмите кнопку Создать.
  2. В поле Тип объекта выберите значение Документ.
  3. В поле Объект обработки выберите объект связанный с триггером, в нашем примере это Коммерческое предложение клиенту.
  4. В поле Событие выберите При записи.

Создание нового условия срабатывания триггера

Создание нового условия срабатывания триггера

Важно!

Не следует выбирать в поле Событие значение, отличное от При записи. Изменение данного значения допускается только программистом 1С.

Описанным способом создаются простые условия срабатывания триггеров. Новые сложные условия добавляются программистом 1С.

Настройка условий срабатывания и действий триггера

Для работы триггера необходимо отдельно выполнить настройки условий и действий триггера. Для этого:

  • Найдите и откройте настраиваемый триггер.
  • Нажмите на пиктограмму «шестеренка» напротив условия срабатывания триггера и выполните настройку.
  • Нажмите на пиктограмму «шестеренка» напротив поля действие триггера и выполните настройку.

Настройка условий срабатывания и действий триггеров

Настройка условий срабатывания и действий триггеров

Настройка сложных условий индивидуальна и здесь не описана. Настройка простых условий выполняется в стандартном окне. Например на скриншоте ниже описана настройка условия срабатывания «При записи коммерческого предложения». Установлен отбор по полю «Сумма документа». Условие отработает в случае если сумма предложения больше 1 000 000.

Триггеры. Автоматизация работы пользователей

Настройка простых условий

Повторное срабатывание триггера в случае ошибки выполнения

При необходимости можно включить срабатывание триггера в случае невозможности его выполнения. Необходимость повторного срабатывания триггера включается в его настройках.

Изменить состояние интереса, обработка проведения

Настройка отложенного выполнения триггера

Настройку рекомендуется использовать в триггерах, изменяющих данные, например в триггере, который изменяет состояние Интереса. С включенной настройкой триггер изменит состояние Интереса, даже если в момент его срабатывания Интерес был заблокирован для изменения. Дополнительно в настройках можно указать что триггер должен сработать в случае, если в Интересе было изменено состояние (например состояние было изменено пользователем на форме Интереса).

Отложенное выполнение триггеров

При необходимости можно в настройках триггера можно указать, через какой период после срабатывания триггера будет выполнено его действие. Настройка расширяет возможности автоматизации различных операций.

Изменить состояние интереса, обработка проведения

Настройка отложенного выполнения триггера

Настройка срабатывания триггера по расписанию

Обычно триггеры срабатывают при изменении данных пользователем программы. Но можно настроить триггер, который будет срабатывать по заданному расписанию. Для настройки запуска триггера по расписанию нужно:

Расписание

  • Открыть триггер и выбрать условие срабатывания триггера По расписанию.
  • Нажать на пиктограмму и выполнить настройку расписания.

Настройка расписания срабатывания триггера

Настройка расписания срабатывания триггера

Пример настройки расписания

Пример настройки расписания

Для ежедневной работы триггера необходимо в поле Повторять каждые установить 1. На закладке Дневное можно уточнить периодичность срабатывания триггера в течение дня.

Информация

  • Открыть список регламентных заданий Настройки — Поддержка и обслуживание — Регламентные и фоновые задания.
  • Найти в списке по имени триггера регламентное задание, выделить его и нажать на кнопку Выполнить сейчас.

Важно!

Если база работает на сервере «1С», тогда триггер сработает сразу после настройки и включения. К срабатыванию ранее включенного триггера приводит также изменение его расписания или названия.

Настройка действий триггеров

Настройка действий триггеров индивидуальна. Настройка поставляемых с решением действий описана в разделе Примеры настройки механизма триггеров.

Из объекта — получатель берется из выбранного реквизита объекта вызвавшего срабатывание триггера. На скриншоте ниже выбран реквизит Контакт документа Коммерческое предложение указанного в условие срабатывания триггера.

Указанный — выбирается конкретный получатель оповещения.

Из связанного интереса или другие варианты описаны в разделе документации Примеры настройки механизма триггеров.

Также необходимо заполнить следующие поля:

Триггеры. Автоматизация работы пользователей

Повторное срабатывание триггера

Информация!

Триггеры, в которых используется условие срабатывания По расписанию, не имеют ограничения по числу срабатываний.

Журнал работы триггера

Журнал работы триггера предназначен для мониторинга корректности работы триггеров. Поэтому ошибки работы триггеров всегда записываются в журнал работы триггеров. Рекомендуем регулярно формировать отчет Настройки — Отчеты — Журнал работы триггера с установленным отбором Только ошибки. Ошибки в журнале регистрации означают, что триггер не сработал. Для анализа причины появления ошибки необходимо привлечение 1С программиста.

При необходимости мониторинга срабатывания триггеров можно включить регистрацию работы триггера в журнале регистрации. Для этого:

  1. Выберите триггер в списке Настройки — НСИ — Триггеры.
  2. Установите флаг Регистрировать в журнале все срабатывания.

Рекомендуем включать данную настройку временно на период отладки работы триггера.

Расширение возможностей механизма триггеров

При необходимости возможности триггеров можно расширить для решения различных бизнес- задач. Данная работа выполняется программистом 1С без внесения изменений в код программы. То есть расширение возможностей триггеров не требует снятия конфигурации с поддержки и как следствие — отказа от автоматического обновления программы.

Создание и настройка триггеров выполняется путем создания новых условий срабатывания триггеров и новых действий триггеров. При этом параметры и логика работы задаются во внешних обработках «1С».

Внешняя обработка состоит из:

  • объекта срабатывания триггера;
  • параметров работы условия или действия, настраиваемых индивидуально для каждого триггера;
  • формы ввода параметров пользователем;
  • набора обязательных функций модуля обработки.

Параметры работы условия или действия сохраняются в реквизитах и табличных частях внешней обработки. Формой ввода параметров является форма внешней обработки с именем Форма.

Добавление новых сложных условий срабатывания

Условие срабатывания может быть простым (условие срабатывания триггера проверяется с использованием системы компоновки данных) или сложным (логика проверки описана во внешней обработке «1С»). Для сложного условия срабатывания триггера необходимо:

Загрузка внешней обработки проверки условия срабатывания триггера

Для корректной работы внешняя обработка должна содержать экспортную функцию Выполнить Проверку() и реквизит Объект Проверки. Функция проверяет условие срабатывания триггера для объекта проверки и возвращает результат проверки (Истина или Ложь).

Добавление новых действий триггеров

Для создания нового действия триггера нужно:

  • Создать внешнюю обработку «1С».
  • Открыть форму нового действия триггера и загрузить внешнюю обработку «1С».

Для корректной работы внешняя обработка должна содержать экспортную функцию Выполнить Действие() и реквизит Объект Действия. Функция выполняет действие для объекта срабатывания триггера и возвращает результат выполнения (Истина или Ложь). В случае, если функция возвращает Ложь будет создана новая запись об ошибки в журнале работы триггера.

Отладка внешних обработок

Внешние обработки для условий и действий триггеров можно отлаживать в конфигураторе. Для этого:

В прошлой статье мы рассказали о триггерах и о том, как они могут помочь автоматизировать рутинные операции менеджера.

Сейчас мы рассмотрим, как это реально работает в программе. Для этого мы настроили этапы продаж для одного бизнес-процесса и для каждого из них -триггеры.

Наша организация ООО Ромашка работает по следующему сценарию:

Менеджер проводит холодный обзвон по клиентской базе. При выявлении интереса клиенту отправляется письмо с информацией о компании и об услугах. На следующий день менеджер перезванивает клиенту, выявляет потребность и после готовит КП. При формировании предложения на сумму более 100000 рублей нужно уведомить руководителя. После отправки КП клиент принимает решение, и менеджер оформляет договор и счет, отправляет покупателю. После этого необходимо проконтролировать оплату и оформить отгрузку.

Работа ведется в программе «1С:CRM3.0», для которой настроен обмен данными с «1С:Бухгалтерия предприятия 8».

Этапы бизнес-процесса выглядят так:

1. Отправка информационного письма;

2. Подготовка предложения/КП;

5. Интерес закрыт (потерян).

В программе этапы продаж с настроенными триггерами выглядят так (рис. 1):

Этап 1. Отправка информационного письма

Менеджер проводит холодный обзвон по клиентской базе. При выявлении потребности у клиента создает сделку (Интерес). При попадании сделки на первый этап автоматически формируется по шаблону и отправляется информационное письмо клиенту.

Триггер формирует задачу менеджеру «Перезвонить клиенту» с целью уточнения, получил ли клиент письмо и организации дальнейшей работы (рис. 3). При необходимости можно вручную откорректировать дату следующего звонка.

Этап 2. Формирование коммерческого предложения

В день, когда запланирован звонок, на рабочем столе менеджера появляется информация о запланированном взаимодействии. Менеджер перезванивает клиенту, уточняет запрос и формирует коммерческое предложение. При проведении документа «Коммерческое предложение» в программе триггеры пересчитывают потенциальную выручку (рис. 4), отправляют письмо руководителю (т.к. у нас сумма документа больше 100 000 рублей) (рис. 5), переводят интерес на следующий этап (рис. 6), формируют задачу нашему менеджеру -планируют следующий звонок (рис.7).

Этап 3. Контроль получения КП клиентом. Выставление счета.

Менеджер перезванивает по запланированной задаче клиенту. Клиент просит выставить счет. Менеджер на основании коммерческого предложения в один клик формирует счет на оплату. Отправляет его по почте. Триггеры автоматически переводят интерес на этап «Счет» (рис. 8), формируют задачу менеджеру (рис. 9).

Этапы 4,5,6. Счет, Отгрузка, закрытие интереса.

Как было уже сказано выше, у нашей гипотетической организации настроен обмен между «1С:Бухгалтерия предприятия» и «1С:CRM». Сформированный Счет на оплату из CRM попадает в Бухгалтерию.

Бухгалтер отражает оплату и отгрузку в «Бухгалтерии предприятия». Информация об этом через обмен данными попадает в «1С:CRM». Триггеры автоматически завершат интерес, переведя его в состояние «Завершено успешно» (рис.10).

Такая настройка этапов продаж и автоматизация её триггерами, во-первых, сокращает рутинные операции, во-вторых, облегчает работу менеджеров, тем самым освобождая им время для других задач.

Исключается и влияние человеческого фактора в части действий менеджера при работе с клиентами. Программа предотвратит такие проблемы, как:

2) Забыли проинформировать руководителя о какой-либо информации о сделке;

3) Не изменили этап сделки;

Также триггеры сводят на нет случаи, когда менеджер работает по интересу, еще не запланировал следующее взаимодействие, а программа аварийно завершила работу программы по тем или иным причинам. Триггеры в любом случаю создадут взаимодействие и клиент не останется без внимания.

Использование механизмов триггеров позволяет сократить время работы пользователей с программой, уменьшить количество ошибок при вводе данных, обеспечить соблюдение регламентов по работе с программой.

Хотите автоматизировать продажи, навести порядок, исключить человеческий фактор и увеличить прибыль компании?

Базовым элементом памяти является триггер . Устройство, предназначенное для хранения одного бита информации.

Для более полного понимания вопроса рекомендуется посмотреть статью про элементы памяти . Если без подробностей, то у базового элемента памяти три рабочих режима. Хранение , установка и сброс . Возможность запоминания бита информации приходит при дополнении этой схемы несколькими элементами.

D-триггер это такая же ячейка памяти, но с дополнительной логикой. Она позволяет при высоком уровне сигнала C запоминать состояние линии D . При этом если D нулевая, то триггер сбрасывается, а если D единица, то триггер устанавливается. Таким образом, происходит как бы запоминание сигнала на входе. Единственный недостаток такой схемы это именно срабатывание по высокому уровню тактирующего сигнала.

Промышленные триггеры работают по фронту или спаду тактирующего сигнала.

Если собрать триггер из двух одинаковых половинок, то можно обеспечить тактирование по фронту.

При низком уровне тактового сигнала содержимое D записывается в зеленую половину, но как только низкий уровень тактирующего сигнала сменяется на высокий, содержимое зеленой половины записывается в красную. Состояние линии D записывается в триггер только по переднему фронту тактового сигнала. При этом записанный бит появляется на выходе Q .

Описание элемента памяти на языке Verilog

В языке Verilog для описания триггеров предусмотрена довольно простая конструкция. Это процедурный блок, где в списке чувствительности значится передний фронт тактового сигнала. Для переднего фронта предназначено слово posedge , для заднего фронта negedge .

Внутри процедурного блока присвоение выходу входного сигнала. Если бы в списке чувствительности не значился тактовый сигнал, то такое описание означало бы просто провод. Но тактовый сигнал означает действие только по переднему фронту. Все время между фронтами состояние выхода запоминается и запоминает его D-триггер .

Как мы помним , в состав логической ячейки ПЛИС кроме LUT таблицы входит еще элемент памяти. Это D-триггер с разрешением и асинхронным сбросом. Опишем такой элемент при помощи языка Verilog. Для того чтобы сбрасывать состояние триггера не зависимо от тактового сигнала, необходимо в списке чувствительности указать еще один сигнал, по фронту которого произойдет некоторое событие.

Описание D-триггера с асинхронным сбросом и разрешением Описание D-триггера с асинхронным сбросом и разрешением

Нам нужен сброс. Внутри процедурного блока опишем действие, происходящее по высокому уровню сигнала сброса. На выход модуля отправляется ноль. Иначе если сброса нет, то будет происходить другая работа. В случае сигнала разрешения происходит запоминание входного сигнала. Соответственно, если разрешения не будет , то и запоминание не произойдет.

Промоделируем этот триггер. Для этого разработаем модуль теста.

Количество проводов соответствует количеству входов и выходов триггера. Вписываем триггер в состав теста. Соединяем его входы и выходы с проводами. Каждые 50 пикосекунд состояние тактовой линии будет меняться на противоположное. Чтобы это все заработало, нужно задать начальное состояние тактовой линии и сделать это можно в секции initial begin . В начальный момент времени среди всех входных сигналов и у тактовой линии есть какое-то состояние. Посмотрим результат моделирования.

Тактовый сигнал ( clk ) подается непрерывно. В какой-то момент времени сигнал сброса ( aclr ) привел триггер в состояние нуля из состояния неопределенности. Неопределенность это либо ноль либо единица. Это неизвестно, потому как начальное состояние триггера нигде не было указано. Поступление единицы на вход D ни к чему не приводит, потому, что сигнал разрешения нулевой.

Потом в тесте разрешим работу триггера ( en=1 ) и отправим на некоторое время единицу на вход D . Как раз, в момент прихода переднего фронта тактового сигнала бит единица записался в триггер и оказался на его выходе. Как только состояние входного бита изменилось, то запись не произошла сразу, для записи опять же необходим передний фронт тактового сигнала. На этом этапе нужно особенно внимательно подойти к пониманию этих процессов, иначе потом будет непросто.

Использование элементов памяти в модулях поведенческого стиля описания

Теперь посмотрим как ненавязчиво создавать элементы памяти и не перегружать схемы структурным стилем описания. При структурном стиле мы вынуждены описывать экземпляры триггеров и соединять их проводами. Но все можно делать более незаметно. Ниже описание триггера и конъюнкции, причем запоминание результата происходит по переднему фронту тактового сигнала.

После простейших элементов И, ИЛИ, НЕ переходим к более сложным, но не менее важным элементам цифровой техники - триггерам.

Триггер - логический элемент с двумя устойчивыми состояниями - один из основных элементов цифровой техники. В серии микросхем ТТЛ, ТТЛШ, КМОП и другие обязательно входят те или иные его разновидности. Но если в арсенале радиолюбителя таких микросхем нет, триггер можно составить из других элементов, а именно из элементов ИЛИ-НЕ или И-НЕ.

На рис. 1 (вверху), изображен RS -триггер, составленный из логических элементов ИЛИ-НЕ. В режиме хранения информации, т.е. при напряжениях низкого уровня (лог. 0) на входах S и R - он может находиться, в одном из двух состояний: иметь высокий уровень (лог. 1) на выходе элемента DD1.1 и низкий на выходе DD1.2 или, наоборот, низкий на DD1.1 и высокий на DD1.2. (черточка над буквой обозначает инверсию). Устанавливают триггер в то или иное состояние подавая на вход S или R напряжение высокого уровня. Это может быть и очень короткий, на пределе физического быстродействия микросхемы, импульс напряжения высокого уровня.

Рис. 1. Схемы построения RS-триггеров из элементов И-НЕ и ИЛИ-НЕ и их условное обозначение. Рис. 1. Схемы построения RS-триггеров из элементов И-НЕ и ИЛИ-НЕ и их условное обозначение.

RS-триггер можно составить и из элементов «И-НЕ» (рис. 1, нижний ряд). Здесь режиму хранения информации соответствует напряжение высокого уровня на входах S и R. Напряжение низкого уровня, поданное на вход S, переведет триггер в состояние 1. Оно же, но поданное на вход R, установит триггер в состояние 0. Таблицы истинности для этих двух вариантов построения RS-триггеров приведена ниже.

Рис. 2. Таблица истинности для двух вариантов выполнения RS-триггера. Рис. 2. Таблица истинности для двух вариантов выполнения RS-триггера.

Для наглядности построим диаграмму работы RS триггера из элементов ИЛИ-НЕ.

Обратите внимание, что при наличии 1 на одном из входов, изменение уровня на другом входе не изменяет состояние триггера. И еще, при наличии уровня 0 на обоих входах состояние выводов не определено и информация может быть утеряна. Кроме того, изменение уровней на входах триггера для изменения его состояния происходит одномоментно.

Вверху ряд кнопок. Первые пять слева - доступные элементы. Base - базовые элементы логики. Там, где после названия (fi) - международное обозначения элементов. Chips - микросхемы серии 74. In - тумблеры и клавиши. Cut - индикаторы, целых восемь цветов светодиодов! Есть и семисегментные, и жидкокристаллические. Misk - здесь lgic "0" - общий провод, logic "1" - напряжение питания. Clock - генераторы импульсов с указанной частотой.

Далее действия с файлами. Можно записать файл схемы в собственном формате программы. открыть ранее записанный, создать новый. Схему можно увеличить, нажав на Zoom.

Ну а теперь простейшая схема. Берем NOT, генератор 0,5 Гц и светодиод. Внизу у символа генератора, если подвести туда курсор, обнаружится контактная площадка. Нажимаем левую кнопку мыши и тянем линию к контактной площадке входа инвертора и опять щелкаем той же клавишей - соединение есть, и т.д. На значке генератора бегает вертикальная черточка и меняется цвет полоски, по которой она бегает: светлая полоска - на выходе 1, темная - 0. Проводники тоже меняют цвет: если провод зеленый - на нем 1, если темный - 0. Получается вот такая схема:

Видите, на входе инвертора 1, а на выходе 0, светодиод не светится. Можно поставить несколько инвертеров в ряд, а к выходу каждого подсоединить светодиод. Да, чтобы убрать какой-либо элемент нужно навести на него курсор, он выделится, а затем нажать клавишу Delete.

Ну а теперь вернемся к RS-триггеру. Мы знаем, что состояние такого триггера можно изменить путем одновременного изменения уровней на входах. Поэтому на один вход подадим импульсы непосредственно с генератора, а на другой - через инвертор. Вот что получается:

От генератора на один из входов триггера подается низкий уровень, а на другой - высокий ЛУ с выхода инвертора. В результате на прямом выходе - 1 (горит красный светодиод), а на инверсном выходе - 0 (зеленый не горит).

Теперь на верхнем входе триггера - 1, а на нижний вход через инвертор пришел 0. В результате красный светодиод гаснет, а зеленый - загорается. Обратите внимание, что высокий ЛУ с выхода нижнего элемента И-НЕ подается на вход верхнего элемента. Это положительная обратная связь, которая и удерживает триггер в одном положении, пока не изменятся уровни на его входе.

Читайте также: