Пошаговая инструкция настройки встроенного драйвера Modbus scada-системы WinCC OA
Целью данной статьи является создание пошаговой инструкции для освоения настройки встроенного драйвера Modbus у scada-системы WinCC OA
К сожалению, на базовом курсе данное соединение не проверяют и не дают таких инструкций, следовательно, устраняю данный пробел.
Итак, пошаговая инструкция по соединению стандартной станции WinCC OA по протоколу Modbus TCP. Используется популярный симулятор Modbus TCP протокола Modbus Tools1. На рабочей машине должна быть предустановлена 64-битная операционная система, демонстрационная или ключевая версия Wincc OA (v3.14 или более поздние)
2. Скачиваем и устанавливаем ModbusPollSetup64Bit.exe и ModbusSlaveSetup64Bit.exe. Устанавливаем данные компоненты для эмуляции потока данных (посылка-прием телеграмм) по протоколу Modbus TCP
3. Сначала запускаем Modbus Slave (генерация телеграмм) с настройками, как указано на рисунках, допуская работу в домашней сети (верхняя галочка)
4. Выставляем на эмуляторе слейва какие-либо числа
5. Настраиваем эмулятор мастера в соответствии с рисунком. Запускаем Modbus Poll
6. Видим, тикает счетчик телеграмм (TX), видим полученные и переданные данные. По умолчанию настроена функция 03 Holding Register
7. Создаем новый стандартный проект Wincc OA. Выбрав два языка для интерфейса, отказываюсь от ввода пароля.
8. Запускаем созданный проект «TestModbusTCP»
9. Дожидаемся запуска всех служб консоли
10. Останавливаем драйвер эмуляции протоколов (заглушку) и устанавливаем новый мастер Modbus driver
11. Устанавливаем строку инициализации в менеджере Modbus
Инициализация менеджера
Консоль должна выглядеть так:
12. Выставляем в конфигурационном файле проекта
[mod_1]
tcpServerPort = 502
и перезагружаем весь наш пустой проект
Использование в частной сети
13. Подтверждаем доступ
Консоль Wincc OA
Консоль должна выглядеть вот так
14. Настраиваем драйвер как на кадре ниже и активируем, жмем Active и Apply
15. Пробуем запустить эмулятор Slave
Если ругается что порт занят – ХОРОШИЙ ПРИЗНАК
Оставляем эту идею без действия и запускаем Modbus Pool
Видим, что идут телеграммы (меняется Tx) двигается счетчик, горит поочередно ошибка, то ошибка чтения, то на запись. Учитываем, что пока у нас не создано ни одного тэга и опрос не создан.
16. Создаем новый тип данных и новую точку данных. Новой точке задаем тип данных целочисленный (Int)
17. Добавляем к этой переменной алеас перефирийного адреса и кликаем на параметры
Задаем из списка протокол Modbus
Задаем параметры опроса18. Выбираем, какой у нас ПЛК, задаем период опроса. Важно!!! везде где попадается ставить галочку «Active»
19. Остается правильно с пониманием сети, запустить процесс обмена и все должно получиться
Запустить вначале нужно Modbus Slave (приемник телеграмм), только затем драйвер WinCC OA. Меняя значение в слейве мы видим, что WinCC OA считывает/получает данные
Modbus Poll так же можно запустить, например, для замены значения в регистре, но после запуска основного драйвера WinCC OA
Запрос вида:
00 1C 00 00 00 06 01 03 00 00 00 0A
00 1C – идентификатор пакета.
00 00 – всегда такое значение
00 06 – длина информационной части пакета 6 байт
01 – логический адрес контроллера/обычно равен 1, но…/
03 – команда чтения регистров
00 00 – с адреса 0000
00 0A – всего читается десять регистров (двадцать байт)
Ответ вида:
00 1C 00 00 00 17 01 03 14 00 17 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 1C – идентификатор повторить из запроса
00 00 – всегда такое значение
00 17 – длина информационной части (двадцать три байта)
01 – адрес ПЛК /повторить из запроса/
03 – функция
02 – число байт /регистры обычно 16-битные, потому число байт кратно двум/
хххх – значение регистра
00 1C 00 00 00 06 01 03 00 00 00 0A
00 1C 00 00 00 17 01 03 14 00 17 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Совет, если не выходит: перезагружайтесь почаще при настройке драйверов + если не идет обмен или пишет ерунду, то анализируйте, то что есть внутри пакетов обмена.
Удобный снифер для Modbus TCP можно взять здесь:
https://soft.mydiv.net/win/files-SmartSniff.html
13.08.2018
09.08.2018
Vyacheslav Lapshin
09.08.2018
09.08.2018