Форум TRACE MODE: техническая поддержка   
мой профиль / my profile авторизация / login | регистрация / register | поиск / search | часто задаваемые вопросы / faq | начало / forum home

  Следующая старая тема / next oldest topic   Следующая новая тема / next newest topic
» Форум TRACE MODE: техническая поддержка » ТЕХНИЧЕСКАЯ ПОДДЕРЖКА / TECHNICAL SUPPORT TRACE MODE 5 » TRACE MODE 5 бесплатная версия / TRACE MODE 5 Free version » Связь по ModBus RTU в Trace Mode 5.11

   
Автор / Author Тема / Topic: Связь по ModBus RTU в Trace Mode 5.11
vladbond
Junior Member / Новичок
Участник № / Member № 171


Icon 9 отправлено / posted      Профиль для / Profile for vladbond           Редактировать/удалить сообщение / Edit/Delete Post 
В версии 5.11 в протокол ModBus RTU был добавлен контроль CRC.
1. Можно узнать алгоритм вычисления этой контрольной суммы?
2. Можно ли его отключать, если нет необходимости?
Если можно, то как?

PS: Ответ нужен срочно!

Сообщения / Posts 11 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post 
Алгоритм вычисления контрольной суммы приводится в стандарте MODBUS (он доступен на сайте фирмы Schneider Electric). У нас, к сожалению, нет этого стандарта в электронном виде. Привожу вам выдержку из стандарта.
"Сообщение (только биты данных, без учета старт/стоповых бит и бит четности рассматривается как одно последовательное двоичное число, у которого старший значащий бит (MSB) передается первым. Сообщение умножается на X**16 (сдвигается влево на 16 бит), а затем делится на (X**16 + X**15 + X**2 + 1), выражаемое как двоичное число 11000000000000101.
Целая часть результата игнорируется, а 16-битный остаток (предварительно инициализированный единицами для предотвращения случая, когда все сообщение состоит из нулей) добавляется к сообщению (старшим байтом вперед) как 2 байта контрольной суммы. Полученное сообщение, включающее CRC, затем в приемнике делится на тот же полином. Если ошибок не было, остаток от деления должен быть нулевым. Приемное устройство может рассчитать CRC и сравнить ее с переданной. Вся арифметика выполняется по модулю 2 (без переноса)."

Отменить проверку контрольной суммы нельзя.
Мы вынуждены подчиняться требованиям стандарта. В противном случае гарантировать декларированную стандартом надежность обмена данными нельзя.

Сообщения / Posts 17106 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
vladbond
Junior Member / Новичок
Участник № / Member № 171


Icon 5 отправлено / posted      Профиль для / Profile for vladbond           Редактировать/удалить сообщение / Edit/Delete Post 
Мы проверили контрольную сумму запросов с Trace Mode 5.11 и ответов нашего контроллера. Контрольные суммы совпадают!
По протоколу ModBus мы передаем числа в формате float. Самое интересное, что Trace Mode 5.10 нормально принимает ответ нашего контроллера, а версия Trace Mode 5.11 ничего не принимает!

Может, что подскажете?

Сообщения / Posts 11 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post 
Мы еще раз перепроверили обмен по MODBUS в релизах 5.10, 5.11 и 5.12.
Никаких ошибок не обнаружили.
В Вашем варианте "правильная" работа релиза 5.10 говорит о том, что при отсутствии проверки контрольной суммы ответы устройства воспринимаются правильно.
Релиз 5.11 проверяет контрольную сумму и дает "недостоверность". Значит, все-таки что-то в принятой контрольной сумме неверно.

Сообщения / Posts 17106 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
vladbond
Junior Member / Новичок
Участник № / Member № 171


Icon 11 отправлено / posted      Профиль для / Profile for vladbond           Редактировать/удалить сообщение / Edit/Delete Post 
Насчет алгоритма вычисления CRC:

Если можно точнее указать адрес в инете где именно находится описание указанного алгоритма, потому что мне не удается найти.
Мне известно два алгортма вычисления CRC, но они громоздки, а ваш, на первый взгляд, кажется проше.

Но по описанному вами алгоритму CRC нужный не получается (или я что-то не так понял или вы что-то не дописали).
Понятнее всего будет мне, если вы рассмотрите этот алгоритм на примере.
Последовательность данных(hex): 12 04 00 2e 00 02
CRC должен получится 3363 в hex. Так вычисляется в Trace Mode и в моей программе по другому алгоритму.

Сообщения / Posts 11 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post 
Нам затруднительно проверять правильность формирования контрольной суммы.
Наш драйвер полностью соответствует протоколу http://www.modicon.com/techpubs/toc7.html
Английское описание протокола.

Сообщения / Posts 17106 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
   

   Закрыть тему / Close Topic   Feature Topic   Переместить топик / Move Topic   Удалить топик / Delete Topic Следующая старая тема / next oldest topic   Следующая новая тема / next newest topic
 - Printer-friendly view of this topic
Перейти к / Hop To


Новости АСУ ТП / News | SCADA / HMI | Обучение / Trainings | Свяжитесь с нами / Contact Us



Powered by Infopop Corporation
UBB.classic™ 6.7.2