PDA

Просмотр полной версии : язык St



Евгений Мотренко
05.12.2007, 12:28
Добрый день.
подскажите пожалуйста есть ли в языке St оператор перехода на метку?
если нет каким образом можно организовать переход?
заранее спасибо.

Gans
05.12.2007, 14:00
Посмотри в помощи на кодесис про это:
1) If … then … else…end_if
2) Case ….. of ….. else …. end_case
на мой взгляд этого вполне достаточно
P. S. удачи :-)

Евгений Мотренко
05.12.2007, 15:06
врят ли поможет.
мне нужно перейти в конец программы, попутно проверить несколько условий и, возможно, перейти ещй куда нибудь внутри программы.

Евгений Мотренко
05.12.2007, 15:12
Посмотри в помощи на кодесис про это:
1) If … then … else…end_if
2) Case ….. of ….. else …. end_case
на мой взгляд этого вполне достаточно
P. S. удачи :-)

Такая конструкция не подойдет. Уже думал. У меня слишком разветвленный алгоритм.
Все же есть инструкция перехода к метке (одна а не комбинация)?
Помогите пожалуйста.

Филоненко Владислав
05.12.2007, 16:06
Идеология не предусматривает использование GOTO-подобного стиля. Разбейте свой алгоритм на маленькие функции и вызывайте их в SFC или его аналоге на ST (case) по состояниям. Любой сложности алгоритм получается удобочитаемым и понятным (особенно через год-другой :) )

Малышев Олег
05.12.2007, 16:44
Ну примерно так
1) выход из любого места на начало - return
2) в начале ставим case переменная_состояния
3) Внути case другие case не ставьте - глючит. Код разбиваем на POU и не стараемся написать листинг на 50 страниц.
Я думаю это поможет

Евгений Мотренко
05.12.2007, 17:16
Ну примерно так
1) выход из любого места на начало - return
2) в начале ставим case переменная_состояния
3) Внути case другие case не ставьте - глючит. Код разбиваем на POU и не стараемся написать листинг на 50 страниц.
Я думаю это поможет

Корректно ли будет так: вызов другой подпрограммы из вызывнной ранее. Может ли подпрограмма не содержать оператор RETURN, а переходить на другой POU?

Малышев Олег
05.12.2007, 18:08
вполне может, но возвращаться будтет в след после вызова строку.
И снова - меня еще на первом курсе хорошие люди отучили от goto. Даже доказывал теорему, что используя if, и while можно организовать любой алгоритм.
Ценой глючной программы на контроолере может стать разморозка жилого здания или поломанный станок... или... Вам этого надо?
Четкое понимание того, что делается в программе залог отсутствия глюков.

Gans
06.12.2007, 08:34
если у вас такой сложный алгоритм работы то для начала «plc_prg» хорошо бы было сделать на «sfc» (что-то похожее на блок схему) там всю свою программу разобьёте на куски и правильно уложите в шаги Sfc-программы это заметно упростит алгоритм. внутренности шагов тоже можно сделать Sfc языком программирования. и в финале когда упрощать таким образом не получается начинаем всю программу разбивать на функции, функциональные блоки и просто программы. затем все повторяющиеся куски программы оформляем отдельными компонентами. и только после этого садится писать саму программу и последовательность выполнения тех или иных действий.
P. S. мне аналогичный подход очень помогает :-)

Евгений Мотренко
06.12.2007, 11:32
если у вас такой сложный алгоритм работы то для начала «plc_prg» хорошо бы было сделать на «sfc» (что-то похожее на блок схему) там всю свою программу разобьёте на куски и правильно уложите в шаги Sfc-программы это заметно упростит алгоритм. внутренности шагов тоже можно сделать Sfc языком программирования. и в финале когда упрощать таким образом не получается начинаем всю программу разбивать на функции, функциональные блоки и просто программы. затем все повторяющиеся куски программы оформляем отдельными компонентами. и только после этого садится писать саму программу и последовательность выполнения тех или иных действий.
P. S. мне аналогичный подход очень помогает :-)

Ошромнейшее спасибо всем! Теперь себя не чувствую полным лохом.
Пробую различные вариеанты сошласно Вашим советам.

незарегистрированный
07.12.2007, 20:49
>ошромнейшее спасибо всем! теперь себя не чувствую полным лохом.
>пробую различные вариеанты сошласно вашим советам.

да, по злому организована дисскусия!
шогласно шаветам не нада! нада итти учиццо чтоли на курсы!

и еще раз для лохов:

можно конкретно ответить - возможен переход в произвольное место и как на St??? сам возможности не имею учится - "сразу с третьего классу пошел прогррамиировать".

Филоненко Владислав
09.12.2007, 11:18
невозможен!

Евгений Мотренко
11.12.2007, 18:25
>ошромнейшее спасибо всем! теперь себя не чувствую полным лохом.
>пробую различные вариеанты сошласно вашим советам.

да, по злому организована дисскусия!
шогласно шаветам не нада! нада итти учиццо чтоли на курсы!

и еще раз для лохов:

можно конкретно ответить - возможен переход в произвольное место и как на St??? сам возможности не имею учится - "сразу с третьего классу пошел прогррамиировать".

Зло очень зло!! Ошибся при наборе текста, прошу извенить за получившейся калаибур!! Было весело

Dr-Fin
11.04.2008, 11:11
Как правильно реализовать выполнение процедцры

Kirill
11.04.2008, 14:34
Как правильно реализовать выполнение процедцры

Codesys не предусматривает процедур. Есть функции, функциональные блоки и программы. Ближе всего, видимо программы. Вызывать их проще всего обращением из plc_PRG.