Автор показывает, как реализовать Modbus TCP на Python: клиентский сокет и чтение регистра укладываются в две строки. Для проверки используется бесплатный Modbus-сервер, затем разбирается более надёжная реализация с классом и самодельный Modbus TCP сервер. В конце демонстрируется интерфейс для управления регулятором давления воды.
- 00:00 Идея: Modbus TCP в две строки на Python
- 01:45 Задача управления контроллером станка с компьютера
- 03:51 Две строки: создание сокета и чтение регистра
- 04:32 Тестовый Modbus-сервер и его настройка
- 10:49 Интерфейс регулятора давления воды
- 12:22 Итоги и мотивация изучения Python
- Modbus TCP
- Python
- ПЛК
Кому полезно: Инженерам АСУ ТП, интересующимся быстрой реализацией Modbus TCP на Python
Описание составлено автоматически по расшифровке речи в ролике.
Расшифровка видео
0:00 Коллеги, добрый день, сейчас я расскажу, как реализовать протокол матбасти Си Пи в 2 строчки на питоне, значит, дело было так. Я смотрел канал Юникс, изучал Юникс системы Си, ну и по пути изучил Питон. Вот отдельное спасибо Георгию Курячему за то, что выкладывает свои лекции. Но еще раньше началось с того, что я купил себе разбери. Ну и поэтому, собственно, потребность такая возникла, вот, значит, смотрел. Его плейлисты и лекции практически все их пересмотрел, может, за исключением самых последних и в 1 из плейлистов. У него была по моему совместная разработка и там рассматривался ТК Винтер и создание.
0:59 Приложений и приложения, в общем, то создаются достаточно легко. То есть вот можно открыть, посмотреть? Простенькое приложение 50 строчек занимает. Вот вот, если вот его запустить, тут есть какой то часики поле ввода кнопка, то и всего 50 строчек. Очень просто, я так подумал, нельзя ли такие простенькие приложенки. Писать, ну конкретно практически, чтобы они были необходимыми. То есть я задался целью, а можно ли прикрутить вот такую приложеньку для управления вот таким контроллером, который стоит в станке, где то?
1:45 Чтобы использовать не тач панель, а компьютером подключиться, ну и управлять им вот с такой приложенити типа вот этой вот вот. И соответственно, у меня возник вопрос, что нужно реализовать протокол от басти Си Пи. Потому что этот контроллер по нему бегает, ну и не только этот контроллер работает с этим протоколом. Этот протокол практически всеми контроллерами поддерживается. Вот ну дальше досмотрел все лекции. Почитал Хабр, вот и у меня, у меня таки это получилось.
2:24 Собственно говоря. Результат я выложил на гид хаб, есть у меня получается. Гуи Пидконтрол. Вот здесь проектик. Это как раз для подключения к Дельте. Сейчас покажу. Еще 1 вариант есть платформа ЕСП 32 на нее ставится микропитон, и по вай фаю все там тоже над бассейом также бегает. Тоже, что меня очень удивило в ти си пи ай пи, версии, конечно же. Тоже все это реализуется + 3 одинаково и. Ну давайте теперь, как все это работает, как все это тестирует. Значит, все исходники у меня на гид Хабе есть здесь есть? Вот раздел, сделал Ашамай Плис, то есть это интерфейс пользователя для ПЛК.
3:32 То есть коли делаем самодельный плк, почему бы и к нему не сделать простенький самодельный интерфейс? Ну, для того чтобы тестировать код, ну собственно. Ну, собственно, сам давайте откроем уже этот надбас. Собственно, от базы 2 строчки, грубо говоря, 2 строчки нужно для того, чтобы создать. Сам Ти Си Пи, Клиент клиентский сокет и 2 строчки нужно для того, чтобы он вот в цикле читал, какие то данные из паука здесь я читаю. Получается, вот нулевой мак Бассный регистр?
4:17 И его печатаю в консоль, как эту программу проверить. То есть я имею ввиду, когда я говорю, что Матбаза 2 строки я имею ввиду. Именно вот эти 2 строки отправляем сообщение, принимаем сообщнику. Значит, как это все хозяйство тестировать нужен, какой то образцовый матбас и вот фирма инсат? Такой предоставила. Он у них бесплатный, на 32 тега вполне себе. Он может быть и ти си пи сервером и ти си пи клиентом и надбаз, и рту, и ти си пи эски каким хочешь может. Быть ну настройки основные сейчас покажу и здесь. Он на локальный адрес настроен на компьютерный. По сути, он имитирует работу полка 502 порт и.
5:12 Вот дальше создано здесь матбас устройство с адресом над басным 0. Ой, точнее извиняюсь, 1 какой же 0 вот здесь только эти настройки я поменял? И создано 4 регистра на Бас Холдинг Регистры с адресами. 0 1 2 3 Ну, здесь только я нулевой использую, соответственно, тип данных у него уже.
5:37 Шестнадцатибитного значения хватает в промышленности, почему потому что? Цапа ЦП практически все преобразователи, они имеют разрядность де факто 12:16 бит и, соответственно, этот протокол. Поэтому до сих пор жив и 16 бит для промышленности до сих пор хватает и хватать еще будет очень долго. И соответственно вот этими 2 строчками на питоне я буду цепляться вот к этому серверу. Ну, давайте его запустим, как сконфигурирован уже. Я показал вот здесь, в поле, запросы будут прилетать запросы от вот этого соответственно, Пита, ничего скрипта.
6:24 Ну, давайте выполним, выполним его ран. Все, вот мы читаем, есть нули, пошли у нас в консоль. Смотрим, здесь здесь прошли запросы, соответственно, мы можем значение, например, написать какой нибудь 256 бах. Вот она появилась максимальная, соответственно, 65535 это в 2 в 15 степени одни, 1 а нет неправильно.
6:55 65535 Вот. Вот здесь видно, в протоколе 7 ФФВ это как раз вот это вот значение. Здесь Получается, в спортивной библиотеке создаем Сокет отправляем согласно спецификации Матуаса запрос и получаем ответ и вот, соответственно, печатаем результат и вот в бесконечном цикле. Все это происходит также, это текстовый файл, вот Мадбас Демо Точка. Пай его можно сейчас закрыть, можно закрыть Айдол, закроем, можно просто его запустить вот в таком режиме в консольном.
7:45 Тоже соответственно, все работает. Меняли Бахмут, все все работает еще соответственно какие. Дальше какие моменты также? Был отдельно написан. Вот Макбасти си пи сервер, то есть на питоне. На Гид Хабе он не Вот он есть. То есть он делает то же самое, что? Делала вот эта инициаторская программа, это много клиентский сервер на базе построенной библиотеки Сокет и Селект, по сути. Говорят, это медленно, ну да ладно. Главное работает как по мне не очень, то и медленно. Вот можем запустить вот сервера, вот мы сервер запустили, опять запускаем наш.
8:47 Клиент двухстрочечный, вот видно, он читает. Нолики дает сервер, пишет, что к нему подключились, закрываем, отключились дальше. Этот матбас в 3 строчки получил некоторое продолжение. Ну потому что это ненадежно, естественно, что же такое там 2 3 строчки и дальше?
9:12 То есть была построена уже более серьезная функция и класс здесь, вот описание всего этого хозяйства. Функция та же самая, которая в 3 строчки, она уже здесь более развернута. Здесь уже расшифрован весь протокол над басной. Согласно спецификации удобным образом читабельным добавлены и вот исключительные ситуации. Какие то все уже сделано более удобно, но при его использовании получилось так, что мы здесь клиент создаем. Открываем, а в конце закрываем и удаляем, то есть при каждый раз, если мы будем вызывать функцию чтения. Этого регистра, получается, мы сокет, закрываем, открываем каждый раз. Это накладные расходы дает свои сетевые и и здесь тоже самая функция. Только уже для записи Регистра та же самая у нее проблема и поэтому был. Создан класс, то есть в классе мы 1 раз создаем сокет и дальше уже в нем читаем потом по мере необходимости, когда нам высоким закрываем. И вот здесь пример, как этот класс используется, ну давайте этот запустим.
10:31 Этот клиент уже более сложный, а нет, Сорян, это сервер запустил. Сейчас запустим этот клиент, вот видно тоже. Он самодельный клиент самодельным сервером тоже снюхался. Это уже через класс, и все читается. И дальше, собственно, ради чего все делалось? Это вот этот интерфейс пользователя, он у меня сейчас контроллера Дельты нет, но он вместо контроллера сейчас цепляется. Вот к этому самодельному серверу и и, собственно говоря. С ним взаимодействуют это.
11:13 Регулятора давления воды здесь можно задать давление, посмотреть измеренное давление, сигнал управления. Вот регулятор можно переключить в автоматический ручной режим остановить. Вот такой вот простейший интерфейсик, вот вот все ради него это и делалось. И тоже на гидхабе он есть, вот он ти си пи клиент. Нет, вот этот Луипид контроль, то есть вот этим вот конкретно уже скриптиком. Я непосредственно цеплялся вот к этому контроллеру, и все таки у меня работала вот.
11:54 Единственное тут. Было замечание, вот надо подменить вот эту строчку, вот эта строчка и пи адрес для контроллера физического. А этот айпи адрес для контроллера в виртуального на питоне или инсатовский для тестирования вот?
12:22 Что еще хочется сказать сейчас, давайте откроем этот демонстрационный все таки пример в 2 строчки. Если вы не можете, что то сделать 2 строчки на питоне, значит, вы что то не так делаете соответственно. Почему я вообще на это все подкинулся, потому что питон он реально сокращает время? Работы программиста и можно действительно делать что то какие то серьезные вещи и быстро. Вот. То есть, когда я сделал Питон на? На Пит на Питоне реализовал реально Мадбас, который вот в 2 строчки заработал. Ну и честно это сильно вдохновляет и мотивирует на дальнейшее. Изучение, если бы у меня, так скажем, 2 строчки не получилось бы реализовать над Бас. Ну и я бы, наверное, на Сиэтта всю жизнь бы писал и не дописал бы.
13:26 Ну, в принципе, все всем спасибо.
Расшифровка сделана автоматически (Yandex SpeechKit) и может содержать ошибки в терминах.