This is topic преобразование Float64 из Modbus in forum Языки программирования в TRACE MODE 6 / Algorithm Programming Languages at Форум TRACE MODE: техническая поддержка.


To visit this topic, use this URL:
http://forum.adastra.ru/ultimatebb.php/ubb/get_topic/f/33/t/000175.html

Posted by Dmitrii (Участник № / Member № 6880) on :
 
Добрый день.
По 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 :
 
Здравствуйте.
Подробный ответ дан почтой.
В общем случае, необходимо правильно разложить все биты и собрать из них бит знака, биты порядка и мантиссы (как целочисленные) и математически преобразовать их в вещественное.
 


Новости АСУ ТП / News | SCADA / HMI | Обучение / Trainings | Свяжитесь с нами / Contact Us



Powered by Infopop Corporation
UBB.classic™ 6.7.2