Максимальное значение

Типовые задачи  Предыдущий  Следующий

Общие сведения

Наименование: 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_fbd

Файл для импорта: 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_fbd

Файл для импорта: invalid.help