УкраїнськаEnglishmRussian
Вхід/Новий
Закрита тема

[BugWrong] [Зачинена] Транспортный протокол.ModBus


Автор Повідомлення
Повідомлення створено: 15. 06. 2015 [12:41]
monia
Олег Намятов
Автор теми
Зареєстрован(а) с: 21.05.2012
Повідомлення: 173
Заметил непонятную запись в таблицу регистров.

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

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




Вкладений файл

Снимок экрана от 2015-06-15 12:11:10.png (Тип файлу: image/png, Розмір: 664.43 кілобайтів) — 1530 завантажень
Повідомлення створено: 15. 06. 2015 [12:57]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3747
"monia" wrote:

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

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

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

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

Learn, learn and learn better than work, work and work.
Повідомлення створено: 15. 06. 2015 [13:03]
monia
Олег Намятов
Автор теми
Зареєстрован(а) с: 21.05.2012
Повідомлення: 173
Немного не дописал

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

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

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


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

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


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

[Повідомлення редагувалось 2 раз(ів), останній раз 15.06.2015 в 13:25.]
Повідомлення створено: 15. 06. 2015 [15:12]
monia
Олег Намятов
Автор теми
Зареєстрован(а) с: 21.05.2012
Повідомлення: 173
Нашел еще одну запись левых регистров

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

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

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

[Повідомлення редагувалось 1 раз(ів), останній раз 15.06.2015 в 15:16.]
Вкладений файл

Снимок экрана от 2015-06-15 14:11:45.png (Тип файлу: image/png, Розмір: 825.18 кілобайтів) — 1387 завантажень
Снимок экрана от 2015-06-15 15:00:37.png (Тип файлу: image/png, Розмір: 629.44 кілобайтів) — 1414 завантажень
Повідомлення створено: 15. 06. 2015 [17:48]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3747
"monia" wrote:

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

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

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

"monia" wrote:

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

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

Learn, learn and learn better than work, work and work.
Повідомлення створено: 16. 06. 2015 [08:07]
monia
Олег Намятов
Автор теми
Зареєстрован(а) с: 21.05.2012
Повідомлення: 173
А это для TCP к чему? Они и не смогут на один порт подключиться в принципе.

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

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

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

Если на стороне OpeSCADA то как?
Я видел в OpenSCADA только Отчет для ModBus модуля, но этого для отладки недостаточно. По скольку неделю неотрывно в моник пялится не реально.
Повідомлення створено: 16. 06. 2015 [08:38]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3747
"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.
Повідомлення створено: 16. 06. 2015 [10:20]
monia
Олег Намятов
Автор теми
Зареєстрован(а) с: 21.05.2012
Повідомлення: 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 не так

[Повідомлення редагувалось 1 раз(ів), останній раз 16.06.2015 в 11:06.]
Повідомлення створено: 16. 06. 2015 [11:25]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3747
"monia" wrote:

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

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

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

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


Тільки адміністратори можуть відповідати на цю тему
20901