This is topic Float to Int32 in forum Драйверы / Device Drivers at Форум TRACE MODE: техническая поддержка.


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

Posted by timchenkodn (Участник № / Member № 6436) on :
 
МРВ должен обмениваться с устройством по modbus. В МРВ должна задаваться уставка, например, 1.234. Это число нужно умножить на 1000 и передать в устройство, но тип данных должен быть не Float, а Int32.
Как выполнить преобразование? Какой функцией выполнить передачу?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Сначала программно преобразуйте в целое число и разбейте его на 2 числа формата INT (с помощью функциональных блоков библиотеки FBD).
2 целых числа (2 слова) передайте в устройство каналом CALL.ChGroupReq, привязанным к Modbus-переменной типа W_word (16) (см. описание канала CALL.ChGroupReq).
2 регистра могут интерпретироваться в устройстве как DINT.
 
Posted by timchenkodn (Участник № / Member № 6436) on :
 
Я правильно понимаю, что в канале CALL.ChGroupReq создаю 2 аргумента типа OUT и в них передаю 2 слова?
Сам канал привязан к приемнику типа W_word(16). Какой параметр задать для канала CALL.ChGroupReq?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Аргументы типа INPUT.
ПАРАМЕТР=0.
 
Posted by Nico (Участник № / Member № 5342) on :
 
А если ист/приемник привязать к каналу out.hex32 ?
 
Posted by timchenkodn (Участник № / Member № 6436) on :
 
Что-то не получается, не посылает в порт. Если в МРВ в компонентах послать на вход на CALL.ChGroupReq, то в порт отсылается сообщение правильной структуры, но с нулями вместо данных. Как посмотреть не пустые ли аргументы в канале?
Есть ли пример с реализацией?
 
Posted by timchenkodn (Участник № / Member № 6436) on :
 
to Nico,
спасибо, помогло. Привязался к out hex32 и функцией W_Float(16) передал в порт
 
Posted by RomanUI (Участник № / Member № 4022) on :
 
Добрый день!
1. Система состоит из RTM->MicroRTM(WinPAC8841)->PLC Pixel. Обмен WinPAC с Pixel осуществляется по Modbus, а обмен RTM->MicroRTM оп LAN. Проблема в следующем... В узле MicroRTM с Pixel считывается функцией Rin_Float(4) вещественное число, которое привязывается к каналу HEX32, в данном канале оно не преобразуется в hex, т.е. Rin_Float(4)->HEX32 = 0. При ситуации Rin_Float(4)->Float(канал) - все в порядке, но мне нужно именно в двоичном виде. При работе этого алгоритма в обычном RTM, никаких проблем не возникает. Используемые продукты: TM-6-256-P-RU-WIN 6.08 и MCTM-WCG-6-128-L1-P-RU-CE.
2. Как обновить модуль MCTM-WCG-6-128-L1-P-RU-CE, т.к. при работе RTM 6.09 у меня проблема с ним.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
1. Описанная проблема у нас не воспроизвелась. Пришлите на адрес Технической Поддержки файл проекта (*.prj) с описанием задачи.

2. обновить можно любое зарегистрированное ПО через Личный Кабинет.
 


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



Powered by Infopop Corporation
UBB.classic™ 6.7.2