А как надо(в идеале), чтобы на соответствующем выходе по очереди появлялись номера входов с наибольшими значениями, если их более одного?
А как надо(в идеале), чтобы на соответствующем выходе по очереди появлялись номера входов с наибольшими значениями, если их более одного?
Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
справиться с проблемами, либо это не твои проблемы.
Сложновато, можно так вырезать метку(4 старших бита):
Вырезать метку(4 старших бита).PNG
Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
справиться с проблемами, либо это не твои проблемы.
Если Вы говорите, что на ST это просто, сделайте так, что бы при наличии нескольких входов с максимальными значениями их номера выводились одной строкой начиная с самого маленького порядкового номера входа, например, если все входа имеют одинаковое значение, строка будет так выглядеть: "12345678", тем более для восьми значений(одноразрядных) хватает диапазона типа данных(DINT), понятно объяснил?
Примерно как-то так:
MAX_3.PNG
MAX_3_2.PNG
MAX_3_3.PNG
MAX_5.owl
Я к тому, что Вы сами это сказали!
Могу и в качестве разделителя нолик поставить:
MAX_3_4.PNG
MAX_3_5.PNG
Только тогда меньшее количество входов можно будет записать до переполнения.
Вот, немного текущий макрос поправил(были небольшие косяки):
MAX_6.owle
Последний раз редактировалось Сергей0308; 25.12.2022 в 12:40.
Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
справиться с проблемами, либо это не твои проблемы.
Менеджер по продукту | Owen Logic
email: soft@owen.ru
Замечаний и предложений не так много, но работы хватит:
1. Перегруппировать макросы, примеры:
CLOCK_WEEK расположен в Дата и время, а его аналог ClockWeek_ - в Доп. функциях
CycleTime - в разделе Общие, а его аналог TIME CYCLE - Таймеры и счетчики
Так же, например B_SEL я бы перенес из раздела Общие в Дискретные преобразователи
2. Используемый макрос SEL_FLOAT заменить на штатную функцию fSel, а сам макрос можно и убрать из базы
3. В макросах, которые светятся желтым заменить связи на линию задержки
4. Ну и, я бы все макросы температурных датчиков вынес в отдельную группу
Денисов Максим Сергеевич у вас там есть макрос, который с битами работает с 1-ого бита вместо 0-ого. Со слов Ревака Юрия макрос делался для ТРМ1032(33) или около. Вот зачем подобные макросы без проверки попадают в Logic ? я понимаю, что какие-то полезны, но они ведь должны удовлетворять логике работы непосредственно для ОЛ, а не пиленные под какие-то там ТРМы...
Я говорил про конкретную задачу, что её проще на ST сделать
А код для этой виртуальной задачи такой (в одной функции выводится значение, а в другой - счётчик номера входов):
Код:function Max: udint; var_input IN1,IN2,IN3,IN4,IN5,IN6,IN7,IN8 : udint; end_var var Count : udint := 1; end_var Max := IN1; Count := 1; if IN2 > Max then Max := IN2; Count := 2; elsif IN2 = Max then Count:=Count*10+2; end_if; if IN3 > Max then Max := IN3; Count := 3; elsif IN3 = Max then Count:=Count*10+3; end_if; if IN4 > Max then Max := IN4; Count := 4; elsif IN4 = Max then Count:=Count*10+4; end_if; if IN5 > Max then Max := IN5; Count := 5; elsif IN5 = Max then Count:=Count*10+5; end_if; if IN6 > Max then Max := IN6; Count := 6; elsif IN6 = Max then Count:=Count*10+6; end_if; if IN7 > Max then Max := IN7; Count := 7; elsif IN7 = Max then Count:=Count*10+7; end_if; if IN8 > Max then Max := IN8; Count := 8; elsif IN8 = Max then Count:=Count*10+8; end_if; end_function
Вот смотрю эту картинку:
MAX_4.PNG
Мне всё понятно!
А смотрю вашу писанину, мне вообще ничего не понятно, зачем Вы пишите, то что пишите, в смысле, что это проще? Это же не соответствует действительности!
Я всё прекрасно понимаю, что Вы выражаете своё мнение или для Вас проще, тогда это нужно уточнять! Боюсь со мной многие согласятся!
Вот мой вариант с разделителем между номерами входов в виде нолика и не переусердствуете с количеством максимумов, чтобы переменная(тип данных) не переполнялась.
MAX_4.owl
И, вашу нижнюю(на картинке) функцию(с номерами максимумов) не нашёл, Вы, наверно забыли выложить.
Последний раз редактировалось Сергей0308; 27.08.2022 в 00:17.
Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
справиться с проблемами, либо это не твои проблемы.