Большие функциональные возможности и высокая надежность аппаратных и программных средств фирмы Simens AG обеспечивают им широкое применение при автоматизации промышленных объектов. В качестве программируемого логического контроллера обычно используют контроллеры серии SIMATIC S7, для которых программа управления разрабатывается в системе Step 7. Для разработки программного обеспечения верхнего уровня применяется SCADA-система WinCC. Эти системы взаимно интегрированы с точки зрения организации межуровневого обмена, что значительно упрощает процессы разработки, отладки и запуска систем автоматизации [5, 6].
На нижнем уровне АСУ ТП, кроме датчиков и исполнительных устройств, применяются также микропроцессорные устройства сбора данных и управления. Для организации обмена со средним уровнем обычно эти устройства имеют интерфейс RS-485, который позволяет организовать обмен со средним уровнем АСУ ТП на основе протокола Modbus RTU. В то же время контроллеры серии SIMATIC S7 не поддерживают этот протокол, что создает проблему сетевого обмена с полевыми устройствами. Преодоление этой проблемы за счет применения дополнительного коммуникационного процессора CP341 с загружаемым драйвером Modbus RTU Master значительно повышает стоимость системы управления [1].
Целью исследования являлась разработка методики организации обмена на основе протокола Modbus между контроллерами серии S7 и полевыми микропроцессорными устройствами для упрощения проектирования прикладного программного обеспечения контроллера по управлению технологическим процессом. Реализация этой методики позволяет использовать в нижнем уровне АСУ ТП не только зарубежные, но и отечественные микропроцессорные устройства, что особенно актуально с точки зрения импортозамещения.
Результаты и их обсуждение
Прикладное программное обеспечение контроллера управляет технологическим процессом в режиме реального времени, в связи с чем, оно оперирует актуальными данными, полученными из датчиков и исполнительных устройств, а также из сети в результате коммуникационных запросов на подчиненные устройства. При реализации предложенной методики создаются пользовательский тип данных (UDT) для описания характеристик узлов сети, запросов на микропроцессорные устройства и их ответов, блоки данных (DB) для их хранения, а также функции (FC), осуществляющие сетевой обмен. При этом обеспечивается доступность полученных из сети данных прикладной программе управления технологическим процессом, а также программному обеспечению верхнего уровня [3].
Для описания общих характеристик узла, запроса и ответа из узла сети, значения полей Modbus-протокола, а также временных параметров обмена с этим узлом создан пользовательский тип (UDT), основные поля которого представлены в таблице 1.
Таблица 1
Пользовательский тип для описания узла сети
Описание поля |
Тип поля |
Общие характеристики узла |
|
Имя узла |
String[8] |
Разрешение опроса обмена с узлом |
Bool |
Смещение в блоке данных ответа |
Int |
Характеристики запросов и ответов |
|
Текущее состояние запроса |
Bool |
Состояние выполнения запроса |
Bool |
Количество правильных ответов |
Int |
Количество неправильных ответов |
Int |
Код ошибки ответа |
Bool |
Значения полей Modbus-протокола |
|
Адрес узла в сети |
Byte |
Код функции Modbus |
Byte |
Адрес начальной ячейки данных подчиненного узла |
Word |
Количество ячеек данных для запроса |
Int |
Временные параметры сетевого обмена |
|
Требуемый период опроса узла |
Time |
Реальный период опроса узла |
Time |
Время начала опроса узла |
Time |
Продолжительность опроса узла |
Time |
Так как при использовании программных и аппаратных средств фирмы Simens AG обмен данными между средним и верхним уровнями происходит блоками данных [2, 5], при реализации методики для формирования запросов и хранения ответов, полученных из микропроцессорных устройств создаются блоки данных сетевого уровня, а также сеансовые блоки данных для организации обмена данными с текущим узлом сети (рис. 1).
Рис. 1. Взаимодействие блоков данных и функций сетевого обмена по протоколу Modbus (DB1, DB4 – блоки данных сетевого уровня; DB2, DB3 – сеансовые блоки данных)
Блок данных сетевого уровня DB1 предназначен для хранения характеристик сети и его узлов. Этот блок имеет поля, содержащие количество устройств в сети, номер текущего узла и длину пакета запроса для текущего узла (тип Int), время начала опроса первого узла сети, продолжительность опроса всех узлов сети, минимальную и максимальную продолжительность опроса всех узлов сети (тип Time). Помимо общих характеристик сети, в этом блоке данных хранятся еще характеристики всех узлов сети в виде массива (тип Array [0..31]), элементы которого имеют пользовательский тип. Использование блока данных для хранения характеристик сети и узлов дает возможность изменения параметров запроса, как из программного обеспечения среднего, так и нижнего уровней АСУ ТП.
Обмен контроллера с текущим узлом сети организован с помощью сеансовых блоков данных. На основании характеристик узла формируется запрос в виде блока данных DB2, поля которого полностью совпадают с полями запроса по протоколу Modbus и содержат адрес текущего узла, код функции Modbus, начальный адрес данных и данные запроса. Считывание ответа из текущего узла сети реализованы также с применением блока данных сеансового уровня DB3.
Передача запроса в сеть и чтение ответа из сети осуществлены функциональными блоками S_SEND и S_RCV библиотеки системных блоков. На входах этих функциональных блоков указываются начальный адрес данных, длина пакета обмена и инициируется начало передачи данных, а на выходах формируются сигналы завершения передачи данных или получения данных из сети. Тем самым, обмен данными по сети RS-485 в полудуплексном режиме сведен к слежению за состоянием соответствующих выходов функциональных блоков S_SEND и S_RCV и к переключению режимов посылки или приема пакета.
Формирование пакета запроса и распаковка полученного ответа осуществлены с помощью двух соответствующих функций, созданных на языке SCL. Хотя среда программирования Step 7 поддерживает все пять языков стандарта МЭК-61131-3 (LAD, FBD, STL, SCL, SFC), язык SCL наиболее предпочтителен из-за возможности использования циклических операторов и оператора разветвления Case, которые необходимо использовать при формировании запросов и распаковки ответов. В созданных функциях реализованы алгоритмы формирования запроса и распаковки полученного ответа для кодов функций 1, 2, 3, 4, 5, 6, 15 и 16 протокола Modbus, которые кодируются однобайтовым полем [4].
Согласно алгоритму функции формирования пакета запроса по номеру текущего устройства выбирается соответствующий элемент массива в блоке данных сетевого уровня и в зависимости от кода функции Modbus формируется пакет запроса. При реализации функции распаковки ответа сначала проверяется адрес узла, код функции, длина ответа и контрольная сумма данных. В случае корректности этих параметров происходит распаковка данных ответа в зависимости от кода функции и типа устройства, подключенного в сеть. Распакованные данные хранятся в блоке данных сетевого уровня DB4, при этом структура этого блока данных зависит от типов устройств подключенных в сеть и структуры данных ответа, получаемого от узла сети.
Выводы и рекомендации
Важной особенностью хранения характеристик узлов сети и полученных из них ответов при реализации предложенной методики, является то, что блоки данных сетевого уровня представляют собой разделяемую память для всей системы управления. Следовательно, эти блоки данных доступны для чтения и записи, как программному обеспечению контроллера, так и программному обеспечению верхнего уровня.
Использование разделяемой памяти позволяет разрабатывать программное обеспечение контроллера для организации сетевого обмена и управления технологическим процессом независимо друг от друга. Вызов функций организации обмена следует осуществить в организационном блоке ОВ1, который исполняется в главном цикле контроллера, что обеспечивает максимальную скорость сетевого обмена со всеми узлами сети. В этом организационном блоке должны быть реализованы задачи синхронизации передачи пакетов и получения ответа (формирование запроса для текущего устройства, переход в режим отправки запроса или ожидания ответа, распаковка ответа, выбор следующего устройства сети), а также формирование аварийных сообщений при истечении тайм-аута.
Вызов функций и функциональных блоков, предназначенных для управления технологическим процессом, следует осуществлять в обработчике циклического прерывания (например, в организационном блоке ОВ35). За счет использования разделяемой памяти для хранения характеристик узлов сети и полученных из них ответов коды обоих организационных блоков может обращаться к блокам данных сетевого уровня.
Таким образом, использование разделяемой памяти и независимость работы логических блоков сетевого обмена и управления технологическим процессом значительно упрощает разработку прикладного программного обеспечения контроллера.
Рецензенты:
Хайруллин А.Х., д.т.н., профессор, профессор кафедры информационных систем Набережночелнинского института Казанского (Приволжского) федерального университета», г. Набережные Челны;
Дмитриев С.В., д.т.н., профессор, профессор кафедры автоматизации и управления Набережночелнинского института Казанского (Приволжского) федерального университета», г. Набережные Челны.
Библиографическая ссылка
Хузятов Ш.Ш., Валиев Р.А. УПРАВЛЕНИЕ СЕТЕВЫМ ОБМЕНОМ МЕЖДУ КОНТРОЛЛЕРОМ SIEMENS И МИКРОПРОЦЕССОРНЫМИ УСТРОЙСТВАМИ НА ОСНОВЕ ПРОТОКОЛА MODBUS // Современные проблемы науки и образования. – 2015. – № 1-1. ;URL: https://science-education.ru/ru/article/view?id=19411 (дата обращения: 14.09.2024).