Есть контроллер S7-314 и слейв ПРОФИБАС ДП!!!
Обмен происходит 9 словами в передаваемой структуре описано 8 слов и 9 слово описано в виде струтуры битов! при обмене значение байтов в 9 слове изменено по сравнению с источником(слейвом) старший с младшим swap.
При изменении на пользовательский тип ничего не изменяется!
Но когда ставишь тип WORD все проходит нормально и биты находяться на своих местах!
[?]: При обмене по ПРОФИБАС в слове меняется порядок байт!
Про эту тонкость было написано в разговоре о протоколе обмена с частотником - байты в слове "меняются" местами
http://www.automation-drives.ru/forum/v ... php?t=5624
http://www.automation-drives.ru/forum/v ... php?t=5624
Просмотрел указаную ссылку и не нашел указания причины почему идет изменение порядка следования байтов в слове из-за использования не элементарного типа.CoMod wrote:Про эту тонкость было написано в разговоре о протоколе обмена с частотником - байты в слове "меняются" местами
http://www.automation-drives.ru/forum/v ... php?t=5624
Объясните пожайлуста!
-
- Posts: 109
- Joined: Thu Oct 19, 2006 7:00 am
- Location: Russia
Все просто. В S7 используется хранение для типов выше байта старшим байтом по меньшему адресу, в отличие от формата Intel например. В результате при использовании пользовательского типа становится виден этот внутренний способ хранения. Так что никаких тонкостей тут нет, если я правильно понял вопрос.
Википедия по этому поводу:
Порядок от младшего к старшему
Порядок от младшего к старшему (англ. little-endian, о происхождении термина ниже): , запись начинается с младшего и заканчивается старшим. Этот порядок записи принят в памяти персональных компьютеров с x86-процессорами, в связи с чем, иногда, его называют интеловский порядок байт (по названию фирмы-создателя архитектуры x86).
[править] Порядок от старшего к младшему
Порядок от старшего к младшему (англ. big-endian): , запись начинается со старшего и заканчивается младшим. Этот порядок является стандартным для протоколов TCP/IP, он используется в заголовках пакетов данных и во многих протоколах более высокого уровня, разработанных для использования поверх TCP/IP. Поэтому, порядок байтов от старшего к младшему часто называют сетевым порядком байтов (англ. network byte order). Этот порядок байт используется процессорами IBM 360/370/390, Motorola 68000, SPARC (отсюда третье название — порядок байтов Motorola, Motorola byte order).
В этом же виде (но с факторизацией по основанию 10) записываются числа индийско-арабскими цифрами.
Порядок байтов от старшего к младшему ныне является кроссплатформенным стандартом и применяется в многих стандартизованных форматах файлов, таких как PNG.