Каких битовых функций в Модбасе Вам, Валенок, не хватает?
Каких битовых функций в Модбасе Вам, Валенок, не хватает?
Тролль-наседка, добрый, нежный и ласковый
Лично я на 110-х по Ethernet работаю только через библиотеки.
А так, после разработки ПЛК200 - перешёл на них. Там всяко проще 3-4 кликами разнести опрос по разным потокам
Ведущий инженер проектов
Линейки шлюзов сетевых Пх210
Линейки модулей ввода/вывода Мх210
Ну хотя бы тем, что вместо чтения/записи четырёх регистров (2х32Bit) надо будет читать/писать 24 регистра. И вместо булевых функций оперировать числовыми. А суть останется та же, мониторим обратную связь выхода по регистру и по обратной связи конкретного регистра задаём новую уставку исходя из реальной на данный момент. Режим работы выходов надо будет перевести в ШИМ, и с другого мастера также писать числовые уставки и там также придётся поменять булевую логику на числовую.
В следствие чего такая простая конструкция типа: dword1.0:=(dword1.1 or dword2.2) and not(dword3.3); превращается в полноценное "трёхэтажное" условие.
Не ругайте Валенка, он дело говорит. Если есть счётчики по входам - надо их использовать, тогда правильно настроив фильтрацию по входам модулей можно и дребезга не боятся и не надо так часто опрашивать,опасаясь пропустить событие.
Тролль-наседка, добрый, нежный и ласковый
А можно немного подробнее почему в моём случае надо использовать счётчики и не надо так часто опрашивать? Что не так? Или что может произойти? Цикл выполняется за 2-3 мс почему бы не опрашивать каждые 10мс, если оборудование позволяет это делать? Ошибок по обмену нет, совсем, сеть для этого оборудования выделена отдельная, чисто физически между щитами проложены отдельные линии. Почему вы мне так явно навязываете счётчики? Если у меня всего по 20-50 нажатий в сутки, но случиться они могут в любое время. Почему все так усердно пытаются навязать какую-то альтернативу, которая больше, сложнее, неудобнее, а результат тот же?
Когда тогда надо использовать битовую маску входов? И есть ли какие-то критерии использования тех или иных способов учёта входящих сигналов? Я вот, допустим, думаю, что если частота входящего импульса больше 10 Гц, то следует использовать счётчики, всё что ниже - битовая маска.
Parovoz Я делаю на счётчиках весь опрос кнопок.
Кайф этого решения в том, что даже если будут потери связи, то нажатие по счётчику не потеряется никогда.
Это работает так, что даже если ткнуть на кнопку ОЧЕНЬ быстро (я - барабанщик, я могу быстро ткнуть), то нажатие всё равно отлавливается.
Я смотрю текущее число счётчика импульсов и предыдущее и сравниваю. Если разница по модулю > 1 - то было нажатие.
Дополню. Если у нас отвалилась связь (например, потеряли несколько пакетов с данными из-за лага сети), а кнопку нажимали - то потом мы всё равно про это узнаем.
Последний раз редактировалось Cs-Cs; 29.03.2021 в 15:13.
Я не барабанщик, но с опросом в 10мс у меня ни разу не получилось ткнуть кнопку так, чтобы было потеряно нажатие, я это делал специально, неспециально это вообще нереально сделать. Ради интереса поставлю завтра счётчик ошибок по опросу. Чтобы проверить возникают они или нет, если за сутки не наберётся ни одной, могу констатировать метод счётчиками неоправданно сложным.
Cs-Cs ну да, из-за дребезга контакта выключателя у вас пришел счетчик > на 2 - что вы должны сделать? включить свет и выключить свет или ничего не делать ?![]()
melky Так я отлавливаю >1. А дальше имитирую R_TRIG, и после обработки (в задаче, может раз в 100 мсек) привожу всё в исходное состояние.
Я не знаю, как пояснить... ну, высчитали дельту по модулю. Если она > 0 - пошли в ветку обработки нажатия и что-то сделали.
И там же сказали, что countPrevious := countCurrent;, после чего дельта снова равна нулю. Так как мы это делаем после обработки, то пока идёт обработка - хоть обнажимайся - пофиг.
Поэтому если это будет ситуация вида "ни фига не было, а тут раз - и 25 импульсов", то обработается как однократное одинарное нажатие.
Если же будет так, что только-только моя задача обработала нажатие, и снова дельта > 0 - то обработает как второе нажатие.
А если подразниться - дык во всех модулях IO у ОВЕНа есть защита от дребезга, которую я всегда включаю.
А так у меня товарищ есть с подобным подходом к делу, который вместо одного микрокомпьютера Raspberry PI воткнул два полноценных системника, запитанных от бесперебойника, на одном из которых завёл резервное копирование первого системника. После некоторой беседы о целесообразности использования средств соразмерно решаемой задаче оптимизировали состав оборудования и пришли к одной "малине" и простой флешке на которую скидываются бекапы. При этом за 3 года работы она так и не понадобилась.
Я считаю, что средства решения задачи должны быть соразмерны самой задаче. Нет смысла палить из пушки по воробьям.