Страница 1 из 3 123 ПоследняяПоследняя
Показано с 1 по 10 из 26

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

  1. #1

    По умолчанию Как работает шаг SFC, написанный на SFC?

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

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

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

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

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

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

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

    Вопросы:
    1) Это так и есть?
    2) А в каком месте это описано, ткните пож?

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

    По умолчанию

    1 Так есть
    2 Зачем описывать одно и тоже. Автоматы в ПОУ - их локальные (static) переменные. Отсюда и пляшите коли поняли
    Последний раз редактировалось Валенок; 04.12.2015 в 23:33.

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

    По умолчанию

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

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

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

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

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

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

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

    Вопросы:
    1) Это так и есть?
    2) А в каком месте это описано, ткните пож?
    Почитайте статьи Петрова на сайте Пролога http://prolog-plc.ru/pb1
    начните с этой Отладка прикладных ПЛК программ в CoDeSys (часть 6)
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  4. #4

    По умолчанию

    Прочел.
    Но не понял, откуда вытекает что маркер пойдет так, а не прошагает весь внутренний шаг подряд. Те почему не
    OUT1 =>IN1=>IN2=>IN3=>OUT3..

    Видимо, я не понимаю, что такое шаг SFC, написанный на SFC. Во что "раскрывается" эта вложенная структура.
    Последний раз редактировалось rapucha; 05.12.2015 в 13:47.

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

    По умолчанию

    Видимо, я не понимаю, что такое шаг SFC, написанный на SFC
    Вы ж вроде в жаве юзаете - банальный switch в switche. Чего непонятно-то ?
    Вложенная вызывается только при вызове "владельца". "Владелец" отдыхает - все вложенные "морская фигура замри"

    откуда вытекает что маркер пойдет так, а не прошагает весь внутренний шаг подряд. Те почему не
    OUT1 =>IN1=>IN2=>IN3=>OUT3..
    А откуда вытекает что при вызове OUT1 1 раз, он должен самовызваться 3 раза ?
    Хотите что внутрянку прошагал от начала до конца - при входе в OUT1 сброс внутрянки на IN1, а в условиях выхода из OUT1 : .. AND "внутренний автомат завершил IN3". Тока получится обычный линейный switch/case c просто вынесенной частью кода
    Последний раз редактировалось Валенок; 05.12.2015 в 14:48.

  6. #6

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    Вы ж вроде в жаве юзаете - банальный switch в switche. Чего непонятно-то ?
    Вложенная вызывается только при вызове "владельца". "Владелец" отдыхает - все вложенные "морская фигура замри"
    То, что он там -- это я вижу) Мне было неочевидно, что у внутреннего свой по сути источник тактовых циклов.
    А откуда вытекает что при вызове OUT1 1 раз, он должен самовызваться 3 раза ?
    Ващет на первый взгляд из правил перехода -- IN1 отработал, переход после него стоит в TRUE -- значит поехали туда, куда этот TRUE указывает, то есть в IN2.
    Я понимаю, что это было бы засадой, потому что эти IN1 IN2 IN3 образовали бы бесконечный цикл, для отдачи управления наружу пришлось бы делать явный переход.

    Хотите что внутрянку прошагал от начала до конца - при входе в OUT1 сброс внутрянки на IN1, а в условиях выхода из OUT1 : .. AND "внутренний автомат завершил IN3"
    Я, еще раз -- не понимаю, из какого места в описании SFC вытекает то поведение, что есть. Это меня беспокоит, потому как я очевидно не умею это описание читать правильно.

    Вот единственное что похожего нашел -- в разделе 2.6.1 собственно стандарта МЭК 61131:

    If any part of a program organization unit is partitioned into SFC elements, the entire program organization unit shall be so partitioned. If no SFC partitioning is given for a program organization unit, the entire program organization unit shall be considered to be a single action which executes under the control of the invoking entity.

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

    По умолчанию

    Деццтво какое-то.
    Вы даже не различаете пользовательский цикл (из нескольких шагов, далее - ПЦ )) и сам автомат (SFC)
    Впилили in1-2-3 и решили шо это и есть автомат. А это просто случайное совпадение Вашего ПЦ и шагов автомата.
    Автомат не имеет начала и конца. ПЦ может начаться где угодно и закончится где угодно, иметь параллельные ветки и любую последовательность исполнения шагов. И как система определит Ваши замыслы по завершению ?

  8. #8

    По умолчанию

    Раскройте мысль, если не трудно. Что именно вы называет автоматом -- сам движок SFC?

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

    Когда мы перешли на OUT2, у нас два активных шага -- OUT2, и in1. Из обоих переход разрешен. Откуда вытекает то, что управление получит именно OUT3? Если можете объяснить, буду благодарен.

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

    По умолчанию

    Что именно вы называет автоматом -- сам движок SFC?
    Автомат состояния конкретного POU (на SFC)

    Термин "активный" - специально придуман чтоб запудрить мозг начинающим в SFC
    Есть автомат. Он указывает на кокой-то шаг. Вот и вся мифическая "активность"
    Работа шага - это его вызов

    Когда мы перешли на OUT2, у нас два активных шага -- OUT2, и in1.
    Когда перешли на OUT2 - in'ы тупо не вызываются. Их ведь вызывает OUT1
    "Активный" in - первый в очереди к зубному. А зубной - на обеде

    PS
    Тем кто бросается в SFC настоятельно рекомендовал бы проюзать case/switch. Просто чтоб прочуйствовать работу автоматов. И тогда снимутся все вопросы про SFC
    Последний раз редактировалось Валенок; 07.12.2015 в 23:45.

  10. #10

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    Тем кто бросается в SFC настоятельно рекомендовал бы проюзать case/switch. Просто чтоб прочуйствовать работу автоматов. И тогда снимутся все вопросы про SFC
    Вы хотите сказать, что там примерно так для SFC, вложенного в SFC ?



    WHILE TRUE i := (i+1) MOD N
    CASE i OF
    1: Do1;
    2: Do2;
    2: Do3;
    ..
    k: DoK
    WHILE TRUE j := (j+1) MOD L
    CASE j OF
    1: DoAnother1;
    2: DoAnother2;
    3: DoAnother3;
    ..
    L: DoAnotherL;
    END_CASE
    EXIT;
    END_WHILE
    ..
    N-1: DoN-1;
    N: DoN ;
    END_CASE
    END_WHILE

Страница 1 из 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

Ваши права

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