Cs-Cs, не нагружайте человека дополнительной информацией. Ему нужна функция, а не функциональный блок. Не нужно смешивать все в кучу - еще больше запутается. Что такое FB, как он работает и чем от простой функции отличается - это уже "темы" последующих "уроков".
лучше бы подсказали чем обижать и выпендриваться своими знаниями
Даже и мысли не возникало кого-то обидеть. Дело не в выпендреже и не в блеске знаний, а в том, что человеку (на будущее) нужно дать не просто информацию, а знания, чтобы при написании той или иной строчки кода, человек понимал (сам, своей головой) что он пишет и зачем. У меня, например, вызывает сложности написание доходчивого (для другого человека) толкования, с примерами (в картинках), на "несколько листов А4". Мои тараканы, конечно, знают и понимают то, что им нужно, но по-своему. По азам есть много авторов, которые, на мой взгляд, более подробно и грамотно смогут объяснить, в изложенных ими материалах, те или иные моменты с нюансами/тонкостями, с примерами (примеры очень важны, потому как теория без практики очень плохо усваивается и быстро забывается). Первое, что попалось под руку - "РП ПЛК63.73.pdf", страница 32 - краткое описание, что из себя представляет функция. Вот тут есть информация как вызывать функцию. Чтобы вызвать функцию, нужно чтобы она присутствовала в проекте, не важно где, написанная собственноручно в перечне POU или в добавленной к проекту библиотеке.
Пример от меня: Задача - "склеить" две строки в одну. Для этого можно воспользоваться функцией "CONCAT" из библиотеки "STANDARD.LIB". Если библиотека не добавлена в проект, то необходимо ее добавить, для этого переходим на вкладку "Ресурсы", двойной клик по "Менеджер библиотек", правой кнопкой мыши в окне перечня библиотек, выбираем "Добавить библиотеку...", идем в (путь по умолчанию) "C:\Program Files\3S Software\CoDeSys V2.3\Library", ищем там файл "STANDARD.LIB", двойной клик по нему. Всё, библиотека добавлена в проект.
Код:
PROGRAM PLC_PRG
VAR
Str1 : STRING; (*первая склеиваемая строка*)
Str2 : STRING; (*вторая склеиваемая строка*)
Str3 : STRING; (*Конечный результат*)
END_VAR
Str1 := 'Привет,';
Str2 := ' МИР!';
Str3 := CONCAT(Str1, Str2);
В результате работы функции "CONCAT", мы получим значение "Привет, МИР!" в переменной Str3.
Бывает необходимо, чтобы функция выполнила какие-либо действия, но возвращаемый ею (функцией) результат нам не важен. В таком случае, функция просто вызывается в теле кода с параметрами. Например, есть такая функция, которая очищает экран ПЛК63 (например) - "ClearScreen", находящаяся в библиотеке "Work_Mode.lib" (тоже должна быть добавлена в проект), которая после выполнения возвращает значение типа DINT (при успешном выполнении номер очищенного экрана или -1 в случае ошибки). Нас, допустим, не интересует возвращаемое значение, нам нужно, чтобы функция просто выполнила какие-то действия (в нашем случае очистила экран), тогда функция будет вызываться так:
Код:
PROGRAM PLC_PRG
VAR
END_VAR
ClearScreen(0);
Пример собственноручно написанной функции:
В проекте, на вкладке "POU", жмем правой кнопки мыши по изображению папки с названием "POU" в дереве проекта, выбираем "Добавить объект...", в открывшемся окне вводим имя добавляемой нами функции в поле "Имя нового POU", например, "MathsPlus", выбираем "Тип POU" - "Функция", выбираем "Язык реализации" - "ST", выбираем "Тип результата:" - "INT", жмем кнопку "ОК". В дереве проекта появится новый POU с именем "MathsPlus" и откроется окно для редактирования кода. В области переменных оставляем только VAR_INPUT.
Код:
FUNCTION MathsPlus : INT
VAR_INPUT
Par1 : INT;
Par2 : INT;
END_VAR
MathsPlus := Par1 + Par2;
Открываем "PLC_PRG", добавляем в область объявления переменных переменную "Res", в области кода вызываем, добавленную нами собственноручно, функцию с параметрами (с присваиванием/передачей значений переменным функции):
Код:
PROGRAM PLC_PRG
VAR
Res : INT;
END_VAR
Res := MathsPlus(1, 3);
В результате работы функции и кода в "PLC_PRG", переменная "Res" будет содержать значение 4 (четыре).
Как-то так... озадачили меня с утра... тараканы еще проснуться не успели, а я их палкой...