тогда что я сделал не так в посте выше - дублирую. Вложение 50935
Вид для печати
тогда что я сделал не так в посте выше - дублирую. Вложение 50935
мне объявлять переменные не нужно? они привязаны с библиотекой. я просто вызываю в программе функцию?
Объявлять нужно именно переменные, а вы пытаетесь объявить функцию. Начните с просмотра примеров, тогда все станет ясно.
можно пример
или что у меня нет еще разВложение 50938
Вложение 50949
какие параметры, входы и выходы нужно писать в скобках функции?
x123:=SCALE_R(X, I_LO, I_HI, O_LO, O_HI); правильно я сделал? какой порядок очередности нужно соблюдать ввода в скобках в библиотеке это не написано, в библиотеке.
stepavel, Вы меня извините, конечно, но если для Вас вызов функции вызывает сложности, то может стоит начать с самого начала, а именно с мат. части по программированию на темы, например, "Что такое функция?", "Для чего нужна функция?" и т.д. и т.п.? На эти темы куча, уже существующей, информации на просторах сети Интернет, где все подробно расписано.
да тоже приношу свои извинения, работы много времени нет все читать и искать. да я понимаю что такое функция и для чего она нужна. но раз тема для новичков я и пишу в эту тему если нет желания можете не читать. если кому не сложно объяснить буду благодарен. У меня вопрос был как правильно на языке st в кодесис пишится функция мне ответили в примере для меня это понятно, но что в скобках нужно указывать формулу или вводные параметры функции? я прочитал справку кодесис, но хочется уточнения. как я понял что в скобках пишется через запятую вводные данные функции - это правильно? ввод воходных значений можно не через переменную а сразу число, и порядок вводных значений обязательно соблюдать?
stepavel Ага... работы много нетвремени песыт верно прастите тут запятая это мне функция нужна в общем лучше бы подсказали чем обижать и выпендриваться своими знаниями.
Так, да? А уважить тех, у кого просишь помощи (написать понятно и ясно) - это тоже работы много? Может у нас всех тоже работы много, и нам много работы в текст без знаковы препинаний и абзацев вчитываться работы много... Пхх.
Короче, функция на языке st в кодисись пишется при помощи отдельного POU которай надо дабавить в праэкд при пом прав кноп мыще но тебе функция нужна не вызов функциональуго блока нужен а это разные вещи функцыйа чтото вычисляет и возвращает результат о функционал блог работает как минепрограмма и может эметь много парам на вх-вых вот тебе это и надо ты объявляешь такой ФБ как переменную вразделе перем сверху так MyFB: FUNCTION_BLOCK; а потом в коде вставляешь его выхзов по кнопке F2 как вызов экземпляра и там будет чтоить типа MyFB (InVar :=, InVar2 :=, OutVar1 =>, OutVar2 =>) куда надо подставить те переменные куда ты хочешь передать или записать значения это если ты вызываешь заранее сделанный FB из библиотеки например таймер счётчик а свои функции надо объявлять через POU а не в VAR это не паскаль ни разу
Вот тут написан верный ответ. У меня тоже, как у тебя - работы много времени нет всё писать разборчиво разберись сам
Cs-Cs, не нагружайте человека дополнительной информацией. Ему нужна функция, а не функциональный блок. Не нужно смешивать все в кучу - еще больше запутается. Что такое FB, как он работает и чем от простой функции отличается - это уже "темы" последующих "уроков".
Даже и мысли не возникало кого-то обидеть. Дело не в выпендреже и не в блеске знаний, а в том, что человеку (на будущее) нужно дать не просто информацию, а знания, чтобы при написании той или иной строчки кода, человек понимал (сам, своей головой) что он пишет и зачем. У меня, например, вызывает сложности написание доходчивого (для другого человека) толкования, с примерами (в картинках), на "несколько листов А4". Мои тараканы, конечно, знают и понимают то, что им нужно, но по-своему. По азам есть много авторов, которые, на мой взгляд, более подробно и грамотно смогут объяснить, в изложенных ими материалах, те или иные моменты с нюансами/тонкостями, с примерами (примеры очень важны, потому как теория без практики очень плохо усваивается и быстро забывается). Первое, что попалось под руку - "РП ПЛК63.73.pdf", страница 32 - краткое описание, что из себя представляет функция. Вот тут есть информация как вызывать функцию. Чтобы вызвать функцию, нужно чтобы она присутствовала в проекте, не важно где, написанная собственноручно в перечне POU или в добавленной к проекту библиотеке.Цитата:
лучше бы подсказали чем обижать и выпендриваться своими знаниями
Пример от меня: Задача - "склеить" две строки в одну. Для этого можно воспользоваться функцией "CONCAT" из библиотеки "STANDARD.LIB". Если библиотека не добавлена в проект, то необходимо ее добавить, для этого переходим на вкладку "Ресурсы", двойной клик по "Менеджер библиотек", правой кнопкой мыши в окне перечня библиотек, выбираем "Добавить библиотеку...", идем в (путь по умолчанию) "C:\Program Files\3S Software\CoDeSys V2.3\Library", ищем там файл "STANDARD.LIB", двойной клик по нему. Всё, библиотека добавлена в проект.
В результате работы функции "CONCAT", мы получим значение "Привет, МИР!" в переменной Str3.Код:PROGRAM PLC_PRG
VAR
Str1 : STRING; (*первая склеиваемая строка*)
Str2 : STRING; (*вторая склеиваемая строка*)
Str3 : STRING; (*Конечный результат*)
END_VAR
Str1 := 'Привет,';
Str2 := ' МИР!';
Str3 := CONCAT(Str1, Str2);
Бывает необходимо, чтобы функция выполнила какие-либо действия, но возвращаемый ею (функцией) результат нам не важен. В таком случае, функция просто вызывается в теле кода с параметрами. Например, есть такая функция, которая очищает экран ПЛК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.
Открываем "PLC_PRG", добавляем в область объявления переменных переменную "Res", в области кода вызываем, добавленную нами собственноручно, функцию с параметрами (с присваиванием/передачей значений переменным функции):Код:FUNCTION MathsPlus : INT
VAR_INPUT
Par1 : INT;
Par2 : INT;
END_VAR
MathsPlus := Par1 + Par2;
В результате работы функции и кода в "PLC_PRG", переменная "Res" будет содержать значение 4 (четыре).Код:PROGRAM PLC_PRG
VAR
Res : INT;
END_VAR
Res := MathsPlus(1, 3);
Как-то так... озадачили меня с утра...:) тараканы еще проснуться не успели, а я их палкой...:)