Страница 61 из 62 ПерваяПервая ... 115159606162 ПоследняяПоследняя
Показано с 601 по 610 из 689

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

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    По умолчанию

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    Здесь реализованы функции побитового AND и XOR, от Валенок остальные аналогично
    https://owen.ru/forum/showthread.php...l=1#post447957
    Вариантов на самом деле полно, каждый делает как ему нравится.
    О, накидали то накидали. Спасибо за оперативность.
    Впрочем странно, почему те, кто реализовал обращение к биту через точку не реализовал побитовые операции из С

  2. #2
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    12,986

    По умолчанию

    Leo29 у вас сравнение двух аналоговых сигналов. А таймер имеет на выходе bool. Так понимаю вы хотите сравнивать по таймеру сигналы а не на каждом цикле?.
    Тогда вам в код ST надо к своему блоку сравнения добавить bool вход EN и написать таким образом, чтобы сравнение происходило по его работе. И уже тогда с таймера на EN заводить выход. Нужно будет постоянное сравнение в цикле программы, просто на EN заведете константу 1 To_Bool

  3. #3

    По умолчанию

    Цитата Сообщение от melky Посмотреть сообщение
    Leo29 у вас сравнение двух аналоговых сигналов. А таймер имеет на выходе bool. Так понимаю вы хотите сравнивать по таймеру сигналы а не на каждом цикле?.
    Тогда вам в код ST надо к своему блоку сравнения добавить bool вход EN и написать таким образом, чтобы сравнение происходило по его работе. И уже тогда с таймера на EN заводить выход. Нужно будет постоянное сравнение в цикле программы, просто на EN заведете константу 1 To_Bool
    Спасибо! Попробую

  4. #4

    По умолчанию

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

  5. #5

    По умолчанию

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

  6. #6

    По умолчанию

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

  7. #7

    По умолчанию

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

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

  8. #8

    По умолчанию

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

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

  9. #9

    По умолчанию

    ВСЕМ ПРИВЕТ! устал боротся с собственной безграмотностью, не могу победить код для отправки значиний с плавающей запятой . должно улетать старшим и младшим битом, ругается на 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

  10. #10

    По умолчанию

    Цитата Сообщение от 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.

Страница 61 из 62 ПерваяПервая ... 115159606162 ПоследняяПоследняя

Похожие темы

  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

Ваши права

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