Страница 38 из 111 ПерваяПервая ... 2836373839404888 ... ПоследняяПоследняя
Показано с 371 по 380 из 1109

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

  1. #371

    По умолчанию

    А вот это вам надо в ОВЕНе уточнять.
    ОРС просто посылает Modbus запрос, одним из полей которого является номер файла, а также определенная запись файла. Контроллер должен ответить на этот запрос.
    Спасибо.

  2. #372

    По умолчанию

    Вопрос.Возможно ли из под сервера при изменения определенного тега запустить внешнюю программу? Например тег проверяет качество переменной и при плохом качестве запускает программу командной строки(для примера).

  3. #373

    По умолчанию

    Можно - через скрипт. Используйте команду others.CreateProcess( )
    Спасибо.

  4. #374

    По умолчанию

    Цитата Сообщение от SCADAMaster Посмотреть сообщение
    Можно - через скрипт. Используйте команду others.CreateProcess( )
    Если можно ,простой пример.А то по данной команде инфы мало.Или где почитать?
    Последний раз редактировалось Brewer; 04.02.2016 в 22:32.

  5. #375

    По умолчанию

    others.CreateProcess("c:\\Windows\\notepad.exe","" ,"d:\\Temp\\1.txt",0);
    Спасибо.

  6. #376

    По умолчанию

    Цитата Сообщение от SCADAMaster Посмотреть сообщение
    others.CreateProcess("c:\\Windows\\notepad.exe","" ,"d:\\Temp\\1.txt",0);
    Большое спасибо.Реализовал давнюю идею.

  7. #377

    По умолчанию

    Цитата Сообщение от energvk Посмотреть сообщение
    Да, я имею ввиду читать два файла. И я знаю, что ужно добавить еще одно подустройство, у него в настройках задать номер файла - 1. У меня так и сделано. Просто я обратил внимание, что второе подустройство, формирует тэги, аналогично первому, хотя в СПК у меня второй файл не добавлен (как видно из вложения выше). То есть получается первое подустройство считывает файл, а затем второе подустройство считывает тот же файл.. Номера в настройках разумеется заданы разные 0 и 1, соответственно
    Цитата Сообщение от SCADAMaster Посмотреть сообщение
    Нет, все корректно:
    [03.02.2016 12:17:03.742] TRACE : (xxx.xxx.xxx.xxx:502) Tx: [0016] 01 00 00 00 00 0A 01 14 07 06 00 00 00 00 00 0A
    [03.02.2016 12:17:05.368] TRACE : (xxx.xxx.xxx.xxx:502) Tx: [0016] 05 00 00 00 00 0A 01 14 07 06 00 01 00 00 00 0A
    Разбирайтесь почему у вас возвращается тот же самый файл.
    Цитата Сообщение от SCADAMaster Посмотреть сообщение
    А вот это вам надо в ОВЕНе уточнять.
    ОРС просто посылает Modbus запрос, одним из полей которого является номер файла, а также определенная запись файла. Контроллер должен ответить на этот запрос.
    Как я понял, библиотека modbus tcp slave от ОВЕН не поддерживает номера файлов. Соответственно у меня возникло пару идей как можно обойти эту проблему. У меня имеется 3 подустройства в сервере: одно - опрос/чтение переменных, второе и третье - 1-й и 2-й файл. Как вариант, хочу перед началом опроса файла менять тэг в первом подустройстве, который будет переключать файлы для опроса в контроллере, и после того как опс выполнит обратное чтение (в настройках - "Чтение после записи") только начитать читать файл. Я так понимаю, что скриптом же это можно решить?

  8. #378

    По умолчанию

    В принципе можно. Можно в скрипте перед началом чтения выполнить Modbus команду записи и записать нужное вам значение в контроллер.
    А уже затем будет выполняться код чтения архива.
    Спасибо.

  9. #379

    По умолчанию

    Я правильно понял, что я ставлю в теге (файла) Разрешение выполнения скрипта перед записью и пишу в него следующее:
    Код:
    -- Initialization
    function OnInit()
    end
    -- Uninitialization
    function OnClose()
    end
    -- Processing
    function OnRead()
    server.WriteTag("$(N).$(D).текущие.file_num",0,192);
    t1,q1,ts1 = server.ReadTag("$(N).$(D).текущие.file_num");
    if q1==192 then
    server.PollCurrentDevice( );
    end;
    end

  10. #380

    По умолчанию

    А зачем вам вообще тег? Вам же нужно контроллеру сообщить что будете читать такой то файл.
    Выполняете команду modbus.WriteHoldingRegistersAsInt16( ) пишите в нужный Modbus регистр например 0, читаем нулевой файл.
    Это нужно вставить в сам код скрипта - в функцию OnBeforeReading(), перед выполнением скрипта чтения файла.
    Спасибо.

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

Ваши права

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