This is topic преобразование Float64 из Modbus in forum Языки программирования в TRACE MODE 6 / Algorithm Programming Languages at Форум TRACE MODE: техническая поддержка.
Добрый день. По Modbus в 8 аргументов канала Сall тип вызова chGroupReq получаем значение формата Float64, соответственно значение порезано на 8частей. Подскажите пожалуйста как его собрать в применяемую форму. В FBD есть только блок DHL c ограничением до 32 битов.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Как Вы запрашиваете 8-байтовое число в 8 аргументах Call.ChGroupReq, не понятно.
Пришлите, пожалуйста, на адрес техподдержки (hotline@adastra.ru) Ваш проект и ясное описание форматов представления и хранения, а также порядка передачи вещественных чисел с двойной точностью из Вашего Modbus-устройства.
Posted by Dmitrii (Участник № / Member № 6880) on :
Читаем по Modbus так: Источник/приемник - группа Modbus - компонент Rout_Word(3)#1 он привязан к Call.ChGroupReq в аргументы которого и записываются значения. Я их получаю проблем нет. пример: ARG_000 = 64 (десятичный система счисления) ...... ARG_007 = 58. Если в 16 системе счисления, последовательно начиная с 1-го аргумента записать все значения 408058D2D82DA058 у меня получается нужное значение в десятичном виде 523.103(проверял в конвертере). Вопрос как его собрать в десятичном виде в TRACE MODE.
По Modbus из устройства передается 4 регистра, тип данных Float64
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Если Вы действительно без погрешностей получили 8 последовательных байтов из 4-х регистров Modbus, Вам проще получить 2 числа в формате UDINT, а затем в ST-программе реализовать функцию "конвертора" в соответствии с формулой стандартного LREAL-преобразования HEX-представления в десятичное.
Posted by oasafronov (Участник № / Member № 8846) on :
Здравствуйте, а можно поподробнее про реализацию функции конвертора, каким образом присваивать к LReal допустим два 4х байтных UDINT, либо 8 байт. Промежуточных целочисленных 8 байтных данных нет, операции сдвига, либо прямой доступ к байтам/словам к типу LReal я применять не могу... Что можно использовать?
Posted by АдАстра. Техподдержка (Участник № / Member № 4) on :
Здравствуйте. Подробный ответ дан почтой. В общем случае, необходимо правильно разложить все биты и собрать из них бит знака, биты порядка и мантиссы (как целочисленные) и математически преобразовать их в вещественное.