Стартовая страница › Форумы › Вопросы без категории › Подвисает scada
- В этой теме 7 ответов, 2 участника, последнее обновление 9 лет назад сделано
Mikhail.
-
АвторСообщения
-
15.02.2016 в 17:13 #1527
Evgen
УчастникЗдравствуйте!
Такая проблемка. время от времени зависает скада. в частности вычисление формул. после перезагрузки scada server все начинает работать. перегружать приходится через 40-150 минут.
такое наблюдается как на основном сервере так и на виртуальном ПО на котором тестируется перед вводом в работу.
что может быть и как побороть?15.02.2016 в 18:03 #1530Mikhail
МодераторДобрый день!
1. Загружен ли CPU при зависании?
2. Удалось ли понять, в какой момент проблема начала проявляться и что нужно вернуть, чтобы исчезла? Или проблема наблюдается на базе, которая устанавливается по умолчанию?16.02.2016 в 09:34 #1533Evgen
УчастникЗагрузка 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;
}в администраторе каналы Дорасчетный ТИ
как Вы поняли это все для решения одной задачи.
Может я где то ошибся?
может я где-то ошибку допустил?16.02.2016 в 13:45 #1536Mikhail
МодераторФормулы выглядят обычными. Нужно восстановить картину происходящего:
1. Каким образом проявляется зависание?
2. Если убрать использование этих формул в таблицах входных каналов и каналов управления, то зависание не возникает?
3. Возникнет ли зависание, если отключить SCADA-Коммуникатор?16.02.2016 в 15:51 #1538Evgen
Участникя наверно не правильно выразился!
Зависает только вычисление этой формулы!!! через 20 — 60 минут они просто перестают вычисляться!!!
А все остальные процессы в порядке, идет передача данных с опц-сервера. идет визуализация. данные в скаде соотв. данным в плк.
идет вычисление и по другим формулам!
и как такое может быть я понять не могу!17.02.2016 в 12:44 #1541Mikhail
МодераторСейчас отвечу отдельным письмом по эл. почте.
08.03.2016 в 22:22 #1619Evgen
УчастникЗдравствуйте!
Я понаблюдал за зависанием. Зависают только отдельные формулы, только в начале каждого часа. Данные со SCADA-коммуникатора отображаются нормально,без подвисаний. Вычисление простых формул происходит нормально.
Вы давали совет тестировать в Microsoft Visual Studio. В Studio все работает замечательно. В одной из веток форума я давал ссылку на готовую работу программы.
В чем может быть причина? Почему вначале каждого часа зависает вычисление данной формулы?09.03.2016 в 16:01 #1628Mikhail
МодераторПри тестировании из консольного приложения некоторые особенности работы могли не выявиться.
Добавьте в базу конфигурации формулу 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 работает некорректно, то просьба составить короткий пример из нескольких строк кода, который демонстрирует возможную проблему. Тогда ошибка будет исправлена.
-
АвторСообщения
- Вы должны авторизироваться для ответа в этой теме.