Стартовая страница › Форумы › Ошибки в работе › Ошибки Коммуникатора › Значения прыгают.
- В этой теме 24 ответа, 3 участника, последнее обновление 7 лет, 1 месяц назад сделано Mikhail.
-
АвторСообщения
-
07.02.2017 в 16:57 #4424manjey73Участник
Ой, а вы стороннюю систему отключаете когда запускаете опрос Рапидой ?
Хотя Modbus TCP же, если ПЛК или что там поддерживает несколько сокетов то не должно влиять…- Этот ответ был изменен 7 лет, 1 месяц назад от manjey73.
08.02.2017 в 09:45 #4434iKasperУчастникКоллеги, Mikhail и manjey73
Совместными силами мы разобрались в 1 проблеме, как оказалось
После установке порядка байт 0123 всем значениям, я заметил что мое искомое целое слово убежало к второму значению, которое стало равняться 67608 вместо 2072.
Воспользовавшись парсером ознакомился и увидел в первом элементе первое слово нулевое, а второе значение второго слова, а в третьем целое слово которое убегало к второму элементу.
Вспомнив про Модбас, что адрес элемента смещается на единицу, я его сменил и порядок поменял с 0123 на 2301, в результате получил все корректные значения.
Сомневаюсь что скачки значений взаимосвязанны, но смотрю что будет.08.02.2017 в 09:48 #4435iKasperУчастникСтороннюю не отключал, пока проверял значения..
08.02.2017 в 10:12 #4436manjey73Участникда, 2301 у меня практически постоянно. вот для записи правда пришлось формулку лепить для переворота байтов…
И вот вопрос к Михаилу по примеру, который я не могу понять. При чтении 2301, а чтобы записать тот же float приходится с ним поступать так
Array.Copy(f, 0, o, 1, 1); // вот тут мне непонятен порядок байт
Array.Copy(f, 1, o, 0, 1); // приходится переставлять не 01 с 23
Array.Copy(f, 2, o, 3, 1); // а именно 0 и 1, 2 и 3 местами и это работает
Array.Copy(f, 3, o, 2, 1); // хотя при чтении именно 2301 указывается
и потом
Array.Resize(ref o, 8);
Double ou = BitConverter.ToDouble(o,0);
return ou;Что я не учел в архитектурах ПК и ПЛК ? а то пришлось методом тыка по сниферу прийти…
08.02.2017 в 11:13 #4445MikhailМодераторОтдельный сниффер не нужен, потому что в журнале лини связи отображается весь обмен.
По порядку байт: после осознания он забывается крайне быстро, потому что по стандарту Модбас указан определённый порядок, потом на него накладывается порядок, указанный в шаблоне, ещё накладывается порядок, принятый в ОС. Проще всего методом тыка. Я хочу сделать калькулятор, который будет сразу выдавать все возможные варианты и в разы ускорять метод тыка. Но руки пока не дошли.Кстати, грамотные разработчики устройств на попытку считать регистры с неверным смещением выдают ошибку адреса.
iKasper, на текущий момент данная проблема решена?08.02.2017 в 13:42 #4449iKasperУчастникMikhail, да проблема решена, так же скачки пропали. На протяжении 5 часов все значения корректны.
Большое спасибо.13.02.2017 в 10:40 #4535iKasperУчастникКоллеги, после мониторинга, проблема с прыгающими значениями сохранилась.
В отличии от предыдущего раза проблема проявляется спустя сутки.
Из изменений увеличили таймаут до 2500 и паузу до 1000.
Какие есть еще предложения?
Во время скачков в журнале появляется сообщение: Некорректная длина PDU!
После перезапуска коммуникатора, значения все выравниваются.13.02.2017 в 13:25 #4538MikhailМодераторПри возникновении ошибки «Некорректная длина PDU!» данные тегов должны пропадать вообще, а не прыгать. Чтобы найти причину прыгающих значений, нужно точно найти тот пакет Модбас, который декодируется не так, как Вам нужно, а затем анализировать, что в нём не так.
Нужно в шаблоне устройства оставить только те данные, на которых проявляется проблема. Затем скопировать ответ устройства из лога по байтам. Далее отправлять его на Коммуникатор вместо устройства с помощью какой-нибудь утилиты, например, Hercules. Если ошибка со значениями воспроизводится, то думать дальше.
16.02.2017 в 10:09 #4629iKasperУчастникКоллеги, добрый день.
Подскажите в какую сторону копать
Настроил передачу данных в MYSSQL пару дней поработал стабильно, а сейчас в логах постоянно такая ошибка: 2017-02-16 10:04:09 Ошибка при экспорте текущих данных в БД MySQL — localhost:3307: Duplicate entry ‘2017-02-16 09:53:55-1020’ for key ‘PRIMARY’
И конечно значения в базе MySQL не обновляются.16.02.2017 в 11:27 #4631MikhailМодераторДобрый день!
Заведите, пожалуйста, отдельную тему для этой проблемы. Отключите, в качестве теста, от опроса КП, которое использует входной канал 1020. -
АвторСообщения
- Вы должны авторизироваться для ответа в этой теме.