Страница 47 из 161 ПерваяПервая ... 3745464748495797147 ... ПоследняяПоследняя
Показано с 461 по 470 из 1842

Тема: Вопросы по MasterSCADA 4D

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    По умолчанию

    Спасибо за ответ. Тоже было время подумать, хотелось структурировать все по окнам, кто за что отвечает, вставить управляющие элементы под соответствующими Контейнерами... но наверно не судьба и немного не корректно так делать. Красота страдает... остается играть теми "кубиками" что есть

  2. #2

    По умолчанию

    Цитата Сообщение от kapelli Посмотреть сообщение
    Спасибо за ответ. Тоже было время подумать, хотелось структурировать все по окнам, кто за что отвечает, вставить управляющие элементы под соответствующими Контейнерами... но наверно не судьба и немного не корректно так делать. Красота страдает... остается играть теми "кубиками" что есть
    А чем не устраивает поставить легенду под график?
    Можно сделать окно высокое, сверху тренд, снизу легенду,
    Потом загнать окно в контейнер с одинаковой шириной , и сделать прокрутку вниз
    Screenshot_11.png

  3. #3

    По умолчанию

    Читаете мысли так и поступил

  4. #4
    Пользователь
    Регистрация
    19.08.2014
    Адрес
    г. Саратов
    Сообщений
    72

    По умолчанию

    Здравствуйте,Коллеги!

    Подскажите, пожалуйста,как сделать чтение и запись регистра Modbus float в одном поле текстового ввода (или другом элементе).

    В контроллере существует регистр Modbus TCP (чтение и запись по одному адресу) необходимо осуществлять отображение значение регистра и его изменение в в одном поле текстового ввода (или другом элементе).
    Создаю в Системе протокол с базовым каналом с доступом InOut, в объектах параметр,привязываю его к полю ввода текста и к каналу. Привязывал к каналу в различных вариантах. Отображение в поле текстового ввода происходит нормально, запись регистра работает не стабильно, выглядит как конкуренция записи старого и нового значения.
    Q_MS4_1.jpg.

  5. #5

    По умолчанию

    Цитата Сообщение от RamesIV Посмотреть сообщение
    Здравствуйте,Коллеги!

    Подскажите, пожалуйста,как сделать чтение и запись регистра Modbus float в одном поле текстового ввода (или другом элементе).

    В контроллере существует регистр Modbus TCP (чтение и запись по одному адресу) необходимо осуществлять отображение значение регистра и его изменение в в одном поле текстового ввода (или другом элементе).
    Создаю в Системе протокол с базовым каналом с доступом InOut, в объектах параметр,привязываю его к полю ввода текста и к каналу. Привязывал к каналу в различных вариантах. Отображение в поле текстового ввода происходит нормально, запись регистра работает не стабильно, выглядит как конкуренция записи старого и нового значения.
    Q_MS4_1.jpg.
    В окне надо создать элемент инкремент

    На вход инкремента сделать связь с выходом регистра,
    выход инкремента со входом регистра

    upd, в регистре сделать запись по изменению
    Последний раз редактировалось VladGC; 08.11.2021 в 09:52.

  6. #6
    Пользователь
    Регистрация
    19.08.2014
    Адрес
    г. Саратов
    Сообщений
    72

    По умолчанию

    Спасибо, VladGC, b_aleks!

    С разделением входного и выходного параметра работает корректно, на данном этапе этого достаточно. Но остался вопрос. При применении текстового ввода при отображении значения можно задать формат (f3), при этом "дробный хвост" 4-х байтного float не отображается, в инкременте формата отображения нет. Есть какие-то пути решения с использованием инкремента (второй контрол для отображения использовать нельзя- нужно и ввод и отображение реализовать в 1-м элементе)?
    Q_MS4_2.1.jpg
    Q_MS4_2.2.jpg

  7. #7

    По умолчанию

    Цитата Сообщение от RamesIV Посмотреть сообщение
    Спасибо, VladGC, b_aleks!

    С разделением входного и выходного параметра работает корректно, на данном этапе этого достаточно. Но остался вопрос. При применении текстового ввода при отображении значения можно задать формат (f3), при этом "дробный хвост" 4-х байтного float не отображается, в инкременте формата отображения нет. Есть какие-то пути решения с использованием инкремента (второй контрол для отображения использовать нельзя- нужно и ввод и отображение реализовать в 1-м элементе)?
    Q_MS4_2.1.jpg
    Q_MS4_2.2.jpg
    Шаг инкримента указали правильный?

    Еще можно сделать промежуточную переменную, и округлять переменную.
    Сделать что то вроде такого:
    Создать программу, вход регистра связать с выходом программы
    Выход программы с входом регистра,
    Точно так же связать с инкриментом
    Округлять можно так

    FUNCTION funRound : LREAL
    VAR_INPUT
    IN: LREAL := 0;
    N: INT := 0;
    END_VAR

    VAR_OUTPUT
    EnO: BOOL := True;
    END_VAR

    VAR
    DECADES: ARRAY [0..8] OF LREAL := [1, 10, 100, 1000, 10000, 10000, 100000, 1000000, 10000000];
    X: LREAL := 0;
    END_VAR



    X := DECADES[LIMIT(0,N,8)];
    funRound:= DINT_TO_REAL(REAL_TO_DINT(in * X)) / X;

    END_FUNCTION

  8. #8
    Пользователь
    Регистрация
    19.08.2014
    Адрес
    г. Саратов
    Сообщений
    72

    По умолчанию

    Спасибо!

    Шаг инкремента я в общем-то не использовал... Можно попробовать округлить переменную на входе инкремента, тогда отображаться будет красиво но пока избыточных преобразований делать не очень хочу.
    Кстати при циклическом чтении регистра такое преобразование будет производиться постоянно, что наверное может отразиться на производительности при большом количестве переменных...
    А в чем криминал использования текстового ввода для ввода числовых значений (при при попытке ввода некорректного значения выдается convert warning)?

  9. #9

    По умолчанию

    Цитата Сообщение от RamesIV Посмотреть сообщение
    Спасибо, VladGC, b_aleks!

    С разделением входного и выходного параметра работает корректно, на данном этапе этого достаточно. Но остался вопрос. При применении текстового ввода при отображении значения можно задать формат (f3), при этом "дробный хвост" 4-х байтного float не отображается, в инкременте формата отображения нет. Есть какие-то пути решения с использованием инкремента (второй контрол для отображения использовать нельзя- нужно и ввод и отображение реализовать в 1-м элементе)?
    Q_MS4_2.1.jpg
    Q_MS4_2.2.jpg
    У вас InPar и OutPar какого типа? Если REAL, то в инкременте так и будет дробная часть отображаться. Измените тип на LREAL, тогда в инкременте будет отображаться 1.1

  10. #10
    Пользователь
    Регистрация
    19.08.2014
    Адрес
    г. Саратов
    Сообщений
    72

    По умолчанию

    У меня регистр Modbus - Real 4 байта. Ему точности для LReal не хватает. Таким образом хвост физически будет ( если его не округлить в скаде),как например, предложил VladGC.
    А InPar и OutPar у меня LReal.

Страница 47 из 161 ПерваяПервая ... 3745464748495797147 ... ПоследняяПоследняя

Похожие темы

  1. Вопросы по СИ-8
    от aleksandr87 в разделе Эксплуатация
    Ответов: 2
    Последнее сообщение: 11.06.2016, 18:56
  2. Вопросы новичка по MasterScada
    от MrNobody в разделе Master SCADA 3
    Ответов: 4
    Последнее сообщение: 04.09.2014, 14:39
  3. MasterScada v3.6 Основные вопросы
    от colorprint2008 в разделе Master SCADA 3
    Ответов: 7
    Последнее сообщение: 24.12.2013, 15:50
  4. конвертация проекта из Masterscada 3.5 в Masterscada 3.4
    от Сергей_SPB в разделе Master SCADA 3
    Ответов: 2
    Последнее сообщение: 01.04.2013, 16:56
  5. Вопросы по трендам MasterSCADA
    от 42ia в разделе Master SCADA 3
    Ответов: 9
    Последнее сообщение: 26.06.2012, 10:58

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •