EnglishУкраїнськаmRussian
Login/New
Closed topic

[BugWrong] [Closed] Транспортный протокол.ModBus


Author Message
Written on: 15. 06. 2015 [12:41]
monia
Олег Намятов
Topic creator
registered since: 21.05.2012
Posts: 173
Заметил непонятную запись в таблицу регистров.

Сначала подумал, что проблема в программе контроллера(PLC).
Потом немного под разобравшись в архивах параметров (новая запись заноситься по изменению временной переменной)
заметил, что запись в архив занеслась как и положено, но с частью не корректных регистров (регистры не относящиеся к данному PLC, т.е. PLC не отправлял такие данные)

на рисунке с лева выделена область резкого изменения данных (U_V2fA и U_V2fB - по иди это 2 WORD-а составляющие временя изменения параметров), справа показана последовательность регистров




Attachment

Снимок экрана от 2015-06-15 12:11:10.png (File type: image/png, Size: 664.43 kilobytes) — 1569 downloads
Written on: 15. 06. 2015 [12:57]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 3750
"monia" wrote:

Сначала подумал, что проблема в программе контроллера(PLC).
Потом немного под разобравшись в архивах параметров (новая запись заноситься по изменению временной переменной)
заметил, что запись в архив занеслась как и положено, но с частью не корректных регистров (регистры не относящиеся к данному PLC, т.е. PLC не отправлял такие данные)

на рисунке с лева выделена область резкого изменения данных (U_V2fA и U_V2fB - по иди это 2 WORD-а составляющие временя изменения параметров), справа показана последовательность регистров

Явно это на ошибку в OpenSCADA не указывает и скорее всего тут Ваше непонимание происходящего или обработки запросов, например, того-же EVAL.

Кроме того у меня подобное нигде не воспроизводится, а значит выяснить-исправить причину этому я не могу в принципе, следовательно Вам и выяснять! Или воспроизводите на ДемоБД.

Learn, learn and learn better than work, work and work.
Written on: 15. 06. 2015 [13:03]
monia
Олег Намятов
Topic creator
registered since: 21.05.2012
Posts: 173
Немного не дописал

По ощущениям где то в OpenSCADA происходит смещение или не высвобождение в памяти

Такая проблема не периодична и возникает на разных узлах Транспортный протокол.ModBus. Может возникнуть 1 раз в неделю и на одном узле, или несколько раз в день на разных узлах.

Сразу оговорюсь:
1) проблема возникла у нескольких программистов нашей компании, которые независимо друг от друга пишут свой код передач и приема данных по ModBusTCP
2) Моя реализация кода на передающем PLC позволяет передавать данные только пачками. 3 пачки с 3 временными метками: аварийные, не аварийные и аналоговые параметры
Written on: 15. 06. 2015 [13:10]
monia
Олег Намятов
Topic creator
registered since: 21.05.2012
Posts: 173
Явно это на ошибку в OpenSCADA не указывает и скорее всего тут Ваше непонимание происходящего или обработки запросов, например, того-же EVAL.


Да можно и так сказать, но причем здесь EVAL

В таблицу регистров, данные я не записываю из OpеnSCADA (я имею ввиду столбец "Значения"),
а все что в этих регистрах я заношу в БД, после предварительной обработки (деление на 10 или на 100 + разложение на биты)
и если посмотреть слева на рисунке видно что 1 запись сильно отличается, а точнее ее часть
и эта часть каким то образом попала с другого узала Транспортный протокол.ModBus


Кстати, такое изменение регистров всегда разное, происходит в разных регистрах и на разных узлах Транспортный протокол.ModBus.
т.е. нет никакой закономерности, по крайне мери за последние 3 месяца я ее не нашел

[This article was edited 2 times, at last 15.06.2015 at 13:25.]
Written on: 15. 06. 2015 [15:12]
monia
Олег Намятов
Topic creator
registered since: 21.05.2012
Posts: 173
Нашел еще одну запись левых регистров

на левой стороне показываю передаваемые регистры на сервер, на правой прием этих регистров
а на втором рисунке данные в БД

т.е. сначала регистры передались нормально, а потом по какой то причини они перезаписались левыми регистрами
При этом PLC не чего на сервер не передавал

P.S. на сервере настроил фаервол, определенный IP (PLC) может вещать на определенный порт. т.е. несколько PLC не могут вещать на один и тот же порт

[This article was edited 1 times, at last 15.06.2015 at 15:16.]
Attachment

Снимок экрана от 2015-06-15 14:11:45.png (File type: image/png, Size: 825.18 kilobytes) — 1429 downloads
Снимок экрана от 2015-06-15 15:00:37.png (File type: image/png, Size: 629.44 kilobytes) — 1451 downloads
Written on: 15. 06. 2015 [17:48]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 3750
"monia" wrote:

на левой стороне показываю передаваемые регистры на сервер, на правой прием этих регистров
а на втором рисунке данные в БД

т.е. сначала регистры передались нормально, а потом по какой то причини они перезаписались левыми регистрами
При этом PLC не чего на сервер не передавал

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

"monia" wrote:

P.S. на сервере настроил фаервол, определенный IP (PLC) может вещать на определенный порт. т.е. несколько PLC не могут вещать на один и тот же порт

А это для TCP к чему? Они и не смогут на один порт подключиться в принципе.

Learn, learn and learn better than work, work and work.
Written on: 16. 06. 2015 [08:07]
monia
Олег Намятов
Topic creator
registered since: 21.05.2012
Posts: 173
А это для TCP к чему? Они и не смогут на один порт подключиться в принципе.

Для того, что бы избежать ситуации случайного вещания PLCs на 1 порт сервера
По скольку Beckhoff не поддерживает постоянного соединения и устанавливает его при необходимости передачи пакета на сервер

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

Где имеешь ввиду включить отладку, на стороне контроллера или на стороне OpenSCADA?

Если на стороне OpeSCADA то как?
Я видел в OpenSCADA только Отчет для ModBus модуля, но этого для отладки недостаточно. По скольку неделю неотрывно в моник пялится не реально.
Written on: 16. 06. 2015 [08:38]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 3750
"monia" wrote:

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

Где имеешь ввиду включить отладку, на стороне контроллера или на стороне OpenSCADA?

Естественно, или к чему тут этот пост и на что грешим?!

"monia" wrote:

Если на стороне OpeSCADA то как?

Если это рабочая версия, то для сервера ModBus тут: http://wiki.oscada.org/Doc/OpisanieProgrammy#h827-1
а для клиента тут: http://wiki.oscada.org/Doc/OpisanieProgrammy/part4/files?get=subsys_daq_mod_cntr_diagn.png

И сопоставляйте затем на время проблемы, что там и куда реально пришло.


Learn, learn and learn better than work, work and work.
Written on: 16. 06. 2015 [10:20]
monia
Олег Намятов
Topic creator
registered since: 21.05.2012
Posts: 173
Если это рабочая версия, то для сервера ModBus тут:http://wiki.oscada.org/Doc/OpisanieProgrammy#h827-1

Поконкретней пожалуйста.

Можешь рассказать или кинуть ссылку на принцип передачи/сбора данных(регистров) с транспорта и передачи их в таблицу узла "Транспортный протокол.ModBus"


Мои предположение, что где то возникает сбой при передачи параметров с транспорта в узлы Транспортный протокол.ModBus

по скольку:
1) программа на контроллерах (94 шт.) передает данные пачками в конкретные порты и регистры на сервере.
И если сбой был бы в программе, то проблема наблюдалась бы постоянна, часто, с определенной периодичностью и во всех узлах Транспортный протокол.ModBus, но данная проблема возникает редко и апериодически. Кстати из-за этого сложно отследить ошибку встроенными методами самой OpenSCADA, по скольку OpenSCADA не умеет вести лог входящих пакетов или ModBus запросов в узлах Транспортный протокол.ModBus
2) На сервере настроен фаервол (для определенного IP открыт определенный порт), что исключает возможность случайного перепутанного порта в коде передатчика параметров, в программе контроллера
3) на рисунках я показал, что передавал контроллер и когда, а также, что творится в таблице регистров.
Рисунком я хотел сказать, что регистры были изменены не контроллером, а самой OpenSCADA в момент распределения данных с транспорта в узлы Транспортный протокол.ModBus. Я повторюсь, проблема возникает редко и апериодически.

На рисунке, время передачи данных на сервер была 02.06.2015 08:14:23 и данные были записаны в регистры R11w-R13w, что свидетельствует запись в БД
Если перевести 2 WORD в DT (R12w, R13w) то получим время 11.06.2015 20:18:46 - скорее всего это время прихода аналоговых параметров, с другого контроллера.
Но это не возможно, по скольку на сервере стоит фаервол (см. п2). Отсюда и вывод напрашивается, что что-то в OpenSCADA не так

[This article was edited 1 times, at last 16.06.2015 at 11:06.]
Written on: 16. 06. 2015 [11:25]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 3750
"monia" wrote:

Но это не возможно, по скольку на сервере стоит фаервол (см. п2). Отсюда и вывод напрашивается, что что-то в OpenSCADA не так

Что не так, конкретно!

Ещё раз повторяю!
Пока у меня проблема не воспроизведена я её не исправляю.
В рамка бесплатного сервиса тут я не вникаю в детали пользователей.
Следовательно, воспроизводите на ДемоБД если хотите показать мне проблему!

Learn, learn and learn better than work, work and work.


Only administrators can answer to this topic
10879