Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 18

Тема: Универсальный Modbus Сервер Инсат и 200 контроллеров ПЛК-100

  1. #1
    Пользователь
    Регистрация
    25.11.2011
    Адрес
    Москва
    Сообщений
    135

    По умолчанию Универсальный Modbus Сервер Инсат и 200 контроллеров ПЛК-100

    Здравствуйте!
    Суть проблемы. Мы перешли с кодесиса на модбас сервер инсат. Кодесисовский сервер зависал и не мог проработать в сети даже 1-го часа. Сейчас сервер считывает четыре переменных - три цифры и одну логическую (0 или 1). ,Все работает, но при кратковременном обрыве или сбое связи (похоже у провайдера какие-то проблемы) в первый момент сервер считывает у контроллера ложное состояние 1 хотя в контроллере эта переменная 0, затем где-то через секунду состояние переменной считывается правильно, т.е. 1 меняется на 0. Таким образом идут ложные сработки в скада проекте. Пробовал обрывать связь напрямую, подключив контроллер к ПК - все ок, сбоев нет, а на объекте наверно из-за наличия большого числа маршрутизаторо-роутеров-свитчей при восстановлении связи происходит ложная сработка. И похоже из-за этой проблемы со связью и не мог долго работать кодесис. Как это можно побороть?
    Может сделать задержку в мастерскада проекте? и как? В момент считывания ложной единицы качество переменной на опс сервере модбас не bad , а ok.

  2. #2

    По умолчанию

    Посмотрите по логу что происходит в момент когда пропадает связь - не открывается соединение, или запросы уходят, но не приходят ответы?

    Можно попробовать эту ситуацию обработать в скриптах ОРС сервера. Нужно отслеживать момент ошибки, а когда ошибка исчезнет выполнить функцию server.UndoCurrentTag( ) - возврат предыдущего значения тега.

    Однако если у вас не удается установить соединение, то скрипты в узле не выполняются (так как данных нет). Мы планируем сделать в скриптах отдельную функцию OnError которая будет вызываться в момент ошибки.
    Спасибо.

  3. #3
    Пользователь
    Регистрация
    25.11.2011
    Адрес
    Москва
    Сообщений
    135

    По умолчанию

    когда нет связи - запросы идут ответ не получен, при восстановлении связи - получен обычный ответ, только с ложным значением переменной, который в следующем ответе уже верный . Причем так бывает не каждый раз, бывает , что нормально с первого запроса.
    Изображения Изображения
    • Тип файла: jpg opc2.JPG (159.3 Кб, Просмотров: 32)

  4. #4
    Пользователь
    Регистрация
    25.11.2011
    Адрес
    Москва
    Сообщений
    135

    По умолчанию

    т.е. сейчас ничего я пока сделать не смогу?
    а если сделать в скаде проекте какую-то задержку обработки этой переменной? чтоб событие по выдачи моего аварийного сигнала в проекте запускалось через 1-2 сек, так получится?

  5. #5

    По умолчанию

    Цитата Сообщение от lomtik Посмотреть сообщение
    когда нет связи - запросы идут ответ не получен
    Тогда сможете.
    Вам нужно в скрипте каждого тега (перед чтением) проверять признак качества тега. Если признак качества Bad, то установить флаг ошибки.
    Когда признак качества снова станет Good - сбросить флаг, и вернуть предыдущее значение тега.
    Код скрипта примерно такой:

    local Error;

    -- инициализация
    function OnInit()
    Error=false;
    end
    -- деинициализация
    function OnClose()
    end
    -- обработка
    function OnRead()
    val,qual=server.ReadCurrentTag();
    if qual==OPC_QUALITY_BAD then
    Error=true;
    end;
    if Error==true and qual==OPC_QUALITY_GOOD then
    server.UndoCurrentTag( );
    Error=false;
    end;
    end

    Вопросы по MasterSCADA и MasterOPC лучше задавать к нам в техподдержку - по электронной почте
    Спасибо.

  6. #6

    По умолчанию

    И если таких проблемных переменных у вас много, то желательно исполнять скрипт из файла - чтобы можно было быстро внести изменения в код.
    Обратитесь в техподдержку - мы скажем как это можно сделать.
    Спасибо.

  7. #7
    Пользователь
    Регистрация
    25.11.2011
    Адрес
    Москва
    Сообщений
    135

    По умолчанию

    ага, вот это уже интересно, завтра попробую,
    получается что таких переменных у меня очень много, практически все 200. А в техподдержку писать куда - в инфо собака инсат.ру?

    меня смушает только одно - несколько раз наблюдал такую картину во времени:

    качество значение
    ok //////////////false
    ok //////////////false
    ok //////////////false
    bad /////////////false
    bad /////////////false
    bad /////////////false
    bad /////////////false
    bad /////////////false
    ok //////////////true - ложная сработка
    ok //////////////false
    ok //////////////false
    ok //////////////false

    но ведь в момент ложного считывания качество тэга ok, поможет в этом случае?
    а что такое реинициализация узла при ошибке? попробовал включил эту опцию у тега, результат 0.
    Последний раз редактировалось lomtik; 17.10.2012 в 21:19.

  8. #8
    Пользователь
    Регистрация
    25.11.2011
    Адрес
    Москва
    Сообщений
    135

    По умолчанию

    извините, может что не так делаю, но пока не получается

    и как вот это побороть - когда связь рвется несколько раз подряд, то ложная сработка запоминается?

    ok //////////////false
    ok //////////////false
    ok //////////////false
    bad /////////////false
    bad /////////////false
    bad /////////////false
    bad /////////////false
    bad /////////////false
    ok //////////////true - ложная сработка, при этом значение качества ок
    bad//////////////true
    bad //////////////true
    ok //////////////false
    ok //////////////false
    ok //////////////false

  9. #9

    По умолчанию

    Цитата Сообщение от lomtik Посмотреть сообщение
    А в техподдержку писать куда - в инфо собака инсат.ру?
    Support

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

    Цитата Сообщение от lomtik Посмотреть сообщение
    и как вот это побороть - когда связь рвется несколько раз подряд, то ложная сработка запоминается?
    А при Bad всегда должно быть False?
    Ну тогда такой код:
    local Error;

    -- инициализация
    function OnInit()
    Error=false;
    end
    -- деинициализация
    function OnClose()
    end
    -- обработка
    function OnRead()
    val,qual=server.ReadCurrentTag();
    if qual==OPC_QUALITY_BAD then
    Error=true;
    server.WriteCurrentTag(false,OPC_QUALITY_BAD );
    end;
    if Error==true and qual==OPC_QUALITY_GOOD then
    server.UndoCurrentTag( );
    Error=false;
    end;
    end
    Спасибо.

  10. #10
    Пользователь
    Регистрация
    25.11.2011
    Адрес
    Москва
    Сообщений
    135

    По умолчанию

    вообщем, потестил еще раз на одном котнроллере, в итоге ничего не помогает. Заметил правда еще глюк - при восстановлении связи на тестовом контроллере три числовых тэга сбрасывают кратковременно значение на 0, а логические - меняют false на true. Попробовал увеличить частоту опроса в 10 раз и о чудо на тестовом контроллере все заработало, ни одной ложной сработки при восстановлении связи и ни одного сброса числа. Надеюсь это поможет. Пусть частота будет по-больше, но зато не будет ложных сработок.
    Помогите немного со скриптами разобраться: мне надо сделать чтобы при качестве тэга bad значение тэга было бы всегда false. Тот скрипт, который последний указан выше не работает или я что то сделал не то.
    Когда он должен всетаки выполняться - перед чтением или после?
    вы написали:


    Цитата Сообщение от SCADAMaster Посмотреть сообщение
    Вам нужно в скрипте каждого тега (перед чтением) проверять признак качества тега.
    а в сервере у каждого тэга скрипт можно запустить только после чтения.

Страница 1 из 2 12 ПоследняяПоследняя

Похожие темы

  1. Ответов: 1108
    Последнее сообщение: 21.03.2024, 08:54
  2. ОРС сервер для приборов ModBus Си8
    от Sumsee в разделе Сетевые технологии
    Ответов: 1
    Последнее сообщение: 05.04.2012, 15:45
  3. Modbus-сервер и трм138
    от Fix_m в разделе Сервисное ПО
    Ответов: 3
    Последнее сообщение: 20.07.2011, 15:30
  4. Owen OPC Modbus сервер
    от Slev в разделе Сервисное ПО
    Ответов: 15
    Последнее сообщение: 10.12.2010, 11:26
  5. ПЛК110-32 и сервер Lectus Modbus
    от Viktor40 в разделе ПЛК1хх
    Ответов: 2
    Последнее сообщение: 04.06.2010, 15:09

Ваши права

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