Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?

Официальный форум Simple-Scada.

Автор Тема: Как происходит обмен данными в цепочке SCADA-arOPC-ПЛК (Modbus TCP)  (Прочитано 8932 раз)

crm97

  • Новичок
  • *
  • Сообщений: 7
    • Просмотр профиля
Здравствуйте.

Подскажите как происходит передача значений для записи из SCADA в arOPC и далее в ПЛК (Modbus TCP) в следующих ситуациях.
Используем последние версии arOPC и SimpleSCADA.

1. Связь с ПЛК установлена и стабильна.
Допустим есть кнопка без фиксации. При нажатии переменной присваивается значение 1, при отпускании - значение 0.
arOPC сервер при этом в очередь на запись в ПЛК поставит последовательно условно две команды "записать значение 1", "записать значение 0"?
Другими словами любое изменение значения переменной гарантированно транслируется в отдельные команды, которые отправляются в ПЛК в том же хронологическом порядке, в котором происходили изменения значения?

2. Связь оборвалась.
Буфер команд к ПЛК очищается или arOPC хранит команды в буфере до восстановления связи?
Новые команды записи от SCADA в буфер добавляются или игнорируются до восстановления связи?

3. Общий вопрос.
Для разных ПЛК в arOPC, подключенных по одному каналу, буфер команд общий или индивидуальный?

4. Вопрос скорее к Simple SCADA.
Если в скрипте кнопки значение переменной меняем несколько раз в процессе однократного выполнения, то при каждом изменении в переменную будет записываться новое значение каждый раз, или в переменную записывается значение только после завершения скрипта?

5. На форуме был такой ответ по работе arOPC с Modbus - https://simple-scada.com/forum/index.php?topic=1323.msg10225#msg10225
Цитировать
Да, если из Simple Scada, из одного скрипта, последовательно, в эти три тега выполнить  запись, то OPC сервер сформирует единый Modbus пакет.
Для Modbus TCP работает аналогичным образом? Так работает только для тэгов одного устройства? Что делать, если требуется, чтобы не формировался единый пакет, а значения отправлялись отдельными запросами?

arOPC

  • Модератор
  • *****
  • Сообщений: 249
  • За словом дело, за делом результат
    • Просмотр профиля
    • ardsoft
Здравствуйте.

Отвечу только на вопросы которые касаются arOPC.
По SimpleScada ответят её разработчики.

Цитировать
Другими словами любое изменение значения переменной гарантированно транслируется в отдельные команды, которые отправляются в ПЛК в том же хронологическом порядке, в котором происходили изменения значения?
Хронология соблюдается.

Цитировать
2. Связь оборвалась.
Буфер очищается. Новые команды игнорируются.

Цитировать
3. Общий вопрос.
Для каждого устройства свой буфер. Емкость буфера 32 команды.

Цитировать
Для Modbus TCP работает аналогичным образом? Так работает только для тэгов одного устройства?
Сборка команд в один запрос работает только в пределах одного устройства. Если вы в одном скрипте дадите команду на запись в несколько устройств, в каждом устройстве сформируется своя команда. Так же необходимо понимать, что если в одном скрипте даётся запись в теги одного устройства, но при этом теги разнесены, тоже будут сформировано несколько команд.
Например: есть теги с адресами 1,2,3, 8, 9, 15. В этом случае OPC сервер сформирует три команды: 1-2-3, 8-9, 15.

Айрат


crm97

  • Новичок
  • *
  • Сообщений: 7
    • Просмотр профиля
Спасибо.

Цитировать
Например: есть теги с адресами 1,2,3, 8, 9, 15. В этом случае OPC сервер сформирует три команды: 1-2-3, 8-9, 15.
Для специфических устройств есть возможность разбить команду 1-2-3 на отдельные - 1, 2, 3?

arOPC

  • Модератор
  • *****
  • Сообщений: 249
  • За словом дело, за делом результат
    • Просмотр профиля
    • ardsoft
Пока такой возможности нет.
Можете подсказать что за устройство?

Айрат.

crm97

  • Новичок
  • *
  • Сообщений: 7
    • Просмотр профиля
Вопрос скорее из любопытства. Очень давно с такими не сталкивался. Из того что помню похожее поведение может потребоваться для С2000-ПП (Болид). У них, для примера, по протоколу Modbus прежде, чем запросить расширенное состояние зоны, необходимо отправить команду с номером зоны в прибор, и только после этого можно считать данные при условии, что есть готовность. Это пример конечно не совсем подходящий, т.к. в данном случае проще написать отдельный драйвер для обмена. Но очень давно, лет 15 назад сталкивался с приборами, которые воспринимают только ограниченный набор команд и запись в регистры возможно только отдельным запросами.
« Изменён: 19 Апреля 2024, 13:46:10 от Simple_Scada »

arOPC

  • Модератор
  • *****
  • Сообщений: 249
  • За словом дело, за делом результат
    • Просмотр профиля
    • ardsoft
Поэтому и заинтересовался т.к. такие приборы пока не встречались.
С Болидами вроде проблем нет.
На текущий момент наоборот, попадаются устройства не поддерживающие команды записи в единичный регистр, только команду записи нескольких регистров, даже если речь идет об одном.
Но этот момент учтен.

Айрат

Simple_Scada

  • Администратор
  • *****
  • Сообщений: 1408
    • Просмотр профиля
Здравствуйте.

Цитировать
4. Вопрос скорее к Simple SCADA.
Если в скрипте кнопки значение переменной меняем несколько раз в процессе однократного выполнения, то при каждом изменении в переменную будет записываться новое значение каждый раз, или в переменную записывается значение только после завершения скрипта?
Если в скрипте несколько раз изменить значение одной и той же переменной, то в переменную один раз запишется последнее значение.