![]() |
![]() ![]() |
|
Библиотека Здесь сосредоточены познавательные статьи, раскрывающие те или иные аспекты оборудования или условий его применения |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
![]() |
#1 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 17 345
Благодарил(а): 15 раз(а)
Поблагодарили:
606 раз(а) в 554 сообщениях
|
![]()
Поводом написания данной статьи послужил тот факт, что в протоколе modbus отсутствуют такие типы данных, как 32-хразрядное целое и 32-хразрядное число с плавающей точкой.
Стандарт modbus определяет только передачу битов и 16-разрядных регистров. Поэтому производители различных устройств передают другие типы данных так, как кажется удобным именно этому производителю. Нам было удобно сделать так: FLOAT и LONG побайтно передаются в порядке 3-4-1-2, т.е. число LONG, равное 08403020h передаётся как 30h.20h.08h.40h Tx: [8] 01 04 A0 08 00 02 D2 09 Rx: [9] 01 04 04 30 20 08 40 F3 7E ------------------ INT передаются в обычном для modbus виде. Т.е. 0064h передаётся как 00h.64h Tx: [8] 01 04 A0 8B 00 01 63 E0 Rx: [7] 01 04 02 00 64 B8 DB ------------------ То же самое касается статусов и койлов - всё как и должно быть в modbus. ------------------ Для облегчения взаимопонимания со сторонними устройствами нами были написаны следующие алгоритмы по "перевороту байтов": Выделение старшего слова и младшего слова (HIGH и LOW) из переменной типа LONG: http://forum.segnetics.com/showthread.php?t=736 Переворот байтов внутри FLOAT: http://forum.segnetics.com/showthread.php?t=461 __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
![]() |
![]() |
![]() |
Опции темы | Поиск в этой теме |
Опции просмотра | |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Перенос строк в экспортируемом файле регистров Modbus | tuxnsk | SMLogix | 1 | 04.05.2018 12:03 |
Honeywell MVC80-DH10M | LordN | Связь с внешним миром | 30 | 28.11.2016 14:21 |