Просмотр полной версии : Как передать значения REAL по modbus?
Подскажите пожалуйста, может есть какие то видеопримеры? Есть необходимость передавать с панели СПК107 числа с запятой через RS485 на ПЛК110.32.
GoodLuck
31.10.2015, 13:47
Можно передавать в формате WORD, предварительно умножив число на 10 в степени n. Где n равно количеству знаков после запятой.
Можно передавать в формате WORD, предварительно умножив число на 10 в степени n. Где n равно количеству знаков после запятой.
Зачем такие извращения? Просто в модбас устройстве создаёте канал Wright multiple register, указываете нужное смещение (адрес) и количество регистров для записи - 2. К каналу привязываете свою real переменную. Возможно вечером смогу скинуть скриншоты, если непонятно будет.
Ну почему сразу извращение? Точность и диапазоны 4-байтового REAL'а далеко не всегда нужны, и есть смысл сэкономить. Да и как раз REAL по модбасу без извращений вы и не передадите.
Зачем такие извращения? Просто в модбас устройстве создаёте канал Wright multiple register, указываете нужное смещение (адрес) и количество регистров для записи - 2. К каналу привязываете свою real переменную. Возможно вечером смогу скинуть скриншоты, если непонятно будет.
Я так и делал, но проблема в том, что REAL не получается передавать по модбасу, а если преобразовать в word то теряются цифры после запятой. Или я что то не так делал?
Ну почему сразу извращение? Точность и диапазоны 4-байтового REAL'а далеко не всегда нужны, и есть смысл сэкономить. Да и как раз REAL по модбасу без извращений вы и не передадите.
А как таким образом передавать аналоговый сигнал с блоков аналоговых входов или выходов?
Я так и делал, но проблема в том, что REAL не получается передавать по модбасу, а если преобразовать в word то теряются цифры после запятой. Или я что то не так делал?
Трудно сказать, у меня нормально передача идёт, скриншоты конфигураций можете приложить?
Чтобы в word не терять цифры, то как раз и умножается на нужное число разрядов (10,100,1000 и т.д.) после запятой перед конвертированием, а по приеме преобразовываете обратно в real и делите обратно.
В кдс 3.5 можно указать тип регистра?
Трудно сказать, у меня нормально передача идёт, скриншоты конфигураций можете приложить?
Чтобы в word не терять цифры, то как раз и умножается на нужное число разрядов (10,100,1000 и т.д.) после запятой перед конвертированием, а по приеме преобразовываете обратно в real и делите обратно.
Скриношоты смогу выложить после выходных, сейчас к сожалению нет доступа к компьютеру.С числами я понял,интересное решение. Но как быть если нужно подключить блок с аналоговыми входами? В нем же перемножать ничего не получится. Подскажите, а тип глобальной переменной к которй привязываете 2 регистра у Вас Real?
Скриношоты смогу выложить после выходных, сейчас к сожалению нет доступа к компьютеру.С числами я понял,интересное решение. Но как быть если нужно подключить блок с аналоговыми входами? В нем же перемножать ничего не получится. Подскажите, а тип глобальной переменной к которй привязываете 2 регистра у Вас Real?
Да, Real. Насчёт блока аналоговых входов не совсем понятно про какой блок вы имеете ввиду.
Да, Real. Насчёт блока аналоговых входов не совсем понятно про какой блок вы имеете ввиду.
А в глобальных переменных она идет у Вас как переменная Real состоящая из двух регистров или массив ARRAY (0..1) OF REAL? Я имею ввиду овеновский модуль МВ110-8АС.
Если с аналогового имеете какое-то не преобразованное значение, (ток, милливольты, вольты, сопротивление или др), то сначала в СПК преобразовываете в нужное значение, согласно вашей градуировке, а потом уже передаете куда нужно. Не знаю как на счет в СПК, в ПЛК приходится разбивать REAL на 2 WORD и передавать массивом в нужные регистры от Real принимающего устройства. Как разбивать пока еще не знаю, но возможно разберемся. Надеюсь я правильно вас понял и немного намекнул куда копать.
Если с аналогового имеете какое-то не преобразованное значение, (ток, милливольты, вольты, сопротивление или др), то сначала в СПК преобразовываете в нужное значение, согласно вашей градуировке, а потом уже передаете куда нужно. Не знаю как на счет в СПК, в ПЛК приходится разбивать REAL на 2 WORD и передавать массивом в нужные регистры от Real принимающего устройства. Как разбивать пока еще не знаю, но возможно разберемся. Надеюсь я правильно вас понял и немного намекнул куда копать.
Спасибо за доброе желание помочь:)
http://www.owen.ru/forum/showthread.php?t=22372
А Вам встречался модуль в СПК передающий строки?
Извините, не совсем понял вопрос. Модуль чего?
передача строк присутствует в конфигураторе овеновских плк работающих под КДС2.3, СПК к ним не относится
Понял вас. С СПК еще не работал.
kat
Если ещё актуально, выкладываю для вас скриншоты по какому принципу у меня работает
20847
20848
20849
20850
20851
kat
Если ещё актуально, выкладываю для вас скриншоты по какому принципу у меня работает
20847
20848
20849
20850
20851
Очень актуально, большое Вам спасибо.
Евгений Троян
27.09.2019, 16:23
Добрый день, форумчане. Подскажите решение моей проблемы, которая заключается в следующем:
Есть котел, на котором установлены приборы ТРМ212. Данные с них по RS-485 попадают в МСД-200, а оттуда уже в СПК-110 (старой еще модификации) и отображаются элементом "трассировка" в виде графика. Если с передачей данных от ТРМ до МСД-200 проблем нет, то с СПК есть проблемы. СВязь между Мсд-200 и СПК-110 настроена, все отлично, но вот с преобразованием данных в тип REAL проблемы имеются. Я пользовался функцией объединения UNION и делал как рекомендуют в соответствующих источниках, но не получилось толком ничего. В начале данные на графике отображались, но после непродолжительной работы просто пропали и вместо них на графике нули. В службе поддержки сказали что при преобразовании теряются байты. Как так? Ведь по книжке же все. Возможно для кого-то это пустяковая вещь, но сам я не программист и потому подобные проблемы вызывают недоумение большое.
Евгений Троян
30.09.2019, 08:28
Как рекомендуют ?
В описании протоколов, в частности протокола Modbus, есть страницы посвященные работе с данными типа real
Каком преобразовании ?
Само преобразование у меня как на фото 448584485944860
Евгений Троян
01.10.2019, 16:00
Помощь уже не требуется. Проблема решена.
Можно передавать в формате WORD, предварительно умножив число на 10 в степени n. Где n равно количеству знаков после запятой.
Отличная идея! а главное простая в исполнении!
Powered by vBulletin® Version 4.2.3 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot