PDA

Просмотр полной версии : Точки останова работают не во всей программе



Атаман
26.03.2018, 17:52
Добрый день.

Вот такая проблема: точки останова работают только в первой части программы (PLC_PRG). Всего по Codesys в POU около 1700 строк, после 1300 не работают точки останова, также пошаговое выполнение не доходит до второй части - перескакивает на первую. Всё компилируется и работает в ПЛК-100. Переставлял кейсы, части программы из начала в конец, плясал с бубном - ничего не помогает, - точки останова только на первые около 1300 строк (число не точное, а меняется при перестановке блоков местами). В эмуляции точки работают во всей программе, а на двух ПЛК 100 нет.

Трофимов Артем
26.03.2018, 18:43
какое соединение с ПЛК? COM, USB , Eth?

Атаман
26.03.2018, 18:55
Соединение USB. Пробовал по Еthernet через wi fi - то же самое

Трофимов Артем
26.03.2018, 18:58
минимальное время цикла программы какое? в модуле статистики сколько свободного процессорного времени? ощущение, что кодесис не успевает записать/считать отладочный код для программы, впоследствии выражающееся в проскакивании точек. наблюдал такую картину при usb подключении, по eth ситуация легче намного.

p.s. при работе в ST предпочитаю шаг кейса упаковывать в действие, тогда основная программа сворачивается в 20-30 строк, а в шаге кейса хоть 800 строк. возможно, не утверждаю, проблема в редакторе при большом объёме кода на одной странице.

Атаман
26.03.2018, 19:07
минимальное время цикла = 0. процессорное время не помню, но должно быть много. Не останавливается даже на «холостом ходу» - перебираются кейсы без выполнения и по модбас ждет нажатия кнопки пуск. Вот на вторую часть кейсов не доходит.

Трофимов Артем
26.03.2018, 19:26
1) может быть не срабатывает условие перехода в нужный кейс?
2) минимальное время цикла 0 - задействовать всё процессорное время на программу - не лучшая идея. поставьте 10 мс - достаточная частота выполнения для большинства проектов , и Вы дадите "воздуха" процессору на выполнение системных задач, одна из которых связь с кодесис и отладкой. можете прислать в личку проект, посмотрю завтра

Атаман
26.03.2018, 19:49
1) речь о входе даже не идет. Ставлю точку на номер кейса и не доходит до него... То есть на номере 300: останавливается, а на следующем нет.
2) завтра попробую предложенные вами варианты.


И еще... Если ставлю точку на кейс, например 900, то останавливает где то в случайном месте в первой части программы, а не там где мне нужно. А до кейса 300 все работает

Разве процессорное время =0 это все время под программу? А не столько времени под программу и системные процессы сколько нужно без ограничения?

Трофимов Артем
27.03.2018, 10:48
желательно оставлять 30% свободного процессорного времени для системы.

Атаман
27.03.2018, 16:32
желательно оставлять 30% свободного процессорного времени для системы.

Пробовал сегодня и процессорное время менять и ethernet и разные компы и разные ПЛК 100 - ничего не изменилось. Время цикла 6-7. Артем, программу отправил вам в личку.

Атаман
28.03.2018, 06:46
Тригонометрия в каждом цикле небось ...

6-7 это значение в модуле статистики в 100 мкс.

Трофимов Артем
28.03.2018, 10:59
спокойно ставятся точки через USB подключения и останавливается программа где надо . время цикла установил 10 мс.
проверяйте условия перехода.
36258

Трофимов Артем
28.03.2018, 11:14
Обоснуйте эту чушь

пользовательская программа кодесис - не единственная задача, также имеются обработчики мастеров в конфигурации ПЛК ( которые работают и без запуска программы пользователя) , PPP драйвера, обработчик соединения с кодесис. если всё процессорное время передать в цикл программы кодесис - появятся нестабильности работы интерфейсов в конфигурации ПЛК, если Вы сами не обрабатываете обмен в коде.

Атаман
28.03.2018, 11:34
спокойно ставятся точки через USB подключения и останавливается программа где надо . время цикла установил 10 мс.
проверяйте условия перехода.


То что у вас на скриншоте и у меня работает. Попробуйте, как я вам написал на 1363 строку точку останова поставить.

Атаман
28.03.2018, 11:36
Просто родной мастер с десятком запросов и кодом из ";" и тоже время статистики.
Не нажали F5 ?

Это пример программы, чтобы показать не работающую точку останова.

Трофимов Артем
28.03.2018, 12:15
да, повторился Ваш случай. на общем листинге не отрабатывает, закинул продувку и промывку в разные действия, вызвал в конце кода программы, установил точку останова в действии - отрабатывает корректно.

Атаман
28.03.2018, 15:25
да, повторился Ваш случай. на общем листинге не отрабатывает, закинул продувку и промывку в разные действия, вызвал в конце кода программы, установил точку останова в действии - отрабатывает корректно.

Что значит закинул в разные действия?

Трофимов Артем
28.03.2018, 16:06
отправил Ваш проект в ЛС

Атаман
28.03.2018, 16:38
О как! Так работает, спасибо.