Последний раз редактировалось capzap; 09.02.2024 в 10:20.
Bad programmers worry about the code. Good programmers worry about data structures and their relationships
среди успешных людей я не встречала нытиков
Барбара Коркоран
Подскажите новичку (ST). Как вложить функцию в функциональный блок для выполнения.
Да просто, вызываем и все
Ну, и на всякий случай, вот так функциональные блоки вызываютсяКод:function_block primer_1 //имя функционального блока. var_input //объявление входных переменных U : bool; //входная переменная с типом данных bool end_var var_output //объявление выходных переменных Q : udint; //выходная переменная с типом данных udint end_var Q := function1(U); //вызов функции end_function_block
Код:var_output //объявление выходных переменных D : udint; //выходная переменная с типом данных udint end_var var //объявление локальных переменных fb1, fb2, fb3: functionblock1; //объявляем функциональный блок A1, A2, A3: bool; B1, B2: bool; C1, C2, C3: udint; end_var //1-й способ fb1(U:=A1,Res:=B1,N:=0, Q=>C1); //2-й способ fb2.U := A2; //задаем входные значения fb2.Res := false; fb2.N := 0; fb2(); //вызываем функциональный блок C2 := fb2.Q; //читаем результат //3-й способ (комбинированный) fb3.Res := false; fb3(U:=A3,N:=C3); D := fb3.Q; end_function_block
Последний раз редактировалось Dimensy; 10.02.2024 в 07:32.
Спасибо. Если можно ещё вопрос функции добавляются тоже так же как и функционирование блоки. (fb1) это я так понимаю название блока.
Посмотрите примеры выше, функция просто вызывается (в скобках входы функции), а ФБ должен быть объявлен в VAR, а в теле программы вызван, со входами, выходами
или без них (3 способа)
Пример таймера TON (2 варианта) и его вызов в ФБ https://owen.ru/forum/showthread.php...39&page=24#235
Последний раз редактировалось kondor3000; 10.02.2024 в 12:34.
Спасибо за информацию теперь разобрался.
Интересно, вы Codesys 2.3 вообще не знаете? Советую поставить и отлаживать код в нём. Язык ST очень похож, зато любой блок ФБ, можно посмотреть в работе, в отличие от Лоджика. Таймеры, счётчики, триггеры в Codesys 2.3 можно использовать как самописные, так и стандартные, опять же в отличие от Лоджика ( тут только самописные).
Последний раз редактировалось kondor3000; 12.02.2024 в 15:34.
Спасибо за совет! Только какая связь Кодесус и Овен Лоджик ? Как Си и Бейсик, что-ли? Есть операнд, в справке про него не слова, вот и всё. И у нас нет устройств на работе с средой Кодесус, поэтому неинтересно. А Овен Лоджик часто выручает. Ключевая фраза - очень похож. Есть программа, нужно и описание.
Последний раз редактировалось Рогов Алексей; 13.02.2024 в 10:54.
Вот вам готовые примеры, с вложенными блоками, вложенные функции и ФБ тоже должны быть на ST. Есть триггеры, таймеры, счётчики, функции SEL, MOD, Log, Lg, Lb, Ln и т. д.
Пример вызова функции Логарифма https://owen.ru/forum/showthread.php...&page=752#7515https://owen.ru/forum/showthread.php...&page=752#7515Код:function_block fB1 //имя функционального блока. var_input A:real; B:real; end_var var_output //объявление выходных переменных Q :real; //выходная переменная с типом данных real end_var //PRG Q:=fLog(A,B) ; //вызов функции "fLog" end_function_block
https://owen.ru/forum/showthread.php...39&page=11#105
https://owen.ru/forum/showthread.php?t=38453&page=10#93
https://owen.ru/forum/showthread.php...052#post426052
https://owen.ru/forum/showthread.php?t=38891#6
https://owen.ru/forum/showthread.php?t=38619&page=3#24
https://owen.ru/forum/showthread.php...39&page=20#200
Последний раз редактировалось kondor3000; 10.02.2024 в 15:00.