PDA

Просмотр полной версии : Зависает СПК



Vadimko1988
26.10.2016, 22:13
Доброго времени суток!
Есть СПК110. И вторая проблема кроме подключения модулей - это зависание панели.
Программа управляет насосами и клапанами (дискретный выходы).
Когда в ручном режиме включаешь - все ок.
При работе в автоматическом режиме, панель зависает и перестает реагировать на нажатия.
Помогает только перезагрузка питанием. Что может быть? Сталкиваюсь первый раз.

Код автоматического режима ниже:


Time_wash_rise_water(IN:=wash_rising_water, PT:=Time_wash_rise_water.PT);
IF wash_rising_water=TRUE AND Auto=true
THEN
V100:=Func_Levels_Protoch(Start:= wash_rising_water, VERH:= LSH1);
V101:=TRUE;
V111:=TRUE;
M1:=TRUE;
M1:=M1_Check(M1_f:= M1, M1_feedback_f:= M1_feedback_IN);
IF M1=FALSE THEN wash_rising_water:=FALSE; END_IF

IF Time_wash_rise_water.Q=TRUE
THEN V101:=FALSE;
M1:=FALSE;
V111:=FALSE;
wash_rising_water:=FALSE;
V100:=false;
END_IF
END_IF

p.s. Стоить добавить, что в симуляторе на компьютере все отрабатывает. Компиляция ошибок не находит.
Панель не прошивал так же как и модуля.
Прошу совета. Спасибо!

slonegd
27.10.2016, 08:14
По программе, что тут приложена ничего не скажу. Но у меня недавно тоже зависала панель. Я заливал прогу из codesys делал загрузочное приложение и жал старт. Когда прога уходила в исключение, то в codesys она показывала в какой строчке остановилась.
Это был мной написанный ФБ тон с паузой. Когда я от него отказался, то зависания пропали.

Vadimko1988
27.10.2016, 08:19
Понял, в субботу попробую пошагово пройтись что ему не нравится. Может вариант с перепрошивкой поможет?

capzap
27.10.2016, 08:57
Может вариант с перепрошивкой поможет?
достаточно будет научится правильно программировать и галку поставить на сторожевой таймер

Vadimko1988
27.10.2016, 09:16
Про сторожевой таймер я был не в курсе вообще. Да и на самом деле первый проект на спк. Поэтому и задаю может глупые вопросы.
А как понять "правильно программировать"? что не так в коде?

capzap
27.10.2016, 09:22
как минимум нет ни одного ELSE, если условие не выполняется, то такие переменные как М1,Vxxx зависнут в одном состоянии. Плохо когда переменные друг другом управляют

Vadimko1988
27.10.2016, 09:25
Они не зависнут, а будут ждать, когда отработает таймер. И после этого:
IF Time_wash_rise_water.Q=TRUE
THEN V101:=FALSE;
M1:=FALSE;
V111:=FALSE;
wash_rising_water:=FALSE;
V100:=false;
END_IF

...все переменные обнуляются.

Вопрос в другом: почему этот код без проблем работает на симуляторе, а на железе ведет себя не пойми как?

capzap
27.10.2016, 09:36
правда что ли? а как же тогда строчка IF M1=FALSE THEN wash_rising_water:=FALSE; END_IF которая прекратит работу таймера и Ваше условие Time_wash_rise_water.Q ни когда не выполнится, если это TON

На вопрос почему в симуляторе так а в реальности этак, можно сказать видя весь проект, в симуляции физические входа всегда фальш, пока Вы сами с ними не произведете каких то действий, а в реальности они сами меняют свои состояния, этого Вы не учитываете, потому как используете только половинные условия

Vadimko1988
27.10.2016, 09:55
Справедливо, согласен. Переделаю. Спасибо!

capzap
27.10.2016, 10:09
кстати буквально не стоит воспринимать фразу половинные условия, потому что два буля wash_rising_water и Auto это максимально четыре состояния

Vadimko1988
29.10.2016, 17:06
Спасибо за совет. Попал я сегодня на объект. Последовав вашим советам я поубирал половинные условия и все, где программа могла тормозиться. Весь код отрабатывает нормально. Но при нажатии кнопки перехода на самую загруженную визуализацию (блок- схему работы оборудования) виснет и перестаёт отвечать на касания. Но в тот же момент когда визуализация на спк виснет, программа мониторится через компьютер. И на компьютере я спокойно могу управлять программой. И она работает. Правда с сильными тормозами. Может у кого какие соображения есть?

Vadimko1988
04.11.2016, 22:55
Проблема решена. Особая благодарность Ильнуру из техподдержки. Визуализация подвисала спк из-за большого количества рисованых элементов. Заменил их одной картинкой png. Панели стало полегче и все заработало.

slonegd
07.11.2016, 10:41
И если не секрет какое количество элементов можно?
Сколько было до того, как вставили пнг?

Vadimko1988
09.11.2016, 14:51
Да конечно не секрет. Было 145 элементов на одном экране визуализации.

slonegd
10.11.2016, 14:10
Ой, то есть моя визуализация с 267 элементами вполне возможно зависает по той же причине? Надо бы, чтобы этот вопрос осветили где-нибудь, я 2 месяца искал, что виснет, так и не нашел.

Vadimko1988
15.11.2016, 15:01
Вы наверное все рисовали стандартными инструментами кдс?

slonegd
16.11.2016, 16:51
Да, всё линиями и кружочками (секторами). Первая прога на СПК, не знал еще что такое фрейм, некоторые элементы были просто сгруппированы. Большая часть просто была невидима (единственный элемент управления визуализацией, который я использовал). Сейчас то подрос и такое себе не позволяю, на экране всего несколько фреймов, а внутри фреймов может быть и нарисовано стандартными средствами, но не так много.

Сема
23.11.2016, 13:30
Добрый день, скажите пожалуйста, а если есть такие библиотеки, как архивация? Может из-за неё зависнуть, или нет, такая же проблема случилась, только фреймов у меня нету.

Евгений Кислов
23.11.2016, 13:38
Добрый день, скажите пожалуйста, а если есть такие библиотеки, как архивация? Может из-за неё зависнуть, или нет, такая же проблема случилась, только фреймов у меня нету.

Может - в частности, при некорректном размонтировании накопителя.

Сема
23.11.2016, 13:41
А фрейм, это какой-то элемент, или картинки?

Евгений Кислов
23.11.2016, 14:20
А фрейм, это какой-то элемент, или картинки?

Фрейм - это графический примитив CODESYS, используемый для открытия в пределах одного экрана визуализации других экранов.

NKM
25.11.2016, 14:52
А что такое некорректное размонтирование накопителя? И почему из-за этого виснет визуализация?

Евгений Кислов
25.11.2016, 15:24
А что такое некорректное размонтирование накопителя? И почему из-за этого виснет визуализация?

При возникновении в приложении исключения оно принудительно останавливается - в том числе, и визуальная часть. Это не связано с тем случаем, когда зависает только визуализация, а приложение продолжает выполняться.