Деление

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

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

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

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

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

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

Порядок входов: «Делимое», «Делитель».

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

значение выхода равно частному от деления значений первого («Делимое») и вто­рого («Делитель») входа;

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

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

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

BLOCK1 = DIV(5; 2,5)

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

BLOCK2 = DIV(1; 0)

// BLOCK2 имеет недостоверное значение.

BLOCK3 = DIV(AI1.1; DI1.1)

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

BLOCK4 = DIV(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

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

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

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