Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя
Показано с 11 по 20 из 26

Тема: Как работает шаг SFC, написанный на SFC?

  1. #11
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    2,256

    По умолчанию

    Типа этого

  2. #12

    По умолчанию

    И как с этой точки зрения выглядит jump из внутреннего блока наружу?

    В такой, например, схеме:


    OUT1
    OUT2
    in1
    in2 -> OUT4
    OUT3
    OUT4

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

  3. #13
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    2,256

    По умолчанию

    И как с этой точки зрения выглядит jump из внутреннего блока наружу?
    как макароны.
    Про это еще в середине XX века все сказано. Вы решили пройти весь путь с начала ?

    по наружному блоку начнет циркулировать натурально два маркера.
    Их может быть и больше. А зовётся это - параллельность а не вложенность. Только какой в этом смысл если набор переменных - общий

  4. #14

    По умолчанию

    Так получается, модель со вложенными свитчами - неправда

  5. #15
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    2,256

    По умолчанию

    Они нормальные вложенные свитчи пока не произойдет акт макаронизации в виде goto из вложенного цикла.
    Выстрелить в ногу есть и более простые способы.

  6. #16

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    Они нормальные вложенные свитчи пока не произойдет акт макаронизации в виде goto из вложенного цикла.
    Выстрелить в ногу есть и более простые способы.
    Да не в стиле программирования вопрос. Формальное описание-то есть у этой конструкции, у вложенных SFC?

  7. #17
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    3,842
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  8. #18

    По умолчанию

    Цитата Сообщение от petera Посмотреть сообщение
    Да, конечно. Но разве вложенный блок эквивалентен параллельной ветке?

    Я просто пытаюсь понять, каким формальными правилами описывается этот самый вложенный блок. Ну, раз есть конструкция, должна же она быть описана. Тот же стандарт МЭК на целую страницу имеет примеров небезопасных конструкций -- и с размножением маркера, и с недостижимыми блоками.
    А про то, как происходит передача управления во вложенный блок и возврат --нет ничего.

    Наверное, это всем очевидно, а я не понимаю какой-то фундаментальной вещи про ПЛК. Я без иронии, трудности с переключением на подходы ПЛК имеются. Вот и пытаюсь докопаться до того, чего именно я не понимаю, как-то так.

  9. #19
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    3,842

    По умолчанию

    Цитата Сообщение от rapucha Посмотреть сообщение
    Может быть, я проглядел документацию..

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

    Т.е. в программе такого вида:

    OUT1
    OUT2 (*OUT2 написан на SFC и состоит из шагов IN1, IN2, IN3*)
    IN1
    IN2
    IN3
    OUT3

    маркер ходит так:

    OUT1 =>IN1=>OUT3=>OUT1=>IN2=>OUT3=>OUT1=>IN3>OUT3 ...

    Логика в этом может и присутствует, но не самая очевидная.

    Вопросы:
    1) Это так и есть?
    2) А в каком месте это описано, ткните пож?
    Цитата Сообщение от rapucha Посмотреть сообщение
    Прочел.
    Но не понял, откуда вытекает что маркер пойдет так, а не прошагает весь внутренний шаг подряд. Те почему не
    OUT1 =>IN1=>IN2=>IN3=>OUT3..

    Видимо, я не понимаю, что такое шаг SFC, написанный на SFC. Во что "раскрывается" эта вложенная структура.
    Не понимание, я думаю, связано с особенностью выполнения программы на SFC.
    А именно в том, что в любом другом языке вся программа полностью выполняется при каждом вызове программного компонента (POU).
    При вызове POU на SFC выполняются не вся диаграмма, а только действия, связанные с активными шагами (имеющими маркер).
    По этому "OUT1 =>IN1=>IN2=>IN3=>OUT3.." не возможно по определению.
    Предположим, что все переходы для шагов OUT1, OUT2, OUT3, IN1, IN2, IN3 заданы просто TRUE.
    Когда в текущем цикле ПЛК первый раз шаг OUT2 станет активным, то будет вызвано его действие, которое "IN1=>IN2=>IN3", и в этом действии появится новый маркер, который будет жить собственной жизнью. Этот маркер получит шаг -"IN1". Вот он один и выполнится, потому как в текущем цикле "выполняются не вся диаграмма,а только действия, связанные с активными шагами". А шаги IN2 и IN3 могут быть выполнены только при следующем вызове действия "IN1=>IN2=>IN3".
    Таким образом, после выполнения шага IN1 управление вернется в шаг OUT2 и если условие перехода за ним TRUE, то первый маркер перейдет к шагу OUT3. При следующем вызове программы OUT1=>OUT2=>OUT3 активным будет уже шаг OUT3, а не OUT2.
    Вот и получится "OUT1 =>IN1=>OUT3=>OUT1=>IN2=>OUT3=>OUT1=>IN3>OUT3 ..."

    ЗЫ. Важно!
    Даже если переход в текущем вызове имеет значение TRUE, то следующий шаг (который за переходом) начнет работу при следующем вызове POU, а не в текущем.
    Последний раз редактировалось petera; 09.12.2015 в 18:08.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  10. #20

    По умолчанию

    Цитата Сообщение от petera Посмотреть сообщение
    По этому "OUT1 =>IN1=>IN2=>IN3=>OUT3.." не возможно по определению.
    Да, это бесспорно.
    Таким образом, после выполнения шага IN1 управление вернется в шаг OUT2
    Вот этот момент и кажется мне плохо освещенным. Ведь, казалось бы - есть активный шаг IN1, есть разрешенный переход на IN2.

    Всем спасибо, потихоньку укладывается в голове.

Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя

Похожие темы

  1. Программа для ПЛК на языке SFC
    от corsar в разделе ПЛК1хх
    Ответов: 4
    Последнее сообщение: 07.05.2013, 03:53
  2. Программирование на SFC
    от TYER в разделе ПЛК1хх
    Ответов: 32
    Последнее сообщение: 02.11.2012, 19:02
  3. SFC внутри SFC
    от drvlas в разделе ПЛК1хх
    Ответов: 32
    Последнее сообщение: 24.09.2011, 20:38
  4. Вопрос по программированию на языке SFC
    от Илья ИТ в разделе ПЛК1хх
    Ответов: 6
    Последнее сообщение: 19.12.2008, 13:02
  5. Как программировать вложенные SFC
    от Антон в разделе ПЛК1хх
    Ответов: 24
    Последнее сообщение: 04.02.2008, 10:44

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •