Основы работы iRidium с Modbus контроллерами

Материал из iRidium Mobile Wiki
Перейти к: навигация, поиск


Принцип взаимодействия управляющей панели iRidium с Modbus контроллером

Технология подключения iRidium App к контроллеру по Modbus TCP подразумевает использование клиент-серверной модели, где iRidium App выступает как главное (Master) устройство, инициирующее транзакции подчиненному (Slave) контроллеру. Для работы с контроллером по Modbus TCP не нужно дополнительное аппаратное обеспечение, iRidium подключается к контроллеру напрямую.


Схема 1. Подключение по Modbus TCP


При подключении iRidium App к контроллеру по Modbus RTU или ASCII используется та же модель передачи данных, но обязательным является наличие преобразователя из протокола TCP в Modbus RTU/ASCII. В качестве такого преобразователя может служить любой из многочисленных шлюзов, предлагаемых на рынке автоматизации.

В случае использования преобразователя из TCP в Modbus RTU или ASCII, необходимо использовать соответствующий драйвер (Modbus TCP ro RTU, Modbus TCP to ASCII) в редакторе iRidium GUI Editor.


Схема 2. Подключение по Modbus RTU или ASCII


↑ К оглавлению

Настройка подключения к 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-порт и параметры подключения:


Modbus Connection TCP.png
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:


Modbus Connection TCPtoRTU-ASCII.png
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ОМ-порта ПК, через который будете соединяться с контроллером:


Modbus Connection RTU-ASCII.png
Port Номер СОМ-порта, к которому подключен контроллер
Update Time (мс) Частота транзакций (периодичность, с которой iRidium будет запрашивать информацию об изменении статусов переменных контроллера). Рекомендуемые значения - 1000...2000 мс
Baud Rate Скорость обмена данными с контроллером
Data Bits Число информационных разрядов в кадре
Parity Контроль четности
Стоповый бит в кадре всегда 1


Переключение между Локальным и Интернет-соединением

Если панель управления не должна терять возможность соединения с системой, когда перемещается за пределы её Wi-Fi сети, то нужно настроить в проекте переключение интернет-локальная сеть.

Удаленный режим работы подразумевает подключение к системе через Интернет. При этом используется внешний IP адрес или доменное имя системы, к которой нужно подключаться.


Attention.png В iRidium переключение Wi-Fi/3G автоматически НЕ производится. Для переключения интернет-локальная сеть, в вашем проекте должны быть специально настроенные кнопки. Настройки см. далее.
Attention.png Чтобы управление системой работало удаленно, нужно открыть систему для внешнего доступа -
настроить службу Port Forwarding.
Attention.png Чтобы обезопасить оборудование от стороннего вмешательства, рекомендуем использовать защищенное соединение с удаленной системой (VPN)


Настроим переключение Wi-Fi/3G в проекте iRidium:

Scripts PpenTemplate.png

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 – набор параметров подключения, который нужно применить к драйверу


Привяжем команды к кнопкам:

  1. Выберите кнопку, которая будет отвечать за переключение Wi-Fi/3G.
    Откройте свойства этой кнопки: Object Properties > Programming
  2. Откройте Macros Editor кнопки для события Press или Release
  3. Выберите команду Script Call и двойным кликом добавьте ее
  4. В выпадающем списке выберите имя функции, которую нужно вызвать. Создайте команду

Script call internal-external.png


Настроим доступ к оборудованию из Интернета:

Для этого откроем порты оборудования для удаленного доступа.


Загрузить пример переключения Wi-Fi/3G (проект) >>

↑ К оглавлению

Особенности контроллеров

Особенности адресации, характерные для различных Modbus-совместимых контроллеров

Insyte Spyder II

Attention.png Убедитесь, что на контроллер Spyder II установлена прошивка 1.40 или старше, иначе возможны существенные задержки связи с контроллером и проблемы при работе с регистрами Coil.


Для работы с контроллером Insyte по протоколу Modbus TCP, активируйте возможность работы по этому протоколу в сетевых настройках контроллера, вкладка Ethernet. Пример конфигурации:

Insyte Ethernet Config.png

При создании команды управления регистром сдвигайте адресацию на "-1" относительно Insyte:.
У контроллера Insyte адреса регистров начинаются с 1, а в iRidium - с нуля.


Для обращения к ПЕРЕМЕННЫМ Insyte, используйте формулу:

Address = 1000 + [номер слота]*2

Номер слота есть у каждой переменной, он будет виден, если навести курсор мыши на переменную. Для отправки команды переменной используется тип данных Type: Holding Register и Word Size: Dword(32-bit).


Для отправки ИК команды через Insyte:

Address = адрес ИК эмиттера, с которого уходят команды 

Номер ИК команды = параметр Value (число) при натаскивании команды на графический элемент. 

Команда на элемент натаскивается с указанием события Send Number.

Arrow download.png Пример управления контроллером 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

Modbus import file.png


  • В блоке, отмеченном синим цветом, указывается IP-адрес, порт и частота транзакций для подключения к контроллеру по Modbus TCP. Если Вы используете другой драйвер, скопируйте его название из редактора GUI Editor и впишите в первую строку шаблона вместо MODBUS TCP (TCP)
  • В блоке, отмеченном зеленым цветом, формируется список команд (Commands), которые должны быть созданы в дереве устройств проекта. Каждая строка - это команда с именем и рядом настроек (подробнее о настройках см. общее описание в разделе "Отправка команд и чтение данных по протоколу Modbus")
  • В блоке, отмеченном оранжевым цветом, формируется список каналов обратной связи (Feedbacks), которые должны быть созданы в дереве устройств проекта. Каждая строка - это канал с именем и рядом настроек (подробнее о настройках см. общее описание в разделе "Отправка команд и чтение данных по протоколу Modbus")


Когда список команд и каналов сформирован, сохраните таблицу Exel в формат *.CSV:

Modbus import file CSV.png


Результатом будет создание файла, готового к импорту в 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. Создайте в дереве проекта команду, укажите ее параметры:
(параметры команд будут подробно описаны в примерах взаимодействия с контроллерами)

Modbus command settings.png
Name имя команды (произвольно)
Device ID адрес подчиненного устройства, которому адресована команда (slave id)
Type тип регистра, к которому обращена команда
Address адрес управляемого регистра
Word Size размер передаваемого слова, стандартно: Word 16-bit
Content Type порядок байтов в слове, стандартно: Low Endian



2. Создайте графический элемент, который будет инициировать отправку команды
(свойства элемента зависят от типа команды и поставленных задач управления):


Modbus item settings.png

Типа элемента зависит от поведения, которое от него требуется, выбор типа обратной связи (Feedback) для элемента влияет на обработку и отображение данных, которые были получены элементом от контроллера. Основные используемые типы Feedback:

  • Momentary – не отображать полученные из канала данные, но менять состояние элемента при нажатии на него (с возвратом в исходное состояние при отпускании)
  • Channel – отображать полученные из канала данные. Данные могут быть выведены в текстовое поле элемента, влиять на его состояние (переключать состояния в зависимости от принятых значений) или влиять на выбранные параметры элемента

Остальные типы Feedback имеют специфические применения и используются реже


3. Перенесите команду на графический элемент
Привязка команды к элементу производится методом Drag&Drop (перетаскивание)


Modbus command dragging.png

При переносе команды появится окно выбора типа и источника данных, которые будут переданы контроллеру:

  • Send String – отправить строку данных в формате UTF-8 (используется при отправке дробных значений регистрам хранения чисел с плавающей запятой, Float 32-bit)
  • Send Number – отправить число в десятичном формате (используется при отправке любого целого числа регистру Coil или Holding. Отправляемое число фиксировано и указывается при добавлении команды на графический элемент)
  • Send Token – отправить в шину значение, принятое одним из параметров графического элемента или глобальной переменной (например, можно выбрать отправку текущего положения ползунка Уровня, используется для регулирования значения в Holding register, а также при работе с триггерами и элементами прирост-убывание)
  • Send Binary Data – отправить бинарные данные (не используется для Modbus)


4. Введите данные для отправки и событие, при котором сработает отправка

При необходимости чтения данных с этого же регистра, поставьте галочку у события "Create Feedback Channel", укажите параметр элемента, на который будет влиять канал обратной связи:

Modbus Command dialog.png

В диалоговом окне добавления команды указывается не только значение, отправляемое регистру, но и событие, при котором это значение будет отправлено:

  • Press - нажатие на элемент (отправка телеграммы при нажатии)
  • Release - отпускание элемента
  • Hold - циклическая отправка по удержанию (нужна дополнительная настройка задержки между отправкой данных)
  • Move - отправка данных при каждом перемещении ползунка уровня (все принятые уровнем значения), используется только для элемента Level (Уровень)


↑ К оглавлению

Создание канала для получения и отображения статуса переменных Modbus

1. Создайте канал обратной связи для получения статуса регистра Modbus

(канал может быть создан вручную или сгенерирован на основе команды в дереве устройств, с помощью кнопки «CreateFeedbacks» в меню правой кнопки мыши)


Modbus channel creating.png


2. Перенесите канал обратной связи на графический элемент
(перенос осуществляется перетаскиванием канала из дерева на графический элемент)


Modbus channel dragging.png


Укажите параметр графического элемента, на который будет влиять канал обратной связи:

  • 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):

Path to the license.png

* При активной опции Demo Mode, GUI Editor не будет показывать предупреждение о том, что проект запускается без подключения к оборудованию (без лицензии). Проверьте наличие лицензии, когда настраиваете свой проект.


Горячие клавиши и настройки Эмулятора

Нажмите F5, чтобы запустить Эмулятор.
Нажимте F8, чтобы открыть настройки Эмулятора (пароль: 2007)
Нажмите F4, чтобы открыть лог Эмулятора.


Attention.png Для работы iRidium на ПК в режиме полной функциональности, необходимо приобрести лицензию iRidium и активировать ее для вашего ПК.

При активации лицензии для iPad/iPhone/Android/Mac, вы не получаете лицензии для ПК, где установлена среда разработки iRidium Mobile. Лицензия для ПК нужна, чтобы клиент iRidium на ПК (в том числе, клиент-Эмулятор) работал в режиме полной функциональности. Ее нужно приобрести отдельно (или использовать бесплатный Trial)


Логирование на Windows

Log window.png

iRidium Log - окно, куда в текстовом виде выводится информация о работе iRidium, уведомления, сообщения об ошибках и логи iRidium Script (IR.Log).


Нажмите F4, чтобы запустить лог iRidium на Windows


↑ К оглавлению

Запустить проект на управляющей панели

Загрузка и запуск проекта iRdidium на управляющей панели производится при помощи приложения iRidium Transfer, установленного на Ваш ПК. Также Вы можете загрузить проект на панель из редактора посредством Transfer.

  • Инструкция по загрузке проекта iRidium на управляющую панель: iRidium Transfer.
  • Инструкция по настройке проекта iRidium на управляющей панели: iRidium App


↑ К оглавлению