//**Формулы (Expressions)**// Блок формул является специфичным и содержит всего один параметр , арифметическую формулу, которая может быть как простой, так и сложной. В зависимости от формулы блок имеет разное кол-во входов. Графическое изображение блока будет менять свой размер, что обусловлено величиной формулы и/или количеством входов. Блок формул имеет только один выходной сигнал. Тип блока формул зависит от типа сигнала на выходе, который может быть Дробным, Целым или Дискретным. Таким образом, в таблице представлены три возможных типа данного блока: |XPB |Блок формул. Дискретный выход.| |XPI |Блок формул. Целый выход. | |XPR |Блок формул. Аналоговый выход. | //**Операнды**// В формулах могут использоваться следующие операнды (объекты действия): **Входные переменные** Входящие переменные, обозначенные в формулах заглавными буквами (**A, B, C, ...**) относятся к аналоговым входам, в то время как строчные буквы (**a, b, c, ...**) относятся к дискретным. В одной и той же формуле запрещается использование одной и той же буквы в качестве прописной и строчной, например , "A" и "a". Входные переменные приводятся с левой стороны блока формул в алфавитном порядке. **Числовые константы** Целая часть константы может вводиться со знаками + или -. За целой частью может следовать точка (.), отделяющая целую часть от десятичной дроби . Также может присутствовать часть показательной функции, вводимая буквами **e** или **E**, **** за которыми следует целое двузначное число. //**Операторы**// В блоках формул операнды сочетаются с операторами. Описание последних приведено ниже, в порядке старшинства. **Единичные операторы** - , ! изменение знака, логическое отрицание **Бинарные операторы** *, /, % умножение, деление и модуль + , - сложение, вычитание << , >> сдвиг влево, сдвиг вправо < , > меньше, больше <= , >= меньше/равно, больше/равно = , != равно, не равно & логическая "И"-функция (побитовая) %%^%% логическое отрицание или ХOR-функция (побитовая) %%|%% логическая "ИЛИ"-функция (побитовая) **Троичные операторы** ? : выражение "ЕСЛИ-ТО-ИНАЧЕ". "a ? b : c" означает "если a то b иначе c". **Арифметические функции** x%%**%%y x в степени y LN (x) Натуральный логарифм LOG (x) десятичный логарифм (по основанию 10) EXP (x) Экспонента e в степени x COS (x) Косинус x (радиан), для всех x. SIN (x) Синус x (радиан), для всех x. TAN (x) Тангнс x (radians), для всех x. ACOS (x) Арккосинус x, где -1 < x < 1, результат между 0 и p/2 радиан. ASIN (x) Арксинус x, где -1 < x < 1, результат между -p/2 и p/2 радиан. ATAN (x) Арктангенс x, для всех x, результат между -p/2 и p/2 радиан. SQRT (x) Квадратный корень из x ABS (x) Абсолютное значение x INT(x) Перевод в целое число (усечение) В формулах могут использоваться круглые скобки для обозначения порядка вычисления, который отличается от порядка расположения операторов по старшинству. Три типа переменных могут без проблем сочетаться с оператором, поскольку преобразования необходимых типов выполняются автоматически, согласно описываемым ниже правилам: * Для выполнения операций +, -, * и / все значения преобразуются в Дробные. * Для выполнения операций %, <<, >>, &, ^ и | все значения преобразуются в целые (Дробные значения округляются). * Для выполнения операции ! Дробные или Целые значения преобразуются в Дискретные согласно следующему правилу: если значение равно нулю, то оно преобразуется в ноль. Если значение не равно нулю, то оно преобразуется в то значение, которое предшествовало операции логического отрицания. "Истинная" побитовая операция отрицания целого числа A может быть осуществлена путем A ^ (-1), т.е. A XOR (-1). * Операции >, <, >=, <=, =, != преобразуют операнды в Дробные значения, выполняют сравнение и возвращают Дискретный результат. //**Выход**// Блок формул может иметь следующие типы выходного сигнала **XPB Block** //**Дискретный**// выход. //****// Если результат равен нулю, //****// сигнал на выходе //****// блока будет равен нулю. Если результат не равен нулю, сигнал на выходе блока будет равен единице. **XPI Block** Результат преобразован в //**целое**// число.. **XPR Block** Сигнал на выходе имеет //**Дробное**// значение, полученное в результате вычислений по формуле.