
Сообщение от
Сергей0308
Если Вы говорите, что на ST это просто, сделайте так, что бы при наличии нескольких входов с максимальными значениями их номера выводились одной строкой начиная с самого маленького порядкового номера входа, например, если все входа имеют одинаковое значение, строка будет так выглядеть: "12345678", тем более для восьми значений(одноразрядных) хватает диапазона типа данных(DINT), понятно объяснил?
Примерно как-то так:
...
Я к тому, что Вы сами это сказали!
Могу и в качестве разделителя нолик поставить:
...
Только тогда меньшее количество входов можно будет записать до переполнения.
Я говорил про конкретную задачу, что её проще на 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