Стартовая страница › Форумы › Ошибки в работе › Ошибки Сервера › Ошибка при обработке новых текущих данных
- В этой теме 6 ответов, 2 участника, последнее обновление 3 года, 6 месяцев назад сделано vg.
-
АвторСообщения
-
28.09.2020 в 03:55 #17289vgУчастник
Здравствуйте!
При добавлении новых формул и дорасчётных каналов, использующих эти формулы, в проект столкнулся с ошибкой.
Формулы представляют из себя класс со свойствами, а также методы, которые работают с этими свойствами через экземпляры этого класса.Ниже добавил лог сервера. В чём может быть проблема?
2020-09-28 03:40:24 Служба ScadaServerService 5.1.4.0 запущена
2020-09-28 03:40:24 Загружен модуль из файла C:\SCADA\ScadaServer\Mod\ModAutoControl.dll
2020-09-28 03:40:24 Проверка существования директорий данных выполнена успешно
2020-09-28 03:40:24 Проверка существования файлов базы конфигурации выполнена успешно
2020-09-28 03:40:24 Входные каналы считаны из базы конфигурации. Количество активных каналов: 788
2020-09-28 03:40:24 Каналы управления считаны из базы конфигурации
2020-09-28 03:40:24 Пользователи считаны из базы конфигурации
2020-09-28 03:40:24 Формулы считаны из базы конфигурации
2020-09-28 03:40:25 Исходный код формул калькулятора откомпилирован
2020-09-28 03:40:25 Прослушиватель соединений запущен
2020-09-28 03:40:25 Запуск работы сервера
2020-09-28 03:40:25 Текущий срез загружен
2020-09-28 03:40:29 Соединение с клиентом 127.0.0.1
2020-09-28 03:40:29 Пользователь ScadaComm успешно аутентифицирован
2020-09-28 03:43:46 Ошибка при обработке новых текущих данных:
System.Threading.ThreadAbortException: Поток находился в процессе прерывания.
в System.Threading.Monitor.Enter(Object obj)
в Scada.Server.Engine.MainLogic.ProcCurData(Srez receivedSrez)
2020-09-28 03:43:46 Ошибка при приёме и обработке данных от клиента 127.0.0.1: Поток находился в процессе прерывания.
2020-09-28 03:43:46 Ошибка при взаимодействии с клиентом 127.0.0.1: Поток находился в процессе прерывания.
2020-09-28 03:43:46 Прослушиватель соединений остановлен
2020-09-28 03:43:56 Ошибка при вычислении дорасчётных каналов: Поток находился в процессе прерывания.
2020-09-28 03:43:56 Работа сервера прервана
2020-09-28 03:43:56 Служба ScadaServerService остановлена28.09.2020 в 04:09 #17290vgУчастникP.S.
Считываю данные с эмулятора. Но с ним проблем никогда не возникало. Если передать конфигурацию во время работы эмулятора, то веб-интерфейс сразу «виснет». Если же сделать это при выключенном эмуляторе, а затем включить снова, то такой вариант работает 2 минуты и также падает в обморок.
28.09.2020 в 12:00 #17291vgУчастникПроблема была в некорректно написанных свойствах класса.
Изначально:
public bool CheckFirstCycleMode1 { get { return CheckFirstCycleMode1; } set { CheckFirstCycleMode1 = true; } }
Исправлено:
private bool checkFirstCycleMode1; public bool CheckFirstCycleMode1 { get { return checkFirstCycleMode1; } set { checkFirstCycleMode1 = true; } }
28.09.2020 в 12:17 #17292vgУчастникА ещё лучше написать так:
public bool CheckFirstCycleMode1 { get; set; } = true;
28.09.2020 в 12:26 #17293vgУчастникПоследний вариант, кстати, почему то не работает.
Ошибка:
Недопустимый токен «=» в объявлении класса, структуры или интерфейсаТогда остаётся предыдущий вариант 🙂
28.09.2020 в 13:11 #17294manjey73Участникя бы вам советовал использовать не public bool а public double
и преобразовывать внутри формулы.Это позволяет формулу втыкать внутрь другой формулы, а не только в формулу канала, так как Scada все ваши действия все равно приведет к double, но поймает ошибку, если вы свой bool воткнете внутрь другой формулы.
28.09.2020 в 13:25 #17295vgУчастникДа-да, разумеется, спасибо, у меня «свойство bool» существует внутри класса и выполняет функцию глобальной переменной во время циклической отработки каналов, значение для которой я как раз и задаю в формуле. А из формул разумеется возвращаю double.
-
АвторСообщения
- Вы должны авторизироваться для ответа в этой теме.