Посмотрите мой скрин, начальные адреса массива, DWORD, REAL и первого WORD одинаковые AT %QB12.1.0, только второй WORD отличается адресом. Выделил память в слейве в виде 2 регистров. Это можно сделать двумя 2BYTE (так думаю лучше) или четырьмя 8 BIT ( 1 байт).
Перевёрнутые регистры (байты) получаем по Модбас в виде массива B и кладём их по адресу массива W. Переставляя слова в DWORD или байты в словах, получаем правильное значение ( всего 3 варианта).
В эмуляции я сначала выделил 4 байта, представил их в виде массива, переставил местами слова и подал их на вход функции.
(блоки разложения на байты и перестановки байтов у меня давно в личной биб-ке есть)
Пример склейки REAL из двух WORD, есть в моём примере, в последнем сообщении в конце страницы тут https://owen.ru/forum/showthread.php?t=35094#10
Байты переставлять и раскладывать можно так же, как в примере перестановки слов.
{flag noinit on} и {flag off} в 2.3 это комментарии и их можно просто выкинуть
Массив у меня W, а не _
W3, W4, D2 просто для наглядности, видно как меняются местами байты и регистры, r10 значение полученного REAL.





Ответить с цитированием