Стартовая страница › Форумы › Rapid SCADA на Linux-контроллерах и Raspberry Pi › Ошибка ScadaComm
- В этой теме 79 ответов, 3 участника, последнее обновление 9 лет, 6 месяцев назад сделано
manjey73.
-
АвторЗаписи
-
20.06.2016 в 11:55 #2337
djbond07УчастникПростите, автоматически только на наш домен распространилось. Вот новая ссылка.
https://drive.google.com/folderview?id=0Bzn5jzldeU-ddXByNGltOG5oVHc&usp=sharing
Кстати, однозначно это условие игнорируется, потому что в сообщениях при запуске я явно успеваю прочитать строки, что скада сервер запущен, скада коммуникатор запущен, итд.
20.06.2016 в 12:28 #2338
djbond07УчастникМихаил, тут явно какая-то недоработка. Порылся в демонах. там эта строчка с отложенным запускам закомментирована в самом начале, и больше аттрибуты эти в коде нигде не встречаются. Как я понимаю, нужно в тело do-start добавить $network $time итд…Подскажите, куда именно и как это прописать? Думаю, что это решит проблему.
Файлы с демонами прилагаю
https://drive.google.com/open?id=0Bzn5jzldeU-dck1CRVFQbUJsR3c20.06.2016 в 18:12 #2346
djbond07УчастникНет, я неправ) пытаюсь добраться до истины через логи демонов.
20.06.2016 в 18:22 #2348
MikhailМодераторОчень короткие логи — закономерности не видно. Пусть программы поработают минут 10. Достаточно только 2 основных файлов логов Сервера и Коммуникатора.
Поэкспериментируйте с запуском демонов, пожалуйста. Со своей стороны на основе Ваших данных я постараюсь найти причину сбоя связи, связь должна восстанавливаться независимо от наличия часов. Нужно понять, почему так происходит.
21.06.2016 в 10:51 #2352
djbond07УчастникДобрый день! Вот длинные логи, но в них ничего нового я не увидел. Добавил в папку логи запуска демонов (daemon.log). Кстати, судя по ним сначала запускается коммуникатор, а потом сервер. Так и должно быть?
Ещё раз прошу обратить внимание на лог коммуникатора, и на ту строчку, где время обновляется. После обновления времени коммуникатор запрашивает статус состояния сервера, после этого отключается от сервера и не может подключиться. После перезагрузки всей скады в логах коммуникатора тоже есть ошибка
Error connecting to SCADA-Server: Connection refused
Disconnect from SCADA-Server
Unable to start operation due to SCADA-Server communication error.
Delay before trying again
Но после этого переподключение к серверу происходит хорошо, так как состояние сервера уже не запрашивается.PS: А как у Вас работает скада? RTC у Вас на RasPi?
21.06.2016 в 11:41 #2353
djbond07УчастникОпять же такой момент. Если скаду перезагружать, а не выключать, то запроса Request SCADA-Server state не происходит, лог выглядит так
2016-06-20 18:31:18 <raspberrypi><root><ACT> ScadaCommService 4.5.0.5 is started
2016-06-20 18:31:19 <raspberrypi><root><ACT> Load device library: KpModbus.dll
2016-06-20 18:31:22 <raspberrypi><root><ACT> Connect to SCADA-Server «localhost»
2016-06-20 18:31:23 <raspberrypi><root><EXC> Error connecting to SCADA-Server: Connection refused
2016-06-20 18:31:23 <raspberrypi><root><ACT> Disconnect from SCADA-Server
2016-06-20 18:31:23 <raspberrypi><root><ERR> Unable to start operation due to SCADA-Server communication error.
Delay before trying again
2016-06-20 18:31:33 <raspberrypi><root><ACT> Connect to SCADA-Server «localhost»
2016-06-20 18:31:33 <raspberrypi><root><ACT> Start communication lines
2016-06-20 18:31:33 <raspberrypi><root><ACT> Start receiving commands
(строки те же, просто старый лог вставил, чтобы не копировать с распи)Может мне просто скаду переустановить? Это всё началось в какой-то момент, даже не понятно в какой. Как думаете?
21.06.2016 в 15:35 #2358
MikhailМодераторНе вижу логи, по какой ссылке смотреть? 🙂
Протокол обмена между приложениями не менялся, поэтому переустановка вряд ли поможет.
Что раньше запускается — Сервер или Коммуникатор — случайным образом. Но это не важно, т.к. связь должна восстанавливаться.Если скаду перезагружать, а не выключать
Имеется ввиду перезагрузка РПи?
PS: А как у Вас работает скада? RTC у Вас на RasPi?
Время берётся из интернета, как настроено по умолчанию. Подобных проблем с подключением не наблюдал. Может быть в Вашем случае есть какая-то специфика работы, нужно докопаться до неё.
21.06.2016 в 16:10 #2359
djbond07УчастникВ общем решил проблему так. В код демонов перед запуском моно добавил строки
until ntpq -np | grep -q ‘^\*’;
do
echo «NTP not ready… wait»
sleep 30
doneсоответственно пока у нас не произойдёт синхронизации с интернетом, служба не запустится. Всё заработало. Ещё в начало демона scadacomm добавил $scadaserver. Таким образом пытался добиться запуска коммуникатора после сервера, чтобы не было ошибки, но хоть и коммуникатор стартовал позже сервера, запускался всё равно раньше. Но это никак не влияет на работу.
Специфика в чём может быть. я заметил вот что. в начале демонов в отложенном запуске записи $remote-fs $network $time. Как я понимаю, это тоже демоны, после которых должны запускаться службы скады. Если это демоны, то они должны лежать в папке /etc/init.d (наверное). но ни одного из них там нет. В дистрибутиве mono их не было. Может это общедоступные службы какие-то, и я их удалил? В таком случае, где их взять?
22.06.2016 в 11:15 #2363
MikhailМодераторХорошо, что удалось решить проблему, но если есть возможность, выложите полные логи за 10 минут работы с ошибками, чтобы найти причину нестабильной связи. Связь должна в любом случае восстанавливаться автоматически.
У меня в init.d их тоже нет. В коде других демонов можно найти аналогичные заголовки, так что думаю, что это допустимо. Нужно разбираться с кодом демонов, искать ответы на сайтах и форумах. Если найдёте — напишите 🙂 Когда буду обновлять версию для РПи, постараюсь выяснить.
22.06.2016 в 11:53 #2364
djbond07УчастникВот полные логи.
https://drive.google.com/open?id=0Bzn5jzldeU-dTFBRX3RaUFpFaG8
По большому счёту, мой вариант решил проблему. Я тестировал работу скады в течение 14 часов, всё ровно, ничего необычного, ошибок не было. Мне кажется, что тут дело в моей системе, а не в демонах. может мусор какой-то попал, не то сделал, и демон $time теперь не работает. По сути всё просто $time отвечает за то, чтобы синхронизация времени прошла успешно. и только после этого разрешается запуск Ваших демонов. но по каким-то причинам в моей системе это условие игнорируется. Если у Вас всё работает хорошо, значит это мои локальные ошибки какие-то.22.08.2016 в 11:25 #2880
djbond07УчастникДобрый день! Хотел бы снова открыть эту тему, может у кого-то есть свежие мысли?
Вкратце суть проблемы: После сеанса автоматический синхронизации времени на RasPi, SCADA не восстанавливает соединение самостоятельно. Выложу полные логи только для полноты картины.
ScadaComm:
2016-08-22 10:38:21 <raspberrypi><root><ACT> Connect to SCADA-Server «localhost»
2016-08-22 10:38:22 <raspberrypi><root><ACT> Start communication lines
2016-08-22 10:38:22 <raspberrypi><root><ACT> Start receiving commands
2016-08-22 11:05:04 <raspberrypi><root><ACT> Request SCADA-Server state
2016-08-22 11:05:04 <raspberrypi><root><ERR> Incorrect SCADA-Server response to state request
2016-08-22 11:05:04 <raspberrypi><root><ACT> Disconnect from SCADA-Server
2016-08-22 11:05:04 <raspberrypi><root><ACT> Connect to SCADA-Server «localhost»ScadaServer:
———————————————————————————
2016-08-22 10:38:08 <raspberrypi><root><ACT> ScadaServerService 4.5.0.5 is started
2016-08-22 10:38:09 <raspberrypi><root><ACT> Module is loaded from the file /etc/scada/ScadaServer/Mod/ModAutoControl.dll
2016-08-22 10:38:10 <raspberrypi><root><ACT> Check the existence of the data directories is completed successfully
2016-08-22 10:38:10 <raspberrypi><root><ACT> Check the existence of the configuration database files is completed successfully
2016-08-22 10:38:10 <raspberrypi><root><ACT> Input channels are read from the configuration database. Active channel count: 45
2016-08-22 10:38:10 <raspberrypi><root><ACT> Ouput channels are read from the configuration database
2016-08-22 10:38:10 <raspberrypi><root><ACT> Users are read from the configuration database
2016-08-22 10:38:10 <raspberrypi><root><ACT> Formulas are read from the configuration database
2016-08-22 10:38:18 <raspberrypi><root><ACT> The formulas source code has been compiled
2016-08-22 10:38:18 <raspberrypi><root><ACT> Connection listener is started
2016-08-22 10:38:18 <raspberrypi><root><ACT> Start server
2016-08-22 10:38:18 <raspberrypi><root><ACT> Current data are not loaded
2016-08-22 10:38:21 <raspberrypi><root><ACT> Connect to client 127.0.0.1
2016-08-22 10:38:21 <raspberrypi><root><ACT> The user ScadaComm is successfully authenticated
2016-08-22 11:05:04 <raspberrypi><root><ACT> Disconnect client 127.0.0.1
2016-08-22 11:05:04 <raspberrypi><root><ACT> Connect to client 127.0.0.1
2016-08-22 11:05:04 <raspberrypi><root><ACT> The user ScadaComm is successfully authenticatedБольше всего меня интересует строчка
2016-08-22 11:05:04 <raspberrypi><root><ERR> Incorrect SCADA-Server response to state request
Почему в момент синхронизации времени скада сервер некорректно отвечает на запрос с состоянии?
Перезапуск ScadaComm решает проблему.22.08.2016 в 12:58 #2882
MikhailМодераторДобрый день!
Хотелось бы посмотреть продолжение лога. Можете выложить файлы?
См выше:если есть возможность, выложите полные логи за 10 минут работы с ошибками
22.08.2016 в 13:12 #2883
djbond07УчастникСкада работала более 20 минут, больше в логах сообщений не появлялось.
22.08.2016 в 14:09 #2884
manjey73УчастникЕсли Raspberry с новой ОС (Дебиан 8.5) то в init.d может ничего не быть, так как сервисы могут стартовать через systemd.
Надо копать либо их сервисы, либо немного изменять запуск mono и SCADA так же через файлы systemd с указанием, что необходимо стартануть после того-то и того-то.
22.08.2016 в 15:22 #2885
djbond07УчастникУ меня система инициализации systemd судя по логам демонов (var/log/daemons.log). Демоны скады лежат в папке /etc/init.d. Они запускаются, всё нормально, при чём тут система инициализации?
В демонах скады написано стартовать после $remote_fs $network $time, добавление $ntp, допустим, не решает проблему. Вообще, как я говорил ранее, частично проблема решается изменением скриптов демонов вот таким образом (начиная с 9 строчки):
do_start() { if [ ! -f $PID_FILE_PATH ]; then cd $EXE_DIR if [ -f $STOP_FILE_PATH ]; then echo "Delete $STOP_FILE_PATH" rm $STOP_FILE_PATH fi until ntpq -np | grep -q '^\*'; do echo "NTP not ready...wait" sleep 30 done echo "Sending start $SERVICE_NAME command..." mono $EXE_NAME & echo $! > $PID_FILE_PATH echo "Start $SERVICE_NAME command is sent" else echo "$SERVICE_NAME is already running" fi }То есть скада сначала ждёт синхронизацию времени, и только потом запускается. При этом раскладе всё работает, но возникает другая проблема. Если модем вдруг не поднимет сеть при загрузке системы (по любым причинам) скада просто не запустится. Это очень плохой вариант, потому что при обрыве соединения или же при отсутствии сети скада должна функционировать, ибо сеть нужна только для удалённого доступа к ней.
PS: Может Михаил или Вы пользуетесь какой-нибудь старой, более стабильной сборкой для реализации своих задач? можете в таком случае поделиться ссылкой на образ, я попробую просто всё с нуля установить.
-
Ответ изменён 10 лет, 1 месяц назад пользователем
djbond07.
-
Ответ изменён 10 лет, 1 месяц назад пользователем
-
АвторЗаписи
- Для ответа в этой теме необходимо авторизоваться.