В своей прошлой статье я описывал возможность управления ПЛК джойстиком и обещал добавить небольшое изменение, связав ПЛК и LabVIEW не через последовательный порт, а через Ethernet (благо, коммуникационные возможности ПЛК100 это позволяют) и при помощи OPC-сервера — в данном случае это Codesys OPC Server. (Кстати, аналогичным образом с LabVIEW можно связать любой другой контроллер — через OPC-сервер, который работает с конкретным контроллером). В этой статье я, собственно, и собираюсь описать, как всё это делается.
Суть такова: LabVIEW обрабатывает нажатия кнопок джойстика; в случае нажатия конкретной кнопки — переменной (все переменные булевы) OPC-сервера, соответствующей этой кнопке, присваивается значение TRUE; контроллер читает значения переменных OPC-сервера и реагирует на их изменения в соответствии с залитой в него программой.
Часть Codesys
Объявляем восемь булевых глобальных переменных: в моём случае это x, y, a, b — для четырёх кнопок и up, down, right, left — для крестика.
Программа состоит из функциональных блоков и выглядит так:
«Содержимое» функциональных блоков можно найти здесь.
Затем необходимо настроить символьный файл — файл, содержащий описание данных, с которыми работает OPC-сервер. Для этого заходим в Options, выбираем там Symbol configuration, ставим галочку на Dump symbol entries, в появившемся окне Set object attributes выбираем необходимые переменные.
Настройку Codesys OPC Server я пропускаю: в Сети хватает информации на эту тему. Добавлю только, что при настройке подключения нужно выбрать Ethernet-соединение. Впрочем, ПЛК100 можно подключить и при помощи кабеля программирования, но это чревато ощутимой задержкой. Также стоит упомянуть, что частоту обновления сервера (Update Rate) я увеличил до 1500 миллисекунд: при малом значении сервер иногда пропускает кратковременные нажатия кнопок.
Часть LabVIEW
Прежде всего понадобится NI LabVIEW DSC Module (пробную версию можно скачать на официальном сайте). Данный модуль даёт возможность работать с данными OPC-сервера в LabVIEW.
Создаём новый VI, добавляем на Frontal Panel 8 индикаторов.
«Пишем»/рисуем такую вот программу:
Если интересуют подробности по поводу программы — см. здесь.
Далее необходимо привязать OPC-переменные к индикаторам, соответствующим конкретным кнопкам джойстика. Для этого открываем свойства индикатора, переходим на вкладку Data Binding; в Data Binding Selection выбираем DataSocket; в Access Type ставим Write Only, поскольку нам нужно записывать значения в переменные; в Path выбираем DSTP Server.
В появившемся окошке находим нужный нам OPC-сервер и выбираем соответствующую переменную.
Проделываем эту манипуляцию с каждым индикатором, после чего понимаем, что всё готово — можно подключать джойстик и снимать видео. А вот и оно, кстати.
Результатами я остался вполне доволен: связь стабильная, пропусков нажатий не наблюдалось. Но, судя по морганию индикаторов на Front Panel, LabVIEW как-то неохотно реагировала на нажатия кнопок. Мне кажется, что на более мощном компьютере этого бы не наблюдалось.
Автор: existentiary