-
Пользователь
Вопросы по программированию в CoDeSys
уважаемые специалисты, пожалуйста заглядывайте переодически в эту темку =) спасибо =)
мой перввый вопрос (в этой теме):
как вернуться из цикла прораммы Sfc в основную программу (в PLC_PRG)?
а) как это сделать в любом месте программы, при выполнении какого то условия?
б) как это сделать после выполнения прораммы?
очень жду ответа. спасибо
Последний раз редактировалось MagicCat; 14.02.2010 в 15:11.
-
Пользователь
Второй мой вопрос. Столкнулся с тем что при выполнении последовательности действий в Sfc в определённом местепроисходит несрабатывание задержки времени. Алгоритм такой:
....
Шаг 14 ST
%QX3.1.0:=TRUE;
DELAY(TIME_IN:=t9);
условие дальнейшего перехода
DELAY.OK
.....
Если глянете пример из мануала по кодесис то там реализована такая же задержка времени между включением лампочек светофора.
Так вот данная цепочка у меня достаточно длинная и вот именно в этом месте (шаг 14 - шаг 15 ) почему то не срабатывает выдержка времени ((( Никак не могу разобраться почему, в остальных подобных блоках всё то же самое( Мистика какая то (((
-
Пользователь
Третий вопрос. Как сделть чтобы выполнение алгоритма в Sfc начиналось сначала (к примеру после остановки)? Предполагаю что там есть какой то прораммный указатель, который можно сбросить на ноль.
-
Пользователь
как осуществить программную перезагрузку контроллера ?
-
http://www.alexval2007.ucoz.ru/12345...Sys_V23_RU.pdf может поможет почитайте я там видел описание языка sfc
-
Пользователь
нету там этого =( по этому тут и спрашиваю. тот мануал я первым делом просмотрел.
-
Супер Модератор
1. А кто сказал, что PLC_PRG не может быть на SFC.
2. Программа выполняется так: выполняется основная программа - далее в ней виден вызов подпрограмы - контроллер переходит в неё, выполняет её с верху до низу и возвращает управление основной программе, и та выполняется дальше.
3. Ни в коем случае нельзя писать программу, которая перезагружает ПЛК. Это бред в принципе. программа, перезагружающая ПЛК - это БАГ.
4. В SFC есть определенные флаги, по которым можно переходить безусловно на первый шаг. Более подробно в мануале по CoDeSys (сам никогда не использовал, но знаю, что есть)...
ЗАБУДЬТЕ ПРО СИ...
-
Пользователь
у меня Plc_prg на St, а из неё происходит вызов Sfc. в определённый момент може потребоваться (при нажатии кнопки) вернуться в основную программу из Sfc (прервать выполнение алгоритма).
вопрос 1: как это сделать?
вопрос 2: как при повторном вызове Sfc (при соблюдении условия для её вызова) сделать чтобы она продолжилась не с места прерывания, а с начала.
-
странно что вы пишете на St Plc_prg ,а подпрограмму на Sfc ,обычно делают все наоборот.
можно использовать оператор Case ,и вызывать подпрограмму с определенного "шага",по событию (кнопка) делается переход на другой "шаг",где вызова подпрограммы нет.
чтобы при повторном вызове подпрограммы не было "косяков" с переменными в начале их "сбрасывают" (0,false).
хотя как это делается в Sfc точно не знаю.
Но при вызове подпрограмма по любому будет выполнятся с начала,а ветвление будет в зависимости от того,что вы написали(или нарисовали).
Последний раз редактировалось Sergey666; 14.02.2010 в 22:50.
-
Супер Модератор
To Magiccat:
Пока Вы не усвоите основных правил бесполезно рекомендовать...
ПРОГРАММА НЕ СТОИТ НИ В ОДНОЙ ПОДПРОГРАММЕ...
За цикл - 1-2 мс контроллер успевает просчитать всю программу, не зависимо на SFC или ST она написана. Записывает результаты и опять начинает обсчет заново.
Ваши права
- Вы не можете создавать новые темы
- Вы не можете отвечать в темах
- Вы не можете прикреплять вложения
- Вы не можете редактировать свои сообщения
-
Правила форума