Simple-Scada forum

Simple-Scada 2 => Ваши вопросы => Тема начата: gaargot1 от 02 Апреля 2020, 10:52:53

Название: Работа функции startPing
Отправлено: gaargot1 от 02 Апреля 2020, 10:52:53
Здравствуйте. Можете посоветовать, чё с этим делать?
При старте проекта начинаю пинговать ПЛК.
Код: (delphi)
...
  StartPing('хххххххххх',5000,Subpage1);
  StartPing('хххххххххх',10000,Subpage2);
  StartPing('хххххххххх',5000,Subpage3);
...
Процедура обрабатывающая результат выглядит так:
Код: (delphi)
begin
if PingData.Sender = nil then Exit;

    if PingData.Sender is TM_SubPage then
      with PingData.Sender as TM_SubPage do
        begin
          if PingData.Result then
            Color:=clNone                 //есть пинг
              else
                 begin
                  Color:=clRed;           //нет пинга
                  crash_(GetSubpageByName(Name));
                 end;
        end
end.
Одна из 15 опрашиваемых плк вызывает пару раз в минуту срабатывание "отсутствия пинга". Увеличивал таймаут, результат тотже. Во вложении пинг этой плк. Самые долгие ответы - 10Мс.

Название: Re: Работа функции startPing
Отправлено: Simple-Scada от 02 Апреля 2020, 12:36:51
Здравствуйте.

Вы используете последнюю версию 2.3.6.10? Если нет, то обновитесь, в ней добавлена доработка пинга, возможно она поможет.
Simple-Scada для пинга использует стандартную библиотеку Windows "icmp.dll" и он должен работать как пинг в Windows через консоль. В версии 2.3.6.10 мы оставили только вызовы к "icmp.dll" и убрали весь собственный код, чтобы он никак не мог влиять на результаты пинга. Поэтому, если пинг всё равно ложно срабатывает даже в версии 2.3.6.10, мы не сможем что-то в нём исправить, т.к. нашего кода в нём теперь нет. Почему стандартная библиотека Windows может выдавать ложные срабатывания нам пока неизвестно, может быть есть какая-то зависимость от ОС, параметров сети, количества пингов и т.п..
Возможно проблему можно решить определяя ошибку пинга с учетом количества неудачных попыток (свойство FailCounter (https://simple-scada.com/help/script/tm-pingdata.html)). Можно выдавать ошибку только когда количество неудачных попыток больше 1.
Название: Re: Работа функции startPing
Отправлено: gaargot1 от 02 Апреля 2020, 13:13:21
Вот я прошляпил свойство failcounter. Спасибо, это решает.
Название: Re: Работа функции startPing
Отправлено: Nikso от 21 Июля 2020, 10:01:57
А какая длина пакета при вызове функции ping? И с какой частотой пингуется узел? Верно ли понимаю что каждый новый пинг узла осуществляется через timeout?
Название: Re: Работа функции startPing
Отправлено: Simple-Scada от 23 Июля 2020, 10:52:11
Nikso, длина 32 байта. Частота зависит от состояния сети. Если связи нет, то пинг отправляется через каждые Timeout миллисекунд. Если же пингуемый объект ответит раньше чем Timeout, то скада сразу начнёт новый пинг (но не чаще чем каждые 100 мс.).