Страница 2 из 2 ПерваяПервая 12
Показано с 11 по 15 из 15

Тема: Как получить переменную int64 со сканера штрих-кода ?

  1. #11

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    Не готов поверить, что у RealLab нет поддержки 64-битных целых.
    Я проверил. Поддержки нету. Работает только до UDINT (до 32 бит). Это скрины с их "камня".

    Объявлено было правильно. Я перепроверил. Было именно ULINT.

    wtf2.png

    (Впрочем, может дело решается подключением какой-либо библиотеки... ХЗ...)

    [Дополнено: НА САМОМ ДЕЛЕ ПОДДЕРЖКА 64бит ЕСТЬ! Листайте тему дальше вниз.]
    Последний раз редактировалось ВладОвен; 26.04.2022 в 17:20. Причина: запутался...

  2. #12
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,147

    По умолчанию

    Цитата Сообщение от ВладОвен Посмотреть сообщение
    Я проверил. Поддержки нету. Работает только до UDINT (до 32 бит). Это скрины с их "камня".

    Объявлено было правильно. Я перепроверил. Было именно ULINT.

    wtf2.png

    (Впрочем, может дело решается подключением какой-либо библиотеки... ХЗ...)
    Дело все же не в RealLab, в специфике компилятора CODESYS.

    Надо так:

    Код:
    uliY := uiX * ULINT#100000000;
    26-04-2022 16-58-14.png

    Пояснение: uiX - UINT, 100000000 без принудительной типизации - это UDINT (потому что укладывается в его диапазон).
    Компилятор выделяет под результат умножения UDINT (это неочевидно), происходит переполнение и уже "переполненное" значение копируется в ULINT.

  3. #13

    По умолчанию

    Да, вы правы. Я уже это понял.

  4. #14

    По умолчанию

    В общем - теперь заработало.
    С последними подсказками от Евгения, получилось передавать штрих-код в виде числа (не строки). Посмотрим далее на возникающие проблемы.

    Но вот вопрос к знатокам остался.
    Это преобразование (сборку гигантского числа из 4-х регистров mod-bus) можно как-то прописать при объявлении переменных, а не в основном коде PLC_PRG?

    uliKod := ( uiReg4 * ULINT#10000 0000 0000 ) + ( uiReg3 * ULINT# 10000 0000 ) + ( uiReg2 * ULINT#10000 ) + ( uiReg1 * ULINT#1 ) ;


    Тут вопрос стратегический: при написании логики, математики, алгоритмов мы должны весь код закладывать в PLC_PRG или же как-то разбивать по частям / дробить / создавать множество подобных клонов PLC_PRG ?


    wtf3.jpg

  5. #15

    По умолчанию

    Цитата Сообщение от ВладОвен Посмотреть сообщение
    Тут вопрос стратегический: при написании логики, математики, алгоритмов мы должны весь код закладывать в PLC_PRG или же как-то разбивать по частям / дробить / создавать множество подобных клонов PLC_PRG ?
    Для этого существуют ФБ (функц. блоки), функции и программы, вы можете дробить основную программу на блоки ( программы, функции) и вызывать их из PLC_PRG.
    В данном случае лучше было создать ФБ.
    Последний раз редактировалось kondor3000; 27.04.2022 в 09:21.

Страница 2 из 2 ПерваяПервая 12

Похожие темы

  1. Штрих коды как грамотнее все сделать?
    от жекон в разделе Трёп (Курилка)
    Ответов: 4
    Последнее сообщение: 12.10.2021, 14:31
  2. Ответов: 21
    Последнее сообщение: 24.03.2020, 18:29
  3. Ответов: 18
    Последнее сообщение: 27.02.2018, 20:09
  4. Ввод в MasterSCADA со сканера штрих-кода
    от Terminat в разделе Master SCADA 3
    Ответов: 5
    Последнее сообщение: 14.11.2014, 16:35
  5. подключение сканера штрихкода
    от Александр N в разделе Подбор Оборудования
    Ответов: 2
    Последнее сообщение: 02.11.2014, 13:22

Метки этой темы

Ваши права

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