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

Тема: Проблема с чтением данных из приборов учета ИРВИС. ПЛК160 МО2

  1. #1

    Question Проблема с чтением данных из приборов учета ИРВИС. ПЛК160 МО2

    Здравствуйте! Столкнулись с проблемой чтения данных на ПЛК160 [М02]. К контроллеру посредством RS-485 подключен счетчик газа ИРВИС-PC4-УЛЬТРА. Все данные читаются хорошо, за исключением Объема газа (на данный момент 7-мизначное число). Регистр в ИРВИСЕ-139, тип данных uint(dword), учитывая сдвиг, считываю 140 регистр. Считывал через modbus(master) при помощи 32bit input module (приложенный скриншот). Первые 2 цифры считывает верно, а следующие скачут между случайными значениями, то больше, то меньше. Перебрал все варианты. Все остальные данные (включая данные Float) читаются корректно. Есть серьезные подозрения на неправильный порядок считывания байтов в модуле 32bit input module. В ИРВИСЕ данный регистр является типом Uint32, а байты передаются в порядке 1-0-3-2. Подскажите, как поменять порядок байтов CodeSYS 2.3 или все-таки проблема в чем-то другом?

    UPD: Проблему решил не совсем стандартным способом. Считал оба регистра 16 битным типом данных WORD и сложил побайтово в один DWORD. Делал при помощи библиотеки SysLibMem
    Изображения Изображения
    Последний раз редактировалось Felicio; 22.04.2023 в 08:59.

  2. #2

    По умолчанию

    dword - это не uint. а long или ulong. Так и надо 2-мя регистрами считывать по слову. Есть 4 типа преобразования в long:

    10000 x low register + high register
    65536 x low register + high register
    10000 x high register + low register
    65536 x high register + low register

  3. #3

    По умолчанию

    Цитата Сообщение от Felicio Посмотреть сообщение
    Здравствуйте! Столкнулись с проблемой чтения данных на ПЛК160 [М02]. К контроллеру посредством RS-485 подключен счетчик газа ИРВИС-PC4-УЛЬТРА. Все данные читаются хорошо, за исключением Объема газа (на данный момент 7-мизначное число). Регистр в ИРВИСЕ-139, тип данных uint(dword), учитывая сдвиг, считываю 140 регистр. Считывал через modbus(master) при помощи 32bit input module (приложенный скриншот). Первые 2 цифры считывает верно, а следующие скачут между случайными значениями, то больше, то меньше. Перебрал все варианты. Все остальные данные (включая данные Float) читаются корректно. Есть серьезные подозрения на неправильный порядок считывания байтов в модуле 32bit input module. В ИРВИСЕ данный регистр является типом Uint32, а байты передаются в порядке 1-0-3-2. Подскажите, как поменять порядок байтов CodeSYS 2.3 или все-таки проблема в чем-то другом?

    UPD: Проблему решил не совсем стандартным способом. Считал оба регистра 16 битным типом данных WORD и сложил побайтово в один DWORD. Делал при помощи библиотеки SysLibMem
    Для начала попробуйте поставить в UMD (Универсал модбайс девайс), последнюю настройку Native (переставить регистры)
    А вообще переставить байты (регистры) проще всего с помощью указателей ( работает и на Float), можно и биб-кой.
    В целочисленных можно и проще, с помощью SHR, SHL.
    Uint32=UDINT=DWORD
    Последний раз редактировалось kondor3000; 22.04.2023 в 10:42.

Похожие темы

  1. Опрос приборов учета с помощью модема ПМ01
    от Евгений Сергеевич в разделе Сетевые технологии
    Ответов: 23
    Последнее сообщение: 14.12.2023, 16:16
  2. Опрос приборов учета по ТСР без УСПД
    от Сергей Сисейкин в разделе Телемеханика ЛАЙТ
    Ответов: 7
    Последнее сообщение: 27.07.2023, 07:40
  3. Опрос приборов учета
    от Vitamin в разделе Телемеханика ЛАЙТ
    Ответов: 10
    Последнее сообщение: 13.02.2017, 10:21
  4. проблема получения данных с приборов
    от ольга в разделе ПЛК1хх
    Ответов: 0
    Последнее сообщение: 01.10.2009, 08:00
  5. проблема получения данных с приборов
    от ольга в разделе ПЛК1хх
    Ответов: 0
    Последнее сообщение: 01.10.2009, 07:51

Ваши права

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