Коммуникационный контроллер сети Ethernet (Profinet) на базе Siemens S7-200 Smart

advertisement
версия инструкции 15-09-07-10-46
Коммуникационный контроллер
сети Ethernet (Profinet) на базе
Siemens S7-200 Smart
Руководство пользователя
© Nicolay Sidorov
Russia, Tver, 2015
NickSidorov@ya.ru
1. Описание
Устройство представляет собой контроллер S7-200. Для решения поставленной задачи
возможно использование любой модели ПЛК S7-200 Smart.
Программная часть реализована в среде программирования Step-7 Micro/WIN Smart.
2. Назначение устройства
Контроллер S7-200 Smart с коммуникационной программой предназначен для соединения
контроллеров Siemens S7-300, S7-400, S7-1200, S7-1500 с панелями оператора Siemens
линейки Simatic SMART LINE, по умолчанию предназначенных для работы только с
контроллерами S7-200 и S7-200 Smart. Данное ограничение относится как к моделям
панелей Smart 700 и Smart 1000, так и к моделям 700IE и 1000IE, имеющим Ethernet-порт.
3. Основные функции
Коммуникационный ПЛК:
- получает данные от основного ПЛК для отображения на панели оператора
- передаёт в основной ПЛК изменённые посредством панели оператора данные
Основной ПЛК лишь отвечает на запросы коммуникационного ПЛК, программа
основного ПЛК не содержит инструкций по передаче данных в коммуникационный ПЛК.
Коммуникационный ПЛК лишь отвечает на запросы панели оператора, самостоятельно не
формируя запросы к ней.
Коммуникационный ПЛК соединяется с основным ПЛК по сети Ethernet, обмениваясь
данными по протоколу Profinet.
Коммуникационный ПЛК соединяется с панелями оператора по интерфейсу PPI и/или
Ethernet. Максимальное количество подключаемых панелей оператора определяется
моделью контроллера, исполняющего роль коммуникационного.
4. Программа основного ПЛК
Все данные, участвующие в пересылке между контроллерами хранятся в блоке данных
DB1. Блок данных должен иметь неоптимизированный доступ к данным (с указанием
адресов памяти), что устанавливается в TIA Portal путём снятия галочки с пункта
Optimized Data Access в свойствах блока данных (пункт «Attributes»).
Структура блока данных DB1
DBB 0 .. DBW18
Таблица параметров (см. ниже)
DBX 20.0 .. DBX 51.7
DQ
DBB 52
Контрольный байт для приёма данных настроек и дискр.
выходов (Флаги + Настройки + DQ) = 16#FF
DBB 53
Контрольный байт для IN/OUT BOX
DBX 60.0 .. DBX91.7
DI
DBB 92
Контрольный байт для передачи данных дискретных входов (DI)
DBB 100 .. A1
INBOX
A1 .. A2
OUTBOX
A2 .. A3
IN/OUT BOX
Таблица параметров
Адрес
Зн. по умол
DBX 0.0
false
DBX 0.1
false
DBX 0.2
false
DBX 0.3
false
DBX 0.4
false
DBX 0.5
false
DBB 2
10
DBB 3
10
DBB 4
10
DBB 5
10
DBB 6
10
DBB 7
10
DBB 8
0
DBB 9
0
DBB 10
0
DBB 11
0
DBB 12
0
DBB 13
0
DBW 14
0
DBW 16
0
DBW 18
0
Разрешить приём/передачу данных
Разрешить приём DQ
Разрешить отправку DI
Разрешить отправку INBOX
Разрешить приём OUTBOX
Разрешить приём/передачу IN/OUT BOX
Время переподключения при ошибке связи [с]
Время перерыва между приёмами параметров [мс]
Время перерыва между отправками DI [мс]
Время перерыва между отправками INBOX [мс]
Время перерыва между приёмами OUTBOX [мс]
Время перерыва между приёмами/отправками IN/OUT BOX [мс]
Количество используемых блоков для INBOX
Количество используемых блоков для OUTBOX
Количество используемых блоков для IN/OUT BOX
Количество байт в последнем блоке INBOX
Количество байт в последнем блоке OUTBOX
Количество байт в последнем блоке IN/OUT BOX
Количество данных типа DWORD в IN/OUT BOX
Количество данных типа WORD в IN/OUT BOX
Количество данных типа BYTE в IN/OUT BOX
Все данные разделены на 5 категорий:
- отсылаемые данные дискретных входов коммуникационного ПЛК (DI)
- принимаемые данные дискретных выходов коммуникационного ПЛК (DQ)
- отсылаемые данные (INBOX)
- принимаемые данные (OUTBOX)
- обновляемые данные (IN/OUT BOX)
Поскольку назначением данных является их отображение и редактирование на панели
оператора, то термины INBOX и OUTBOX определяются, исходя из этого.
Выводимые (output - OUTBOX) на панель оператора данные передаются от основного
ПЛК к панели оператора. Со стороны коммуникационного модуля это принимаемые
данные, поскольку принимаются им от основного ПЛК. Изменение значений этих данных
происходит в цикле основного ПЛК. Попытка изменить их с панели не приведёт ни к
какому результату, на основной ПЛК эти данные отправлены не будут.
Вводимые (input - INBOX) с панели оператора данные передаются от панели оператора к
основному ПЛК. Со стороны коммуникационного модуля это отсылаемые данные,
поскольку отсылаются им основному ПЛК. Изменение значений этих данных происходит
через панель оператора. Прежние данные заменяются вновь полученными с панели
оператора независимо от того, какие они имели значения в памяти основного контроллера
ранее и обновлялись ли в цикле его программы.
Данные, которые и выводятся на панель оператора, и редактируются с неё относятся к
обновляемым данным (IN/OUT BOX). Блок DB1 хранит не актуальные величины IN/OUT
BOX, а лишь те данные, которые нужны для приёма-передачи данных. Актуальные
величины должны храниться в других блоках данных. Для правильной работы данные в
IN/OUT BOX должны обновляться на основном ПЛК только в определённые моменты
времени, чтобы не произошло конфликта с изменением значений через панель оператора
и через ПЛК. Момент обновления определяется значением контрольного байта для
IN/OUT BOX.
Коммуникационный контроллер содержит собственные дискретные входы (DI) и выходы
(DQ), а также может содержать свои модули расширения. Для этих DI и DQ выделено по
32 байта памяти для коммуникации с основным ПЛК.
Получать информацию о состоянии DI необходимо через биты DBX 60.0 .. DBX 91.7
(соответствует I0.0 .. I31.7 коммуникационного ПЛК).
Передавать информацию в DQ необходимо через биты DBX 20.0 .. DBX 51.7
(соответствует Q0.0 .. Q31.7 коммуникационного ПЛК).
Приём и передача осуществляются в соответствии с таблицей параметров, занимающей
первые 18 байт блока DB1.
Описание таблицы параметров
Обмен данными осуществляется лишь в том случае, если установлен бит DBX 0.0.
Последующие биты DBX 0.1 .. DBX 0.5 разрешают приём и передачу данных конкретных
категорий.
Байт DBB2 задаёт время, через которое будет произведено переподключение к устройству.
Значение по умолчанию – 10 секунд.
Байты DBB3 .. DBB7 задают время обновления данных.
Значение по умолчанию – 0.1 секунд. Параметр задаётся в миллисекундах, т.е. по
умолчанию имеет значение 10.
Байты DBB8 .. DBB10 задают количество блоков памяти, выделенных для INBOX,
OUTBOX и IN/OUT BOX. Максимальное число таких блоков для каждой категории
данных – 4. Один блок занимает до 200 байт включительно.
Все блоки идут последовательно, начиная с DBB100.
Пример последовательности блоков памяти в DB1
DBB100
DBB300
DBB432
DBB612
DB812
DBB1052
DBB1012
На приведённом рисунке:
- для INBOX выделено 2 блока памяти DBB100 .. DBB299 и DBB300 .. DBB431,
- для OUTBOX выделен 1 блок памяти DBB432 .. DBB611,
- для IN/OUT BOX выделено 3 блока памяти DBB612 .. DBB811, DBB812 .. DBB1011 и
DBB1012 .. DBB1051.
Т.о. для данного примера DBB8 = 2, DBB9 = 1, DBB10 = 3
Слова DBW11 .. DBW13 задают количество байт для последних блоков памяти каждой
категории, т.е. тех блоков, чем размер может быть меньше 200 байт.
Применительно к приведённому выше примеру:
- DBW11 = 132 (432 - 300),
- DBW12 = 180 (612 - 432),
- DBW13 = 40 (1052 - 1012).
Размер промежуточных блоков всегда равен 200 байт, поэтому не задаётся.
Переменные (тэги) разных типов могут располагаться в INBOX и OUTBOX в любом
порядке, в IN/OUT BOX переменные идут последовательно в зависимости от разрядности
(DWORD, WORD, BYTE, BIT).
DBW14 .. DBW18 задают количество данных типов DWORD, WORD и BYTE
соответственно в IN/OUT BOX. Эта информация необходима коммуникационному ПЛК,
чтобы он мог отследить изменение значений переменных (тэгов). Все оставшиеся байты
памяти воспринимаются как биты.
Пример последовательности данных в IN/OUT BOX для приведённого выше примера.
Предположим, в IN/OUT BOX находятся 30 тэгов DINT, 28 тэгов REAL, 44 тэгов INT, 10
тэгов WORD, 84 переменных BYTE, 128 переменных BOOL.
Для такой последовательности:
- DBW14 = 58
- DBW16 = 54
- DBW18 = 84
Количество байт, выделенных для битов, рассчитывается программно:
[200 * (DBB10 – 1) + DBW13] – [DBW14 * 4 + DBW16 * 2 + DBW18]
или
[200 * (3 – 1) + 40] – [58 *4 + 54 * 2 + 84] = 440 – 424 = 16
(т.е. в данном случае память хранит 16 * 8 = 128 битов).
Память будет распределена следующим образом:
DBD612 – DBD840 – адреса переменных размером по 4 байта (DWORD, DINT, REAL)
DBW844 – DBW950 – адреса переменных размером по 2 байта (WORD, INT, UINT)
DBB952 – DBB1035 – адреса переменных размером по 1 байту (BYTE)
DBX1036.0 – DBX1051.7 – адреса переменных размером по 1 биту (BOOL)
Программный код основного контроллера
Для IN/OUT BOX в программе должен быть реализован следующий механизм,
вызываемый в каждом цикле:
IF("DB_1".INOUTBOX_CHECKBYTE = 16#AA) THEN
"DB_1".INOUTBOX_real_1 := "DB_2".real_1;
"DB_1".INOUTBOX_real_2 := "DB_2".real_2;
...
"DB_1".INOUTBOX_int_1 := "DB_2".int_1;
"DB_1".INOUTBOX_int_2 := "DB_2".int_2;
...
"DB_1".INOUTBOX_byte_1 := "DB_2".byte_1;
"DB_1".INOUTBOX_byte_2 := "DB_2".byte_2;
...
"DB_1".INOUTBOX_bit_1 := "DB_2".bit_1;
"DB_1".INOUTBOX_bit_2 := "DB_2".bit_2;
ELSIF("DB_1".INOUTBOX_CHECKBYTE = 16#FF) THEN
"DB_2".real_1 := "DB_1".INOUTBOX_real_1;
"DB_2".real_2 := "DB_1".INOUTBOX_real_2;
...
"DB_2".int_1 := "DB_1".INOUTBOX_int_1;
"DB_2".int_2 := "DB_1".INOUTBOX_int_2;
...
"DB_2".byte_1 := "DB_1".INOUTBOX_byte_1;
"DB_2".byte_2 := "DB_1".INOUTBOX_byte_2;
...
"DB_2".bit_1 := "DB_1".INOUTBOX_bit_1;
"DB_2".bit_2 := "DB_1".INOUTBOX_bit_2;
...
"DB_1".INOUTBOX_CHECKBYTE := 16#AA;
END_IF;
5. Программа коммуникационного ПЛК.
Все параметры, необходимые для передачи данных, находятся в таблице параметров,
которая хранится в блоке данных DB1 основного ПЛК. Другие параметры хранятся в
таблицах, для которых выделено адресное пространство VB55xx и VB56xx
коммуникационного ПЛК. Для служебных переменных, участвующих в работе, выделено
адресное пространство VB6xxx.
Единственный параметр, который необходимо задавать в коммуникационном ПЛК – это
IP-адрес основного ПЛК. Для этого предназначена функция
IP_Config(byte, byte, byte, byte),
в которую ip-адрес передаётся в виде 4 чисел формат byte (например, адрес 192.168.0.1
передаётся как параметры 192, 168, 0 и 1). Функция IP_Config вызывается в функции
MAIN() в первом цикле работы коммуникационного ПЛК.
6. Таблица соответствия адресов хранения информации в основном и
коммуникационном ПЛК
Команда /
адрес S7-200
Адрес таблицы S7-200 /
адрес в блоке DB1 S7-1200*
Размер
(байт)
Описание
GET
VB5500
53
Flags + Settings + D_OUT_200 (get)
VB0
VB0
PUT
VB5520
33
D_IN_200
VB60
VB60
PUT
VB5540
32
D_OUT_200 (put)
V1060
VB20
GET
VB5560
32
D_OUT_1200 (get)
VB2000
QB0
PUT
VB5580
32
D_OUT_1200 (put)
VB4000
QB0
GET
VB5600
32
D_IN_1200
VB5900
IB0
GET
PUT
VB5620
1
IN/OUT BOX
контрольный байт
VB6030
VB53
PUT
VB5000
A
INBOX
VB100
VB100
GET
VB5020
B
OUTBOX
VB1100
VB100 + Σ (A)
GET
VB5040
C
IN/OUT BOX (get)
VB2100
VB100 + Σ (A) + Σ (B)
PUT
VB5060
C
IN/OUT BOX (put)
VB4100
VB100 + Σ (A) + Σ (B)
* адресация в контроллере S7-200 соответствует внутренним адресам в блоке данных
DB1 контроллера S7-1200, т.е., например, VB0 соответствует адресу DB1.DBB0
Download