PDA

Просмотр полной версии : Вычисление CRC для обмена с Тэкон


Михаил Русаков
22.08.2018, 11:14
Здравствуйте
Имеется Тэкон-19 и контроллер К-104 (исполнение 0). Необходимо организовать опрос тэкона с панели оператора Weintek. Структура пакета вполне понятна - но возникла проблема с вычислением CRC. Используя OPC сервер Крейт, получил отправляемые и получаемые пакеты. Попробовал вычислять CRC в панели - результат не совпадает с тем, который находится в сохранённых пакетах. При этом если организовать отправку аналогичных пакетов с панели, то ответ получаю без проблем.
Во вложении текст макроса из панели для вычисления CRC. Вроде бы сделал всё по алгоритму из руководства. Почему не получается правильное значение?

operation
23.08.2018, 10:10
При обмене через К-104 любых исполнений CRC не рассчитывается.

Михаил Русаков
23.08.2018, 20:10
Тогда ещё один вопрос. Ниже приведён обмен OPC сервера Крейт с Тэкон-19 через К-104
10:45:02:11:01:17:f0:60:16 //
68:06:06:68:05:02:02:15:08:18:3e:16 //
10:46:02:11:01:18:f0:62:16 //
68:06:06:68:06:02:00:04:25:15:46:16 //
68:0b:0b:68:47:02:14:07:01:05:02:00:00:00:00:6c:16 //
68:03:03:68:07:02:02:0b:16 //

10:41:02:11:01:00:80:d5:16 // запрос параметра
68:06:06:68:01:02:00:00:c8:42:0d:16
Запросы и ответы чередуются. По описанию протокола обмена второй и третий байт от конца запроса должны представлять собой контрольную сумму. Если послать с панели оператора такой запрос, то с К-104 придёт такой же ответ, как и в примере. Но если в запросе изменить один из байтов, которые должны быть контрольной суммой, то в ответ приходит один байт - e5.
Получается, что контрольная сумма рассчитывается при отправке запроса и тэкон или к-104 на неё реагируют?

operation
24.08.2018, 09:09
Контрольная сумма рассчитывается при отправке запроса.

В запросе 10:41:02:11:01:00:80:d5:16 - d5-контрольная сумма, 16-окончание посылки.

Михаил Русаков
24.08.2018, 20:54
Контрольная сумма рассчитывается при отправке запроса.
В запросе 10:41:02:11:01:00:80:d5:16 - d5-контрольная сумма, 16-окончание посылки.
Это изначально понятно было. Вопрос в том, как эту контрольную сумму рассчитать, чтобы сформировать запрос. В этом то и проблема. Получается контрольная сумма 1-байтная (в отличие от CRC)? Или всё-таки 2-х байтная ?

Дмитрий
29.08.2018, 13:52
Контрольная сумма 1 байтная и считается как "сумма байт без переноса" начиная от начала посылки.
Пример: 10:45:02:11:01:17:f0:60:16
10 - начало посылки
16 - окончание посылки
60 - контрольная сумма
Пример: 68:06:06:68:05:02:02:15:08:18:3e:16
68:06:06:68 - заголовок посылки
16 - окончание посылки
3e - контрольная сумма

Михаил Русаков
29.08.2018, 19:56
Всё понятно, спасибо за помощь. Проблема решена