Операции преобразования
Масштабирование и Типы
Преобразование данных — это мост между физическим миром и цифровым кодом. Освойте масштабирование аналоговых сигналов и трансформацию типов данных.
Что такое операции преобразования в TIA Portal?
Операции преобразования позволяют трансформировать значение из одного типа данных в другой (например, из целого в вещественное) или управлять точностью чисел с плавающей запятой. Они также включают инструменты нормализации и масштабирования, необходимые для обработки аналоговых сигналов.
TIA Portal предлагает современные инструкции, такие как SCALE_X и NORM_X, которые заменяют старые блоки SCALE/UNSCALE систем S7-300, обеспечивая большую гибкость и точность.
Преобразование типов
Трансформация и округление числовых форматов
CONVERT — Преобразовать значение
CONVЧто она делает
Преобразует значение из исходного типа данных в целевой. Поддерживает преобразования между целыми, вещественными числами, символами, временем и строками.
Когда использовать
Подготовка целого числа для сложных расчетов путем перевода в Real или преобразование кода ошибки в String для HMI.
Советы профи
В LAD щелкните по типам данных блока, чтобы выбрать источник и цель.
В SCL: myReal := INT_TO_REAL(myInt);
Опасайтесь потери точности при преобразовании больших типов в короткие.
ROUND / TRUNC
ROUNDЧто они делают
ROUND округляет число с плавающей запятой до ближайшего целого. TRUNC просто отсекает десятичную часть.
Когда использовать
Отображение физического измерения в виде целого числа или преобразование результата Real в индекс массива (Int).
Советы профи
Если десятичная часть ровно .5, ROUND округляет до ближайшего четного целого (стандарт IEC).
TRUNC предпочтительнее, если нужно просто игнорировать десятичные дроби без округления.
Обе принимают Real/LReal и обычно возвращают DInt.
CEIL / FLOOR
CEILЧто они делают
CEIL (Потолок) генерирует большее или равное целое число. FLOOR (Пол) генерирует меньшее или равное целое число.
Когда использовать
Расчет необходимого количества контейнеров (всегда округлять вверх с помощью CEIL).
Советы профи
CEIL(10.1) = 11 ; FLOOR(10.9) = 10.
Важно для алгоритмов логистики.
Полезно для удержания значения в строгих целочисленных границах.
Масштабирование (Scaling)
Обработка аналоговых сигналов
NORM_X — Нормализовать
NORM_XЧто она делает
Трансформирует значение из диапазона [MIN..MAX] в нормализованное значение от 0.0 до 1.0.
Когда использовать
Чтение сырого аналогового входа (например, 0-27648) и перевод его в проценты.
Советы профи
Обычно сразу следует за блоком SCALE_X.
Если вход выходит за границы, выход превысит 0.0 или 1.0.
Убедитесь, что MIN не равно MAX.
SCALE_X — Масштабировать
SCALE_XЧто она делает
Принимает нормализованное значение [0.0..1.0] и проецирует его на физический диапазон (например, 0-100°C).
Когда использовать
Преобразование результата NORM_X в понятную оператору инженерную единицу.
Советы профи
Комбинация NORM_X + SCALE_X — современный стандарт Siemens.
Позволяет легко менять диапазоны датчиков.
Также служит для отправки физических уставок на аналоговые выходы.
Инструкции Legacy
Совместимость с S7-300 (FC105 / FC106)
SCALE / UNSCALE
Что она делает
Старые блоки, выполняющие прямое преобразование за один шаг.
Когда использовать
Обслуживание программ, мигрированных из Step 7 Classic.
Советы профи
SCALE соответствует старому FC105.
Используйте BIPOLAR для отрицательных сигналов (+/- 10В).
Предпочитайте NORM_X/SCALE_X для новых разработок.
Сравнение методов
Выбор правильной инструкции
| Вы хотите... | Рекомендуемая | Пример |
|---|---|---|
| Сменить тип (Int -> Real) | CONVERT | Точный расчет |
| Убрать десятичные | TRUNC | Простое отображение |
| Округлить | ROUND | Статистика |
| Датчик 4-20мА | NORM_X + SCALE_X | Давление 0-16 бар |
| Округление вверх | CEIL | Расчет паллет |
| Код S7-300 | SCALE (FC105) | Миграция |
Часто задаваемые вопросы
Почему использовать NORM_X и SCALE_X вместо одного блока?
Это дает большую гибкость для фильтрации или ограничения нормализованного значения перед масштабированием.
Какое стандартное значение для аналоговых входов Siemens?
Обычно от 0 до 27648 для униполярных сигналов.
Как преобразовать в String?
CONVERT делает это нативно, или используйте VAL_STRG для большего контроля.
Разница между ROUND и TRUNC?
ROUND округляет до ближайшего, TRUNC просто отсекает хвост.