FASTWEL I/O: развитие продуктовой линейки Часть 3. NIM745-02 – компактный подчинённый узел MODBUS TCP

В статье описываются функциональные возможности, пожалуй, самого миниатюрного непрограммируемого контроллера подчинённого узла сети MODBUS TCP NIM745-02 и особенности его применения для интеграции модулей ввода-вывода FASTWEL I/O в автоматизированные системы сбора данных и управления.

Локотков Александр

421
В ЗАКЛАДКИ

Введение

В 2012 году в продуктовой линейке FASTWEL I/O появился адаптер шины FBUS NIM745-01, предназначенный для подключения модулей ввода-вывода FASTWEL I/O к встраиваемым компьютерам, процессорным модулям и другим вычислительным устройствам с интерфейсом Ethernet. Процесс интеграции периферийных модулей FASTWEL I/O во встраиваемую систему состоял из разработки приложения для целевого вычислительного устройства на языке C или C++ с использованием комплекта разработчика FASTWEL FBUS SDK, настройки IP-параметров NIM745-01 через встроенный веб-сервер и последующего подключения NIM745-01 вместе с модулями ввода-вывода к интерфейсу Ethernet вычислительного устройства. Приложение, помимо возлагаемой на него основной прикладной задачи, должно было находить и конфигурировать модули ввода-вывода, подключённые к шине FBUS NIM745-01, читать данные входных каналов модулей и записывать данные в их выходные каналы. В качестве целевых вычислительных устройств могли использоваться любые компьютеры и процессорные модули на базе 32-разрядных x86-совместимых процессоров, способные функционировать под управлением операционных систем Windows XP, Win­dows CE, QNX 6 или Linux.
Таким образом, у разработчиков встраи­ваемых приложений на платформе x86 появился инструмент для реализации многоканальных подсистем гальванически изолированного ввода-вывода аналоговых, дискретных и частотных сигналов на основе модулей ввода-вывода FASTWEL I/O. Однако данное решение до сих пор остаётся маловостребованным среди отечественных производителей встраиваемых систем, и основная причина этого, по всей видимости, состоит в относительно высоком пороге освоения программной части.
NIM745-01 первоначально вызвал боль­шой интерес у производителей автоматизированных систем управления технологическими процессами, при этом наиболее часто звучал следующий вопрос: «А как с ним работать по MODBUS TCP?».
В самом деле, довольно часто у специалистов из области АСУ ТП возникает потребность в размещении разнородных наборов модулей ввода-вывода в непосредственной близости к датчикам и исполнительным механизмам территориально распределённого объекта автоматизации, что позволяет сократить затраты на создание кабельной инфраструктуры, на саму кабельную продукцию, а также на монтажные и пусконаладочные работы. Интеграция распределённых систем ввода-вывода в АСУ ТП почти всегда предполагает использование некоторой стандартизованной промышленной сети. Это позволяет существенно сократить затраты на собственно разработку и обслуживание за счёт максимально широкого применения готовых решений, вроде OPC-серверов или коммуникационных модулей в составе программируемых логических контроллеров, в которых реализован автоматический сетевой обмен с удалёнными узлами/станциями ввода-вывода.
Ответ на приведённый вопрос заказчиков и специалистов из области АСУ ТП был дан весной 2014 года, когда на основе имеющегося аппаратного решения NIM745-01 было выпущено новое исполнение модуля – NIM745-02, превратившее его в один из самых малогабаритных на рынке непрограммируемых контроллеров с функцией подчинённого узла MODBUS TCP, который позволяет создавать распределённые системы сбора данных и управления на основе модулей ввода-вывода FASTWEL I/O и промышленной сети MODBUS TCP.
В данной статье рассматриваются функциональные возможности модуля NIM745-02 и особенности его применения в распределённых системах сбора данных и управления.

Общие сведения о распределённых системах ввода-вывода на базе протокола MODBUS TCP

Распределённая система ввода-вывода на базе протокола MODBUS TCP обычно объединяет несколько вычислительных устройств, соединённых IP-сетью, часть из которых выполняет функции мастеров сети (или клиентов), а часть – подчинённых узлов (или серверов). Сервер состоит из контроллера узла промышленной сети, называемого Bus Coup­ler, и модулей ввода-вывода, подключённых к его межмодульной внутренней шине. Конфигурирование сервера, как правило, включает в себя настройку коммуникационных параметров контроллера узла, настройку параметров модулей ввода-вывода, подключённых к внутренней шине контроллера, и отображение каналов модулей ввода-вывода на коммуникационные объекты протокола используемой промышленной сети.
В случае MODBUS TCP для контроллера узла задаются IP-адрес, маска подсети и при необходимости сетевого взаимодействия между узлами в разных подсетях IP-адрес шлюза по умолчанию. При использовании MODBUS TCP также иногда возможно установить адрес TCP-порта сервера MODBUS, который по умолчанию имеет значение 502.
Для параметризации модулей ввода-вывода многие производители предлагают отдельную утилиту, которая связывается с контроллером узла с использованием собственного закрытого протокола и записывает параметры непосредственно в модули.
Под отображением каналов модулей ввода-вывода на регистры и битовые поля протокола MODBUS подразумевается установка соответствия между некоторым входным или выходным каналом модуля и сетевым адресом регистра или битового поля MODBUS.
Большинство производителей распределённых систем ввода-вывода предлагают автоматическое предопределённое отображение каналов ввода-вывода на коммуникационные объекты. Например, все входы всех модулей дискретного ввода отображаются на фиксированный диапазон адресов входных регистров (Input Register) и/или входных битовых полей (Discrete Input), все выходы модулей дискретного вывода – на фиксированный диапазон адресов выходных регистров (Holding Register) и/или выходных битовых полей (Coil) и т.д., а контроллер узла автоматически транслирует сетевые запросы чтения и записи регистров и битовых полей к каналам модулей ввода-вывода в соответствии с тем, к какому фиксированному диапазону относятся адреса регистров и битовых полей в поступающих запросах. Привлекательность подобного подхода состоит в том, что пользователю не нужно заботиться о настройке отображения каналов на коммуникационные объекты, даже несмотря на необходимость держать в голове соответствие между диапазонами адресов регистров и битовых полей и разными видами входных и выходных каналов, а также на высокую вероятность перепутывания каналов при отладке и обслуживании системы в случае неправильной взаимной установки модулей с идентичной структурой однотипных каналов.
Другим способом отображения каналов модулей ввода-вывода на коммуникационные объекты является явное задание соответствия между каналами модулей ввода-вывода и адресами регистров и битовых полей, выполняемое пользователем при разработке системы. Такой подход требует некоторых усилий по конфигурированию узла, но практически лишён упомянутых недостатков полностью автоматического отображения. Дополнительным достоинством данного вида отображения является возможность чтения или записи одним сетевым запросом значений и состояний аналоговых и дискретных датчиков/исполнительных устройств, относящихся к одному и тому же контролируемому объекту или единице технологического оборудования, в результате чего оценка и изменение состояния контролируемого объекта по сети всегда происходят согласованно в один и тот же момент времени. При автоматическом отображении на области адресов коммуникационных объектов по типу каналов, описанному ранее, мастер сети, на котором выполняется алгоритм сбора данных и управления, не имеет такой возможности, поскольку дискретные и аналоговые сигналы всегда передаются в разных сетевых транзакциях между клиентом и сервером MODBUS.

Программируемые контроллеры FASTWEL I/O в распределённых системах ввода-вывода

Программируемые контроллеры узла сети FASTWEL I/O можно использовать для создания распределённых систем ввода-вывода, однако для этого пользователь должен иметь минимальные навыки программирования хотя бы на одном из языков МЭК 61131-3: ST, IL, FBD или LD и иметь представление о создании приложений в среде разработки CoDeSys 2.3, адаптированной для программирования контроллеров FAST­WEL I/O. Для того чтобы читатель смог самостоятельно оценить сложность разработки приложения, превращающего программируемый контроллер FAST­WEL I/O в сетевой узел распределённой системы ввода-вывода, рассмотрим небольшой пример.
Предположим, что существующую систему требуется дополнить 32 каналами дискретного ввода для контроля состояния 16 «сухих» контактов, подключённых к потенциалу полевого питания, и 16 сухих контактов, подключённых к нулевому потенциалу полевого питания. Кроме того, пусть также требуется добавить 16 каналов дискретного вывода и 8 каналов аналогового ввода 4…20 мА, при этом в качестве промышленной сети может использоваться Ethernet и протокол MOD­BUS TCP. Для решения данной задачи могут быть применены контроллер подчинённого узла сети MODBUS TCP CPM703, два модуля дискретного ввода DIM717, два модуля дискретного ввода DIM762, два модуля дискретного вывода DIM718 и один модуль аналогового ввода AIM791. Возможная конфигурация аппаратных средств представлена рис. 1, оконечный модуль согласования шины OM750 не показан.
Модуль OM758 служит для размножения нулевого потенциала датчиков, подключаемых к каналам модуля AIM791, а модуль OM752 – для ввода полевого питания датчиков и исполнительных устройств, подключаемых к каналам модулей DIM­717, DIM762 и DIM718.
Для клиента MODBUS TCP каналы дискретного ввода создаваемого узла должны быть отображены на 2 входных регистра типа Input Register, каналы дискретного вывода – на 16 битовых полей типа Coil, а измеренные значения каналов аналогового ввода должны передаваться по сети в формате с плавающей точкой одинарной точности 16 регистрами типа Input Register (одним регистром MODBUS передаётся 2 байта, значит, для передачи 8 значений с плавающей точкой одинарной точности потребуется не менее 16 регистров). Для диагностирования исправности отдельных модулей может использоваться один дополнительный регистр типа Input Register.
Разработка приложения в CoDeSys 2.3 для описываемой конфигурации состоит из создания конфигурации контроллера и программного кода, копирующего данные между регистрами и битовыми полями MODBUS TCP и каналами модулей ввода-вывода.
Процесс разработки начинается с запуска CoDeSys 2.3 и создания проекта командой File–New, выполняемой в главном меню, после чего в выпадающем списке Configuration появившейся диалоговой панели Target Settings нужно выбрать платформу Fastwel I/O Sys­tem with Multitasking Runtime, как показано на рис. 2, нажать OK, а затем нажать OK в диалоговой панели New POU для создания программы PLC_PRG, которая после загрузки приложения в контроллер будет выполняться под управлением сервисной задачи циклически с периодом 10 мс.

Перед продолжением работы желательно сохранить проект в файле командой File–Save или нажатием сочетания клавиш Ctrl+S.
Для создания конфигурации модулей ввода-вывода следует щёлкнуть на вкладке Resources, открыть окно ресурса PLC Configuration и в дерево конфигурации межмодульной шины контроллера добавить описания модулей ввода-вывода в том же порядке, в каком они перечислены на рис. 1.
Перед добавлением описаний модулей ввода-вывода рекомендуется изменить тип элемента, представляющего межмодульную шину, с I/O Modules на I/O Modu­les (constant size), как показано на рис. 3.
Это позволит зарезервировать во входной и выходной областях образа процесса по 2300 байт для каналов, относящихся к модулям ввода-вывода, в результате чего любые последующие изменения состава модулей ввода-вывода не приведут к сдвигу адресов коммуникационных объектов MODBUS TCP, которые будут располагаться в дереве конфигурации под элементом ModbusTCP.
Обратите внимание, что конфигурация модулей дискретного вывода DIM­718 представлена элементом DIM718 8-channels Simple Digital Output Module, который обеспечивает доступ приложения только к базовым функциональным возможностям DIM718 и не имеет каналов и параметров для генерации ШИМ-сигналов через первые четыре дискретных выхода модуля. Это позволяет ускорить обмен данными с каждым из модулей DIM718 за счёт сокращения количества данных, передаваемых в каждом цикле обмена по шине.
Далее в окне ресурса PLC Configuration для сервиса внешней сети, представленного элементом ModbusTCP, следует задать IP-адрес, маску подсети и при необходимости адрес шлюза, после чего добавить описание коммуникационного объекта типа Bitwise Holding Register с адресом 1 и 19 коммуникационных объектов типа Input Register с адресами с 5000 по 5018. Перенумеровать адреса регистров можно после того, как все они добавлены в дерево конфигурации. Для этого нужно выбрать в дереве конфигурации элемент ModbusTCP, нажать кнопку Упорядочить регистры в окне свойств Fastwel, в появившейся диалоговой панели задать начальные адреса для регистров разных типов, имеющихся в конфигурации приложения, как показано на рис. 4, нажать кнопки Упорядочить и Закрыть.

После создания конфигурации модулей ввода-вывода и сервиса подчинённого узла MODBUS TCP нужно добавить в проект программный код, обеспечивающий обмен данными между регистрами протокола MODBUS TCP и каналами модулей ввода-вывода. Кроме того, приложение должно преобразовывать значения на каналах модуля аналогового ввода AIM791, представленные в виде кодов АЦП, в значения тока с плавающей точкой одинарной точности. Программа PLC_PRG, автоматически добавленная в проект при его создании, является тем местом, куда может быть добавлен данный программный код. Но сначала нужно добавить в проект библиотеку aim791.lib, содержащую функциональные блоки для работы с каналами модуля AIM791, для чего на вкладке Resources следует открыть окно ресурса Library Manager и добавить библиотеку aim791.lib командой Additional Library в контекстном меню списка библиотек, подключённых к проекту, как показано на рис. 5.

Одна из возможных реализаций программы обмена данными между каналами модулей ввода-вывода и регистрами MODBUS на языке Structured Text показана на рис. 6.
Области деклараций VAR и VAR_TEMP содержат объявления переменных, используемых в теле программы.
Переменные, при объявлении которых использована директива AT%, отображены на адреса каналов модулей ввода-вывода и регистров MODBUS в образе процесса:
wIODIAG – переменная типа WORD отображена на первые два байта диагностического канала контроллера в области входных данных образа процесса, содержащего маску наличия связи с первыми 32 модулями ввода-вывода;
mAIM791Inputs – массив, содержащий один элемент структурного типа AIM­791_Inputs из библиотеки aim791.lib и отображённый на входные каналы первого и единственного модуля AIM791
в области входных данных образа процесса;
byDigitalInputs – массив из восьми элементов типа BYTE, отображённый на входные каналы элементов DIM717 8-channels Digital Input Module и DIM762 8-channels Digital Input Module в конфигурации приложения. Каждый из этих элементов имеет один диагностический виртуальный канал размером 1 байт и один канал, передающий логические состояния на восьми физических дискретных входах модуля, в области входных данных образа процесса. Поэтому для связи приложения с входами четырёх модулей дискретного ввода требуется не менее восьми байт;
byDigitalOutputs – массив из двух элементов типа BYTE, отображённый на выходные каналы двух модулей DIM718 в области выходных данных образа процесса;
byNetIODiag – переменная типа WORD, отображённая на выходной канал элемента Input Register с MODBUS-адресом 5000, предназначенного для передачи мастеру сети битовой маски наличия связи с модулями ввода-вывода;
byNetDigitalInputs – массив из четырёх элементов типа BYTE, отображённый на выходные каналы элементов Input Register с MODBUS-адресами 5001 и 5002, предназначенных для передачи мастеру сети логических состояний 32 каналов дискретного ввода модулей DIM717 и DIM762;
byNetAnalogInputs – массив из восьми элементов типа REAL, отображённый на выходные каналы элементов Input Regis­ter с MODBUS-адресами с 5003 по 5018, предназначенных для передачи по сети значений тока на восьми каналах аналогового ввода модуля AIM791;
byNetDigitalOutputs – массив из двух элементов типа BYTE, отображённый на входной канал элемента Bitwise Hol­ding Register с MODBUS-адресом 1, пред­назначенного для приёма по сети команд управления 16 каналами дискретного вывода модулей DIM718.
Переменная mAIM791 является массивом из одного экземпляра функционального блока AIM791_STIN из библиотеки aim791.lib и служит для преобразования измеренных значений на входных каналах единственного модуля AIM791 в значения тока. Для работы с единственным модулем аналогового ввода в данном примере используются массивы mAIM791 и mAIM791Inputs, чтобы обеспечить возможность расширения системы в будущем.
Временные вспомогательные переменные m_idx, ch_idx и net_idx, объявленные в секции VAR_TEMP, представляют собой счётчики для организации циклов перебора экземпляров функциональных блоков массива mAIM791, массива каналов каждого функционального блока и элементов массивов, отображённых на коммуникационные объекты MODBUS.
Программа PLC_PRG выполняет следующие действия (см. нумерацию строк на рис. 6):
в строке 2 первые 16 разрядов битовой маски наличия связи с модулями ввода-вывода копируются в переменную byNet­IODiag, которая отображена на выходной канал регистра MODBUS с адресом 5000;
в строке 5 устанавливается в 1 счётная переменная net_idx, с помощью которой вычисленные значения тока на восьми каналах аналогового ввода внутри цикла в строках 10–13 копируются в массив byNetAnalogInputs, отображённый на выходные каналы регистров 5003…5018;
в строке 6 устанавливается в 1 счётная переменная цикла m_idx для перебора элементов массива mAIM791 и mAIM791­Inputs, а также вычисляется условие завершения цикла. Обратите внимание на используемую технику определения количества элементов в массиве:

SIZEOF(mAIM791)/SIZEOF(mAIM791[1])

В данном случае операция SIZEOF­(mAIM791) определяет размер всего массива в байтах, операция SIZEOF(mAIM­791[1]) – размер первого элемента массива, а результатом деления первого полученного размера на второй будет количество элементов в массиве. Все массивы, объявленные в PLC_PRG, индексированы относительно 1, поэтому циклы FOR, в которых производится доступ к элементам этих массивов по индексным переменным циклов, должны начинаться с 1 и заканчиваться по превышению индексной переменной цикла размера массива.
В строке 8 вызывается экземпляр функционального блока AIM791_STIN из массива mAIM791, индекс которого равен переменной цикла m_idx. При вызове блоку на вход передаётся соответствующий элемент массива mAIM791In­puts, содержащий значения и состояния на каналах модуля AIM791 с номером m_idx (начиная с 1). В данном случае в конфигурации контроллера присутствует один модуль, поэтому массивы mAIM791 и mAIM791Inputs содержат по одному элементу. При необходимости расширения конфигурации контроллера в будущем приведённый код может быть легко адаптирован для нового количества модулей.
В строках 10–13 восемь значений тока на входах модуля AIM791 с индексом m_idx, вычисленных при вызове блока mAIM791[m_idx], записываются в массив byNetAnalogInputs, отображённый на выходные каналы регистров с MODBUS-адресами с 5003 по 5018. Обратите внимание, что для записи в элементы массива byNetAnalogInputs используется счётная переменная net_idx, а для доступа к вычисленным значениям тока на каналах каждого модуля AIM791 используется переменная ch_idx.
В строках 17–19 логические состояния каналов модулей дискретного ввода передаются в массив byNetDigitalInputs, отображённый на выходные каналы регистров с MODBUS-адресами 5001 и 5002.
В строке 18 при обращении к массиву byDigitalInputs используются только чётные индексы его элементов, поскольку по нечётным индексам расположены диагностические виртуальные каналы модулей DIM717 и DIM762.
В строках 22–24 из массива byNet­DigitalOutputs, отображённого на 16 битовых полей типа Coil с адресами 1…16, извлекаются команды управления каналами дискретного вывода и записываются в массив byDigitalOutputs, элементы которого отображены на 16 каналов двух модулей DIM718.
После загрузки данного приложения в контроллер CPM703 он превращается в узел распределённой системы ввода-вывода на базе протокола MODBUS TCP.
В реальных «боевых» системах приложение также может выполнять дополнительные функции вроде диагностирования отказов оборудования системы и сети, вторичную обработку сигналов и т.п., чего в ряде случаев не удаётся в полной мере реализовать на уровне мастера промышленной сети, опрашивающего распределённую периферию. В этом видится один из плюсов применения программируемого контроллера в качестве узла распределённой системы ввода-вывода.
Однако, как указывалось ранее, для реализации такого рода приложений разработчик должен иметь опыт использования языков стандарта МЭК 61131-3 для программирования ПЛК в среде разработки CoDeSys 2.3, а также быть знакомым с программной документацией на контроллеры FASTWEL I/O.

NIM745-02: только конфигурирование и никакого программирования

Модуль интерфейсный NIM745-02, внешний вид и схема подключения которого показаны на рис. 7, является непрограммируемым контроллером подчинённого узла сети MODBUS TCP, конфигурируемым через веб-интерфейс.
Два верхних фронтальных контакта модуля (1 и 5) служат для подключения источника питания самого модуля и модулей ввода-вывода, подключённых к его межмодульной шине. Две пары контактов: 2, 3 и 6, 7 – предназначены для ввода полевого питания внешних цепей через ножевые контакты модулей ввода-вывода.
NIM745-02 функционирует в соответствии с конфигурацией, заданной пользователем через веб-интерфейс. В процессе функционирования NIM745-02 обменивается данными с модулями ввода-вывода, подключёнными к его межмодульной шине, а также осуществляет диагностирование и обработку ошибок обмена. Данные входных и выходных каналов модулей ввода-вывода и диагностическая информация NIM745-02 отображаются на множество регистров и битовых полей встроенного сервера протокола MODBUS TCP, который обеспечивает возможность обмена данными одновременно с двумя мастерами сети.
Конфигурирование NIM745-02 включает в себя настройку параметров сети Ethernet и IP-адресации, определение состава и параметров модулей ввода-вывода, настройку параметров функционирования сервисов протокола MOD­BUS TCP и межмодульной шины.
Конфигурационная информация хранится в энергонезависимой памяти NIM745-02 и актуализируется сразу же после его запуска/перезапуска. Таким образом, после замены вышедших из строя модулей ввода-вывода на новые не нужно повторно конфигурировать NIM745-02.
Просмотр и изменение значений конфигурационных параметров осуществляется через веб-интерфейс NIM745-02 в любом современном веб-браузере. Под современным веб-браузером подразумевается один из следующих: Google Chrome версии не ниже 34, Mozilla Firefox версии не ниже 29, Opera версии не ниже 12 или MS Internet Explo­rer версии не ниже 10.
Для иллюстрации функциональных возможностей NIM745-02 решим с его помощью рассмотренную в статье задачу расширения существующей гипотетической системы сбора данных и управления дополнительными каналами ввода-вывода. Прежде всего отметим, что NIM745-02 имеет собственные контакты ввода питания внешних цепей датчиков и исполнительных устройств, поэтому модуль OM752 может быть исключён из состава аппаратных средств.
Для этого изменим расположение модулей ввода-вывода на межмодульной шине NIM745-02 так, чтобы модули дискретного ввода-вывода примыкали непосредственно к NIM745-02, а модули OM758 и AIM791 располагались последними в линей-
ке, как показано на рис. 8.

Таким образом, ширина полученной сборки модулей оказалась примерно на 36 мм меньше, чем у реализованной на базе контроллера CPM703, а потребляемая мощность снизилась почти на 1 Вт.
Как указывалось ранее, конфигурирование контроллера узла сети на базе NIM745-02 осуществляется при помощи веб-браузера на компьютере, находящемся в одной сети с NIM745-02. Конфигурирование включает в себя установку IP-параметров узла сети, создание списка модулей ввода-вывода и настройку их параметров и, наконец, актуализацию параметров контроллера.
Перед началом конфигурирования модуля NIM745-02 нужно включить его питание и убедиться, что модуль доступен по сети на компьютере, где предполагается его конфигурировать.
При поставке NIM745-02 имеет следующие IP-параметры:

IP адрес: 10.0.0.1
Маска подсети: 255.0.0.0
Адрес шлюза по умолчанию: не задан.

Таким образом, нужно либо установить в компьютер дополнительный сетевой адаптер,  организовать на его основе сеть 10.0.0.0 и подключить к ней NIM745-02, либо подключить NIM745-02 к имеющейся сети, к которой подключён компьютер, и для единственного на компьютере сетевого адаптера задать альтернативную конфигурацию IPv4, пример которой показан на рис. 9.

Если требуется выполнить конфигурирование NIM745-02, сетевые параметры которого по какой-то причине неизвестны, нужно включить микропереключатель 3, расположенный на левой плоскости модуля, и перезапустить модуль либо выключением и повторным включением питания, либо командой сброса, доступной на странице Перезапуск встроенного веб-сервера модуля. После перезапуска NIM745-02 будет функционировать с заводскими настройками IP-параметров.
Для того чтобы убедиться в наличии связи по сети между компьютером и NIM745-02, можно выполнить команду ping в консоли командного процессора Windows:

С:\>ping 10.0.0.1

При наличии связи с NIM745-02 в окне консоли появятся строки:

Обмен пакетами с 10.0.0.1
по с 32 байтами данных:
...
Ответ от 10.0.0.1
число байт=32 время<1мс TTL=255

Далее нужно запустить веб-браузер и в адресной строке ввести IP-адрес модуля NIM745-02. При успешном соединении со встроенным веб-сервером NIM745-02 в окне браузера будет отображена страница авторизации на встроенном веб-сервере NIM745-02, показанная на рис. 10.

На странице авторизации следует ввести пароль и нажать кнопку Войти. При поставке пароль имеет значение admin. Впоследствии пароль может быть изменён на соответствующей странице веб-сервера.
После успешной авторизации в окне браузера будет отображена начальная страница веб-сервера NIM745-02, содержащая ссылки Конфигуратор, Пароль, Прошивка, Перезапуск и Выход. Первая ссылка предназначена для перехода к конфигуратору модуля, вторая – на страницу смены пароля, третья – на страницу обновления микропрограммы модуля, и две последние – на страницы с командами перезапуска модуля и завершения соединения с его веб-сервером. Для начала конфигурирования модуля нужно перейти по ссылке Конфигуратор.
Если требуется изменить IP-параметры модуля, это можно сделать на вкладке Сеть, раскрыв элементы списка параметров Настройки сети: IP-адрес, IP-маска и при необходимости Шлюз и указав нужные значения (рис. 11).
На данной вкладке также можно изменить MAC-адрес модуля и номера портов доступа к серверу MODBUS TCP и веб-серверу. Для того чтобы внесённые изменения вступили в силу, следует нажать кнопку Применить параметры (на рис. 11 не показана) и перезапустить модуль командой сброса или выключением и повторным включением питания, предварительно убедившись, что переключатель 3 выключен.
На вкладке Сеть также имеются две группы параметров, доступных только для просмотра: Информация об устройстве и Информация о модулях. Первая группа позволяет узнать серийный номер NIM745-02 и версию его микропрограммы, а вторая – типы модулей ввода-вывода, подключённых к NIM745-02, их серийные номера и версии микропрограмм.
Для определения списка модулей ввода-вывода, которые должны быть в составе узла ввода-вывода на базе NIM745-02, следует щёлкнуть на вкладке Список модулей. Если к NIM745-02 подключены требуемые модули ввода-вывода, то на вкладке Список модулей в столбце Фактически установленные будут отображены названия типов модулей в том порядке, в каком они были автоматически обнаружены на межмодульной шине NIM745-02. Чтобы быстро создать список модулей в конфигурации NIM745-02 по списку фактически обнаруженных на шине модулей, достаточно нажать кнопку Создать конфигурацию по списку (не показана на рис. 12 для экономии места), после чего столбец Конфигурация вкладки Список модулей будет выглядеть так, как показано на рис. 12.

Если в момент конфигурирования модули ввода-вывода не подключены к NIM745-02, список требуемых модулей может быть создан вручную нажатием кнопки Вставить и выбором нужных типов модулей в соответствующих нумерованных позициях списка.
Для того чтобы созданная конфигурация модулей ввода-вывода вступила в силу, достаточно перейти на вкладку Конфигурация и нажать кнопку Применить конфигурацию. В дальнейшем при включении питания контроллера будет использоваться созданная конфигурация модулей ввода-вывода и сервера MODBUS TCP. А поскольку встроенный сервер MODBUS TCP модуля NIM745-02 использует автоматическое отображение входных и выходных каналов модулей ввода-вывода на регистры и битовые поля протокола MOD­BUS, процесс конфигурирования контроллера на этом можно считать законченным. Оговорка «можно считать» связана с тем, что в ряде случаев также требуется настроить специфические параметры отдельных модулей ввода-вывода (режимы работы, диапазоны входных сигналов и т.п.) и дополнительные параметры сервера MODBUS TCP. Для этого на вкладке Конфигурация перед нажатием кнопки Применить конфигурацию нужно раскрыть соответствующие группы параметров и установить требуемые значения, как показано на рис. 13.

Полная карта отображения каналов модулей ввода-вывода на регистры и би­­товые поля MOD­­­­BUS доступна на вкладке MOD­BUS, показанной на рис. 14.

Обратите внимание, что при автоматическом отображении каналов модулей ввода-вывода на регистры MOD­BUS используются все входные и выходные каналы, имеющиеся в программных моделях модулей. Например, в программной модели 8-канального модуля дискретного ввода DIM717, помимо основных восьми каналов дискретного ввода, представленных байтовым каналом DIM717.inputStates, имеются неиспользуемые каналы DIM717.diagnostics и DIM717.counters-State, а также два счётных канала: DIM717.counter0 и DIM717.counter1, которые активны только в случае, если в параметрах модуля активизирована функция счёта импульсов на первом и третьем физических каналах модуля. Подробная информация о программных моделях модулей ввода-вывода приведена в руководстве по эксплуатации на NIM745-02.
Следует также обратить внимание на то, что при отображении каналов модулей на регистры MODBUS производится автоматическое выравнивание данных каждого канала на двухбайтовое слово, размер которого соответствует размеру данных, передаваемых одним регистром MODBUS.
Для доступа к отдельным битовым полям каналов модулей ввода-вывода через входные (Discrete Input) и выходные (Coil) битовые поля MODBUS адреса битовых полей в запросах чтения и записи вычисляются по формуле:
BitAddr = RegAddr • 16 + n,
где:
BitAddr – вычисляемый адрес битового поля;
RegAddr – адрес регистра, начиная с 0, которому принадлежит битовое поле;
n – номер битового поля (от 0 до 15) в пределах регистра с адресом RegAddr.
Например, пусть входной регистр для доступа к восьми каналам модуля дискретного ввода 1.DIM717.inputStates (рис. 14) имеет адрес 144. Тогда адреса битовых полей (Discrete Input) для доступа к отдельным каналам будут иметь зна­чения: 2304, 2305, 2306, ..., 2311.
Диагностическая информация о функционировании сервиса ввода-вывода NIM745-02 представлена входными регистрами (Input Regis­ter) с адресами с 0 по 136, назначение которых приведено в таблице 1.

Представленный здесь процесс конфигурирования узла сети на базе NIM745-02 при помощи веб-браузера занимает не более одной минуты и не требует написания ни единой строчки кода. Однако преобразование значений аналоговых сигналов из кодов АЦП в значения тока и напряжения с плавающей точкой теперь должно выполняться на контроллере или в SCADA-системе, где функционируют клиенты MODBUS TCP, взаимодействующие с NIM745-02.
Встроенный веб-сервер модуля NIM­745-02 имеет ещё одну функцию конфигурирования, которая может оказаться весьма полезной при серийном производстве систем на его основе. Пусть, например, в составе системы имеется десять узлов распределённого ввода-вывода на базе модуля NIM745-02, отличающихся только IP-адресами, но с полностью идентичным составом модулей ввода-вывода и их специфических параметров. В таком случае конфигурирование десяти экземпляров NIM745-02 с использованием описанного сценария выглядит довольно трудоёмким, поэтому для производственного развёртывания конфигураций в NIM745-02 предусмотрен механизм сохранения конфигурационной информации, отображаемой на вкладке Конфигурация, в файле на диске компьютера с возможностью последующей загрузки файла в NIM745-02.
Таким образом, для развёртывания конфигурации модулей ввода-вывода на нескольких экземплярах NIM745-02 нужно сначала сконфигурировать «образцовый» контроллер NIM745-02 и, находясь на вкладке Конфигурация, после нажатия кнопки Применить конфигурацию щёлкнуть на ссылке Сохранить конфигурацию из устройства на локальный диск, как показано на рис. 15, и сохранить конфигурационные параметры в файле на диске компьютера, где запущен веб-браузер.

Затем следует подключить к сети один из нескольких серийных экземпляров NIM745-02, включить питание, войти в конфигуратор на его встроенном веб-сервере, задать требуемые значения сетевых и IP-параметров, после чего перейти на вкладку Конфигурация, нажать кнопку Выберите файл, показанную на рис. 15, загрузить ранее сохранённый файл конфигурации модулей ввода-вывода и нажать кнопку Применить конфигурацию. Далее указанный сценарий должен быть повторён для остальных модулей NIM745-02.
Обратите внимание, в файле сохраняется только конфигурационная информация, отображаемая на вкладке Конфигурация, включая список модулей ввода-вывода и их специфические параметры, а также общие параметры MOD­BUS и межмодульной шины FBUS. Общие параметры MODBUS и FBUS содержат два тайм-аута, связанных с отсутствием сетевых запросов со стороны хотя бы одного клиента MODBUS TCP.
Тайм-аут неактивности MODBUS, приводящий к прекращению обмена с модулями, определяет интервал времени в секундах, по истечении которого NIM745-02 перестаёт обмениваться данными с модулями ввода-вывода, если ни от одного из двух клиентов MODBUS TCP не поступило ни одного MODBUS-запроса. Если при этом в списке модулей ввода-вывода, опрашиваемых NIM­745-02, присутствуют модули аналогового и/или дискретного вывода, для которых задан параметр Интервал сторожевого таймера в секундах, то при отсутствии обмена между NIM745-02 и этими модулями по межмодульной шине в течение заданного интервала сторожевого таймера на выходах модулей будут установлены безопасные значения и состояния, заданные соответствующими специфическими параметрами модулей.
Тайм-аут закрытия соединения MOD­BUS TCP NIM745-02 определяет интервал времени, в течение которого встроен­ный сервер MODBUS TCP NIM745-02 сохраняет ранее установленное соединение с любым из двух клиентов.
В заключение хотелось бы упомянуть о быстродействии сетевой подсистемы NIM745-02. Время обмена между клиентом MODBUS TCP и NIM745-02, измеренное при помощи свободно распространяемой утилиты Wireshark (http://www.wireshark.org), не превышает 2 мс. При выполнении измерений NIM745-02 и компьютер с запущенным клиентом MODBUS TCP были связаны через неуправляемый коммутатор ASUS GX-D1051.
Итак, модуль NIM745-02 открывает новые возможности для увеличения количества и номенклатуры каналов ввода-вывода в существующих системах, а также для создания новых распределённых систем сбора данных и управления на базе протокола MODBUS TCP. Привлекательность решений на базе NIM745-02, помимо способности функционировать в диапазоне рабочих температур –40…+85°C, обусловлена компактностью, малым энергопотреблением, полнотой функциональных возможностей, экономичностью и невысоким порогом освоения. ●

Автор – сотрудник ЗАО «НПФ «ДОЛОМАНТ»
Телефон: (495) 234-0639
E-mail: alexander.lokotkov@dolomant.ru



ПОДПИСАТЬСЯ НА НОВОСТИ

Будьте всегда в курсе самых свежих новостей
и узнавайте первыми о содержании нового номера

Подписка на новости

РЕКОМЕНДУЕМ