Страница 3 из 4 ПерваяПервая 1234 ПоследняяПоследняя
Показано с 21 по 30 из 33

Тема: Программирование на SFC

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    По умолчанию

    SFC мой любимый язык. Не раз бывали ситуации, когда технологии нет в виде документа, а есть только человек, который думает что знает как должно работать. Например, стенд испытания пружин подвески грузовиков – установка, замер по двум уровням, серии циклов сжатия с разными уровнями, повтор замеров, отбраковка. Один человек рассказывает, второй сразу рисует SFC, показывает в работе и правит. Потом параллельным переносом ветви разносятся по рабочим позициям стола и сдвигаются по фазам. Специалист по пружинам в программировании ничего не понимает, но через 2 часа совместной работы берется править SFC сам. Теперь он сам все свои тесты и задает. Так и было задумано. Была машина по прессовке и упаковке макулатуры, теплица, инкубатор – поворот сотен лотков по расписаниям и др.пр.. Все это на SFC ложится в темпе устной речи.

    По опыту наших учебных курсов, именно программистам SFC дается тяжело. LD, ST, FBD, CFC проходятся за 3 часа с нуля. На SFC надо скрупулезно потратить часов 6, тогда начинает получаться, иногда озарение происходит довольно резко и с бурным восторгом Продуманная SFC программа красива и читается в 50 раз легче чем на любом другом языке. Но, вопросов по SFC больше всего.

    Поэтому мы решили в этом году в конференцию CoDeSys (24-25 мая) включить разбор SFC особой темой. Что показать уже есть.

  2. #2

    По умолчанию

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

  3. #3

    По умолчанию

    Цитата Сообщение от Алексей Дмитриев Посмотреть сообщение
    Еще хуже ситуация при аварийной остановке цикла - продолжение, как правило, если программа на SFC..
    Не надо делать на SFC главную программу PLC_PRG. Это типовая ошибка. Ее стоит написать на ST или LD, а уже в ней организовать вызов 2 десятка SFC подпрограмм и их сброс по авариям. Еще красивее распараллеливаться задачами. Блок SFC можно объявлять Retain и он при рестарте продолжит там, откуда слетел.

    SFC язык шикарный, если научиться правильно применять. Например, у компании Бош все их прикладные программы самых разнообразных машин в CoDeSys написаны строго на связке ST-SFC. Иное запрещено. Это самые красивые, читабельные и сопровождабельные программы из того, что вообще доводилось видеть.

  4. #4

    По умолчанию

    Цитата Сообщение от Игорь Петров Посмотреть сообщение
    Это самые красивые, читабельные и сопровождабельные программы из того, что вообще доводилось видеть.
    Так-то так, только печатать на бумагу их не очень-то... Или есть средства для разбития по листам?

  5. #5

    По умолчанию

    Алексей Дмитриев а что вам мешает написать для каждого из 2х десятков отдельную подрограмму на SFC?

  6. #6

    По умолчанию

    Не знаю, я как-то привык к старой доброй Булевой алгебре. Там все получается наиболее компактно и читабельно, имею в виду чисто релейные алгоритмы. А все остальное на ST, естественно.

  7. #7

    По умолчанию

    Игорь Петров, подскажите пожалуйста можно ли сделать задержку при переходе на альтернативную ветвь в простом SFC.
    В приложенном примере для перехода из шага 6 в 7 необходимо выполнить условие Trans5, если по истечении какого-то времени это условие не выполнилось перейти на Trans21 и выполнить исключение.
    Изображения Изображения

  8. #8

    По умолчанию

    Цитата Сообщение от TYER Посмотреть сообщение
    ..если по истечении какого-то времени это условие не выполнилось перейти на Trans21 и выполнить исключение.
    Варианты:
    1) В проостом SFC: в шаге 6 завести таймер TON, по его выходу переход на альтернативу.

    2) Для МЭК SFC в шаге 6 ставим действие D ‘отложенное’. В него прописываем лог. переменную. По ней уход на альтернативную ветку.

    3) Делаем свой единый обработчик исключений SFC на проект. В нем проверяем флаг SFCError, определяем где зависло по SFCErrorPOU, SFCErrorStep, даем диагностику пользователю, если надо, и принимаем меры. Для включения контроля, на нужные шаги ставим 'Дополнения' - 'Атрибуты шага' Макс. время.

  9. #9

    По умолчанию

    TYER
    в шестом шаге запускаете таймер на какое-то время, в транс5 добавляете условие "and not таймер.q", в транс21 добавляете условие "and таймер.q"

  10. #10
    Пользователь
    Регистрация
    13.10.2011
    Адрес
    Златоуст
    Сообщений
    1,021

    По умолчанию

    Ну вот у меня ST-SFC сделано. Для разбора не выложу, но скриншот покажу:



    «Стоп», правда, в CommandAndControl обрабатывается.

    Что быстрее, а что медленнее однозначно не скажешь. Само по себе оно всё одинаково.
    Последний раз редактировалось Yegor; 02.11.2012 в 12:51.

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

Ваши права

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