Ошибка ScadaComm

Просмотр 15 сообщений - с 31 по 45 (из 80 всего)
  • Автор
    Записи
  • #2337
    djbond07
    Участник

    Простите, автоматически только на наш домен распространилось. Вот новая ссылка.

    https://drive.google.com/folderview?id=0Bzn5jzldeU-ddXByNGltOG5oVHc&usp=sharing

    Кстати, однозначно это условие игнорируется, потому что в сообщениях при запуске я явно успеваю прочитать строки, что скада сервер запущен, скада коммуникатор запущен, итд.

    #2338
    djbond07
    Участник

    Михаил, тут явно какая-то недоработка. Порылся в демонах. там эта строчка с отложенным запускам закомментирована в самом начале, и больше аттрибуты эти в коде нигде не встречаются. Как я понимаю, нужно в тело do-start добавить $network $time итд…Подскажите, куда именно и как это прописать? Думаю, что это решит проблему.
    Файлы с демонами прилагаю
    https://drive.google.com/open?id=0Bzn5jzldeU-dck1CRVFQbUJsR3c

    #2346
    djbond07
    Участник

    Нет, я неправ) пытаюсь добраться до истины через логи демонов.

    #2348
    Mikhail
    Модератор

    Очень короткие логи — закономерности не видно. Пусть программы поработают минут 10. Достаточно только 2 основных файлов логов Сервера и Коммуникатора.

    Поэкспериментируйте с запуском демонов, пожалуйста. Со своей стороны на основе Ваших данных я постараюсь найти причину сбоя связи, связь должна восстанавливаться независимо от наличия часов. Нужно понять, почему так происходит.

    #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?

    #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
    (строки те же, просто старый лог вставил, чтобы не копировать с распи)

    Может мне просто скаду переустановить? Это всё началось в какой-то момент, даже не понятно в какой. Как думаете?

    #2358
    Mikhail
    Модератор

    Не вижу логи, по какой ссылке смотреть? 🙂
    Протокол обмена между приложениями не менялся, поэтому переустановка вряд ли поможет.
    Что раньше запускается — Сервер или Коммуникатор — случайным образом. Но это не важно, т.к. связь должна восстанавливаться.

    Если скаду перезагружать, а не выключать

    Имеется ввиду перезагрузка РПи?

    PS: А как у Вас работает скада? RTC у Вас на RasPi?

    Время берётся из интернета, как настроено по умолчанию. Подобных проблем с подключением не наблюдал. Может быть в Вашем случае есть какая-то специфика работы, нужно докопаться до неё.

    #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 их не было. Может это общедоступные службы какие-то, и я их удалил? В таком случае, где их взять?

    #2363
    Mikhail
    Модератор

    Хорошо, что удалось решить проблему, но если есть возможность, выложите полные логи за 10 минут работы с ошибками, чтобы найти причину нестабильной связи. Связь должна в любом случае восстанавливаться автоматически.

    У меня в init.d их тоже нет. В коде других демонов можно найти аналогичные заголовки, так что думаю, что это допустимо. Нужно разбираться с кодом демонов, искать ответы на сайтах и форумах. Если найдёте — напишите 🙂 Когда буду обновлять версию для РПи, постараюсь выяснить.

    #2364
    djbond07
    Участник

    Вот полные логи.
    https://drive.google.com/open?id=0Bzn5jzldeU-dTFBRX3RaUFpFaG8
    По большому счёту, мой вариант решил проблему. Я тестировал работу скады в течение 14 часов, всё ровно, ничего необычного, ошибок не было. Мне кажется, что тут дело в моей системе, а не в демонах. может мусор какой-то попал, не то сделал, и демон $time теперь не работает. По сути всё просто $time отвечает за то, чтобы синхронизация времени прошла успешно. и только после этого разрешается запуск Ваших демонов. но по каким-то причинам в моей системе это условие игнорируется. Если у Вас всё работает хорошо, значит это мои локальные ошибки какие-то.

    #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 решает проблему.

    #2882
    Mikhail
    Модератор

    Добрый день!
    Хотелось бы посмотреть продолжение лога. Можете выложить файлы?
    См выше:

    если есть возможность, выложите полные логи за 10 минут работы с ошибками

    #2883
    djbond07
    Участник

    Скада работала более 20 минут, больше в логах сообщений не появлялось.

    #2884
    manjey73
    Участник

    Если Raspberry с новой ОС (Дебиан 8.5) то в init.d может ничего не быть, так как сервисы могут стартовать через systemd.

    Надо копать либо их сервисы, либо немного изменять запуск mono и SCADA так же через файлы systemd с указанием, что необходимо стартануть после того-то и того-то.

    #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.
Просмотр 15 сообщений - с 31 по 45 (из 80 всего)
  • Для ответа в этой теме необходимо авторизоваться.