Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
dev:hardware:omron:protocol [2019/11/29 11:39] vitaly |
dev:hardware:omron:protocol [2019/12/02 07:07] (текущий) vitaly |
||
---|---|---|---|
Строка 62: | Строка 62: | ||
Чтение по отдельным регистрам | Чтение по отдельным регистрам | ||
- | |||
- | [14:58:44,223] <--:80000300000000090006 | ||
- | 0104B00CE400B00CE400 | ||
- | |||
- | [14:58:44,230] -->:C0000200090000000006 | ||
- | 01040000B00028B00028 | ||
- | |||
- | |||
<code>01 04 KK AA AA AA [ KK AA AA AA ]</code> | <code>01 04 KK AA AA AA [ KK AA AA AA ]</code> | ||
Строка 103: | Строка 95: | ||
Мы запрашивали два слова из области B0. Ответ B0 00 28 B0 00 00 - означает что это CIO с значением 0028h и CIO с значением 0000h. | Мы запрашивали два слова из области B0. Ответ B0 00 28 B0 00 00 - означает что это CIO с значением 0028h и CIO с значением 0000h. | ||
+ | |||
+ | |||
+ | Добавление, как работать и битами. | ||
+ | В протоколе 1бит данных записывается как 1 байт, т.е. если надо считать 5 бит, то в ответе на команду будет 5 байт (см. последний столбец в таблице откуда берем коды областей). Причем каждый из этих байт будет иметь значение 00h или 01h. | ||
+ | Например: мы хотим запросить 20h битов начиная с адреса 0CEE | ||
+ | Команда будет такая 01 01 30 0C EE 00 00 20 | ||
+ | 01 01 - это команда чтения регистров (для команды 01 04 логика аналогична) | ||
+ | 30 - код области памяти CIO только при побитовом чтении. | ||
+ | 0C EE 00 - адрес регистра. причем последний 00 это номер бита в регистре. | ||
+ | 00 20 - это сколько бит читать (32 штуки). | ||
+ | |||
+ | Ответ: | ||
+ | 01 01 00 00 00 00 01 00 01 01 00 00 00 01 00 00 01 00 00 00 00 00 00 01 01 01 01 00 00 01 01 00 01 00 01 00 | ||
+ | |||
+ | В начале идет | ||
+ | 01 01 - команда | ||
+ | 00 00 - код ответа все хорошо | ||
+ | Данные 32 байта: 00 00 01 00 01 01 00 00 00 01 00 00 01 00 00 00 00 00 00 01 01 01 01 00 00 01 01 00 01 00 01 00 | ||
+ | |||
+ | Каков порядок следования битов в ответе ? Вот такой: | ||
+ | 0CEE:0 бит, 0CEE:1 бит, ...., 0CEE:15 бит, 0CEF:0 бит, 0CEF:1 бит, ..., 0CEF:15 бит | ||
Строка 122: | Строка 135: | ||
<code>C0 00 02 00 09 00 00 00 00 ZZ 01 02 00 00</code> | <code>C0 00 02 00 09 00 00 00 00 ZZ 01 02 00 00</code> | ||
структура ответа полностью аналогична чтению | структура ответа полностью аналогична чтению | ||
+ | |||
+ | |||
+ | Примечание: Пример побитового режима записи. | ||
+ | Запишем в область CIO3200 бит 0. Код области CIO для побитового режима 30h. В hex адрес будет выглядеть как 0C 80. Далее ставим смещение бита в слове (00 - нулевой бит). Записывать будем 1 элемент (бит), значит ставим 00 01h. Потом область данных длинной количество элементов умножить на байт (размер байт берется из таблицы раздела 5-3-3). У нас 1 элемент значит 1 байт. Значение байта может быть или 00h или 01h. В первом примере отсылается 0, во втором 1. Ответ код команды, и код успешного выполнения 00 00h. | ||
+ | |||
+ | [10:53:58,781] <--:80000300000000090003 01 02 30 0C 80 00 00 01 00 | ||
+ | [10:53:58,793] -->:C0000200090000000003 01 02 00 00 | ||
+ | |||
+ | [10:54:07,363] <--:80000300000000090004 01 02 30 0C 80 00 00 01 01 | ||
+ | [10:54:07,375] -->:C0000200090000000004 01 02 00 00 | ||
+ | |||
+ | Если надо установить 10ый бит, то смещение 0A. | ||
+ | [11:04:17,195] <--:8000030000000009000D 01 02 30 0C 80 0A 00 01 01 | ||
+ | [11:04:17,203] -->:C000020009000000000D 01 02 00 00 | ||
+ | В примере, если до выполнения было 0000h, то после выполнения станет 0400h (взведение 10ого бита). | ||