.. _misc-functions: ************** Прочие функции ************** Прочие встроенные функции, не вошедшие в другие категории. .. _sizeof-function: SIZEOF — Размер данных ====================== Возвращает количество байт, занимаемых переменной или типом данных. **Синтаксис:** .. code-table:: size := SIZEOF(variable); **Параметры:** * ``variable``: переменная любого типа. Имя типа использовать не допускается. **Возвращаемое значение:** * ``INT`` или ``DINT``: количество байт **Примеры:** .. code-table:: VAR size_bool : BOOL; int_var : INT; dint_var : DINT; real_var : REAL; size_int : INT; size_dint : INT; size_real : INT; END_VAR size_int := SIZEOF(int_var); // size_int = 2 (для INT) size_dint := SIZEOF(dint_var); // size_dint = 4 (для DINT) size_real := SIZEOF(real_var); // size_real = 4 (для REAL) size_bool := SIZEOF(size_bool); // size_bool = 1 (для BOOL) .. _sel-function: SEL — Мультиплексор =================== Двухвходовой мультиплексор: возвращает один из двух входных сигналов в зависимости от управляющего сигнала. **Синтаксис:** .. code-table:: output := SEL(G, in0, in1); **Параметры:** * ``G``: управляющий сигнал типа ``BOOL`` * ``in0``: значение типа ``T``, возвращаемое при ``G = FALSE`` * ``in1``: значение типа ``T``, возвращаемое при ``G = TRUE`` **Возвращаемое значение:** * Тип ``T`` (тип параметров ``in0`` и ``in1``) **Примеры:** .. code-table:: VAR select : BOOL := FALSE; value1 : INT := 10; value2 : INT := 20; output : INT; END_VAR output := SEL(select, value1, value2); // output = 10 (value1) select := TRUE; output := SEL(select, value1, value2); // output = 20 (value2) **Практический пример:** .. code-table:: VAR auto_mode : BOOL := TRUE; manual_value : INT := 50; auto_value : INT := 100; output_value : INT; END_VAR // Выбор значения в зависимости от режима output_value := SEL(auto_mode, manual_value, auto_value); // Если auto_mode = FALSE → output_value = 50 // Если auto_mode = TRUE → output_value = 100 .. note:: * ``SIZEOF`` может использоваться для выделения памяти или контроля размеров структур данных. * ``SEL`` аналогичен тернарному оператору в других языках программирования. * Типы ``in0`` и ``in1`` должны быть совместимыми. .. seealso:: * :doc:`data_types` - для информации о типах данных. * :doc:`operators` - для информации об условных операторах.