Segnetics

Вернуться   Segnetics > Форум Segnetics > Связь с внешним миром

Связь с внешним миром Modbus, RS232, RS485, Lon и другое.

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 15.03.2018, 06:25   #1
tuxnsk
Новичок
 
Регистрация: Jun 2017
Сообщения: 19
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Случайные значения регистра аварий

Есть система диспетчеризации примерно десятка контроллеров, с них по RS485-ому собираются значения регистров на единый сервер. В контроллерах везде залита программа из конструктора, практически без изменений.
Проблема в следующем, периодически на некоторых контроллерах из регистра аварии считывается случайное значение (может и из других, не знаю, но по регистру аварии у меня приходят уведомления), притом происходит это на случайных контроллерах, и временами. К примеру один контроллер начал неделю назад рассылать ошибки с периодом примерно раз в пол дня, сейчас вроде бы успокоился, а вчера ночью другой начал и до утра он прислал сообщение примерно 150 раз (поспать сволочь не дал).
Сразу же при получении значения с авариями, следующим запросом приходит реальное значение, можно конечно программно сделать задержку на уведомление, но все равно, по моему, такое поведение не правильное. С чем это может быть связано?
Сообщения приходят с правильно подписанной CRC, поэтому на помеху тут грешить нельзя, тут явно контроллер так отвечает.
Период опроса примерно раз в секунду, сами контроллеры скорее всего или C2010, или 2G, чуть позже уточню.

Пример ошибочного ответа:
[ 4, 3, 4, 199, 214, 192, 219, 99, 228 ]
Следом через секунду пришел ответ:
[ 4, 3, 4, 0, 0, 0, 0, 175, 51 ]
tuxnsk вне форума   Ответить с цитированием
Старый 15.03.2018, 11:31   #2
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 019
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Случайные значения регистра аварий

Цитата
Сообщение от tuxnsk Посмотреть сообщение
Есть система диспетчеризации примерно десятка контроллеров, с них по RS485-ому собираются значения регистров на единый сервер. В контроллерах везде залита программа из конструктора, практически без изменений.
Проблема в следующем, периодически на некоторых контроллерах из регистра аварии считывается случайное значение (может и из других, не знаю, но по регистру аварии у меня приходят уведомления), притом происходит это на случайных контроллерах, и временами. К примеру один контроллер начал неделю назад рассылать ошибки с периодом примерно раз в пол дня, сейчас вроде бы успокоился, а вчера ночью другой начал и до утра он прислал сообщение примерно 150 раз (поспать сволочь не дал).
Сразу же при получении значения с авариями, следующим запросом приходит реальное значение, можно конечно программно сделать задержку на уведомление, но все равно, по моему, такое поведение не правильное. С чем это может быть связано?
Сообщения приходят с правильно подписанной CRC, поэтому на помеху тут грешить нельзя, тут явно контроллер так отвечает.
Период опроса примерно раз в секунду, сами контроллеры скорее всего или C2010, или 2G, чуть позже уточню.

Пример ошибочного ответа:
[ 4, 3, 4, 199, 214, 192, 219, 99, 228 ]
Следом через секунду пришел ответ:
[ 4, 3, 4, 0, 0, 0, 0, 175, 51 ]
Нужно больше данных и они должны быть гораздо подробнее. У нас в офисе работает вентустановка, которая не донимает нас СМС-ками. У моего друга на даче SMH2Gi тоже за зиму не одной лишней СМС не сгенерировал. Есть и ещё примеры.

Поэтому вашу проблему нужно исследовать. Чем подробнее, тем лучше.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием
Старый 15.03.2018, 11:51   #3
tuxnsk
Новичок
 
Регистрация: Jun 2017
Сообщения: 19
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Случайные значения регистра аварий

Ну из 11, пока, подключенных контроллеров, только два почти регулярно ругаются, остальные молчат, или действительно по делу только ругаются.
Модель контроллеров я сегодня постараюсь узнать, а какие еще данные могут понадобиться?
Могу полный лог запросов/ответов сделать, если это поможет.
tuxnsk вне форума   Ответить с цитированием
Старый 15.03.2018, 11:54   #4
Gromov
Уволен из Сегнетикс
 
Регистрация: Nov 2015
Адрес: CПб/ВЛГ
Сообщения: 0
Благодарил(а): 0 раз(а)
Поблагодарили: 1 раз в 1 сообщении
По умолчанию Ответ: Случайные значения регистра аварий

Ну, хотя бы, какие аварии фиксируются в журнале? Какие сообщения приходят?


__________________
В сегнетиксе не работаю с самого начала 2019 года.
Gromov вне форума   Ответить с цитированием
Старый 15.03.2018, 11:59   #5
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 019
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Случайные значения регистра аварий

Цитата
Сообщение от tuxnsk Посмотреть сообщение
Ну из 11, пока, подключенных контроллеров, только два почти регулярно ругаются, остальные молчат, или действительно по делу только ругаются.
Модель контроллеров я сегодня постараюсь узнать, а какие еще данные могут понадобиться?
Могу полный лог запросов/ответов сделать, если это поможет.
Нужны полная карта сети, сетевые настройки контроллеров, причём не из проекта, а физически пробежаться и проверить.

Мож по факту у вас пара контроллеров на одном адресе и данные калечатся каким-то образом. Проходили уже такое на форуме.

Также проекты всех контроллеров, логи обмена по контроллерам отдельно и общий. Как можно больше всего, даже если 90% этого не пригодится. Лучше 90% лишнего, чем отсутствие 0.01% нужного.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием
Старый 15.03.2018, 12:13   #6
tuxnsk
Новичок
 
Регистрация: Jun 2017
Сообщения: 19
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Случайные значения регистра аварий

Цитата
Сообщение от Gromov Посмотреть сообщение
Ну, хотя бы, какие аварии фиксируются в журнале? Какие сообщения приходят?
Хех, случайные, вот пример (рекуператор в аварии - это норма):

[15.03.18 09:05]
Авария!
Система: XXXXX, Приточно-вытяжная система (ПВ)
Статус: 1101430188
Описание: авария жалюзи вытяжки, авария вентилятора притока, защита от заморозки, перегрев ТЭН, авария компрессора, авария увлажнителя, авария насоса ВоОхл, угроза пожара, обрыв датчика, обрыв связи, фильтр вытяжки, ошибка версии, неизвестная ошибка, неизвестная ошибка, неизвестная ошибка, невозможность регулировки СО2 или Расхода

[15.03.18 09:05]
Авария!
Система: XXXXX, Приточно-вытяжная система (ПВ)
Статус: 512
Описание: авария рекуператора

[15.03.18 09:19]
Авария!
Система: XXXXX, Приточно-вытяжная система (ПВ)
Статус: 1101248370
Описание: авария жалюзи притока, авария вентилятора вытяжки, защита от заморозки, перегруз насоса ВоКал, авария компрессора, авария рекуператора, авария увлажнителя, угроза пожара, обрыв датчика, нет воды, фильтр притока, фильтр вытяжки, неизвестная ошибка, неизвестная ошибка, неизвестная ошибка, невозможность регулировки СО2 или Расхода

[15.03.18 09:20]
Авария!
Система: XXXXX, Приточно-вытяжная система (ПВ)
Статус: 512
Описание: авария рекуператора

[15.03.18 09:47]
Авария!
Система: XXXXX, Приточно-вытяжная система (ПВ)
Статус: 1101004800
Описание: неизвестная ошибка, неизвестная ошибка, неизвестная ошибка, невозможность регулировки СО2 или Расхода

[15.03.18 09:48]
Авария!
Система: XXXXX, Приточно-вытяжная система (ПВ)
Статус: 512
Описание: авария рекуператора
tuxnsk вне форума   Ответить с цитированием
Старый 15.03.2018, 12:25   #7
tuxnsk
Новичок
 
Регистрация: Jun 2017
Сообщения: 19
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Случайные значения регистра аварий

Цитата:
Сообщение от Arsie Посмотреть сообщение
Нужны полная карта сети, сетевые настройки контроллеров, причём не из проекта, а физически пробежаться и проверить.

Мож по факту у вас пара контроллеров на одном адресе и данные калечатся каким-то образом. Проходили уже такое на форуме.

Также проекты всех контроллеров, логи обмена по контроллерам отдельно и общий. Как можно больше всего, даже если 90% этого не пригодится. Лучше 90% лишнего, чем отсутствие 0.01% нужного.
Нет, по перехлесту адресов не может быть. всего два контроллера в сети (ИТП с адресом 1 и ПВ с адресом 2, притом у ИТП вообще опроса пока не идет). А вот качество связи, да, хромает, примерно 75% запросов только проходят. Но проблемы со связью всегда были, а болезнь только ща появилась (на данный момент пока перестал ругаться), при этом система на этом контроллере уже работает 120 дней.

Карта регистров контроллера в приложении. Логи поставлю сегодня собираться, как снова забуянит, принесу. Программу чуть позже тоже скину (программист в командировке, все у него).
Миниатюры
Нажмите на картинку для увеличения

Название:  scr.jpg
Просмотров: 44
Размер:  152.8 Кбайт  
tuxnsk вне форума   Ответить с цитированием
Старый 15.03.2018, 16:46   #8
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 019
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Случайные значения регистра аварий

Цитата
Сообщение от tuxnsk Посмотреть сообщение
Нет, по перехлесту адресов не может быть. всего два контроллера в сети (ИТП с адресом 1 и ПВ с адресом 2, притом у ИТП вообще опроса пока не идет).
Цитата
Сообщение от tuxnsk Посмотреть сообщение
Есть система диспетчеризации примерно десятка контроллеров, с них по RS485-ому собираются значения регистров на единый сервер. В контроллерах везде залита программа из конструктора, практически без изменений.
Прокомментируйте выделенное, пожалуйста.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием
Старый 19.03.2018, 11:00   #9
tuxnsk
Новичок
 
Регистрация: Jun 2017
Сообщения: 19
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Случайные значения регистра аварий

Система раскидана по городу в разных зданиях и через интернет идет сбор данных. В пределах одного здания, в данному случае, в сети RS485 находятся слейвом два контроллера. Мое устройство мастером с них собирает данные и высылает на общий сервер. Снифер я поставил на порт 485-го, и эти данные пришли с него, поэтому передача по езернету в данном случае нам не важна.
tuxnsk вне форума   Ответить с цитированием
Старый 21.03.2018, 12:16   #10
kostkost
Senior Member
 
Регистрация: Apr 2008
Сообщения: 204
Благодарил(а): 1 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Случайные значения регистра аварий

обычно это связано с неправильной обработкой запросов и ответов на стороне скада, отсутствием проверки целостности пакетов при передачи
Простого решения особенно для скады я думаю ты не найдешь

У меня моя прога читает данные с 4 х контроллеров и периодически раз в сутки пакеты приходят битые
kostkost вне форума   Ответить с цитированием
Старый 22.03.2018, 06:24   #11
tuxnsk
Новичок
 
Регистрация: Jun 2017
Сообщения: 19
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Случайные значения регистра аварий

Цитата
Сообщение от kostkost Посмотреть сообщение
обычно это связано с неправильной обработкой запросов и ответов на стороне скада, отсутствием проверки целостности пакетов при передачи
Простого решения особенно для скады я думаю ты не найдешь

У меня моя прога читает данные с 4 х контроллеров и периодически раз в сутки пакеты приходят битые
Ну у меня нет скады, софтинка самописная, в вебморде красивые картинки по данным рисует, а модбас библиотекой обрабатывается, я ее код подправил, чтобы она в файл регистр аварии писала, получил данные из первого сообщения, где и данные вроде как нормальные, и CRC правильная. А пакеты битые у меня часто приходят, и успешно библиотекой отбрасываются (линия плохая, каждый пятый запрос вообще не проходит). Но чтобы от помехи сформировалась верная CRC (или наложением двух ответов), вероятность очень маленькая.

Полный лог запросов все не успеваю сделать, виноват, постараюсь в ближайшее время сделать...
tuxnsk вне форума   Ответить с цитированием
Старый 22.03.2018, 10:44   #12
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 019
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Случайные значения регистра аварий

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

Полный лог запросов все не успеваю сделать, виноват, постараюсь в ближайшее время сделать...
Я частенько встречал проблему, что запросы и ответы в буферах "перемешиваются". Для RTU это крайне редкая вещь, а вот для TCP сплошь и рядом.

На эти грабли даже инсат наступил в своём сервере, а это типа большая и типа крутая контора.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием
Старый 26.03.2018, 19:40   #13
tuxnsk
Новичок
 
Регистрация: Jun 2017
Сообщения: 19
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Случайные значения регистра аварий

Таки отловил проблему, в общем неверный ответ присылал все же контроллер, но он был в этом не виновен
В общем дело было так, сегодня подключали еще один объект с очень хреновой линией связи (менее 50% запросов проходило) и на нем свистопляска в показаниях куда чаще начала проявляться. Залез в библиотечку модбаса (которой опрашивал контроллеры), сделал вывод всех данных в лог и поймал такую пачку сообщений:

325638 < [251]
325679 < [255]
325697 < [183]

325709 > [1,3,160,33,0,2,182,1]
325721 < [1,3,4,27,210,190,228,45,5]
325733 > [1,3,160,33,0,2,182,1]
325734 < [254]
325745 > [1,3,160,39,0,2,86,0]
325746 < [1,3,4,27,210,190,228,45,5]

325754 < [254]
325757 > [1,3,160,41,0,2,55,195]

(первая колонка - время в миллисекундах, дальше данные, зеленый запрос, красный - ответ)

Жирным выделил момент, когда произошла описанная мною ситуация, для тех кто не понял, поясню... По логу видно что прилетают иногда одиночные байты данных - которые на самом деле не являются данными, а просто помеха. В выделенном куске кода эта помеха и внесла смуту. По порядку:
[1,3,160,33,0,2,182,1] - тут мы запрашиваем данные с некоего регистра (ПЛК 1, функция чтения 3, адрес 160,33, 2 регистра, CRC)
[254] - тут прилетела помеха и библиотека решила что вот и ответ пришел, само собой такой пакет распознался как корявые данные и библиотека сообщила программе что данные пришли криво, у меня в коде при таких ситуациях делаются повторно несколько попыток, и это как раз была последняя. Данные мы не получили, да и хрен с ними, чтобы не застревать на одном месте, запрашиваем следующей строкой следующие регистры:
[1,3,160,39,0,2,86,0] - адреса следующих регистров 160,39 (какраз мой регистр аварии). Вот тут и возникла ситуация, когда контроллер предыдущий запрос нормально принял, начал доставать из себя данные и готовиться выдать их на линию, и что там какие-то помехи были, он и не в курсе (и что следующий запрос прилетел уже). И само собой далее контроллер отвечает этими данными:
[1,3,4,27,210,190,228,45,5], но так как по логике программы опроса уже запрос улетел на следущую порцию данных, то программа и ожидает их, а в реальности данные прилетают из предыдущего регистра. В результате и получаем достоверные по CRC данные, но не в том регистре где ожидали.

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

Последний раз редактировалось tuxnsk, 26.03.2018 в 19:55
tuxnsk вне форума   Ответить с цитированием
Старый 26.03.2018, 21:47   #14
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 019
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Случайные значения регистра аварий

Цитата
Сообщение от tuxnsk Посмотреть сообщение
Таки отловил проблему, в общем неверный ответ присылал все же контроллер, но он был в этом не виновен
Что и требовалось доказать, всё перемешалось в буферах


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать свои сообщения

BB code is Вкл.
[IMG] код Вкл.
HTML код Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сохраняются значения в TRIM5 после обрыва связи с контроллером SMH2G kodmse SMLogix 5 14.04.2018 08:47
журнал аварий после перезапуска скады очищается JohnV AutoSCADA (вентиляция) 8 05.04.2014 10:24


Часовой пояс GMT +4, время: 00:52.


Версия vBulletin: 3.8.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Segnetics 2005 - 2023