Страница 9 из 111 ПерваяПервая ... 78910111959109 ... ПоследняяПоследняя
Показано с 81 по 90 из 1109

Тема: Modbus Universal MasterOPC Server новый OPC сервер от компании ИнСАТ

  1. #81

    По умолчанию

    доброго времени суток. есть узел опрашиваемый по IP адресу. На том конце GPRS коммуникатор на sim900 модуле в режиме сервера подключенный к MODBUS slave устройству. Коммуникатор образует прозрачный канал. Мне нужно в узел ОРС сервера, для которого задан IP адрес и порт перед каждым опросом посылать слово CONNECT. Обратился к скриптам и стал копаться в этом деле. В итоге не нашел ничего подходящего применительно к IP подключению. Все что нашел, это функции "server.RunFunctionFromNode" и "server.RunFunctionFromNodeByName". Прошу хэлпа))
    Чтобы понять рекурсию нужно понять рекурсию

  2. #82

    По умолчанию

    Для этого вам нужно использовать функцию server.SendAndReceiveDataByMask.
    Примеры ее использования есть у нас в документации:
    http://www.insat.ru/products/Univers...ver_API_UG.pdf
    Функцию нужно вызывать в скрипте устройства - в теле функции OnBeforeReading.

    Версию нужно использовать последнюю - ранее с TCP узлами данная функция не работала.
    Спасибо.

  3. #83

    По умолчанию

    Цитата Сообщение от SCADAMaster Посмотреть сообщение
    Для этого вам нужно использовать функцию server.SendAndReceiveDataByMask.
    Примеры ее использования есть у нас в документации:
    http://www.insat.ru/products/Univers...ver_API_UG.pdf
    Функцию нужно вызывать в скрипте устройства - в теле функции OnBeforeReading.

    Версию нужно использовать последнюю - ранее с TCP узлами данная функция не работала.
    спасибо большое.
    вот вроде написал, но не отправляет ничего. Билд сервера 2,0,0,16

    - инициализация
    function OnInit()
    end
    -- деинициализация
    function OnClose()
    end
    -- функция,выполняющаяся перед чтением тегов
    function OnBeforeReading()
    function Query()
    local send={0x43,0x4F,0x4E,0x4E,0x45,0x43,0x54,0x20,0x4F ,0x4B}; -- CONNECT OK в hex
    local sendmask={"byte","byte","byte","byte","byte","byte ","byte","byte","byte","byte"}; --маска отправляемого запроса
    local err;
    local n=0;
    repeat
    --посылка и получение запроса в устройство
    err=server.SendAndReceiveDataByMask(0,10,sendmask, send,nil,0);
    n=n+1;
    --условие выхода - корректный ответ или превышение запросов
    until err>=0 or n>=server.GetCurrentDeviceRetry()
    --обрабатываем полученные данные
    if err>=0 then
    --запрос выполнен корректно
    return true,1, server.Message("CONNECT OK отправлен"); --возвращаем флаг что запрос корректен и третий элемент массива – значение
    else
    return false,0, server.Message("CONNECT OK НЕ отправлен"); --запрос некорректен, возвращаем соответствующий флаг
    end;
    end;
    end
    -- функция,выполняющаяся после чтения тегов
    function OnAfterReading()
    end
    Последний раз редактировалось S.A.D.; 09.01.2014 в 14:33.
    Чтобы понять рекурсию нужно понять рекурсию

  4. #84

    По умолчанию

    Цитата Сообщение от S.A.D. Посмотреть сообщение
    function OnBeforeReading()
    function Query()
    local send={0x43,0x4F,0x4E,0x4E,0x45,0x43,0x54,0x20,0x4F ,0x4B}; -- CONNECT OK в hex
    local sendmask={"byte","byte","byte","byte","byte","byte ","byte","byte","byte","byte"}; --маска отправляемого запроса
    local err;
    local n=0;
    repeat
    function Query - зачем это?
    И return вам не нужен - вы же не вызываете эту функцию откуда-то.
    Просто:
    function OnBeforeReading()
    local send={0x43,0x4F,0x4E,0x4E,0x45,0x43,0x54,0x20,0x4F ,0x4B}; -- CONNECT OK в hex
    local sendmask={"byte","byte","byte","byte","byte","byte ","byte","byte","byte","byte"}; --маска отправляемого запроса
    local err;
    local n=0;
    repeat
    --посылка и получение запроса в устройство
    err=server.SendAndReceiveDataByMask(0,10,sendmask, send,nil,0);
    n=n+1;
    --условие выхода - корректный ответ или превышение запросов
    until err>=0 or n>=server.GetCurrentDeviceRetry()
    --обрабатываем полученные данные
    if err>=0 then
    --запрос выполнен корректно
    server.Message("CONNECT OK отправлен"); --возвращаем флаг что запрос корректен и третий элемент массива – значение
    else
    server.Message("CONNECT OK НЕ отправлен"); --запрос некорректен, возвращаем соответствующий флаг
    end;
    end


    Либо тогда делайте функцию Query, добавляйте в нее код и вызывайте из основной функции
    Последний раз редактировалось SCADAMaster; 09.01.2014 в 14:52.
    Спасибо.

  5. #85

    По умолчанию

    точно! Спасибо большое! Работает!
    Чтобы понять рекурсию нужно понять рекурсию

  6. #86
    Пользователь
    Регистрация
    22.03.2011
    Адрес
    Ивановская обл, Родники
    Сообщений
    145

    По умолчанию

    Добрый день, вечер. Прошу объяснить что это за ответ модема < ATI > ? Суть такая. Используем ОРС сервер, по последовательному RS232 подключен ПМ01, опрашиваем несколько плк тоже с ПМ01, по CSD. Опрашиваем на скорости 9600. У всех модемов таймеры перезагрузки отключены (SETTM 0), (на объектах ПЛК свой модем выключает/включает после каждого опроса). Так вот иногда модем сервера получает ответ < 41 54 49 0D 0A > и виснет, пока его не перезапустишь выкл/вкл.
    ЧТО ЭТО за ATI и как с ним бороться?
    Фрагмент из запросов сервера:

    31-12-2013 08:50:06.206 RS232_2::насосная1COM4) Rx: [0085] 0A 03 50 10 E7 00 56 01 68 0B 6A 00 28 02 5E 00 00 00 00 47 04 40 BD FA B0 40 92 FA B0 40 92 56 15 40 9D 00 01 00 00 13 A3 00 00 00 00 00 10 00 22 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 41 E7 00 00 00 00 00 00 07 DD 00 0C 00 1F 00 08 00 1D 5E E5
    31-12-2013 08:50:04.246 RS232_2::насосная1COM4) Tx: [0008] 0A 03 00 00 00 28 44 AF
    31-12-2013 08:40:56.000 RS232_2::насосная1COM4) Rx: [0010] 41 54 49 0D 0A 41 54 49 0D 0A
    31-12-2013 08:40:55.192 RS232_2::насосная1COM4) Tx: [0008] 0A 03 00 00 00 28 44 AF

  7. #87

    По умолчанию

    Уточните данный вопрос у техподдержки ОВЕН - задайте вопрос в разделе "Эксплуатация".
    Спасибо.

  8. #88
    Пользователь
    Регистрация
    22.03.2011
    Адрес
    Ивановская обл, Родники
    Сообщений
    145

    По умолчанию

    В этой ветке я хотел узнать, как средствами ОРС-сервера ,на уровне тега или устройства отследить появление строки < 41 54 49 0D 0A> . Управлять питанием модема с помощью другого СОМ порта мы можем.



    Спасибо.

  9. #89

    По умолчанию

    После того как приходит эта строчка, модем зависает? То есть значения поступают перестают?
    Признак качества при этом меняется? Если признак качества переменной меняется, то проще отследить его.
    Спасибо.

  10. #90
    Пользователь
    Регистрация
    22.03.2011
    Адрес
    Ивановская обл, Родники
    Сообщений
    145

    По умолчанию

    После получения. 41 54 49 0D 0A, значения не изменяются, качество - BAD и далее ни каких соединений ее получается. С мобильного тел. набираешь номер сервера, там короткие гудки, трубка не положена.
    модем выкл/вкл, приводит все в порядок.

Страница 9 из 111 ПерваяПервая ... 78910111959109 ... ПоследняяПоследняя

Ваши права

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