Ask about this video. Answers come from its transcript only — with the timestamp, so you can check them.
Generated from the transcript and can be wrong — check the timestamp.
Full Transcript — Download SRT & Markdown
Speaker A
Меня зовут Сиренко Николай, и я работаю в компании Микропроцессорные технологии.
Speaker A
Мы планируем выпустить серию роликов про работу с коммуникационными протоколами в сфере электроэнергетики.
Speaker A
Эти видео планируются как первый бесплатный всеобъемлющий курс, который будет полезен как для специалистов РЗА, так и АСУТП.
Speaker A
Мы планируем сделать эти видео профессиональными, с хорошим звуком, картинкой и монтажом, чтобы было интересно, легко и познавательно, потому что скучных, сложных и банальных видео по этой теме на YouTube и так достаточно.
Speaker A
У каждого видео будут тайм-коды для облегчения навигации.
Speaker A
Некоторые темы я планирую рассказать достаточно подробно, поэтому будет удобно что-то пропустить и переходить по меткам времени к вопросам, которые вас интересуют.
Speaker A
Тема первого видео будет протокол Modbus.
Speaker A
Протокол Modbus - это коммуникационный протокол, основанный на архитектуре ведущий-ведомый, первая спецификация которого появилась в 1979 году.
Speaker A
Протокол - это набор правил, по которым отправитель и получатель заранее договорились обмениваться информацией.
Speaker A
Можно сказать, что это язык, на котором общаются устройства.
Speaker A
Как любой язык может приобретать различную физическую форму, например, быть записан ручкой на бумаге или произнесён вслух.
Speaker A
Так и протокол может накладываться на различную физическую реализацию, называемую интерфейсом.
Speaker A
Наибольшее распространение в энергетике получил интерфейс RS-485 с наложенным на него протоколом Modbus-RTU.
Speaker A
И Ethernet с наложенным на него протоколом Modbus-TCP.
Speaker A
Ethernet, в свою очередь, бывает медным, то есть по витой паре, и оптическим, передаваемым по оптоволокну.
Speaker A
В классической топологии в сети Modbus-RTU может находиться только одно ведущее устройство, называемое мастер.
Speaker A
И несколько ведомых, называемых слейвами.
Speaker A
Это означает, что только мастер может быть инициатором обмена данными.
Speaker A
А всё, что остаётся слейвом - это отвечать на его запросы.
Speaker A
Таким образом, у ведущего устройства нет возможности определить, прервалась ли связь нештатно.
Speaker A
Либо у ведущего устройства нет к нему запросов.
Speaker A
Конечно, тут можно оговориться и сказать, что устройство может анализировать трафик.
Speaker A
Но на практике это требует много ресурсов и не применяется.
Speaker A
Совсем другое дело - Modbus-TCP, использование стека TCP/IP даёт некоторую свободу.
Speaker A
И ведущих устройств в сети может быть несколько.
Speaker A
Протокол Modbus является самым простым из используемых в энергетике.
Speaker A
В нём нет никакой оптимизации трафика.
Speaker A
Обмен информацией происходит по принципу запрос-ответ.
Speaker A
Чтобы у ведущего устройства, а в основном это SCADA-системы, полностью обновилась модель данных.
Speaker A
Оно должно честно просить каждый интересующий его адрес в каждом устройстве.
Speaker A
Действительно, вдруг с последнего запроса данные изменились.
Speaker A
Мне очень нравится пример с выдвижными шкафчиками.
Speaker A
Вам каждый раз нужно выдвинуть каждый шкафчик, чтобы проверить, не изменилось ли его содержимое.
Speaker A
Точно так же и ведущее устройство в протоколе Modbus должно просить каждый адрес, чтобы узнать, какие данные там находятся.
Speaker A
Всё это создаёт значительный трафик в сети при опросе большого количества устройств.
Speaker A
И увеличивает цикл опроса каждого параметра.
Speaker A
Но обычно требования к SCADA-системам не очень высокие, достаточно, чтобы информация обновлялась.
Speaker A
Со скоростью, с которой изменения может заметить оперативный персонал.
Speaker A
Поэтому протокола Modbus для таких целей вполне достаточно.
Speaker A
Теперь мы перейдём к практике.
Speaker A
Я рекомендую для подключения использовать программу Modbus Poll последней версии.
Speaker A
Это очень хорошая программа с широким функционалом.
Speaker A
Во вкладке Connection мы выбираем Serial Port для подключения по RS-485.
Speaker A
И Modbus TCP/IP для подключения по Ethernet.
Speaker A
У меня сейчас выполнено подключение по RS, поэтому я выбрал Serial Port.
Speaker A
Для подключения компьютера к устройству потребуется переходник с RS-485 на USB.
Speaker A
Если вы подключаетесь по Modbus-RTU.
Speaker A
Я использую вот такой переходник, называется Юка.
Speaker A
Если же вы подключаетесь по Ethernet, то можно подключаться как напрямую к сетевой карте.
Speaker A
Так и подключать устройство к любому маршрутизатору, относящемуся к вашей сети.
Speaker A
По тому, как настраивается сеть, у нас планируется отдельное видео.
Speaker A
Дальше нам нужно выбрать номер COM-порта.
Speaker A
Если вы не знаете, какой у вас номер COM-порта, то это всегда можно посмотреть в диспетчере устройств.
Speaker A
Подключая и отключая устройство.
Speaker A
Далее мы выбираем скорость обмена, количество бит, чётность и количество стоп-бит.
Speaker A
Естественно, все эти значения должны быть выставлены, как у ведомого устройства.
Speaker A
Если вы не знаете эти настройки, то посмотрите их в руководстве по эксплуатации используемого устройства.
Speaker A
Обычно производитель указывает значение настроек по умолчанию.
Speaker A
Нажимаем Окей и подключаемся.
Speaker A
Теперь настроим адреса для чтения.
Speaker A
Заходим в Setup, Read/Write Definition.
Speaker A
Slave ID указываем Modbus-адрес устройства.
Speaker A
Сейчас я подключаю к устройству Iris-DIN производства нашей компании.
Speaker A
Обратите внимание, в каком формате указаны адреса в карте памяти устройства.
Speaker A
Если перед адресом стоят символы 0x, то это шестнадцатеричная система счисления.
Speaker A
И нужно переключиться на неё.
Speaker A
Кроме того, вы всегда можете использовать калькулятор, предварительно переведя его в режим программист.
Speaker A
Для перевода из одной системы счисления в другую.
Speaker A
Для наглядного отображения адресов советую установить настройки, как у меня.
Speaker A
Отдельно я бы хотел остановиться на функциях, с которыми мы можем отправлять запросы.
Speaker A
Всегда проверяйте по документации производителя, какие функции используются в конкретном устройстве.
Speaker A
Потому что они могут не совпадать с предусмотренными по стандарту.
Speaker A
И тогда прочитать данные не получится.
Speaker A
Если указать адрес правильно, но функцию выбрать некорректно, то от устройства будет приходить ответ о некорректно выбранной функции.
Speaker A
Первая функция предназначена только для считывания дискретных выходов.
Speaker A
С её помощью можно считывать биты состояния: один включено и ноль отключено.
Speaker A
Сэкономить на трафике тут можно только, если выбрать для чтения несколько подряд идущих значений.
Speaker A
Так как размер кадра должен быть кратен одному байту, то если запросить один адрес, то оставшиеся 7 бит придут заполненными нулями.
Speaker A
Но если запросить 8 или 16 адресов, то тогда тут экономия трафика будет значительная.
Speaker A
Чем больше идущих подряд адресов в запросе, тем выше эффективность передачи.
Speaker A
Дело в том, что согласно стандарту, между запросами устройство должно выждать время, значительно превышающее время непосредственно самой передачи.
Speaker A
Поэтому запрос каждого адреса по отдельности уйдёт больше времени, чем на запрос группы подряд идущих адресов.
Speaker A
Возможно, вам даже стоит включить запрос ненужные вам адреса, если они находятся между теми адресами, которые вам нужны.
Speaker A
Если таких адресов не слишком много.
Speaker A
Это относится ко всем функциям, а не только к Read Coils.
Speaker A
Выбрать количество запрашиваемых адресов можно ниже, в графе Quantity.
Speaker A
Функция Read Discrete Inputs, как понятно из названия.
Speaker A
Предназначена для считывания дискретных входных сигналов.
Speaker A
Её работа аналогична работе функции Read Coils, точно так же можно считать только биты, которые упаковываются в байты.
Speaker A
Read Holding Registers, на мой взгляд, самая популярная функция для получения данных.
Speaker A
Изначально она была нужна для чтения аналоговых сигналов.
Speaker A
Но многие производители используют её также для чтения и дискретных сигналов, потому что она универсальна.
Speaker A
И не возникает путаницы с тем, что по разным адресам находятся данные с разными функциями чтения.
Speaker A
Остальные функции идентичны уже описанным, с той лишь разницей, что предназначены для записи.
Speaker A
Возможно также записывать сразу несколько регистров, если это поддерживается со стороны устройства.
Speaker A
Но из этого меню мы не можем вызвать эти функции, потому что оно предназначено только для чтения.
Speaker A
Кстати, если обратимся к этому полю, то можем увидеть отправляемый запрос в шестнадцатеричной форме.
Speaker A
В первом поле содержится адрес устройства, к которому адресуется запрос.
Speaker A
Естественно, на него должно отвечать только устройство с указанным адресом.
Speaker A
Остальные устройства, получившие данный запрос, игнорируют его.
Speaker A
Второе поле - это номер функции чтения.
Speaker A
Если мы будем менять функцию, то оно будет меняться.
Speaker A
Следующие два поля - это адрес первого регистра.
Speaker A
С которого будет начинаться чтение.
Speaker A
И затем два поля - это количество считываемых адресов.
Speaker A
Последние два поля - это контрольная сумма.
Speaker A
Для записи данных можно два раза щёлкнуть по адресу, вписать отправляемое значение и нажать Send.
Speaker A
Если выбрана эта галочка, то окно закроется при получении подтверждения от устройства.
Speaker A
Если требуется выполнить передачу с другой функцией, то можно зайти в Function и выбрать, например, запись нескольких регистров.
Speaker A
Но в таком случае обращайте внимание на поддержку такой записи со стороны устройства.
Speaker A
Если есть необходимость выводить данные в лог, то нужно перейти в Setup, Log или Excel Log.
Speaker A
Далее нужно настроить, что и в каких случаях вы хотите логировать.
Speaker A
Затем обязательно выбрать файл, в который будет сохраняться лог, и после этого начнётся запись данных.
Speaker A
Если вы хотите в рамках тестирования отправить произвольное сообщение, например, с некорректной контрольной суммой.
Speaker A
Чтобы проверить то, что устройство проигнорирует его.
Speaker A
То можно воспользоваться вкладкой Function, Test Center.
Speaker A
Скопируем сообщение, зайдём во вкладку и изменим контрольную сумму.
Speaker A
Видим, что устройство полностью игнорирует данное сообщение.
Speaker A
Весь трафик мы можем посмотреть, перейдя в Display, Communication.
Speaker A
TX - это запросы к устройству, а RX - это его ответы.
Speaker A
Иногда длины одного адреса не хватает, и данные приходится считывать из нескольких объединённых адресов.
Speaker A
Например, в Iris-DIN максиметр частоты находится по адресам 162 и 163 в шестнадцатеричной системе отсчёта.
Speaker A
Производитель должен указывать, какой формат объединения он использует.
Speaker A
Потому что существует неопределённость, в какой последовательности нужно рассчитывать байты.
Speaker A
То есть, какой из двух адресов будет стоять на первом месте.
Speaker A
И в какой последовательности должны быть биты внутри байт.
Speaker A
Очень часто производитель использует третью функцию для чтения, но данные в ней пакует, как в первой.
Speaker A
Например, 16 дискретных входов не распределяются по 16 адресам, а упаковывают в один адрес в разные биты.
Speaker A
Такую информацию нужно читать третьей функцией.
Speaker A
Но представлять её в побитовом виде.
Speaker A
Например, адрес 130 в шестнадцатеричном представлении содержит 13 бит информации.
Speaker A
Отображающих дискретные входы.
Speaker A
Чтобы увидеть их, я выбираю формат Binary.
Speaker A
Теперь каждый бит соответствует дискретному входу.
Speaker A
Сейчас я замыкаю первый дискретный вход.
Speaker A
Как вы видите, нумерация бит происходит справа налево.
Speaker A
Точно так же с отправкой информации в побитовом виде.
Speaker A
Например, первый адрес подразумевает такое управление.
Speaker A
Нужно два раза щёлкнуть по адресу, когда он находится в бинарном представлении.
Speaker A
И тогда откроется окно для выбора отправляемых бит.
Speaker A
Конечно, можно всё то же самое рассчитать на калькуляторе.
Speaker A
Например, отключение Bluetooth будет 100 в двоичной системе.
Speaker A
Пересчитав то же самое в десятичной системе, получим 4.
Speaker A
Поэтому можно либо поставить галочку в третьем окне, если выбрано двоичное представление.
Speaker A
Либо записать 4, предварительно пересчитав на калькуляторе.
Speaker A
Если выбрано десятичное, и вы любите страдать.
Speaker A
Лично, на мой взгляд, выбор очевиден.
Speaker A
Кроме создания мастера опроса, можно создавать ведомое устройство.
Speaker A
Для этого я советую использовать программу Modbus Slave.
Speaker A
Она входит в тот же пакет, что и Modbus Poll.
Speaker A
Можно даже подключить ведущее устройство, созданное в Modbus Poll, и ведомое, созданное в Modbus Slave.
Speaker A
Но для этого понадобится создать пару виртуальных портов.
Speaker A
Я использую программу Virtual Serial Port Driver Pro.
Speaker A
Нужно зайти во вкладку Pairing, выбрав номер для виртуальных портов, я использовал 100 и 101.
Speaker A
Чтобы не перепутать с реальными физическими устройствами.
Speaker A
И добавить пару.
Speaker A
Теперь мы видим, что данная пара появилась в диспетчере устройств.
Speaker A
По сути, это сквозной виртуальный канал с двумя виртуальными выводами в виде COM-портов.
Speaker A
Теперь подключим к одному из них виртуальное ведущее устройство.
Speaker A
А к другому - виртуальное ведомое.
Speaker A
И получим полноценную виртуальную систему.
Speaker A
Для физической реализации такой системы нам бы понадобилась SCADA-система в качестве ведущего устройства.
Speaker A
Измерительный прибор в качестве ведомого.
Speaker A
И физическая шина RS-485.
Speaker A
Мы же будем всё это эмулировать.
Speaker A
В данной системе можем как отправлять данные с ведущего устройства на ведомое.
Speaker A
И они там будут сохраняться.
Speaker A
Так и менять данные в модели ведомого устройства, и эти изменения будет видеть ведущее устройство после опроса.
Speaker A
Эмулировать ведомое устройство бывает очень полезно, когда вы хотите промоделировать наличие данных в нужных вам адресах.
Speaker A
А добиться физически такого состояния представляется затруднительным.
Speaker A
Кроме того, эта программа будет полезна, если вы хотите посмотреть трафик на шине Modbus-RTU.
Speaker A
Где уже есть ведущее устройство.
Speaker A
Как я уже говорил ранее, в Modbus-RTU в сети может быть только одно ведущее устройство.
Speaker A
Поэтому не получится просто подключиться в сеть при помощи Modbus Poll и включить монитор сети.
Speaker A
Потому что Modbus Poll подключается в сеть именно как мастер, а при наличии двух мастеров в сети, они оба будут посылать запросы в случайные промежутки времени.
Speaker A
И когда эти запросы будут происходить одновременно, в сети будут возникать коллизии.
Speaker A
Обмен данными будет невозможен.
Speaker A
Поэтому в сеть нужно подключаться именно как ведомое устройство.
Speaker A
Для этого после подключения в Modbus Slave выбираем Display, Communication.
Speaker A
Теперь можно анализировать трафик в сети без коллизий.
Speaker A
Сегодня мы рассмотрели использование протокола Modbus в электроэнергетике.
Speaker A
Надеюсь, что это видео было для вас полезным.
Speaker A
До встречи на канале и лёгких вам коммуникаций.
Speaker A
Пока.











