drooha
Forum Haunter / Завсегдатай форума
Участник № / Member № 3306
отправлено / posted
Для записи в контроллер 4-х байтового значения необходима функция 16(10 Hex) Preset Multiple Regs, протокола Modbus RTU. В TM6 для работы с 4-х байтовыми значениями имеется W_Float(16), которая передаёт значение с плавающей точкой типа out,и естественно с использованием этой функции передается совсем другое число. Может кто нибудь сталкивался с подобной проблемой, подскажите пожалуйста как быть.
Сообщения / Posts 107 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Dmitry.niimm
Junior Member / Новичок
Участник № / Member № 3380
отправлено / posted
А в чем, собственно, проблема?
По стандарту Modbus отсутствует такое понятие как 4-байтовое целое (впрочем как и вещественное любой длины) - есть только 16-битные регистры и битовые поля. То, что некоторые девайсы получают такие данные - это нестандартизованное расширение стандарта и реализуется как использование двух последовательных 16-битных регистров, причем какой из них используется в качестве старшей половины, а какой - младшей, это уже остается на совести производителей.
Поэтому выход только один: 1) создать источник/приемник Modbus/hex16 out, указывающий на _первый_ из регистров; 2) к источнику привязать канал ChGroupReq с двумя аргументами UINT; 3) в аргументы канала из п.2 вручную (т.е. отдельным каналом call.program) ложить две половинки значения hex32 _в_нужном_порядке_.
Короче говоря, rtfm: "Канал CALL.ChGroupReq... ...Привязка источника MODBUS чтения или записи. Выполняется соответственно групповое чтение или групповая запись (WORD, FLOAT) при обмене с заданным устройством по MODBUS (в том числе по MODBUS TCP/IP). Устройство и начальный адрес задаются в источнике, количество считываемых/устанавливаемых параметров определяется числом аргументов канала."
Сообщения / Posts 19 | Из / From: Украина
| IP / IP: IP адрес / IP address |
drooha
Forum Haunter / Завсегдатай форума
Участник № / Member № 3306
отправлено / posted
Простите пожалуйста, а каким образом еще можно решить эту задачу с чтением/передачей 3 или 4 байтового числа?
Сообщения / Posts 9 | Из / From: Россия
| IP / IP: IP адрес / IP address |