Показать сообщение отдельно
Старый 26.02.2019, 13:27   #739
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 117
Благодарил(а): 15 раз(а)
Поблагодарили: 660 раз(а) в 604 сообщениях
По умолчанию Ответ: FBD чайникам

Цитата:
Сообщение от ВалераМ Посмотреть сообщение
А с верхней просьбой моей поможете?
на скриншоте. Очень прошу. Есть еще один скрин, подобный. помогите сделать на SMlogix
Итак:

1) F_TRIG №0 - это детектор спада. Спад по английски называется Fall. Move - в данном применении выполняет функцию либо регистра-защёлки, либо мультиплексора, либо демультиплексора. Скорее всего функцию демультиплексора.

2) BLINK - обычный генератор для лампы, которая мигает как маячок. Собственно, в нашей библиотеке макросов есть макрос маячка, чтобы не делать эту функцию вручную.

3) Маячок используется не по назначению, но в данном случае это не мешает - повезло, что счётчик CTUD ловит фронты на счётном входе, а не уровень. А вот последующий ADD может отработать с ошибкой, т.к. перенос осуществляется не мгновенный, а в течении 500 мс. Это явный алгоритмический ляп, из-за которого пришлось ставить блок R_TRIG №4. Блок сложения в конце одновременно выполняет функцию защёлки результата (блокировкой входных данных). Похоже, складываются какие-то аналоговые величины в виде накопительного кольцевого буфера.

4) Блок DIV делит результат счёта на 20. Счётчик тоже считает до 20 и схема очень похожа на плавное наращивание аналоговой величины от 0 до 100%.

5) Результат деления в виде плавно наращиваемой величины никому не нужен, поэтому можно сделать предположение, что эта схема является всего лишь усредняющим фильтром, реализуемом на двух блоках что в Кодесисе, что в Степе, что Лоджике. Собственно "trig3" совместно с блоком MOVE #12 как раз и занимается тем, что отсекает выход в процессе накопления и усреднения.

6) Блоки №14, №15 и №16 занимается обнулением кольцевого буфера каждый раз, как счётчик досчитает до 20.


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

Логика работы схемы следующая: по сигналу режим = 1 на выход схемы каждые 20 циклов передаётся входная величина и затем она же, но усреднённая по 20 выборкам. По смене сигнала на режим = 0 входная величина передаётся без усреднения.






PS. Я потому редко выполняю просьбы о преобразовании или примерах программирования, потому что невинный вопрос "как заменить блок" или "покажите пример" выливается в потерю часа-двух-трёх времени на анализ задачи. Сейчас это время было откушено от других посетителей форума и техподдержки. Кольцевой буфер "набросать" на Лоджике дело примерно 10 минут, если есть понимание, зачем это нужно.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием