На чем написан viber
В данном руководстве рассмотрено создание чат-бот помощника в Viber на языке программирования Python. Чат-бот имеет доступ к базе данных MySQL, которая в свою очередь связана с АСУ ТП (автоматизированной системой управления технологическим процессом), разработанной на базе логического контроллера Siemens серии S7-1500.
Чат-бот автоматизирует передачу информации о течение технологического процесса конечному пользователю, позволяет получать доступ к собранным данным с любого устройства (на котором, конечно, установлен Viber) и в любом месте.
Руководство рассчитано на инженеров-программистов, работающих в сфере автоматизации (АСУ ТП или АСУП ).
Стек технологий
Для реализации данной идеи необходимо знать:
Основы программирования контроллеров Siemens серии S7-1200/1500
Базовые принципы работы баз данных и языка запросов SQL
Язык программирования Python
Итак, весь материал будет разбит на две части:
Установка и конфигурация всех необходимых приложений
Установка и конфигурация приложений
Установить TIA Portal v16 из официального источника можно по ссылке.
В разделе TRIAL Download STEP 7 Basic/Professional, STEP 7 Safety Basic/Advanced and WinCC Basic/Comfort/Advanced and WinCC Unified скачиваем DVD 1 Setup и при установке выбираем Step 7 Professional и WinCC Advanced. А также в разделе TRIAL Download STEP 7 PLCSIM скачиваем и устанавливаем DVD 1 Setup - это симулятор, который позволяет тестировать ПО без физического контроллера.
Конфигурация "железа"
Далее создаётся глобальный дата блок, например, "test" с переменной "test". Переменную добавляем в HMI Tags, так как связь с базой данных MySQL будет реализована на стороне HMI клиента, в данном примере это панель оператора TP1200 Comfort. Программное обеспечение HMI разрабатывается в WinCC Advanced, интегрированной в TIA Portal (да-да, немного запутано). Средства WinCC позволяют писать код на VBScrpt, который и будет реализовывать обмен данными между ПЛК и БД MySQL.
Установка сервера MySQL подробно описана на других ресурсах (например, здесь). Однако стоит отметить, что необходимо помимо MySQL Server 8.0.XX также установить драйвер для Python и ODBC.
Установка MySQL
Для подключения БД к TIA Portal необходимо дополнительно скачать и установить 32-ух разрядный ODBC драйвер по ссылке.
После установки открываем командную строку (cmd) и запускаем MySQL:
После ввода пароля и успешного входа необходимо создать и настроить базу данных с таблицей:
CREATE DATABASE Siemens;
CREATE TABLE Data
(
Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
Value INT
);
Для настройки драйвера ODBC запускаем приложение "Источник данных ODBC" -32-ух разрядную версию и по кнопке "Добавить" необходимо выбрать MySQL ODBS 8.0 Unicode Driver.
Конфигурация ODBC коннектора
В настройках вводим данные пользователя, сконфигурированные при установке MySQL и выбираем созданную базу данных siemens. В качестве TCP/IP Server необходимо выбрать localhost. Кнопкой Test можно проверить корректность соединения. DSN ( Data Sourse Name) вводим также, как на скриншоте.
Установка Python версии 3 осуществляется с официального сайта .
Пожалуй, финальный подготовительный шаг - создание чат-бота и получение токена, который мы будем использовать в нашем python-приложении.
Создание чат-бота производится через панель администрирования по ссылке. регистрация и получение токена бесплатны.
ПО обмена данными между БД и Siemens
Данный код открывает соединение с базой данных, созданной выше. Записывает переменную "test_test" в таблицу "data". Также стоит обратить внимание, что обращение к тэгам HMI происходит через нотацию SmartTags():
VBS скрипт создаётся в дереве HMI в разделе Scripts:
Чтобы скрипт периодически исполнялся, необходимо создать для него триггер. В качестве триггера выбираем изменение переменной test_test. Во вкладке HMI находим тэг test_test и во вкладке Properties -> Events по параметру Value change добавляем вызов VBS скрипта:
ПО Viber чат-бота
Для обеспечения работоспособности кода необходимо установить следующие модули:
Ядро чат-бота - приложение Flask, работающее с API Viber. Для локального тестирования приложения необходимо использовать ngrok . После его запуска вводим команду:
А вот и сам код чат-бота на Python 3:
Для лучшего понимая кода можно прочитать документацию по Flask и Viber API. Для того, чтобы веб-приложение заработало необходимо:
Cкопировать и вставить в код ваш токен от чат-бота
Правильно проинициализировать конфигурацию чат-бота
Указать верные настройки для подключения к базе данных
А результат всей проделанной работы таков:
Заключение
Таким образом, данный проект реализует удалённый доступ к данным, которые контролируются АСУ ТП на базе ПЛК Siemens, через привычные интерфейс повседневного мессенджера. Доступность данных позволяет качественнее управлять технологическим процессом и анализировать его на более высоком уровне.
Буду рад увидеть комментарии читателей habr, и подчерпнуть для себя пользу в свежих взглядах со стороны.
Читайте также: