Просмотр полной версии : CoDeSys v.2 тормозит в CFC
Здравствуйте. Подскажите пожалуйста почему может тормозить Кодесис 2.
После первой минуты работы в CFC для вставки блока, входа, выхода, соединения линии связи, перемещения блока нужно нажать выполнение операции и ждать секунд 10 пока она начнет выполнятся. Например чтобы вставить вход, нажимаю вкладку вход, навожу курсор на место куда надо его установить, жду 5-10сек, появляется вход, нужно его переместить - делаю движение курсором и через 5 сек. вход медленно начинает ползти в сторону назначение.Скорость программирования получается офигенная.
Думал проблема в Кодезисе - удалил, почистил реестр скачал с вашего сайта последнюю версию установил - то же самое. Думал проблема с Вин.7, но на работе ХР и тоже самое.
ПЛК-160 А.М. таргет 2.10 код проекта 10 байт CoDeSys версия 2.3.9.30
Может дело в компьютере?
Тормоза наблюдаются только при редактирование кода в CFC?
Смотрите свой компьютер.
Однозначно, проблема в нём.
Запустите диспетчер задач и посмотрите кто "съел" ресурсы Вашего компа )
Должно выглядеть примерно так как во вложении.
Тормозит одинаково на 3-х разных компах с разными виндами, на маленьких проектах не тормозит, из "больших" проектов только один над которым работаю - 10 байт, работаю только на CFC и FBD, тормоз заключается только в установке и передвижения блочков - что есть только в CFC. Тормозить начало по мере добавления в проект функциональных блоков - сейчас 17 шт.
Вот прямо сейчас открыл одну из своих программ. В одной из PRG-CFC 18 блоков - торможения нет.
Николаев Андрей
08.04.2012, 16:38
Дело однозначно в ПК.
Попробуйте переустановить программу с админскими правами. И так же с админскими правами запускать CoDeSys...
Переустановил Кодезис на разных компах по нескольку раз. В диспетчере задач комп грузит Кодезис!!! При запуске проекта все работает нормально, когда пытаюсь двигать блочки в CFC - на старом компе система грузится Кодезисом на 60-70%, а при запуске эмуляции-полный висяк, на новом компе 20-30% в работе и 60-70% при емуляции (комп 2 ядра, 4 гига оперативы). Может все дело в проекте (но вроде компилируется нормально).
Может, все дело в не понятном дистрибутиве КДС?
Кодезис устанавливал с диска в комплектк с ПЛК_160
Модераторы, можно отправить вам свою программу в личку чтоб проверить что не так?
Сконвертировал свою программу в FBD и - о чудо!! Все работает, ничего не виснет, программа просто летает. Значит тормоз был все таки в CFC.
Николаев Андрей
13.04.2012, 10:51
Тормоз был думаю не в CFC, а в малом опыте работы с CFC.
Где то порядок блоков не выстроился согласно выполнению, где то вход не видно что не подключился, или выход, и пр...
Сам CFC отлично работает. Рекомендую.
Вчера залил программу в контроллер, в онлайне все работает нормально, виснет только в эмуляции. Попробую ради эксперимента по очереди выкидывать функциональные блоки, может тормозит какой то из них.
в онлайне все работает нормально, виснет только в эмуляции.
1.Какие используем *.lib ? > не все для офлайна
2.Эмуляция ругается при цикле большем чем 200..300ms, а в онлайне собачка по умолчанию - 1сек. > намутили с циклами
3.Цикл в офлайне - 60..70ms, в онлайне - 1..3 > .....
Сконвертировал свою программу в FBD и - о чудо!! Все работает, ничего не виснет, программа просто летает. Значит тормоз был все таки в CFC.Ээээ... У вас редактор тормозит или выполнение программы???
А то вот недавно расширил один модуль СFС более чем до 40 блоков - полет нормальный. И там и там.
Тормозит редактор и выполнение программы в эмуляции, цикл программы меньше чем 1000 сделать не могу, для ПЛК-160 это минимальный
Уважаемые форумчане, может кто может посмотреть что не так. CFC для меня самый понятный, а в этом проекте и очень удобный чтоб следить за сигналами. Не могу закончить проект и проверить в симуляции.
может кто может посмотреть что не так.
Посмотрел. !!%№;@ 8(
Все мои замечания выше - снимаю. CFC - действительно тормозит (в PLC_PRG связей - СОТНИ ) Даже на глаз - куча множественных присвоений/переприсвоений. Огромное кол-во операций с REAL. Они не нужны в каждом цикле. Ai здесь быстрые - но все равно не меньше 5мс.
Тут разбираться с самой логикой надо.Просто приложил пример одного из блоков. Что тут делается с t ? И такая фигня - везде. Раз любите CFC - изучите функции и EN/ENO
Причем случайно ткнул на порядок вычислений - он изменился. Это так задумано ? Это тоже имеет значение.
А сам PLC_PRG лучше делать размера примерно такого как этот блок - 1,2 страницы.
А у него описание VAR заканчивается на 230-й строке !!
Для начала -
Прицепите статистику или таймер. Какое реальное время цикла ?
не удивительно, что plc_prg так жутко тормозит, размер программы слишком большой, все нагромождено в кучу.
Хочу внести некоторые разъяснения! Эта куча нагромождений - старая советская машина на куче плат логики и обработки входных и выходных сигналов (в программе - функциональные блоки). Перевожу с плат на ПЛК.
По ходу написания выбрасываю ненужные сигналы (статус плат, рабочее-нерабочее состояние плат входа выхода) поэтому много переприсвоений сигнал выбросил - присвоил другое имя чтоб ушел на выход. Все это и пытаюсь упорядочить и убрать в процессе программирования и эмуляции.
Теперь насчет замечаний уважаемого Валенка. Я в этом деле новичок и некоторые замечания не всегда понимаю.
1. Что значит "Огромное кол-во операций с REAL. Они не нужны в каждом цикле. Ai здесь быстрые - но все равно не меньше 5мс.". Мне нужно видеть пульсации тока длительностью 30мс, по ним машина видит идет ли процесс оплавления или остановлен. Это можно как-то упростить?
2."Причем случайно ткнул на порядок вычислений - он изменился. Это так задумано ? Это тоже имеет значение." В эти опции я вообще не лазил и не знаю как правильно устанавливать порядок вычислений. Если можно подскажите как правильно.
3."Просто приложил пример одного из блоков. Что тут делается с t ? И такая фигня - везде. Раз любите CFC - изучите функции и EN/ENO" Сделал так потому-что изучил EN/ENO. После снятия EN выход с блока все равно остается а мне нужно чтоб пропадал. Смысл работы машины заключается в следующем:
Есть 11 тактов работы машины. На каждом такте подключается свой задатчик пути с энкодера, свой задатчик времени, свой задатчик скорости на частотник - такая логика заложена в старой машине конструкторами и я просто перенес ее на программу.
Вообще спасибо конструкторам 80-х. Схема разводки плат внутри машины - готовое CFC.
Извините прервало интернет. Насколько я понял CFC чувствителен к объему программы и операциям с REAL так как в FBD не тормозит. Реальное время цикла снять не могу монтируют силу на шкаф с контроллером. А вообще есть ли книги по Кодезису кроме стандартной?
Хочу внести некоторые разъяснения! Эта куча нагромождений - старая советская машина на куче плат логики и обработки входных и выходных сигналов (в программе - функциональные блоки). Перевожу с плат на ПЛК.
По ходу написания выбрасываю ненужные сигналы (статус плат, рабочее-нерабочее состояние плат входа выхода) поэтому много переприсвоений сигнал выбросил - присвоил другое имя чтоб ушел на выход. Все это и пытаюсь упорядочить и убрать в процессе программирования и эмуляции.
я и говорю, что у вас, пока вы не упростили программу, она слишком большая
3."Просто приложил пример одного из блоков. Что тут делается с t ? И такая фигня - везде. Раз любите CFC - изучите функции и EN/ENO" Сделал так потому-что изучил EN/ENO. После снятия EN выход с блока все равно остается а мне нужно чтоб пропадал.
чтобы пропадал, сигнал со входа EN блока ведите дополнительной линией на вход блока AND, на второй вход которого вешайте выход вашего работающего блока
А вообще есть ли книги по Кодезису кроме стандартной?
есть книга Петров И.В. "Программируемые контроллеры. Стандартные языки и инструменты / под ред. проф. В.П.Дьяконова. - М. Солон-пресс, 2003"
Прошу Гуру совет. Осваиваю CFC . Как с точки зрения профессионалов будет правильней: 1)создать один PLC_PRG и в нем несколько макросов или 2) создать несколько POU . Задача необходима для простой логики -управление насосами, но насосов много и здесь же аварии ,управление ЧП, индикация температур, давлений, уровней. Раньше пользовался одним PLC_PRG и макросами-устраивало.Но проект увеличили; вот я и задумался.Может быть лучше по другому. И какие преимущества это даст ?
1. Языки интероперабельны - выбирайте любой.
2. Если только управление насосами - можете основную программу в PLC-PRG.
3. Я бы сделал отдельный FB для управления отдельным насосом - пуск, работа, авария, ремонт,.... Он одинаков для всех насосов группы. Собственно, его можно взять из oscat.
Большое спасибо за быстрый ответ и дельный
совет. Буду пробовать.
Коля О, если я правильно понял этот пост (http://forum-ru.3s-software.com/viewtopic.php?f=1&t=1770#p3233), то мне кажется крайность 2, лежащая в основе CFC, и приводит к вашим тормозам
Спасибо swerder за разъяснения!!! Понял что много промежуточных переменных - буду оптимизировать и убирать. С входами EN/ENO вовремя остановили, первоначально все эти сложности в моей программе были для разрешения выхода из блоков в которых выход не BOOL, а например, сложение или умножение REAL, а потом затупил и начал это применять к BOOL выходам. Почитал CoDeSys форум, некоторые ответы нашел там.
Спасибо еще раз всем кто участвовал в обсуждении моего вопроса!
Еще один вопрос вдогонку. В чем разница между функциональным блоком и макросом?
Николаев Андрей
17.04.2012, 19:35
Я думаю под макросом понимался готовый программный модуль (функциональный блок, функция, или программа), который можно использовать многократно. То есть Вы как бы делаете шаблон, и его тиражируете.
В разделе ПЛК\примеры программ и полезности есть пример создания и вызова из основной программы таких программных модулей разного типа.
Powered by vBulletin® Version 4.2.3 Copyright © 2026 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot