Сумма

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

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

Наименование: ADD.

Тип выхода: вещественный.

Количество входов: от 1 до 32.

Примечания по входам

Порядок входов: «Слагаемое 1», «Слагаемое 2», ... .

Функционирование

значение выхода равно сумме значений всех входов;

выход имеет неинициализированное состояние, если хотя бы один из входов имеет неинициализированное состояние;

значение выхода недостоверно, если хотя бы один из входов имеет недостоверное значение (даже если другой вход имеет неинициализированное состояние).

Примеры использования

BLOCK1 = ADD(0; 1; 2,6)

// Использование в аргументах констант; результат равен 3,6.

BLOCK2 = ADD(AI1.1; DI1.1; AO1.1; DO1.1)

// Использование в аргументах каналов.

BLOCK3 = ADD(BLOCK4; BLOCK2)

// Использование в аргументах значений других алгоблоков.

// =======================================

// Реализация периодической функции "Пила"

// (приращение - 0,001; период - 2пи;

// область значений - от 0 до 2пи)

// и построение от нее функции "синус"

// (область значений - от 20 до 70)

B1 = DIV(AO1.1; 6,2815)

B2 = TRC(B1)

B3 = MUL(B2; 6,283)

B4 = ADD(AO1.1; 0,001)

B5 = SUB(B4; B3)

B6 = RESULT(AO1.1; B5; 0)

// Реализация рекурентной формулы 

// AO1.1 := AO1.1 + 0,001 - 6,283 * TRC( AO1.1 / 6.2815 )

B7 = SIN(AO1.1)

B8 = MUL(B7; 25)

B9 = ADD(45; B8)

B10 = RESULT(AO1.2; B9)

// Реализация  формулы AO1.2 := 45 + 25 * SIN( AO1.1 ).

saw_sin_fbd

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

// =======================================

// Реализация счетчика моточасов

// 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