Страница 3 из 4 ПерваяПервая 1234 ПоследняяПоследняя
Показано с 21 по 30 из 39

Тема: Целочисленные в формате u32 и u64

  1. #21

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    Нет никаких проблем пересчитать 2 регистра (из внешнего dint) в real. А они одновременно пришли?
    Одновременно, в ПР есть выбор читать 2 регистра, целое или Float. 4 регистра читать нельзя.

    А вот можно ли прочитать 4 регистра, по 2 шт. за 2 раза, никто так и не написал, потому что в РЭ написано читать 4 регистра разом.
    Последний раз редактировалось kondor3000; 16.10.2024 в 16:21.

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

    По умолчанию

    В РЭ возможно имелось ввиду для достоверности данных, так как меняются. Если там Modbus такой, что не позволяет прочитать эти 4 регистра за два запроса, то это уже претензии к реализации Modbus конкретного прибора.

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

    По умолчанию

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    А вот можно ли прочитать 4 регистра, по 2 шт. за 2 раза, никто так и не написал, потому что в РЭ написано читать 4 регистра разом.
    Прочитать - можно. Только обрабатывать - творчески.

  4. #24

    По умолчанию

    Считать со счетчика, отобразить на экране контроллера. Возможно сделать какие то расчеты, пока до конца не решил.

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

    По умолчанию

    Возможно сделать какие то расчеты
    вот про это лучше забудьте. Там такая каша получится, вычислять все пополам, потом творчески отображать

  6. #26

    По умолчанию

    Друзья, из всего того, что вы тут обсуждали я понял практически ничего.
    Но хотелось бы закончить вопрос практического применения полученных знаний. Касательно этого прибора я для себя понял следущюее.
    1. С переменными в формате u64 я прощаюсь. Получать, выводить и анализировать данные по накопленной энергии не получится ну и ладно.

    2. Большинство переменных находятся в формате u16 или u32 big endian для считывания которых в настройках контроллера Мстера установил две галки "старшим байтом вперед" (она стояла по умолчанию) "старшим регистром вперед" ее я поставил для корректного считывания big endian. Все значения читаются корректно.

    Но вот с некоторыми переменными возникли сложности. в частности с теми которые в формате s32 little endian. Они, при таких настройках читаются не корректно.
    Можете ли вы подсказать, как их правильно считать, преобразовать и использовать. Может макрос уже какой есть.
    Заранее спасибо.

  7. #27

    По умолчанию

    Небольшое уточнение. Я задал вопрос производителям счетчиков, они сначала предложили читать регистры отдельно по одному, но потом сами же предложили этого не делать, опасаясь за то, что в период считывания регистры могут поменяться и значения будут не корректные.
    Потом они предложили сделать следующее:
    " Я бы предложила немного иначе. Чтобы не возникало вышеописанной проблемы при считывании двух регистров разными запросами.
    Я бы считала число из двух регистров, а потом математически поменяла их местами."
    Но моих знаний в этой области не достаточно для совершения подобных манипуляций.

  8. #28

    По умолчанию

    Цитата Сообщение от Dimaes Посмотреть сообщение
    Небольшое уточнение. Я задал вопрос производителям счетчиков, они сначала предложили читать регистры отдельно по одному, но потом сами же предложили этого не делать, опасаясь за то, что в период считывания регистры могут поменяться и значения будут не корректные.
    Потом они предложили сделать следующее:
    " Я бы предложила немного иначе. Чтобы не возникало вышеописанной проблемы при считывании двух регистров разными запросами.
    Я бы считала число из двух регистров, а потом математически поменяла их местами."
    Но моих знаний в этой области не достаточно для совершения подобных манипуляций.
    32 битное целочисленное занимает 2 регистра, ПР позволяет их читать вместе за один раз.
    Если я правильно перевёл, u32 big endian - обратный порядок байт
    s32 little endian - прямой порядок байт, для этого как раз и нужны галки старшим байтом и старшим регистром вперёд, перестановка регистров и байт.
    Так же регистры и байты можно переставить в программе. Но для начала надо проверить правильность предположений.
    Если имеются ввиду 32 битные знаковые целочисленные, то ответ тут
    Функции FLOAT_TO_DINT и DINT_TO_FLOAT на ST____ https://owen.ru/forum/showthread.php...821#post429821
    Пробуйте читать так и так и смотрите результат. Скрины выложите тут.
    Последний раз редактировалось kondor3000; 18.10.2024 в 09:45.

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

    По умолчанию

    ПР не понимает напрямую отрицательные числа s32. Если оно будет приходить с минусом, то вы по умолчанию будете получать непонятное значение.
    Вроде были макросы, которые позволяли работать со знаковыми числами, но при переводе через float возможно будут возникать ошибки.

  10. #30

    По умолчанию

    Я возможно делаю, что-то неправильно:
    Код:
    Sign := s32.31;  // Sign = false - число положительное, Sign = true - число отрицательное
    if Sign then
      u32 := 0 - s32; // Модуль числа s32, т.е. без знака
    else
      u32 := s32;
    end_if
    Можно ли считать, что если ValH(старшие 32 бита) и ValL(младшие 32 бита) считанные 2 раза подряд и давшие один и тот же результат,
    дали результат верный shl(ValH, 32) + ValL?
    Последний раз редактировалось EFrol; 18.10.2024 в 10:32.

Страница 3 из 4 ПерваяПервая 1234 ПоследняяПоследняя

Похожие темы

  1. Как присвоить различные целочисленные значения для одной переменной?
    от Пётр Поросёнков в разделе Среда программирования OWEN Logic
    Ответов: 8
    Последнее сообщение: 24.02.2024, 18:58
  2. ПМ 01 не отправлет смс в формате PDU
    от djmadmax в разделе Эксплуатация
    Ответов: 18
    Последнее сообщение: 01.12.2016, 11:34
  3. Системное время в формате DATE
    от Columbariy в разделе ПЛК1хх
    Ответов: 2
    Последнее сообщение: 10.10.2014, 23:54
  4. Ответов: 10
    Последнее сообщение: 01.10.2014, 15:47
  5. Передавать архивы файлов в формате csv
    от IDN в разделе ПЛК3xx (архив)
    Ответов: 5
    Последнее сообщение: 16.05.2014, 10:33

Ваши права

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