Здравствуйте! Подскажите пожалуйста: в чем отличие макросов от функциональных блоков в OwenLogik?
Вид для печати
Здравствуйте! Подскажите пожалуйста: в чем отличие макросов от функциональных блоков в OwenLogik?
В Лоджике есть справка, вызывается по F1
Макросы на языке FBD (схема квадратиками), а ФБ на языке ST (текстовый язык), примеры на ST ниже
https://owen.ru/forum/showthread.php...=9&p=429061#81
Вот библиотечный ФБ
Вложение 87633
Вот пользовательский ФБ на языке ST
Вложение 87634
Вот макрос
Вложение 87635
А, вот справка Лоджика
Вложение 87636
Prosto tak лучше посмотрите справку CodeSys - собственно разница между макросом и FB кратко можно описать так - для первого выделяется память для каждого блока, для второго нет, так как он выполняет только вычисления (пришли данные, обработал, выкинул результат, забыл про данные и так по кругу), первый же может сохранить промежуточные данные, так как ПО для него выделяет память, часто незаметно для вас.
kondor3000 TON по вашему что? уж точно не функция
Внутри макросов вы можете использовать энергонезависимые переменные - но вот тут ОЛ будет в заднице, потому что вы не сможете делать копии своих макросов.
А на ST вроде тут только функции, потому что иначе ОЛ с ними не умеет работать.
А человеку, я думаю, надо понять принцип, а не что и на чем в этом чуде ОЛ можно делать, думаю дальше он сам разберется.
kondor3000 перечитаю, когда что-то не будет получаться, не переживайте так. Лучше правильно донесите человеку разницу между тем и тем и нюансами в ОЛ. Потому что это во всех ПО подобного рода практически одинаково.
Cs-Cs ну так я о чем? под Функциональный Блок ПО "должно" выделять память для их переменных. Правда не в ОЛ, тут все чуточку шатко :) но в целом это и есть отличие блоков от функций. и вот эти принципы нужно донести человеку, с указанием нюансов ОЛ. Тогда он сможет разобраться с любым ПО.
хорошо быть дебилом, ни какой ответственности, про функцию ни кто не упоминал, но нужно "топить" за неё что она отличается от других элементов
Вот это функциональный блок
Вложение 87643
А это уже макрос
Вложение 87644
Добрый день.
Можно ли как-то получить значение оставшегося времени из Blink? Хоть в самом ОЛ, хоть в SYS.BLINK в ST, любой вариант подойдет. Панель ИПП120.
Только свой Blink нарисовать
.Код:function_block Blink
var_input
I : bool;
Tl, Th : udint;
end_var
var_output
Q : bool;
T : udint;
end_var
var
stamp : udint := 0;
end_var
T := time_to_udint(get_time()) - stamp;
if Not I Or T >= Tl + Th Then
stamp := time_to_udint(get_time()); T := 0;
end_if
Q := T >= Tl; T := Tl + Th - T;
end_function_block
Вложение 87653
Спасибо, использую!
melky Так он не про то спрашивал.
Мне это всё анекдот напоминает когда студент ответы на один билет выучил, про блох, а ему попался билет про рыб, вот он начинает: если бы у рыб была бы шерсть, у них завелись бы блохи и давай всё про блох толкать!
хороший анекдот :) у нас на проекте сейчас тоже анекдот, как в 9 МВт запихнуть 12 :), соответственно все мозги там....