This is topic Преобразование типов in forum TRACE MODE 6 бесплатная Базовая версия / TRACE MODE 6 free Base version at Форум TRACE MODE: техническая поддержка.
Добрый день. У меня такая задача. Для обмена информацией с верхним уровнем на контроллере реализован командный интерфейс. Выделен массив регистров (массив типа WORD) для записи и чтения в качестве буфера. Это удобно, если у вас большое количество настроечных параметров, уставок и т.п., чтобы не выделять отдельный регистр под каждую переменную. В зависимости от кода команды в массив записываются (или читаются) разные данные с разными типами и производится их верификация по контрольной сумме. ВОПРОС. Как средствами TRACE Mode переменную типа REAL разложить на 2 типа WORD и обратно... Только начал знакомится со скадой и не пойму как это сделать. По ходу даже с указателями нельзя работать. ((
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
А почему именно REAL. Проще использовать DINT
Posted by AI (Участник № / Member № 3594) on :
Не понял ответ. А DINT как переведете в REAL? Например, коэффицент передачи регулятора типа REAL. Надо это вещественное число разложить на 2 числа типа WORD и положить в модбас. На контроллере примерно так... P_REAL : POINTER TO REAL;
----------------------- P_REAL := ADR(ARRAY_WORD[0]); P_REAL^:= RealParam; Ну и контрольную сумму потом в цикле посчитать.
Ну в общем видимо не получится красиво сделать командный интерфейс. ПОдхожу к тому, что сделать два буфера, один для вещественных переменных, другой для целочисленных.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Напишите на примере какое число у вас есть в формате REAL и какое число Вам нужно получить в формате WORD.
В Trace Mode для Modbus'a есть функция записи Float, но при этом на самом деле записываются два регистра WORD.