Страница 20 из 62 ПерваяПервая ... 10181920212230 ... ПоследняяПоследняя
Показано с 191 по 200 из 689

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

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

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

    По умолчанию

    ФБ для конвертации BCD формата панелей, HEX в DEC и обратно DEC в HEX, пришлось переделать из функций, для приёма времени из панели ИП320.
    Время там в шестнадцатиричной системе, да ещё и совмещено год с месяцем, день с часами, минуты с секундами.
    В панелях СП307, СП310 время тоже передаётся в BCD формате, только отдельными регистрами.
    Чтобы их разделить функции не достаточно. На скрине 2308 (год 23, месяц 08) принимается как 8968 1 Конвертация HEX_DEC.jpg
    Код:
    function_block HEX_DEC  // Конвертация из  Шестнадцатиричной в  Десятичную  
    var_input
       x: udint;
    end_var
    var_output //объявление выходных переменных
       Q,Q1,Q2 : udint; 
    end_var
        Q := x/4096 MOD 16*1000+x/256 MOD 16*100+x/16 MOD 16*10+x MOD 16; 
        Q1:=Q/100; Q2:=Q-Q1*100;
    end_function_block
    Код:
    function_block DEC_HEX  //   Конвертация из Десятичной  в Шестнадцатиричную 
    var_input
        x: udint;
    end_va
    var_output //объявление выходных переменных
       Q,Q1,Q2 : udint; 
    end_var
    var
        a,b,c,d: udint;
    end_var
        a:=x/1000; b:=(x-a*1000)/100; c:=(x-a*1000-b*100)/10; d:=x-a*1000-b*100-c*10;
        Q := a*4096 + b*256+c*16+d;   Q1:=Q/100; Q2:=Q-Q1*100;
    end_function_block
    Последний раз редактировалось kondor3000; 10.02.2025 в 07:49.

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

    По умолчанию

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

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

    По умолчанию

    kondor3000 мы думаем про один и тот же BCD ? в BCD каждая тетрада не может быть больше 9

  4. #4
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    3,069

    По умолчанию

    Имхо, перепутаны названия. То что здесь названо DEC_HEX, это не "из Десятичной в Шестадцатиричную", а наоборот.
    И вторая аналогично))

  5. #5

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    Имхо, перепутаны названия. То что здесь названо DEC_HEX, это не "из Десятичной в Шестадцатиричную", а наоборот.
    И вторая аналогично))
    Да , названия перепутал, исправил названия и скрин))

    Цитата Сообщение от melky Посмотреть сообщение
    мы думаем про один и тот же BCD ? в BCD каждая тетрада не может быть больше 9
    Это BCD, который применяют в панелях, в ИП320 и СП31хх, там нет букв, как в шестнадцатиричной системе, только числа.
    На СП310 например число 89, это 59 секунд, но там всё по отдельности, год, месяц, число и т. д., поэтому ФБ универсальный, для любой панели.
    Последний раз редактировалось kondor3000; 22.08.2023 в 12:17.

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

    По умолчанию

    kondor3000 странное BCD, обычно число 89 в HEX выглядит так же 0х89 или наоборот. И букв там действительно нет. только цифры в тетрадах байта.

    Или вы ошиблись с первым числом, написав его как 89 вместо 59 ????

  7. #7

    По умолчанию

    Цитата Сообщение от melky Посмотреть сообщение
    kondor3000 странное BCD, обычно число 89 в HEX выглядит так же 0х89 или наоборот. И букв там действительно нет. только цифры в тетрадах байта.

    Или вы ошиблись с первым числом, написав его как 89 вместо 59 ????
    Вот скрин работы ПЛК слейва с панелью ИП320 мастер , то же число 8968 1 Скрин с ПЛК.jpg
    и число больше 9 не может быть, то есть 10 - это в шеснадцатиричной системе как раз А,
    а число 89 - HEX, как раз 59 - DEC, это я прошёл ещё несколько лет назад, работая с СП310.
    Последний раз редактировалось kondor3000; 22.08.2023 в 14:51.

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

    По умолчанию

    kondor3000 извиняюсь, забыл что ОЛ не показывает в HEX переменные а только в виде десятичный значений

    На скрине 2308 (год 23, месяц 08) принимается как 8968
    а 8968 это и есть HEX 2308, туплю...

  9. #9

    По умолчанию

    Извиняюсь, что не совсем в тему!
    Вопрос, собственно в универсальном счетчике, а именно: его выход, как я понял, 16ти битный. Как можно решить вопрос, если мне 65535 недостаточно? Есть ли простое решение?

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

    По умолчанию

    ЭдМахалыч если вы про ОЛ, то там все переменные 32-х битные. Просто нужно сделать свой счетчик, а не использовать штатный. Их вроде было много...
    Простое решение ADD +-1 после R-Trig. Используя SEL например для аккумулирования. А, надо плюсовать или отнимать, так как переменные целочисленные беззнаковые.

    Для передачи по сети, надо разделять значение счетчика на два регистра.

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

Похожие темы

  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

Ваши права

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