Delta Electronics VFD004E21T Инструкция по эксплуатации онлайн [176/342] 395995

Delta Electronics VFD004E21T Инструкция по эксплуатации онлайн [176/342] 395995
Ревизия: Июнь 2016 г., 14EE, V1.23/CTL V2.23 Адаптация и перевод: компания СТОИК (www.deltronics.ru) - 176 -
RTU-режим:
ADR
01H
CMD 03H
Стартовый адрес
данных
21H
02H
Число данных
(в словах)
00H
02H
CRC CHK Low 6FH
CRC CHK High F7H
CRC (циклическая проверка по избыточности) рассчитанная следующими шагами:
Шаг 1: Загрузка 16-bit регистра (называемого CRC регистром) с FFFFH.
Шаг 2: Исключающее ИЛИ первому 8-bit байту из командного сообщения с байтом
младшего порядка из 16-bit регистра CRC, помещение результата в CRC регистр.
Шаг 3: Сдвиг одного бита регистра CRC вправо с MSB нулевым заполнением.
Извлечение и проверка LSB.
Шаг 4: Если LSB CRC регистра равно 0, повторите шаг 3, в
противном случае
исключающее ИЛИ CRC регистра с полиномиальным значением A001H.
Шаг 5: Повторяйте шаг 3 и 4, до тех пор, пока восемь сдвигов не будут выполнены.
Затем, полный 8-bit байт будет обработан.
Шаг 6: Повторите шаг со 2 по 5 для следующих 8-bit байтов из командного сообщения.
Продолжайте пока все байты не будут обработаны. Конечное содержание CRC
регистра CRC значение. При передачи значения
CRC в сообщении, старшие и
младшие байты значения CRC должны меняться, то есть сначала будет передан
младший байт.
На следующем примере приведена CRC генерация с использованием языка С. Функция
берет два аргумента:
Unsigned char* data a pointer to the message buffer
Unsigned char length the quantity of bytes in the message buffer
The function returns the CRC value as a type of unsigned integer.
Unsigned int crc_chk(unsigned char* data, unsigned char length){
int j;
unsigned int reg_crc=0xFFFF;
while(length--){
reg_crc ^= *data++;
for(j=0;j<8;j++){
if(reg_crc & 0x01){ /* LSB(b0)=1 */
reg_crc=(reg_crc>>1) ^ 0xA001;
}else{
reg_crc=reg_crc >>1;
}
}
}
return reg_crc;
}

Содержание

Похожие устройства

Скачать