PDA

Просмотр полной версии : У меня у одного watchdog не работает?



Raikkonen
11.10.2014, 19:11
Всем привет!
Речь пойдет о СПК-207

В общем виснет программа, написанная давным давно и не мной, виснет раз в два дня....
Система, которой управляет контроллер крайне инертна, поэтому решил воспользоваться вочдогом, а он не работает!!!! Панель зависла, ждал несколько минут, долго ждать не мог, в этот раз зависла во время работы, что меня начинает пугать!
Или может я не правильно им пользуюсь?

Добавил следящий таймер в кодесисе на 2 из 6 задач по 10 000 мс.

Надо на все 6 задач было устанавливать?
Или там не время в мс, а % (в инструкции сказано, могут быть проценты цикла)?

А аппаратного вочдога нет чтоли, кстати??

Вольд
12.10.2014, 09:31
С этой проблемой многие мучаются. Пошерсти форум и сам убедишься.

Александр Приходько
12.10.2014, 16:36
Добрый день.
1. Вам стоит обновить прошивку до версии 3,942.
2. Обновить CODESYS до версии SP4 Patch4 или можно сразу до SP5.
3. Установить Target версии 3.5.4.20 V22
4. Открыть в новой версии CODESYS Ваш проект.
5. При открытии среда программирования предложит обновить компоненты. Нажмите кнопку использовать самые новые.
6. Далее слева в дереве выбираете Ваш СПК, на нем нажимаете обновить устройство и в появившемся окне выбираете СПК на новом таргете
7. Далее надо немного поэкспериментировать с временем цикла и сторожевым таймером.


Суть сего мероприятия такая:
1. В новой прошивке в значительной мере оптимизировано ПО.
2. За счет использования обновленных программных компонентов удалось ускорить визуализацию и уменьшить нагрузку на процессор.
3. Это в свою очередь дает более ожидаемые параметры по циклам

Далее рекомендую поставить следующие настройки:
1. Цикл PLC_PRG - циклический, каждые 20мс. Сторожевой таймер 100мс, латентность 5.
2. Цикл VISU_PRG - циклический, каждые 150мс. Сторожевой таймер 1000мс, латентность 5.

После того как загрузите проект в СПК, рекомендую в качестве теста "пятерней" поводить по всему экрану а наобум понажимать во все кнопки и настройки (незадумываясь). Если СПК в течении 10-15 секунд при таком "стрессовом" испытании не зависнет, то все настроили нормально.

Если зависнет, то:
1. Или некорректно пишите программу и она у Вас перегружна.
2. Или на визуализации огромное кол-во элемнтов и она просто не успевает их все обработать.

В таких ситуациях надо или оптимизировать программу с помощью оператора CASE или увеличивать латентность и время работы сторожевого таймера.

Raikkonen
12.10.2014, 17:01
Уж больно не хочется копаться в чужой крупной программе, особенно в целях оптимизации.
Программный то вочдог- это муляж, я так понимаю?? И при этом аппаратного вочдога нет?

П.с. Да прошивка и таргет не самые новые, в том числе потому что при обновлении возникают ошибки, решать которые в коммандировке некогда, да и провода специального нет с собой.

Александр Приходько
12.10.2014, 18:05
Уж больно не хочется копаться в чужой крупной программе, особенно в целях оптимизации.
Программный то вочдог- это муляж, я так понимаю?? И при этом аппаратного вочдога нет?

П.с. Да прошивка и таргет не самые новые, в том числе потому что при обновлении возникают ошибки, решать которые в коммандировке некогда, да и провода специального нет с собой.
тогда отключите его и забудьте про него.

Raikkonen
12.10.2014, 21:24
Тоесть аппаратного вочдога нет, есть программный муляж, я все правильно понял?

П.с. В целом тема не о том, как написать прогу, чтоб не висла, а именно о автоматической перезагрузке при зависании.

Raikkonen
23.10.2014, 09:10
В общем взялся я все это переделывать...
Столкнулся со следующей проблемой:
14904
и вот таких вот групп, выделенных красными скобками набирается великое множество....
в соседних столбиках, типа объект и позиция - ничего

Это все после установки СП5, нового таргета, вроде бы все бибиотеки обновил кнопочкой "даунлод недостоющее"

Что это за ошибка такая?

Мурат Ахриев
24.10.2014, 12:47
При первом открытии проекта в новой версии Codesys появляется диалог обновления версий, использовали ли вы автоматическое обновление при помощи данного диалога?

Raikkonen
27.10.2014, 08:37
Пойду снова открою старый проект новой версией и скажу точно

Karrimdra
10.04.2015, 10:33
Извиняюсь, а можно конкретно где этот Вотчдог живет?
СПК 207 все прошивки новые, найти не могу.

Евгений Кислов
10.04.2015, 11:05
В настройках задачи - "Сторожевой таймер".

Karrimdra
10.04.2015, 13:09
Спасибо, уже нашел, просто там задач море и не у всех есть сторожевой таймер.

Более развернуто:
Device->PLC Logic->Application->Конфигурация задач->Main task (дабл клик левой кнопкой)

просто при ответе там в настройках, сложно найти. Нифига не интуитивный интерфейс.

Karrimdra
17.04.2015, 10:55
Хотелось бы уточнить по поводу данного сторожевого таймера.

он вроде как ничего не перегружает просто создает исключение. После звонка в ОВЕН 15 минут и вроде есть решение, перегружает систему если в основной программе цикл не крутиться более 10 секунд;

По скольку с ходу ответ найти не мог а на эту тему выкидывало всегда, выкладываю ответ.

17764

2 раза по менеджеру задач левой кнопкой, добавляем POU которое будет перезагружать, делаем его в виде проги, задаем высокий приоритет выполнения. Привязываем прогу в конфигураторе задач.
Добавлена библиотека SysExec

GoodLuck
17.04.2015, 11:42
Идея, конечно, хорошая. Правда, не во всех случаях применима. Допустим, идет запуск оборудования в течение 15 мин. И тут бац, перезагрузка, и задвижка не повернулась в нужном направлении. И что, запускать весь цикл заново?

У меня цикл основной программы 20мс, а сторожевой таймер стоит на 2сек. Я не пойму, неужели за это время, СПК не успевает совершить обмен 50 переменными типа WORD по одному COM-порту и 25 - по другому. Обработать 100 операторов IF, 16 блоков BLINK, 16 триггеров, ну и по мелочи несколько операторов присваивания, AND, OR?

Karrimdra
18.04.2015, 10:07
Идея, конечно, хорошая. Правда, не во всех случаях применима. Допустим, идет запуск оборудования в течение 15 мин. И тут бац, перезагрузка, ..
Да и перезагружается эта штуковина где то минуту. Ну а если не перезагрузка, то что? Висим дальше?

Мало того она не спасет от глюков ОС и не во всех вариантах от глюков железа. Однако хоть какие то исключительные ситуации становятся менее исключительными.

У меня основной цикл программы тоже 10-20 мс, 10 секунд я там от балды написал, напишите что вам нравиться, он все равно перезагружется дольше, к тому же в моей задаче пара минут погоды не сделает, а если у вас критичная задача меряеться в милисикундах и все летит в тар тарары при малейшем сбое, тогда вам все таки не СПК 207 нужно брать.

capzap
18.04.2015, 10:12
линукс таеая штука, что если уметь правильно убивать процессы и уметь пользоваться cron ,то можно обойтись и без перегрузки ОС

Karrimdra
18.04.2015, 10:20
линукс таеая штука, что если уметь правильно убивать процессы и уметь пользоваться cron ,то можно обойтись и без перегрузки ОС
Вполне возможно, я вообще считаю что вочдогом аппаратным или програмным, и как его лучше организовать чтобы увеличить отказоустойчивость "промышленных" систем, должны озадачиваться производители этих систем, чтобы не надо было фантазировать с такими вот затычками.

Что касаеться меня я 3 дны убил пытаясь разгадать тайну вотчдога на СПК 207, и переписываясь с Техподдержкой, а мне в понедельник объект сдавать. Так что на написание этого ушло 15 минут, оно уже успело 2 раза отработать при пусконаладке.
Если я уже полезу в линукс, то предпочту делать это не из под кодесиса (скорее всего), а если уж у меня дойдут руки до линукса на СПК и написания прог на С, то и для основного проекта Коде Сис я наврядли выберу.

CapZap может у вас есть красивое готовое решение перегружающее только проект и вы им готовы поделиться?

GoodLuck
18.04.2015, 11:01
... и все летит в тар тарары при малейшем сбое, тогда вам все таки не СПК 207 нужно брать.

Я использую СПК-110.

Karrimdra
18.04.2015, 11:32
Я использую СПК-110.

110 по моему более законченный, но принцип похожий, яб лучше ПЛК160 взял почемуто + панель. Почему то мне кажется слишком много слабых мест получается с ПЛК для чувствительных ко времени выполнения и сбоям задач, и непноятки с перегрузками и зависаниями, и входы-выходы по модулям модбас с непонятным (не прогнозируемым) временем срабатывания (и тоже зависаниями). У каждого пусть меня ктото поправит.

capzap
18.04.2015, 11:44
готового решения у меня нет, тем более если необходимо после перегруза начать с того же места тех.процесса,тут не только в линуксе,а и в КДС надо серьезно поработать
а само решение мне видится следущее,циклично выполнять функцию екзека, записывая текущую дату-время в файл,а в линуксе запустить скрипт также циклично читающий этот файл и сравнивающий время, если появилась разница,значит КДСрантайм завис и наступила пора перегрузится, убить процесс и запустить его поновой

Karrimdra
18.04.2015, 22:21
Ну а почему именно время, вон у меня сверху циклично меняющийся индекс кейса основного кода, как только перестал меняться значит код встал.

Лично в моем текущем проекте мне не надо с текущего состояния запускать, код стартуя с любого места подхватиться, там одни пид ригуляторы задвижки, ПЧВ и насосы.
Столкнулся с ситуацией сегодня опять же пока налаживаю, начало выскакивать исключение КоДеСиса и программа стопорится, так вот мой пример выше в этом случае встает вмесет с основным кодом.

Вот ищу как обработать исключения КоДеСиса, ещёб найти документацию по этим исключениям. Исключение то выскакивает а откуда оно взялось не понятно.

Вот в С# хорошо

try {
...
}
catch (exeption) {
... или пустить побоку
}

capzap
19.04.2015, 08:54
время удобно тем, то в скрипте будет сравниваться результат одной и той же команды. А для того чтоб проверить изменилось ли значение записываемое прогой, скрипту потребуется записывать текущее значение чтоб при следующем выполнении скрипта было с чем сравнивать, вот зачем эти лишние "телодвижения"?
По поводу исключений, надо смотреть индивидуально, многие функции имеют аргументом указатель на код ошибки

Karrimdra
19.04.2015, 11:01
Какая функция в кодесис 3.5 вызываеться при событии исключение, из какой библиотеки? её надо объявить взаранее?