Руководство по программированию 6 profinet 7 Двухточечная связь (PointtoPoint, PtP) 8
Скачать 3.76 Mb.
|
Пример считывания и записи битов, используя адреса битов в качестве входа DATA_PTR Хотя процессы считывания и записи Modbus в адреса битов могут осуществляться путем использования адресов слов, области DATA_PTR могут быть также сконфигурированы как булевы типы данных, структуры или массивы, чтобы установить прямую, 1 к 1, взаимосвязь для первого считываемого или записываемого бита с помощью команды MB_MASTER. Если вы используете булевы массивы или структуры, то рекомендуется, чтобы вы делали размер данных кратным 8 битам (по границам байта). Например, если вы создаете булев массив из 10 битов, то программное обеспечение STEP 7 Basic выделит 16 битов (2 байта) в глобальном блоке данных для этих 10 битов. Внутри блока данных они будут храниться как байт1 [xxxx xxxx] байт2 [---- --xx], где x указывает доступные адреса данных, а – указывает недоступные адреса. Длина запросов Modbus может составлять до 16 битов, но старшие 6 битов будут помещены в те адреса байта 2, которые не будут доступны для вашей программы. Булевы области могут быть созданы как массив булевых значений или как структура из булевых переменных. Оба метода работают одинаковым образом и отличаются только способом создания и способом обращения к ним в вашей программе. Представленный внизу вид редактора глобального блока данных показывает один массив из 16 булевых значений, созданный с базисом 0. Этот массив может быть также создан как массив с базисом 1. Стрелка показывает, как это массив связан с командой MB_MASTER. Руководство по программированию 6.3 Глобальные библиотечные команды Программируемый контроллер S7-1200 Системное руководство, 11/2009, A5E02669003-02 235 Сценарии 11 и 12 показывают соответствие адресов Modbus адресам булева массива. Таблица 6- 5 Сценарий 11: Запись 5 выходных битов, начиная с адреса Modbus 00001 Значения входов команды MB_MASTER Выходы slave- устройства до Данные DATA_PTR Выходы slave- устройства после MB_ADDR 27 (пример slave- устройства) 00001 ON "Data".Bool[0]=ЛОЖЬ OFF MODE 1 (запись) 00002 ON "Data".Bool[1]=ИСТИНА ON DATA_ADDR 00001 (выходы) 00003 OFF "Data".Bool[2]=ИСТИНА ON DATA_LEN 5 00004 ON "Data".Bool[3]-ЛОЖЬ OFF 00005 ON "Data".Bool[4]=ЛОЖЬ OFF 00006 OFF не меняется 00007 ON не меняется DATA_PTR "Data".Bool 00008 OFF не меняется Таблица 6- 6 Сценарий 12: Чтение 15 выходных битов, начиная с адреса Modbus 00004 Значения входов команды MB_MASTER Значение slave- устройства Modbus Данные DATA_PTR после MB_ADDR 27 (пример slave- устройства) 00001 ON MODE 0 (чтение) 00002 ON DATA_ADDR 00003 (выходы) 00003 OFF "Data".Bool[0]=ЛОЖЬ DATA_LEN 15 00004 ON "Data".Bool[1]=ИСТИНА 00005 ON "Data".Bool[2]=ИСТИНА 00006 OFF "Data".Bool[3]-ЛОЖЬ 00007 ON Data".Bool[4]=ИСТИНА 00008 ON Data".Bool[5]=ИСТИНА 00009 ON Data".Bool[6]=ИСТИНА 00010 OFF Data".Bool[7]=ЛОЖЬ 00011 OFF Data".Bool[8]=ЛОЖЬ 00012 ON Data".Bool[9]=ИСТИНА 00013 OFF Data".Bool[10]=ЛОЖЬ 00014 ON Data".Bool[11]=ИСТИНА 00015 OFF Data".Bool[12]=ЛОЖЬ 00016 ON Data".Bool[13]=ИСТИНА 00017 ON Data".Bool[14]=ИСТИНА 00018 OFF DATA_PTR "Data".Bool 00019 ON Руководство по программированию 6.3 Глобальные библиотечные команды Программируемый контроллер S7-1200 236 Системное руководство, 11/2009, A5E02669003-02 Коды условий Значение STATUS (W#16#....) Описание 0000 Нет ошибки 80C8 Заданное время ожидания ответа (см. RCVTIME или MSGTIME) равно 0. 80D1 Приемник издал запрос на управление потоком, чтобы остановить активную передачу и не возобновлять ее в течение указанного времени ожидания. Эта ошибка генерируется также при аппаратном управлении потоком, если приемник не объявляет о готовности к приему (CTS) в течение указанного времени ожидания. 80D2 Запрос на передачу был отменен, так как не был получен сигнал о готовности (DSR) от аппаратуры передачи данных (DCE). 80E0 Сообщение было завершено, так как приемный буфер полон. 80E1 Сообщение было завершено в результате ошибки контроля четности. 80E2 Сообщение было завершено в результате ошибки кадрирования. 80E3 Сообщение было завершено в результате ошибки переполнения. 80E4 Сообщение было завершено в результате того, что указанная длина превышает общий размер буфера. 8180 Неверное значение идентификатора порта 8186 Неверный адрес станции Modbus 8188 Неверное значение MODE или режим записи для области адресов slave- устройства, доступных только для чтения 8189 Неверное значение адреса данных 818A Неверное значение длины данных 818B • Неверный указатель на источник или цель локальных данных: Неверный размер 818C Указатель на DB безопасного типа для DATA_PTR (должен быть DB классического типа) 8200 Порт занят обработкой запроса на передачу Руководство по программированию 6.3 Глобальные библиотечные команды Программируемый контроллер S7-1200 Системное руководство, 11/2009, A5E02669003-02 237 6.3.2.3 MB_SLAVE Команда MB_SLAVE позволяет вашей программе осуществлять обмен данными в качестве slave-устройства Modbus, используя порт на модуле двухточечной связи (Point-to-Point, PtP) CM 1241 RS485 или CM 1241 RS232. Master-устройство Modbus RTU может послать запрос, а затем ваша программа отвечает, исполняя команду MB_SLAVE. Помещая команду MB_SLAVE в свою программу, вы должны назначить ей уникальный экземплярный блок данных. Имя этого экземплярного блока данных используется, когда вы задаете параметр MB_DB в команде MB_COMM_LOAD. Коды функций связи Modbus (1, 2, 4, 5 и 15) могут считывать и записывать байты и слова непосредственно в образах процесса ПЛК на входах и выходах. В следующей таблице показано соответствие адресов Modbus образу процесса в CPU. Функции Modbus команды MB_SLAVE S7-1200 Коды Функция Область данных Диапазон адресов Область данных Адрес в CPU 01 Чтение битов Выход 1 до 8192 Образ процесса на выходах от Q0.0 до Q1023.7 02 Чтение битов Вход 10001 до 18192 Образ процесса на входах от I0.0 до I1023.7 04 Чтение слов Вход 30001 до 30512 Образ процесса на входах от IW0 до IW1022 05 Запись бита Выход 1 до 8192 Образ процесса на выходах от Q0.0 до Q1023.7 15 Запись битов Выход 1 до 8192 Образ процесса на выходах от Q0.0 до Q1023.7 Коды функций связи Modbus (3, 6, 16) используют отдельный и уникальный блок данных Modbus с регистром временного хранения информации. Этот DB вы должны создать, прежде чем вы сможете задать параметр MB_HOLD_REG команды MB_SLAVE. В следующей таблице показано соответствие регистра временного хранения информации Modbus адресу DB параметра MB_HOLD_REG в ПЛК. Функции Modbus команды MB_SLAVE S7-1200 Коды Функция Область данных Диапазон адресов Область данных DB в CPU Адрес DB в CPU от 40001 до 49999 Слова от 1 до 9999 03 Чтение слов Регистр временного хранения информации от 400001 до 465535 MB_HOLD_REG Слова от 1 до 65535 от 40001 до 49999 Слова от 1 до 9999 06 Запись слова Регистр временного хранения информации. от 400001 до 465535 MB_HOLD_REG Слова от 1 до 65535 от 40001 до 49999 Слова от 1 до 9999 16 Запись слов Регистр временного хранения информации от 400001 до 465535 MB_HOLD_REG Слова от 1 до 65535 Руководство по программированию 6.3 Глобальные библиотечные команды Программируемый контроллер S7-1200 238 Системное руководство, 11/2009, A5E02669003-02 В следующей таблице показаны диагностические функции, поддерживаемые Modbus. Диагностические функции Modbus команды MB_SLAVE S7-1200 Коды Подфункция Описание 08 0000H Эхотест – возврат данных опроса: Команда MB_SLAVE возвращает обратно в master- устройство Modbus полученное слово данных. 08 000AH Очистка счетчика коммуникационных событий: Команда MB_SLAVE очищает счетчик коммуникационных событий, используемый для функции 11 Modbus. 11 Получение значения счетчика коммуникационных событий: Команда MB_SLAVE использует внутренний счетчик коммуникационных событий для записи количества успешных запросов Modbus на чтение и запись, которые были посланы slave- устройством Modbus. Счетчик не реагирует на функции 8, 11 и широковещательные запросы. Он не реагирует также на запросы, приводящие к коммуникационным ошибкам (например, ошибки контроля четности или контроля с помощью циклического избыточного кода CRC). Команда MB_SLAVE поддерживает трансляцию запросов на запись из master- устройств Modbus, пока запросы относятся к действительным адресам. Независимо от того, действителен запрос или нет, команда MB_SLAVE не отвечает master-устройству Modbus на широковещательный запрос. LAD FBD Параметр Тип параметра Тип данных Описание MB_ADDR IN USINT Адрес Modbus RTU (от 1 до 247): Адрес станции slave-устройства Modbus. MB_HOLD_REG IN VARIANT Указатель на DB регистра временного хранения информации Modbus. DB регистра временного хранения информации должен быть классическим глобальным DB. См. ниже указание к MB_HOLD_REG. NDR OUT BOOL Готовы новые данные: • 0 – нет новых данных • 1 – указывает, что master-устройством Modbus были записаны новые данные DR OUT BOOL Чтение данных: • 0 – данные не считывались • 1 – указывает, что данные считывались master-устройством Modbus ERROR OUT BOOL Ошибка: • 0 – ошибка не обнаружена • 1 – указывает, что обнаружена ошибка и код ошибки в параметре STATUS действителен. STATUS OUT WORD Код ошибки Руководство по программированию 6.3 Глобальные библиотечные команды Программируемый контроллер S7-1200 Системное руководство, 11/2009, A5E02669003-02 239 Правила обмена данными для slave-устройства Modbus ● Команда MB_COMM_LOAD должна быть исполнена для конфигурирования порта, прежде чем команда MB_SLAVE сможет обмениваться данными с этим портом. ● Если порт должен отвечать как slave-устройство master-устройству Modbus, то этот порт не может быть использован командой MB_MASTER. Для каждого данного порта может использоваться только один экземпляр MB_SLAVE. ● Команды Modbus не используют события, прерывающие обмен данными, для управления коммуникационным процессом. Ваша программа должна управлять коммуникационным процессом путем опроса команды MB_SLAVE о завершенных процессах передачи и приема. ● Команда MB_SLAVE должна исполняться периодически с частотой, позволяющей ей своевременно отвечать на поступающие запросы от master-устройства Modbus. ● Вы должны вызывать MB_SLAVE в каждом цикле из OB программного цикла. Принцип действия Команда MB_SLAVE должна исполняться периодически, чтобы получать каждый запрос от master-устройства Modbus, а затем соответствующим образом отвечать. Частота исполнения команды MB_SLAVE зависит от интервала времени ожидания ответа, задаваемого master-устройством Modbus. Это иллюстрируется следующим рисунком. Время ожидания ответа - это интервал времени, в течение которого master-устройство Modbus ожидает начала ответа от slave-устройства Modbus. Этот интервал времени не определяется протоколом Modbus, а является параметром соответствующего master- устройства Modbus. Частота исполнения (время от одного исполнения до другого) команды MB_SLAVE должна основываться на конкретных параметрах вашего master- устройства Modbus. Как минимум, вы должны исполнять MB_SLAVE дважды в течение времени ожидания master-устройства Modbus. Время ожидания ответа Данные Передает master-устройство Передает slave-устройство Данные Начальный интервал Начальный интервал = 3,5 времени передачи 1 символа Время задержки ответа Руководство по программированию 6.3 Глобальные библиотечные команды Программируемый контроллер S7-1200 240 Системное руководство, 11/2009, A5E02669003-02 Примеры для параметра MB_HOLD_REG Параметр MB_HOLD_REG – это указатель на блок данных регистра временного хранения информации Modbus. Этот DB используется для хранения значений данных, к которым разрешен доступ (на чтение или запись) master-устройству Modbus. Вы должны создать этот блок данных и назначить структуру типов данных, которые оттуда будут считываться или туда записываться, прежде чем он сможет быть использован командой MB_SLAVE. Указание Блок данных регистра временного хранения информации Modbus должен ссылаться на глобальный блок данных, который должен быть создан с деактивированной триггерной кнопкой атрибута Symbolic Access Only [Только символический доступ]. При добавлении нового блока данных вы должны снять пометку с триггерной кнопки "Symbolic address only", чтобы создать блок данных классического типа Регистры временного хранения информации могут использовать следующие структуры данных этого DB: ● Стандартный массив из слов ● Именованная структура из слов ● Именованная составная структура Следующие примеры программ показывают, как можно использовать параметр MB_HOLD_REG параметр для обработки структур данных этого DB. Руководство по программированию 6.3 Глобальные библиотечные команды Программируемый контроллер S7-1200 Системное руководство, 11/2009, A5E02669003-02 241 Пример 1 - Стандартный массив из слов Этот пример для регистра временного хранения информации представляет собой массив из слов. Назначения типов данных могут быть изменены на другие типы размеров слова (INT и UINT). Преимущества: • Этот тип структуры регистра временного хранения информации может быть быстро и легко создан. • Упрощена логика программы для доступа к элементу данных. • Недостатки: • Хотя вы можете программно ссылаться на каждый элемент массива по символическим именам (от "HR_DB"."Array"[1] до "HR_DB"."Array"[10]), эти имена не описывают внутреннюю функцию данных. • Массив может состоять только из одного типа данных. В пользовательской программе со строгим контролем типов может потребоваться преобразование типов. Вот как выглядит структура массива из слов в редакторе блоков данных. На следующем рисунке показано, как этот массив назначается входу MB_HOLD_REG команды MB_SLAVE. Руководство по программированию 6.3 Глобальные библиотечные команды Программируемый контроллер S7-1200 242 Системное руководство, 11/2009, A5E02669003-02 К каждому элементу этого массива можно получить доступ по символическому имени, как это показано ниже. В этом примере новое значение передается во второй элемент массива, который соответствует адресу Modbus 40002. Каждое из слов в этом массиве, в соответствии с определением в блоке данных, снабжает команду MB_SLAVE адресами регистра временного хранения информации Modbus. В этом примере, так как в массиве имеется только 10 элементов, имеется в наличии только 10 адресов регистра временного хранения информации Modbus, которые могут быть использованы этой командой MB_SLAVE и доступны master- устройству Modbus. Ниже показано соответствие имен элементов массива адресам Modbus. "HR_DB".Array[1] Адрес Modbus 40001 " HR_DB ". Array[2] Адрес Modbus 40002 " HR_DB ". Array[3] Адрес Modbus 40003 " HR_DB ". Array[9] Адрес Modbus 40009 " HR_DB ".Array [10] Адрес Modbus 40010 Руководство по программированию 6.3 Глобальные библиотечные команды Программируемый контроллер S7-1200 Системное руководство, 11/2009, A5E02669003-02 243 Пример 2 - Именованная структура из слов Этот пример регистра временного хранения информации представляет собой ряд слов с описательными символическими именами. Преимущества: • Каждый элемент структуры имеет описательное имя с назначенным ему конкретным типом данных. Недостатки: • Создание этого типа структуры требует больше времени, чем для стандартного массива из слов. • Элементы требуют дополнительных символических ссылок при использовании в программе пользователя. В то время как ссылка на первый элемент простого массива имеет вид "HR_DB".Array[0], ссылка на элемент этого типа имеет вид "HR_DB".Data.Temp_1. Вот как именованная структура из слов появляется в редакторе блоков данных. Каждый элемент имеет уникальное имя и может иметь тип WORD, UINT или INT. На следующем рисунке показано, как вышеприведенная структура данных может быть назначена входу MB_HOLD_REG команды MB_SLAVE в вашей программе. Руководство по программированию 6.3 Глобальные библиотечные команды Программируемый контроллер S7-1200 244 Системное руководство, 11/2009, A5E02669003-02 К каждому элементу этого массива можно получить доступ по символическому имени, как это показано ниже. В этом примере новое значение передается во второй элемент массива, который соответствует адресу Modbus 40002. Ниже показано соответствие имен элементов массива адресам Modbus. "HR_DB".Data.Temp_1 Адрес Modbus 40001 "HR_DB".Data.Temp_2 Адрес Modbus 40002 "HR_DB".Data.Temp_3 Адрес Modbus 40003 "HR_DB".Data.Good_Count Адрес Modbus 40004 "HR_DB".Data.Bad_Count Адрес Modbus 40005 "HR_DB".Data.Rework_Count Адрес Modbus 40006 "HR_DB".Data.Line_Stops Адрес Modbus 40007 "HR_DB".Data.Avg_Time Адрес Modbus 40008 "HR_DB".Data.Code_1 Адрес Modbus 40009 "HR_DB".Data.Code_2 Адрес Modbus 40010 |