Основы работы iRidium с Modbus контроллерами
Содержание
- 1 Принцип взаимодействия управляющей панели iRidium с Modbus контроллером
- 2 Настройка подключения к Modbus-совместимому контроллеру
- 3 Переключение между Локальным и Интернет-соединением
- 4 Особенности контроллеров
- 5 Импорт команд и каналов Modbus
- 6 Отправка команд и чтение данных по протоколу Modbus
- 7 Эмуляция работы проекта
- 8 Запустить проект на управляющей панели
Принцип взаимодействия управляющей панели iRidium с Modbus контроллером
Технология подключения iRidium App к контроллеру по Modbus TCP подразумевает использование клиент-серверной модели, где iRidium App выступает как главное (Master) устройство, инициирующее транзакции подчиненному (Slave) контроллеру. Для работы с контроллером по Modbus TCP не нужно дополнительное аппаратное обеспечение, iRidium подключается к контроллеру напрямую.
При подключении iRidium App к контроллеру по Modbus RTU или ASCII используется та же модель передачи данных, но обязательным является наличие преобразователя из протокола TCP в Modbus RTU/ASCII. В качестве такого преобразователя может служить любой из многочисленных шлюзов, предлагаемых на рынке автоматизации.
В случае использования преобразователя из TCP в Modbus RTU или ASCII, необходимо использовать соответствующий драйвер (Modbus TCP ro RTU, Modbus TCP to ASCII) в редакторе iRidium GUI Editor.
Настройка подключения к Modbus-совместимому контроллеру
База данных iRidium для Modbus содержит следующие драйверы:
- Modbus TCP - драйвер для прямого подключения к контроллеру по Modbus TCP, без использования дополнительного аппаратного или программного обеспечения.
- Modbus TCP to RTU и Modbus TCP to ASCII - драйверы для подключения к контроллеру по Modbus RTU или ASCII через преобразователь с TCP/IP интерфейсом: "RTU (ASCII) over TCP/IP".
- Modbus RTU и Modbus ASCII - драйверы для подключения к контроллеру по Modbus RTU или ASCII с использованием последовательных сетей RS232/RS485. Приложение iRidium с этими драйверами может быть запущено только на устройстве, физически подключенном к контроллеру с помощью последовательного порта передачи данных.
См. примеры настройки подключения к контроллеру в iRidium GUI Editor:
Подключение по Modbus TCP
Создайте новый проект iRidium и добавьте в него драйвер Modbus TCP из базы данных iRidium. Настройте параметры подключения к контроллеру: IP-адрес контроллера (приватный или публичный), TCP-порт и параметры подключения:
Host | IP-адрес контроллера |
Port | TCP порт для подключения к контроллеру (по умолчанию - 502) |
Update Time (мс) | Частота транзакций (периодичность, с которой iRidium будет запрашивать информацию об изменении статусов переменных контроллера). Рекомендуемые значения - 500...1000 мс при работе в локальной сети (1000...1500 мс при работе через Интернет). |
Для работы с контроллером через Интернет в настройках подключения указывается публичный IP-адрес маршрутизатора, к которому подключен контроллер. Для маршрутизатора настраивается служба проброса порта (Port Forwarding), что делает возможным удаленное управление.
Узнать публичный IP-адрес своего маршрутизатора Вы можете при помощи внешних сервисов, например Яндекс.Интернет
Подключение по Modbus RTU (ASCII) через ТСР/IP
Производится с помомщью преобразователя из TCP/IP в Modbus RTU (ASCII). Добавьте в проект драйвер "Modbus TCP to RTU" или "Modbus TCP to ASCII" из базы данных iRidium. Настройте параметры подключения к преобразователю по TCP/IP:
Host | IP-адрес преобразователя |
Port | TCP порт для подключения к преобразователю |
Update Time (мс) | Частота транзакций (периодичность, с которой iRidium будет запрашивать информацию об изменении статусов переменных контроллера). Рекомендуемые значения - 1000...1500 мс при работе в локальной сети (1500...2000 мс при работе через Интернет) |
Для работы через Интернет указывается публичный IP-адрес маршрутизатора, к которому подключен преобразователь TCP/IP to Modbus RTU (TCP to ASCII). Для маршрутизатора настраивается служба проброса порта (Port Forwarding), что делает возможным удаленное управление - обращение к локальному (приватному) адресу управляемого контроллера из сети Интернет.
Узнать публичный IP-адрес своего маршрутизатора Вы можете при помощи внешних сервисов, например Яндекс.Интернет
Подключение по Modbus RTU или ASCII
Добавьте в проект драйвер Modbus RTU (ASCII) из базы данных iRidium. Укажите параметры CОМ-порта ПК, через который будете соединяться с контроллером:
Port | Номер СОМ-порта, к которому подключен контроллер |
Update Time (мс) | Частота транзакций (периодичность, с которой iRidium будет запрашивать информацию об изменении статусов переменных контроллера). Рекомендуемые значения - 1000...2000 мс |
Baud Rate | Скорость обмена данными с контроллером |
Data Bits | Число информационных разрядов в кадре |
Parity | Контроль четности |
Стоповый бит в кадре всегда 1 |
Переключение между Локальным и Интернет-соединением
Если панель управления не должна терять возможность соединения с системой, когда перемещается за пределы её Wi-Fi сети, то нужно настроить в проекте переключение интернет-локальная сеть.
Удаленный режим работы подразумевает подключение к системе через Интернет. При этом используется внешний IP адрес или доменное имя системы, к которой нужно подключаться.
- В iRidium переключение Wi-Fi/3G автоматически НЕ производится. Для переключения интернет-локальная сеть, в вашем проекте должны быть специально настроенные кнопки. Настройки см. далее.
- Чтобы управление системой работало удаленно, нужно открыть систему для внешнего доступа -
настроить службу Port Forwarding.
- Чтобы обезопасить оборудование от стороннего вмешательства, рекомендуем использовать защищенное соединение с удаленной системой (VPN)
Настроим переключение Wi-Fi/3G в проекте iRidium:
1. Откройте редактор скриптов в iRidium GUI Editor.
2. Скачайте и добавьте в проект шаблон переключения Wi-Fi/3G (Add Script from file):
скачать шаблон переключения Wi-Fi/3G
Переключение Wi-Fi/3G производится с помощью скриптовой функции SetParameters
Настроим параметры переключения Wi-Fi/3G:
- function Internal_1() // Function name
- {
- IR.GetDevice('ModBus TCP').SetParameters({Host: '192.168.0.66', Port: '502', UpdateTime: '1000'}); // Driver Name + Parameters
- }
- function External_1()
- {
- IR.GetDevice('ModBus TCP').SetParameters({Host: '220.115.10.10', Port: '502', UpdateTime: '1000'});
- }
В настройках команд укажем:
- Function name – имя функции (команды) переключения. Две функции в одном проекте не должны называться одинаково
- Driver Name – имя драйвера, у которого меняем параметры
- Parameters – набор параметров подключения, который нужно применить к драйверу
Привяжем команды к кнопкам:
- Выберите кнопку, которая будет отвечать за переключение Wi-Fi/3G.
Откройте свойства этой кнопки: Object Properties > Programming - Откройте Macros Editor кнопки для события Press или Release
- Выберите команду Script Call и двойным кликом добавьте ее
- В выпадающем списке выберите имя функции, которую нужно вызвать. Создайте команду
Настроим доступ к оборудованию из Интернета:
Для этого откроем порты оборудования для удаленного доступа.
Загрузить пример переключения Wi-Fi/3G (проект) >>
Особенности контроллеров
Особенности адресации, характерные для различных Modbus-совместимых контроллеров
Insyte Spyder II
Убедитесь, что на контроллер Spyder II установлена прошивка 1.40 или старше, иначе возможны существенные задержки связи с контроллером и проблемы при работе с регистрами Coil.
Для работы с контроллером Insyte по протоколу Modbus TCP, активируйте возможность работы по этому протоколу в сетевых настройках контроллера, вкладка Ethernet. Пример конфигурации:
При создании команды управления регистром сдвигайте адресацию на "-1" относительно Insyte:.
У контроллера Insyte адреса регистров начинаются с 1, а в iRidium - с нуля.
Для обращения к ПЕРЕМЕННЫМ Insyte, используйте формулу:
Address = 1000 + [номер слота]*2
Номер слота есть у каждой переменной, он будет виден, если навести курсор мыши на переменную. Для отправки команды переменной используется тип данных Type: Holding Register и Word Size: Dword(32-bit).
Для отправки ИК команды через Insyte:
Address = адрес ИК эмиттера, с которого уходят команды Номер ИК команды = параметр Value (число) при натаскивании команды на графический элемент.
Команда на элемент натаскивается с указанием события Send Number.
Пример управления контроллером Insyte Spyder II по Modbus TCP (проект), 0.8 Мб |
Beckhoff
Beckhoff CX8090. Карта памяти Modbus/ADS:
Modbus areas | Modbus address (HEX) | Modbus address (DEC) | ADS area | |
---|---|---|---|---|
Digital inputs | 0x0000 - 0x7FFF | 0 - 32767 | Index group: 0xF021 - process image of physical inputs (bit access) |
Index offset: 0x0 |
0x8000 - 0x80FF | 32768 - 33023 | Name of the variables in PLC program: .mb_Input_Coils |
Data type: ARRAY [0..255] OF BOOL | |
Digital outputs (coils) | 0x0000 - 0x7FFF | 0 - 32767 | Index group: 0xF031 - process image of physical outputs (bit access) |
Index offset: 0x0 |
0x8000 - 0x80FF | 32768 - 33023 | Name of the variables in PLC program: .mb_Output_Coils |
Data type: ARRAY [0..255] OF BOOL | |
Input registers | 0x0000 - 0x7FFF | 0 - 32767 | Index group: 0xF020 - process image of physical inputs |
Index offset: 0x0 |
0x8000 - 0x80FF | 32768 - 33023 | Name of the variables in PLC program: .mb_Input_Registers |
Data type: ARRAY [0..255] OF WORD | |
Output registers | 0x0000 - 0x2FFF | 0 - 12287 | Index group: 0xF030 - process image of physical outputs |
Index offset: 0x0 |
0x3000 - 0x5FFF | 12288 - 24575 | 0x4020 - PLC memory area | 0x0 | |
0x6000 - 0x7FFF | 24576 - 32767 | 0x4040 - PLC data area | 0x0 | |
0x8000 - 0x80FF | 32768 - 33023 | Name of the variables in PLC program: .mb_Output_Registers |
Data type: ARRAY [0..255] OF WORD |
Read/Write Holding Registers.
- iPad1 AT %MB0 : WORD; (*адрес 12288*)
- iPad2 AT %MB1 : WORD; (*адрес 12289*)
Read/Write Coils. Необходимо создать в global_var массив mb_Output_Coils. Например:
- mb_Output_Coils AT %QB1000 : ARRAY[0..255] OF BOOL;
- Создаем переменные:
- iPad1 AT %QX1000.0 : BOOL; (*адрес 32768*)
- iPad2 AT %QX1001.0 : BOOL; (*адрес 32769*)
- iPad3 AT %QB1002 : ARRAY[0..5] OF BOOL; (*адрес 32770-32775*)
- iPad3 AT %QB1007 : ARRAY[0..5] OF BOOL; (*адрес 32775-32780*)
Beckhoff BC9хх0. Карта памяти Modbus/ADS:
Вычисление Modbus адреса Read/Write Holding Registers производится по формуле:
Address = 16384 + 12 - 1 = 16395
16384 - начало области %MB (0x4000-0x47FF)
12 – индекс переменной (можно посмотреть в свойствах переменной)
1 – учитывает отсчет с нуля
ОВЕН
При настройке контроллера, в параметр FIX необходимо добавить ТСР Port подключения к контроллеру. По умолчанию - 502.
Один порт держит одно подключение ТСР мастера (клиента iRidium)
Номера регистров Modbus можно смотреть по адресам типа %QB7.1.5:
Address = %QB7.1.5 - 1 = 5 - 1 = 4
Последняя цифра адреса минус один - это номер регистра, который будет указываться в iRidium.
Выравнивание переменных CoDeSys при размещении в области памяти Modbus:
переменные размером 8 бит, 2 байта и 4 байта должны располагаться только по определенным адресам. Адрес 4-байтной переменной кратен 4, 2-байтной – кратен 2, а 1-байтной – кратен 1 и может находиться в любой точке пространства памяти. Т.е. если идет первая переменная типа «байт», то она будет расположена по адресу 0х00, следующая – 0х01 и т.д. Если дальше идет 4-байтная переменная, она должна располагаться по адресу 0х04 и т.д. При этом, если однобайтная переменная заняла место, кратное четырем, следующая 4-байтная переменная занимает следующее кратное 4 место. Порядок задания переменных может быть произвольным, выравнивание же ставит переменные на кратные их длине адреса. Соответственно, возникают не занятые пространства памяти, которые должны учитываться пользователем: когда производится опрос прибора. Учет производится на стадии задания переменных.
Импорт команд и каналов Modbus
Протокол Modbus, реализованный в iRidium, позволяет управлять множеством контроллеров. В связи с этим была создана универсальная система импорта данных, позволяющая создать список команд и каналов обратной связи для драйвера Modbus в таблице Exel. Эта таблица сохраняется в формат CSV и может быть импортирована в проект iRidium как новое Modbus устройство:
загрузить шаблон импорта команд для Modbus
- В блоке, отмеченном синим цветом, указывается IP-адрес, порт и частота транзакций для подключения к контроллеру по Modbus TCP. Если Вы используете другой драйвер, скопируйте его название из редактора GUI Editor и впишите в первую строку шаблона вместо MODBUS TCP (TCP)
- В блоке, отмеченном зеленым цветом, формируется список команд (Commands), которые должны быть созданы в дереве устройств проекта. Каждая строка - это команда с именем и рядом настроек (подробнее о настройках см. общее описание в разделе "Отправка команд и чтение данных по протоколу Modbus")
- В блоке, отмеченном оранжевым цветом, формируется список каналов обратной связи (Feedbacks), которые должны быть созданы в дереве устройств проекта. Каждая строка - это канал с именем и рядом настроек (подробнее о настройках см. общее описание в разделе "Отправка команд и чтение данных по протоколу Modbus")
Когда список команд и каналов сформирован, сохраните таблицу Exel в формат *.CSV:
Результатом будет создание файла, готового к импорту в iRidium. Перейдите к редактору iRidium GUI Editor, создайте новый проект и воспользуйтесь механизмом File > Import. Выберите созданный CSV файл и подтвердите Импорт данных в свой проект.
Отправка команд и чтение данных по протоколу Modbus
В соответствии со стандартами протокола Modbus, iRidium обращается к следующим типам переменных - Type:
- Coil Register - регистры флагов, один бит, чтение и запись данных
- Holding Register - регистры хранения, 16-битное слово, чтение и запись данных
- Discret Inputs - дискретные входы, один бит, только чтение данных
- Input Register - регистры ввода, 16-битное слово, только чтение данных
Существует возможность изменения длины слова, передаваемого контроллеру до 32 бит, для чего существует настройка размера слова в параметрах команд и каналов iRidium - Word Size (в стандартном протоколе Modbus используются только 16-битные слова):
- Word (16-bit) - 16-битное слово, соответствующее стандартному протоколу Modbus
- DWord (32-bit) - 32-битное слово, состоящее из двух стандартных регистров Word
- Float (32-bit) - 32-битное слово, запись данных в которое производится с помощью ASCII символов
В связи с тем, что запись данных в байты может производиться в разной последовательности, возникает классификация по последовательности записи данных - Content Type (по умолчанию используется Low Endian):
- Low Endian - порядок байтов, характерный для стандартного протокола Modbus, где запись данных начинается с младшего и заканчивается старшим байтом (b1, b2, b3, b4)
- Big Endian - запись начинается со старшего и заканчивается младшим байтом (b4, b3, b2, b1)
- Swapped Low Endian и Swapped Big Endian - порядок байтов соответствует вышестоящим определениям, но биты в каждом слове написаны в обратном порядке (n,...,1)
Для отправки данных в регистр iRidium использует команды (Commands) и каналы обратной связи (Feedbacks), в которых указываются параметры регистра, которому необходимо передать данные. Команды и каналы создаются на выходе драйвера Modbus, и передаются устройству, параметры подключения к которому указаны в настройках драйвера.
Отправка и получение данных о состоянии переменных производится драйвером на основе списка имеющихся у него команд и каналов. Инициация отправки команд производится графическими элементами, к котором привязаны команды. Данные, полученные от контроллера, могут влиять на параметры графических элементов и отображаться в их текстовых полях в виде значений.
Частота инициации транзакций (запроса данных от контроллера) определяется на этапе настройки подключения.
Графические элементы, которые могут быть использованы для управления переменными Modbus и настройки интерфейса:
Кнопка (Button) | Отправка фиксированных значений; отображение полученных данных |
Уровень (Level) | Отправка значения из заранее заданного диапазона с помощью ползунка; отображение текущего значения за счет позиции ползунка |
Триггер (Trigger Button) | Переключение между двумя фиксированными значениями, указанными при настройке Триггера |
Прирост/убывание (Up/Down Button) |
Увеличение или уменьшение значения на заданную величину относительно текущего значения в установленных пределах. Пределы изменения и шаг прироста/убывания задаются при настройке |
Анимированная кнопка (Multistate Button) | Отправка фиксированных значений и получение данных, сопровождающееся воспроизведением анимации при нажатии или смене состояния |
Анимированный уровень (Multistate Level) | Отправка и получение значений в заданном диапазоне, где каждому, или группе значений уровня соответствует отдельное изображение |
Поле ввода (Edit Box) | Ввод строки данных, которые должны быть отправлены в шину |
Джойстик (Joystick) | Управление RGB светодиодами с помощью объекта Color Picker |
Статический список (Static List) | Прокрутка списка попапов с помощью жестов |
Создание команды для управления переменной Modbus
1. Создайте в дереве проекта команду, укажите ее параметры:
(параметры команд будут подробно описаны в примерах взаимодействия с контроллерами)
Name | имя команды (произвольно) |
Device ID | адрес подчиненного устройства, которому адресована команда (slave id) |
Type | тип регистра, к которому обращена команда |
Address | адрес управляемого регистра |
Word Size | размер передаваемого слова, стандартно: Word 16-bit |
Content Type | порядок байтов в слове, стандартно: Low Endian |
2. Создайте графический элемент, который будет инициировать отправку команды
(свойства элемента зависят от типа команды и поставленных задач управления):
Типа элемента зависит от поведения, которое от него требуется, выбор типа обратной связи (Feedback) для элемента влияет на обработку и отображение данных, которые были получены элементом от контроллера. Основные используемые типы Feedback:
- Momentary – не отображать полученные из канала данные, но менять состояние элемента при нажатии на него (с возвратом в исходное состояние при отпускании)
- Channel – отображать полученные из канала данные. Данные могут быть выведены в текстовое поле элемента, влиять на его состояние (переключать состояния в зависимости от принятых значений) или влиять на выбранные параметры элемента
Остальные типы Feedback имеют специфические применения и используются реже
3. Перенесите команду на графический элемент
Привязка команды к элементу производится методом Drag&Drop (перетаскивание)
При переносе команды появится окно выбора типа и источника данных, которые будут переданы контроллеру:
- Send String – отправить строку данных в формате UTF-8 (используется при отправке дробных значений регистрам хранения чисел с плавающей запятой, Float 32-bit)
- Send Number – отправить число в десятичном формате (используется при отправке любого целого числа регистру Coil или Holding. Отправляемое число фиксировано и указывается при добавлении команды на графический элемент)
- Send Token – отправить в шину значение, принятое одним из параметров графического элемента или глобальной переменной (например, можно выбрать отправку текущего положения ползунка Уровня, используется для регулирования значения в Holding register, а также при работе с триггерами и элементами прирост-убывание)
- Send Binary Data – отправить бинарные данные (не используется для Modbus)
4. Введите данные для отправки и событие, при котором сработает отправка
При необходимости чтения данных с этого же регистра, поставьте галочку у события "Create Feedback Channel", укажите параметр элемента, на который будет влиять канал обратной связи:
В диалоговом окне добавления команды указывается не только значение, отправляемое регистру, но и событие, при котором это значение будет отправлено:
- Press - нажатие на элемент (отправка телеграммы при нажатии)
- Release - отпускание элемента
- Hold - циклическая отправка по удержанию (нужна дополнительная настройка задержки между отправкой данных)
- Move - отправка данных при каждом перемещении ползунка уровня (все принятые уровнем значения), используется только для элемента Level (Уровень)
Создание канала для получения и отображения статуса переменных Modbus
1. Создайте канал обратной связи для получения статуса регистра Modbus
(канал может быть создан вручную или сгенерирован на основе команды в дереве устройств, с помощью кнопки «CreateFeedbacks» в меню правой кнопки мыши)
2. Перенесите канал обратной связи на графический элемент
(перенос осуществляется перетаскиванием канала из дерева на графический элемент)
Укажите параметр графического элемента, на который будет влиять канал обратной связи:
- In Text – полученное из канала значение вывести в виде числа в текстовом поле
- In Value – полученное из канала значение должно влиять на состояние элемента (менять позицию ползунка Уровня, переключать Кнопку между включенным и выключенным состояниями, инициировать воспроизведение анимации и т.п.)
- More… – выбрать более сложный закон взаимодействия канала и параметров элемента (например, менять координаты элемента при изменении значения канала)
Эмуляция работы проекта
Эмулятор (Emulator)
- это приложение iRidium для Windows, которое можно запустить из редактора GUI Editor для проверки своего проекта. Эмулятор может работать с лицензией (с подключением к оборудованию) и без лицензии, когда активна только графическая часть проекта.
Режимы работы Эмулятора (см. GUI Editor > Tools > Options > Emulator):
- Без лицензии (Demo Mode: on) – подключение к оборудованию не будет работать
- С лицензией (License Path: [...]) – когда файл лицензии выбран, Эмулятор работает в режиме полной функциональности, с возможностью подключения к оборудованию.
Укажите путь к файлу лицензии для Эмулятора (GUI Editor > Tools > Options > Emulator):
* При активной опции Demo Mode, GUI Editor не будет показывать предупреждение о том, что проект запускается без подключения к оборудованию (без лицензии). Проверьте наличие лицензии, когда настраиваете свой проект.
Горячие клавиши и настройки Эмулятора
- Нажмите F5, чтобы запустить Эмулятор.
- Нажимте F8, чтобы открыть настройки Эмулятора (пароль: 2007)
- Нажмите F4, чтобы открыть лог Эмулятора.
Для работы iRidium на ПК в режиме полной функциональности, необходимо приобрести лицензию iRidium и активировать ее для вашего ПК. При активации лицензии для iPad/iPhone/Android/Mac, вы не получаете лицензии для ПК, где установлена среда разработки iRidium Mobile. Лицензия для ПК нужна, чтобы клиент iRidium на ПК (в том числе, клиент-Эмулятор) работал в режиме полной функциональности. Ее нужно приобрести отдельно (или использовать бесплатный Trial) |
Логирование на Windows
iRidium Log - окно, куда в текстовом виде выводится информация о работе iRidium, уведомления, сообщения об ошибках и логи iRidium Script (IR.Log).
Нажмите F4, чтобы запустить лог iRidium на Windows
Запустить проект на управляющей панели
Загрузка и запуск проекта iRdidium на управляющей панели производится при помощи приложения iRidium Transfer, установленного на Ваш ПК. Также Вы можете загрузить проект на панель из редактора посредством Transfer.
- Инструкция по загрузке проекта iRidium на управляющую панель: iRidium Transfer.
- Инструкция по настройке проекта iRidium на управляющей панели: iRidium App