Созданные ответы форума
-
АвторСообщения
-
OlegУчастник
Romiros, спасибо за ответ.
OlegУчастникДобрый день.
Не было уведомления на email об ответе, поэтому пропустил вопрос)
График за сутки строится около секунды, максимум две.
Каждый файл минутных данных весит 80 Мегабайт.OlegУчастникУменьшил период до 5с. В принципе работает нормально, тормозов не замечал, формулы обрабатывает. Графики за несколько дней тоже подгружаются.
OlegУчастникВечер добрый.
Кто-нибудь проверял, как будет работать система, например с количеством каналов около 1000, (запись в базу, отображение графиков, работа модуля автоматического управления, отправка e-mail), если частоту записи минутных срезов изменить с 60с до 5с?- Этот ответ был изменен 5 лет, 5 месяцев назад от Oleg.
OlegУчастникСлучайно увидел момент, когда вылетело представление, в 20:14. Скопировал лог:
2017-08-01 18:57:08 <RUSTP-WEBWS-20><DefaultAppPool><ACT> Выход из системы: user. IP-адрес: 10.7.68.8
2017-08-01 18:57:08 <RUSTP-WEBWS-20><DefaultAppPool><ACT> Удалена информация о пользователе. IP-адрес: 10.7.68.8. Сессия: bkmtvkihb402w4ywfdjisix2
2017-08-01 20:14:16 <RUSTP-WEBWS-20><DefaultAppPool><EXC> Ошибка при выполнении действий при выходе пользователя в плагине «Дэшборды»:
System.NullReferenceException: Object reference not set to an instance of an object.
at Scada.Web.Plugins.PlgDashboardSpec.OnUserLogout(UserData userData)
at Scada.Web.UserData.RaiseOnUserLogout()
2017-08-01 20:14:16 <RUSTP-WEBWS-20><DefaultAppPool><ACT> Выход из системы: user. IP-адрес: 10.7.67.13
2017-08-01 20:14:16 <RUSTP-WEBWS-20><DefaultAppPool><ACT> Удалена информация о пользователе. IP-адрес: 10.7.67.13. Сессия: 2iklk0l5prn3rc0hjhcyf0td
2017-08-01 20:14:16 <RUSTP-WEBWS-20><DefaultAppPool><EXC> Ошибка при выполнении действий при выходе пользователя в плагине «Дэшборды»:
System.NullReferenceException: Object reference not set to an instance of an object.
at Scada.Web.Plugins.PlgDashboardSpec.OnUserLogout(UserData userData)
at Scada.Web.UserData.RaiseOnUserLogout()
2017-08-01 20:14:16 <RUSTP-WEBWS-20><DefaultAppPool><ACT> Выход из системы: user. IP-адрес: 10.7.68.61
2017-08-01 20:14:16 <RUSTP-WEBWS-20><DefaultAppPool><ACT> Удалена информация о пользователе. IP-адрес: 10.7.68.61. Сессия: ceuzzkpodusnnuu5hhta5yjb
2017-08-01 20:14:16 <RUSTP-WEBWS-20><DefaultAppPool><ACT> Завершение работы приложения
———————————————————————————
———————————————————————————
2017-08-01 20:14:16 <RUSTP-WEBWS-20><DefaultAppPool><ACT> Инициализация общих данных веб-приложения
2017-08-01 20:14:16 <RUSTP-WEBWS-20><DefaultAppPool><ACT> Установка соединения со SCADA-Сервером «10.7.70.27»
2017-08-01 20:14:16 <RUSTP-WEBWS-20><DefaultAppPool><ACT> Обновление таблиц базы конфигурации
2017-08-01 20:14:17 <RUSTP-WEBWS-20><DefaultAppPool><ACT> Заполнение свойств входных каналов
2017-08-01 20:14:17 <RUSTP-WEBWS-20><DefaultAppPool><ACT> Заполнение свойств каналов управления
2017-08-01 20:14:17 <RUSTP-WEBWS-20><DefaultAppPool><ACT> Заполнение свойств статусов входных каналов
2017-08-01 20:14:17 <RUSTP-WEBWS-20><DefaultAppPool><ACT> Добавлена информация о пользователе. IP-адрес: 10.7.67.13. Сессия: 2iklk0l5prn3rc0hjhcyf0td
2017-08-01 20:14:17 <RUSTP-WEBWS-20><DefaultAppPool><ACT> Добавлена информация о пользователе. IP-адрес: 10.7.68.61. Сессия: ceuzzkpodusnnuu5hhta5yjb
2017-08-01 20:14:17 <RUSTP-WEBWS-20><DefaultAppPool><EXC> Ошибка при получении расширенных текущих данных по фильтру, где каналы= , ид. представления=3050:
Scada.ScadaException: Пользователь не вошёл в систему.
at Scada.Web.UserMonitor.CheckLoggedOn(UserRights& userRights, Boolean throwOnFail)
at Scada.Web.ClientApiSvc.GetCurCnlDataExt(String cnlNums, String viewIDs, Int32 viewID)
2017-08-01 20:14:17 <RUSTP-WEBWS-20><DefaultAppPool><EXC> Ошибка при получении расширенных текущих данных по фильтру, где каналы= , ид. представления=3030:
Scada.ScadaException: Пользователь не вошёл в систему.
at Scada.Web.UserMonitor.CheckLoggedOn(UserRights& userRights, Boolean throwOnFail)
at Scada.Web.ClientApiSvc.GetCurCnlDataExt(String cnlNums, String viewIDs, Int32 viewID)
2017-08-01 20:14:18 <RUSTP-WEBWS-20><DefaultAppPool><EXC> Ошибка при получении расширенных текущих данных по фильтру, где каналы= , ид. представления=3050:
Scada.ScadaException: Пользователь не вошёл в систему.
at Scada.Web.UserMonitor.CheckLoggedOn(UserRights& userRights, Boolean throwOnFail)
at Scada.Web.ClientApiSvc.GetCurCnlDataExt(String cnlNums, String viewIDs, Int32 viewID)
2017-08-01 20:14:18 <RUSTP-WEBWS-20><DefaultAppPool><EXC> Ошибка при получении расширенных текущих данных по фильтру, где каналы= , ид. представления=3030:
Scada.ScadaException: Пользователь не вошёл в систему.
at Scada.Web.UserMonitor.CheckLoggedOn(UserRights& userRights, Boolean throwOnFail)
at Scada.Web.ClientApiSvc.GetCurCnlDataExt(String cnlNums, String viewIDs, Int32 viewID)
2017-08-01 20:14:20 <RUSTP-WEBWS-20><DefaultAppPool><EXC> Ошибка при получении расширенных текущих данных по фильтру, где каналы= , ид. представления=3050:
Scada.ScadaException: Пользователь не вошёл в систему.
at Scada.Web.UserMonitor.CheckLoggedOn(UserRights& userRights, Boolean throwOnFail)
at Scada.Web.ClientApiSvc.GetCurCnlDataExt(String cnlNums, String viewIDs, Int32 viewID)
2017-08-01 20:14:20 <RUSTP-WEBWS-20><DefaultAppPool><EXC> Ошибка при получении расширенных текущих данных по фильтру, где каналы= , ид. представления=3030:
Scada.ScadaException: Пользователь не вошёл в систему.
at Scada.Web.UserMonitor.CheckLoggedOn(UserRights& userRights, Boolean throwOnFail)
at Scada.Web.ClientApiSvc.GetCurCnlDataExt(String cnlNums, String viewIDs, Int32 viewID)
2017-08-01 20:14:21 <RUSTP-WEBWS-20><DefaultAppPool><EXC> Ошибка при получении расширенных текущих данных по фильтру, где каналы= , ид. представления=3050:
Scada.ScadaException: Пользователь не вошёл в систему.
at Scada.Web.UserMonitor.CheckLoggedOn(UserRights& userRights, Boolean throwOnFail)
at Scada.Web.ClientApiSvc.GetCurCnlDataExt(String cnlNums, String viewIDs, Int32 viewID)
2017-08-01 20:14:21 <RUSTP-WEBWS-20><DefaultAppPool><EXC> Ошибка при получении расширенных текущих данных по фильтру, где каналы= , ид. представления=3030:
Scada.ScadaException: Пользователь не вошёл в систему.
at Scada.Web.UserMonitor.CheckLoggedOn(UserRights& userRights, Boolean throwOnFail)
at Scada.Web.ClientApiSvc.GetCurCnlDataExt(String cnlNums, String viewIDs, Int32 viewID)
2017-08-01 20:14:21 <RUSTP-WEBWS-20><DefaultAppPool><ACT> Вход в систему без пароля: user (Elopak_user). IP-адрес: 10.7.67.13
2017-08-01 20:14:21 <RUSTP-WEBWS-20><DefaultAppPool><ACT> Обновлена информация о пользователе. IP-адрес: 10.7.67.13. Сессия: 2iklk0l5prn3rc0hjhcyf0td
2017-08-01 20:14:22 <RUSTP-WEBWS-20><DefaultAppPool><EXC> Ошибка при получении часовых данных по фильтру, где каналы= , ид. представления=3050:
Scada.ScadaException: Пользователь не вошёл в систему.
at Scada.Web.UserMonitor.CheckLoggedOn(UserRights& userRights, Boolean throwOnFail)
at Scada.Web.ClientApiSvc.GetHourCnlData(Int32 year, Int32 month, Int32 day, Int32 startHour, Int32 endHour, String cnlNums, String viewIDs, Int32 viewID, Boolean existing, String dataAge)
2017-08-01 20:14:23 <RUSTP-WEBWS-20><DefaultAppPool><EXC> Ошибка при получении расширенных текущих данных по фильтру, где каналы= , ид. представления=3050:
Scada.ScadaException: Пользователь не вошёл в систему.
at Scada.Web.UserMonitor.CheckLoggedOn(UserRights& userRights, Boolean throwOnFail)
at Scada.Web.ClientApiSvc.GetCurCnlDataExt(String cnlNums, String viewIDs, Int32 viewID)
2017-08-01 20:14:24 <RUSTP-WEBWS-20><DefaultAppPool><EXC> Ошибка при получении расширенных текущих данных по фильтру, где каналы= , ид. представления=3050:
Scada.ScadaException: Пользователь не вошёл в систему.
at Scada.Web.UserMonitor.CheckLoggedOn(UserRights& userRights, Boolean throwOnFail)
at Scada.Web.ClientApiSvc.GetCurCnlDataExt(String cnlNums, String viewIDs, Int32 viewID)
2017-08-01 20:14:24 <RUSTP-WEBWS-20><DefaultAppPool><ACT> Вход в систему без пароля: user (Elopak_user). IP-адрес: 10.7.68.61
2017-08-01 20:14:24 <RUSTP-WEBWS-20><DefaultAppPool><ACT> Обновлена информация о пользователе. IP-адрес: 10.7.68.61. Сессия: ceuzzkpodusnnuu5hhta5yjbВ консоли IIS в Default_App_pool Recycling regular time interval стояло 1740 минут. Как раз около суток. Попробовал выполнить recycling принудительно — вылетело на главную страницу, WEB станция не разлогинилась.
Установил интервал в 0. Посмотрим.
OlegУчастникКак можно импортировать хотя бы названия этих каналов в базу Администратора? Я так понимаю у файла базы проприетарный формат
OlegУчастникПолучается самый «простой вариант» это создание 25 вх. каналов телеизмерения.
Получаем 25*35=1600 бит. Плюс нужно создать 1600 вх. каналов дорасчетных — каждый канал для своей ошибки. В каждый из 25 каналов вставить формулу, которая будет устанавливать значение 0 или 1 для 1600 каналов в соответствии с диапазоном:
1 вх. канал телеизмерение <—> 1..32 вх. канал дорасчетный
………………………………………………….
25 вх. канал телеизмерение <—> 1568..1600 вх. канал дорасчетныйЕсли создавать 1600 вх. каналов телеизмерения типа bool заметно тормозит коммуникатор — обновление данных происходит не раз в секунду, а раз в три или пять секунд. Возможно большая нагрузка на OPC сервер. Если переменных около 200 — все нормально.
Нет, создавать 1600 картинок — это вех мазохизма 🙂
По кругу тоже не вариант — хочется списком и фиксация появления/сброса ошибки в событиях.Да, у меня есть текстовый файл со списком ошибок. В файле 1600 строк.
Если несколько ошибок по выводить нужно конечно все ошибки.
Сократить до 8 символов не получится, точнее получится шифр) Тога проще выдавать номер ошибки и сверяться с табличкой, что означает этот номер.
Сопоставление бита ошибки строке в файле сделать можно, но вот как вывести в веб — это опрос конечно.OlegУчастникСкада работает на виртуальной Windows 7 Pro в локальной сети.
Почистил лог — попробую выловить момент ошибки и проверить записи.OlegУчастникЗдравствуйте. Вопрос по этой же теме.
Есть контроллер, в котором ошибки работы агрегата записываются в блок данных размером 200 байт. Количество типов ошибок 200х8=1600. Есть список этих ошибок в текстовом виде типа:
«ошибка 100.0″=»Ошибка автомата»
«ошибка 100.1″=»Ошибка предохранителя»Есть какой либо более простой способ выводить ошибки на веб страницу, чем создание 1600 входных каналов + создание 1600 строк в таблице Размерности с описанием ошибки для каждого канала?
У меня был вариант создания 50 входных каналов для считывания 50 переменных типа DWORD что с разрядностью контроллера составит 50 двойных слов х 4 байта х 8 бит = 1600 бит. Далее каждый канал раскладывать по битам и брать те каналы, значение которых равно 1, т.е. ошибка активна. Далее, зная номер канал с активной ошибкой мы можем с помощью формулы взять описание ошибки из референсного текстового файла на сервере, например «ошибка 100.0″=»Ошибка автомата».
Но как это описание вывести в табличное представление или на схему?- Этот ответ был изменен 6 лет, 8 месяцев назад от Oleg.
OlegУчастникПонятно, спасибо. Достаточно ли для использования нового модуля управления обновить до версии 5.0.2.0 только Сервер?
OlegУчастникЕсли я правильно понял, то с предыдущей версией сервера нельзя изпользовать новую версию модуля?
OlegУчастникМихаил, спасибо, но у меня нет исходного кода.
Библиотеку выложили тут: http://forum.rapidscada.ru/?topic=ip-%D0%B4%D0%BE%D1%81%D1%82%D0%B8%D0%B6%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D1%8C-%D1%80%D0%B0%D0%B7%D0%BB%D0%B8%D1%87%D0%BD%D1%8B%D1%85-%D1%83%D1%81%D1%82%D1%80%D0%BE%D0%B9%D1%81%D1%82%D0%B2/#post-6054OlegУчастникМихаил,
Да, для KpPing.OlegУчастникЗаметил особенность: если на линии связи несколько КП и все активны — частота опроса соответствует установленной (1 секунда). Если одно из КП не доступно — частота опроса увеличивается (опрос каждые 3 секунды). Если два устройства не доступны — опрос происходит раз в шесть секунд.
OlegУчастникВ контекстном меню файла «KpPing.dll» выбрал опцию разблокировать файл скачанный из интернета (не дословно). Все работает. Спасибо.
-
АвторСообщения