c праздником!![]()
по поводу первой картинки - если не ошибаюсь, в МЭК неявные переменные типа step.x уже заданы, объявлять не надо.
c праздником!![]()
по поводу первой картинки - если не ошибаюсь, в МЭК неявные переменные типа step.x уже заданы, объявлять не надо.
Вроде да, хотя сказано, что это "для упрощенной реализации SFC". Я ЩАС ткнул - понимает и с МЭК-шагами. Нужно разбираться. Но ведь главное - не скрыты ли такие подводные камни, что потопят все судно, когда мы его ромом нагрузим? Вот почему взываю к опытным мореходам.
Еще уважаемый И.Петров пишет об SFCInit и SFCReset. Тоже вариант. И тоже стремный, как пишет автор.
отсюда вывод: во избежание скрытых "странностей" в поведении программы следует писать программу максимально упрощенно, без всяких отладочных примочек, которые используют только "опытные программисты" (из статей И. Петрова)
Здесь я могу поспорить. Если есть понимание поведения программы при использовании "примочек", то вполне можно их использовать. Иначе мы приходим к примитивному программированию.
Простой пример из здешней жизни. Когда-то на форуме шла речь об использовании указателей. И кое-кто из уважаемых коллег заявлял, что это тоже "примочки", что с ними надо бы поосторожней. В то же время я их использую и хорошо себя чувствую.
Поэтому, ИМХО, вопрос только в степени понимания. Я надеюсь, что мы здесь разберемся и получим ответ, например, на вопрос внешнего управления активизацией и дезактивацией шага.
А может быть коллеги подскажут и иные пути. Повторюсь (ибо за многими словами задача теряется), сейчас цель состоит в том, чтобы найти способ изменения хода выполнения SFC-программы по событию. И при этом не ставить в каждом переходе ручками дополнительное условие.
вам не кажется, что поставить в каждом переходе дополнительное условие куда проще, чем теми же ручками "по событию" изменять неявные переменные состояний каждого шага?
Нет, не кажется, уважаемый коллега swerder. Я думаю, что неявные переменные можно обработать в специальном действии, которое будет активно всегда. Эдакий отработчик события. И там требуется создать цикл просмотра всех шагов на предмет активности. И выключать тех, которые еще не знают о событии.
Конечно, если образовать цикл по преребору всех шагов не удастся, то получится в этом отработчике огромная колбаса перебора. Это уже ручками. Плохо. Но все равно, это собрано в одном месте, это однотипно, это копипастится, это можно просмотреть-проконтролировать визузуйноДумаю, что даже и в таком случае выигрыш в надежности и читабельности есть.
Вопрос открыт: кто может поделиться положительным опытом управления шагами?
к учебникам по сименсу надо обратиться, помнится что то такое я делал, по нажатию кнопки, происходило некое подобие прерывания, выполнялся код на SCL, далее подтвержалось выполнение задачи и происходил возврат в SFC
тогда я вообще не понимаю, зачем использовать SFC с такими костылямивоспользуйтесь case'ом в st и прыгайте в нужное состояние когда надо
После того, как я очаровался наглядностью и удобством программирования сложных автоматов на SFC? Нет уж, я поищу подробную информацию по костылям.
И тогда костыли превратятся в жигули. Это не мерседес, конечно, но ехать - не хромать
Если без шуток-прибауток, то скажу так: я считаю осмысленное применение неочевидных методов программирования вполне допустимым. Пока мы вместе с вами не очень осмыслили. Но это закрывает пути к истине.
тогда копайте на http://forum-ru.3s-software.com/index.php