Коммуникационные протоколы в электроэнергетике: ModBus

Full Transcript — Download SRT & Markdown

00:04
Speaker A
Меня зовут Сиренко Николай, и я работаю в компании Микропроцессорные технологии.
00:09
Speaker A
Мы планируем выпустить серию роликов про работу с коммуникационными протоколами в сфере электроэнергетики.
00:14
Speaker A
Эти видео планируются как первый бесплатный всеобъемлющий курс, который будет полезен как для специалистов РЗА, так и АСУТП.
00:21
Speaker A
Мы планируем сделать эти видео профессиональными, с хорошим звуком, картинкой и монтажом, чтобы было интересно, легко и познавательно, потому что скучных, сложных и банальных видео по этой теме на YouTube и так достаточно.
00:32
Speaker A
У каждого видео будут тайм-коды для облегчения навигации.
00:35
Speaker A
Некоторые темы я планирую рассказать достаточно подробно, поэтому будет удобно что-то пропустить и переходить по меткам времени к вопросам, которые вас интересуют.
00:43
Speaker A
Тема первого видео будет протокол Modbus.
00:45
Speaker A
Протокол Modbus - это коммуникационный протокол, основанный на архитектуре ведущий-ведомый, первая спецификация которого появилась в 1979 году.
00:55
Speaker A
Протокол - это набор правил, по которым отправитель и получатель заранее договорились обмениваться информацией.
01:01
Speaker A
Можно сказать, что это язык, на котором общаются устройства.
01:06
Speaker A
Как любой язык может приобретать различную физическую форму, например, быть записан ручкой на бумаге или произнесён вслух.
01:13
Speaker A
Так и протокол может накладываться на различную физическую реализацию, называемую интерфейсом.
01:19
Speaker A
Наибольшее распространение в энергетике получил интерфейс RS-485 с наложенным на него протоколом Modbus-RTU.
01:26
Speaker A
И Ethernet с наложенным на него протоколом Modbus-TCP.
01:30
Speaker A
Ethernet, в свою очередь, бывает медным, то есть по витой паре, и оптическим, передаваемым по оптоволокну.
01:35
Speaker A
В классической топологии в сети Modbus-RTU может находиться только одно ведущее устройство, называемое мастер.
01:42
Speaker A
И несколько ведомых, называемых слейвами.
01:44
Speaker A
Это означает, что только мастер может быть инициатором обмена данными.
01:50
Speaker A
А всё, что остаётся слейвом - это отвечать на его запросы.
01:53
Speaker A
Таким образом, у ведущего устройства нет возможности определить, прервалась ли связь нештатно.
02:00
Speaker A
Либо у ведущего устройства нет к нему запросов.
02:03
Speaker A
Конечно, тут можно оговориться и сказать, что устройство может анализировать трафик.
02:08
Speaker A
Но на практике это требует много ресурсов и не применяется.
02:11
Speaker A
Совсем другое дело - Modbus-TCP, использование стека TCP/IP даёт некоторую свободу.
02:16
Speaker A
И ведущих устройств в сети может быть несколько.
02:19
Speaker A
Протокол Modbus является самым простым из используемых в энергетике.
02:23
Speaker A
В нём нет никакой оптимизации трафика.
02:26
Speaker A
Обмен информацией происходит по принципу запрос-ответ.
02:30
Speaker A
Чтобы у ведущего устройства, а в основном это SCADA-системы, полностью обновилась модель данных.
02:37
Speaker A
Оно должно честно просить каждый интересующий его адрес в каждом устройстве.
02:41
Speaker A
Действительно, вдруг с последнего запроса данные изменились.
02:43
Speaker A
Мне очень нравится пример с выдвижными шкафчиками.
02:46
Speaker A
Вам каждый раз нужно выдвинуть каждый шкафчик, чтобы проверить, не изменилось ли его содержимое.
02:52
Speaker A
Точно так же и ведущее устройство в протоколе Modbus должно просить каждый адрес, чтобы узнать, какие данные там находятся.
02:59
Speaker A
Всё это создаёт значительный трафик в сети при опросе большого количества устройств.
03:05
Speaker A
И увеличивает цикл опроса каждого параметра.
03:07
Speaker A
Но обычно требования к SCADA-системам не очень высокие, достаточно, чтобы информация обновлялась.
03:13
Speaker A
Со скоростью, с которой изменения может заметить оперативный персонал.
03:16
Speaker A
Поэтому протокола Modbus для таких целей вполне достаточно.
03:21
Speaker A
Теперь мы перейдём к практике.
03:25
Speaker A
Я рекомендую для подключения использовать программу Modbus Poll последней версии.
03:30
Speaker A
Это очень хорошая программа с широким функционалом.
03:34
Speaker A
Во вкладке Connection мы выбираем Serial Port для подключения по RS-485.
03:40
Speaker A
И Modbus TCP/IP для подключения по Ethernet.
03:44
Speaker A
У меня сейчас выполнено подключение по RS, поэтому я выбрал Serial Port.
03:49
Speaker A
Для подключения компьютера к устройству потребуется переходник с RS-485 на USB.
03:54
Speaker A
Если вы подключаетесь по Modbus-RTU.
03:57
Speaker A
Я использую вот такой переходник, называется Юка.
04:00
Speaker A
Если же вы подключаетесь по Ethernet, то можно подключаться как напрямую к сетевой карте.
04:06
Speaker A
Так и подключать устройство к любому маршрутизатору, относящемуся к вашей сети.
04:11
Speaker A
По тому, как настраивается сеть, у нас планируется отдельное видео.
04:15
Speaker A
Дальше нам нужно выбрать номер COM-порта.
04:18
Speaker A
Если вы не знаете, какой у вас номер COM-порта, то это всегда можно посмотреть в диспетчере устройств.
04:24
Speaker A
Подключая и отключая устройство.
04:27
Speaker A
Далее мы выбираем скорость обмена, количество бит, чётность и количество стоп-бит.
04:32
Speaker A
Естественно, все эти значения должны быть выставлены, как у ведомого устройства.
04:36
Speaker A
Если вы не знаете эти настройки, то посмотрите их в руководстве по эксплуатации используемого устройства.
04:40
Speaker A
Обычно производитель указывает значение настроек по умолчанию.
04:44
Speaker A
Нажимаем Окей и подключаемся.
04:47
Speaker A
Теперь настроим адреса для чтения.
04:49
Speaker A
Заходим в Setup, Read/Write Definition.
04:51
Speaker A
Slave ID указываем Modbus-адрес устройства.
04:54
Speaker A
Сейчас я подключаю к устройству Iris-DIN производства нашей компании.
04:58
Speaker A
Обратите внимание, в каком формате указаны адреса в карте памяти устройства.
05:03
Speaker A
Если перед адресом стоят символы 0x, то это шестнадцатеричная система счисления.
05:08
Speaker A
И нужно переключиться на неё.
05:10
Speaker A
Кроме того, вы всегда можете использовать калькулятор, предварительно переведя его в режим программист.
05:16
Speaker A
Для перевода из одной системы счисления в другую.
05:18
Speaker A
Для наглядного отображения адресов советую установить настройки, как у меня.
05:23
Speaker A
Отдельно я бы хотел остановиться на функциях, с которыми мы можем отправлять запросы.
05:26
Speaker A
Всегда проверяйте по документации производителя, какие функции используются в конкретном устройстве.
05:32
Speaker A
Потому что они могут не совпадать с предусмотренными по стандарту.
05:35
Speaker A
И тогда прочитать данные не получится.
05:37
Speaker A
Если указать адрес правильно, но функцию выбрать некорректно, то от устройства будет приходить ответ о некорректно выбранной функции.
05:44
Speaker A
Первая функция предназначена только для считывания дискретных выходов.
05:48
Speaker A
С её помощью можно считывать биты состояния: один включено и ноль отключено.
05:53
Speaker A
Сэкономить на трафике тут можно только, если выбрать для чтения несколько подряд идущих значений.
05:59
Speaker A
Так как размер кадра должен быть кратен одному байту, то если запросить один адрес, то оставшиеся 7 бит придут заполненными нулями.
06:06
Speaker A
Но если запросить 8 или 16 адресов, то тогда тут экономия трафика будет значительная.
06:10
Speaker A
Чем больше идущих подряд адресов в запросе, тем выше эффективность передачи.
06:16
Speaker A
Дело в том, что согласно стандарту, между запросами устройство должно выждать время, значительно превышающее время непосредственно самой передачи.
06:24
Speaker A
Поэтому запрос каждого адреса по отдельности уйдёт больше времени, чем на запрос группы подряд идущих адресов.
06:30
Speaker A
Возможно, вам даже стоит включить запрос ненужные вам адреса, если они находятся между теми адресами, которые вам нужны.
06:36
Speaker A
Если таких адресов не слишком много.
06:38
Speaker A
Это относится ко всем функциям, а не только к Read Coils.
06:41
Speaker A
Выбрать количество запрашиваемых адресов можно ниже, в графе Quantity.
06:46
Speaker A
Функция Read Discrete Inputs, как понятно из названия.
06:50
Speaker A
Предназначена для считывания дискретных входных сигналов.
06:53
Speaker A
Её работа аналогична работе функции Read Coils, точно так же можно считать только биты, которые упаковываются в байты.
06:59
Speaker A
Read Holding Registers, на мой взгляд, самая популярная функция для получения данных.
07:04
Speaker A
Изначально она была нужна для чтения аналоговых сигналов.
07:08
Speaker A
Но многие производители используют её также для чтения и дискретных сигналов, потому что она универсальна.
07:16
Speaker A
И не возникает путаницы с тем, что по разным адресам находятся данные с разными функциями чтения.
07:22
Speaker A
Остальные функции идентичны уже описанным, с той лишь разницей, что предназначены для записи.
07:27
Speaker A
Возможно также записывать сразу несколько регистров, если это поддерживается со стороны устройства.
07:33
Speaker A
Но из этого меню мы не можем вызвать эти функции, потому что оно предназначено только для чтения.
07:38
Speaker A
Кстати, если обратимся к этому полю, то можем увидеть отправляемый запрос в шестнадцатеричной форме.
07:44
Speaker A
В первом поле содержится адрес устройства, к которому адресуется запрос.
07:49
Speaker A
Естественно, на него должно отвечать только устройство с указанным адресом.
07:53
Speaker A
Остальные устройства, получившие данный запрос, игнорируют его.
07:58
Speaker A
Второе поле - это номер функции чтения.
08:00
Speaker A
Если мы будем менять функцию, то оно будет меняться.
08:05
Speaker A
Следующие два поля - это адрес первого регистра.
08:08
Speaker A
С которого будет начинаться чтение.
08:12
Speaker A
И затем два поля - это количество считываемых адресов.
08:15
Speaker A
Последние два поля - это контрольная сумма.
08:17
Speaker A
Для записи данных можно два раза щёлкнуть по адресу, вписать отправляемое значение и нажать Send.
08:22
Speaker A
Если выбрана эта галочка, то окно закроется при получении подтверждения от устройства.
08:26
Speaker A
Если требуется выполнить передачу с другой функцией, то можно зайти в Function и выбрать, например, запись нескольких регистров.
08:32
Speaker A
Но в таком случае обращайте внимание на поддержку такой записи со стороны устройства.
08:38
Speaker A
Если есть необходимость выводить данные в лог, то нужно перейти в Setup, Log или Excel Log.
08:43
Speaker A
Далее нужно настроить, что и в каких случаях вы хотите логировать.
08:47
Speaker A
Затем обязательно выбрать файл, в который будет сохраняться лог, и после этого начнётся запись данных.
08:53
Speaker A
Если вы хотите в рамках тестирования отправить произвольное сообщение, например, с некорректной контрольной суммой.
09:00
Speaker A
Чтобы проверить то, что устройство проигнорирует его.
09:04
Speaker A
То можно воспользоваться вкладкой Function, Test Center.
09:08
Speaker A
Скопируем сообщение, зайдём во вкладку и изменим контрольную сумму.
09:12
Speaker A
Видим, что устройство полностью игнорирует данное сообщение.
09:24
Speaker A
Весь трафик мы можем посмотреть, перейдя в Display, Communication.
09:29
Speaker A
TX - это запросы к устройству, а RX - это его ответы.
09:36
Speaker A
Иногда длины одного адреса не хватает, и данные приходится считывать из нескольких объединённых адресов.
09:42
Speaker A
Например, в Iris-DIN максиметр частоты находится по адресам 162 и 163 в шестнадцатеричной системе отсчёта.
09:50
Speaker A
Производитель должен указывать, какой формат объединения он использует.
09:54
Speaker A
Потому что существует неопределённость, в какой последовательности нужно рассчитывать байты.
10:00
Speaker A
То есть, какой из двух адресов будет стоять на первом месте.
10:04
Speaker A
И в какой последовательности должны быть биты внутри байт.
10:08
Speaker A
Очень часто производитель использует третью функцию для чтения, но данные в ней пакует, как в первой.
10:13
Speaker A
Например, 16 дискретных входов не распределяются по 16 адресам, а упаковывают в один адрес в разные биты.
10:21
Speaker A
Такую информацию нужно читать третьей функцией.
10:24
Speaker A
Но представлять её в побитовом виде.
10:27
Speaker A
Например, адрес 130 в шестнадцатеричном представлении содержит 13 бит информации.
10:33
Speaker A
Отображающих дискретные входы.
10:38
Speaker A
Чтобы увидеть их, я выбираю формат Binary.
10:45
Speaker A
Теперь каждый бит соответствует дискретному входу.
10:48
Speaker A
Сейчас я замыкаю первый дискретный вход.
10:52
Speaker A
Как вы видите, нумерация бит происходит справа налево.
10:56
Speaker A
Точно так же с отправкой информации в побитовом виде.
11:00
Speaker A
Например, первый адрес подразумевает такое управление.
11:05
Speaker A
Нужно два раза щёлкнуть по адресу, когда он находится в бинарном представлении.
11:10
Speaker A
И тогда откроется окно для выбора отправляемых бит.
11:13
Speaker A
Конечно, можно всё то же самое рассчитать на калькуляторе.
11:15
Speaker A
Например, отключение Bluetooth будет 100 в двоичной системе.
11:20
Speaker A
Пересчитав то же самое в десятичной системе, получим 4.
11:24
Speaker A
Поэтому можно либо поставить галочку в третьем окне, если выбрано двоичное представление.
11:31
Speaker A
Либо записать 4, предварительно пересчитав на калькуляторе.
11:35
Speaker A
Если выбрано десятичное, и вы любите страдать.
11:37
Speaker A
Лично, на мой взгляд, выбор очевиден.
11:40
Speaker A
Кроме создания мастера опроса, можно создавать ведомое устройство.
11:43
Speaker A
Для этого я советую использовать программу Modbus Slave.
11:48
Speaker A
Она входит в тот же пакет, что и Modbus Poll.
11:52
Speaker A
Можно даже подключить ведущее устройство, созданное в Modbus Poll, и ведомое, созданное в Modbus Slave.
11:58
Speaker A
Но для этого понадобится создать пару виртуальных портов.
12:00
Speaker A
Я использую программу Virtual Serial Port Driver Pro.
12:04
Speaker A
Нужно зайти во вкладку Pairing, выбрав номер для виртуальных портов, я использовал 100 и 101.
12:11
Speaker A
Чтобы не перепутать с реальными физическими устройствами.
12:14
Speaker A
И добавить пару.
12:16
Speaker A
Теперь мы видим, что данная пара появилась в диспетчере устройств.
12:19
Speaker A
По сути, это сквозной виртуальный канал с двумя виртуальными выводами в виде COM-портов.
12:26
Speaker A
Теперь подключим к одному из них виртуальное ведущее устройство.
12:30
Speaker A
А к другому - виртуальное ведомое.
12:33
Speaker A
И получим полноценную виртуальную систему.
12:36
Speaker A
Для физической реализации такой системы нам бы понадобилась SCADA-система в качестве ведущего устройства.
12:41
Speaker A
Измерительный прибор в качестве ведомого.
12:46
Speaker A
И физическая шина RS-485.
12:49
Speaker A
Мы же будем всё это эмулировать.
12:52
Speaker A
В данной системе можем как отправлять данные с ведущего устройства на ведомое.
12:57
Speaker A
И они там будут сохраняться.
13:00
Speaker A
Так и менять данные в модели ведомого устройства, и эти изменения будет видеть ведущее устройство после опроса.
13:06
Speaker A
Эмулировать ведомое устройство бывает очень полезно, когда вы хотите промоделировать наличие данных в нужных вам адресах.
13:12
Speaker A
А добиться физически такого состояния представляется затруднительным.
13:16
Speaker A
Кроме того, эта программа будет полезна, если вы хотите посмотреть трафик на шине Modbus-RTU.
13:21
Speaker A
Где уже есть ведущее устройство.
13:24
Speaker A
Как я уже говорил ранее, в Modbus-RTU в сети может быть только одно ведущее устройство.
13:30
Speaker A
Поэтому не получится просто подключиться в сеть при помощи Modbus Poll и включить монитор сети.
13:35
Speaker A
Потому что Modbus Poll подключается в сеть именно как мастер, а при наличии двух мастеров в сети, они оба будут посылать запросы в случайные промежутки времени.
13:42
Speaker A
И когда эти запросы будут происходить одновременно, в сети будут возникать коллизии.
13:47
Speaker A
Обмен данными будет невозможен.
13:50
Speaker A
Поэтому в сеть нужно подключаться именно как ведомое устройство.
13:54
Speaker A
Для этого после подключения в Modbus Slave выбираем Display, Communication.
13:58
Speaker A
Теперь можно анализировать трафик в сети без коллизий.
14:02
Speaker A
Сегодня мы рассмотрели использование протокола Modbus в электроэнергетике.
14:06
Speaker A
Надеюсь, что это видео было для вас полезным.
14:10
Speaker A
До встречи на канале и лёгких вам коммуникаций.
14:14
Speaker A
Пока.

Get More with the Söz AI App

Transcribe recordings, audio files, and YouTube videos — with AI summaries, speaker detection, and unlimited transcriptions.

Or transcribe another YouTube video here →