<< Click to Display Table of Contents >> Navigation: Modbus Universal MasterOPC Server > Руководства по подключению различных контроллеров > Подключение Siemens S7-1200 > Создание проекта в STEP 7 > Использование функционального блока MB_SERVER |
Для чтения и записи данных из контроллера по протоколу Modbus TCP необходимо использовать функциональный блок MB_SERVER. Функциональный блок MB_SERVER расположен в библиотеке инструкций INSTRUCTIONS-Communication - Communication processor - Modbus TCP - MB_SERVER окна Task card. Для того чтобы получить справочную информацию по блоку необходимо выделить блок и нажать кнопку F1.
Щелкните дважды левой кнопкой мыши по блоку, чтобы создать экземпляр функционального блока, откроется окно свойств Call options. В поле Name введите имя экземпляра блока, в поле Number задайте его номер, либо установите галочку Automatic для автоматической нумерации. Нажмите OK.
Экземпляр блока появился в рабочей области программы.
Функциональный блок MB_SERVER содержит 4 входа, 5 выходов, 1 вход-выход.
Имя |
Тип |
Назначение |
Входы: |
||
EN |
BOOL |
Функциональный блок исполняется если на данном входе присутствует сигнал "True" ("Истина"). |
DISCONNECT |
BOOL |
Управление инициализацией соединения |
CONNECT_ID |
WORD |
Уникальный идентификатор соединения |
IP_PORT |
WORD |
Номер порта |
Входы-выходы: |
||
MB_HOLD_REG |
POINTER |
Указатель на область памяти для чтения и записи по протоколу Modbus |
Выходы: |
||
NDR |
BOOL |
0 – нет новых данных, 1 – новые данные были записаны через Modbus |
DR |
BOOL |
0 – нет прочитанных данных, 1 – данные были прочитаны через Modbus |
ERROR |
BOOL |
1 – ошибка вызова блока MB_SERVER |
STATUS |
WORD |
Код ошибки |
ENO |
BOOL |
Если у блока имеется сигнала на входе EN и блок выполняет свою функцию без ошибок, то выход ENO передает сигнал (ENO = 1) следующему элементу. Если в исполнении блоковой команды обнаружена ошибка, то поток сигнала прерывается (ENO = 0) у блоковой команды, которая вызвала ошибку. |
В данном примере в качестве области памяти для хранения переменных о состоянии экземпляра блока MB_SERVER и буфера данных для чтения и записи по протоколу Modbus используется глобальный блок данных DATA BLOCK.
Для создания глобального блока данных перейдите в раздел Program blocks контроллера в окне дерева проекта Project tree и щелкните дважды левой кнопкой мыши по пункту Add new block.
В появившемся окне Add new block выберите вкладку Data Block, в поле Name введите имя блока, в поле Number присвойте блоку данных его номер, присвоить номер блоку данных можно автоматически установив галочку Automatic, либо задать номер вручную, установив галочку Manual, в поле Block access выберите – Standard - compatible with S7-300/400 и нажмите OK. Обратиться к любому блоку данных в STEP7 можно по его символьному или абсолютному адресу: символьный адрес – символьное значение в поле Name ( в данном случае – MB_TCP_DATA), абсолютный адрес – порядковый номер в поле Number (в данном случае DB2).
Откроется рабочая область блока данных DB. Рабочая область состоит из меню блока управления элементами блока - редактирование строк, режимы мониторинга переменных. Область данных блока состоит из нескольких столбцов:
Name – имя переменной;
Data type – тип данных;
Offset – относительный адрес памяти в формате Byte.Bits;
Start value – начальное значение переменной;
Retain – сохранение в энергонезависимой памяти;
Visible in HMI – видимость переменных в HMI;
Comment – поле для ввода комментариев.
Структура блока будет состоять из двух элементов типа struct:
status – для хранения данных о состоянии экземпляра блока MB_SERVER;
data – буфер памяти для чтения и записи по протоколу Modbus.
Список переменных представлен в таблице:
Имя |
Тип |
Назначение |
status: |
||
ndr |
BOOL |
0 – нет новых данных, 1 – новые данные были записаны через Modbus |
dr |
BOOL |
0 – нет прочитанных данных, 1 – данные были прочитаны через Modbus |
error |
BOOL |
1 – ошибка вызова блока MB_SERVER |
status |
WORD |
Код ошибки |
data: |
||
40001 |
WORD |
Область памяти с доступом по адресу Modbus 40001 |
40002 |
WORD |
Область памяти с доступом по адресу Modbus 40002 |
40003 |
WORD |
Область памяти с доступом по адресу Modbus 40002 |
40004 |
WORD |
Область памяти с доступом по адресу Modbus 40002 |
Введите данные в полях элемента data в столбце Start value введите произвольные значения (необходимы для тестирования связи контроллера с OPC-сервером).
Поле Offset содержит нулевые значения адресов памяти. Чтобы STEP7 присвоил переменным свои адреса необходимо блок скомпилировать.
Для компилирования блока перейдите в раздел Program Blocks в окне дерева проекта Project tree, вызовите контекстное меню блока MB_TCP_DATA правой кнопкой мыши, выберите пункт Compile-Software.
Заново откройте блок данных MB_TCP_DATA, щелкнув по нему два раза левой кнопкой мыши в разделе Program Blocks дерева проекта Project tree. В поле Offset появились относительные адреса памяти.
Блок данных создан. Перейдите в рабочую область организационного блока OB1 (двойное нажатие левой кнопкой мыши на блоке OB1 в разделе Program blocks) и введите переменные для блока MB_SERVER_DB. Параметр MB_HOLD_REG является указателем на область памяти, используемой для чтения и записи по протоколу Modbus, формат записи: "P#bit address" "data type" "length", где:
bit address – абсолютный адрес на первый бит области памяти для записываемых или считываемых данных по протоколу Modbus;
data type - тип данных регистра Modbus (WORD,INT,UINT);
length – указывает на количество считываемых или записываемых регистров Modbus.
Адреса Modbus начинаются с 40001, указывая на двухбайтное значение области памяти контроллера. Таким образом, указатель памяти на элемент data блока данных DB2 (символьное имя – MB_TCP_DATA) длинной 4 слова (8 байт), который начинается с 4 байта (первые 4 байта в MB_TCP_DATA занимает элемент status), необходимо записать в виде: P#DB2 DBx4.0 WORD 4.
Примечание. Для чтения и записи переменных типа Bool, можно использовать упаковку битов в регистр Word. Для этого в блоке MB_TCP_DATA в структуре data нужно добавить элемент (в нашем случае он будет иметь адрес 40005) с типом данных Array [0..15] of Bool. Таким образом создается массив из двоичных величин c адресом MB_TCP_DATA.data.40005[0]...40005[15]. Извлечь отдельные биты можно средствами самого OPC сервера или же непосредственно в SCADA-системе.
Примечание. В STEP7 данные можно вводить в виде абсолютной и символьной адресации. Ввод символьной адресации поддерживает интеллектуальный ввод (Рисунок 3-28), при вводе абсолютного адреса программа может автоматически присваивать символьное имя вводимому адресу (по умолчанию символьные адреса помещаются в таблицу тэгов PLC tags-Default tag table).