Передача команд ТУ Коммуникатору

Стартовая страница Форумы Разработка и интеграция Передача команд ТУ Коммуникатору

Просмотр 7 сообщений - с 1 по 7 (из 7 всего)
  • Автор
    Записи
  • #7261
    Kazam
    Участник

    Добрый день, коллеги!

    Столкнулся с интересной особенностью при передаче большого количества команд ТУ от сервера к коммуникатору.

    Предположим, что программно передаем команду ТУ, вот так:

    Log.WriteLineDelegate writeToLog;
                    writeToLog = text => { }; // заглушка
                    CommSettings cm = new 
                    CommSettings("localhost",10000,"ScadaApi","ScadaApi", 10000);
                    ServerComm sc = new ServerComm(cm, writeToLog);
                    bool result;
                   
                   
                    sc.SendBinaryCommand(0, 
                    Convert.ToInt32(context.JobDetail.JobDataMap.Get("ctrlNum")), new byte[] { 0x00, 0x00 }, out result);
                    sc.Close();

    А теперь представим что таких команд > 500 штук.
    Scada Server их отрабатывает очень быстро. А вот коммуникатору они предаются крайне медленно, примерно так:

    2017-09-12 15:48:27 <DS><система><ACT> Получена команда от SCADA-Сервера: тип=Binary, КП=77, номер=1
    2017-09-12 15:48:38 <DS><система><ACT> Получена команда от SCADA-Сервера: тип=Binary, КП=81, номер=1
    2017-09-12 15:48:48 <DS><система><ACT> Получена команда от SCADA-Сервера: тип=Binary, КП=79, номер=1
    2017-09-12 15:48:55 <DS><система><ACT> Получена команда от SCADA-Сервера: тип=Binary, КП=89, номер=1
    2017-09-12 15:49:01 <DS><система><ACT> Получена команда от SCADA-Сервера: тип=Binary, КП=91, номер=1
    2017-09-12 15:49:08 <DS><система><ACT> Получена команда от SCADA-Сервера: тип=Binary, КП=514, номер=1
    2017-09-12 15:49:16 <DS><система><ACT> Получена команда от SCADA-Сервера: тип=Binary, КП=509, номер=1
    2017-09-12 15:49:26 <DS><система><ACT> Получена команда от SCADA-Сервера: тип=Binary, КП=515, номер=1
    2017-09-12 15:49:34 <DS><система><ACT> Получена команда от SCADA-Сервера: тип=Binary, КП=513, номер=1
    2017-09-12 15:49:43 <DS><система><ACT> Получена команда от SCADA-Сервера: тип=Binary, КП=517, номер=1
    2017-09-12 15:49:49 <DS><система><ACT> Получена команда от SCADA-Сервера: тип=Binary, КП=508, номер=1
    2017-09-12 15:49:55 <DS><система><ACT> Получена команда от SCADA-Сервера: тип=Binary, КП=511, номер=1
    2017-09-12 15:50:02 <DS><система><ACT> Получена команда от SCADA-Сервера: тип=Binary, КП=512, номер=1
    2017-09-12 15:50:09 <DS><система><ACT> Получена команда от SCADA-Сервера: тип=Binary, КП=361, номер=1
    2017-09-12 15:50:19 <DS><система><ACT> Получена команда от SCADA-Сервера: тип=Binary, КП=367, номер=1
    2017-09-12 15:50:29 <DS><система><ACT> Получена команда от SCADA-Сервера: тип=Binary, КП=365, номер=1
    2017-09-12 15:50:40 <DS><система><ACT> Получена команда от SCADA-Сервера: тип=Binary, КП=372, номер=1
    2017-09-12 15:50:50 <DS><система><ACT> Получена команда от SCADA-Сервера: тип=Binary, КП=368, номер=1
    2017-09-12 15:50:59 <DS><система><ACT> Получена команда от SCADA-Сервера: тип=Binary, КП=366, номер=1
    2017-09-12 15:51:12 <DS><система><ACT> Получена команда от SCADA-Сервера: тип=Binary, КП=70, номер=1
    2017-09-12 15:53:02 <DS><система><ACT> Получена команда от SCADA-Сервера: тип=Binary, КП=199, номер=1
    2017-09-12 15:53:12 <DS><система><ACT> Получена команда от SCADA-Сервера: тип=Binary, КП=200, номер=1
    2017-09-12 15:53:20 <DS><система><ACT> Получена команда от SCADA-Сервера: тип=Binary, КП=197, номер=1
    2017-09-12 15:53:26 <DS><система><ACT> Получена команда от SCADA-Сервера: тип=Binary, КП=198, номер=1
    2017-09-12 15:53:33 <DS><система><ACT> Получена команда от SCADA-Сервера: тип=Binary, КП=201, номер=1

    Как ускорить процесс?

    И сразу офтоп.
    Модуль автоматического управления переживет > 500 команд при запуске по таймеру?

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

    Да, как-то медленно )
    В Коммуникаторе для приёма команд используется отдельный поток и команды добавляются в очередь без обработки, то есть на этапе приёма ничего их не тормозит.

    Если Вы отправите 10 команд, то они тоже будут передаваться в Коммуникатор примерно раз в 10 секунд?
    Как загружен процессор в момент отправки 500 команд?
    Если деактивировать линии связи в Коммуникаторе, оставив одну, скорость приёма изменится?

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

    В Модуле автоуправления нет ограничений. Скорее зависит от Сервера.
    Если не секрет, какая у Вас задача, которая требует 500 команд?

    #7273
    Kazam
    Участник

    Добрый день!
    Задача стара как мир -) — Опрос архивов ТВЧ СПТ и им подобных.
    Логика работы такая: драйвером КП при получении команды ТУ, останавливается опрос текущих и начинается опрос архивов и их последующая запись в SQL.

    Отправка команд ТУ происходит по индивидуальному расписанию. Группами по 20-30 штук. Иногда нажимается кнопка — опросить все.
    Процессор в среднем загружен на 30 % (800 Линий связи, 900 КП).
    В момент отправки всех команд — процессор загружен в 40%.

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

    Попробуйте выполнить рекомендации выше. Это поможет понять, где узкое место.

    #7276
    Kazam
    Участник

    Проверил, при отключении Линий связи команды передаются быстрее, но это не наш метод (с).

    Впихнуть все КП в пределы нескольких линий не могу -( Ибо все 500 объектов опрашиваются раз в минуту -) Иначе будут задержки в опросе.
    Михаил, как еще можно ускорить работы Коммуникатора? есть ли мысли?

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

    Нужно проводить исследование по быстродействию и, скорее всего, оптимизацию кода. Могу рассчитать предложение по стоимости данной работы.

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