PDA

Просмотр полной версии : Вопрос по SFC?



незарегистрированный_ОЛЕГ
01.08.2008, 11:27
День добрый.Интересует такой вопрос,есть глобальная переменная дискретных вход контроллера к примеру I_1, к нему привязана кнопка стоп без фиксации.В проекте нескольео программ(SFC,ST) и главная PLC_PRG на ST.Как в PLC_PRG сделать так,что при I_1=TRUE в программа SFC перешла на определленный шаг?Заранее благодарен.

Kiselev
01.08.2008, 11:58
другие программы вызываются в PLC_PRG? Что мешает в качестве перехода сделать условие I_1=true?

незарегистрированный
01.08.2008, 12:50
В PLC_PRG вызывается 3 программы-одна связана с ИП320,другая с ТРМ202,а третья SFC.Дело в том что на SFC написан конвеер там датчики оптические потом пневматика стартует и так далее порядка 50 шагов,раньше,когда было шагов 10 просто делал Jump По условию I_1=TRUE.Назначение I_1 это возвращение всей системы на исходку на шаг STOP ,так сказать аварийное отключение.Можно ли как-нить из PLC_PRG прописать условие потипу IF I_1:=TRUE THEN (В программе на SFC перейти на шаг STOP);Пока PLC_PRG у меня выглядит так:

Klapana();
TRM_202();
Panel();

Kiselev
01.08.2008, 16:08
то ,что у вас написано на SFC тоже программа? если да, то достаточно предусмотреть в ней некую входную переменную (ей присваиваем значение вашего I_1), при активации которой извне (в данном случае PLC_PRG) будет происходить переход на нужный вам шаг (скорее всего этот шаг будет Init, верно?). незабудьте только предусмотреть сброс всех внутренних переменных, таймеров и т.д. для корректной работы вашего алгоритма при последующих итерациях.

незарегистрированный
01.08.2008, 17:31
Благодарю за ответ,но можно поподробнее написать как это будет на ST.К примеру программа на SFC называется Klapana,а шаг на который надо перейти STOP?Или надо в самой программе SFC что-то менять.Извеняюсь,если задаю глупые вопросы-только начинаю изучать Codesys.

Kiselev
01.08.2008, 23:02
н5 понOтно, что 2ам не понятно:-)
В п@ог@амме "клапана" вам нужно добавить пе@еEод на шаг "Aтоп". УAловием для этого будет являтьAя @авенAтво true некой вEодной (var input) пе@еменной. Этого можно не делать, а A@азу п@илепить вашу вEодную пе@еменную, но я п@едпочитаю Aоздавать зак@ытые pou,
Для удобAтва отладки и поAледующего Aоп@овождения. Затем вы вызываете ваш pou "клапана" в plc_prg подобным об@азом:
Кlapana("Aозданная вами вEодная пе@еменная":=i_1)
Ну вот и вAе( иAEодя из того наAколько я понял задачу)


.



,.,

Игорь Петров
05.08.2008, 17:42
См. в мануале 'Флаги SFC'.
Внутри программы на SFC объявляем bool переменную c именем SFCInit. Во внешней (в главной) программе ставим ее в 1 по кнопке, вызываем SFC. Она прыгает на Инит и стоит там, пока переменная будет сброшена в 0.

D_O_K
10.08.2008, 15:28
См. в мануале 'Флаги SFC'.
Внутри программы на SFC объявляем bool переменную c именем SFCInit. Во внешней (в главной) программе ставим ее в 1 по кнопке, вызываем SFC. Она прыгает на Инит и стоит там, пока переменная будет сброшена в 0.
Не забывая о маленьком нюансе...
До тех пор, пока SFCInit = TRUE, даже первый шаг последовательности (Init) выполняться не будет.
Если в нем описаны какие-то инициализации, приведение оборудования в безопасное состояние и т.п., то прийдется это все скопировать в код главной программы и там вызывать по проверке условия SFCInit = TRUE.