OPC UA (Open Platform Communications, Unified Architecture) – протокол для обмена данными с ПЛК и для управления ими.
SQL (Structured Query Language) – язык программирования
для хранения и обработки информации в реляционной базе данных.
Введение
Настоящее руководство описывает настройку обмена данными по протоколам Modbus RTU и Modbus TCP для контроллеров
ОВЕН, программируемых в среде Полигон. Подразумевается, что
читатель обладает базовыми навыками работы с Полигон, поэтому
общие вопросы (например, создание и загрузка проектов) в данном документе
не рассматриваются – они подробно описаны в документах Руководство по программированию. Библиотека paCore и Быстрый старт.
Настройка обмена по протоколу Modbus в среде Полигон осуществляется с помощью функциональных блоков из библиотеки paModbus.
Примеры в документе актуальны для среды Полигон версии 1994 и для библиотеки paModbus версии 117 и выше.
Общие сведения
Основные сведения об интерфейсе RS-485
Интерфейс RS-485 подразумевает использование исключительно топологии типа «шина»
(топологии типа «звезда» и «кольцо» не описаны в стандарте).
В сети может присутствовать только одно Master-устройство, которое
отсылает запросы и принимает ответы от подчиненных Slave-устройств.
Slave-устройства не могут являться инициаторами обмена.
Число Slave-устройств в сегменте сети не должно превышать 32. Сегменты могут быть соединены повторителями (например, ОВЕН АС5), но следует учитывать, что так как опрос всех устройств
происходит последовательно, то время одного полного цикла опроса может
значительно увеличиться. Общее ограничение числа Slave-устройств в
сети для протокола Modbus – 247.
На первом и последнем устройстве в сети рекомендуется устанавливать
согласующий резистор (терминатор) с сопротивлением 120 Ом.
Для линий связи RS-485 необходимо использовать экранированный кабель
с витой парой, предназначенный для промышленного интерфейса RS-485
с волновым сопротивлением 120 Ом (например, КИПЭВ). Экран кабеля
должен быть соединен с функциональной землей только в одной точке.
Некоторые устройства имеют встроенные резисторы подтяжки интерфейса
RS-485. Информация и рекомендации по их использованию приведены в
руководстве по эксплуатации на соответствующие приборы.
Основные сведения о протоколе Modbus
Modbus – открытый коммуникационный протокол,
основанный на архитектуре Master-Slave (ведущий-ведомый). Спецификация
протокола доступна на сайте Modbus Organization.
Master (мастер, ведущее устройство) является инициатором
обмена и может считывать и записывать данные в Slave-устройства.
Slave (слэйв, подчиненное устройство) отвечает на запросы
Master-устройства, но не может самостоятельно инициировать обмен.
Существуют две основные реализации протокола:
ModbusSerial для передачи данных с использованием
последовательных интерфейсов RS-232/RS-485
Если для работы используют протокол Modbus RTU с интерфейсом RS-232/RS-485, то в сети может присутствовать только одно Master-устройство и несколько (до 247) Slave-устройств. Адрес 0 используется для широковещательной рассылки (команд записи,
которую получат все Slave-устройства).
У протокола Modbus TCP нет явного ограничения на количество
Master- и Slave-устройств. Кроме того, устройство может одновременно
выполнять функции Master и Slave.
Запрос Master-устройства к Slave-устройству содержит следующие
данные:
SlaveID (адрес Slave-устройства);
Код функции, применяемой к Slave-устройству;
Данные – адрес первого регистра и их количество (в случае
записи – также записываемые значения);
Контрольная сумма.
Ответ Slave-устройства имеет схожую структуру.
Запрос Master-устройства представляет собой обращение к одной из областей памяти Slave-устройства с помощью определенной функции.
Область памяти характеризуется типом хранящихся в ней значений (биты/регистры)
и типом доступа (только чтение/чтение и запись). Стандарт Modbus определяет
четыре области памяти.
Области данных протокола Modbus
Область данных
Обозначение
Тип данных
Тип доступа
Coils (Регистры флагов)
0x
BOOL
Чтение/запись
Discrete
Inputs (Дискретные входы)
1x
BOOL
Только чтение
Input
Registers (Регистры ввода)
3x
WORD
Только чтение
Holding
Registers (Регистры хранения)
4x
WORD
Чтение/запись
Каждая область памяти состоит из определенного (зависящего от конкретного
устройства) количества ячеек. Каждая ячейка имеет уникальный адрес.
Для конфигурируемых устройств (таких как ТРМ, ПЧВ и т. д.) производитель
предоставляет карту регистров, в которой содержится информация
об адресах и типах параметров устройства. Для программируемых устройств
пользователь формирует такую карту самостоятельно с помощью среды
разработки. Существуют устройства, в которых сочетаются оба рассмотренных
случая – у их карты регистров есть фиксированная часть, которую пользователь
может дополнить в соответствии со своей задачей (но адреса ячеек не
должны пересекаться).
Примечание
В некоторых устройствах области памяти наложены
друг на друга (например, 0x и 4x) – т. е. к одним и
тем же ячейкам памяти можно обращаться разными функциями.
Функция определяет операцию (чтение/запись) и область памяти,
в которой эта операция будет выполняться. Ниже приведен список наиболее
часто используемых функций.
Основные функции протокола Modbus
Код функции
Имя функции
Команда
1 (0x01)
Read Coil
Status
Чтение значений
из регистров флагов
2 (0x02)
Read Discrete
Inputs
Чтение значений
из дискретных входов
3 (0x03)
Read Holding
Registers
Чтение значений
из регистров хранения
4 (0x04)
Read Input
Registers
Чтение значений
из регистров ввода
5 (0x05)
Write Single
Coil
Запись значения
в один регистр флага
6 (0x06)
Write Single
Register
Запись значения
в один регистр хранения
15 (0x0F)
Write Multiple
Coils
Запись значений
в несколько регистров флагов
16 (0x10)
Write Multiple
Registers
Запись значений
в несколько регистров хранения
Примечание
Нельзя смешивать понятия области памяти и функции.
У начинающих пользователей часто возникают проблемы при работе с Input и Holding регистрами, поскольку область памяти Holding регистров имеет обозначение 4x, а функция чтения Holding регистров – 0x03 (может интуитивно показаться,
что идентификатор области памяти и код функции должны совпадать –
но на практике это не так).
Запрос к Slave-устройству может быть одиночным или групповым.
При одиночном запросе Master-устройство считывает каждый из параметров
Slave-устройства отдельной командой. При групповом опросе Master-устройство
считывает одной командой сразу несколько параметров, адреса которых
в карте регистров расположены строго последовательно и не имеют разрывов.
Групповой опрос позволяет уменьшить трафик в сети и время, затрачиваемое
на опрос устройства, но в некоторых случаях его нельзя применять (или
можно, но с ограничениями) из-за индивидуальных особенностей устройства.
Примечание
Согласно стандарту Modbus объем данных кадра ответа
не может превышать 125 регистров. Поэтому групповой запрос
запрашивает ограниченное количество регистров. Для 4-байтовых переменных
типа float количество аргументов не должно превышать 63.
Функциональные блоки настройки интерфейсов
Функциональные блоки настройки COM-портов
В данном разделе описаны блоки настройки COM-портов контроллеров
ОВЕН ПЛК210 из библиотеки paOwenIO.
Порт RS-485 (210-RS485)
Блок 210-RS485 предназначен для работы с портами
ПЛК210 стандарта RS-485.
Назначение входов и выходов 210-RS485
Элемент
Описание
Входы (константные)
port
Порт
spd
Скорость в бодах – 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200
par
Контроль четности:
0 – нет;
1 – нечетный;
3 – четный
stb
Количество стоповых бит – 7 или 8
dtb
Количество бит данных – 1 или 2
term
Включение/выключение терминальных резисторов
Выходы
cnc
Связь с блоком протокола
stat
Статус:
1 - соединение установлено;
-1 -
не удалось открыть указанный интерфейс;
-2 - отсутствует
соединение;
-6 - ошибка настройки интерфейса
rcnt
Количество полученных байт
wcnt
Количество отправленных байт
diag
Диагностический – счетчик разности
между количеством ошибок и принятыми (не может быть меньше нуля)
Порт RS-232 (210-RS232)
Блок 210-RS232 предназначен для работы с портом ПЛК210
стандарта RS-232.
Назначение входов и выходов 210-RS232
Элемент
Описание
Входы (константные)
spd
Скорость в бодах – 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200
par
Контроль четности:
0 – нет;
1 – нечетный;
3 – четный
stb
Количество стоповых бит – 7 или 8
dtb
Количество бит данных – 1 или 2
Выходы
cnc
Связь с блоком протокола
stat
Статус:
1 - соединение установлено;
-1 -
не удалось открыть указанный интерфейс;
-2 - отсутствует
соединение
rcnt
Количество полученных байт
wcnt
Количество отправленных байт
diag
Диагностический – счетчик разности между количеством ошибок и принятыми
(не может быть меньше нуля)
Функциональные блоки настройки TCP-соединений
В данном разделе описаны блоки настройки TCP-соединений ПЛК210
из библиотеки paCore.
TCP/IP-сервер (TcpIpSrA)
Блок TcpIpSrA представляет собой TCP/IP-сервер для
обеспечения работы протоколов (например, Modbus TCP Slave). Сервер поддерживает одновременно не более 20 подключений.
Назначение входов и выходов TcpIpSrA
Элемент
Описание
Входы (константные)
prt
Локальный порт
lip
Локальный
IP адрес
sdr
Сетевой стек, для ПЛК ОВЕН "/"
wait
Время до закрытия пустого канала, мс. При установке 0 – никогда
Выходы
cnc
Связь
с блоком протокола
stat
Статус:
0 – есть подключения;
>0 – нет подключений
При настройке блока TcpIpSrA удобно использовать
технологию SQL-запросов. Это позволяет изменять IP-адрес и порт в
одном месте и использовать эти значения в разных частях проекта.
Запрос IP-адреса (prop_ip): "<sql>SELECT value FROM blocks_prop WHERE indx=:module AND type="prop_ip"</sql>"
Запрос пользовательского свойства Пользовательское свойство
00 (prop_0):<sql> SELECT value FROM blocks_prop WHERE indx=:module AND type="prop_0"</sql>
TCP/IP-клиент (TcpIpClA)
Блок TcpIpClA представляет собой TCP/IP-клиент для
обеспечения работы протоколов (например, Modbus TCP Master).
Так как работа блока занимает значительное время, может быть размещен
только в Фоне.
Назначение входов и выходов TcpIpClA
Элемент
Описание
Входы (константные)
lprt
Локальный порт
lip
Локальный
IP адрес
sdr
Сетевой
стек, для ПЛК ОВЕН "/"
rprt
Удаленный
порт
ip
IP адрес
удаленного сервера
Выходы
cnc
Связь с блоком протокола
stat
Статус:
0 – есть
связь с TCP/IP-сервером;
>0 – нет связи
При настройке блока TcpIpClA удобно использовать
технологию SQL-запросов. Это позволяет изменять IP-адреса и порты
в одном месте, и использовать эти значения в разных частях проекта.
Запрос IP-адреса (prop_ip):
"<sql>SELECT value FROM blocks_prop WHERE indx=:module AND type="prop_ip"</sql>"
Запрос пользовательского свойства Пользовательскоесвойство 00 (prop_0):
<sql> SELECT value FROM blocks_prop WHERE indx=:module AND type="prop_0"</sql>
Библиотека paModbus
Библиотека paModbus содержит функциональные блоки
для обмена по протоколам Modbus – блоки ModbusMaster и ModbusSlave, а также блоки команд чтения
и записи.
Для добавления библиотеки paModbus в проект следует:
Перейти в меню Окна/Проекты. В появившемся окне
отобразится текущий проект и добавленные библиотеки.
Нажать кнопку Открыть и перейти в папку с файлами
библиотеки, которую необходимо добавить. Затем в выпадающем списке
выбрать тип файла Библиотека Полигон 2 (*.ll2)
В окне появится файл библиотеки с расширением .ll2. Необходимо выбрать его и нажать Открыть.
Добавленная библиотека
отобразится в окне Проекты.
Modbus RTU
Блок Modbus RTU Master
Блок ModbusRTUMaster обеспечивает работу Master-устройства
по протоколу ModbusRTU.
Так как работа блока занимает значительное время, его можно разместить
только в Фоне.
>0 – нет связи или Slave не
отвечает (в младшем байте: 1 –Slave не отвечает, 2 –неверная
контрольная сумма)
Команды, подключенные к блоку Master, опрашиваются последовательно
с периодичностью tmp. Выключенные команды (вход enb блока
команды, равный 0) пропускаются.
Внимание
Для правильной инициализации необходимо разместить
в программе блок Master после блоков записи (см. свойства блоков Порядок).
Чтение осуществляется циклически, запись – по изменению.
Блок Modbus RTU Slave
Блок ModbusRTUSlaveобеспечивает работу Slave-устройства
по протоколу ModbusRTU.
Так как работа блока занимает значительное время, его можно разместить
только в Фоне.
Slave обрабатывает команды, полученные от Master, с периодичностью tmp. Если при обработке команды не обнаружен соответствующий
блок команды, то Slave посылает мастеру соответствующую ошибку:
0x80 | команда – нет блока с соответствующим
кодом команды, код команды – в блоке не определен запрашиваемый адрес
(например, при опросе Holding Register команда 0х03, тогда
ошибка: 0x80 | 0x03 = 0x83);
0x23 – неверная контрольная сумма.
Modbus TCP
Блок Modbus TCP Master
Блок Modbus TCP Master обеспечивает работу Master-устройства
по протоколу ModbusTCP.
Так как работа блока занимает значительное время, его можно разместить
только в Фоне.
Команды, подключенные к блоку Master, опрашиваются последовательно
с периодичностью tmp. Выключенные команды (вход enb блока
команды, равный 0) пропускаются.
Чтение осуществляется циклически, запись – по изменению.
Блок Modbus TCP Slave
Блок ModbusTCPSlaveобеспечивает работу Slave-устройства
по протоколу ModbusTCP.
Так как работа блока занимает значительное время, его можно разместить
только в Фоне.
Slave обрабатывает команды, полученные от Master, с периодичностью tmp. Если при обработке команды не обнаружен соответствующий
блок команды, то Slave посылает мастеру одну из ошибок:
1 – нет блока с соответствующим кодом команды;
2 – в блоке не определен запрашиваемый адрес.
Команды чтения
В данном разделе приведено описание блоков библиотеки paModbus, которые реализуют команды протокола Modbus на чтение
параметров.
Для инициализации следует подключить вход itr к выходу блока
Master и задать верный адрес устройства.
Команда чтения вещественного числа 0x03/0x04 (ModbusFltIn)
Блок ModbusFltIn отправляет команды Modbus на чтение вещественных чисел из регистров хранения
(HoldingRegisters) или регистров ввода
(InputRegisters). Каждое число занимает
два регистра.
При подключении к блоку Master блок ModbusFltIn выполняет
команды 0x04 или 0x03, при подключении к блоку Slave – 0x10 (для регистров хранения).
Назначение входов и выходов
Элемент
Описание
Входы
itr
Связь c блоком Modbus Master/Modbus Slave
enb
Разрешение
работы (при подключении к ModbusMaster)
slv
Адрес
ведомого устройства, с которого считывают данные
adr0
Адрес,
с которого начинается чтение
hold/in
Выбор регистров для чтения – регистры хранения/регистры ввода (0/1)
Для инициализации следует подключить вход itr к выходу блока
Master или Slave и задать верный адрес устройства.
Команда чтения результатов измерения аналогового входа (OwenFltIn)
Блок OwenFltIn отправляет команды Modbus на чтение вещественных чисел из регистров хранения (HoldingRegisters) или регистров ввода (InputRegisters) модулей аналогового ввода ОВЕН МВ210-101.
При подключении к блоку Master блок OwenFltIn выполняет
команды 0x04 или 0x03.
Назначение входов и выходов
Элемент
Описание
Входы
itr
Связь c блоком Modbus Master
enb
Разрешение
работы
slv
Адрес
ведомого устройства, с которого считывают данные
adr0
Адрес,
с которого начинается чтение
hold/in
Выбор регистров для чтения – регистры хранения/регистры ввода
(0/1)
Для инициализации следует подключить выход bo к входу блока
Master или Slave и задать верный адрес устройства.
Буфер чтения/записи уставок с плавающей точкой (BufSupFltEx)
Блок BufSupFltEx представляет собой двунаправленный буфер
данных интерфейса. Блок сохраняет данные в бинарном файле на диске
контроллера (так же, как блок SaverEx из библиотеки paCore).
Отличие блока BufSupFltEx от блока BufSupEx из библиотеки paCore заключается в том, что он
позволяет записывать по протоколу Modbus уставки в формате с плавающей
точкой. Пример работы с блоком приведен в разделе.
Поскольку операции файлового ввода/вывода занимают значительное
время, данный блок следует размещать только в Фоне.
Назначение входов и выходов BufSupFlt
Элемент
Описание
Входы
inter
Cвязь от интерфейса, к которому принадлежит данный буфер
group
Номер группы (константный)
fnm
Абсолютный
путь и имя файла (может быть пустым – задается автоматически), расширение
игнорируется. При сохранении данных на внешнем накопителе следует
использовать путь, указанный на выходе блока 210-SD-USBиз библиотекиpaOwenIO (константный)
mask
Не используется
rst
Сброс
ошибок записи
wr
Запись
на диск
Циклические входы
dan
Значение, которое
записывается в буфер при czap = 1
czap
Запись
значения dan
typ
Тип параметра: AI, AO – вещественное значение (константный)
adr
Адрес
параметра (константный)
ini
Значение
для инициализации (константный)
min
Минимум,
если принятое значение меньше min, то оно игнорируется
max
Максимум,
если принятое значение больше max, то оно игнорируется
Выходы
pkt
Подключение
к блокам OpcUAClient, UABufSups из библиотеки paOpcUA
next
Имя следующего
файла
enb
Запись
разрешена
sts
Статус:
0 – после сброса;
1 – записан;
2 – прочитан;
<0 – ошибка
good
Количество
удачных записей
bad
Количество
ошибок записи
rej
Количество
отклоненных записей
Циклические выходы
dan
Значение
параметра, полученное по интерфейсу или на вход dan (после
проверки на min и max)
chn
Признак
изменения, выставляется в 1 на один цикл выполнения программы,
если значение dan изменилось
zap
Признак записи,
выставляется в 1 на один цикл выполнения программы, если значение
с входа dan было записано
Номер группы group используется в качестве Slave ID при
подключении к блоку интерфейса Modbus Slave.
Имя файла и путь к нему задается на входе fnm. Имя может
быть пустым, тогда имя файла будет выбрано автоматически по индексу
блока и файл сохраняется в рабочую директорию контроллера.
Адрес переменной adr зависит от интерфейса, к которому подключен
буфер, например, адрес регистра Modbus.
Если файл существует на диске, выходы инициализируются сохраненными
значениями. Если файла не существует – выходы инициализируются значениями
инициализации ini.
Запись в файл производится при изменении значений на входах dan или по интерфейсу. Если файла на диске не существует и выходы dan приняли значения ini, то можно записать их на диск
принудительно с помощью команды wr.
Для сохранности данных одновременно на диске находятся два файла,
соответствующие одному архиву. Если контроллер будет перезагружен
в момент записи на диск, данные не пропадут, а будут доступны предыдущие
значения переменных, записанные в другом файле. При чтении содержимое
файла контролируется с помощью контрольной суммы, и только при ее
корректности выдается на выходы (поэтому, например, при добавлении
новой переменной, значения, записанные в файл, сбросятся на значения ini).
Если при записи файла на диск происходит однократная ошибка, блок
пытается переименовать текущий файл и снова произвести запись. Если
повторная запись оказывается удачной, то продолжается работа в обычном
режиме, а выход bad инкрементируется. Необходимо принять меры
по диагностике или замене носителя, поскольку сбои при записи могут
быть следствием скорого выхода его из строя.
Файл, на котором произошел сбой, остается на диске под тем же именем
с добавленным к нему суффиксом, равным метке времени сбоя (в мс от
1 января 1970 г). Удалять его не следует, чтобы повторно не использовать
потенциально сбойный сектор. Если происходит повторный сбой записи,
то блок блокируется (выход enb = 0) и больше не производит
попыток переименований файлов и записи до тех пор, пока ошибки не
будут сброшены фронтом на входе rst.
Внимание
При изменении числа входов блока BufSupFltEx файлы на диске перезаписываются.
Диагностика и управление обменом
Практически у каждого блока, который используют для обмена по протоколу
Modbus, есть выход статуса работы для диагностики обмена.
Блоки Modbus RTU Slave, Modbus TCP Slave, Modbus RTU Master и Modbus TCP Master имеют вход enbl для разрешения работы блока. Если задать
на входе значение:
1, то блок реализует протокол обмена;
0 – блок не работает, в выходе статуса sts устанавливается
0.
Блоки чтения/записи имеют входы enb для разрешения работы
блоков. Вход enb не используется при подключении к блокам Modbus RTU/TCP Slave. Если задать на входе
значение:
1, то блок читает/записывает регистры подключенного
устройства;
0 – блок не работает, в выходе статуса st при
этом устанавливается 0.
Методика настройки обмена по протоколу Modbus
Общая методика конфигурирования интерфейсов
Настройка обмена по протоколу Modbus в Полигон состоит
из следующих действий:
Сначала необходимо выбрать интерфейс для обмена – COM-порт или
Ethernet. Для COM-порта нужно выбрать и настроить блок COM-порта. Для Ethernet нужно добавить и настроить TCP/IP-сервер или TCP/IP-клиент.
Затем необходимо выбрать режим работы интерфейса –Master или Slave,
добавить соответствующий блок протокола и соединить с блоком COM-порта/TCP-соединения.
Если интерфейс работает в режиме Master, то следует добавить блоки
команд для опроса подчиненных устройств, указать их адреса и адреса
опрашиваемых/записываемых регистров.
Если интерфейс работает в режиме Slave, следует добавить блоки
поддерживаемых команд и адреса выделяемых регистров.
Настройка ПЛК в режиме Modbus RTU Master
Для настройки ПЛК в режиме ModbusRTUMaster следует выполнить
следующие действия:
Создать новую Программу в проекте в месте работы Фон (блок Modbus RTU Master рекомендуется
размещать в фоне). В свойствах созданной программы задать Имя – Modbus (или любое другое).
Создать внутри программы Страницу. Добавить свойство Комментарии и задать ModbusRTUMaster (или любой другой).
Создать на странице блок настройки COM-порта из
библиотеки paOwenIO. Задать номер используемого COM-порта
(для 210-RS485), задать
сетевые настройки интерфейса.
Создать на странице блок Modbus RTU Master из библиотеки paModbus. Задать настройки Master-устройства.
Соединить выход блока COM-порта cnc с соответствующим
входом блока ModbusRTUMaster.
Создать на странице блоки команд на чтение данных из Slave-устройств.
Задать адреса Slave-устройств. Задать адреса опрашиваемых регистров.
Соединить выходы блока ModbusRTUMasteritr с соответствующими
входами блоков команд чтения регистров.
Если требуется, можно соединить выходы o блоков чтения
с входами других блоков в проекте.
Создать блоки команд на запись данных в Slave-устройства. Задать
адреса Slave-устройств. Задать адреса записываемых регистров.
Создать у блока ModbusRTUMaster входы типа bfo количеством, соответствующим количеству
добавленных команд на запись. Затем соединить выходы блоков записи
с добавленными входами boблокаModbusRTUMaster.
Если требуется, можно соединить входы in блоков записи
с выходами других блоков в проекте.
Задать порядок выполнения блоков По потоку данных.
Таким образом, получится следующий вид страницы ModbusRTUMaster:
Пример настройки ПЛК в режиме Modbus RTU Master для опроса модулей
Мх110 приведен в разделе.
Настройка ПЛК в режиме Modbus RTU Slave
Для настройки ПЛК в режиме ModbusRTUSlave следует:
Создать новую Программу в проекте в месте работы Фон (блок Modbus RTU Slave рекомендуется
размещать в фоне). В свойствах созданной программы задать Имя – Modbus (или любое другое).
Создать внутри программы Страницу. Добавить свойство Комментарии и задать ModbusRTUSlave (или любой другой).
Создать на странице блок настройки COM-порта из
библиотеки paOwenIO. Задать номер используемого COM-порта
(для 210-RS485), задать
сетевые настройки интерфейса.
Создать на странице блок Modbus RTU Slave из библиотеки paModbus. Задать настройки Slave-устройства.
Соединить выход блока COM-порта cnc с соответствующим
входом блока ModbusRTUSlave.
Создать на странице блоки команд на чтение/запись данных Slave-устройства. Задать адрес Slave-устройства. Задать адреса
выделяемых регистров. Если необходимо и записывать, и считывать один
и тот же регистр, то необходимо соединить выход блока записи со сходом
блока чтения.
Соединить выходы блока ModbusRTUSlaveitr с соответствующими
входами блоков команд записи регистров.
Если требуется, можно соединить выходы o блоков записи
с входами других блоков в проекте.
Создать у блока ModbusRTUSlaveвходы типа bfo количеством, соответствующим количеству добавленных команд
на чтение. Затем соединить выходы блоков чтения с добавленными входами bo блокаModbusRTUSlave.
При необходимости соединить входы in блоков чтения с
выходами других блоков в проекте.
Задать порядок выполнения блоков По потоку данных.
Таким образом, получится следующий вид страницы ModbusRTUSlave:
Пример настройки ПЛК в режиме Modbus RTU Slave для опроса Owen OPC Server приведен в разделе.
Настройка ПЛК в режиме Modbus TCP Master
Для настройки ПЛК в режиме ModbusTCPMaster следует:
Создать новую Программу в проекте в месте работы Фон (блоки TcpIpClA и Modbus TCP Master рекомендуется размещать в фоне). В свойствах созданной программы
задать Имя – Modbus (или любое другое).
Создать внутри программы Страницу. Добавить свойство Комментарии и задать ModbusTCPMaster (или любой другой).
Создать на странице блок TCP/IP-клиента TcpIpClA из
библиотеки paCore. Задать локальные порт и IP адрес
TCP-клиента и удаленные порт и адрес TCP-сервера.
При настройке
блока TcpIpClA удобно использовать некоторые свойства
модуля. Для этого можно использовать технологию SQL-запросов. Это
позволяет изменять IP адреса и порты в одном месте, и использовать
эти значения в разных частях проекта.
Запрос IP адреса (prop_ip):
"<sql>SELECT value FROM blocks_prop WHERE indx=:module AND type="prop_ip"</sql>"
Запрос пользовательского свойства Пользовательскоесвойство 00 (prop_0):
<sql> SELECT value FROM blocks_prop WHERE indx=:module AND type="prop_0"</sql>
Для каждого опрашиваемого прибора необходимо добавлять свой блок
TCP/IP-клиента.
Создать на странице блок Modbus TCP Master из библиотеки paModbus. Задать настройки Master-устройства.
Соединить выход блока TcpIpClAcnc с соответствующим
входом блока ModbusTCPMaster.
Создать на странице блоки команд на чтение данных из Slave-устройства.
Задать ID Slave-устройства. Задать адреса опрашиваемых регистров.
Соединить выходы блока ModbusTCPMasteritr с соответствующими
входами блоков команд чтения регистров.
Если требуется, можно соединить выходы o блоков чтения
с входами других блоков в проекте.
Создать блоки команд на запись данных в Slave-устройства. Задать
ID Slave-устройства. Задать адреса записываемых регистров.
Создать у блока ModbusTCPMaster входы типа bfo количеством, соответствующим
количеству добавленных команд на запись. Затем соединить выходы блоков
записи с добавленными входами bo блока ModbusTCPMaster.
При необходимости соединить входы in блоков записи с
выходами других блоков в проекте.
Задать порядок выполнения блоков По потоку данных.
Таким образом, получится следующий вид страницы Modbus TCP Master:
Пример настройки ПЛК в режиме Modbus TCP Master для опроса модулей
Мх210 приведен в разделе.
Настройка ПЛК в режиме Modbus TCP Slave
Для настройки ПЛК в режиме ModbusTCPSlave следует выполнить
следующие действия:
Создать новую Программу в проекте в месте работы Фон (блоки TcpIpSrA и Modbus TCP Slave рекомендуется размещать в фоне). В свойствах созданной программы
задать Имя – Modbus (или любое другое).
Создать внутри программы Страницу. Добавить свойство Комментарии и задать ModbusTCPSlave (или любой другой).
Создать на странице блок TCP/IP-сервера TcpIpSrA из
библиотеки paCore. Задать локальные порт и IP-адрес
TCP-сервера.
К блоку TCP-сервера можно подключить до 20 клиентов.
При настройке
блока TcpIpSrA удобно использовать некоторые
свойства модуля. Для этого можно использовать технологию SQL-запросов.
Это позволяет изменять IP адрес и порт в одном месте, и использовать
эти значения в разных частях проекта.
Запрос IP адреса (prop_ip):
"<sql>SELECT value FROM blocks_prop WHERE indx=:module AND type="prop_ip"</sql>"
Запрос пользовательского свойства Пользовательскоесвойство 00 (prop_0):
<sql> SELECT value FROM blocks_prop WHERE indx=:module AND type="prop_0"</sql>
Создать на странице блок Modbus TCP Slave из библиотеки paModbus. Задать настройки Slave-устройства.
Соединить выход блока TcpIpSrA cnc с соответствующим
входом блока ModbusTCPSlave.
Создать на странице блоки команд на чтение/запись данных Slave-устройства. Задать Slave ID-устройства. Задать адреса
выделяемых регистров. Если необходимо и записывать, и считывать один
и тот же регистр, то необходимо соединить выход блока записи с сходом
блока чтения.
Соединить выходы блока ModbusTCPSlaveitr с соответствующими
входами блоков команд записи регистров.
Если требуется, можно соединить выходы o блоков записи
с входами других блоков в проекте.
Создать у блока ModbusTCPSlave входы типа bfo количеством, соответствующим
количеству добавленных команд на чтение. Затем соединить выходы блоков
чтения с добавленными входами bo блока ModbusTCPSlave.
Если требуется, можно соединить входы in блоков чтения
с выходами других блоков в проекте.
Задать порядок выполнения блоков По потоку данных.
Таким образом, получится следующий вид страницы ModbusTCPSlave:
Пример настройки ПЛК в режиме Modbus TCP Slave для опроса Owen OPC Server приведен в разделе.
Запись уставок по протоколу Modbus
Запись целочисленных уставок по протоколу Modbus (BufSupEx)
Для записи уставок по протоколу Modbus используются блоки BufSupEx из библиотеки paCore.
Мастер в сети Modbus может читать и записывать данные на диск.
Для чтения блок BufSupEx реализует функцию 0х03, для записи – 0х06 и 0х10.
Вход group определяет Slave ID устройства (ID = 1 соответствует значение входа 0x100).
Входы dan используются для записи уставок из программы контроллера.
Для того, чтобы значение записалось на диск из программы, и его прочитал
мастер сети Modbus, следует также подать импульс на соответствующий
вход czap.
Входы typ определяют тип данных dan, при работе по
Modbus могут принимать только значения II, IO (16-ти
битный регистр), так как Modbus работает с целочисленными регистрами.
Про сохранение уставок с плавающей точкой по протоколу Modbus можно
подробнее прочитать в разделе.
Входы min и max задают минимальное и максимальное
возможное значение dan. Если программа или мастер сети изменяет
значение, то оно проверяется на условие соответствия этому диапазону.
Выходы dan отображают текущие значения уставок, сохраненные
на диске.
Параметры на диске сохраняются в бинарных файлах с расширениями .da1 и .da2.
Внимание
При изменении числа входов блока BufSupEx файлы на диске перезаписываются.
Мастер в сети Modbus может читать и записывать данные на диск.
Для чтения блок BufSupFltEx реализует функцию 0х03, для записи – 0х10.
Вход group определяет Slave ID устройства (ID = 1 соответствует значение входа 0x100).
Входы dan используются для записи уставок из программы контроллера.
Для того, чтобы значение записалось на диск из программы, и его прочитал
мастер сети Modbus, следует также подать импульс на соответствующий
вход czap.
Входы typ определяют тип данных dan, могут принимать
только значения AI, AO (вещественное число).
Входы adr определяют адреса выделяемых регистров Modbus.
Для опроса каждого значения dan выделяется два регистра Modbus.
Входы min и max задают минимальное и максимальное
возможное значение dan. Если программа или мастер сети изменяет
значение, то оно проверяется на условие соответствия этому диапазону.
Выходы dan отображают текущие значения уставок, сохраненные
на диске.
Параметры на диске сохраняются в бинарных файлах с расширениями .da1 и .da2.
Внимание
При изменении числа входов блока BufSupFltEx файлы на диске перезаписываются.
В качестве примера будет рассмотрена настройка обмена с модулями Mx110 (МВ110-8А, МВ110-16Д и МУ110-8Р).
Реализуемый алгоритм: если значение первого аналогового
входа модуля МВ110-8А превышает 30 и при этом первый дискретный вход
модуля МВ110-16Д замкнут, то первый дискретный выход МУ110-8Р замыкается
с задержкой 3 секунды. Во всех остальных случаях дискретный выход
МУ110-8Р разомкнут.
Пример создан в среде Полигон и подразумевает запуск на ПЛК210 с прошивкой 3.х.
Если требуется запустить проект на другом устройстве, следует изменить
свойства ОС и Тип процессорной платы в
окне Свойства модуля MB_RTU_master_Mx110 на необходимые.
Пример доступен для скачивания по ссылке. Пароль для доступа к отладчику – 1.
Сетевые параметры устройств в примере
Параметр
МВ110-16Д
МВ110-8А
МУ110-8Р
COM-порт
ПЛК, к которому подключен модуль
A1B1
Адрес модуля
1
16
17
Скорость
обмена
9600
Количество
бит данных
8
Контроль
четности
Нет
Количество
стоп-бит
1
Регистры модулей в примере
Модуль
Номер регистра
DEC
Тип в устройстве
Функция
Modbus
Описание
МВ110-8А
4, 5
FLOAT 32
0x03
Значение температуры со входа 1
МВ110-16Д
51
UINT 16
0x03
Битовая маска входов
МУ110-8Р
50
UINT 16
0x10
Битовая маска выходов
Для настройки обмена следует:
Настроить модули Mx110 с помощью программы ОВЕН Конфигуратор/Конфигуратор
М110 в соответствии с таблицей. Подключить модули к контроллеру в соответствии
с рисунком.
Создать новый проект Полигон (в примере — файл с именем MB_RTU_master_Mx110). Добавить в проект библиотеку paModbus.
Добавить в место работы Фон программу с именем Modbus_RTU_Master.
Внутри программы добавить четыре Страницы, в
свойстве Комментарии которых указать соответственно COM-порт, МВ110-8А, МВ110-16Д и МУ110-8Р.
Внутри страницы COM-порт создать блок 210-RS485 из библиотеки paOwenIO. На входах блока задать значения
в соответствии с таблицей.
Далее создать блок Modbus RTU Master. Соединить
вход с соответствующим выходом блока 210-RS485.
Внутри страницы МВ110-8А создать блок чтения значений
с плавающей запятой ModbusFltIn. На входах блока задать значения
в соответствии с таблицамии.
Внутри страницы МВ110-16Д создать блок для чтения значений
с дискретных входов ModbusRegIn. На входах блока задать
значения таблицамии.
Создать блок выбора 16 битов из регистра FromReg16 из библиотеки paCore и соединить выход
блока ModbusRegIno0 с входом reg блока FromReg8. Добавить к первому выходу блока FromReg8 комментарий – Вход МВ110-16Д.
Поставить на странице порядкиПо потоку данных.
Внутри страницы МУ110-8Р создать блок для записи значений
на дискретные выходы ModbusRegsOut. На входах блока
задать значения в соответствии с таблицамии.
Создать блок объединения 8 битов в регистр ToReg8 из библиотеки paCore и соединить вход
блока ModbusRegsOutin0 с входом reg блока ToReg8. Добавить к первому входу блока ToReg8 комментарий – Выход МУ110-8Р.
Поставить на странице порядкиПо потоку данных.
Соединить выход блока ModbusRTUMasteritr с соответствующими входами блоков
чтения на страницах МВ110-8А и МВ110-16Д.
Создать вход у блока ModbusRTUMasterbo0, соединить его с соответствующим
выходом блока записи на странице МУ110-8Р.
Создать в месте работы Таймер программу с названием Mx110.
Внутри программы создать страницы с комментариями Значения
с модулей и Обработка значений.
На странице Значения с модулей создать блоки TransBit и TransFlt из библиотеки paCore.
Соединить входы блоков со страницы Значения с модулей с выходами блоков со страниц МВ110-8А и МВ110-16Д,
как показано на рисунках ниже.
Соединить выход блока со страницы Значения с модулей с входами блоков со страницы МУ110-8Р, как показано на рисунках
ниже.
На странице Обработка значений создать блоки Cmpr, ANDиDelayOn из библиотеки paCore. Соединить их и настроить
в соответствии с рисунком ниже.
Соединить входы блоков Cmpr и AND с выходами блоков со страницы Значения с модулей, как показано
на рисунках ниже.
Соединить выход блока DelayOn с входом блока
со страницы Значения с модулей, как показано на рисунках ниже.
Для наладки работы
собранной системы в примере используется окно представления График. Для настройки графика необходимо сделать следующее.
Создать в модуле Раздел с именем График.
Добавить в раздел График выходы блоков TransBit и TransFlt – Температура, Вход
МВ110-16Д и Выход МУ110-8Р. На странице Значения с модулей данные выходы должны подсветиться желтым.
Открыть окно представления График и перетащить
созданный раздел в верхнее поле окна.
Запустить проект на контроллере, запустить отладчик и открыть
график. Корректная работа системы показана на рисунке ниже.
ПЛК210 (Modbus RTU Slave) и Owen OPC Server
В качестве примера будет рассмотрена настройка обмена с Owen OPC Server, который будет использоваться
в режиме ModbusRTUMaster.
Пример создан в среде Полигон и подразумевает запуск на ПЛК210 с прошивкой 3.х.
Если требуется запустить проект на другом устройстве, следует изменить
свойства ОС и Тип процессорной платы в
окне Свойства модуля MB_RTU_slave_Owen_OPC_server на необходимые.
Пример доступен для скачивания по ссылке. Пароль для доступа к отладчику – 1.
Сетевые параметры устройств в примере
Параметр
ПЛК210
Owen OPC
Server
Режим работы
Slave
Master
COM-порт
A2B2
COM13
Slave ID
1
-
Скорость
обмена
115200
Количество
бит данных
8
Контроль
четности
Нет
Количество
стоп-бит
1
Регистры/флаги ПЛК в примере
Адрес регистра/флага
Тип в устройстве
Область
памяти
0
WORD
Holding Registers
0
BOOL
Coils
1, 2
REAL
Holding Registers
Для настройки обмена следует:
Подключить контроллер и ПК в соответствии с рисунком.
Создать новый проект Полигон (в примере с именем MB_RTU_slave_Owen_OPC_server). Добавить в проект библиотеку paModbus.
Добавить в место работы Фон программу с именем Modbus_RTU_Slave.
Внутри программы добавить две Страницы, в свойстве Комментарии которых указать соответственно ModbusRTUSlave и Регистры Modbus.
Внутри страницы ModbusRTUSlave создать блок 210-RS485 из библиотеки paOwenIO. На входах блока задать значения в соответствии с таблицей.
Далее создать блок Modbus RTU Slave. Соединить вход cnc с соответствующим выходом блока 210-RS485.
Затем создать блоки записи регистров в ПЛК (в соответствии
с таблицей). Соединить входы блоков itr с советствующим выходом блока ModbusRTUSlave.
Создать блоки чтения регистров из ПЛК (в соответствии
с таблицей). Создать три входа bo у блока ModbusRTUSlave. Соединить
их с соответствующими выходами блоков чтения.
Для того, чтобы одновременно читать и записывать одни и те
же значения мастером сети, следует соединить выходы блоков записи o со входами блоков чтения in. Для удобства в примере
используются скрытые связи.
Для создания скрытой связи следует
в свойствах выхода o добавить свойства Полный алиас и Глобальная константа. В свойстве Полный
алиас задать имя новой константы.
Повторить те же действия
для всех блоков записи на странице.
У соответствующих входов блоков чтения in правой кнопкой
мыши задать созданные глобальные константы.
Поставить на странице порядкиПо потоку данных.
Таким образом, вид страницы ModbusRTUSlave примет вид как на рисунке ниже.
Для удобства можно вынести значения созданных регистров ПЛК
на отдельную страницу Регистры Modbus.
Для этого
следует на странице Регистры Modbus создать блоки TransBit, TransInt и TransFlt из библиотеки paCore.
На входы созданных блоков l задать созданные ранее константы. Выходы блоков o при
необходимости соединить с другими блоками в проекте.
Нажать правой кнопкой мыши на компонент Сервер и добавить узел.
В свойствах добавленного узла задать протокол ModbusRTUи настройки интерфейса
в соответствии с таблицей.
Добавить в узел Устройство.
Задать в устройстве свойства в соответствии с таблицей.
Добавить в устройстве три Тега.
Задать созданным тегам свойства в соответствии с таблицей.
Загрузить и открыть программу в ПЛК, запустить отладчик. Запустить
опрос Owen OPC Server.
Корректный обмен данными показан на рисунках ниже.
ПЛК210 (Modbus TCP Master) и модули Мх210
В качестве примера будет рассмотрена настройка обмена с модулями Mx210 (МВ210-101 и МК210-301).
Реализуемый алгоритм: если значение первого аналогового
входа модуля МВ210-101 превышает 30 градусов, то на первом выходе
модуля МК210-301 включается ШИМ-генератор. В любом другом случае выход
находится в режиме переключения логического сигнала.
Первый выход МК210-301 соединяют с первым входом для отслеживания
поступающих сигналов.
Пример создан в среде Полигон и подразумевает запуск на ПЛК210 с прошивкой 3.х.
Если требуется запустить проект на другом устройстве, следует изменить
свойства ОС и Тип процессорной платы в
окне Свойства модуля MB_TCP_master_Mx210 на необходимые.
Пример доступен для скачивания по ссылке. Пароль для доступа к отладчику – 1.
Сетевые параметры устройств в примере
Параметр
ПЛК210
МВ210-101
МК210-301
Режим работы
Master
Slave
Slave
IP адрес
10.2.7.77
10.2.11.68
10.2.4.5
Маска подсети
255.255.0.0
IP адрес
шлюза
10.2.1.1
Порт
502
Slave ID
-
1
1
Регистры модулей в примере
Модуль
Номер регистра
DEC
Тип в устройстве
Функция
Modbus
Описание
МВ210-101
4000…4002
FLOAT 32 и UINT 16
0x03
Значение входа 1 и время измерения входа 1
4003…4005
Значение входа 2 и время измерения входа 2
4005…4008
Значение входа 3 и время измерения входа 3
МК210-301
51
UINT 8
0x03
Битовая маска входов DI1…DI6
272
UINT 16
0x06
Режим работы выхода DO1:
0 – переключение лог. сигнала;
1 – ШИМ
308
Период ШИМ DO1:
1000…60000 (мс)
340
Коэффициент заполнения ШИМ DO1:
0…1000 (0.1 %)
470
UINT 8
Битовая маска установки состояния выходов DO1…DO8
Для настройки обмена следует:
Настроить модули Mx210 с помощью программы ОВЕН Конфигуратор в соответствии с таблицей (см. руководство Mx210. Примеры настройки обмена). Подключить модули к контроллеру в соответствии с рисунком.
Создать новый проект Полигон (в примере с именем MB_TCP_master_Mx210). Добавить в проект библиотеку paModbus.
Добавить в место работы Фон программу с именем Modbus_TCP_Client.
Внутри программы добавить две Страницы, в свойстве Комментарии которых указать соответственно MВ210-101 и МК210-301.
Внутри страницы МВ210-101 создать блок TcpIpClA из библиотеки paCore. На входах блока задать значения
в соответствии с таблицей.
В примере локальный IP-адрес контроллера взят
по SQL-запросу – обращение к соответствующему свойству модуля MB_TCP_master_Mx210.
Запрос IP-адреса:
"<sql>SELECT value FROM blocks_prop WHERE indx=:module AND type="prop_ip"</sql>"
Далее создать блок Modbus TCP Master. Соединить
вход cnc с соответствующим выходом блока TcpIpClA.
Затем создать блок чтения результатов измерения с аналоговых
входов OwenFltIn. Добавить к блоку два выхода. В комментариях
к выходам rslt прописать, к каким входам МВ210-101 они относятся.
Соединить вход блока itr с соответствующим выходом блока ModbusTCPMaster.
Создать блок для чтения значений с дискретных входов ModbusRegIn. Задать на входе slv значение 1, на
входе adr0 – 51 (см. таблицу). Соединить вход блока itr с соответствующим
выходом блока ModbusTCPMaster.
Создать блок выбора 8 битов из регистра FromReg8 из библиотеки paCore и соединить
выход блока ModbusRegIno0 с входом reg блока FromReg8. Добавить к первому выходу
блока FromReg8 комментарий – Вход 1.
Аналогично п. 10 создать блоки записи ModbusRegOut регистров 470, 272, 308, 340 (см. таблицу). В качестве начальных
значений периода и коэффициента заполнения ШИМ указать соответственно,
2000 и 500.
Создать блок объединения 8 битов в регистр ToReg8 из библиотеки paCore аналогично п. 11.
Поставить на странице порядки По потоку данных.
Итоговый вид страниц МВ210-101 и МК210-301 показан
на рисунках ниже.
Перейти к обработке значений входов/выходов.
Создать в месте работы Таймер программу с названием Mx210.
Внутри программы создать страницы с комментариями Значения
с модулей и Обработка значения температуры.
На странице Значения с модулей создать блоки TransBit и TransFlt из библиотеки paCore с
тремя входами.
Соединить входы блоков со страницы Значения с модулей с выходами блоков со страниц МВ210-101 и МК210-301, как показано на рисунках ниже.
Соединить выходы блоков со страницы Значения с модулей с выходами блоков со страницы МВ210-101, как показано на
рисунках ниже.
На странице Обработка значения температуры создать блоки Cmpr из библиотеки paCore.
Соединить вход и выход блока Cmpr с выходом и
входом блоков со страницы Значения с модулей, как показано
на рисунках ниже.
Для наладки работы собранной системы в примере используется
окно представления График.
Создать в модуле Раздел с именем График.
Добавить в раздел График выходы блоков TransBit и TransFlt – Выход и Температура. На странице Значения с модулей данные выходы должны подсветиться
желтым.
Открыть окно представления График и перетащить
созданный раздел в верхнее поле окна.
Запустить проект на контроллере, запустить отладчик и открыть
график. Пронаблюдать корректную работу системы.
ПЛК210 (Modbus TCP Slave) и Owen OPC Server
В качестве примера будет рассмотрена настройка обмена с Owen OPC Server, который будет использоваться
в режиме ModbusTCPMaster.
Пример создан в среде Полигон и подразумевает запуск на ПЛК210 с прошивкой 3.х.
Если требуется запустить проект на другом устройстве, следует изменить
свойства ОС и Тип процессорной платы в
окне Свойства модуля MB_TCP_slave_Owen_OPC_server на необходимые.
Пример доступен для скачивания по ссылке. Пароль для доступа к отладчику – 1.
Сетевые параметры устройств в примере
Параметр
ПЛК210
Owen OPC
Server
Режим работы
Slave
Master
IP адрес
10.2.7.77
10.2.3.179
Порт
502
Slave ID
1
-
Регистры/флаги ПЛК в примере
Адрес регистра/флага
Тип в устройстве
Область
памяти
0
WORD
Holding Registers
0
BOOL
Coils
1, 2
REAL
Holding Registers
Для настройки обмена следует:
Подключить контроллер и ПК к общей локальной сети (сетевые
настройки ПЛК и ПК в примере см. таблицу).
Создать новый проект Полигон (в примере с именем MB_TCP_slave_Owen_OPC_server). Добавить в проект библиотеку paModbus.
Добавить в место работы Фон программу с именем Modbus_TCP_Server.
Внутри программы добавить две Страницы, в свойстве Комментарии которых указать соответственно ModbusTCPServer и Регистры Modbus.
Внутри страницы ModbusTCPServer создать блок TcpIpSrA из библиотеки paCore.
На входах блока задать значения в соответствии с таблицей.
В примере
локальный IP-адрес контроллера взят по SQL-запросу – обращение к соответствующему
свойству модуля MB_TCP_slave_Owen_OPC_server.
Запрос IP-адреса:
"<sql>SELECT value FROM blocks_prop WHERE indx=:module AND type="prop_ip"</sql>"
Далее создать блок Modbus TCP Slave. Соединить вход cnc с соответствующим выходом блока TcpIpSrA.
Затем создать блоки записи регистров в ПЛК (в соответствии
с таблицей). Соединить входы блоков itr с сооветствующим выходом блока ModbusTCPSlave.
Создать блоки чтения регистров из ПЛК (в соответствии
с таблицей). Создать три входа bo у блока ModbusTCPSlave. Соединить
их с соответствующими выходами блоков чтения.
Для того, чтобы одновременно читать и записывать одни и те
же значения мастером сети, следует соединить выходы блоков записи o со входами блоков чтения in.
Для создания скрытой
связи следует в свойствах выхода o добавить свойства Полный алиас и Глобальная константа. В свойстве Полный алиас задать имя новой константы. Эти действия
следует повторить для всех блоков записи на странице.
У соответствующих входов блоков чтения in правой кнопкой
мыши задать созданные глобальные константы.
Поставить на странице порядкиПо потоку данных.
Итоговый вид страницы Modbus TCP Server показан
на рисунке ниже.
Для удобства можно вынести значения созданных регистров ПЛК
на отдельную страницу Регистры Modbus.
Для этого
на странице Регистры Modbus следует создать блоки TransBit, TransInt и TransFlt из библиотеки paCore.
На входы созданных блоков l задать созданные ранее константы. Выходы блоков o при
необходимости соединить с другими блоками в проекте.