Просмотр полной версии : Точки останова работают не во всей программе
Добрый день.
Вот такая проблема: точки останова работают только в первой части программы (PLC_PRG). Всего по Codesys в POU около 1700 строк, после 1300 не работают точки останова, также пошаговое выполнение не доходит до второй части - перескакивает на первую. Всё компилируется и работает в ПЛК-100. Переставлял кейсы, части программы из начала в конец, плясал с бубном - ничего не помогает, - точки останова только на первые около 1300 строк (число не точное, а меняется при перестановке блоков местами). В эмуляции точки работают во всей программе, а на двух ПЛК 100 нет.
Трофимов Артем
26.03.2018, 18:43
какое соединение с ПЛК? COM, USB , Eth?
Соединение USB. Пробовал по Еthernet через wi fi - то же самое
Трофимов Артем
26.03.2018, 18:58
минимальное время цикла программы какое? в модуле статистики сколько свободного процессорного времени? ощущение, что кодесис не успевает записать/считать отладочный код для программы, впоследствии выражающееся в проскакивании точек. наблюдал такую картину при usb подключении, по eth ситуация легче намного.
p.s. при работе в ST предпочитаю шаг кейса упаковывать в действие, тогда основная программа сворачивается в 20-30 строк, а в шаге кейса хоть 800 строк. возможно, не утверждаю, проблема в редакторе при большом объёме кода на одной странице.
минимальное время цикла = 0. процессорное время не помню, но должно быть много. Не останавливается даже на «холостом ходу» - перебираются кейсы без выполнения и по модбас ждет нажатия кнопки пуск. Вот на вторую часть кейсов не доходит.
Трофимов Артем
26.03.2018, 19:26
1) может быть не срабатывает условие перехода в нужный кейс?
2) минимальное время цикла 0 - задействовать всё процессорное время на программу - не лучшая идея. поставьте 10 мс - достаточная частота выполнения для большинства проектов , и Вы дадите "воздуха" процессору на выполнение системных задач, одна из которых связь с кодесис и отладкой. можете прислать в личку проект, посмотрю завтра
1) речь о входе даже не идет. Ставлю точку на номер кейса и не доходит до него... То есть на номере 300: останавливается, а на следующем нет.
2) завтра попробую предложенные вами варианты.
И еще... Если ставлю точку на кейс, например 900, то останавливает где то в случайном месте в первой части программы, а не там где мне нужно. А до кейса 300 все работает
Разве процессорное время =0 это все время под программу? А не столько времени под программу и системные процессы сколько нужно без ограничения?
Трофимов Артем
27.03.2018, 10:48
желательно оставлять 30% свободного процессорного времени для системы.
желательно оставлять 30% свободного процессорного времени для системы.
Пробовал сегодня и процессорное время менять и ethernet и разные компы и разные ПЛК 100 - ничего не изменилось. Время цикла 6-7. Артем, программу отправил вам в личку.
Тригонометрия в каждом цикле небось ...
6-7 это значение в модуле статистики в 100 мкс.
Трофимов Артем
28.03.2018, 10:59
спокойно ставятся точки через USB подключения и останавливается программа где надо . время цикла установил 10 мс.
проверяйте условия перехода.
36258
Трофимов Артем
28.03.2018, 11:14
Обоснуйте эту чушь
пользовательская программа кодесис - не единственная задача, также имеются обработчики мастеров в конфигурации ПЛК ( которые работают и без запуска программы пользователя) , PPP драйвера, обработчик соединения с кодесис. если всё процессорное время передать в цикл программы кодесис - появятся нестабильности работы интерфейсов в конфигурации ПЛК, если Вы сами не обрабатываете обмен в коде.
спокойно ставятся точки через USB подключения и останавливается программа где надо . время цикла установил 10 мс.
проверяйте условия перехода.
То что у вас на скриншоте и у меня работает. Попробуйте, как я вам написал на 1363 строку точку останова поставить.
Просто родной мастер с десятком запросов и кодом из ";" и тоже время статистики.
Не нажали F5 ?
Это пример программы, чтобы показать не работающую точку останова.
Трофимов Артем
28.03.2018, 12:15
да, повторился Ваш случай. на общем листинге не отрабатывает, закинул продувку и промывку в разные действия, вызвал в конце кода программы, установил точку останова в действии - отрабатывает корректно.
да, повторился Ваш случай. на общем листинге не отрабатывает, закинул продувку и промывку в разные действия, вызвал в конце кода программы, установил точку останова в действии - отрабатывает корректно.
Что значит закинул в разные действия?
Трофимов Артем
28.03.2018, 16:06
отправил Ваш проект в ЛС
О как! Так работает, спасибо.
Powered by vBulletin® Version 4.2.3 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot