Ошибка при обработке новых текущих данных

Стартовая страница Форумы Ошибки в работе Ошибки Сервера Ошибка при обработке новых текущих данных

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

    Здравствуйте!

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

    Ниже добавил лог сервера. В чём может быть проблема?

    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 остановлена

    #17290
    Аватарvg
    Участник

    P.S.

    Считываю данные с эмулятора. Но с ним проблем никогда не возникало. Если передать конфигурацию во время работы эмулятора, то веб-интерфейс сразу «виснет». Если же сделать это при выключенном эмуляторе, а затем включить снова, то такой вариант работает 2 минуты и также падает в обморок.

    #17291
    Аватарvg
    Участник

    Проблема была в некорректно написанных свойствах класса.

    Изначально:

    public bool CheckFirstCycleMode1
                {
                    get
                    {
                        return CheckFirstCycleMode1;
                    }
                    set
                    {
                        CheckFirstCycleMode1 = true;
                    }
                }

    Исправлено:

    private bool checkFirstCycleMode1;
    public bool CheckFirstCycleMode1
                {
                    get
                    {
                        return checkFirstCycleMode1;
                    }
                    set
                    {
                        checkFirstCycleMode1 = true;
                    }
                }
    #17292
    Аватарvg
    Участник

    А ещё лучше написать так:

    public bool CheckFirstCycleMode1 { get; set; } = true;

    #17293
    Аватарvg
    Участник

    Последний вариант, кстати, почему то не работает.

    Ошибка:
    Недопустимый токен «=» в объявлении класса, структуры или интерфейса

    Тогда остаётся предыдущий вариант 🙂

    #17294
    Аватарmanjey73
    Участник

    я бы вам советовал использовать не public bool а public double
    и преобразовывать внутри формулы.

    Это позволяет формулу втыкать внутрь другой формулы, а не только в формулу канала, так как Scada все ваши действия все равно приведет к double, но поймает ошибку, если вы свой bool воткнете внутрь другой формулы.

    #17295
    Аватарvg
    Участник

    Да-да, разумеется, спасибо, у меня «свойство bool» существует внутри класса и выполняет функцию глобальной переменной во время циклической отработки каналов, значение для которой я как раз и задаю в формуле. А из формул разумеется возвращаю double.

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