версия инструкции 15-09-07-10-46 Коммуникационный контроллер сети Ethernet (Profinet) на базе Siemens S7-200 Smart Руководство пользователя © Nicolay Sidorov Russia, Tver, 2015 [email protected] 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