Примеры взаимодействия с переменными Modbus
Содержание
Запись данных в Coil Registers
Coil Register - регистры флагов, содержание значение в один бит. Регистры Coil доступны для чтения и записи данных.
Для отправки данных в регистры Coil могут быть использованы команды (Commands), созданные на выходе драйвера Modbus, инициация отправки команд производится графическими элементами, к котором привязаны команды. Данные, полученные от контроллера, могут влиять на параметры графических элементов, в том числе на значения, отправку которых инициирует элемент. Отдельные типы графических элементов для работы используют одновременно канал записи значения и канал чтения состояния переменной (Trigger Button, Up/Down Button).
Графические элементы, которые могут быть использованы для управления регистром Coil драйвера Modbus:
- Кнопка (Button) - отправка фиксированного значения регистру (0 или 1); отображение состояния регистра сменой состояния кнопки или вывод значения регистра на элемент в виде текста
- Триггер (Trigger Button) - переключение между двумя состояниями Coil регистра (0 и 1). Для работы триггера необходим канал чтения текущего состояния управляемого регистра. В зависимости от текущего состояния, элемент выбирает значение, которое будет отправлено контроллеру при очередном нажатии на элемент (значение 0 или 1).
Запись значения в регистр Coil с помощью кнопки
1. Создайте команду отправки значения в регистр Coil
команда создается в дереве устройств проекта и адаптируется для работы с выбранным типом регистра:
Name | имя команды (произвольно) |
Device ID | адрес подчиненного устройства, контроллера (Slave ID) |
Type | тип регистра, к которому обращена команда (Coil Register) |
Address | адрес управляемого Coil регистра |
2. Создайте графический элемент - кнопку для отправки значения регистру
Элемент будет инициировать отправку значения регистру, само значение выбирается при натаскивании команды на графический элемент. Для выбора фиксированного значения, при привязке команды выбираем событие "Send Number"
Type | тип графического элемента - кнопка (Button). Кнопка используется для отправки фиксированного значения в регистр |
Feedback | тип обратной связи для элемента - Momentary. Элемент будет менять состояние при нажатии, но полученные от контроллера данные не повлияют на его состояние |
Hit | восприимчивость элемента к нажатию - Active Touch. Активной для нажатия будет вся непрозрачная часть графического элемента |
3. Привяжите команду к графическому элементу
Привязка команды осуществляется методом Drag&Drop - перетаскивание. В процессе привязки указывается тип отправляемых данных и событие, при котором они должны быть отправлены контроллеру:
Выпадающий список действий при натаскивании команды на элемент: | |
Send Number | отправить регистру фиксированное целое число в десятичном формате. Значение указывается в диалоговом окне при выборе этого типа отправки данных. Команда Send Number всегда используется при работе с обычными кнопками (Button). |
Диалоговое окно события Send Number: | |
Value | Поле ввода значения (целого десятичного числа), которое будет отправлено регистру. Для регистров Coil это всегда 0 или 1 |
Event for Action | Событие, при котором выбранное значение Value будет отправлено регистру (Press - при нажатии на элемент, Release - при отпускании элемента, другое для кнопки обычно не используется) |
Когда вышеуказанные действия выполнены, можно запустить Эмуляцию работы проекта. При наличии лицензии Эмулятор iRidium подключится к управляемому контроллеру и при каждом нажатии на настроенную в этом пункте инструкции кнопку будет отправлять единицу на Coil регистр с указанным при настройке адресом.
Так же можно настроить отправку значения 0 этому регистру (например, для реализации раздельных элементов Вкл и Выкл).
Запись значения в регистр Coil с помощью триггера
1. Создайте команду отправки значения в регистр Coil
команда создается в дереве устройств проекта и адаптируется для работы с выбранным типом регистра:
Name | имя команды (произвольно) |
Device ID | адрес подчиненного устройства, контроллера (Slave ID) |
Type | тип регистра, к которому обращена команда (Coil Register) |
Address | адрес управляемого Coil регистра |
2. Создайте графический элемент - триггер для переключения состояния регистра
Элемент при каждом нажатии будет инициировать переключение между двумя состояниями Coil регистра (0 и 1). Для работы триггера необходим канал чтения текущего состояния управляемого регистра. В зависимости от текущего состояния, триггер выбирает значение, которое будет отправлено контроллеру при очередном нажатии на элемент (значение 0 или 1). Также канал чтения состояния регистра необходим для инициализации триггера при старте проекта iRidium.
Type | тип графического элемента - кнопка триггер (Trigger Button). Используется для переключения регистра в значение, противоположное текущему |
Feedback | тип обратной связи для элемента - Channel. Элемент будет менять свое состояние в зависимости от текущего действительного значения управляемого регистра, это необходимо для инициализации триггера и корректного отображения его текущего состояния (при помощи канала чтения статуса регистра) |
Hit | восприимчивость элемента к нажатию - Active Touch. Активной для нажатия будет вся непрозрачная часть графического элемента |
Trigger Value 1 Trigger Value 2 |
два возможных состояния триггера (обычно активное и неактивное). Для регистра Coil это всегда значения 0 и 1. Единица соответствует второму (активному) состоянию триггера |
* States | для корректной работы, триггер всегда должен иметь 2 состояния (State 1 и State 2), настраивающихся во вкладке States параметров графического элемента |
3. Привяжите команду к графическому элементу
Привязка команды осуществляется методом Drag&Drop - перетаскивание. В процессе привязки указывается тип отправляемых данных и событие, при котором они должны быть отправлены контроллеру:
Выпадающий список действий при натаскивании команды на элемент: | |
Send Token | это команда для отправки регистру одного из возможных значений триггера (Trigger Value 1 и Trigger Value 2). Текущее состояние триггера определяется параметром Value элемента. На его основе триггер формирует следующее значение для отправки регистру. Команду Send Token выбираем, когда элемент должен отправить не фиксированное число, а переменную, зависящую от действий пользователя или состояния элемента. Т.е. при работе с уровнями, триггерами, кнопками прирост/убывание всегда используется команда Send Token |
Диалоговое окно события Send Token: | |
Token | Параметр Value определяет текущее состояние триггера (Trigger Value 1 или Trigger Value 2), поэтому при выборе источника отправляемого значения указываем именно Value элемента. Этот параметр будет выбран в диалоговом окне по умолчанию, оставляем его в исходном виде и переходим к следующей настройке |
Event for Action | Событие, при котором выбранное значение Value будет отправлено регистру (Press - при нажатии на элемент, Release - при отпускании элемента, другое для триггера не используется) |
Create a feedback channel | команда автоматического создания канала для получения статуса регистра. Канал создается на основе привязываемой к элементу команды, имеет то же имя и свойства. Создание канала обратной связи (с помощью этой опции или вручную) является обязательным при работе с триггером. В отсутствие канала, триггер не будет знать текущее состояние регистра для выбора значения, противоположного текущему. |
Feedback: In Value |
настройка, определяющая параметр элемента, на который будет влиять созданный канала чтения статуса. Для работы триггера, полученное значение должно влиять на Value (состояние) элемента, поэтому выбираем событие In Value |
Когда вышеуказанные действия выполнены, можно запустить Эмуляцию работы проекта. При наличии лицензии Эмулятор iRidium подключится к управляемому контроллеру и при каждом нажатии на настроенный в этом пункте инструкции триггер будет считывать текущее состояние управляемого Coil регистра. На основе текущего состояния регистра, полученного каналом, триггер выбирает и отправляет ему значение, противоположное текущему.
Кнопка триггер является удобной заменой раздельным элементам управления Coil регистром, один из которых устанавливает значение в единицу, другой - в ноль.
Запись данных в Holding Registers
Holding Registers - регистры хранения, содержащие (в стандартном протоколе Modbus) 16-битные значения. Регистры Holding доступны для чтения и записи данных.
Для отправки данных в регистры Holding используются команды (Commands), созданные на выходе драйвера Modbus, инициация отправки команд производится графическими элементами, к котором привязаны команды. Данные, полученные от контроллера, могут влиять на параметры графических элементов, в том числе на значения, отправку которых инициирует элемент. Отдельные типы графических элементов для работы используют одновременно канал записи значения и канал чтения состояния переменной (Trigger Button, Up/Down Button, Level).
Графические элементы, которые могут быть использованы для управления регистром Holding драйвера Modbus:
- Кнопка (Button) - отправка фиксированного значения регистру (в диапазоне 16 бит - знаковые или беззнаковые значения); отображение состояния регистра за счет вывода его текущего значения в текстовое поле элемента
- Уровень (Level) - установка значения переменной в диапазоне, определяемом пределами уровня; вывод полученного состояния регистра на уровень
- Триггер (Trigger Button) - переключение между двумя произвольными состояниями Holding регистра (например, 0 и 65535). Для работы триггера необходим канал чтения текущего состояния управляемого регистра. В зависимости от текущего состояния, элемент выбирает значение, которое будет отправлено контроллеру при очередном нажатии на элемент (значение 0 или 65535)
- Прирост/убывание (Up/Down Button) - увеличение или уменьшение текущего значения регистра на заданную величину относительно текущего значения. Пределы и шаг прироста/убывания задаются при настройке элемента
Запись значения в регистр Holding с помощью кнопки
1. Создайте команду отправки значения в регистр Holding
команда создается в дереве устройств проекта и адаптируется для работы с выбранным типом регистра:
Name | имя команды (произвольно) |
Device ID | адрес подчиненного устройства, контроллера (Slave ID) |
Type | тип регистра, к которому обращена команда (Holding Register) |
Address | адрес управляемого Holding регистра |
Word Size | Размер слова Holding регистра. Word (16-bit) для стандартного протокола Modbus |
Content Type | последовательность записи байтов регистра. Low Endian для стандартного протокола Modbus |
2. Создайте графический элемент - кнопку для отправки значения регистру
Элемент будет инициировать отправку значения регистру, само значение выбирается при натаскивании команды на графический элемент. Для выбора фиксированного значения, при привязке команды выбираем событие "Send Number"
Type | тип графического элемента - кнопка (Button). Кнопка используется для отправки фиксированного значения в регистр |
Feedback | тип обратной связи для элемента - Momentary. Элемент будет менять состояние при нажатии, но полученные от контроллера данные не повлияют на его состояние |
Hit | восприимчивость элемента к нажатию - Active Touch. Активной для нажатия будет вся непрозрачная часть графического элемента |
3. Привяжите команду к графическому элементу
Привязка команды осуществляется методом Drag&Drop - перетаскивание. В процессе привязки указывается тип отправляемых данных и событие, при котором они должны быть отправлены контроллеру:
Выпадающий список действий при натаскивании команды на элемент: | |
Send Number | отправить регистру фиксированное целое число в десятичном формате. Значение указывается в диалоговом окне при выборе этого типа отправки данных. Команда Send Number всегда используется при работе с обычными кнопками (Button). |
Диалоговое окно события Send Number: | |
Value | Поле ввода значения (целого десятичного числа), которое будет отправлено регистру. Для регистров Holding это любое значение в диапазоне 16 бит |
Event for Action | Событие, при котором выбранное значение Value будет отправлено регистру (Press - при нажатии на элемент, Release - при отпускании элемента, другое для кнопки обычно не используется) |
Когда вышеуказанные действия выполнены, можно запустить Эмуляцию работы проекта. При наличии лицензии Эмулятор iRidium подключится к управляемому контроллеру и при каждом нажатии на настроенную в этом пункте инструкции кнопку будет отправлять значение в Holding регистр с указанным при настройке адресом.
Запись значения в регистр Holding с помощью уровня
1. Создайте команду отправки значения в регистр Holding
команда создается в дереве устройств проекта и адаптируется для работы с выбранным типом регистра:
Name | имя команды (произвольно) |
Device ID | адрес подчиненного устройства, контроллера (Slave ID) |
Type | тип регистра, к которому обращена команда (Holding Register) |
Address | адрес управляемого Holding регистра |
Word Size | Размер слова Holding регистра. Word (16-bit) для стандартного протокола Modbus |
Content Type | последовательность записи байтов регистра. Low Endian для стандартного протокола Modbus |
2. Создайте графический элемент - уровень для управления занчением
При нажатию на какую-либо зону уровня, в регистр будет отправлено значение, соовтетствующее этой зоне. Пределы регулирования указываются при настройке уровня. Элемент всегда должен иметь 2 состояния, может работать как с каналом обратной связи, так и без него.
Type | тип графического элемента - уровень (Level). Используется для установки значения регистра в указанном диапазоне |
Feedback | тип обратной связи для элемента - Channel. При нажатии уровень перейдет в указанное значение, но при получении от контроллера данных об изменении значения в регистре, ползунок перейдет в новое положение |
Hit | восприимчивость элемента к нажатию - Active Touch. Активной для нажатия будет вся непрозрачная часть графического элемента |
Min Max |
минимальное и максимальное значения уровня, которые он не может превысить при регулировании |
Direction | ориентация уровня в пространстве - горизонтальная или вертикальная |
Range Type | тип данных, которым оперирует уровень. Integer - целочисленные значения, Float - числа с плавающей запятой |
* States | для корректной работы, уровень всегда должен иметь 2 состояния (State 1 и State 2), настраивающихся во вкладке States параметров графического элемента |
3. Привяжите команду к графическому элементу
Привязка команды осуществляется методом Drag&Drop - перетаскивание. В процессе привязки указывается тип отправляемых данных и событие, при котором они должны быть отправлены контроллеру:
Выпадающий список действий при натаскивании команды на элемент: | |
Send Token | это команда отправки регистру одного из доступных значений уровня. Текущее значение уровня определяется параметром Value элемента. Команду Send Token выбираем, когда элемент должен отправить не фиксированное число, а переменную, зависящую от действий пользователя или состояния элемента. Т.е. при работе с уровнями, триггерами, кнопками прирост/убывание всегда используется команда Send Token |
Диалоговое окно события Send Token: | |
Token | Параметр Value определяет текущее положение ползунка уровня, поэтому при выборе источника отправляемого значения указываем именно Value элемента. Этот параметр будет выбран в диалоговом окне по умолчанию, оставляем его в исходном виде и переходим к следующей настройке |
Event for Action | Событие, при котором выбранное значение Value будет отправлено регистру (Press - при нажатии на элемент, Release - при отпускании элемента, Move - при движении ползунка уровня будут отправляться все принятые им промежуточные значения, до момента отпускания). Рекомендуется привязывать команду сразу на 2 события - Press и Release при работе с уровнем. Событие Move может создать излишнюю нагрузку на контроллер из-за большого объема передаваемых данных |
Когда вышеуказанные действия выполнены, можно запустить Эмуляцию работы проекта. При наличии лицензии, Эмулятор iRidium подключится к управляемому контроллеру и при каждом нажатии на настроенный уровень будет отправлять в регистр соответствующее выбранной зоне уровня значение.
Запись значения в регистр Holding с помощью триггера
1. Создайте команду отправки значения в регистр Holding
команда создается в дереве устройств проекта и адаптируется для работы с выбранным типом регистра:
Name | имя команды (произвольно) |
Device ID | адрес подчиненного устройства, контроллера (Slave ID) |
Type | тип регистра, к которому обращена команда (Holding Register) |
Address | адрес управляемого Holding регистра |
Word Size | Размер слова Holding регистра. Word (16-bit) для стандартного протокола Modbus |
Content Type | последовательность записи байтов регистра. Low Endian для стандартного протокола Modbus |
2. Создайте графический элемент - триггер для переключения состояния регистра
Элемент при каждом нажатии будет инициировать переключение между двумя состояниями Holding регистра (к примеру, 0 и 65535). Для работы триггера необходим канал чтения текущего состояния управляемого регистра. В зависимости от текущего состояния, триггер выбирает значение, которое будет отправлено контроллеру при очередном нажатии на элемент. Также канал чтения состояния регистра необходим для инициализации триггера при старте проекта iRidium.
Type | тип графического элемента - кнопка триггер (Trigger Button). Используется для переключения регистра в значение, противоположное текущему |
Feedback | тип обратной связи для элемента - Channel. Элемент будет менять свое состояние в зависимости от текущего действительного значения управляемого регистра, это необходимо для инициализации триггера и корректного отображения его текущего состояния (при помощи канала чтения статуса регистра) |
Hit | восприимчивость элемента к нажатию - Active Touch. Активной для нажатия будет вся непрозрачная часть графического элемента |
Trigger Value 1 Trigger Value 2 |
два возможных состояния триггера (обычно активное и неактивное). Для регистра Holding это могут быть любые 2 значения из диапазона 16 бит. |
* States | для корректной работы, триггер всегда должен иметь 2 состояния (State 1 и State 2), настраивающихся во вкладке States параметров графического элемента |
- если реальное значение в регистре не совпадает ни с одним из двух значений, указанных для триггера, то при очередном нажатии на триггер регистру отправится значение, указанное в поле Trigger Value 2
3. Привяжите команду к графическому элементу
Привязка команды осуществляется методом Drag&Drop - перетаскивание. В процессе привязки указывается тип отправляемых данных и событие, при котором они должны быть отправлены контроллеру:
Выпадающий список действий при натаскивании команды на элемент: | |
Send Token | это команда для отправки регистру одного из возможных значений триггера (Trigger Value 1 и Trigger Value 2). Текущее состояние триггера определяется параметром Value элемента. На его основе триггер формирует следующее значение для отправки регистру. Команду Send Token выбираем, когда элемент должен отправить не фиксированное число, а переменную, зависящую от действий пользователя или состояния элемента. Т.е. при работе с уровнями, триггерами, кнопками прирост/убывание всегда используется команда Send Token |
Диалоговое окно события Send Token: | |
Token | Параметр Value определяет текущее состояние триггера (Trigger Value 1 или Trigger Value 2), поэтому при выборе источника отправляемого значения указываем именно Value элемента. Этот параметр будет выбран в диалоговом окне по умолчанию, оставляем его в исходном виде и переходим к следующей настройке |
Event for Action | Событие, при котором выбранное значение Value будет отправлено регистру (Press - при нажатии на элемент, Release - при отпускании элемента, другое для триггера не используется) |
Create a feedback channel | команда автоматического создания канала для получения статуса регистра. Канал создается на основе привязываемой к элементу команды, имеет то же имя и свойства. Создание канала обратной связи (с помощью этой опции или вручную) является обязательным при работе с триггером. В отсутствие канала, триггер не будет знать текущее состояние регистра для выбора значения, противоположного текущему. |
Feedback: In Value |
настройка, определяющая параметр элемента, на который будет влиять созданный канала чтения статуса. Для работы триггера, полученное значение должно влиять на Value (состояние) элемента, поэтому выбираем событие In Value |
Когда вышеуказанные действия выполнены, можно запустить Эмуляцию работы проекта. При наличии лицензии Эмулятор iRidium подключится к управляемому контроллеру и при каждом нажатии на настроенный в этом пункте инструкции триггер будет считывать текущее состояние управляемого Holding регистра. На основе текущего состояния регистра, полученного каналом, триггер выбирает и отправляет ему значение, противоположное текущему.
Запись значения в регистр Holding с помощью кнопок Up/Down
1. Создайте команду отправки значения в регистр Holding
команда создается в дереве устройств проекта и адаптируется для работы с выбранным типом регистра:
Name | имя команды (произвольно) |
Device ID | адрес подчиненного устройства, контроллера (Slave ID) |
Type | тип регистра, к которому обращена команда (Holding Register) |
Address | адрес управляемого Holding регистра |
Word Size | Размер слова Holding регистра. Word (16-bit) для стандартного протокола Modbus |
Content Type | последовательность записи байтов регистра. Low Endian для стандартного протокола Modbus |
2. Создайте графический элемент - кнопку прирост/убывание (Up/Down Button)
Элемент при каждом нажатии будет обращаться к управляемому регистру, читать его текущее значение и прибавив к нему указанную величину отправлять регистру в качестве новой уставки. Применяется для точного регулирования температуры или др. величин относительно текущего значения. Для работы Up/Down Button необходим канал чтения текущего состояния регистра.
Type | тип графического элемента - кнопка прирост/убывание (Up/Down Button). Применяется для точного регулирования величин относительно текущего значения. |
Feedback | тип обратной связи для элемента - Momentary. Элемент будет менять состояние при нажатии для визуальной фиксации, на вычисление прирощенного значения тип обратной связи не влияет |
Hit | восприимчивость элемента к нажатию - Active Touch. Активной для нажатия будет вся непрозрачная часть графического элемента |
Up/Down Value | величина, на которую необходимо прирастить текущее значение управляемого регистра (целое число), может быть положительной ("1") или отрицательной ("-1") |
Min/Max Value | предел приращения, величина, больше которой прирост осуществляться не должен. Для положительного значения прироста (Up/Down Value > 0) - верхний предел приращения, для отрицательного значения прироста (Up/Down Value < 0) - нижний предел приращения. |
3. Привяжите команду к графическому элементу
Привязка команды осуществляется методом Drag&Drop - перетаскивание. В процессе привязки указывается тип отправляемых данных и событие, при котором они должны быть отправлены контроллеру:
Выпадающий список действий при натаскивании команды на элемент: | |
Send Token | это команда для отправки регистру приращенного значения. Текущее состояние Up/Down Button определяется параметром Value элемента. На его основе триггер формирует приращенное значение для отправки регистру. Команду Send Token выбираем, когда элемент должен отправить не фиксированное число, а переменную, зависящую от действий пользователя или состояния элемента. Т.е. при работе с уровнями, триггерами, кнопками прирост/убывание всегда используется команда Send Token |
Диалоговое окно события Send Token: | |
Token | Параметр Value хранит текущее и формирует приращенное значение для отправки, поэтому при выборе источника отправляемого значения указываем именно Value элемента. Этот параметр будет выбран в диалоговом окне по умолчанию, оставляем его в исходном виде и переходим к следующей настройке |
Event for Action | Событие, при котором значение Value будет отправлено регистру (Press - при нажатии на элемент, Release - при отпускании элемента, другое для этого элемента не используется) |
Create a feedback channel | Команда автоматического создания канала для получения статуса регистра. Канал создается на основе привязываемой к элементу команды, имеет то же имя и свойства. Создание канала обратной связи (с помощью этой опции или вручную) является обязательным при работе с элементами Up/Down. В отсутствие канала, Up/Down Button не будет знать текущее состояние регистра для формирования и отправки приращенного значения. |
Feedback: In Value |
Настройка, определяющая параметр элемента, на который будет влиять созданный канал чтения статуса. Для работы кнопки Up/Down, полученное значение должно влиять на Value (состояние) элемента, поэтому выбираем событие In Value |
Когда вышеуказанные действия выполнены, можно запустить Эмуляцию работы проекта. При наличии лицензии Эмулятор iRidium подключится к управляемому контроллеру и при каждом нажатии на настроенный в этом пункте инструкции элемент будет считывать текущее состояние управляемого Holding регистра. На основе текущего состояния регистра, полученного каналом, кнопка Up/Down выбирает и отправляет приращенное значение регистра.
Чтение данных о состоянии регистров
В соответствии со стандартами протокола Modbus, iRidium может обратиться для получения данных к следующим типам регистров - Type:
- Coil Register - регистры флагов, один бит, чтение и запись данных
- Holding Register - регистры хранения, 16-битное слово, чтение и запись данных
- Discret Inputs - дискретные входы, один бит, только чтение данных
- Input Register - регистры ввода, 16-битное слово, только чтение данных
Для получения данных о состоянии регистров iRidium использует каналы обратной связи (Feedbacks), в которых указываются параметры регистра, статус которого необходимо получить. Каналы создаются во вкладке Feedbacks драйвера Modbus в дереве устройств проекта.
Получение данных о состоянии переменных производится драйвером на основе списка имеющихся у него каналов. Отображение полученных данных осуществляется за счет графических элементов, к которым привязываются команды. Данные, полученные от контроллера, могут отображаться в текстовом поле графического элемента или влиять на его текущее состояние.
Настройка каналов для получения данных о состоянии регистров
Как ранее упоминалось, iRidium может получать данные о состоянии 4х типов регистров: Coil Register, Holding Register, Discret Inputs, Input Register. Все эти типы регистров настраиваются в дереве устройств проекта, параметры каналов имеют вид:
Name | имя канала (произвольно) |
Device ID | адрес подчиненного устройства, контроллера (Slave ID) |
Type | тип регистра, данные от которого получаем |
Address | адрес регистра, данные от которого получаем |
Word Size | Размер слова регистра. Word (16-bit) для стандартного протокола Modbus |
Content Type | последовательность записи байтов регистра. Low Endian для стандартного протокола Modbus |
Созданные каналы могут влиять на различные параметры графических элементов - состояние, внешний вид, активность, могут отображать данные о текущем значении регистра в текстовое поле элемента.
Для привязки канала к графическому элементу используется метод Drag&Drop, в процессе привязки выбирается параметр элемента, на который будет воздействовать выбранный канал:
Наиболее часто используемые способы воздействия каналов на графические элементы:
- In Value - канал влияет на парметр Value - состояние графического элемента. При переходе регистра в любое ненулевое значение, в случае использования кнопки, графический элемент сменит свое состояние на активное (от State 1 до State 2); в случае использования уровня элемент изменит положение ползунка.
Также In Value используется для работы со сложными графическими элементами - Trigger Button, Up/Down Button и участвует в вычислении значений, которые будут отправлять эти элементы в регистр.
In Value используется при работе с шаблонами обработки и отображения входящих данных на элемент ($V, $P, $F1, ...)
- In Text - канал записывает значение, полученное от регистра в текстовое поле элемента, заменяя имеющийся в нем текст. Записывается абсолютное значение без преобразования, поэтому этот тип привязки НЕ используется при работе с шаблонами обработки и отображения входящих данных
- More... - при необходимости настраиваются более сложные способы воздействия канала на параметры графического элемента. Например, значение регистра может изменять координату или степень прозрачности элемента, делать его неактивным для нажатия или невидимым.
Изменение состояния элемента при смене значения регистра
Для изменения состояния элемента при изменении состояния регистра, необходимо привязать канал статуса регистра к графическому элемент с использованием функции In Value - т.е. создать связь для воздействия канала на параметр Value (состояние, значение) графического элемента.
Применения:
- изменение состояния кнопки (Button) или анимированной кнопки при получении ненулевого значения от регистра любого типа
- изменение положения ползунка уровня (Level) или анимированного уровня при получении значения от Holding или Inpit Register (в диапазоне 16 бит)
- работа с элементами Trigger Button и Up/Down Button, для которых наличие каналов получения статуса регистра обязательно.
Настройки графических элементов для отображения статуса регистра:
1. Кнопка, меняющая состояние при переходе регистра в ненулевое значение:
Type | тип графического элемента - кнопка с двумя состояниями (Button) |
Feedback | тип обратной связи графического элемента. Для возможности отображения полученного состояния регистра всегда выбираем Channel |
Hit | реакция элемента на нажатия пользователя. Если элемент служит только для отображения статуса переменной и не должен отправлять команд, выбираем Pass Through. Если элемент должен отправлять команды и получать данные, выбираем Active Touch. |
2. Уровень, меняющий положение ползунка при изменении значения регистра
Уровень применяется при работе с регистрами, статус которых может меняться в широком диапазоне, поэтому подходит для получения статуса Holding или Inpit Register (диапазон 16 или 32 бита).
Type | тип графического элемента - уровень (Level) |
Feedback | тип обратной связи графического элемента. Для возможности отображения полученного состояния регистра всегда выбираем Channel |
Hit | реакция элемента на нажатия пользователя. Если элемент служит только для отображения статуса переменной и не должен отправлять команд, выбираем Display Only. Если элемент должен отправлять команды и получать данные, выбираем Active. |
3. Канала обратной связи обязательно должен привязываться к элементам Trigger Button и Up/Down Button совместно с командой установки значения регистра. Команда и канал должны иметь одинаковые настройки (обращаться к одному и тому же регистру) для правильной работы этих элементов.
Отображение текущего значения регистра в текстовом поле элемента
Применения (вывод полученного из канала значения в текст возможен двумя способами):
- Отображение абсолютного значения, полученного каналом от регистра, в текстовом поле элемента
- Получение и отображение состояния любого регистра в текстовом поле элемента, когда значение должно быть предварительно преобразовано одним из шаблонов обработки и отображения входящих данных ($V, $P, $F1, ...)
Настройки графических элементов:
1. Вывести значение регистра в текстовое поле элемента без преобразования
Для ввода значения в текстовое поле (с заменой ранее внесенных туда данных) используется команда "In Text" при натаскивании канала на графический элемент. Может использоваться для любого типа графического элемента, заменяет текст во всех состояниях элемента.
Type | тип графического элемента - кнопка (Button) или любой другой элемент |
Feedback | тип обратной связи графического элемента. Тип обратной связи не влияет на вывод значения в текстовое поле элемента, поэтому можно указать любой тип |
Hit | реакция элемента на нажатия пользователя. Если элемент служит только для отображения статуса переменной и не должен отправлять команд, выбираем Pass Through. Если элемент должен отправлять команды и получать данные, выбираем Active Touch. |
2. Дисплей с шаблоном обработки и вывода значения в текст элемента
Это элемент, в текстовое поле которого введен шаблон обработки и вывода значения на графические элементы, преобразующий полученное значение регистра в нужный формат:
Шаблон |
Функция |
Шаблон |
Функция |
$P |
процента от максимального значения Уровня | $V |
целая часть полученного значения |
$L |
минимальное значение Уровня | $H |
максимальное значение Уровня |
$S |
номер выбранного состояния | $A |
значение за вычетом минимального значения Уровня |
$R |
размах Уровня (максимальное минус минимальное) | $F1-5 |
значение с плавающей запятой, 1-5 - число знаков после запятой |
$X |
текущее значение в формате HEX | $$ |
символ "доллара" |
команда (шаблон) обработки и отображения входящих данных вносится в текстовое поле графического элемента и может быть совмещен с другим текстом и символами (комментариями, единицами измерения)
Type | тип графического элемента - кнопка (Button) с одним состоянием (State 1) |
Feedback | тип обратной связи графического элемента. Работа шаблона ($V, $P, $S, ...) не зависит от Feedback, можно выбрать любой тип обратной связи в зависимости от свойств элемента, с которым используется шаблон. |
Hit | реакция элемента на нажатия пользователя. Если элемент служит только для отображения статуса переменной и не должен отправлять команд, выбираем Pass Through. Если элемент должен отправлять команды и получать данные, выбираем Active Touch. |
Особенности 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 место. Порядок задания переменных может быть произвольным, выравнивание же ставит переменные на кратные их длине адреса. Соответственно, возникают не занятые пространства памяти, которые должны учитываться пользователем: когда производится опрос прибора. Учет производится на стадии задания переменных.
Управление RGB светодиодами с помощью объекта Color Picker
правление RGB светодиодами (DMX контроллером) в осуществляется iRidium с помощью специализированного модуля, преобразующего цвет, выбранный на палитре в команды установки значения в три Holding регистра Modbus, соответствующие уставкам на красный, синий и зеленый цвета светодиодной ленты.
Отдельно отправляется значение в регистр, управляющий яркостью светодиодной ленты. В качестве Color Picker'a может использоваться палитра любого вида.
Создание графических элементов для управления RGB светодиодной лентой:
- 1. Color Picker - палитра выбора цвета
Color Picker - графический элемент типа "Joystick", в поле Image которого выбрано изображение - цветовая палитра. Джойстик определяет цвет под курсором, который нужно разложить на составляющие RGB палитры, при этом сам курсор джойстика может быть невидим.
Для управления светодиодной лентой, в настройках джойстика важно указать диапазон от 0 до 100 для осей Х и Y, настройки формируйте, как на изображении.
- 2. Элемент-дисплей для отображения цвета и управления яркостью
Кнопка-триггер с 2 состояниями (Trigger Button), которая будет включать-выключать ленту и показывать цвет под курсором Color Picker'а, если лента включена.
Формирование списка команд для управления светодиодной лентой
В дереве устройств Modbus создайте 4 адреса для управления регистрами "Type: Holding".
Команды должны быть связаны с номерами регистров, регулирующими составляющие цвета светодиодной ленты и ее яркость.
Добавление скрипта управления Color Picker в проект
Скрипт для управления Color Picker нужно скопировать в окно Script Editor редактора GUI Editor или импортировать туда как файл в формате *.js.
При создании нового скрипта, укажите его имя (не должно содержать только цифры) и вставьте приложенный код модуля управления Color Picker:
function work_pick_color(in_color_picker, in_color_resipient, in_sRed, in_sGreen, in_sBlue) { var device = IR.GetDevice("ModBus TCP"); // ModBus TCP Driver in your Project Device Tree var color = in_color_picker.PickColor; var red = (color >> 24) & 0xFF; var green = (color >> 16) & 0xFF; var blue = (color >> 8) & 0xFF; in_color_resipient.GetState(1).FillColor = color; device.Set(in_sRed, red); device.Set(in_sGreen, green); device.Set(in_sBlue, blue); } // Обработчик "DMX 1". Скопируйте этот модуль, чтобы управлять еще одним ColourPicker: IR.AddListener(IR.EVENT_ITEM_RELEASE, IR.GetItem("Page_ColorPicker").GetItem("Item Color Picker 1"), // Color Picker (Page.Item) function() { work_pick_color( IR.GetItem("Page_ColorPicker").GetItem("Item Color Picker 1"), // Color Picker (Page.Item) IR.GetItem("Page_ColorPicker").GetItem("Item Display Color 1"), // Display Colour Item (Page.Item) "R", // Red Channel "G", // Green Channel "B"); // Blue Channel } );
Загрузить файл скрипта для Color Picker
В настройках скрипта указываем (в строках, где имеются соответствующие комментарии):
- имя Modbus драйвера в дереве проекта
- Color Picker - имя страницы и элемента-палитры RGB на этой странице
- Display - имя кнопки-дисплея для отображения цвета и управления яркостью
- Red, Green, Blue - имена каналов в дереве проекта Modbus, куда должны записываться составляющие цвета в диапазоне от 0 до 255.
К графическому элементу - триггеру для управления яркостью светодиодной ленты, привязываем команду, отвечающую за регулирование яркости. Команду привязываем на событие интерфейса - "Press", активируем галочку настроек "Add a Feedback Channel" в том же диалоговом окне.
После этого модуль полностью готов к работе.
Загрузить пример реализации модуля управления RGB светодиодной лентой (Modbus)