Blog

 

Как получить данные с контроллера B&R в OPC

Илья Макарчук 2016.08.26

 

Имеем: контроллер B&R, запрограммированный поставщиком. (Естественно, исходный код нам никто не передавал, а заново писать весь проект не реально).
СКАДА система: типа Trace Mode или просто какой-нибудь OPC-монитор.

Наша цель: не ломая программу контроллера получить данные в нашей скаде.

Необходимые инструменты:
Automation Studio (у нас версия 4.2),
Automation Net (входит в комплект поставки Automation Studio)

ПОШАГОВАЯ ИНСТРУКЦИЯ
(в этом примере рассматриваются только глобальные переменные. Локальные — позже) Примечание: для бесперебойной работы PVI Manager необходима лицензия: 5S0500.02U в противном случае он будет работать 2 часа в триал-режиме. После этого его нужно перезапускать.

  1. Устанавливаем Automation Studio и Automation Net. Примечание: наш эксперимент проводился на ОС Windows 7
  2. Запускаем Automation Studio, создаём пустой проект и устанавливаем соединение с контроллером
  3. Для начала определим имена интересующих нас переменных. Перейдя в Physical View правым кликом по CP открываем вкладку Software
  4. Правый клик по <"CPU"> - открыть — Watch
  5. Снова правый клик — Insert variables
  6. Итак, имеем две глобальных переменных var1 и var2 типа USINT c начальными значениями 3 и 5 соответственно
  7. Теперь приступим к конфигурации ОРС-сервера Переходим в Logical View → Add Object → добавляем декларацию тегов OPC (OPC Tag Declaration File)
  8. Двойным кликом по OpcTag.opct в Logical View открываем декларацию тегов. Правым кликом по пустому месту в открывшейся декларации → добавляем теги (Add OPC Tag)
  9. Даём любое имя нашему тегу, например mySuperTagVar1, для наших переменных типа USINT выбираем тип данных VT_UI1, поле Source оставляем пустым или выбираем из списка. Если бы мы имели исходный проект, то Source мы могли бы выбрать из ниспадающего списка, а тип переменной подставился бы автоматически.
    Совет: создайте точные копии интересующих переменных. И сможете выбирать их из списка (должны совпадать: имя переменной, тип данных, видимость (глобальная или локальная), если переменная локальная также важно имя задачи, к которой она привязана)
  10. В теории расписано, что нужно добавлять OPC mapping. Но мы этого делать не станем, а просто пропишем соединение OPC-сервера с контроллером вручную.
    Компилируем проект (F7)
    Идем в папку с проектом. Путь к файлу тегов у меня такой:
    C:projects1111TempObjectsConfig1X20CP1301AsOPCS.opcs
    Это - xml-файл. Сначала прописано соединение с контроллером, затем — расписаны теги
  11. Редактируем xml-файл тегов. Корректируем параметры коннекта к контроллеру.
    Ищем строчку и вписываем туда параметры соединения (айпи, порт и т.д.)
    <.connection name="@/Pvi/LNINA2/Config1/X20CP1301/CPU" type="Cpu" objectdescriptor="CD=& quot ;; /repo="11159" /rt="1000" /da="2" /daip="10.1.10.70" & quot ;" />
  12. Редактируем строчку с именем переменной в контроллере для нашего тега Если Вы создали копии переменных на шаге 9, то этот пункт пропустите.
    Было:
    <.pvi name="@/Pvi/LNINA2/Config1/X20CP1301/CPU/" type="Pvar" objectdescriptor="VT= VN=1 VL=1 AT=rw RF=1000" linkdescriptor="VT= VN=1 VL=1 CM=0 LT=raw" accesstype="DATA"/>
    Стало:
    <.pvi name="@/Pvi/LNINA2/Config1/X20CP1301/CPU/var1" type="Pvar" objectdescriptor="VT=u8 VN=1 VL=1 CD=var1 AT=rw RF=1000" linkdescriptor="VT=u8 VN=1 VL=1 CM=0 LT=raw" accesstype="DATA"/>
  13. Сохраняем файл и помещаем его в папку с OPC-сервером:
    C:Program FilesBrAutomationPVIV4.2Bin
    Пример файла можно скачать
  14. Вписываем имя xml-файла в BR.OPC.Server.ini
    [ConfigPath]
    Path =
    [ConfigFiles]
    Files = 1
    CfgFile0 = AsOPCS.opcs
    [Logging]
    LogFile = BR.OPC.Server.log
    LogMode = Mains
    MaxFileSize = 100
    TimeStamp = Time + Date
    LineLength = 512
  15. Пуск → brautomation → pvi → development → server → OPC server
    (запускаем ОРС сервер)
    Если он уже был запущен, то перезапускаем, по видимому...
  16. Запускаем ОРС-монитор
    Пуск → brautomation → pvi → development → Diagnostic Tools → OPC Monitor
  17. Добавляем ОРС-сервер. Поиск по localhost
  18. Коннектимся к серверу, добавляем теги

Всё работает!