Доступ к переменным контроллера через PVI → DDE server → в Эксель

Привет! Недавно столкнулся с задачей быстро показать результаты работы программы, работающей в контроллере B&R. Причём в виде графиков. Самый простой и быстрый путь — через PVI — DDE — в Excel.

Итак, теперь подробнее. Сразу замечу, что тип контроллера не имеет значения. Лишь бы это был контроллер фирмы B&R и у него на Ethernet-интерфейсе работал PVI. В 95% случаев PVI-таки работает 🙂

Внимание! PVI manager имеет таймаут коннекта в триал режиме! Полчаса оно поработает, а потом надо перезапускать PVI Manager. Ну, или покупать лицензию.

1. Устанавливаем PVI Development из установочного диска AS (раздел Automation Net Kit)
(можно установить всё из раздела PVI)

2. Запускаем PVI DDE Server

3. Настраиваем девайс (их должно быть 2 с одинаковыми настройками):
один с вашим именем,
второй — с именем device
Options→ Device Parameters:

настройки устройств pvi dde server

4. Прописываем переменные. File → Edit Configuration

cpu1301:#cp1301{},ERR=»E#»;
sStep:»CPU{/DAIP=10.1.10.51 /REPO=11159}/tcpServ/sStep», RF=1,DA=cpu1301;
ItemDiag:»CPU{/DAIP=10.1.10.51 /REPO=11159}/errDiag», RF=1;
aiG:»CPU{/DAIP=10.1.10.51 /REPO=11159}/aiG», RF=1;

Эти настройки прописываются в файлах
ProgamFiles/BrAutomation/PVI/V4.2/PVI/Cfg/
PviDDE.ini
PviDDE_Ina2.cfg

Сохраняем. Всё, должно работать.

Если перейти в Display → Variables, то появится список переменных.
Двойной клик по переменной и откроется окошко со значением.

5. При активном соединении PVI DDE Server получить значения в Экселе проще простого.

Просто пишем формулу:
=PVIDDE|cpu1301!sStep

6. Чтобы записать значение, нужно прописать макрос:
(пример под VBA)

ChannelNumber = Application.DDEInitiate(«PVIDDE», «cpu1301»)
Set SendValue = Worksheets(«Лист1»).Range(«D8»)
Application.DDEPoke ChannelNumber, «aiG», SendValue
Application.DDETerminate ChannelNumber

7. Примечание: чтобы корректно отображалась дробная часть необходимы следующие настройки региональных стандартов:
Разделитель дробной части = «.» (точка)
Разделитель групп разрядов = «,» (запятая)

Добавить комментарий

Ваш e-mail не будет опубликован.