Если можно бъясните,а то программа больша и в один цикл не умещается и Watchdog выдает ошибку зацикливания??
Вид для печати
Если можно бъясните,а то программа больша и в один цикл не умещается и Watchdog выдает ошибку зацикливания??
Для работы с циклом ПЛК есть 2 переменные, которые можно менять. Максимальное время цикла и минимальное. Находятся в ресурсе "Конфигурация ПЛК" , вкладка параметры модуля самого контроллера.
Работает на прошивках 2.03 или 2.07
А на эмуляторе Вы никак на это не повлияете - возьмите ПК по мощнее, так как функцию ПЛК выполняет ПК. Ну и увеличьте все-таки максимальное время
Или может есть другой способ
То есть Вы эмуляцию не на таргете ПЛК делаете, а на None (при выборе типа контроллера)?
Тогда нигде, и это никак вообще не связанно с контроллером.
Мощность Вашего ПК - сугубо Ваш гордость;) Но если ПК не справляется с задачей (без попытки эмулировать какой то из контроллеров), значит что то ему не хватает.
Возможно стоит подумать о разбиении программы на поменьше и распределении их вызова.
Не надо for вообще применять!!! Цикл в контроллере уже есть всегда. Поэтому так прямо PLC_PRG:
…
IF надо цикл запустить ТО i:=0;
…
if i < 1000 then
делам что надо
i := i + 1;
end_if
Вместо for используем рабочий цикл самого ПЛК. Все будет красиво и удобно. По шагам можно отлаживаться, никакой сторож срабатывать не будет…
:confused: Это ж стандартная технология программирования на языках МЭК. В одной главной программе пишется подряд куча всяких штук, одна, за одной. Все они работают как бы параллельно. Посмотрите язык LD. Там в одной программе может быть ..000 цепей и все в одном цикле. Вы пытаетесь программировать ПЛК как компьютер. Отсюда встречное сопротивление программной среды.
В эмуляторе CoDeSys цикл соответствует тику таймера PC около 55 мс. Не вписаться в цикл тут просто не реально при всем желании. Это ж надо большую кучу вычислений с типами реал в одном месте навалить, все это в цикл завернуть на безумное число итераций… Даже если на ПЛК Овен (правильно) написать Большую программу управления Большим андронным коллаидром, то не будет она такую длительность цикла иметь….:cool:
Для понимания того, что говорит Игорь надо сделать простое действие.
Напишите оч. простую программу:
a:=a+1; (тип переменной любой кроме Bool:cool: )
И что называется почувствуйте разницу:cool: Так как в Си для такого ж эффекта пришлось писать for...
Будет:D У нас дедок там есть он еще в начале 50 на 1 из 3 тогда в союзе существующих кампов прогал рассчеты балестических траекторий ракет))
А на счет а := a + 1, ет я так понимаю последовательно создать несоклько PLC_PRG сделать??а в какой последовательности они вызываются?И как самому эту последовательность сделать??
проведите простой эксперимент. новый проект. единственое POU - PLC_PRG на ST. В PLC_PRG прописываете а := a + 1; . Больше ни чего! Подключаетесь и смотрите, что происходит с переменной "а".Цитата:
А на счет а := a + 1, ет я так понимаю последовательно создать несоклько PLC_PRG сделать??
с названием PLC_PRG - может бы толька одна POU. как управлять? вариантов много.
можно так http://www.owen.ru/forum/showpost.ph...96&postcount=8 тоесть через IF THEN ELSE и таймеры или счетчики.
можно так http://www.owen.ru/forum/showpost.ph...5&postcount=36
можно написать PLC_PRG на SFC и расписать отдельные шаги по ветвям.
и д.р.
вы лучше нам расскажите, что вы там вызываете 1000 и 1 раз... может быть коллективный разум ( овен-форум ) найдет более элегантное решение...
1000 раз я опредиляю радиус запаса устойчивости системы разомкнутой по главной обратной связи,и из нах беру лежащий наиболее близко к действительной оси
И после контроллера WinCon 8000 со средой программирования С# для меня это дико что из-за 1000 итераций возникаю такие проблемы(((
Anatol_rus,WinCon-8000 по сути не контроллер, а компьютер. отсюда и различия.
значит делайте так -
1 цикл перебор 100 значений
2 цикл перебор 100 значений
3 цикл перебор 100 значений
4 цикл перебор 100 значений
5 цикл перебор 100 значений
6 цикл перебор 100 значений
7 цикл перебор 100 значений
8 цикл перебор 100 значений
9 цикл перебор 100 значений
10цикл перебор 100 значений
11цикл выбор подходящего значения
А несколько PLC_PRG(с разнвми именами) можно вызывать через Task Configuration
Plc_prg - это и есть имя программного модуля (по умолчанию).