Показано с 1 по 8 из 8

Тема: Master OPC с ПЛК63 преобразование DWord в Uint32

  1. #1

    По умолчанию Master OPC с ПЛК63 преобразование DWord в Uint32

    Добрый день. Помогите пожалуйста отобразить корректно переменную контроллера в Master OPC.
    Имеется переменная в контроллере DWORD (-30,70). На стороне сервера считывается как:
    4685839 (при перестановке старшим байтом вперед);
    2148466759 (при перестановке старшим словом вперед).
    Изображения Изображения

  2. #2

    По умолчанию

    Добрый день!
    Uint32 (Dword) - целое беззнаковое число (диапазон 0..4294967295). Если нужно передать -30,70 используйте Float.
    Отличие Uint от Word можно почитать здесь
    Последний раз редактировалось Мастеренко Иван; 20.03.2019 в 16:54.
    Инженер по продуктам «ПЛК и модули»
    e-mail: i.masterenko@owen.ru | skype: i.masterenko_owen

  3. #3

    По умолчанию

    Цитата Сообщение от Мастеренко Иван Посмотреть сообщение
    Добрый день!
    Uint32 (Dword) - целое беззнаковое число (диапазон 0..4294967295). Если нужно передать -30,70 используйте Float.
    Отличие Uint от Word можно почитать здесь
    В проекте уже задействована переменная dword, где она по умолчанию задана как -30;95, ее можно поменять непосредственно на контроллере. Вопрос в том, как корректно отобразить ее на opc.
    Изображения Изображения

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

    По умолчанию

    exemption 82-й регистр это переменная Real (с этого регистра начинаются real переменные в конфигурации ПЛК), обзовите его как хотите, а прочитать и изменить по сети его можно как float, последовательность байт 2301

    Да, в служебной области памяти, где возможен групповой запрос адреса регистров для этой переменной (82-83 регистры) будет 4176-4177
    Последний раз редактировалось melky; 21.03.2019 в 09:25.

  5. #5

    По умолчанию

    Цитата Сообщение от melky Посмотреть сообщение
    exemption 82-й регистр это переменная Real (с этого регистра начинаются real переменные в конфигурации ПЛК), обзовите его как хотите, а прочитать и изменить по сети его можно как float, последовательность байт 2301

    Да, в служебной области памяти, где возможен групповой запрос адреса регистров для этой переменной (82-83 регистры) будет 4176-4177
    Правильно ли я понимаю что мне необходимо указать тип данных как на сервере, так и на устройстве float? В таком случае, считывая 82 регистр, я получаю значение 0 (перестановка старшим байтом вперед), что не соответствует действительности.

    PS Исходная переменная является точкой графика, нашел в коде программы следующие строки:

    " (*Старшие 2 байта - Y, младшие 2 - X*)
    (*У отрицательных чисел выставлен старший бит, т.е. !не-инвертированный код!*)
    Y := DWORD_TO_INT(Pnt / 16#10000);
    IF Y < 0 THEN
    Y := - DINT_TO_INT(16#8000 + Y);
    END_IF;
    X := DWORD_TO_INT(Pnt AND 16#FFFF);
    IF X < 0 THEN
    X := - DINT_TO_INT(16#8000 + X);
    END_IF; "

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

    По умолчанию

    блин, на не надо ничего менять на устройстве, в самом регистре там давно real (float), вам же просто его читать. переставлять вроде только регистры необходимо

    з.ы. вроде фиолетово, что у вас там в коде. У ПЛК63/73 регистры под разные типы данных прописаны в документации вроде. с 82-го идут float пользовательские.

    Ну да, судя по скриншоту ОРС сервера указать и для устройства и для сервера float, стартовый регистр 4176 и потом поменять регистры.

    Почему на скриншоте 8 байт переставляете при переменной Uint32 ?
    поставьте float и 2301 последовательность байт
    Последний раз редактировалось melky; 21.03.2019 в 13:27.

  7. #7

    По умолчанию

    Цитата Сообщение от melky Посмотреть сообщение
    Почему на скриншоте 8 байт переставляете при переменной Uint32 ?
    поставьте float и 2301 последовательность байт
    OPC, при при выключенной перестановке байтов устройства, предлагает 8 байтов для перестановки.
    Прикладываю 3 скриншота, в окне я могу самостоятельно задать порядок 8-ми байтов или выбрать представленные варианты.
    Результат по всем скриншотам, считанное значение =0
    Изображения Изображения
    • Тип файла: jpg zxc.JPG (94.1 Кб, Просмотров: 7)
    • Тип файла: jpg qwe.JPG (88.1 Кб, Просмотров: 3)
    • Тип файла: jpg asd.JPG (84.3 Кб, Просмотров: 4)

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

    По умолчанию

    Вот тут не подскажу, с их ОРС не работаю. Удивлен, что при наличии 4-х байтной переменной просит переставлять 8 байт... типа напуркуа ?

Похожие темы

  1. ПЛК63 Modbus Master
    от ASo в разделе ПЛК63/73
    Ответов: 81
    Последнее сообщение: 01.07.2018, 12:44
  2. Вопрос DWORD
    от a_gricaj в разделе ПЛК1хх
    Ответов: 10
    Последнее сообщение: 05.02.2017, 11:22
  3. DWORD + DWORD
    от Технос в разделе Панели оператора (HMI)
    Ответов: 19
    Последнее сообщение: 24.08.2016, 11:24
  4. ПЛК 63 - DWORD в конфигурации
    от melky в разделе ПЛК63/73
    Ответов: 3
    Последнее сообщение: 13.10.2015, 18:12
  5. ПЛК63 Master modbus + МДВВ
    от Алексей Дмитриев в разделе ПЛК63/73
    Ответов: 3
    Последнее сообщение: 21.10.2010, 14:08

Ваши права

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