Добрый день всем.
У меня есть датчик давления , подключённый к модулю Сенека через которого я беру данные через модбус рту и отображаю на панели хми. Датчик показывает в милиамперах, а мне нужно масштабировать эти входящие данные к барам( 4-20 ма, до 0-100), чтобы их отображать на тренде. Как правильно написать макрос для данной задачи? Чтобы по сути он брал данные с определенного регистра и преобразовывал их в мне нужные величины. И данный макрос пишется отдельно для нижнего(4ма) и для высокого значения (20ма)? Или сразу один регистр можно изменять, в котором и находятся эти изменяемые данные?
- Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
- Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
- Не надо писать свой вопрос в первую попавшуюся тему - всегда лучше создать новую тему.
- За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения. Непонятно? - Читать здесь.
- Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
- Перед тем как что-то написать - читать здесь, а затем здесь и здесь.
- Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.
Масштабирование входящих данных для трендов.
Модераторы: Глоб.модераторы, специалисты Weintek
-
- здесь недавно
- Сообщения: 2
- Зарегистрирован: 12 окт 2020, 15:16
- Имя: Александр
-
- почётный участник форума
- Сообщения: 3971
- Зарегистрирован: 20 янв 2010, 22:23
- Имя: Никита
- Страна: РФ
- город/регион: Мурманск
- Благодарил (а): 21 раз
- Поблагодарили: 229 раз
Масштабирование входящих данных для трендов.
Макрос пишется в виде функции "вход-выход", что на вход подать (в каком виде прибор отдает данные) - уже Вам виднее.
Сюда гляньте для развития кругозора Преобразование ТЭГа
Похоже, в Вашем случае нужно просто добавить новый тег для тренда с преобразованным значением (если есть необходимость сохранить "сырые" данные с прибора. Сейчас под рукой EB нет, точно подсказать не смогу.
А чем вызвана необходимость именно макроса? Линейные преобразования вроде делаются без написания, макросы пользовали только тогда, когда нужны были нелинейные изменения (извлечение корня из сигналов перепадчиков)
Сюда гляньте для развития кругозора Преобразование ТЭГа
Похоже, в Вашем случае нужно просто добавить новый тег для тренда с преобразованным значением (если есть необходимость сохранить "сырые" данные с прибора. Сейчас под рукой EB нет, точно подсказать не смогу.
А чем вызвана необходимость именно макроса? Линейные преобразования вроде делаются без написания, макросы пользовали только тогда, когда нужны были нелинейные изменения (извлечение корня из сигналов перепадчиков)
Опыт - это когда на смену вопросам: "Что? Где? Когда? Как? Почему?" приходит единственный вопрос: "Нахрена? "
-
- здесь недавно
- Сообщения: 2
- Зарегистрирован: 12 окт 2020, 15:16
- Имя: Александр
Масштабирование входящих данных для трендов.
Спасибо за ответ.
Просто в поисках различной информации, как это все можно реализовать, наткнулся на макросы, вот и начал разбираться, что и как..
Я просто новенький в этом, поэтому и особо не знаю как лучше.
А как в программе это можно реализовать, линейные преобразования? Искал искал, не нашел. Либо плохо искал..
Просто в поисках различной информации, как это все можно реализовать, наткнулся на макросы, вот и начал разбираться, что и как..
Я просто новенький в этом, поэтому и особо не знаю как лучше.
А как в программе это можно реализовать, линейные преобразования? Искал искал, не нашел. Либо плохо искал..
-
- почётный участник форума
- Сообщения: 3971
- Зарегистрирован: 20 янв 2010, 22:23
- Имя: Никита
- Страна: РФ
- город/регион: Мурманск
- Благодарил (а): 21 раз
- Поблагодарили: 229 раз
Масштабирование входящих данных для трендов.
А вот насчет преобразований я, похоже, погорячился. Вы же про тренд речь вели, там хуже.
Линейные преобразования можно делать при отображении самих чисел на экране (см. вкладку "формат чисел" для элементов отображения/ввода).
А вот если речь про библиотеку тегов (или меток) - там преобразование только через макрос. А выборку данных, окромя библиотечных тегов или железа напрямую, вроде больше привязать и не к чему.
Линейные преобразования можно делать при отображении самих чисел на экране (см. вкладку "формат чисел" для элементов отображения/ввода).
А вот если речь про библиотеку тегов (или меток) - там преобразование только через макрос. А выборку данных, окромя библиотечных тегов или железа напрямую, вроде больше привязать и не к чему.
Опыт - это когда на смену вопросам: "Что? Где? Когда? Как? Почему?" приходит единственный вопрос: "Нахрена? "
-
- администратор
- Сообщения: 18758
- Зарегистрирован: 17 июн 2008, 16:01
- Имя: Евгений свет Брониславович
- Страна: Россия
- город/регион: Санкт-Петербург
- Благодарил (а): 973 раза
- Поблагодарили: 1854 раза
Масштабирование входящих данных для трендов.
Для этого вообще макрос писать не надо. В свойствах объекта (что у Вас будет - барграф, стрелка, числовой) просто настроить масштабирование. Вход ПЛК - что прочитали в миллиамперах, Панель - что надо показать. И всё.Alex88 писал(а): ↑12 окт 2020, 15:27 У меня есть датчик давления , подключённый к модулю Сенека через которого я беру данные через модбус рту и отображаю на панели хми. Датчик показывает в милиамперах, а мне нужно масштабировать эти входящие данные к барам( 4-20 ма, до 0-100), чтобы их отображать на тренде. Как правильно написать макрос для данной задачи?
Отправлено спустя 5 минут 50 секунд:
Если очень хочется для тренда - ничто не мешает отображать величину исходную без единиц измерения, а тренд разлиновать значениями в реальных величинах.Alex88 писал(а): ↑12 окт 2020, 15:27 Как правильно написать макрос для данной задачи? Чтобы по сути он брал данные с определенного регистра и преобразовывал их в мне нужные величины. И данный макрос пишется отдельно для нижнего(4ма) и для высокого значения (20ма)? Или сразу один регистр можно изменять, в котором и находятся эти изменяемые данные?
Но если очень хочется попрограммировать, то пишете макрос, который:
1. проверяет, если связь по МодБас
2. если связь есть, то читает значение по модбасу
3. делает преобразование миллиампер в величину (мы ж не знаем, какой там у Вас датчик, линейная там зависимость или нет)
4. складывает результат в определённый регистр
5. если связи нет то присваивает некоторое аварийное значение или выставляет отдельный флаг "связи нет".
Можно написать не простой макрос, а библиотечный, и сделать его вызов в готовой форме, тогда п.4 не нужен.
Посмотрите в дефолтных проектах, там есть тренды - видно же как сделано. Они даже на сайте вейнтека выложены.
Отправлено спустя 4 минуты 12 секунд:
линейное преобразование - это f(x) = k*x+b, где k и b - константы, а x - исходная величина. Просто математикой.
По вопросам работы Форума можно обратиться по этим контактам.