Цитата:
Сообщение от ВалераМ
А с верхней просьбой моей поможете?
на скриншоте. Очень прошу. Есть еще один скрин, подобный. помогите сделать на 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 минут, если есть понимание, зачем это нужно.