Большинство драйверов промышленных протоколов, будь то 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.
![](https://habrastorage.org/getpro/habr/upload_files/a72/e6b/9b3/a72e6b9b3baaa0171efba2ed368f9ff5.jpeg)
Набор данных, содержащий адреса переменных и информацию о ПЛК, содержится в архиве формата zip. По умолчанию файл называется Export, его имя я не меняю.
![](https://habrastorage.org/getpro/habr/upload_files/fdf/ab9/24b/fdfab924b6e71cce45ff9eeb84a682c6.jpeg)
Переходим теперь к Debian. Прикладной проект уже создан, его имя - test. Полученный файл Export.zip нам необходимо скопировать (не распаковывая!) в директорию /data/TIA_Projects нашего прикладного проекта.
![Общий перечень директорий прикладного проекта Общий перечень директорий прикладного проекта](https://habrastorage.org/getpro/habr/upload_files/4c5/842/1ac/4c58421acbb76de915b5670f77542e00.jpeg)
![Директория data прикладного проекта Директория data прикладного проекта](https://habrastorage.org/getpro/habr/upload_files/440/f40/cb7/440f40cb7a267d3af510ddd1678844b0.jpeg)
![В эту директорию мы и копируем файл экспорта. В эту директорию мы и копируем файл экспорта.](https://habrastorage.org/getpro/habr/upload_files/aa0/367/b9a/aa0367b9a8241e9e273490c9ada1b03e.jpeg)
Далее процедура стандартная. Добавляем и запускаем драйвер s7plus.
![](https://habrastorage.org/getpro/habr/upload_files/5eb/dfc/30a/5ebdfc30ac6e8e7f5fc3c5b198c86165.jpeg)
Открываем модуль System и окно S7+ Driver
![](https://habrastorage.org/getpro/habr/upload_files/455/e5e/d46/455e5ed4691dae2261443102cc2dd0a2.jpeg)
![](https://habrastorage.org/getpro/habr/upload_files/9f7/b68/4ab/9f7b684ab7cdb2ac8075763547bf5eb8.jpeg)
Создаем соединение, даем ему осмысленное имя
![](https://habrastorage.org/getpro/habr/upload_files/0f1/546/497/0f1546497063fb67b3704076feaf7e1f.jpeg)
Далее открывается окно с контроллерами и символами. У нас в папке TIA_Projects только один ПЛК, его мы и видим.
![](https://habrastorage.org/getpro/habr/upload_files/c72/7f5/08d/c727f508d6fb0f59e56eb127dd66141b.jpeg)
На этом настройка связи заканчивается. Пора переходить к точкам данных. Связь с ПЛК не устанавливаем, ведь мы воссоздаем ситуацию разработки без ПЛК на руках.
![](https://habrastorage.org/getpro/habr/upload_files/23c/01e/229/23c01e229393096e2030961dde0c4326.jpeg)
Открываем модуль Para, создаем точку данных типа ExampleDP_Int, сразу добавляем конфиг address.
![](https://habrastorage.org/getpro/habr/upload_files/75b/268/b14/75b268b14e01344fabd6a7791a7ae612.jpeg)
Выбираем соединение и жмем кнопку Selection.
![](https://habrastorage.org/getpro/habr/upload_files/7b9/eca/12d/7b9eca12d673b302c05038fd6315ffdc.jpeg)
Появляются все тэги контроллера, доступны для записи или чтения с верхнего уровня. Напоминаю, что сам физический ПЛК у нас отсутствует. Я выбираю нужный мне тэг.
![](https://habrastorage.org/getpro/habr/upload_files/834/416/21d/83441621d78ce293b22b8c8932f90340.jpeg)
Не забываем задать направление (Direction : Input, т.е. чтение), а так же выбрать простой Polling и создать активную группу опроса (в этом примере создана группа mypoll на 500 мс, она сделана активной). Так же не забываем сделать активным ведь конфиг address установкой галочки в нижней части.
![](https://habrastorage.org/getpro/habr/upload_files/9f4/121/e1d/9f4121e1d5812f1f54cddb8bfee8f99a.jpeg)
![](https://habrastorage.org/getpro/habr/upload_files/879/386/396/879386396da1e77d1702fa54d026699e.jpeg)
На этом offline-настройка заканчивается. После того, как ПЛК смонтирован, расключен и «залит» прикладной программой, необходимо проверить работу с ним. Для этого открываем модуль System, заходим в драйверы S7 и открываем драйвер S7plus.
В знакомом уже окне ставим галочку «Establish Connection» и нажимаем Apply. Связь устанавливается.
![](https://habrastorage.org/getpro/habr/upload_files/ed1/82f/313/ed182f3134f4a1fb51a943b2bb336012.jpeg)
Открываем модуль para и убеждаемся в том, что информация с ПЛК обновляется.
![](https://habrastorage.org/getpro/habr/upload_files/3ba/684/e7d/3ba684e7d5d202720dda99c1c900f16c.jpeg)
На этом проверка заканчивается.
Как видно из этого примера, настройка связи с устройствами S7 под Windows и под Linux ничем не отличаются.