-
Преобразование REAL
Всем доброго времени суток!
Подскажите, столкнулся со следующей задачей:
Нужно на панели спк300 задать в формате REAL значение, которое будет записывать на ТРМ по Модбасу через ПЛК200 значение гистерезиса.
Для этого в ТРМ нужно передать значение INT которое несет в себе само число и UINT с позицией точки в числе.
Соответственно я считываю с СПК значение в формате DWORD (к примеру задавая 10,54 получаю 1093182423). Далее все хорошо, я могу его преобразовать в REAL в
контроллере или разложить на два слова WORD, но как мне это дело преобразовать в INT и UINT? То есть если его разложить на слова получаются значения к примеру
16680 и 41943. WORDtoINT тут не прокатывает. На форуме я видел подобные случаи, но решения не особо подошли.
-
А можно узнать какой ТРМ и адрес регистра?
-
ТРМ138.
Канал 1 зона гистерезиса HYSt
положение десятичной точки 0x0030
значение гистерезиса int 0x0031
Канал 2 зона гистерезиса HYSt
положение десятичной точки 0x0032
значение гистерезиса int 0x0033
Шаблон кодесиса для mx110 и ТРМ по идее просит записать в него сразу int и uint.
-
Вложений: 1
Если верить инструкции:
Вложение 68447
то 0x30 = числу десятичных цифр при 4 значной мантиссе или 4 - длина целой части
получается 10,54 это 0х30 = 2; 0x31 = 1054;
Давайте попробуем так:
0x30 := 4 - (TRUNC_INT(LOG(10.54)) + 1); // Длина мантиссы - (порядок числа + 1 = длина целой части) = число десятичный цифр
0x31 := TRUNC_INT(10,54 * EXPT(10, число десятичных)); // Получим чистую мантиссу = 1054
-