Спасибо. Работает. Соорудил макрос для энкодера. Обнуляешь его в любом положении. И он считает в положительную и отрицательную сторону.
Вид для печати
Спасибо. Работает. Соорудил макрос для энкодера. Обнуляешь его в любом положении. И он считает в положительную и отрицательную сторону.
Вроде не так давно в крайний раз обсуждали: https://owen.ru/forum/showthread.php?t=30483
И да, ОЛ и ПР не поддерживает целочисленные знаковые типы данных, только беззнаковые, короче, выкладывал макросы преобразования INT(знаковый тип данных) во FLOAT(в 30 посте: https://owen.ru/forum/showthread.php?t=13106&page=3) и если не ошибаюсь, Пётр из Минска выкладывал макрос преобразования DINT во FLOAT.
Вот тоже макрос работы с AB энкодером сделал, теперь вроде с правильной логикой и мой макрос преобразования INT во FLOAT в проект добавил, короче, теперь должно всё правильно считать и в минус тоже, разумеется в пределах диапазона типа данных!
Вложение 61822
Вложение 61821
Хотелось добавить, что ничто не мешает расширить диапазон(если нужно) до DINT.
Примерно как-то так:
Вложение 61823
Короче, поставил 32 битный счётчик и DINT декодер:
Вложение 61824
Немного усовершенствовал, декодер универсальный сделал, настройки в свойствах макроса:
Вложение 61825
Вложение 61826
Вложение 61827
И, можно самому "минус" не приделывать, достаточно преобразовать во FLOAT и, как уже советовали, умножить(разделить) на "-1".
Вложение 61828
Вложение 61829
Или так в макросе:
Вложение 61830
Вложение 61831
И, один макрос может преобразовывать(декодировать) как тип данных(диапазон) INT так и DINT(в зависимости от настроек):
Вложение 61941
Вложение 61852
Вложение 61949
И, коль пошла такая пьянка, как говориться, режь последний огурец, решил и обратную функцию сделать, универсальную. Назначить тип данных(диапазон) можно в свойствах макроса, аналогично преведущему макросу, макрос преобразования FLOAT TO INT/DINT с ограничением по входу в пределах выбранного диапазона и округлением до целого значения, короче, проверяйте:
Вложение 62196
Вложение 62197
Кстати, с Юрием Ревакой был разговор по поводу такого макроса(правда давно), короче, он считает, что такой макрос не нужен, а я часто им пользуюсь, передаю на СМИ2 отрицательные значения(обычно значения нецелые, с одним-двумя знаками после запятой, т. к. в СМИ2 можно сместить запятую влево) одним регистром(целочисленной переменной), короче, может кому пригодиться!
Коллеги, добрый день.
Нужно отдетектировать наличие сигнала 8В 50Гц. Есть мысль использовать аналоговый вход в режиме 0-10В и TOF на 1 сек (быстродействие не требуется). Будет работать?
Aviator_VZh Я очень давно возился со всякими цепями контроля перехода сетевого напряжения через ноль для микроконтроллеров. Я не уверен, что я тогда делал верно, но вдруг мой опыт пригодится.
Я делал развязку на оптопаре (позже её же использовал для определения сигнала о том, что в квартире звонит домофон). На неё подавалось переменное напряжение (или другой входной сигнал), а её выход пихался на вход микроконтроллера (а в случае ПРки можно прям на DI запихать).
Вложение 61985
ИМХО, напрямую пихать переменку в AI не надо: она же может иметь всплески всякие. И ещё и надо вспомнить про действующее и амплитудное значение.
Так и не надо ничего колхозить, есть приборы, специально предназначенные для работы с кондуктометрическими датчиками, например: САУ-М6, БКК1, МК110-220.4К.4Р.
https://owen.ru/product/sau_m6
https://owen.ru/product/bkk1
https://owen.ru/product/moduli_diskr...specifications