Контрольная сумма.

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
TiG
Постоялец
Постоялец
 
Сообщения: 327
Зарегистрирован: 12.05.2003 (Пн) 12:34
Откуда: Ростов-на-Дону

Сообщение TiG » 16.08.2006 (Ср) 12:53

тут вот из документации по модбас было найдено следующее:

Алгоритм генерации CRC (в режиме RTU):
1. 16-ти битовый регистр загружается числом FF hex (все 1), и используется далее как регистр CRC.
2. Первый байт сообщения складывается по ИСКЛЮЧАЮЩЕМУ ИЛИ с содержимым регистра CRC. Результат помещается в регистр CRC.
3. Регистр CRC сдвигается вправо (в направлении младшего бита) на 1 бит, старший бит заполняется 0.
4. (Если младший бит 0): Повторяется шаг 3 (сдвиг)
(Если младший бит 1): Делается операция ИСКЛЮЧАЮЩЕЕ ИЛИ регистра CRC и полиномиального числа A001 hex.
5. Шаги 3 и 4 повторяются восемь раз.
6. Повторяются шаги со 2 по 5 для следующего сообщения. Это повторяется до тех пор пока все байты сообщения не будут обработаны.
7. Финальное содержание регистра CRC и есть контрольная сумма.
РАЗМЕЩЕНИЕ CRC В СООБЩЕНИИ( в режиме RTU)
При передаче 16 бит контрольной суммы CRC в сообщении, сначала передается младший байт, затем старший (14 и 15 байт соответственно).

Помогите пожалуйста написать код (процедурку) обработки 112-битной строки для вычесления ее контрольной суммы.
Все мои игрушки мама разметало ураганом...

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 16.08.2006 (Ср) 13:05

TiG писал(а):tyomitch
0+0+1+1=2 сложение и выполнил

Объясни тогда, откуда ты взял эти четыре числа 0,0,1,1
Мне почему-то показалось, что это выделенные биты. Так?
Изображение

Efiop
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 69
Зарегистрирован: 06.06.2006 (Вт) 12:14
Откуда: РК

Сообщение Efiop » 16.08.2006 (Ср) 13:13

tyomitch, значит X является байтом, а не битом, так?
И по этому чертовому полиному расчитывается контр. сумма.tyomitch, тогда может ты объяснишь как она расчитывается.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 16.08.2006 (Ср) 13:17

Да, байтом. А чего непонятного?
Изображение

Efiop
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 69
Зарегистрирован: 06.06.2006 (Вт) 12:14
Откуда: РК

Сообщение Efiop » 16.08.2006 (Ср) 13:46

tyomitch, че-то не то.
Получается каждый байт обрабатывается этой функцией
X^16 + X^15 + X^2 + 1
и вся это канитель суммируется или они между собой тоже ксорятся как в модбасе
В процессе генерации CRC, каждый 8-ми битовый символ складывается по ИСКЛЮЧАЮЩЕМУ ИЛИ с содержимым регистра.
?

Пред.

Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 77

    TopList