Страница 44 из 112 ПерваяПервая ... 3442434445465494 ... ПоследняяПоследняя
Показано с 431 по 440 из 1125

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

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    По умолчанию

    Должна работать.
    Нет необходимости выносить отдельный узел. Разместите server.SetNodeToOnOff() в тег типа ServerOnly, в скрипт "Перед записью". Тогда он будет исполнятся, даже если узел выключен.
    Спасибо.

  2. #2

    По умолчанию

    Большое спасибо! Все заработало!

  3. #3

    По умолчанию

    OPC HDA возвращает качество тега 0x000400C0. Так и должно быть? В спецификациях что-то не нашел.

  4. #4

    По умолчанию

    Вообще это хороший признак качества, но с каким-то оттенком.
    Вы сами его формируете? Как вы его определили?
    Спасибо.

  5. #5

    По умолчанию

    Вот и я об этом. По идее должно быть C0, но это в принципе качество для OPC DA. Вообще OPC HDA качество какая-то мутная тема.
    У нас используется несколько OPC HDA серверов разных производителей, все они возвращают при GOOD - C0.
    На вашем сервере настроил HDA. Качество сам в скрипте формирую, по вашим примерам (C0). Скада (не MasterSCADA, другого производителя) все читает и пишет в свою БД, только качество BAD.
    А 0x000400C0 я увидел под отладчиком, когда начал разбираться в чем дело (у нас есть исходники OPC HDA и OPC DA клиентов для используемой скада, уже не раз они выручали - почему-то несмотря на стандарты каждый программист OPC-сервера считает своим долгом привнести что-то своё).
    Сами понимаете что для себя проблему решили, хотелось уточнить - может неправильно интерпретируем коды качества?

  6. #6

    По умолчанию

    Кажется разобрался.
    0004 - необработанные (raw) данные, 00C0 - признак GOOD (как в OPC DA).

  7. #7

    По умолчанию

    Да, все верно.
    Спасибо.

  8. #8

    По умолчанию

    Добрый день.
    В Руководстве по языку Lua 5.1 для MasterOPC Universal Modbus Server написано, что функция server.SendAndReceiveDataByMask в скрипте должна находиться на уровне узла (узла COM). В руководстве пользователя
    при реализации собственных протоколов приведен пример для протокола Rnet, где данная функция расположена в теге.
    Или я что-то путаю. Как сделать правильно? Правильно ли будет разместить эту функцию в скрипте узла, расчет CRC в скрипте устройства, а в тегах все остальное?

  9. #9

    По умолчанию

    Функцию можно размещать где угодно.

    Цитата Сообщение от OlegGEORG Посмотреть сообщение
    Правильно ли будет разместить эту функцию в скрипте узла, расчет CRC в скрипте устройства, а в тегах все остальное?
    Уж лучше тогда и функцию и расчет суммы на уровне устройства
    Спасибо.

  10. #10

    По умолчанию

    Добрый день!
    Не работает функция err,buf,len = server.SendAndReceiveData(srcbuf,srclen,dstlen).
    Вот код в теге:
    function OnRead()
    -- инициилизация устройства
    local send={1,2,3,4,5,6}; --кадр запроса
    local Length=table.maxn(send); --вычисление длины запроса в байтах
    local srcbuf="";
    srcbuf=server.TableToString(send); --байты данных строки для посылки
    server.Message("srcbuf-данные для передачи ",srcbuf);
    local srclen=table.maxn(send); --количество байт данных с учетом байта CRC
    server.Message("srclen-длина данных в байтах ",srclen);
    local dstlen=20; --длина принимаемых данных
    local err,len;
    local buf="";
    --запрос к устройству
    server.Message("srcbuf-данные для передачи окончательные",srcbuf);
    server.Message("srclen-длина данных в байтах окончательная ",srclen);
    err,buf,len = server.SendAndReceiveData(srcbuf,srclen,dstlen); --посылаем и принимаем байты от устройства
    --[[Входные параметры: srcbuf-данные для передачи, srclen-длина данных в байтах, dstlen-длина принимаемых данных.
    err=TRUE при ошибке выполнения функции, buf – строка с принятыми данными (nil, если приема не было),
    len – длина buf.--]]
    --принят ответ. Проверим контрольную сумму
    end

    Вот лог:
    [02.01.2017 18:23:51.230] Inf : Server:MasterOPC Universal Modbus Server Demo 32 Build - 3.2.20
    [02.01.2017 18:23:51.231] Inf : Server:Cтарт конфигурации C:\ProgramData\InSAT\MasterOPC Universal Modbus Server\SERVERCFG\OPC_PRIBOR.mbp
    [02.01.2017 18:23:51.245] SCRIPT : <<ПортCOM.Прибор5.Вход>> : ПортCOM.Прибор5.Вход:srcbuf-данные для передачи 123456
    [02.01.2017 18:23:51.245] SCRIPT : <<ПортCOM.Прибор5.Вход>> : ПортCOM.Прибор5.Вход:srclen-длина данных в байтах 6
    [02.01.2017 18:23:51.245] SCRIPT : <<ПортCOM.Прибор5.Вход>> : ПортCOM.Прибор5.Вход:srcbuf-данные для передачи окончательные123456
    [02.01.2017 18:23:51.245] SCRIPT : <<ПортCOM.Прибор5.Вход>> : ПортCOM.Прибор5.Вход:srclen-длина данных в байтах окончательная 6
    [02.01.2017 18:23:51.247] Inf : ПортCOM:Порт 1 открыт
    [02.01.2017 18:23:51.247] TRACE : (COM1) Tx: [0006] 06 01 31 01 32 01
    [02.01.2017 18:24:02.356] Inf : ПортCOM:Порт 1 закрыт
    [02.01.2017 18:24:02.769] Inf : Server:Завершение работы

    В порт уходят другие данные. В чем проблема не понятно.

Страница 44 из 112 ПерваяПервая ... 3442434445465494 ... ПоследняяПоследняя

Ваши права

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