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