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