|
Вопросы о программировании Вопросы, касающиеся программирования на FBD |
|
Опции темы | Поиск в этой теме |
10.04.2009, 11:12 | #1 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 159
Благодарил(а): 15 раз(а)
Поблагодарили:
665 раз(а) в 607 сообщениях
|
Определение включенного входа
Есть два метода:
быстрый (правая картинка) и медленный (левая картинка) Медленный требует малое число блоков, но задержка определения будет равна количеству входов, умноженное на время цикла программы. Если входов 10 и цикл системы 100 мсек, то время определения может доходить до секунды. Кстати, обработчик аварий в Конструкторе определяет наличие аварии именно таким методом. Схема работает следующим образом: Счётчик (1) отсчитывает количество входов. В примере это 3 входа. Мультиплексор (2) перебирает эти входы. Если какой-либо вход оказывается в единичном состоянии, то это единичное состояние через мультиплексор (2) попадёт на вход разрешения запоминания регистра (4). Регистр (4) запомнит, на каком шаге это произошло. Номер шага совпадает с номером входа. Если ещё какой-нибудь вход будет в единичном состоянии, то регистр (4) сотрёт информацию о прошлом входе и запомнит новый номер шага. Таким образом, если в единичном состоянии несколько входов, то запомнен будет только последний. Когда счётчик (1) переберёт все входы, на его выходе "QU" возникнет импульс, который сначала скопирует информацию из регистра (4) в регистр (3), а затем обнулит содержимое регистра (4). Такая операция необходима для того, чтобы дать возможность регистру (4) запомнить новую информацию, не теряя существующую, которая теперь хранится в регистре (3). Всё, определение закончено. PS. Если нужно перебрать 100 входов, то счётчику (1) нужно указать счёт до 100, а мультиплексор (2) расширить до 101 входа. PPS. Нулевой вход мультиплексора задействовать в данной схеме нельзя. Изменять порядок выполнения блоков тоже. Всё строго как на схеме: счётчик первый, мультиплексор второй, выходной регистр третий, промежуточный регистр четвёртый. __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. Последний раз редактировалось Arsie, 16.02.2012 в 11:19 |