есть переменная VAR1(WORD) со значением "16#2239" . По факту это десятичное значение 2239. Как его вытащить не прибегая к доп. библиотеке с функцией "WORD_TO_HEXSTR", используя только стандартные codesys 2.X ?

Комментарии: 10

  1. Alexander

    Эм... А точно это десятичное значение?

    • Andrey

      Да

      • Alexander

        Странный подход

        • Andrey

          Ну если устройство так выдаёт.

          • Alexander

            Может все же это hex?

            • Andrey

              Двоично-десятичный код (англ. binary-coded decimal), BCD, 8421-BCD — форма записи рациональных чисел, когда каждый десятичный разряд числа записывается в виде его четырёхбитного двоичного кода. Таким образом, каждая тетрада двоично-десятичного числа может принимать значения от 00002 (010) до 10012 (910). Например, десятичное число 31110 будет записано в двоичной системе счисления в двоичном коде как 1 0011 01112, а в двоично-десятичном коде как 0011 0001 0001BCD. Вот код который успешно работает и даёт то что надо на ПЛК где есть библиотека. Это значение напряжения со счётчика Меркурий 200. На Меркурий 230 этого извращения с преобразованием нет, если что. Хочу затащить где такой библиотеки нет. MEMCPY(ADR(Uv_word),ADR(ReceiveBuffer[7]),1); MEMCPY(ADR(Uv_word)+1,ADR(ReceiveBuffer[6]),1); Uv:=STRING_TO_DINT(WORD_TO_HEXSTR(Uv_word,1,FALSE));

              • Alexander

                А в codesys 2. X есть функция BCD_to_Word?

                • Andrey

                  есть BCD_TO_DEC, тестить надо :) Думал может у кого готовое решение есть...

                  • Alexander

                    Ну у меня работает В эмуляторе, но codesys 3.5

                    • Andrey

                      там где 3.5 там проблем с доп библиотекой нет... тут надо ужать по минимуму.. всё, сделал с oscat функцией DWORD_TO_STRH

Не нашли ответ?

Вам также может быть интересно

Обновление 1.6.0 доступно для загрузки! Проделана большая работа. Множество улучшений и исправлений. Вам точно понравится. Новое... Читать далее