PDA

Просмотр полной версии : CoDeSys v.2 тормозит в CFC



Коля О
07.04.2012, 23:07
Здравствуйте. Подскажите пожалуйста почему может тормозить Кодесис 2.
После первой минуты работы в CFC для вставки блока, входа, выхода, соединения линии связи, перемещения блока нужно нажать выполнение операции и ждать секунд 10 пока она начнет выполнятся. Например чтобы вставить вход, нажимаю вкладку вход, навожу курсор на место куда надо его установить, жду 5-10сек, появляется вход, нужно его переместить - делаю движение курсором и через 5 сек. вход медленно начинает ползти в сторону назначение.Скорость программирования получается офигенная.
Думал проблема в Кодезисе - удалил, почистил реестр скачал с вашего сайта последнюю версию установил - то же самое. Думал проблема с Вин.7, но на работе ХР и тоже самое.
ПЛК-160 А.М. таргет 2.10 код проекта 10 байт CoDeSys версия 2.3.9.30

mikele
08.04.2012, 00:14
Может дело в компьютере?
Тормоза наблюдаются только при редактирование кода в CFC?

kolyan
08.04.2012, 10:13
Смотрите свой компьютер.
Однозначно, проблема в нём.

Gans
08.04.2012, 11:41
Запустите диспетчер задач и посмотрите кто "съел" ресурсы Вашего компа )
Должно выглядеть примерно так как во вложении.

Коля О
08.04.2012, 15:02
Тормозит одинаково на 3-х разных компах с разными виндами, на маленьких проектах не тормозит, из "больших" проектов только один над которым работаю - 10 байт, работаю только на CFC и FBD, тормоз заключается только в установке и передвижения блочков - что есть только в CFC. Тормозить начало по мере добавления в проект функциональных блоков - сейчас 17 шт.

ASo
08.04.2012, 16:05
Вот прямо сейчас открыл одну из своих программ. В одной из PRG-CFC 18 блоков - торможения нет.

Николаев Андрей
08.04.2012, 16:38
Дело однозначно в ПК.
Попробуйте переустановить программу с админскими правами. И так же с админскими правами запускать CoDeSys...

Коля О
10.04.2012, 12:45
Переустановил Кодезис на разных компах по нескольку раз. В диспетчере задач комп грузит Кодезис!!! При запуске проекта все работает нормально, когда пытаюсь двигать блочки в CFC - на старом компе система грузится Кодезисом на 60-70%, а при запуске эмуляции-полный висяк, на новом компе 20-30% в работе и 60-70% при емуляции (комп 2 ядра, 4 гига оперативы). Может все дело в проекте (но вроде компилируется нормально).

ASo
10.04.2012, 13:23
Может, все дело в не понятном дистрибутиве КДС?

Коля О
10.04.2012, 16:05
Кодезис устанавливал с диска в комплектк с ПЛК_160
Модераторы, можно отправить вам свою программу в личку чтоб проверить что не так?

Коля О
12.04.2012, 12:31
Сконвертировал свою программу в FBD и - о чудо!! Все работает, ничего не виснет, программа просто летает. Значит тормоз был все таки в CFC.

Николаев Андрей
13.04.2012, 10:51
Тормоз был думаю не в CFC, а в малом опыте работы с CFC.
Где то порядок блоков не выстроился согласно выполнению, где то вход не видно что не подключился, или выход, и пр...
Сам CFC отлично работает. Рекомендую.

Коля О
14.04.2012, 10:08
Вчера залил программу в контроллер, в онлайне все работает нормально, виснет только в эмуляции. Попробую ради эксперимента по очереди выкидывать функциональные блоки, может тормозит какой то из них.

Валенок
14.04.2012, 11:13
в онлайне все работает нормально, виснет только в эмуляции.
1.Какие используем *.lib ? > не все для офлайна
2.Эмуляция ругается при цикле большем чем 200..300ms, а в онлайне собачка по умолчанию - 1сек. > намутили с циклами
3.Цикл в офлайне - 60..70ms, в онлайне - 1..3 > .....

ASo
14.04.2012, 11:50
Сконвертировал свою программу в FBD и - о чудо!! Все работает, ничего не виснет, программа просто летает. Значит тормоз был все таки в CFC.Ээээ... У вас редактор тормозит или выполнение программы???
А то вот недавно расширил один модуль СFС более чем до 40 блоков - полет нормальный. И там и там.

Коля О
14.04.2012, 17:54
Тормозит редактор и выполнение программы в эмуляции, цикл программы меньше чем 1000 сделать не могу, для ПЛК-160 это минимальный

Коля О
14.04.2012, 19:14
Уважаемые форумчане, может кто может посмотреть что не так. CFC для меня самый понятный, а в этом проекте и очень удобный чтоб следить за сигналами. Не могу закончить проект и проверить в симуляции.

Валенок
15.04.2012, 10:50
может кто может посмотреть что не так.
Посмотрел. !!%№;@ 8(
Все мои замечания выше - снимаю. CFC - действительно тормозит (в PLC_PRG связей - СОТНИ ) Даже на глаз - куча множественных присвоений/переприсвоений. Огромное кол-во операций с REAL. Они не нужны в каждом цикле. Ai здесь быстрые - но все равно не меньше 5мс.

Тут разбираться с самой логикой надо.Просто приложил пример одного из блоков. Что тут делается с t ? И такая фигня - везде. Раз любите CFC - изучите функции и EN/ENO
Причем случайно ткнул на порядок вычислений - он изменился. Это так задумано ? Это тоже имеет значение.
А сам PLC_PRG лучше делать размера примерно такого как этот блок - 1,2 страницы.
А у него описание VAR заканчивается на 230-й строке !!


Для начала -
Прицепите статистику или таймер. Какое реальное время цикла ?

swerder
16.04.2012, 09:44
не удивительно, что plc_prg так жутко тормозит, размер программы слишком большой, все нагромождено в кучу.

Коля О
16.04.2012, 11:31
Хочу внести некоторые разъяснения! Эта куча нагромождений - старая советская машина на куче плат логики и обработки входных и выходных сигналов (в программе - функциональные блоки). Перевожу с плат на ПЛК.
По ходу написания выбрасываю ненужные сигналы (статус плат, рабочее-нерабочее состояние плат входа выхода) поэтому много переприсвоений сигнал выбросил - присвоил другое имя чтоб ушел на выход. Все это и пытаюсь упорядочить и убрать в процессе программирования и эмуляции.
Теперь насчет замечаний уважаемого Валенка. Я в этом деле новичок и некоторые замечания не всегда понимаю.
1. Что значит "Огромное кол-во операций с REAL. Они не нужны в каждом цикле. Ai здесь быстрые - но все равно не меньше 5мс.". Мне нужно видеть пульсации тока длительностью 30мс, по ним машина видит идет ли процесс оплавления или остановлен. Это можно как-то упростить?
2."Причем случайно ткнул на порядок вычислений - он изменился. Это так задумано ? Это тоже имеет значение." В эти опции я вообще не лазил и не знаю как правильно устанавливать порядок вычислений. Если можно подскажите как правильно.
3."Просто приложил пример одного из блоков. Что тут делается с t ? И такая фигня - везде. Раз любите CFC - изучите функции и EN/ENO" Сделал так потому-что изучил EN/ENO. После снятия EN выход с блока все равно остается а мне нужно чтоб пропадал. Смысл работы машины заключается в следующем:
Есть 11 тактов работы машины. На каждом такте подключается свой задатчик пути с энкодера, свой задатчик времени, свой задатчик скорости на частотник - такая логика заложена в старой машине конструкторами и я просто перенес ее на программу.
Вообще спасибо конструкторам 80-х. Схема разводки плат внутри машины - готовое CFC.

Коля О
16.04.2012, 11:39
Извините прервало интернет. Насколько я понял CFC чувствителен к объему программы и операциям с REAL так как в FBD не тормозит. Реальное время цикла снять не могу монтируют силу на шкаф с контроллером. А вообще есть ли книги по Кодезису кроме стандартной?

swerder
16.04.2012, 14:00
Хочу внести некоторые разъяснения! Эта куча нагромождений - старая советская машина на куче плат логики и обработки входных и выходных сигналов (в программе - функциональные блоки). Перевожу с плат на ПЛК.
По ходу написания выбрасываю ненужные сигналы (статус плат, рабочее-нерабочее состояние плат входа выхода) поэтому много переприсвоений сигнал выбросил - присвоил другое имя чтоб ушел на выход. Все это и пытаюсь упорядочить и убрать в процессе программирования и эмуляции.

я и говорю, что у вас, пока вы не упростили программу, она слишком большая


3."Просто приложил пример одного из блоков. Что тут делается с t ? И такая фигня - везде. Раз любите CFC - изучите функции и EN/ENO" Сделал так потому-что изучил EN/ENO. После снятия EN выход с блока все равно остается а мне нужно чтоб пропадал.

чтобы пропадал, сигнал со входа EN блока ведите дополнительной линией на вход блока AND, на второй вход которого вешайте выход вашего работающего блока


А вообще есть ли книги по Кодезису кроме стандартной?
есть книга Петров И.В. "Программируемые контроллеры. Стандартные языки и инструменты / под ред. проф. В.П.Дьяконова. - М. Солон-пресс, 2003"

nikpdg
16.04.2012, 15:08
Прошу Гуру совет. Осваиваю CFC . Как с точки зрения профессионалов будет правильней: 1)создать один PLC_PRG и в нем несколько макросов или 2) создать несколько POU . Задача необходима для простой логики -управление насосами, но насосов много и здесь же аварии ,управление ЧП, индикация температур, давлений, уровней. Раньше пользовался одним PLC_PRG и макросами-устраивало.Но проект увеличили; вот я и задумался.Может быть лучше по другому. И какие преимущества это даст ?

ASo
16.04.2012, 15:16
1. Языки интероперабельны - выбирайте любой.
2. Если только управление насосами - можете основную программу в PLC-PRG.
3. Я бы сделал отдельный FB для управления отдельным насосом - пуск, работа, авария, ремонт,.... Он одинаков для всех насосов группы. Собственно, его можно взять из oscat.

nikpdg
16.04.2012, 15:27
Большое спасибо за быстрый ответ и дельный
совет. Буду пробовать.

swerder
16.04.2012, 16:44
Коля О, если я правильно понял этот пост (http://forum-ru.3s-software.com/viewtopic.php?f=1&t=1770#p3233), то мне кажется крайность 2, лежащая в основе CFC, и приводит к вашим тормозам

Коля О
16.04.2012, 19:25
Спасибо swerder за разъяснения!!! Понял что много промежуточных переменных - буду оптимизировать и убирать. С входами EN/ENO вовремя остановили, первоначально все эти сложности в моей программе были для разрешения выхода из блоков в которых выход не BOOL, а например, сложение или умножение REAL, а потом затупил и начал это применять к BOOL выходам. Почитал CoDeSys форум, некоторые ответы нашел там.
Спасибо еще раз всем кто участвовал в обсуждении моего вопроса!

Коля О
16.04.2012, 19:28
Еще один вопрос вдогонку. В чем разница между функциональным блоком и макросом?

Николаев Андрей
17.04.2012, 19:35
Я думаю под макросом понимался готовый программный модуль (функциональный блок, функция, или программа), который можно использовать многократно. То есть Вы как бы делаете шаблон, и его тиражируете.
В разделе ПЛК\примеры программ и полезности есть пример создания и вызова из основной программы таких программных модулей разного типа.