AI
Active Forum Member / Активный участник форума
Участник № / Member № 3594
отправлено / posted
Добрый день. У меня такая задача. Для обмена информацией с верхним уровнем на контроллере реализован командный интерфейс. Выделен массив регистров (массив типа WORD) для записи и чтения в качестве буфера. Это удобно, если у вас большое количество настроечных параметров, уставок и т.п., чтобы не выделять отдельный регистр под каждую переменную. В зависимости от кода команды в массив записываются (или читаются) разные данные с разными типами и производится их верификация по контрольной сумме. ВОПРОС. Как средствами TRACE Mode переменную типа REAL разложить на 2 типа WORD и обратно... Только начал знакомится со скадой и не пойму как это сделать. По ходу даже с указателями нельзя работать. ((
Сообщения / Posts 75 | Из / From: Russia
| IP / IP: IP адрес / IP address |
AI
Active Forum Member / Активный участник форума
Участник № / Member № 3594
отправлено / posted
Не понял ответ. А DINT как переведете в REAL? Например, коэффицент передачи регулятора типа REAL. Надо это вещественное число разложить на 2 числа типа WORD и положить в модбас. На контроллере примерно так... P_REAL : POINTER TO REAL;
----------------------- P_REAL := ADR(ARRAY_WORD[0]); P_REAL^:= RealParam; Ну и контрольную сумму потом в цикле посчитать.
Ну в общем видимо не получится красиво сделать командный интерфейс. ПОдхожу к тому, что сделать два буфера, один для вещественных переменных, другой для целочисленных.
Сообщения / Posts 75 | Из / From: Russia
| IP / IP: IP адрес / IP address |
отправлено / posted
Напишите на примере какое число у вас есть в формате REAL и какое число Вам нужно получить в формате WORD.
В Trace Mode для Modbus'a есть функция записи Float, но при этом на самом деле записываются два регистра WORD.
Сообщения / Posts 17345 | Из / From: Россия
| IP / IP: IP адрес / IP address |