Я вот искал, да не нашел этот макрос. Если можно, прошу хотя бы подсказать, как это реализовать :). Носом на страницу обсуждения тыкнуть)
Вид для печати
Я вот искал, да не нашел этот макрос. Если можно, прошу хотя бы подсказать, как это реализовать :). Носом на страницу обсуждения тыкнуть)
О сколько :)
Благодарю. Изучу.
От себя же выкладываю два макроса, аналоги ФБ TOGGLE и INTERLOCK из Oscat библиотеки.
Обоими активно пользуюсь в CodeSys.
Вот что значит называть одно и то же разными словами TOGGLE это же обычный Т-триггер (счетный) ,как принято говорить у электронщиков ,макрос которого был то же давно ,но это и не страшно ,пусть будет да же одно и то же с разными названиями ,кому что привычней .
Не электронщик я. Да.
Каюсь, не стал искать аналог в той здоровой теме на >300 страниц. Тут просмотрел, нету, выложил. Если автор Т-триггера сюда выложит свой макрос, тоггл удалю :)
Я ж говорю ,повторение- мать учению .Выкладывайте все
а зачем паролить макросы?
PS лично я не буду использовать то, не зная что внутри.
Интересно ,а что внутри FTRIG :D ,Вам то зачем чужие макросы ,вы сами нарисуете любой ;) :) .Хотя ,согласен ,осадок какой то есть ,но цели могут быть разные и автор имеет право действовать по своему усмотрению .:rolleyes: не смотря на любознательность вторых лиц :cool:
Всех приветствую!
Вот от меня зачаток.
Идея макроса не моя. Пытался воссоздать псевдосенсорное введение уставок 4-мя клавишами. "вверх", "вниз", "сброс" и "подтв"(ввод). Что смог реализовать:
однократная "1" на входах 1 или 2 соответственно увеличивают или уменьшает однократно задание на 1;
удержание "1" на этих входах начинает отсчёт уставки с плавным нарастанием скорости вверх или вниз;
предварительная величина уставки на выходе 1;
подтверждённая - на выходе 2;
"1" на 3 входе - сброс предварительной величины уставки;
"1" на 4 входе- ввод и запоминание уставки на выход 2;
Выношу на суд и критику для последующей доработки. Хотелось бы "добить" макрос до полнофункционально-рабочего состояния с возможностью его перещёлкиваться по разрядам меняющейся уставки, чтобы счёт шел немного быстрей. Такой "механизм" реализован во многих электронных приборах, когда количественное приращение единиц переходит в более высокий разряд десятков и увеличение происходит там, затем в сотнях и т.д.
а зачем вещественная арифметика?
сразу разделить 1000 на выход из CTN2 нельзя?
------------------
и ещё...
как обычно считают "механизмы"?
при нажатии они отсчитывают +1 (-1), ждут немного, а дальше с постоянной скоростью делают "нарастание".
-----------------
далее....
если нужно считать сначала единицы, потом 10ки, затем сотни и т.д.
то можно просто считать единицы, но не сразу "ответ", а сначала "дельту", и приплюсовывать её только после того как пользователь отпустит кнопку.
вы спросите - зачем дельту?
а шоб с ней сделать интересное превращение:
N=(10^(n div 10))*(n mod 10)
где n - наша "дельта", с обычным нарастанием "+1"
а N - это итоговая дельта, которую хочет получить нетерпеливый пользователь (с переменным нарастанием)
возведение произвольного целого числа в произвольную целую степень
(показатель степени может быть от 0 до 15)
Большое спасибо за замечания и намёки на верный путь. К сожалению к программированию только ещё подступаюсь, потому не знаю все законы машинной логики достоверно.
"а зачем вещественная арифметика?
сразу разделить 1000 на выход из CTN2 нельзя?"
По отношению к данной лишней операции могу в своё оправдание заметить, что даже и не предполагал, что машина результат деления к примеру 1 на 3 выводит без дробной части, а потому предварительно подготовил ей более "подходящий" для такого случая вариант в виде плывуна с запятой ;-)
Из этой же оперы и умножение на 1000, т.к. с истинного пути сбило то, что указание уставки в свойствах ФБ генератора происходит в секундах, а при создании блока записи в ФБ генератора надо значение подготавливать в мс.
Долго вертел ввод значения в ФБ и так и эдак, т.к. значения после деления 1 на число ну никак не хотело вводиться , пока не прочёл в мануале по OL неприметную строчку об этом и не нашёл более подходящего выхода, как приумножить переменную на 1000 :D
"...как обычно считают "механизмы"?
при нажатии они отсчитывают +1 (-1), ждут немного, а дальше с постоянной скоростью делают "нарастание"..."
Ну в принципе у меня так и реализовано это( во всяком случае визуально результат похожий), только не совсем правильно...
И ещё сегодня заметил небольшой нюанс в пошаговом режиме симуляции. Заметил, что при достижении одной из уставок генератора значения 50 мс и ниже, вторая начинает :eek: УВЕЛИЧИВАТЬСЯ!!! Похоже в этом виновато ограничение времени цикла 100мс, меньше которого генератор результат суммы уставок включенного и выключенного состояния не может установить и поэтому когда запись в ФБ генератора заставляет его сделать уставку 49 мс, то вторая автоматически становится 51 мс. Затем ролями они меняются. Таким образом скорость роста результирующей уставки макроса после этого не увеличивается. Ведь генератор-то всё-равно тактирует счётчик с периодом в 100мс. А посему алгоритм "перескока" увеличения с единиц на старший разряд и далее как нельзя кстати.
А вот с дельтой ещё придётся "разобраться" :confused:
Ещё раз спасибо!
1) при создании нового проекта выберите ПР110, а не ПР114, тогда возможности пользоваться вещественной арифметикой не будет.
2) про паузу, "дельту" и т.д. - это мои наблюдения, возможно не совсем правильные
3) про 100мс - в режиме симулятора выберите "время цикла", которое считаете нужным
его так же можно ввести вручную - хоть 1мс
так же есть "период", это сколько реального времени будет длиться виртуальное время симулятора
(внизу есть счётчик времени ПР)
PS меняя эти значения иногда удобно замедлить процессы в ПР, что бы разглядеть процессы или убыстрить, что бы не ждать долго.
угадайте, сколько будет, если к 65535
прибавить 1? - снова 65535! забавно :)
PS предлагаю свой вариант
правда есть одна особенность - если одновременно придёт сигнал и "+" и "-"
то ничего не изменится.
(по моей логике это правильно! т.к. при неявных обратных связях возможен рассинхрон этих сигналов, когда составитель схемы их ждёт одновременно и тогда ответ будет как и у меня.)
PPS я бы и детект фронта на входах +/- убрал из макроса, т.к. зачастую сигнал к счётчику уже приходит импульсный,
но думаю что старожилы будут против, и оставил их.
Предлагаю модернизированный макрос компаратора реальных чисел, в котором, можно задать условия работы компаратора, включая управляющие входы в любой комбинации.
это называется Полная группа событий (см. "пример" по ссылке)
PS в языках программирования часто используются следующие обозначения:
">=" - "больше или равно", или "не меньше"
"<=" - "меньше или равно", или "не больше"
"<>" - "меньше или больше", или "не равно"
возможно. просто я самоучка.
хотя ща на заочке учусь, но там всё оч. сжато, и ВУЗ не такой "сильный", что бы много таких тонкостей дать.
Тогда может это когда нибудь пригодится http://www.keldysh.ru/comma/html/data/da5.htm
http://ega-math.narod.ru/Nquant/Fractals.htm
почитал про карты карно в википедии, и понял: наверно поэтому мои схемы проще получаются, что я про них ни знаю!? :D
PS про фракталы, мандельброта и множество жулиа я лет 20 уже знаю (ну или 19, если быть более точным)
ещё в далёком 96ом, на ассемблере, делал 3х мерную, подвижную, визуализацию множества жулиа
(менял константу в каждом следующем кадре)
PPS до фрактального ландшафта руки не дошли, хотя мысли были...
думал 3D туман таким образом можно сделать, где высота "горы" - это непрозрачность тумана
соответственно гора - это 2х мерный массив высот, а туман - 3х мерный массив плотности тумана
фрактальная реализация гор/тумана интересна тем, что не надо помнить весь массив, его можно вычислить, с любой нужной детализацией.
Эти карты для булевой логике ,а вы любитель целочисленных функций .
иногда надо по очереди включать несколько приборов, причём время работы каждого индивидуально
самый простой пример - светофор, иногда он имеет много секций (направлений)
время работы каждой секции индивидуально.
предлагаю соответствующий макрос, и пример его использования
если кол-во приборов не кратно 7, то зацикливать надо (n+1) выход во вход Nx первого макроса
PS зацикливать желательно с помощью "явной обратной связи"
причём время работы каждого индивидуально
А как тут настраивается время работы каждого прибора?
так же как и у обычного блин-ка
Хорошо. Вижу в макросе вход I, а входов настройки времени работы каждого выхода не вижу. Так где же?)
Пока же выхода Q1-Q7 включаются на 1-7с. Да?
P.S. Спасибо, разобрался.
А можно тогда еще сразу макрос поочередного включения выходов с возможностью пропуска конкретного выхода?
Время между включениями - одно и тоже, как параметр. Удобно для последовательного включения двигателей :) Наверное, в той мего-теме где то и проскакивал такой, для удобства хотелось бы продублировать в этой теме, чтоб не искать часами.
т.е. то же самое, только время одинаковое?
мах 8 достаточно?
а с пропуском - это как?
Нет, выход остается включенным (по очереди включать Q1-Q8). Т.е. цикл запуска проводится один раз до тех пор, пока есть разрешительный сигнал на входе I. 8 достаточно.
Желательно добавить выход завершения цикла запуска, чтобы можно было каскадом прикручивать макросы друг за другом.
Пропуск - это если нам не требуется включать выход 5 (сломан двигатель, скажем) и запуск производить в порядке 1-2-3-4-6-7-8.
вот. максимум 32.
на входе разрешающее I и битовая маска "плохих" приборов
на выходе маска того что нужно включить.
нужное "экстрактить" самостоятельно
Немного не так. Выход требуется включить и оставить включенным.
Выключение всех выходов по лог.0 на входе I.