Подвисает scada

  • В этой теме 7 ответов, 2 участника, последнее обновление 8 лет назад сделано Mikhail.
Просмотр 8 сообщений - с 1 по 8 (из 8 всего)
  • Автор
    Сообщения
  • #1527
    Evgen
    Участник

    Здравствуйте!
    Такая проблемка. время от времени зависает скада. в частности вычисление формул. после перезагрузки scada server все начинает работать. перегружать приходится через 40-150 минут.
    такое наблюдается как на основном сервере так и на виртуальном ПО на котором тестируется перед вводом в работу.
    что может быть и как побороть?

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

    Добрый день!
    1. Загружен ли CPU при зависании?
    2. Удалось ли понять, в какой момент проблема начала проявляться и что нужно вернуть, чтобы исчезла? Или проблема наблюдается на базе, которая устанавливается по умолчанию?

    #1533
    Evgen
    Участник

    Загрузка CPU не превышает 15%
    зависание наблюдается только для следующих формул:
    1 Словарь для учета времени работы поминутно
    public Dictionary<int, DateTime> MinuteBegDict = new Dictionary<int, DateTime>();

    2 функция которая возвращает true в начале каждой минуты
    public bool MinuteBegin()
    {
    int M = 0;

    if (M != DateTime.Now.Minute)
    {
    M = DateTime.Now.Minute;
    return true;
    }
    return false;
    }

    3
    public double VremyaRab(int CnlNumI, int CnlNumBut) //время работы привода с током CnlNumI и кнопкой CnlNumBut
    {
    bool m = MinuteBeg(); //начало новой минуты
    double V = Val(CnlNum); //текущее время работы
    if (m) //если начало новой минуты

    {
    if (Val(CnlNumI) > 1) //если ток привода больше единицы
    {
    V++;
    }
    }
    if (Val(CnlNumBut) == 1)
    {
    V = 0;
    }

    return V;
    }

    в администраторе каналы Дорасчетный ТИ
    как Вы поняли это все для решения одной задачи.
    Может я где то ошибся?
    может я где-то ошибку допустил?

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

    Формулы выглядят обычными. Нужно восстановить картину происходящего:
    1. Каким образом проявляется зависание?
    2. Если убрать использование этих формул в таблицах входных каналов и каналов управления, то зависание не возникает?
    3. Возникнет ли зависание, если отключить SCADA-Коммуникатор?

    #1538
    Evgen
    Участник

    я наверно не правильно выразился!
    Зависает только вычисление этой формулы!!! через 20 — 60 минут они просто перестают вычисляться!!!
    А все остальные процессы в порядке, идет передача данных с опц-сервера. идет визуализация. данные в скаде соотв. данным в плк.
    идет вычисление и по другим формулам!
    и как такое может быть я понять не могу!

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

    Сейчас отвечу отдельным письмом по эл. почте.

    #1619
    Evgen
    Участник

    Здравствуйте!
    Я понаблюдал за зависанием. Зависают только отдельные формулы, только в начале каждого часа. Данные со SCADA-коммуникатора отображаются нормально,без подвисаний. Вычисление простых формул происходит нормально.
    Вы давали совет тестировать в Microsoft Visual Studio. В Studio все работает замечательно. В одной из веток форума я давал ссылку на готовую работу программы.
    В чем может быть причина? Почему вначале каждого часа зависает вычисление данной формулы?

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

    При тестировании из консольного приложения некоторые особенности работы могли не выявиться.
    Добавьте в базу конфигурации формулу WriteToLog с исходным кодом

    public void WriteToLog(string s)
    {
      using (System.IO.StreamWriter writer = 
        new System.IO.StreamWriter(@"C:\SCADA\mylog.log", true, Encoding.UTF8))
      {
        writer.WriteLine(s);
      }
    }
    

    Теперь Вы можете выводить в файл информацию для отладки прямо из формул в процессе работы SCADA-Сервера. Например,

    public double MyFunc(double x)
    {
      WriteToLog(x.ToString());
      return x;
    }
    

    Возможности заниматься отладкой стороннего кода у меня нет, могу помочь с некоторыми приёмами работы и задать направление поиска.

    Если Вы обнаружите, что Rapid SCADA работает некорректно, то просьба составить короткий пример из нескольких строк кода, который демонстрирует возможную проблему. Тогда ошибка будет исправлена.

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