PDA

Просмотр полной версии : Как передать значения REAL по modbus?



kat
31.10.2015, 13:07
Подскажите пожалуйста, может есть какие то видеопримеры? Есть необходимость передавать с панели СПК107 числа с запятой через RS485 на ПЛК110.32.

GoodLuck
31.10.2015, 13:47
Можно передавать в формате WORD, предварительно умножив число на 10 в степени n. Где n равно количеству знаков после запятой.

kat
31.10.2015, 15:43
Спасибо, попробую.

energvk
31.10.2015, 18:18
Можно передавать в формате WORD, предварительно умножив число на 10 в степени n. Где n равно количеству знаков после запятой.



Зачем такие извращения? Просто в модбас устройстве создаёте канал Wright multiple register, указываете нужное смещение (адрес) и количество регистров для записи - 2. К каналу привязываете свою real переменную. Возможно вечером смогу скинуть скриншоты, если непонятно будет.

Yegor
31.10.2015, 18:47
Ну почему сразу извращение? Точность и диапазоны 4-байтового REAL'а далеко не всегда нужны, и есть смысл сэкономить. Да и как раз REAL по модбасу без извращений вы и не передадите.

kat
31.10.2015, 23:39
Зачем такие извращения? Просто в модбас устройстве создаёте канал Wright multiple register, указываете нужное смещение (адрес) и количество регистров для записи - 2. К каналу привязываете свою real переменную. Возможно вечером смогу скинуть скриншоты, если непонятно будет.
Я так и делал, но проблема в том, что REAL не получается передавать по модбасу, а если преобразовать в word то теряются цифры после запятой. Или я что то не так делал?

kat
31.10.2015, 23:40
Ну почему сразу извращение? Точность и диапазоны 4-байтового REAL'а далеко не всегда нужны, и есть смысл сэкономить. Да и как раз REAL по модбасу без извращений вы и не передадите.

А как таким образом передавать аналоговый сигнал с блоков аналоговых входов или выходов?

energvk
01.11.2015, 00:35
Я так и делал, но проблема в том, что REAL не получается передавать по модбасу, а если преобразовать в word то теряются цифры после запятой. Или я что то не так делал?

Трудно сказать, у меня нормально передача идёт, скриншоты конфигураций можете приложить?

Чтобы в word не терять цифры, то как раз и умножается на нужное число разрядов (10,100,1000 и т.д.) после запятой перед конвертированием, а по приеме преобразовываете обратно в real и делите обратно.

energvk
01.11.2015, 11:07
В кдс 3.5 можно указать тип регистра?

kat
01.11.2015, 11:23
Трудно сказать, у меня нормально передача идёт, скриншоты конфигураций можете приложить?

Чтобы в word не терять цифры, то как раз и умножается на нужное число разрядов (10,100,1000 и т.д.) после запятой перед конвертированием, а по приеме преобразовываете обратно в real и делите обратно.
Скриношоты смогу выложить после выходных, сейчас к сожалению нет доступа к компьютеру.С числами я понял,интересное решение. Но как быть если нужно подключить блок с аналоговыми входами? В нем же перемножать ничего не получится. Подскажите, а тип глобальной переменной к которй привязываете 2 регистра у Вас Real?

energvk
01.11.2015, 14:37
Скриношоты смогу выложить после выходных, сейчас к сожалению нет доступа к компьютеру.С числами я понял,интересное решение. Но как быть если нужно подключить блок с аналоговыми входами? В нем же перемножать ничего не получится. Подскажите, а тип глобальной переменной к которй привязываете 2 регистра у Вас Real?

Да, Real. Насчёт блока аналоговых входов не совсем понятно про какой блок вы имеете ввиду.

kat
01.11.2015, 16:32
Да, Real. Насчёт блока аналоговых входов не совсем понятно про какой блок вы имеете ввиду.

А в глобальных переменных она идет у Вас как переменная Real состоящая из двух регистров или массив ARRAY (0..1) OF REAL? Я имею ввиду овеновский модуль МВ110-8АС.

Knive87
02.11.2015, 14:33
Если с аналогового имеете какое-то не преобразованное значение, (ток, милливольты, вольты, сопротивление или др), то сначала в СПК преобразовываете в нужное значение, согласно вашей градуировке, а потом уже передаете куда нужно. Не знаю как на счет в СПК, в ПЛК приходится разбивать REAL на 2 WORD и передавать массивом в нужные регистры от Real принимающего устройства. Как разбивать пока еще не знаю, но возможно разберемся. Надеюсь я правильно вас понял и немного намекнул куда копать.

kat
02.11.2015, 18:58
Если с аналогового имеете какое-то не преобразованное значение, (ток, милливольты, вольты, сопротивление или др), то сначала в СПК преобразовываете в нужное значение, согласно вашей градуировке, а потом уже передаете куда нужно. Не знаю как на счет в СПК, в ПЛК приходится разбивать REAL на 2 WORD и передавать массивом в нужные регистры от Real принимающего устройства. Как разбивать пока еще не знаю, но возможно разберемся. Надеюсь я правильно вас понял и немного намекнул куда копать.
Спасибо за доброе желание помочь:)

Knive87
04.11.2015, 06:20
http://www.owen.ru/forum/showthread.php?t=22372

Knive87
04.11.2015, 11:28
А Вам встречался модуль в СПК передающий строки?

Извините, не совсем понял вопрос. Модуль чего?

Knive87
04.11.2015, 15:27
передача строк присутствует в конфигураторе овеновских плк работающих под КДС2.3, СПК к ним не относится

Понял вас. С СПК еще не работал.

energvk
17.11.2015, 00:30
kat

Если ещё актуально, выкладываю для вас скриншоты по какому принципу у меня работает

20847
20848
20849
20850
20851

kat
17.11.2015, 01:44
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
Помощь уже не требуется. Проблема решена.

nub
29.08.2020, 22:34
Можно передавать в формате WORD, предварительно умножив число на 10 в степени n. Где n равно количеству знаков после запятой.

Отличная идея! а главное простая в исполнении!