PDA

Просмотр полной версии : помогите с программированием



demetriuse
06.12.2010, 16:48
подскажите пожалуйста, как лучше всего на языке Sfc реализовать обработку нажатия аварийного стопа станка (красный грибок).
на Sfc реализован длинный цикл описывающий работу станка, на каждом шаге проверять нажат грибок или нет кажется глупо...поделитесь, пожалуйста, опытом.

Andy
06.12.2010, 17:40
в хелпе читайте SFCInit, SFCReset.
P.S.: Сам не пробовал.

Gans
06.12.2010, 17:49
Взгляни эту темку. http://owen.ru/forum/showthread.php?t=9067 Особенно вложения. Про кнопку стоп смотреть во вложении сообщения №9 :-) и конечно поиск по форуму рулит!!!

Gans
06.12.2010, 18:48
1. нажатие "большой красной кнопки" должно проходить вообще мимо плк, а в плк долетать только эхо.+1000000 согласен красная кнопка должна рубить управление силовыми цепями и еще что-то очень важное, а для плкххх специально ставим дополнительный контакт, что бы он тоже был в курсах ;).

lara197a
06.12.2010, 18:49
обычно пишу условия пуска и стоп отдельным блоком, котрорый обрабатывается в каждом цикле.

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

Малышев Олег
06.12.2010, 19:59
большая красная кнопка должна отрубать питание. для информирования плк можно и контакты завести.

lara197a
06.12.2010, 21:12
ну это не обязательно, достаточно просто заблокировать контроллеры и сбросить входы в безопасное состояние. к примеру именно так строят распределенные сети управления, к примеру на профисейф.

demetriuse
06.12.2010, 21:59
> в хелпе читайте SFCInit, SFCReset.
> P.S.: Сам не пробовал.
про это читал, применял в проектах, но думал найти более красивое решение

demetriuse
06.12.2010, 22:01
> 1. Нажатие "Большой красной кнопки" должно проходить вообще мимо ПЛК,
а в ПЛК долетать только эхо.

естественно нажатие грибка приводит к остановке оборудования, но не плк - тот только информируется.

>2.А уж если приспичило, то как абсолютная операция, нажатие должно обработаться первым до выполнения этого длинного >цикла, и чтоб не думать где Вы зыбыли сделать обработку, где не забыл, этот длинный цикл проще пихнуть в отдельный prog или >action и вся обработка будет происходить выше этого длинного цикла.

так не пойдет т.к. Sfc цикл не будет сброшен и после отпускания грибка цикл пойдет вновь с того момента где его остановили - эта реализация работает как пауза - некатит

demetriuse
06.12.2010, 22:03
обычно пишу условия пуска и стоп отдельным блоком, котрорый обрабатывается в каждом цикле.

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

А сброс цикла как осуществляете когда останов нажали?

demetriuse
06.12.2010, 22:06
Взгляни эту темку. http://owen.ru/forum/showthread.php?t=9067 Особенно вложения. Про кнопку стоп смотреть во вложении сообщения №9 :-) и конечно поиск по форуму рулит!!!

Посмотрел...после каждого шага добавлять проверку на нажатие грибка и переход на начало цикла - на маленьком цикле пойдет....а когда у него пару десятков шагов это уже напрягать начинает....реализовывал проще в одну команду через SFCInit, SFCReset, но везде пишут что эти механизмы только для отладки и использовать в рабочих программах не рекомендуется...вот и искал решение красивее

drvlas
06.12.2010, 22:34
искал решение красивее

Я пофанитазирую, потому что сам только начинаю осваивать SFC.
А если в SFC-программе запустить параллельно основной ветви некий шаг, который только и делает, что проверяет условие СТОПа? Ну, и вытворяет всякие безобразия, когда видит нажатие грибка. Т.е. останавливает все пучком.
Параллельность этого шага основной ветви что означает? Что он исполняется каждый цикл. Значит реакция будет мгновенной. И в основной ветви (ветвях) ничего можно не проверять.

Примечание. А при использовании МЭК-шагов такая штука, ИМХО, будет реализовываться просто действием, активизированным на каком-то шаге и не умирающим, когда шаг не активен. Или не так?

demetriuse
06.12.2010, 22:41
Я пофанитазирую, потому что сам только начинаю осваивать SFC.
А если в SFC-программе запустить параллельно основной ветви некий шаг, который только и делает, что проверяет условие СТОПа? Ну, и вытворяет всякие безобразия, когда видит нажатие грибка. Т.е. останавливает все пучком.
Параллельность этого шага основной ветви что означает? Что он исполняется каждый цикл. Значит реакция будет мгновенной. И в основной ветви (ветвях) ничего можно не проверять.

Примечание. А при использовании МЭК-шагов такая штука, ИМХО, будет реализовываться просто действием, активизированным на каком-то шаге и не умирающим, когда шаг не активен. Или не так?

В предыдущих проектах я так и делал. Вешал парл шаг который контролировал грибок, в случае его нажатия сбрасывал основной цикл.

Парл шаг - это в терминах codesys размножение маркера, что приводит к тому что исполнитель выполняет и текущий шаг и висячий парл шаг. В книгах размножать маркер не рекомендуют

drvlas
06.12.2010, 22:47
ну, каждый выбирает по вкусу. я видел примеры программ от хороших программистов, в которых параллельных шагов есть :)
злоупотреблять не следует, наверное, это да. а так, чтобы вообще "ни-ни" - по-моему, перебор. речь ведь только о том, насколько начинаешь терять контроль над программой. парочка постоянно активных "следителей за важными событиями" - очень даже неплохо.

lara197a
06.12.2010, 23:31
при нажатии кнопки стоп, обычно сбрасываю реле (функция Rs, см. библиотеки).
установка производится или отдельной кнопкой "сброс", на которую завожу сброс всех аварий. или к примеру при нажатии кнопки пуск. также рекомендую, по фронту, после включения питания плк.
Выход функции RS можно использовать через АND, при включении исполнительных механизмов.
К Примеру включить выход 1 при наличии сигнала на входе 3 и ненажатой кнопке стоп(вход 1).
RS_Stop(SET:= In2,RESET1:= NOT In1);
Out1:=In3 AND RS_Stop.Q;
как только кнопка будет нажата Out1 выключится.

drvlas
07.12.2010, 17:39
подскажите пожалуйста, как лучше всего на языке Sfc реализовать обработку нажатия аварийного стопа станка (красный грибок).
на Sfc реализован длинный цикл описывающий работу станка, на каждом шаге проверять нажат грибок или нет кажется глупо...поделитесь, пожалуйста, опытом.
То есть, смотрим самое просьбу трудящихся. И удовлетворяем ее. Сказано, что есть SFC и много шагов, в которые не хочется впихивать проверки. Параллельный шаг (ветвь, если хотите) - это и есть нечто, вызываемое каждый рабочий цикл и живущее своей короткой жизнью. Практически то же, что

Сhek_STOP( );
Длинный_цикл_на_SFC( );

И все это - не выходя за пределы SFC.