Nicolay B.
Junior Member / Новичок
Участник № / Member № 4338
отправлено / posted
Здравствуйте! Не подскажите как реализовать преобразование типов в FBD программе после блока DHL который мне выдал DINT. В свою очередь мне надо этот результат преобразовать в Real.
Сообщения / Posts 30 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
Свяжите выход блока DHL с выходным аргументом программы, который имеет тип данных REAL или LREAL. В этом аргументе программы Вы получите число в вещественном формате.
Сообщения / Posts 17317 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Nicolay B.
Junior Member / Новичок
Участник № / Member № 4338
отправлено / posted
А такую функцию можно реализовать
отправлено / posted
Откуда Вы получаете 4-байтовый массив? Если по протоколу Modbus, то надо запросить его встроенной в наш Modbus-драйвер функцией Rin_Float(4) или Rout_Float(3).
Если в драйвере протокола такое преобразование не предусмотрено, надо реализовывать преобразование в ST-программе по формуле, соответствующей стандарту представления числа FLOAT.
Сообщения / Posts 17317 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Nicolay B.
Junior Member / Новичок
Участник № / Member № 4338
отправлено / posted
Да это протокол ModBus. Делаю запрос на получение структуры данных. Использую ChGroupReq с 8 двух байтовыми аргументами, далее их преобразую в программе.
Сообщения / Posts 30 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
Значит, надо использовать тот же механизм группового запроса через ChGroupReq с 4 аргументами с типом данных REAL, только выбрать одну из указанных функций выше Modbus-функций. В аргументах канала Вы получите нужные Вам переменные в формате FLOAT. Необходимо только (при необходимости) обеспечить адаптацию к порядку передаваемых регистров. Об этом написано в HELP в описании обмена по протоколу Modbus.
Сообщения / Posts 17317 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Nicolay B.
Junior Member / Новичок
Участник № / Member № 4338
отправлено / posted
Данной решение не совсем подходит так как лицензия на 128 каналов, а расширять не собираемся. И у меня осталось 5 каналов и 5 приборов и все они по такому сценарию.
Сообщения / Posts 30 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Nicolay B.
Junior Member / Новичок
Участник № / Member № 4338
отправлено / posted
Вариант с ...
quote: реализовывать преобразование в ST-программе по формуле, соответствующей стандарту представления числа FLOAT.
отправлено / posted
Вы писали: "Делаю запрос на получение структуры данных. Использую ChGroupReq с 8 двух байтовыми аргументами, далее их преобразую в программе. "
Как Вы "преобразуете" полученные 2-байтовые переменные и как далее используете преобразованные данные?
Сообщения / Posts 17317 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Nicolay B.
Junior Member / Новичок
Участник № / Member № 4338
отправлено / posted
В FBD программе блоком DHL, далее я делаю преобразование в Real путем присвоения выходному аргументу типа Real.
Сообщения / Posts 30 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
Как дальше используются полученные в программе данные? Отображение на экране, архивирование, сообщения в ОТ, документирование?
Сообщения / Posts 17317 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Nicolay B.
Junior Member / Новичок
Участник № / Member № 4338
отправлено / posted
В этом случае Вам не нужны дополнительные каналы.
Цитирую более ранний пост: "Значит, надо использовать тот же механизм группового запроса через ChGroupReq с 4 аргументами с типом данных REAL, только выбрать одну из указанных функций выше Modbus-функций (Rin_Float(4) или Rout_Float(3)). В аргументах канала Вы получите нужные Вам переменные в формате FLOAT. Необходимо только (при необходимости) обеспечить адаптацию к порядку передаваемых регистров. Об этом написано в HELP в описании обмена по протоколу Modbus. "
Сообщения / Posts 17317 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Nicolay B.
Junior Member / Новичок
Участник № / Member № 4338
отправлено / posted
Это не совсем возможно так как искомое значение лежит не в начальных переменных группового запроса. Также в этом запросе присутствуют данные и Real и Word и DWord.
Сообщения / Posts 30 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
В этой ситуации Вам придется выбрать 1 из трех вариантов: - увеличивать количество запросов (по форматам переменных), - самостоятельно программировать преобразование форматов, - приспособить групповой запрос с привязкой CALL.ChGroupReq к Modbus-переменной R_FIFO_Queue с ПАРАМЕТР <> 0 (см.документацию).
Сообщения / Posts 17317 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Игорь Моисеев
Active Forum Member / Активный участник форума
Участник № / Member № 6355
отправлено / posted
неужели так тяжело написать функции преобразования данных и добавить их в библиотеки Техно Trace Mode? Так сделано во всех языках программирования АСУ ТП.
Сообщения / Posts 63 | Из / From: Россия
| IP / IP: IP адрес / IP address |