• обязательно заполнить свой профиль на русском языке кириллицей
  • не писать свой вопрос в первую попавшуюся тему - вместо этого создать новую тему
  • дублирование сообщений приравнивается к спаму
  • за поиск и предложение пиратского ПО - бан без предупреждения
  • рекламу и частные объявления "куплю/продам" мы не размещаем ни на каких условиях

Масштабирование входящих данных для трендов.

Модератор: специалисты по Weintek

Ответить

Автор темы
Alex88
здесь недавно
здесь недавно
Сообщения: 2
Зарегистрирован: 12 окт 2020, 15:16
Имя: Александр

Масштабирование входящих данных для трендов.

Сообщение Alex88 »

Добрый день всем.

У меня есть датчик давления , подключённый к модулю Сенека через которого я беру данные через модбус рту и отображаю на панели хми. Датчик показывает в милиамперах, а мне нужно масштабировать эти входящие данные к барам( 4-20 ма, до 0-100), чтобы их отображать на тренде. Как правильно написать макрос для данной задачи? Чтобы по сути он брал данные с определенного регистра и преобразовывал их в мне нужные величины. И данный макрос пишется отдельно для нижнего(4ма) и для высокого значения (20ма)? Или сразу один регистр можно изменять, в котором и находятся эти изменяемые данные?

Аватара пользователя

Никита
почётный участник форума
почётный участник форума
Сообщения: 3470
Зарегистрирован: 20 янв 2010, 22:23
Имя: Никита
Страна: РФ
город/регион: Мурманск
Благодарил (а): 15 раз
Поблагодарили: 144 раза

Масштабирование входящих данных для трендов.

Сообщение Никита »

Макрос пишется в виде функции "вход-выход", что на вход подать (в каком виде прибор отдает данные) - уже Вам виднее.
Сюда гляньте для развития кругозора Преобразование ТЭГа
Похоже, в Вашем случае нужно просто добавить новый тег для тренда с преобразованным значением (если есть необходимость сохранить "сырые" данные с прибора. Сейчас под рукой EB нет, точно подсказать не смогу.

А чем вызвана необходимость именно макроса? Линейные преобразования вроде делаются без написания, макросы пользовали только тогда, когда нужны были нелинейные изменения (извлечение корня из сигналов перепадчиков)
Опыт - это когда на смену вопросам: "Что? Где? Когда? Как? Почему?" приходит единственный вопрос: "Нахрена? "


Автор темы
Alex88
здесь недавно
здесь недавно
Сообщения: 2
Зарегистрирован: 12 окт 2020, 15:16
Имя: Александр

Масштабирование входящих данных для трендов.

Сообщение Alex88 »

Спасибо за ответ.
Просто в поисках различной информации, как это все можно реализовать, наткнулся на макросы, вот и начал разбираться, что и как..
Я просто новенький в этом, поэтому и особо не знаю как лучше.
А как в программе это можно реализовать, линейные преобразования? Искал искал, не нашел. Либо плохо искал..

Аватара пользователя

Никита
почётный участник форума
почётный участник форума
Сообщения: 3470
Зарегистрирован: 20 янв 2010, 22:23
Имя: Никита
Страна: РФ
город/регион: Мурманск
Благодарил (а): 15 раз
Поблагодарили: 144 раза

Масштабирование входящих данных для трендов.

Сообщение Никита »

А вот насчет преобразований я, похоже, погорячился. Вы же про тренд речь вели, там хуже.
Линейные преобразования можно делать при отображении самих чисел на экране (см. вкладку "формат чисел" для элементов отображения/ввода).
А вот если речь про библиотеку тегов (или меток) - там преобразование только через макрос. А выборку данных, окромя библиотечных тегов или железа напрямую, вроде больше привязать и не к чему.
Опыт - это когда на смену вопросам: "Что? Где? Когда? Как? Почему?" приходит единственный вопрос: "Нахрена? "

Аватара пользователя

Jackson
администратор
администратор
Сообщения: 12138
Зарегистрирован: 17 июн 2008, 15:01
Имя: Евгений свет Брониславович
Страна: Россия
город/регион: Санкт-Петербург
Благодарил (а): 272 раза
Поблагодарили: 498 раз

Масштабирование входящих данных для трендов.

Сообщение Jackson »

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 секунд:
Alex88 писал(а):
12 окт 2020, 17:40
А как в программе это можно реализовать, линейные преобразования?
линейное преобразование - это f(x) = k*x+b, где k и b - константы, а x - исходная величина. Просто математикой.
По вопросам работы Форума можно обратиться по этим контактам.

Ответить

Вернуться в «WEINTEK (операторские панели)»