# Максимальное значение | Типовые задачи Предыдущий Следующий

## Общие сведения Наименование: MAX. Тип выхода: вещественный. Количество входов: от 1 до 32. ## Примечания по входам Порядок входов: «Вещественное число 1», «Вещественное число 2», ... . ## Функционирование •значение выхода равно максимуму из значений входов; •входы с недостоверным значением, а также с неинициализированным состоянием исключаются из логики работы; •выход имеет неинициализированное состояние, если все входы имеют неинициализированное состояние; •значение выхода недостоверно, если: •все входы имеют недостоверные значения; •хотя бы один вход имеет недостоверное значение, а остальные входы имеют неиницилизированное состояние. ## Примеры использования BLOCK1 = MAX(2; -3; 7) // Использование в аргументах констант; результат равен 7. BLOCK2 = MAX(AI1.1; AI1.2; AI1.3) // Использование в аргументах каналов. BLOCK3 = MAX(BLOCK1; BLOCK2; BLOCK3) // Использование в аргументах значений других алгоблоков. // ======================================= // Реализация счетчика моточасов // DI1.1 - равен 1, когда агрегат включен (работает) // AO1.1 - счетчик моточасов // TBL1 - таблица из одной ячейки, хранит значение счетчика B00 = OR(DI1.1; 0) // Шунтирование недостоверных значений DI1.1 нулём B10 = DIV(B00; 36000) // пересчет времени работы агрегата в часы B20 = TBL_SEL(TBL1; 0) B30 = MAX(AO1.1; B20) // восстанавливаем значение, если было отключение питания B40 = ADD(B30; B10) // увеличиваем значение счетчика B50 = TBL_WRITE(TBL1; 0; B40; 1) // записываем значение в первую ячейку таблицы TBL1 // раз в секунду (9 из 10 тактов записи // будут игнорироваться) B60 = RESULT(AO1.1; B40; 0) // записываем значение в канал AO1.1 Файл для импорта: motor.help // ======================================= // Маскировка невалидного состояния аналогового канала // при накоплении значения // AI1.1 - мгновенный расход, т/ч // AO1.1 - накопленный расход, т // DI1.1 - сброс накопленного значения B10 = MAX(AI1.1; 0) B20 = DIV(B10; 36000) B30 = ADD(AO1.1; B20) B31 = OR(DI1.1; 0) B35 = FRN(B31; 1) B40 = MUL(~B35; B30) B50 = RESULT(AO1.1; B40; 0) // Аналогичная формула в упрощенной логике: // (1 - frn(or(di1.1; 0); 1)) * (ao1.1 + max(0; ai1.1) / 36000) Файл для импорта: invalid.help