Страница 2 из 4 ПерваяПервая 1234 ПоследняяПоследняя
Показано с 11 по 20 из 33

Тема: SFC внутри SFC

  1. #11

    По умолчанию

    во второй части поста чувствуется умудренность семейным опытом)
    по первой: конечно все зависит от процесса. у меня последовательный алгоритм выполнения технологической задачи с похожими (но не одинаковыми) повторяющимися кусками алгоритма, которые я выделил в отдельные подпрограммы. тем самым получил не 1 диаграмму длиной в километр и с ничтожной удобоваримостью, а одну маленькую управляющую диаграмму, которая манипулирует этими "кусками"

  2. #12
    Пользователь Аватар для drvlas
    Регистрация
    30.09.2010
    Адрес
    Киев
    Сообщений
    700

    По умолчанию

    У меня пока одна дочка. И сын. Но "сыновий процесс" как-то не прижился ни в технике, ни в экономике. С чего бы это?

    Цитата Сообщение от swerder Посмотреть сообщение
    у меня последовательный алгоритм выполнения технологической задачи с похожими (но не одинаковыми) повторяющимися кусками алгоритма
    Ну да, тут ясно. А я вот очаровался возможностями по организации действительно параллельной работы нескольких процессов. Причем, ИМХО, это выгодно отличается от параллельных ветвей в одном программном модуле именно простотой проектирования этих дополнительных процессов.
    И, главное, как это изящно выглядит (спасибо SFC)! И не требует заоблачной квалификации. Это уже фича КДС.

    Да, тему уже можно назвать "Организация параллельной работы взаимосвязанных процессов в SFC". Или "Взаимосвязь параллельных процессов в SFC" Как-то так.

    ОК, вопрос решен. Пора воплощать

  3. #13
    Пользователь Аватар для drvlas
    Регистрация
    30.09.2010
    Адрес
    Киев
    Сообщений
    700

    По умолчанию

    Возник новый вопрос от новичка в SFC.

    Есть программа из некоторого количества шагов. Допустим, прокрутка всей программы - это выполнение какой-то работы электромеханическим устройством, со своими паузами, ожиданиями датчиков и прочее.
    Но принято, что в любой момент может быть нажата кнопка СТОП, по которой нужно срочно-припадочно перейти в состояние остановки, приведя попутно все механизмы в исходное состояние. И хотя механизмы можно приводить в течение необходимого времени, сама реакция на кнопку должна быть мгновенной.
    Как это делается в обычном программировании - ясно. А как изящно сделать в SFC, я не пойму.
    Сначала я принял идею вводить проверку специального флага в каждом из переходов. Но по мере роста программы выяснилось вот что. Если в основном SFC POU поставить такие "проскоки", то там маркер пройдет быстренько по всей ветке и достигнет шага отработки СТОПа. А вот все вызываемые действия, как оказалось, требуют такого же механизма...

    Обломно как-то сделалось Может есть принципиально иной механизм?

  4. #14

    По умолчанию

    у меня во всех местах, где надо контролировать ошибки/остановку, сделаны такие переходы на шаги обработки ошибок/остановки
    Изображения Изображения
    • Тип файла: jpg 15151.jpg (37.2 Кб, Просмотров: 24)

  5. #15
    Пользователь Аватар для drvlas
    Регистрация
    30.09.2010
    Адрес
    Киев
    Сообщений
    700

    По умолчанию

    Цитата Сообщение от swerder Посмотреть сообщение
    у меня во всех местах, где надо контролировать ошибки/остановку, сделаны такие переходы на шаги обработки ошибок/остановки
    Красиво выглядит. Я не знал даже, что из одного шага можно сделать несколько выходов. У меня все как колбасища
    Нужно, конечно, еще посмотреть, как это будет в реализации. По количеству ручной работы никак не меньше, чем добавлять по OR в мои переходы. Но, пожалуй, это все же нагляднее. А я и ценю SFC за наглядность.

    Спасибо!

    Принципиально других механизмов нет, как я понял. ТИПА, есть где-то процесс, мониторящий событие (кнопку), и он умеет сдернуть любую SFC-петлю в указанное сосояние. Фантазии...

  6. #16

    По умолчанию

    для того, чтоб "сдернуть любую SFC-петлю" в другой шаг, нужен переход. чем больше мест, где надо дернуть, тем больше ручной работы

  7. #17
    Пользователь Аватар для drvlas
    Регистрация
    30.09.2010
    Адрес
    Киев
    Сообщений
    700

    По умолчанию

    Вот я же об этом и говорю. А представь себе параллельно (условно, конечно) работающую функцию, которая умеет делать удивительную вещь: находить активный шаг любой SFC-проги, делать ее неактивной и наоборот, активизировать нужный шаг.

    Теоретически, как следует из страницы 156 ("Механизм управления шагом") книги нашего уважаемого И.Петрова, можно обратиться ко всем переменным с именами шагов, найти ту, что нужно деактивировать и "фальсифицировать" ее. Попутно и ту, что с подчеркиванием. А потом установить в TRUE переменную, отвечающую за активность нужного шага. Не ясно, что делать со _Step1 из того же примера И.Петрова. Как отработаются входные-выходные действия задеяных шагов. И т.д...

    И.Петров очень не рекомендует юзать такой способ. Хотя его аргумент мне не кажется очень убедительным в данном конкретном случае. Ведь речь идет не об общем построении программы, а всего лишь об отработке "исключений".

    Вот такое кто-нить вытворял?

  8. #18

    По умолчанию

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

  9. #19
    Пользователь Аватар для drvlas
    Регистрация
    30.09.2010
    Адрес
    Киев
    Сообщений
    700

    По умолчанию

    То есть, проба не вышла. Каких-то принципиальных вещей ведь не открылось, почему так НИЗЗЯ? Или?

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

    Да, и я не про отладку говорю. А именно про програмный модуль, умеющий переключить ход выполнения программы по событию

  10. #20
    Пользователь Аватар для drvlas
    Регистрация
    30.09.2010
    Адрес
    Киев
    Сообщений
    700

    По умолчанию

    Цитата Сообщение от drvlas Посмотреть сообщение
    Я попробую в своей тестовой
    Ага, ЩАС.
    110919_SFC_in_SFC_Error_Name.jpg
    Что-то я у И.Петрова не понял. КДС не позволяет объявить переменную с именем, совпадающим с именем шага. А без этого как ее увидеть?

    Пробовал присвоить иной переменной значение, так пишет, что невозможно преобразовать данные из формата SFCStepType в тип BOOL
    110919_SFC_in_SFC_Error_Name2.jpg

    Напьюсь с горя. Сегодня ДР, так что пора наливать

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

Похожие темы

  1. помогите подобрать оборудование (картинка внутри)
    от Life23 в разделе Подбор Оборудования
    Ответов: 13
    Последнее сообщение: 10.01.2010, 11:28
  2. сохранение данных внутри плк
    от Kraft в разделе ПЛК1хх
    Ответов: 13
    Последнее сообщение: 02.12.2009, 09:48

Ваши права

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