Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 16

Тема: Использование одного регистра для чтения и записи по Modbus TCP

  1. #1

    Question Использование одного регистра для чтения и записи по Modbus TCP

    Добрый день. Вопрос про асинхронность чтения/записи в Masterscada 4d.
    Когда требуется отправлять команды/менять уставки в контроллере только из Masterscada, проблем особо нет, создал внутренние переменные на вход и выход и привязал их на вход/выход необходимого регистра. На мнемосхеме так же правильно подвязал их на числовой ввод и все работает.
    Вопросы начинаются, если этот регистр могут поменять из другого места (скады/контролоера/hmi- панели), ведь при изменении оттуда у нас в Masterscada обновится вход, но не выход. И при следующей команде/изменении уставки из Masterscada мы затрем предыдущее значение, особенно это чревато при использовании битовой маски и записи через Setbit конкретного бита. Приходится использовать костыли типа сравнения входа и выхода и перезаписи значений по условию.
    Не нашёл как это победить в документации. Поделитесь опытом, как с этим боритесь?
    Последний раз редактировалось wargot; 21.10.2025 в 19:36.

  2. #2

    По умолчанию

    Цитата Сообщение от wargot Посмотреть сообщение
    Добрый день. Вопрос про асинхронность чтения/записи в Masterscada 4d.
    Когда требуется отправлять команды/менять уставки в контроллере только из Masterscada, проблем особо нет, создал внутренние переменные на вход и выход и привязал их на вход/выход необходимого регистра. На мнемосхеме так же правильно подвязал их на числовой ввод и все работает.
    Вопросы начинаются, если этот регистр могут поменять из другого места (скады/контролоера/hmi- панели), ведь при изменении оттуда у нас в Masterscada обновится вход, но не выход. И при следующей команде/изменении уставки из Masterscada мы затрем предыдущее значение, особенно это чревато при использовании битовой маски и записи через Setbit конкретного бита. Приходится использовать костыли типа сравнения входа и выхода и перезаписи значений по условию.
    Не нашёл как это победить в документации. Поделитесь опытом, как с этим боритесь?
    Ну я также использую костыли на st...

    Присоединяюсь к вопросу, а можно ли как то проСЧе!?

    Хотя судя по их последнему вебинару, они считают нормой что переменные для работы надо громадным списком на st присваивать... Хотя вроде сделали возможность это автоматизировать скриптом на с#... Одни мучения с этой скадой...

  3. #3

    По умолчанию

    Цитата Сообщение от wargot Посмотреть сообщение
    Добрый день. Вопрос про асинхронность чтения/записи в Masterscada 4d.
    Когда требуется отправлять команды/менять уставки в контроллере только из Masterscada, проблем особо нет, создал внутренние переменные на вход и выход и привязал их на вход/выход необходимого регистра. На мнемосхеме так же правильно подвязал их на числовой ввод и все работает.
    Вопросы начинаются, если этот регистр могут поменять из другого места (скады/контролоера/hmi- панели), ведь при изменении оттуда у нас в Masterscada обновится вход, но не выход. И при следующей команде/изменении уставки из Masterscada мы затрем предыдущее значение, особенно это чревато при использовании битовой маски и записи через Setbit конкретного бита. Приходится использовать костыли типа сравнения входа и выхода и перезаписи значений по условию.
    Не нашёл как это победить в документации. Поделитесь опытом, как с этим боритесь?
    При использовании программной распаковки-упаковки бит - нормального решения нет (точнее я не нашёл).
    Если есть возможность использовать битовые теги - используйте их, с ними проблем нет.
    Также в настройках протокола есть параметр, отвечающий за порядок отправки команд записи. По умолчанию стоит "по изменению значения" - в некоторых случаях бывает полезно сделать "по изменению метки времени". Т.е. если выход имеет значение 16 (а на входе этого тега значение может быть и не 16) и вы записали опять 16 - в первом случае отправки команды записи не будет, а во втором - будет

  4. #4

    По умолчанию

    Цитата Сообщение от 1exan Посмотреть сообщение
    При использовании программной распаковки-упаковки бит - нормального решения нет (точнее я не нашёл).
    Если есть возможность использовать битовые теги - используйте их, с ними проблем нет.
    Также в настройках протокола есть параметр, отвечающий за порядок отправки команд записи. По умолчанию стоит "по изменению значения" - в некоторых случаях бывает полезно сделать "по изменению метки времени". Т.е. если выход имеет значение 16 (а на входе этого тега значение может быть и не 16) и вы записали опять 16 - в первом случае отправки команды записи не будет, а во втором - будет
    Тут вопрос для меня по одной штуке. В нормальных скадах (роквелл, сименс, хотя сименс я не считаю за нормальную, но...) я могу слать тег (бит, не важно) как "установить в 1". При этом я повторно его так же могу послать, и контроллер (при условии, что он сам сбросит этот тег) заново примет эту 1 снова, а тут надо не только в плк его сбросить, но и отработать обнуление в самой скаде. Эти костыли замучали. Или тут тоже все проще можно реализовать? Тут скада сможет "по изменению метки времени" понять, что надо на старую 1 послать новую 1...? В плк то уже есть 1 и ему пофиг на время... Или нет?

  5. #5

    По умолчанию

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

  6. #6

    По умолчанию

    Здравствуйте! Делаю проект в MasterScada 4d, также столкнулся с такой проблемой, что бы использовать один регистр, нашел способ решения.
    У меня связь по Modbus TCP.
    1. Создаете свой тег Inout
    2. В объекте создаете не параметр, а вещественный тег.
    3. Перетащите тег из Объектов на тег в Системе.
    4. Перетащите тег из Системы на тег в Объектах.
    5 При этом Вход и Выход не трогаете.
    Снимок.PNG

  7. #7
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    12,990

    По умолчанию

    Простите, и так каждый раз таскать?
    Вот просто, есть понятия RO, RW, W везде и всюду. Пользователь просто должен выбрать из 3-х для 1-го, нескольких тегов. А не заниматься перетаскиванием, особенно когда там несколько тысяч или сот тысяч, и 30% с записью.

  8. #8

    По умолчанию

    Цитата Сообщение от melky Посмотреть сообщение
    Простите, и так каждый раз таскать?
    Вот просто, есть понятия RO, RW, W везде и всюду. Пользователь просто должен выбрать из 3-х для 1-го, нескольких тегов. А не заниматься перетаскиванием, особенно когда там несколько тысяч или сот тысяч, и 30% с записью.
    Есть теги в устройстве, а есть переменные в скаде - вот между ними один раз нужно установить нужные связи (в произвольный момент разработки).
    А внутри скады используются только переменные скады.

  9. #9

    По умолчанию

    Цитата Сообщение от stanislavpotapchenko Посмотреть сообщение
    нашел способ решения.
    Это, извините, не решение, а больше на пляски с бубном похоже.

  10. #10

    По умолчанию

    Цитата Сообщение от melky Посмотреть сообщение
    Простите, и так каждый раз таскать?
    Вот просто, есть понятия RO, RW, W везде и всюду. Пользователь просто должен выбрать из 3-х для 1-го, нескольких тегов. А не заниматься перетаскиванием, особенно когда там несколько тысяч или сот тысяч, и 30% с записью.
    Это нужно сделать один раз с вашим тэгом.

Страница 1 из 2 12 ПоследняяПоследняя

Похожие темы

  1. Ошибка чтения Coil регистра в китайском реле
    от fizhimik в разделе Трёп (Курилка)
    Ответов: 17
    Последнее сообщение: 15.07.2024, 10:34
  2. Ответов: 22
    Последнее сообщение: 28.09.2022, 10:29
  3. ПЛК150 и SysLibFileOpen, режимы чтения и записи
    от fatlortroll в разделе ПЛК1хх
    Ответов: 6
    Последнее сообщение: 07.03.2020, 17:41
  4. Чтение/запись из одного регистра
    от Николай_бел в разделе ПЛК1хх
    Ответов: 23
    Последнее сообщение: 14.10.2016, 13:53
  5. Протокол чтения/записи ПЛК
    от dudanov в разделе Сервисное ПО
    Ответов: 18
    Последнее сообщение: 02.02.2015, 14:51

Метки этой темы

Ваши права

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