Если сделаете как я предложил, то каждый импульс на счётном входе будет менять состояние триггера на противоположное, это алгоритм работы Т-триггера, по-вашему кнопка с самофиксацией!
Вид для печати
Так не работает?
Вложение 49759
Тогда, что такое самофиксация
Не верю!
(с) Станиславский Константин Сергеевич
ЗЫ.
Смотри внимательней!
Вложение 49760
Так до 8 команд в зависимости от продолжительности нажатия кнопки:
Вложение 49762
Вложение 49763
Это чтобы к кнопке с секундомером подходить ?
Добрый день! Подскажите, есть какие нибудь нюансы по подключению электроконтактного манометра в Овен Лоджике в насосной?
Многие, слышал, стремятся отказаться от ЭКМ, переходят к аналоговым датчикам, типа таких:
https://owen.ru/product/preobrazovat...kh_pd100/price
Короче, Вы не собираетесь последовать их примеру?
Заказчик поставил задачу смонтировать ЭКМ на всасывающий трубопровод насосной и завести его на ПР200.
Мне вот кажется аналоговые датчики менее чувствительны к вибрации по сравнению с ЭКМ, обладают большей перегрузочной способностью(можно найти которые выдерживают десятки ВПИ), короче, может получиться гораздо надёжней, а цены вполне сопоставимые с ЭКМ и я так понимаю у вас там ПР присутствует(может обладать аналоговыми входами), но даже они не обязательны, есть датчики с RS485(есть и у Овена), можно и по сети их связать!
Представим такую ситуацию: не дай Бог какие проблемы могут возникнуть, сигнал аналогового датчика завёл в Мастерскаду и всё, кури бамбук, можно будет проследить всю динамику изменения давления(применительно к вашему случаю), с дискретным датчиком мы такого не получим никогда:
Вложение 49769
Вложение 49770
Вложение 49771
Прислушайтесь к Сергею0308. программа для ЭКМ состоит из одного ключевого элемента - RSтриггера, но то что ЭКМ подвержен, и я бы сказал очень сильно подвержен к вибрации - это факт. За непроизвольное включение или самопроизвольное выключение насоса Вас не похвалят. А непонятные гидроудары, вибрация от рядом стоящего оборудования - это тоже факт.
Полностью согласен. Но, заказчик уже смонтировал ЭКМ оказывается и залил туда глицирин (Там советчиков очень много которых не переубедить). Теперь я даже напрягся. Придётся задержки ставить, чтобы не было провалов.
Антидребезг на TON и TOF + RS триггер?
Вложение 49776
Может так попроще, в 1,5 раза меньше ФБ?!
Вложение 49778
И я ранее ещё и такое предлагал:
Вложение 49779
Способное работать в условиях сильных помех, где даже несколько помех(ошибок) подряд не приводят к сбою(ложному срабатыванию).
Вложение 49780
Надо попробовать. Спасибо.
Позволю себе осмелиться и взять слово "советчика".В моём случае: При работе установки и возрастании давления масла, ЭКМ входит в режим уже с дребезгом и вышепредложенные схемы....ну, простите, ни как не подойдут, т.к. им нужно "продержать" сигнал хотя бы установленное на TONе время. Решил задачу проще простого (с помощью пресловутого RSтриггера)
Вложение 49796
Это я давно делал, 3 года тому назад, сейчас бы нечто подобное намного проще сделал, примерно как-то так:
Вложение 49798
Вложение 49799
Можно и ещё проще состряпать, но и так неплохо упростилось, по сравнению с вариантом трёхлетней давности!
Здесь немного другой принцип работы: каждый цикл программы пишется состояние входа("0" или "1") в один из битов целочисленной переменной, там всего 32 бита, если количество "1" более 75%(24) от общего числа бит в переменной, то принимается, что вход в состоянии "1", выход принимает значение "1", если количество "1" менее 25%(8) от общего числа бит в переменной, то принимается, что вход в состоянии "0", выход принимает значение "0", при промежуточных значениях 25-75%(8-24бита), состояние выхода не изменяется, всё!
И если надо "сильно" отфильтровать, то можно последовательно две такие цепочки(можно и больше, если потребуется) поставить:
Вложение 49814
Задержка, при цикле программы в 1 мс, будет составлять около 1(0,8) секунды!
Вложение 49815
Извините за тупость мою, я так и не понял - что Вы имели ввиду, про количество срабатываний на выходе. Может мы с Вами рассуждаем о разных вещах? Дребезг ЭКМа (в моём случае) приводит к тому, что сигнал приходящий от ЭКМ поступает на вход ПР200 с частотой измеряемой в долях секунды, из-за чего страдает дискретный вход ПР и программа из-за непостоянства сигнала не работает de facto. И зафиксировать присутствие этой единицы, давления - невозможно. И это "моё" решение срабатывает один раз, пока имеется определённое давление, и подаёт постоянный нужный мне сигнал для дальнейшего использования. Что не так?
Не вижу ЦЕЛИ для сравнения "фильтров", мне ничего не говорят цифры - где больше, где меньше...Я получил результат - сигнал на выходе ПОСТОЯННЫЙ
[/ATTACH]И уже если Вы так гордитесь своим решением, то поменяйте хотя бы на TOF вместо использования инверсии и таймера с задержкой включения[/QUOTE]
Поменял - на выходе НОЛЬ.
Я наверное думаю, что мы с Вами, Уважаемый capzap преследуем разные цели и вкладываем разный смысл. Вы не можете меня понять - я Вас. Но моя схема работает уже 1,5 года, и я доволен как слон. Думаю надо закрывать тему - пора картошку полоть.....
Я нахожусь в разделе =разные вопросы новичка=, и в чём то неразбираться - моё право. Программы писать профессионально я не собираюсь, всё на уровне - лишь бы работало, и работало подольше. А Вы, Уважаемый, со мной общаетесь на уровне чуть ли не оскорблений и упрёков. Прошу Вас, милейший, увидите мою иконку - не реагируйте, направьте свои знания и свои "колкости" на более опытных спецов.
День добрый возник вопрос, может тема конечно не сильно подходящая, но реализация будет на пр (если получится сделать то что я хочу) потому спрошу тут.
Нужно сделать измеритель электропроводности воды, датчик заводского изготовления подключить не к заводскому монитору, а к ПР. Датчик 4 проводный, Принцип работы подобных датчиков.
Прошу сориентировать о возможности реализации, или подсказать как получить эти данные другим устройством. В теории можно подключить монитор электропроводности с rs485 но у него стоимость больше 100$ в Китае.
Спасибо
Saint999 вроде не катит, написано что подается переменное напряжение а не постоянное. У ПР нет возможности измерять переменку. Вам надо поискать на Ali что нибудь, что выдает на выход 0-5В или 0-10В, тогда можно подключить к ПР
https://aliexpress.ru/item/330272838...archweb201603_
типа того, но не разбирался сильно.
У меня получилось вот так заставить два поста работать и один модуль 16р
Вложение 49841
Вложение 49842
Я только не совсем понимаю что я делаю) вот здесь:
Вложение 49843
Спасибо, это двухпроводный вариант, наверное придется отказаться от этой затеи, и использовать без индикации
Вот такой вариант с rs485 на борту едет сейчас
Вложение 49844
Но наверное просто поиграюсь с ним и ставить не буду, так как сотка ради того что бы видеть эту цифру, оно того не стоит )
По первой картинке: я выложил проект и привёл настройки для второго поста, там не нужно для второго поста сдвигать влево на 8:
Вложение 49848
Всё делается настройками макроса записи бит, но Вы решили немного усложнить и не пользоваться настройками, что я посоветовал - ваше право, никто не отнимает вашего права(пусть хуже, но по-моему)!
Теперь по второй картинке: насколько я смог понять, у вас сигналы нажатых кнопок приходят битовой маской в один регистр(16 бит), я разделил регистр на два байта, можно сказать для каждого поста по байту(8 бит) и выделил номер бита, соответствующий нажатой кнопке, что Вы там натворили(хотели натворить) мне до конца не понятно, это у Вас надо спрашивать, у меня другие настройки были! Да, и первый байт, биты 0-7, соответствующие 1-ому посту сдвинул влево на 8(не хотел использовать нулевой бит по понятным причинам), при этом настройки мультиплексоров для первого и второго поста стали одинаковыми(и они совпадают с настройками макроса записи бит для второго поста), уже ранее писал об этом, не вижу большого смысла повторять несколько раз!
Вложение 49846
И ещё можно добавить, что здесь можно обойтись без шифраторов и сдвига влево(с целью исключения нулевого бита), только разделить на байты и всё, так как в мультиплексоре присутствуют настройки, просто я немного, так сказать, перестраховался, помните я схему предлагал, чтобы по одной кнопке нажималось(не больше одной одновременно), так вот, если по какой либо причине, ну там сбой, ошибка, помеха, в битовой маске для одного поста придёт несколько бит в состоянии "1", то есть несколько нажатых кнопок, то приоритет будет у старшего бита и соответствующей ему кнопке, надеюсь понятно объяснил!
Короче, если без шифраторов и сдвига, то всё настройки сохраняются для макросов записи бит, а для мультиплексоров изменятся и будут соответствовать весовому коэффициенту бита, короче, как-то так:
Вложение 49851
Вложение 49852
И в случае прихода в битовой маске для каждого из постов более одного бита в состоянии "1" никакие выхода не включатся, будут восприниматься только по одному биту в состоянии "1", надеюсь понятно и останется выбрать более для вас предпочтительный вариант, я то не знаю ТЗ!
Вложение 49853
Вот поправил проект, что Вы выложили:
Вложение 49856
Что непонятно: я предполагал, что считывается битовая маска входов(состояния кнопок) с модуля дискретного ввода, одного модуля на 16 входов хватит на 2 поста, на 32 входа хватит на 4 поста, у вас как-то всё иначе, модулями дискретного ввода там пока и не пахнет!
И булевы переменные для настройки второго поста необходимо сделать другими, отличными от переменных для настройки первого поста, ну иначе - настройки первого и второго постов будут одинаковыми, надеюсь понятно написал!
Оно как и раньше. Есть 8 пультов, на них прошивка Ваша: кто первый встал того и тапки, я ее только для 8 кнопок сделал и битовую маску от них передаю "центральному контроллеру"
Алгоритм работы такой: нажали кнопку 1 светится 1, нажали 2 светится 2 и тд, стоп всегда главный.
Вложение 49857
Вложение 49858
Центральный контроллер собирает битовые маски нажатых кнопок всех постов и в зависимости от настройки, которую я пытаюсь сделать вот уже неделю), включает на модулях дискретного вывода МУ110-224.16Р выходы (например: на первую кнопку настроено 1 и 2, на вторую 1 и 3, на 3 - 1 и 4 и тд., и вот эту настройку хотелось бы менять через меню), один модуль на 2 пульта.
Считаем наработку по первой кнопке каждого поста, так же считаем ее включения, на экраны выводим общий пробег/включения и пробег включения до ТО.
Есть настройка сколько у нас пультов и какие выходы активны при нажатии какой кнопки (пока я сделал настройку каждой программы для всех пультов одновременно и сделал это не очень красиво, потому и начал с битовыми операциями разбираться что Вы предложили, а вот с командоаппаратом не разобрался)
Обрабатываем и отображаем всевозможные аварии, на данный момент сделано отслеживание связи с модулями, в последующем планирую добавить залипания пускателей, обработку датчиков давления, температуры и тд.
Отдельным пунктом выделю использование RFID карточек для доступа к пульту, потому как пример реализации есть, но я совсем не понимаю как он работает и разбираться буду очень долго с ним.
За проект мне не платят и по сути достаточно было бы сделать на первую кнопку настроено 1 и 2, на вторую 1 и 3, на 3 - 1 и 4 и тд. и никаких настроек и аварий, но так как я с этим работаю уже 12 лет и точно знаю что персонал который монтирует данные решения и который потом ими пользуется умом не блещут, и если что то пойдет не так будут кричать "памагице усе сламалася". Вот и решил подстраховать себя и попробовать подучится.
Я на модулях пробовал, делал весь алгоритм тапок на пр, а у модулей ввода/вывода собирал битовую маску кнопок и отправлял битовую маску какую подсветить, но очень большие задержки уже при 3 пультах, а когда модули вывода повесил на этот же 485 все совсем грустно стало, тоесть ты нажимаешь кнопку и держишь ее пока она не начнет светиться, и держать нужно до 3х секунд, так естественно никто делать не будет.Цитата:
Что непонятно: я предполагал, что считывается битовая маска входов(состояния кнопок) с модуля дискретного ввода, одного модуля на 16 входов хватит на 2 поста, на 32 входа хватит на 4 поста, у вас как-то всё иначе, модулями дискретного ввода там пока и не пахнет!
Вот потому у меня и приходят 2 сетевые переменные с двух пультов и я их одинаково обрабатываю, и да пульты могут быть на значительном расстоянии, потому один модуль на 2 пульта не подходит.
Цитата:
И булевы переменные для настройки второго поста необходимо сделать другими, отличными от переменных для настройки первого поста, ну иначе - настройки первого и второго постов будут одинаковыми, надеюсь понятно написал!
Я специально только эту часть программы тестирую отдельно от основной, что бы проще было разбираться, а булевы одинаковые что бы не возиться при тестах создавая их, а настройка второго пульт нужна что бы проверить как работает.
Понятней не стало, приходится спросить ещё раз: логику мы создали, от каждого поста должно одновременно приходить не более одного бита в состоянии "1", но если всё же придёт более одного взведённого бита, мало ли что: ошибка, сбой, помеха! Так вот какое состояние выходов предпочтительно для такого(аварийного) случая:
1. Состояние выходов соответствует старшему поступившему биту, имеющему приоритет;
2. все выходы выключены.
Как бы логично предусмотреть и логику(в данном случае - состояния выходов) для аварийных случаев, ну я так думаю!
Ещё как вариант, требующий небольшой доработки имеющейся логики - состояния выходов не меняется, соответствует преведущему, не аварийному состоянию кнопок!
Не понял, Вы отказались от модулей дискретного ввода и используете для каждого пульта отдельное ПР?
Не вижу разницы, с чего считывать битовую маску состояния кнопок с модуля дискретного ввода или с ПР, мне кажется, это то же самое, имею ввиду по быстродействию, за счёт чего Вы выигрыш в быстродействии получили(хотите получить)?
Ну, тогда, если для каждого пульта отдельное ПР Вам и разделять регистр на байты не нужно, каждый байт будет и так в отдельной переменой!
Вот поправил:
Вложение 49863
Вложение 49864
Да
Пр при нажатии генерит битовую маску и держит ее в ячейке модбас (кнопки у нас с фиксацией), модуль генерит битовую маску пока нажата кнопка и в это время нужно успеть ее забрать, не успел забрать пока нажата, он сгенерит с отпущенной кнопкой, пока 1-2 пульта нормально, потом начинаются задержки, а задержка это время сколько нужно держать кнопку нажатой.Цитата:
Не вижу разницы, с чего считывать битовую маску состояния кнопок с модуля дискретного ввода или с ПР, мне кажется, это то же самое, имею ввиду по быстродействию, за счёт чего Вы выигрыш в быстродействии получили(хотите получить)?
Вот я и не разделял, а спросил что я делаю в этих кодированиях, потому как если подать значение сетевой переменной напрямую на sel вход макроса у меня ничего не заработало, значения констант то я не поменял)Цитата:
Ну, тогда, если для каждого пульта отдельное ПР Вам и разделять регистр на байты не нужно, каждый байт будет и так в отдельной переменой!
Цитата:
Так работает, единственное у меня булевы переменные энергонезависимые с настройкой первую кнопку настроено 1 и 2, на вторую 1 и 3, на 3 - 1 и 4, а у модуля переключаются выводы:
1 и 3
1 и 4
1 и 5
Правда и в моем примере выше так же было (
Я погуглил про таблицы истинности, и не совсем понимаю как можно создать таблицу всего этого устройства/программы.
А тестирую просто собрал 4 пульта 1 центральный, 2 модуля 16р подключил кучу кнопок с подсветкой, в меню понастовлял дублирование номеров программ что бы проще было и все это сижу и нажимаю и смотрю за реакцией.
если что то не так запускаю отладку и пробую понять что я делаю не правильно.
Нулевой бит соответствует первому выходу, в макросе записи бит всё правильно настроено:
Вложение 49867
Возможно Вы булевы переменные сдвинули, замечу например булева переменная с номером "0" отвечает за настройки первого выхода! Может, чтобы понятней было можно начать с булевой переменной с номером "1", тогда хотя бы первые 8 переменных будут совпадать с номером выхода!
у Вас есть восемь входов и восемь выходов, к примеру на этом рисунке.
Далее где угодно, например в exel рисуете таблицу с со следующей первой строкой I8,I7,I6,I5,I4,I3,I2,I1,Q1,Q2,Q3,Q4,Q5,Q6,Q7,Q8
Затем заполняете колонки Ix единичками/ноликами поразрядно с 0 до 255
Когда все занесли, начинаете заполнять поля колонок с Qx, в зависимости от состояния входов в каждой строке таблицы
В итоге можете сами написать логику, например воспользовавшись советом или сюда выложить, тут останется только предложить решение, без лишних вопросов о приоритетности, о ситуациях не озвученных в ТЗ и т.п.
Здесь всё проще будет, наподобие как мы с кнопками делали для выбора нажатой кнопки пульта, если будет время и желание вечером на досуге это попробую сделать!
Как-то примерно так, вот проект для демонстрации подправил, для реализации наших хотелок:
Вложение 49874
Ну да что-то типа фильтра получилось, команды с более чем одной нажатой кнопкой не воспринимаются, сохраняется преведущее состояние!
Вложение 49875
Или так:
Вложение 49903
Вложение 49904