Стартовая страница › Форумы › Разработка и интеграция › Передача команд ТУ Коммуникатору
- В этой теме 6 ответов, 2 участника, последнее обновление 8 лет, 11 месяцев назад сделано
Mikhail.
-
АвторЗаписи
-
12.09.2017 в 14:00 #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 команд при запуске по таймеру?13.09.2017 в 09:54 #7267
MikhailМодераторДа, как-то медленно )
В Коммуникаторе для приёма команд используется отдельный поток и команды добавляются в очередь без обработки, то есть на этапе приёма ничего их не тормозит.Если Вы отправите 10 команд, то они тоже будут передаваться в Коммуникатор примерно раз в 10 секунд?
Как загружен процессор в момент отправки 500 команд?
Если деактивировать линии связи в Коммуникаторе, оставив одну, скорость приёма изменится?13.09.2017 в 09:55 #7268
MikhailМодераторВ Модуле автоуправления нет ограничений. Скорее зависит от Сервера.
Если не секрет, какая у Вас задача, которая требует 500 команд?13.09.2017 в 12:25 #7273Kazam
УчастникДобрый день!
Задача стара как мир -) — Опрос архивов ТВЧ СПТ и им подобных.
Логика работы такая: драйвером КП при получении команды ТУ, останавливается опрос текущих и начинается опрос архивов и их последующая запись в SQL.Отправка команд ТУ происходит по индивидуальному расписанию. Группами по 20-30 штук. Иногда нажимается кнопка — опросить все.
Процессор в среднем загружен на 30 % (800 Линий связи, 900 КП).
В момент отправки всех команд — процессор загружен в 40%.13.09.2017 в 12:35 #7274
MikhailМодераторПопробуйте выполнить рекомендации выше. Это поможет понять, где узкое место.
13.09.2017 в 13:34 #7276Kazam
УчастникПроверил, при отключении Линий связи команды передаются быстрее, но это не наш метод (с).
Впихнуть все КП в пределы нескольких линий не могу -( Ибо все 500 объектов опрашиваются раз в минуту -) Иначе будут задержки в опросе.
Михаил, как еще можно ускорить работы Коммуникатора? есть ли мысли?13.09.2017 в 14:46 #7278
MikhailМодераторНужно проводить исследование по быстродействию и, скорее всего, оптимизацию кода. Могу рассчитать предложение по стоимости данной работы.
-
АвторЗаписи
- Для ответа в этой теме необходимо авторизоваться.