Страница 69 из 69 ПерваяПервая ... 1959676869
Показано с 681 по 689 из 689

Тема: Функциональные блоки на языке ST

  1. #681

    По умолчанию

    Добрый день! Подскажите пожалуста, вот на ST выражениеЖ
    if LE_PR AND PUSK OR PUSK_F_RIGT AND NOT L_KONC AND NOT STOP then
    MOTOR :=TRUE;
    PUSK_F_RIGT:=true;

    ELSE
    MOTOR :=false;
    PUSK_F_RIGT:=false;
    end_if;
    А это скрин сииммуляцциии его в лоджике
    bandicam 2025-08-30 10-03-58-419.jpg
    вопрос _почему когда входные переменные:
    LE_PR=1 PUSK=1 и L_KONC=1 выходная переменная MOTOR тоже равна 1 хотя условие and not L_KONC должно запрещать выходной переменной MOTOR true? Наверное я чегото с синтаксисом не так написал?

  2. #682

    По умолчанию

    Ответ получил, вопрос снимаеться с повестки.Спасибо kondor3000.

  3. #683

    По умолчанию

    Цитата Сообщение от дрю Посмотреть сообщение
    Ответ получил, вопрос снимаеться с повестки.Спасибо kondor3000.
    Ответ тут https://owen.ru/forum/showthread.php...l=1#post470734

  4. #684

    По умолчанию

    Доброго времени суток. Подскажите плз - как сделать, чтобы функции и блоки а язык ST в OL можно было разложить по каталогам. А то все сейчас в куче лежат. Не очень удобно

  5. #685

    По умолчанию

    Цитата Сообщение от paos Посмотреть сообщение
    Доброго времени суток. Подскажите плз - как сделать, чтобы функции и блоки а язык ST в OL можно было разложить по каталогам. А то все сейчас в куче лежат. Не очень удобно
    Вставляете в начале функции/ФБ:
    ///<GroupName>Название каталога</GroupName>

    и каталог "Название каталога" появится автоматически с этой функцией/ФБ внутри

  6. #686

    По умолчанию

    Цитата Сообщение от 1exan Посмотреть сообщение
    Вставляете в начале функции/ФБ:
    ///<GroupName>Название каталога</GroupName>

    и каталог "Название каталога" появится автоматически с этой функцией/ФБ внутри
    Спасибо большое

  7. #687

    По умолчанию

    ВСЕМ ПРИВЕТ! устал боротся с собственной безграмотностью, не могу победить код для отправки значиний с плавающей запятой . должно улетать старшим и младшим битом, ругается на intValue AND 65535- не поддерживает UDINT
    FUNCTION_BLOCK fbScalePosition
    VAR_INPUT
    PRO_POS_H : REAL; // Входная позиция (вещественное число)
    END_VAR
    VAR_OUTPUT
    inp_PR0_position_H : UDINT; // Старшие 16 бит результата
    inp_PR0_position_L : UDINT; // Младшие 16 бит результата
    END_VAR
    VAR
    scaledValue : REAL; // Промежуточное масштабированное значение
    intValue : UDINT; // 32-битное беззнаковое целое для результата
    scaledMin : REAL := -10000000.0; // Минимальное значение входного диапазона
    scaledMax : REAL := 10000000.0; // Максимальное значение входного диапазона
    outputMax : REAL := 4294967295.0; // Максимальное значение выходного диапазона (2^32 - 1)
    scaleFactor : REAL; // Коэффициент масштабирования
    END_VAR

    // Тело функционального блока
    scaledValue := PRO_POS_H;

    // Ограничение входного значения диапазоном
    IF scaledValue < scaledMin THEN
    scaledValue := scaledMin;
    ELSIF scaledValue > scaledMax THEN
    scaledValue := scaledMax;
    END_IF;

    // Масштабирование входного значения к диапазону 0...4294967295
    scaleFactor := outputMax / (scaledMax - scaledMin);
    scaledValue := (scaledValue - scaledMin) * scaleFactor;

    // Преобразование в целое число
    intValue := REAL_TO_UDINT(scaledValue);

    // Разделение 32-битного значения на два 16-битных
    inp_PR0_position_H := SHR(intValue, 16); // Старшие 16 бит
    inp_PR0_position_L := intValue AND 65535; // Младшие 16 бит
    END_FUNCTION_BLOCK

  8. #688

    По умолчанию

    Цитата Сообщение от Roossel Посмотреть сообщение
    ВСЕМ ПРИВЕТ! устал боротся с собственной безграмотностью, не могу победить код для отправки значиний с плавающей запятой . должно улетать старшим и младшим битом, ругается на intValue AND 65535- не поддерживает UDINT
    У вас не целое 32 битное, а Float, с ним так не работает.
    Здесь выложены ФБ для сборки и разборки Float на DWORD или 2 WORD.
    Real_TO_UDINT (DWORD)_ 2 WORD https://owen.ru/forum/showthread.php...l=1#post450146

    А вообще перестановка регистров обычно делается в Мастере, в ПР например, это галка Старшим регистром вперёд.
    В панели СП3хх тоже галка есть. В ПЛК1хх это настройка в UMD (Универсал Модбас девайс), настройка Native.

    Есть и более простой способ, например для передачи 1 знака после запятой одним регистром, Float умножают на 10 и конвертируют в целое, передают по сети. После приёма целое сначала конвертируют в Float, а потом делят на 10.
    То есть передаём 12,3 после умножения и конвертации 123, принимаем, конвертируем и делим 123/10 = 12,3
    Для передачи 2 знаков умножаем и делим на 100.
    Последний раз редактировалось kondor3000; 16.11.2025 в 18:27.

  9. #689
    Пользователь
    Регистрация
    11.01.2021
    Адрес
    Самара
    Сообщений
    45

    По умолчанию

    Добрый вечер добрый человек kondor. Огромнейшее тебе спасибо за подсказку. Сделал блоки на ST и все цифры встали на место. Ещё раз огромное спасибо.

Страница 69 из 69 ПерваяПервая ... 1959676869

Похожие темы

  1. ПЛК73 (Функциональные кнопки)
    от necro в разделе ПЛК63/73
    Ответов: 8
    Последнее сообщение: 18.05.2022, 10:03
  2. Функциональные блоки
    от ribamuka в разделе СПК2xx (архив)
    Ответов: 4
    Последнее сообщение: 08.04.2018, 15:01
  3. Функциональные блоки насосов в CoDeSys
    от Алексей Ермолаев в разделе ПЛК1хх
    Ответов: 6
    Последнее сообщение: 28.03.2017, 13:50
  4. Функциональные блоки- где искать?
    от Xops в разделе ПЛК1хх
    Ответов: 16
    Последнее сообщение: 01.03.2016, 11:07
  5. СПК функциональные клавиши
    от Lyohin в разделе Трёп (Курилка)
    Ответов: 0
    Последнее сообщение: 30.03.2015, 15:10

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •