Показано с 1 по 10 из 10

Тема: Процедуры в CoDeSys

  1. #1

    По умолчанию Процедуры в CoDeSys

    Здравствуйте,
    Совсем недавно начал знакомиться с CoDeSys и уперся в проблему:
    Создать функцию в SFC нельзя,
    тогда каким образом вычленить большую часть программного блока и передать ей управление.
    (Через программу? Тогда как передать управление и дождаться, когда эта программа вернет его.)

  2. #2

    По умолчанию

    Владимир_eng термину Процедуры из курса информатики в CoDeSys, имхо, соотвествует - функциональный блок.
    ps вы более подробнее опишите проблему. а то не совсем ясно , что вам нужно и , что у вас не получается....

  3. #3

    По умолчанию

    Я хочу уточнить:
    как приостановить выполнение программы PLC_PRG,
    запустить программу PLC_SamAny, расположенную в этом же проекте, и по окончании выполнения PLC_SamAny вернуть управление в PLC_PRG после шага вызова PLC_SamAny.
    (Например для того чтобы вынести в отдельный модуль процедуру перемещения платформы, вызываемую по ходу программы несколько раз). (Если это возможно, подскажите пожалуйста, как это будет выглядеть в ST)

  4. #4

    По умолчанию

    так же , как и функциональный блок...
    ps советую ,найдите в сети - "Солон - Программируемые контроллеры. Стандартные языки и приемы прикладного проектирования.2004.djvu"
    все на много понятней станет.
    Изображения Изображения

  5. #5

    По умолчанию

    Цитата Сообщение от Jeck Посмотреть сообщение
    ,найдите в сети - "Солон - Программируемые контроллеры. Стандартные языки и приемы прикладного проектирования..
    Большое спасибо!

  6. #6

    По умолчанию

    В CoDeSys (Точнее в МЭК 61131-3) специфическая терминология.
    Из 3 видов модулей (POU) только функция примерно соответствует этому понятию в других языках. И хотя формально должно возвращаться значение, но система не обязывает его использовать, так что можно использовать функции как процедуры.
    Программа (PRG) - что-то вроде процедуры, у нее могут быть параметры, но механизм их передачи другой - это общедоступные переменные, которым можно присвоить значения в любом месте, а не только при вызове (MyPrg.Arg:=5; .... MyPrg() вместо MyPrg(Arg:=5)) и они сохраняются.
    Наконец - функциональный блок (FB) - та же программа, но могущая быть разможенной в нескольких экземплярах (instances). У каждого экземпляра - свой набор переменных. Экземпляры FB надо описывать перед использованием, как переменные. Больше всего FB напоминает класс С++, но то, что CoDeSys называет параметрами, соответствует public переменным класса, а параметров в смысле С++ у методов (actions) FB, увы, нет.
    Последний раз редактировалось alex1963; 17.12.2008 в 21:15.

  7. #7

    По умолчанию

    Цитата Сообщение от alex1963 Посмотреть сообщение
    ...а параметров в смысле С++ у методов (actions) FB, увы, нет.
    Точнее небыло, пока не появился CoDeSys V3

  8. #8

    По умолчанию

    Цитата Сообщение от Jeck Посмотреть сообщение
    так же , как и функциональный блок...
    ps советую ,найдите в сети - "Солон - Программируемые контроллеры. Стандартные языки и приемы прикладного проектирования.2004.djvu"
    все на много понятней станет.
    Еще раз спасибо за тнформацию, книга действительно поучительна.
    Но, или по неопытности, либо по тупости вопрос так и остался открытым:
    при вызове экземпляра ФБ код в блоке продолжает циклически выполняться, пока выходное условие не станет TRUE, (т.е. идет распаралеливание задач).
    А я спрашивал - возможно ли передать блоку (экземпляру ФБ либо программе) управление, и пока она не выполниться не выполнять последующие шаги основной программы.

  9. #9

    По умолчанию

    Владимир_eng, вы ни-как не избавитесь от "компьютерного мышления"... с ПЛК, дело обстоит не так.. 1)опрашиваем входы 2) решаем, что делать 3) записываем выходы. цикл замыкается сам. поэтому основная программа( в основном PLC_PRG) работает каждый цикл. более того, если время основной программы превысит порог, то "собака" сбросит плк.
    А я спрашивал - возможно ли передать блоку (экземпляру ФБ либо программе) управление, и пока она не выполниться не выполнять последующие шаги основной программы.
    как вариант... PLC_PRG на SFC. вызовы ФБ-ов пишете в шагах. прописываете переходы между ними и все. шаг SFC будет выполнятся постояно, пока не будет выполненно условие перехода...

  10. #10

    По умолчанию

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

    еще раз спасибо, а за букварь особая благодарность.

Ваши права

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