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 часа в триал-режиме. После этого его нужно перезапускать.
- Устанавливаем Automation Studio и Automation Net. Примечание: наш эксперимент проводился на ОС Windows 7
- Запускаем Automation Studio, создаём пустой проект и устанавливаем соединение с контроллером
- Для начала определим имена интересующих нас переменных. Перейдя в Physical View правым кликом по CP открываем вкладку Software
- Правый клик по <"CPU"> - открыть — Watch
- Снова правый клик — Insert variables
- Итак, имеем две глобальных переменных var1 и var2 типа USINT c начальными значениями 3 и 5 соответственно
- Теперь приступим к конфигурации ОРС-сервера Переходим в Logical View → Add Object → добавляем декларацию тегов OPC (OPC Tag Declaration File)
- Двойным кликом по OpcTag.opct в Logical View открываем декларацию тегов. Правым кликом по пустому месту в открывшейся декларации → добавляем теги (Add OPC Tag)
- Даём любое имя нашему тегу, например mySuperTagVar1, для наших переменных типа USINT выбираем тип данных VT_UI1, поле Source оставляем пустым или выбираем из списка. Если бы мы имели исходный проект, то Source мы могли бы выбрать из ниспадающего списка, а тип переменной подставился бы автоматически.
Совет: создайте точные копии интересующих переменных. И сможете выбирать их из списка (должны совпадать: имя переменной, тип данных, видимость (глобальная или локальная), если переменная локальная также важно имя задачи, к которой она привязана)
- В теории расписано, что нужно добавлять OPC mapping. Но мы этого делать не станем, а просто пропишем соединение OPC-сервера с контроллером вручную.
Компилируем проект (F7)
Идем в папку с проектом. Путь к файлу тегов у меня такой:
C:projects1111TempObjectsConfig1X20CP1301AsOPCS.opcs
Это - xml-файл. Сначала прописано соединение с контроллером, затем — расписаны теги
- Редактируем 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 ;" />
- Редактируем строчку с именем переменной в контроллере для нашего тега Если Вы создали копии переменных на шаге 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"/>
- Сохраняем файл и помещаем его в папку с OPC-сервером:
C:Program FilesBrAutomationPVIV4.2Bin
Пример файла можно скачать
- Вписываем имя 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
- Пуск → brautomation → pvi → development → server → OPC server
(запускаем ОРС сервер)
Если он уже был запущен, то перезапускаем, по видимому...
- Запускаем ОРС-монитор
Пуск → brautomation → pvi → development → Diagnostic Tools → OPC Monitor
- Добавляем ОРС-сервер. Поиск по localhost
- Коннектимся к серверу, добавляем теги
Всё работает!