Большинство драйверов промышленных протоколов, будь то S7 / S7Plus, Modbus, IEC-101 / 104 и т.д. настраиваются и работают как в версии под управлением Windows, так и Linux. Исключения, разумеется, есть. В первую очередь - это классический OPC. Обратите внимание, именно OPC, а не современный мультиплатформенный OPC UA. Надеюсь, что многие еще помнят, что аббревиатура OPC раскрывалась изначально, как OLE for Proccess Control. Ну, а анекдотов про Open Proccess Communication насочиняли уже позже. Технология OLE относится к механизмам OC Windows и несовместима с Linux. Вторым исключением является драйвер Cerberus (пожаро-охранная система).
Рассмотрим настройку связи с контроллером Simatic S7-1500 при помощи драйвера S7Plus в версии под Debian 10. Этот драйвер предназначен для опроса ПЛК серии S7-1200/1500 с использованием символьной адресации. Для упрощения настройки адресов тэгов (символов) драйвер предлагает два способа настройки - онлайн и оффлайн. В режиме онлайн при конфигурировании DPE в части address система устанавливает соединение с CPU и считывает полный список всех тэгов, доступных для внешнего мира, после вам остается только выбрать нужный.
На практике разработка ППО часто ведется в режиме оффлайн, когда контроллер либо еще даже не заказан, либо в доставке, либо в сборке, либо вообще уже уехал в составе шкафа управления конечному заказчику за тысячи километров. Для этого необходимая информация должна быть экспортирована из среды разработки ПЛК - TIA Portal Step 7. Add-on для этого экспорта называется Simatic SCADA Export, он скачивается и устанавливается в TIA Portal отдельно. Для экспорта данных необходимо выделить необходимый ПЛК в дереве проекта TIA Portal, нажать правую кнопку мыши и выбрать пункт Export to SIMATIC SCADA.
Набор данных, содержащий адреса переменных и информацию о ПЛК, содержится в архиве формата zip. По умолчанию файл называется Export, его имя я не меняю.
Переходим теперь к Debian. Прикладной проект уже создан, его имя - test. Полученный файл Export.zip нам необходимо скопировать (не распаковывая!) в директорию /data/TIA_Projects нашего прикладного проекта.
Далее процедура стандартная. Добавляем и запускаем драйвер s7plus.
Открываем модуль System и окно S7+ Driver
Создаем соединение, даем ему осмысленное имя
Далее открывается окно с контроллерами и символами. У нас в папке TIA_Projects только один ПЛК, его мы и видим.
На этом настройка связи заканчивается. Пора переходить к точкам данных. Связь с ПЛК не устанавливаем, ведь мы воссоздаем ситуацию разработки без ПЛК на руках.
Открываем модуль Para, создаем точку данных типа ExampleDP_Int, сразу добавляем конфиг address.
Выбираем соединение и жмем кнопку Selection.
Появляются все тэги контроллера, доступны для записи или чтения с верхнего уровня. Напоминаю, что сам физический ПЛК у нас отсутствует. Я выбираю нужный мне тэг.
Не забываем задать направление (Direction : Input, т.е. чтение), а так же выбрать простой Polling и создать активную группу опроса (в этом примере создана группа mypoll на 500 мс, она сделана активной). Так же не забываем сделать активным ведь конфиг address установкой галочки в нижней части.
На этом offline-настройка заканчивается. После того, как ПЛК смонтирован, расключен и «залит» прикладной программой, необходимо проверить работу с ним. Для этого открываем модуль System, заходим в драйверы S7 и открываем драйвер S7plus.
В знакомом уже окне ставим галочку «Establish Connection» и нажимаем Apply. Связь устанавливается.
Открываем модуль para и убеждаемся в том, что информация с ПЛК обновляется.
На этом проверка заканчивается.
Как видно из этого примера, настройка связи с устройствами S7 под Windows и под Linux ничем не отличаются.