Резервирование системы визуализации с помощью UNO Server

Недавно один заказчик поставил нам такую задачу:

для небольшого производства, которое управляется ПЛК Siemens Simatic S7-400, необходимо реализовать резервирование системы визуализации. Обычное решение в таком случае – это поставить панель управления и по резервному каналу связи подключить к ПЛК:

WinCC и operation panel

Рисунок 1. Классическая схема с панелями оператора.

Только вот ценник для такого решения получается довольно высокий: 2 панели 3000 евро + модуль Ethernet 2000 евро, да еще разработка софта. Допустим можно взять китайские панели, с ними, правда, могут возникнуть проблемы, но зато можно немного сэкономить.

И тут мы думаем, а для чего же мы писали наш UNO Server? Ведь его можно подключить к контроллеру, и всю информацию выводить на планшет с Android или iOS? Вот как будет выглядеть такая система:

WinCC и android

Рисунок 2. Схема с планшетами вместо панелей оператора.

Так как имеется компьютер с WinCC 6.0, то можно будет сервером забирать с него теги и оправлять на планшеты с android/iOS по wifi.

Считаем: 2 планшета ~ 30000 руб. + wifi роутер 5000 руб. максимум.

Есть правда проблема, если не работает WinCC, то нет связи. Резервирование не получается. Но как оказалось у заказчика есть второй компьютер.

Два WinCC и android

Рисунок 3. Схема с двумя компьютерами.

Уже получается надежнее, но на полноценное резервирование не тянет. Попробуем организовать еще один канал связи с контроллером минуя WinCC:

Два WinCC, android и MOXA

Рисунок 4. Схема с дополнительным каналом связи Ethernet.

У ПЛК имеется RS-485. Можно на нем поднять modbus и через преобразователь RS485 – Ethernet MOXA подключить к компьютеру. Сервер будет забирать информацию напрямую из ПЛК. Это прибавит к ценнику еще 15000 руб., а скорее 30000 (так как надо еще резерв заложить), и к тому же в цепочке все еще присутствуют компьютеры. Попытаемся еще больше упростить схему, выкинув и их.

Два WinCC, android и MOXA

Рисунок 5. Схема с сервером внутри Android приложения.

Тут уже сервер переезжает в планшет. В случае Android планшета это не проблема, мы уже пробовали его там запускать. Java все-таки. На персональном компьютере сервер можно оставить, как дополнительный канал связи.

Если с modbus все уже отработано, то связь с WinCC необходимо было протестировать. В интернете нашлась интересная библиотека ODK_RW_Tags.dll. Эта библиотека позволяет получить доступ к тегам WinCC. Ну что, вперед.

Быстро строим прототип. Подключаем dll к Java через библиотеку JNA. Теги Real и Integer получилось прочитать сразу и даже записать в них значения. Но самая главная задача была передавать от контроллера текстовую информацию с рецептурами. Английские буквы тоже прочитались без проблем, а вот вместо русских были ромбики.

Рисунок 6. Вместо слова «Привет» видим ромбики.

Оказывается в WinCC используется кодировка Cp1251, а в Java UTF-8. Стало немного грустно. После нескольких часов разборок с кодировками увидел в отладчике такую строчку

Рисунок 7. Строка с указанием кодировки UTF-8.

Настроение сразу повысилось! Скачиваем исходные коды JNA и в классе Native.java находим такую строчку:

public static final String DEFAULT_ENCODING = "utf8";

меняем ее на такую:

public static final String DEFAULT_ENCODING = "cp1251";

Profit!!! Теперь можем наблюдать фразу «Привет World»

Рисунок 8. Теперь видим «Привет World».

Звоним заказчику, и рассказываем решение. А он говорит: Мы будем менять компьютеры и на них будет Windows 7 и WinCC 7.0. Для WinCC 7.0 пришлось найти новую версию библиотеки ODC_RW_Tags.dll и установить 32 битную версию JRE.

После этого вставили данный прототип в наш UNO Server. Осталось сделать шифрование, авторизацию пользователей и доделать интерфейс для android.

Рисунок 9. Пример интерфейса Android.

О том, как мы подключали наш UNO Server к серверу 1С, расскажем в одной из следующих статей.

Пример использования библиотеки и модифицированный JNA: WinCCTagLibrary

Наверх