OPC UA несколько регистров одной командой

Стартовая страница Форумы Взаимодействие с устройствами OPC UA несколько регистров одной командой

Просмотр 12 сообщений - с 1 по 12 (из 12 всего)
  • Автор
    Сообщения
  • #25212
    scmember
    Участник

    Добрый день!

    есть линия OPC UA, на ней КП с несколькими десятками тегов типа «команда ТУ» для передачи параметров техпроцесса и командой старта выполнения задачи. Есть программа на с#, которая использует класс Scada.Client.ServerComm и метод SendStandardCommand для работы с КП. Цикл работы устройства при этом получается с заметной паузой на обмен данными, пока ему в цикле одна за другой передаются команды на выставление нужных параметров, и потом команда на выполнение. Как можно убыстрить такой обмен?

    #25229
    Mikhail
    Модератор

    Добрый день!

    Необходим журнал линии связи, в котором будут видно использование OPC-сервера, а также укажите, в какой момент происходят задержки.

    #27376
    scmember
    Участник

    Например вот:

    2023-02-16 16:04:59 Команда КП 2 "Контроллер command", тип: KpOpcUa
    Отправка значения OPC-серверу: A2_Command_Angle = -11,17528
    OK!
    
    2023-02-16 16:04:59 Команда КП 2 "Контроллер command", тип: KpOpcUa
    Отправка значения OPC-серверу: A2_Command_Velocity = 30
    OK!
    
    2023-02-16 16:04:59 Команда КП 2 "Контроллер command", тип: KpOpcUa
    Отправка значения OPC-серверу: A3_Command_Velocity = 0
    OK!
    
    2023-02-16 16:04:59 Команда КП 2 "Контроллер command", тип: KpOpcUa
    Отправка значения OPC-серверу: CommandWorkMoving = True
    OK!
    
    2023-02-16 16:04:59 Команда КП 2 "Контроллер command", тип: KpOpcUa
    Отправка значения OPC-серверу: SendCommandToBuffer = True
    OK!
    
    2023-02-16 16:04:59 Команда КП 2 "Контроллер command", тип: KpOpcUa
    Отправка значения OPC-серверу: A2_Command_Angle = -14,00076
    OK!
    
    2023-02-16 16:04:59 Команда КП 2 "Контроллер command", тип: KpOpcUa
    Отправка значения OPC-серверу: A3_Command_Angle = 29,74607
    OK!
    
    2023-02-16 16:04:59 Команда КП 2 "Контроллер command", тип: KpOpcUa
    Отправка значения OPC-серверу: A4_Command_Angle = -15,74532
    OK!
    
    2023-02-16 16:04:59 Команда КП 2 "Контроллер command", тип: KpOpcUa
    Отправка значения OPC-серверу: A3_Command_Velocity = 30
    OK!
    
    2023-02-16 16:04:59 Команда КП 2 "Контроллер command", тип: KpOpcUa
    Отправка значения OPC-серверу: A4_Command_Velocity = 30
    OK!
    
    2023-02-16 16:04:59 Команда КП 2 "Контроллер command", тип: KpOpcUa
    Отправка значения OPC-серверу: CommandHammer = 1
    OK!
    
    2023-02-16 16:04:59 Команда КП 2 "Контроллер command", тип: KpOpcUa
    Отправка значения OPC-серверу: SendCommandToBuffer = True
    OK!
    
    2023-02-16 16:05:00 Команда КП 2 "Контроллер command", тип: KpOpcUa
    Отправка значения OPC-серверу: A2_Command_Angle = -11,17528
    OK!
    
    2023-02-16 16:05:00 Команда КП 2 "Контроллер command", тип: KpOpcUa
    Отправка значения OPC-серверу: A3_Command_Angle = 33,5142
    OK!
    
    2023-02-16 16:05:00 Команда КП 2 "Контроллер command", тип: KpOpcUa
    Отправка значения OPC-серверу: A4_Command_Angle = -22,33892
    OK!
    
    2023-02-16 16:05:00 Команда КП 2 "Контроллер command", тип: KpOpcUa
    Отправка значения OPC-серверу: CommandHammer = 0
    OK!
    
    2023-02-16 16:05:00 Команда КП 2 "Контроллер command", тип: KpOpcUa
    Отправка значения OPC-серверу: CommandWorkMoving = False
    OK!
    
    2023-02-16 16:05:00 Команда КП 2 "Контроллер command", тип: KpOpcUa
    Отправка значения OPC-серверу: SendCommandToBuffer = True
    OK!
    
    2023-02-16 16:05:00 Команда КП 2 "Контроллер command", тип: KpOpcUa
    Отправка значения OPC-серверу: A2_Command_Angle = -11,68486
    OK!
    
    2023-02-16 16:05:00 Команда КП 2 "Контроллер command", тип: KpOpcUa
    Отправка значения OPC-серверу: A3_Command_Velocity = 0
    OK!
    
    2023-02-16 16:05:00 Команда КП 2 "Контроллер command", тип: KpOpcUa
    Отправка значения OPC-серверу: A4_Command_Velocity = 0
    OK!
    
    2023-02-16 16:05:00 Команда КП 2 "Контроллер command", тип: KpOpcUa
    Отправка значения OPC-серверу: SendCommandToBuffer = True
    OK!

    А таких тегов у КП тысяча, в сумме они уходят около 20 секунд…

    • Этот ответ был изменен 1 год, 2 месяца назад от Mikhail.
    • Этот ответ был изменен 1 год, 2 месяца назад от Mikhail.
    #27388
    Mikhail
    Модератор

    Была раньше похожая тема на форуме.
    Проблема в том, что поток команд слишком большой. Команды имеют более высокий приоритет, чем опрос, поэтому опрос на линии связи не успевает происходить.

    Нужно замедлить опрос того устройства, которое является источником данных, на которое настроены триггеры в модуле автоуправления. Какой драйвер для используется для этого устройства?

    И 2-й вопрос, по какому протоколу обмена данными работает то устройство, которое подключено через OPC UA?

    #27391
    scmember
    Участник

    я бы сказал, что в нашем случае основная проблема — что данные на кп уходят потоком команд, а не одной командой. Допустим, если бы обмениваться с кп по modbus, то эти 1000 тегов уходили бы одной сетевой посылкой, и обмен был бы на порядки быстрее…

    KP работает с драйвером KpOpcUa, по ethernet

    #27394
    Mikhail
    Модератор

    Поэтому я и задал 2-й вопрос из поста выше.

    #27396
    scmember
    Участник

    KP работает с драйвером KpOpcUa, по ethernet

    вот ответил на вопрос 2…

    #27408
    Mikhail
    Модератор

    Встроенный OPC UA-сервер на самом устройстве?

    #27416
    scmember
    Участник

    да, непосредственно на контроллере

    #27418
    Mikhail
    Модератор

    Допустим, драйвер OPC UA можно доработать, чтобы он отправлял сразу несколько значений на запись. Но кроме драйвера потребуется разработать модуль Сервера, который будет упаковывать несколько значений, изменившиеся за заданный (короткий) период времени, в одну команду.

    Из того, что можно сделать без доработки — замедлить опрос устройства, которое является источником данных.

    #27425
    scmember
    Участник

    спасибо за советы.

    насчет вот этого:

    драйвер OPC UA можно доработать, чтобы он отправлял сразу несколько значений на запись.

    можете чуть более подробно посоветовать?

    #27434
    Mikhail
    Модератор

    Имел ввиду, что самый простой путь решения проблемы — замедлить опрос устройства, которое является источником данных.

    Более сложный путь требует доработки существующих модулей. Возможны различные походы к доработке:
    1. В драйвере OPC UA реализовать команду отправки сразу нескольких значений. Также потребуется разработать модуль Сервера, который будет отслеживать изменения и отправлять такие команды Коммуникатору.
    2. В драйвере OPC UA реализовать очередь, которая будет группировать поступающие команды для отправки одним пакетом.
    Доработки можно заказать или реализовать самостоятельно.

Просмотр 12 сообщений - с 1 по 12 (из 12 всего)
  • Вы должны авторизироваться для ответа в этой теме.