Просмотр полной версии : Зависает СПК
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. Стоить добавить, что в симуляторе на компьютере все отрабатывает. Компиляция ошибок не находит.
Панель не прошивал так же как и модуля.
Прошу совета. Спасибо!
По программе, что тут приложена ничего не скажу. Но у меня недавно тоже зависала панель. Я заливал прогу из codesys делал загрузочное приложение и жал старт. Когда прога уходила в исключение, то в codesys она показывала в какой строчке остановилась.
Это был мной написанный ФБ тон с паузой. Когда я от него отказался, то зависания пропали.
Vadimko1988
27.10.2016, 08:19
Понял, в субботу попробую пошагово пройтись что ему не нравится. Может вариант с перепрошивкой поможет?
Может вариант с перепрошивкой поможет?
достаточно будет научится правильно программировать и галку поставить на сторожевой таймер
Vadimko1988
27.10.2016, 09:16
Про сторожевой таймер я был не в курсе вообще. Да и на самом деле первый проект на спк. Поэтому и задаю может глупые вопросы.
А как понять "правильно программировать"? что не так в коде?
как минимум нет ни одного 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
...все переменные обнуляются.
Вопрос в другом: почему этот код без проблем работает на симуляторе, а на железе ведет себя не пойми как?
правда что ли? а как же тогда строчка IF M1=FALSE THEN wash_rising_water:=FALSE; END_IF которая прекратит работу таймера и Ваше условие Time_wash_rise_water.Q ни когда не выполнится, если это TON
На вопрос почему в симуляторе так а в реальности этак, можно сказать видя весь проект, в симуляции физические входа всегда фальш, пока Вы сами с ними не произведете каких то действий, а в реальности они сами меняют свои состояния, этого Вы не учитываете, потому как используете только половинные условия
Vadimko1988
27.10.2016, 09:55
Справедливо, согласен. Переделаю. Спасибо!
кстати буквально не стоит воспринимать фразу половинные условия, потому что два буля wash_rising_water и Auto это максимально четыре состояния
Vadimko1988
29.10.2016, 17:06
Спасибо за совет. Попал я сегодня на объект. Последовав вашим советам я поубирал половинные условия и все, где программа могла тормозиться. Весь код отрабатывает нормально. Но при нажатии кнопки перехода на самую загруженную визуализацию (блок- схему работы оборудования) виснет и перестаёт отвечать на касания. Но в тот же момент когда визуализация на спк виснет, программа мониторится через компьютер. И на компьютере я спокойно могу управлять программой. И она работает. Правда с сильными тормозами. Может у кого какие соображения есть?
Vadimko1988
04.11.2016, 22:55
Проблема решена. Особая благодарность Ильнуру из техподдержки. Визуализация подвисала спк из-за большого количества рисованых элементов. Заменил их одной картинкой png. Панели стало полегче и все заработало.
И если не секрет какое количество элементов можно?
Сколько было до того, как вставили пнг?
Vadimko1988
09.11.2016, 14:51
Да конечно не секрет. Было 145 элементов на одном экране визуализации.
Ой, то есть моя визуализация с 267 элементами вполне возможно зависает по той же причине? Надо бы, чтобы этот вопрос осветили где-нибудь, я 2 месяца искал, что виснет, так и не нашел.
Vadimko1988
15.11.2016, 15:01
Вы наверное все рисовали стандартными инструментами кдс?
Да, всё линиями и кружочками (секторами). Первая прога на СПК, не знал еще что такое фрейм, некоторые элементы были просто сгруппированы. Большая часть просто была невидима (единственный элемент управления визуализацией, который я использовал). Сейчас то подрос и такое себе не позволяю, на экране всего несколько фреймов, а внутри фреймов может быть и нарисовано стандартными средствами, но не так много.
Добрый день, скажите пожалуйста, а если есть такие библиотеки, как архивация? Может из-за неё зависнуть, или нет, такая же проблема случилась, только фреймов у меня нету.
Евгений Кислов
23.11.2016, 13:38
Добрый день, скажите пожалуйста, а если есть такие библиотеки, как архивация? Может из-за неё зависнуть, или нет, такая же проблема случилась, только фреймов у меня нету.
Может - в частности, при некорректном размонтировании накопителя.
А фрейм, это какой-то элемент, или картинки?
Евгений Кислов
23.11.2016, 14:20
А фрейм, это какой-то элемент, или картинки?
Фрейм - это графический примитив CODESYS, используемый для открытия в пределах одного экрана визуализации других экранов.
А что такое некорректное размонтирование накопителя? И почему из-за этого виснет визуализация?
Евгений Кислов
25.11.2016, 15:24
А что такое некорректное размонтирование накопителя? И почему из-за этого виснет визуализация?
При возникновении в приложении исключения оно принудительно останавливается - в том числе, и визуальная часть. Это не связано с тем случаем, когда зависает только визуализация, а приложение продолжает выполняться.
Powered by vBulletin® Version 4.2.3 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot