Показано с 1 по 2 из 2

Тема: Собственный протокол устройства + OPC сервер

  1. #1

    По умолчанию Собственный протокол устройства + OPC сервер

    Здравствуйте, прошу помощи! Начну по порядку:
    1. Подключил устройство через АС4, далее в MasterOPC Universal Modbus Server создал новый коммуникационный узел с настройками: Сохраненное изображение 2014-9-26_10-17-19.844.jpg
    Настройки взял из документации на прибор ( Wordовский документ в архиве)
    2. Добавил устройство и прописал настройки:Сохраненное изображение 2014-9-26_10-28-8.269.jpg
    где адрес - прописал адрес, который забивал в устройстве :008
    3.Добавил тег: Сохраненное изображение 2014-9-26_10-30-32.446.jpg

    Во-первых вопрос: куда мне прописывать скрипт? В Устройство? или Тег?

    Со скриптом еще веселее.
    Хочется считать с устройства например значение датчиков. В документации описано:Сохраненное изображение 2014-9-26_11-10-46.879.jpg

    Если я не ошибся, то это очень похоже на протокол "DCON".

    Просмотрел пример реализации собственных протоколов.
    Код:
    Листинг 1.7 Пример реализации протокола DCON 
    
    -- функция,выполняющаяся перед чтением тегов 
    
     function OnBeforeReading() 
    
     local Addr=server.GetCurrentDeviceAddress(); --считываем адрес устройства 
    
     local send={}; --инициализируем таблицу запроса 
    
     send[1] = "#"; --оператор типа запроса 
    
     send[2] = string.format ("%02X",Addr); --преобразование адреса 
    
     --к нужному виду 
    
     send[3]="\r"; --добавление символа перевода каретки 
    
     local sendmask={"string","string","string"}; --маска запроса 
    
     local dest={}; --инициализация таблицы принятых значений 
    
     local destmask={"string:1","sdouble:8:7"}; --маска ответа 
    
     --дополнительные переменные: ошибка, количество элементов в таблице dest, 
    
     --количество принятых байт 
    
     local err,len; --объявление переменных - флаг ошибки 
    
     --и количество принятых элементов 
    
     local n=0; --количество попыток запроса 
    
     --запрос к устройству в цикле 
    
     repeat
    В коде мне требуется поменять в строке send[1] = "#"; решетку на @.
    В send[3]="\r"; меняю \r на 02h ( так как в протоколе устройства 3-им в запросе идет команда)
    Добавляю send[4]="..."; Что в него прописывать я не понимаю...
    Добавляю send[5]="*"; так как <*> - (ASCII – 2Ah)- стоповый байт кадра.

    Следовательно маска у меня должна получиться такой:
    local sendmask={"string","string","string","string","str ing"};

    В правильном ли направлении я двигаюсь?

    Архив на Я.диске https://yadi.sk/d/SUtApWG7bfrxn

  2. #2

    По умолчанию

    Цитата Сообщение от Vitorgan Посмотреть сообщение
    Во-первых вопрос: куда мне прописывать скрипт? В Устройство? или Тег?
    Это зависит от архитектуры. Если вы например опрашиваете одно значение (для одного тега), то лучше размещать скрипт в теге. Если один запрос опрашивает за раз несколько значений, то тогда лучше у устройства или подустройства.

    Цитата Сообщение от Vitorgan Посмотреть сообщение
    В коде мне требуется поменять в строке send[1] = "#"; решетку на @.
    Да

    Цитата Сообщение от Vitorgan Посмотреть сообщение
    В send[3]="\r"; меняю \r на 02h ( так как в протоколе устройства 3-им в запросе идет команда)
    Только просто "02".

    Цитата Сообщение от Vitorgan Посмотреть сообщение
    Добавляю send[4]="..."; Что в него прописывать я не понимаю...
    Добавляю send[5]="*"; так как <*> - (ASCII – 2Ah)- стоповый байт кадра.
    Вот здесь проблема.
    Обычно при работе с DCON конец кадра сигнализирует символ "перевод каретки" (\r). У вас же - звездочка.
    У нас при работе функции SendAndReceiveDataByMask, при подсчете контрольной суммы DCON в обязательном порядке должен быть символ перевода каретки. Поэтому в вашем случае автоматический подсчет контрольной суммы не подойдет.
    Вам придется сделать подсчет контрольной суммы вручную (сделайте отдельную функцию и вызывайте - посмотрите пример Rnet в документации)
    Вот здесь описано как считать контрольную сумму у DCON (страница 10):
    http://www.ssau.ru/files/resources/s...rafkin_a_v.pdf
    Поищите - может быть найдете готовый код на другом языке (перевести на Lua будет не сложно).
    Последний раз редактировалось SCADAMaster; 26.09.2014 в 15:19.
    Спасибо.

Похожие темы

  1. Ответов: 4
    Последнее сообщение: 24.09.2014, 08:40
  2. как запустить Opc сервер протокол овен по Rs 485?
    от Леонид в разделе Другие SCADA системы
    Ответов: 1
    Последнее сообщение: 31.08.2010, 16:02
  3. опрос устройства Opc сервером
    от agendus в разделе Трёп (Курилка)
    Ответов: 0
    Последнее сообщение: 18.11.2009, 10:42
  4. опрос устройства Opc сервером
    от agendus в разделе Помощь Разработчикам
    Ответов: 0
    Последнее сообщение: 18.11.2009, 10:42
  5. Ответов: 4
    Последнее сообщение: 26.08.2009, 14:07

Ваши права

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