Добрый день! Не могу понять, что происходит с макросом INT MAX10? Всегда макрос работал, а теперь что? Или у меня с симуляцией что-то не так?
Добрый день! Не могу понять, что происходит с макросом INT MAX10? Всегда макрос работал, а теперь что? Или у меня с симуляцией что-то не так?
Изначальный макрос, насколько я понимаю и как утверждает ТС, выполнен правильно(как и было задумано), просто ТС не понимает как он работает(алгоритм работы). Если это чужой макрос можно обратится к автору или тому кто осведомлён по этому вопросу. Всё равно не до конца понятно, как можно было использовать макрос, в алгоритме работы которого не до конца разобрался, короче, надо начать сначала, надеюсь суть понятна?!
И по решению конкретной задачи хотелось спросить: диапазон сравниваемых значений какой, он более значения "268435455"(28 бит) или нет?
Это я к тому, чтобы можно было метку(4 бита) добавить в значения на каждом входе, затем отсортировать в порядке возрастания(убывания) значений, если не ошибаюсь, "капзап" предлагал макрос сортировки и останется посмотреть метку у наибольшего(наименьшего) значения, в метке содержится номер входа на который подано это значение, всё! Это я один из вариантов решения предлагаю, но для окончательного решения нужны уточнения от ТС.
Вот совсем другой, принципиальный(без учёта модификации ПР) вариант решения:
MAX_1.PNG
MAX_1.owl
Последний раз редактировалось Сергей0308; 23.08.2022 в 05:43.
Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
справиться с проблемами, либо это не твои проблемы.
Такие вещи наверное проще теперь на ST сделать (есть конечно проблема с тем, что это будет функция и выход только один - но можно также выделить несколько бит в выходном значении под номер входа)
Вы шутите? Макрос выгружен из менеджера компонентов и он не находит максимальное int
Мой чем не устраивает, Вам шашечки или ехать?
Вот даже макрос состряпал, находит большее из 16 и номер входа показывает, вроде даже превосходит ваши хотелки?!
Так он ещё и на порядок проще вашего "монстра", можете же Вы находить худшее из худшего к тому же и неработающее!
Короче, проверяйте:
MAX_2.PNG
MAX_2.owl
Совсем забыл, в отличии от вашего, мой макрос можно и легко расширить, до пределов диапазона, практически ничего не меняя: расширить мультиплексор на входе(поставить 2-3 экземпляра имеющегося макроса, короче, сколько понадобится) и изменить пару значений, в настройках счётчика и константе, всё!
Если два и более максимальных значения, будет показывать номер входа с меньшим порядковым номером!
Последний раз редактировалось Сергей0308; 24.08.2022 в 13:00.
Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
справиться с проблемами, либо это не твои проблемы.
MAX10 в базе существует в двух версиях
собственно MAX10.tpl
и MAX10_old.tpl
MAX10_old - работает, а в новом MAX10 что-то пошло не так!
Мой канал на ютубе
https://www.youtube.com/c/ПетрАртюков
Мой канал на РУТУБЕ
https://rutube.ru/channel/23641433/
Библиотека ГМ для СП300
https://disk.yandex.com/d/gHLMhLi8x1_HBg
Функция:
function Max: udint;
var_input
IN1,IN2,IN3,IN4,IN5,IN6,IN7,IN8 : udint;
end_var
var
num : udint := 1;
end_var
Max := IN1;
num := 1;
if IN2 > Max then Max := IN2; num := 2; end_if;
if IN3 > Max then Max := IN3; num := 3; end_if;
if IN4 > Max then Max := IN4; num := 4; end_if;
if IN5 > Max then Max := IN5; num := 5; end_if;
if IN6 > Max then Max := IN6; num := 6; end_if;
if IN7 > Max then Max := IN7; num := 7; end_if;
if IN8 > Max then Max := IN8; num := 8; end_if;
Max.28 := num.0;
Max.29 := num.1;
Max.30 := num.2;
Max.31 := num.3;
end_function