ТРИД РА-RS-485-D-0,5% Инструкция по эксплуатации онлайн [16/33] 160800

16
Сообщение начинается с интервала тишины, равного времени передачи 3,5
символов при данной скорости передачи в сети. Первым полем, затем передается
адрес устройства.
Вслед за последним передаваемым символом также следует интервал тишины
продолжительностью не менее 3,5 символов. Новое сообщение может начинаться
после этого интервала. Фрейм сообщения передается непрерывно.
Если интервал тишины продолжительностью 1,5 символа возник во время
передачи фрейма, принимающее устройство заканчивает прием сообщения и
следующий байт будет воспринят как начало следующего сообщения.
5 Расчет контрольной суммы и возможные ошибки.
5.1 Во время обмена данными могут возникать ошибки двух типов:
- коммуникационные ошибки, связанные с искажениями при передаче
(транспортировке) данных;
- ошибки функционирования.
5.2 Коммуникационные ошибки обнаруживаются при помощи фреймов
символов, контроля четности и циклической контрольной суммы CRC-16. При
обнаружении любой из этих ошибок сообщение считается недостоверным и в случае
приема его SLAVE, ответ не выдается. В этом случае MASTER, не получив за
установленное время ответ, считает сообщение не переданным и может организовать
повторную передачу, либо предпринять другие действия.
5.3 Контрольная сумма рассчитывается стандартным для Modbus способом.
Результат вычисления передается в линию связи, начиная с младшего байта.
5.3.1 Пример вычисления CRC-16 для сообщения:
1 Заполним значение 16-разрядного регистра "1".
Произведем операцию "исключающее ИЛИ" первых 8 бит (первого байта) со
старшими разрядами (старшим байтом) 16-разрядного регистра.
2 Результат поместим в 16-разрядный регистр.
3 Сдвинем 16-разрядный регистр на один бит вправо.
4a Если выдвинутый бит="1", то произведем операцию "исключающее ИЛИ" 16-
разрядного регистра с полиномом 1010 0000 0000 0001. Результат поместим в 16-
разрядный регистр.
4b Если выдвинутый бит="0", то переход к пункту 3.
5 Повторить пункты 3-4 восемь раз (сдвинем весь байт).
6 Произведем операцию "исключающее ИЛИ" следующих 8 бит (следующий
байт) со старшими разрядами (старшим байтом) 16-разрядного регистра. Результат
поместим в 16- разрядный регистр.
7 Повторим пункты 3-6, пока не обработаем все сообщения.
8 Содержимое 16-разрядного регистра даст нам искомое значение CRC-16.
5.3.2 Фрагмент программы, используемой для расчета контрольной суммы.
//Выход из программы сумма CRC-16, которая передается в линию связи
//начиная с младшего байта;
//*mas - указатель на массив информации;
// dl - длина массива;
unsigned short int RunCRC (unsigned char *mas, int dl) {
unsigned char *ab, rabb;
int i, j;

Содержание

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

Скачать