Математические функции
Расчеты и Алгоритмы
От простого сложения до сложных уравнений — математические функции превращают ваши необработанные данные в полезную информацию для управления процессами.
Что такое математические функции в TIA Portal?
Математические функции в TIA Portal позволяют выполнять арифметические, тригонометрические и логарифмические вычисления с различными типами данных (целые числа, вещественные числа). Они необходимы для масштабирования датчиков, расчета траекторий или ПИД-регулирования.
TIA Portal выделяется инструкцией CALCULATE, которая позволяет записывать сложное выражение (например, (in1 + in2) * in3 / in4) в одном блоке, что улучшает читаемость по сравнению с цепочкой отдельных блоков ADD/MUL.
Базовая арифметика
Фундаментальные операции для обработки данных
CALCULATE — Вычислить
CALCЧто она делает
Позволяет определить произвольное математическое выражение, объединяющее несколько входов (IN1...INn). Вы вводите формулу, и TIA Portal генерирует соответствующие выводы.
Когда использовать
Как только расчет требует более двух шагов. Идеально подходит для расчета расхода, объема или любой сложной физической формулы.
Советы профи
Вы можете использовать такие функции, как ABS, SQRT или SIN, непосредственно в выражении CALCULATE.
Всегда проверяйте выходной тип данных (OUT), чтобы избежать переполнения (Overflow).
В SCL это естественный эквивалент прямого присваивания: out := (in1 + in2) * in3;
ADD / SUB / MUL / DIV
+Что они делают
Стандартные арифметические инструкции: Сложение, Вычитание, Умножение и Деление.
Когда использовать
Для простых и быстрых операций между двумя значениями.
Советы профи
При делении (DIV) всегда используйте проверку |OK| или проверяйте, что делитель не равен нулю, чтобы избежать остановки ПЛК.
Инструкция ADD может принимать более двух входов при нажатии на желтый значок на блоке.
Для целых чисел DIV возвращает целое частное. Используйте MOD для остатка.
MOD — Остаток от деления
MODЧто она делает
Возвращает остаток от целочисленного деления IN1 на IN2.
Когда использовать
Управление кольцевыми буферами (ring buffers), чередование циклов (например, насосы 1 и 2) или преобразование единиц измерения (например, секунды в минуты/секунды).
Советы профи
Очень полезно для запуска действия каждые 'N' циклов.
Доступно только для целочисленных типов данных (Int, DInt и т.д.).
SCL: remainder := value1 MOD value2;
Знак и инкремент
Управление знаком и быстрые унитарные операции
INC / DEC — Инкремент / Декремент
++Что она делает
Прибавляет или вычитает 1 из указанной переменной (типа InOut).
Когда использовать
Простые счетчики деталей, индексы циклов, управление очередями.
Советы профи
Писать быстрее, чем полный блок ADD или SUB.
Следите за типом данных: инкремент типа Int при 32767 приведет к переходу в -32768.
В SCL: i := i + 1; или INC(i);
ABS — Абсолютное значение
ABSЧто она делает
Возвращает положительное значение числа, независимо от того, было ли оно изначально положительным или отрицательным.
Когда использовать
Расчет отклонения между измерением и уставкой, измерение расстояния, расчет ошибки ПИД-регулятора.
Советы профи
Необходимо для расчета абсолютной ошибки (|уставка - измерение|).
Поддерживает целые и вещественные числа.
SCL: positiveVal := ABS(originalVal);
Мин / Макс / Предел
Выбор и ограничение значений
MIN / MAX — Минимум / Максимум
MINЧто она делает
Сравнивает N значений и возвращает наименьшее (MIN) или наибольшее (MAX).
Когда использовать
Выбор самой высокой температуры среди нескольких датчиков, определение минимально допустимой скорости.
Советы профи
Вы можете добавить столько входов, сколько необходимо.
Очень полезно для многосенсорной диагностики.
SCL: peakValue := MAX(val1, val2, val3);
LIMIT — Ограничить
LIMITЧто она делает
Ограничивает (clamp) входное значение (IN) между минимумом (MN) и максимумом (MX).
Когда использовать
Безопасность аналоговых выходов (например, предотвращение открытия клапана более чем на 80%), ограничение уставок пользователя.
Советы профи
Выгодно заменяет комбинацию MIN и MAX.
Если MN > MX, выход зависит от типа ПЛК, но обычно берется MX.
SCL: safeVal := LIMIT(MN:=0.0, IN:=rawVal, MX:=100.0);
Степени и корни
Экспоненциальные и радикальные расчеты
SQRT / SQR / EXPT
SQRTЧто они делают
SQRT (Квадратный корень), SQR (Квадрат), EXPT (Произвольная степень).
Когда использовать
Геометрические расчеты, преобразование нелинейных сигналов, физика жидкостей.
Советы профи
SQRT отрицательного числа дает NaN. Всегда проверяйте вход или используйте ABS.
EXPT потребляет много циклов ПЛК, используйте SQR для простых квадратов.
SCL: area := 3.14 * SQR(radius);
Тригонометрия
Расчет углов и вращений
SIN / COS / TAN / ASIN...
SINЧто они делают
Стандартные тригонометрические расчеты и обратные функции (arcsin, arccos, arctan). Углы всегда в РАДИАНАХ.
Когда использовать
Кинематика роботов, расчеты углового позиционирования, обработка осциллирующих сигналов.
Советы профи
Для перевода градусов в радианы: Радианы = Градусы * (PI / 180).
TAN(PI/2) стремится к бесконечности, следите за входами.
Используйте системные константы для PI для обеспечения точности.
Расширенные функции
Логарифмы и дробные части
LN / EXP / FRAC
LNЧто они делают
LN (Натуральный логарифм), EXP (Экспонента e^x), FRAC (Выделяет десятичную часть).
Когда использовать
Моделирование химических процессов, экспоненциальный рост или разделение единиц (FRAC).
Советы профи
FRAC(12.34) возвращает 0.34. Очень удобно для расчетов точности времени.
EXP — это точная обратная функция LN.
SCL: fraction := FRAC(totalValue);
Сравнение подходов к расчету
LAD против SCL — какой метод выбрать?
| Тип расчета | Рекомендуемый метод | Почему? |
|---|---|---|
| Простое сложение | Блок ADD (LAD) | Наглядно и легко отслеживать |
| Сложная формула | Блок CALCULATE | Компактно и уменьшает количество нетворков |
| Математический алгоритм | Язык SCL | Синтаксис близок к C/Pascal, идеально для формул |
| Тригонометрический расчет | SCL или CALCULATE | Отдельные блоки занимают слишком много места |
| Ограничение сигнала | Блок LIMIT | Стандарт Siemens, очень надежно |
| Сброс индекса | Инструкция INC/DEC | Очень быстро внедрить |
Часто задаваемые вопросы
В чем преимущество CALCULATE перед несколькими блоками ADD/MUL?
CALCULATE значительно сокращает занимаемое место в программе. Вместо 5 нетворков с промежуточными временными переменными вы получаете один блок с читаемой формулой. Его также легче поддерживать, если формула изменится.
Как TIA Portal обрабатывает ошибки расчетов (например, деление на ноль)?
На S7-1200/1500 математическая ошибка не обязательно останавливает ПЛК (зависит от настроек), но результат становится NaN. КРИТИЧЕСКИ важно использовать инструкцию |OK| после ответственного расчета для проверки результата.
В тригонометрических функциях используются градусы или радианы?
Все функции (SIN, COS, TAN и т. д.) используют исключительно РАДИАНЫ. Если ваша HMI выдает градусы, вы должны умножить значение на 0.01745329 (PI/180) перед подачей в блок.
Могу ли я выполнять расчеты 64-битных чисел (LReal)?
Да, S7-1500 нативно поддерживают тип LReal (Long Real) для повышенной точности. Большинство математических функций принимают этот тип.