При работе с джином зависает Citect

Обсуждение SCADA-систем: Citect SCADA, Vijeo Citect, CitectSCADA, CitectFacilities, PowerLogic SCADA, PowerSCADA, MX4SCADA, Desigo Insight.
romasimeiz
Сообщений в теме: 5
Сообщения: 32
Зарегистрирован: 14 май 2015, 09:48

При работе с джином зависает Citect

#1

Сообщение romasimeiz » 24 июл 2015, 12:06

Добрый день!
Подскажите пожалуйста, что делать. Я создал 8 устройств ввода вывода. 7 работают по протоколу MODNET20 и обращаются к реальному контроллеру, а одно локальное, использует OFOPS.
Сделал пару джинов к которым привязал суперджины. На клик джина вызывается суперджин командой WinNewAt(). Затем в открывшемся окне можно смотерть и менять значения переменных. Какое то время всё работало нормально. Но почти сразу появилась проблема : при запуске суперджина сайтек начинает виснуть, пожирать память, и становится невозможным изменить значения переменных кнопками...
Я думал это из - за того, что некоторые переменные в суперджине я беру напрямую (т.е. не используя ?? и метаданные). Исправил, но не помогает.
Подскажите, что я неправильно делаю ? Как исправить!
Заранее благодарю!!!



Аватара пользователя
alex
Администратор
Сообщений в теме: 3
Сообщения: 1756
Зарегистрирован: 05 апр 2010, 21:58
Откуда: Москва
Благодарил (а): 47 раз
Поблагодарили: 104 раза
Контактная информация:

Re: При работе с джином зависает Citect

#2

Сообщение alex » 24 июл 2015, 12:32

Т.е пока суперджин не открыт, все работает нормально? Суперджин удается закрыть? И как система дальше себя ведет?
p.s. Вообще-то напрямую обращаться к тегам из джинов и суперджинов это "архитектурно не идеологично" в рамках Vijeo Citect :)



romasimeiz
Сообщений в теме: 5
Сообщения: 32
Зарегистрирован: 14 май 2015, 09:48

Re: При работе с джином зависает Citect

#3

Сообщение romasimeiz » 24 июл 2015, 14:18

Проблему почти решил. Я запустил в TaskNew ещё один бесконечный цикл. Т.е. получилось, что одна и та же переменная "крутилась" в двух бесконечных циклах.
но не понятно почему стремительно растёт потребление памяти ? за пару минут может достигнуть больше 1,2 ГБ



Аватара пользователя
alex
Администратор
Сообщений в теме: 3
Сообщения: 1756
Зарегистрирован: 05 апр 2010, 21:58
Откуда: Москва
Благодарил (а): 47 раз
Поблагодарили: 104 раза
Контактная информация:

Re: При работе с джином зависает Citect

#4

Сообщение alex » 24 июл 2015, 14:40

Интересный эффект. Можете показать код задач?



romasimeiz
Сообщений в теме: 5
Сообщения: 32
Зарегистрирован: 14 май 2015, 09:48

Re: При работе с джином зависает Citect

#5

Сообщение romasimeiz » 24 июл 2015, 14:49

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


FUNCTION reg()
TaskNew("startReg","",2);
TaskNew("TimerReg","",2);
//TaskNew("Perepad","",2);
END

FUNCTION startReg()
SO_V1 = 0;
SC_V1 = 1;
curPos = 0;
TReg = 10;
A7_MOXA1241_AO3 = 0;
WHILE (1)
DO
d = 4095/TReg;
t = d*TReg;
IF KB_V1 = 1 THEN
IF curPos >= t-1 THEN
SO_V1 = 1;
A7_MOXA1241_AO3 = (100 * curPos) / t;
ELSE curPos = curPos + d;
SC_V1 = 0 ;
A7_MOXA1241_AO3 = (100 * curPos) / t;
Sleep(1);
END
ELSE IF KM_V1 = 1 THEN
IF curPos <= 0 THEN
SC_V1 = 1;
A7_MOXA1241_AO3 = (100 * curPos) / t;
ELSE
SO_V1 = 0;
curPos=curPos-d;
A7_MOXA1241_AO3 = (100 * curPos) / t;
Sleep(1);
END
END
END
A7_MOXA1241_AO2 = 100 * A7_MOXA1241_AO3 / 20;
END
END


FUNCTION reg()
TaskNew("startReg","",2);
TaskNew("TimerReg","",2);
END

A7_MOXA1241_AO3 и ему подобные - это теги которые коннектятся к контроллеру а SO_V1 = 0;
SC_V1 = 1;
curPos = 0;
TReg = 10; глобальные переменные



romasimeiz
Сообщений в теме: 5
Сообщения: 32
Зарегистрирован: 14 май 2015, 09:48

Re: При работе с джином зависает Citect

#6

Сообщение romasimeiz » 24 июл 2015, 14:51

FUNCTION TimerReg()
WHILE(1)
DO
IF KB_V1 = 1 OR KM_V1 = 1 THEN
//TimerV = 0;
Sleep(1);
TimerV = TimerV+1;
ELSE IF KB_V1 = 0 OR KM_V1 = 0 THEN
TimerV = 0;
END
END
END
END


забыл ещё одну функцию.



Аватара пользователя
alex
Администратор
Сообщений в теме: 3
Сообщения: 1756
Зарегистрирован: 05 апр 2010, 21:58
Откуда: Москва
Благодарил (а): 47 раз
Поблагодарили: 104 раза
Контактная информация:

Re: При работе с джином зависает Citect

#7

Сообщение alex » 27 июл 2015, 11:39

Несколько комментариев по коду....
1. Хорошо бы вынести слипы в конец цикла, т.к. если условие, например, KB_V1 <> 1, цикл будет "молотить" занимая процессор почем зря, снижая отзывчивость системы;
2. Хорошо бы сделать условие выхода из цикла, это взывание к хорошей практике написание кода;
3. А в вообщем, проблемы с кодом, которая бы вызывала утечку памяти и задержки, я не вижу, единственное что, возможно попробовать запускать задачи с режимом 16.



romasimeiz
Сообщений в теме: 5
Сообщения: 32
Зарегистрирован: 14 май 2015, 09:48

Re: При работе с джином зависает Citect

#8

Сообщение romasimeiz » 29 июл 2015, 10:16

Спасибо большое , за дельный совет!
Действительно, дело всё было в отсутствии в некоторых местах Sleep(). Из-за этого моментально съедались ресурсы компьютера и Сайтек зависал.
Благодарю за помощь!




Если эта тема может быть полезна другим, поделитесь ссылкой:

Вернуться в «Citect SCADA, Vijeo Citect, CitectSCADA, CitectFacilities, PowerLogic SCADA, PowerSCADA, MX4SCADA, Desigo Insight»