Юрий, большое спасибо!
Вид для печати
Юрий, большое спасибо!
Кстати тут спрашивали касательно кабеля, если берете сетевой кабель, то лучше не переплачивать тут, а брать просто классику по типу KLM (UTP Solid) 4х2х0.50 мм ССА ПВХ https://klaster.ua/shop/kabelnye-set...naya-produkciy , у него большой плюс что он простой в протяжке, 4 парный, плюс локалку можно развернуть на любое расстояние. Дешево и сердито получается. Я его брал для проводки под роутер. Пока нормально держит, мастера сказали, что он по сути точно так же защищен, как и дорогие варианты, у него только один минус через несколько лет может начать нестабильно передавать сеть. Но мне ненадолго надо, потому если хотите на несколько лет, а не на десятилетия, то он подойдет, а если хотите навека то лучше подороже конечно же посмотреть. По току постоянный напряг 72 В, ну кароче типичный бюджетный стандарт, но подходит для большей части сетей, потому "зачем платить больше?")
Для силовых МЫ используем ПВС Вложение 49254 для датчиков МКЭШ . Сечение для силовых выбираем по току для датчиков МКЭШ 2х0.35 . Вложение 49255
а какой бензин нужен для машины?
не хотите поподробнее технические характеристики, способ подключения тэнов и прочее рассказать?
ПВС - не сильно стационарный и долговечный кабель, да еще его оконцевать как следует для работы в нагревательных приборах целая проблема (но опять же это зависит от типа клемм)
А почему ПВС не может быть не стационарным ?, например провод с вилкой таковым не является. Тут то же самое. Коробка с клеммным блоком рядом с бойлером, из коробки к бойлеру ПВС. это допускается.
Приветствую.
Получится ли без преобразователя считать расход с помощью вот такого датчика: http://pumpcontroller.ru/product/dat...ba_3_4_dyuyma/ ?
Делал пример на похожем датчике https://youtu.be/zfS6MxKpct8, там рассказал про тонкости, на максимальном расходе нужно смотреть по времени цикла, не будет ли пропусков, и запитку датчика нужно делать с учетом что уровень "1" на DI от 15 вольт.
А вообще, лучше поискать что-то с выходом 4-20mA.
подскажите как правильно реализовать в modbus запись пары переменных по событию (установка переменной в определенное значение) ?
Если событие одноразовое, то в принципе, запись можно делать по изменению, установив чекбокс в настройках регистра, если это регистр float, то лучше делать по флагу. Все режимы показаны тут https://www.youtube.com/watch?v=k9rUF5_kLqk
День добрый, читал неделю форум но так и не нашел примера решения моей задачи, если слепой ткните носом)
Нужно на ПР (не принципиально какой, но с 485 интерфейсом, сейчас тестируюсь на пр200) переключатель с фиксацией.
Вложение 49299
Принцип работы как у переключателя с фото.
Тоесть у нас есть 8 кнопок (столько входов/выходов ПР), нажимаем первую, зажигаем ее подсветку первой релюшкой, нажимаем вторую, щелкаем вторую реле и отпускаем первую реле, и так все 8. Попутно все состояния кнопок пишем в регистры модбас, что бы головной контроллер мог считать их.
Это я реализовал так:
Вложение 49300
Все работает, но можно одновременно нажать несколько кнопок. Можно поставить тригер с приоритетом включения и детектор заднего фронта, тогда одновременно нельзя нажать несколько кнопок (точнее нажать то можно, включится та которая последней опуститься), но если нажать на кнопку и держать ее то все выключены будут, а так нельзя, какая то всегда должна гореть.
В идеале алгоритм такой:
8 кнопка "Стоп" она в приоритете, то есть по нажатию на нее не важно в комбинации с другими или одну ее сразу зажигаем ее.
Остальные кнопки переключаются так: нажимаем первую, зажигаем ее подсветку первой релюшкой, нажимаем вторую, щелкаем вторую реле и отпускаем первую реле и так все 7.
Если нажата первая и вторая то приоритет отдаем той которая была нажата первой, если их нажали одновременно то приоритет у той которая уже нажата (пусть даже это 7, а не одна из тех которые нажали одновременно).
Буду благодарен за любые подсказки!
Какая-то полная лабуда, много было подобных тем, вот здесь смотрели: https://owen.ru/forum/showthread.php?t=33123
Немного подрихтовал под ваши хотелки:
Вложение 49301
Вложение 49302
Или так:
Вложение 49674
Вложение 49685
Спасибо больше за быструю помощь, все работает, подредактировал только что бы 8 кнопка стопом была и подсветку ей организовал.
Вложение 49306
Но как работает, так и не понял. Буду пробовать разбираться.
Еще раз спасибо!
Не долго музыка играла...
Вставляю сетевую переменную, копирую макрос дешифратор в исполнительное устройство и идет сдвиг на 1 ногу, я то могу связями это нивелировать, мне просто интересно как так происходит и почему.
Шифратор и дешифратор в исполнительное устройство копировал, ничего не меняется.
Вложение 49309
Вложение 49310
Разобрался, и научился константы в настройки выносить)
Когда макрос копируешь он применяет настройки из констант, потому просто копирование не подходило.
Раз пишу уже, зачем последовательно шифратор дешифратор стоят?
Наверное отсечь, все что младше и вернуть только один бит потом
Это функции записи/чтения бита!
В целочисленном виде, как правило, проще логику реализовать, например сдвиговый регистр:
Вложение 49320
Вложение 49321
Во внутренней переменой 32 бита! Проще сделать энергонезависимость, если потребуется, достаточно в данном случае сделать переменную энергонезависимой и всё, а в вашем варианте это вообще невозможно, RS(SR)-триггеры не обладают энергонезависимостью и т. д., короче, очень много плюсов и картинка лучше выглядит!
А шифратор с дешифратором на крайний случай, если одновременно придёт сигнал на более чем один вход, то приоритет будет у старшего входа по числовому значению(весовому коэффициенту), впрочем такой вариант маловероятен, но в принципе возможен!
Еще раз спасибо за ответы на предыдущие вопросы, но есть новые )
Есть до 8 "Постов" как в прошлом примере, у которых битовая маска это сетевая переменная, и я ее собираю со всех постов другим реле (пока у меня все на пр200) и в зависимости от того какой пост включаю выводы МУ110-16Р так же битовой маской. На каждый пост я выделил по 8 выходов (делится хорошо и у постов у нас 8 кнопок), тоесть у нас максимум может быть 4 штуки МУ110-16Р.
Простейший агоритм как долно быть я сделал, но потом меня посетила "гениальная идея", сделать настраиваемыми выходы, что бы на каждый пост на каждую кнопку можно было настроить сколько выходов МУ110-16Р счелкнет (до 8 штук одновременно или в любой последовательности). Настраиваться будет так:
Вложение 49542
Стоит - выход неактивен, стоит + выход активен все просто.
Но потом я посчитал сколько мне нужно переменных для этого всего и мне стало грустно, и я решил спросить у Вас помощи. Нужно делать все 8 постов * 8 программ = 64 переменные на настройку + 64 переменные выходов МУ110-16Р + куча связей и модулей и или. Я пока только так вижу это:
Вложение 49543
Вопрос: можно ли все это сделать более элегантно, может не расшифровывая битовую маску а потом зашифровывая ее назад как делаю я, или как то еще, или мне запасаться терпением и делать все эти переменные?
Спасибо!
Да, именно так!
Я примерно как-то так делал:
Вложение 49544
В проекте имеется матрица памяти на 32 ячейки и я сам принцип хотел показать, а что там настраивать - неважно!
Честно ничего не понял, не умею думать головой, буду руками.
Спасибо
Пока сделал так, для проверки, тоесть настройка одна на все посты
на все программы.
Вложение 49546
Дальше буду создавать переменные )
Хотел еще спросить, генерация ошибки в частности сейчас как нет связи с каким либо постом или модулем, сделал так и все работает, но как сделать что бы ошибка предсказуемой была, так как в моем случае если по одному можно вычислить с каким постом ошибка, то если их несколько то не понятно, можно конечно составить таблицу расшифровки, но блин "это же не наш метод")
Вложение 49547
Тогда может это посмотрите, здесь попроще будет:
Вложение 49550
И, хотел добавить, что больше или равно как-то так попроще будет раза в два:
Вложение 49551
Уставку на верхний вход функции!
Можно залить программу в ПР200, поклацать кнопками, понастраивать, посмотреть, может к Вам озарение придёт! Если не придёт процесс повторить!
Можно без таблиц, сделать вывод на экран списком кто виноват исходя из битовой маски
В этой теме аварии на экран выводили:https://owen.ru/forum/showthread.php?t=31113&page=7
Для начала сделайте, как для Вас кажется проще, то есть сохраняйте настройки в булевых энергонезависимых переменных, так как у вас 4 поста по 8 кнопок для каждой по 8 переменных, соответствующих выходам 1-8, всего получается 256 булевых переменных каждая булева переменная занимает 1 байт энергонезависимой памяти - вполне хватает энергонезависимой памяти(всего 1016 байт) и я выкладывал ранее как можно 32 булевы переменные сохранять в одной целочисленной внутренней энергонезависимой переменной, что позволяет в 8 раз использовать память более рационально:
Вложение 49564
Вложение 49565
Вложение 49566
Вложение 49567
У меня 8 постов по 8 кнопок по 8 значений на каждую = 512 переменных (байт) + у меня счетчики наработки стоят на каждый пост (8 счетчиков).
Наверное буду перепаковывать, что бы осталось памяти.
Всё равно хватает памяти с избытком, одна внутренняя целочисленная переменная занимает 4 байта, 8 счётчиков - 32 байта, если к 512 добавится 32 это погоды не сделает!
И я ссылку давал на тему с авариями, там, кстати, у меня в проекте имеется функция включения-выключения аварий, мне кажется подобное подойдёт вам для реализации ваших хотелок, короче, там можно посмотреть пример реализации и сделать по аналогии!
Вложение 49583
По регистрации аварий как раз разбираюсь с 15 версией, а счетчики моточасы моторов считают и количество включений, просто размножил на 8 моторов и сделал макрос, потом макрос скопировал и сделал кнопку сброса.
В итоге имеем пробег общий и пробег от ТО.
Вложение 49594
Хотел спросить, два дня не мог понять что не так я делаю, оказалось все так просто настройки в епром неправильные, при этом в меню настройки параметров отображает то что я задал, а вот при работе не правильно выводами счелкает.
Скопировал в отдельный проект только макрос генерации битовой маски и в ручную по выводам прошелся, все работает верно, залил программу все работает верно, как то нужно память очищать при изменении?
Макрос тот же, настроек не имеетничего не менял просто почти пустую программу записал, а потом свою и только тогда все стало хорошо работать.
В отладке обратил внимание что программа правильно выполнялась, переменные энергонезависымые так стояли.
Ладно работает и работает.
Пока создал на все посты свою настройку каждой программы, по постам решил не разбивать, может позже сделаю, переменные пачкой нельзя копировать, только каждую отдельно?
Вложение 49609
Мы берем число в первый цикл его подставляем в сравнение, во второй цикл его подставляем и сохраняем, тем самым у нас изменяется переменная только при изменении ее?
Это я такую логику придумал при изменение любой из 32 булевых переменной их битовая маска сохраняется в энергонезависимой целочисленной переменой, позволяет в 8 раз меньше занимать энергонезависимой памяти(уже ранее писал об этом) и не надо нажимать "запись", значение само сохраняется при изменении, надеюсь понятно написал?!
Не заработало (
Причем по 1 значению все верно, а если как нужно мне в зависимости от числа на входе столько ног дернуть на выходе не получается, буду разбираться еще.
Я понимаю что уже порядком поднадоел тут, но хочется разобраться с программированием ПР, сейчас заказал новый пр102 с транзисторными выходами, на него большие надежды, и проект там интересный, хочется самому его сделать.
Вот прямо сейчас проект аварий залил, потом в меню убрал + почти все, потом перезаписал проект, а +- остались те что я выставил до этого с экрана. что бы вручную все не переставлять затер Ваш проект своим, а потом снова Ваш залил, и только тогда стали все аварии отслеживаться. Сейчас еще раз просто стер записал программу и епром изменился. Что то я не понимаю )
Подскажите, пожалуйста, с экранами.
Правильно я делаю, или есть способы проще.
Вопрос первый. Может есть примеры/описание, как следующую хотелку реализовать?
Автоматический вывод экранов по их приоритету.
Имеется N экранов, на каждом свой параметр. Хочется:
1) Чтобы при аварии связанной с параметром высвечивался его экран.
2) Если появляется авария на более приоритетном параметре - высвечивался его экран.
3) Если авария пропала - переключение на экран с менее приоритетной.
4) Если аварий нет - главный экран.
5) Если пользователь ковыряется в параметрах - не переключать экраны.
6) Если пользователь ничего не делал больше N секунд - переключать экраны согласно авариям.
На текущий момент я пришел к следующему решению: Все аварии завожу в макрос. На выходу у него N булевских переменных, из которых активна только одна нужная.
Для каждого экрана в условиях перехода добавляю N-1 условий, что если такая-то переменная поменялась - переходим на такой-то экран.
Проблемы:
1) Геморно на N экранах вводить N условий для перехода, помимо ручных. Ощущение, что я делаю что-то не то и должен быть более простой способ.
(Я так понимаю, для этого задумывались коллекции переходов, чтобы создать один раз коллекцию переходов и на каждом экране выбрать её. Но сейчас это просто на будущее, которая не работает.)
2) Как запретить переходы при возникновении аварии, если пользователь сам ходит по экранам - я так понял никак.
Вопрос второй.
Часть параметров связана с другими устройствами, висящими на шине RS485 (другая ПР200, прочие датчики). При проблемах с доступом хочется, чтобы вместо цифр высвечивалось "Нет связи".
Сделал это наложением 2 надписей в строке. Одна с параметром, вторая булевская, в зависимости от статуса прибора на порту показывает "Нет связи" или ничего.
Работает как хотелось. Но собственно вопрос - это вообще, нормальный и штатный путь, накладывать разные надписи на одно знакоместо или я через одно место делаю?
По мне это как-то неочевидно и додумался до такого не сразу.