Руководство по программированию 6 profinet 7 Двухточечная связь (PointtoPoint, PtP) 8
Скачать 3.76 Mb.
|
Примеры преобразования с помощью VAL_STRG Эти примеры основаны на строке OUT, инициализированной следующим образом: "Current Temp = xxxxxxxxxx C" Символ "x"представляет пробелы, предназначенные для преобразуемого значения. Тип данных Значение IN P SIZE FORMAT (W#16#....) PREC Строка OUT ENO UInt 123 16 10 0000 0 Current Temp = xxxxxxx123 C ИСТИНА UInt 0 16 10 0000 2 Current Temp = xxxxxx0.00 C ИСТИНА UDInt 12345678 16 10 0000 3 Current Temp = x12345.678 C ИСТИНА UDInt 12345678 16 10 0001 3 Current Temp = x12345,678 C ИСТИНА Int 123 16 10 0004 0 Current Temp = xxxxxx+123 C ИСТИНА Int -123 16 10 0004 0 Current Temp = xxxxxx-123 C ИСТИНА Real -0.00123 16 10 0004 4 Current Temp = xxx-0.0012 C ИСТИНА Real -0.00123 16 10 0006 4 Current Temp = -1.2300E-3 C ИСТИНА Real -INF 16 10 N/A 4 Current Temp = xxxxxx-INF C ЛОЖЬ Real +INF 16 10 N/A 4 Current Temp = xxxxxx+INF C ЛОЖЬ Real NaN 16 10 N/A 4 Current Temp = xxxxxxxNaN C ЛОЖЬ UDInt 12345678 16 6 N/A 3 Current Temp = xxxxxxxxxx C ЛОЖЬ Руководство по программированию 6.2 Расширенные команды Программируемый контроллер S7-1200 168 Системное руководство, 11/2009, A5E02669003-02 6.2.3.3 Операции со строками Ваша управляющая программа может использовать следующие операции со строками и символами для формирования сообщений оператору и протоколирования процесса. Общие ошибки для всех операций со строками Операции со строками, при исполнении которых возникают показанные ниже недопустимые состояния, приводят к тому, что ENO = 0 и выводится пустая строка. Ошибочные состояния, которые возникают при определенных операциях, приведены под описанием соответствующей операции. ENO Условие OUT Текущая длина IN1 превышает максимальную длину IN1, или текущая длина IN2 превышает максимальную длину IN2 (неправильная строка) Максимальная длина IN1, IN2 или OUT не помещается в выделенную область памяти 0 Максимальная длина IN1, IN2 или OUT равна 0 или 255 (недопустимая длина) Текущая длина устанавливается в 0 LEN: Получить длину строки CONCAT: Соединить две строки LEFT: Получить левую подстроку из строки RIGHT: Получить правую подстроку из строки MID: Получить среднюю подстроку из строки FIND: Найти подстроку или символ в строке INSERT: Вставить подстроку в строку DELETE: Удалить подстроку из строки REPLACE: Заменить подстроку в строке Руководство по программированию 6.2 Расширенные команды Программируемый контроллер S7-1200 Системное руководство, 11/2009, A5E02669003-02 169 Команда LEN Параметр Тип параметра Тип данных Описание IN IN String Вводимая строка OUT OUT UInt Число допустимых символов в строке IN LEN (длина строки) дает текущую длину строки IN на выходе OUT. Пустая строка имеет длину ноль. В следующей таблице показаны коды условий для этой команды. ENO Условие OUT 1 Недопустимые условия для строки отсутствуют Действительная длина строки Команда CONCAT Параметр Тип параметра Тип данных Описание IN1 IN String Вводимая строка 1 IN2 IN String Вводимая строка 2 OUT OUT String Комбинированная строка (строка 1 + строка 2) CONCAT (объединить строки) соединяет параметры строк IN1 и IN2, формируя одну строку, представленную в параметре OUT. После объединения строка IN1 является левой частью, а строка IN2 правой частью объединенной строки. В следующей таблице показаны коды условий для этой команды. ENO Условие OUT 1 Ошибки не обнаружены Допустимые символы 0 Результирующая строка после объединения больше максимальной длины строки OUT Символы результирующей строки копируются, пока не будет достигнута максимальная длина OUT Руководство по программированию 6.2 Расширенные команды Программируемый контроллер S7-1200 170 Системное руководство, 11/2009, A5E02669003-02 Команда LEFT Параметр Тип параметра Тип данных Описание IN IN String Вводимая строка L IN Int Длина подстроки, которая должна быть создана, используя самые левые L символов строки IN OUT OUT String Выводимая строка Команда LEFT (левая подстрока) выдает подстроку, состоящую из первых L символов строки параметра IN. ● Если L больше, чем текущая длина строки IN, то вся строка IN выводится в параметре OUT. ● Если вводится пустая строка, то в OUT тоже выводится пустая строка. В следующей таблице показаны коды условий для этой команды. ENO Условие OUT 1 Ошибки не обнаружены Допустимые символы L меньше или равно 0 Текущая длина устанавливается в 0 0 Длина подстроки (L), подлежащей копированию, больше максимальной длины строки OUT Символы копируются, пока не будет достигнута максимальная длина строки OUT Руководство по программированию 6.2 Расширенные команды Программируемый контроллер S7-1200 Системное руководство, 11/2009, A5E02669003-02 171 Команда RIGHT Параметр Тип параметра Тип данных Описание IN IN String Вводимая строка L IN Int Длина подстроки, которая должна быть создана, используя самые правые L символов строки IN OUT OUT String Выводимая строка Команда RIGHT (правая подстрока) выдает подстроку, состоящую из последних L символов строки параметра IN. ● Если L больше, чем текущая длина строки IN, то вся строка IN выводится в параметре OUT. ● Если вводится пустая строка, то в OUT тоже выводится пустая строка. В следующей таблице показаны коды условий для этой команды. ENO Условие OUT 1 Ошибки не обнаружены Допустимые символы L меньше или равно 0 Текущая длина устанавливается в 0 0 Длина подстроки (L), подлежащей копированию, больше максимальной длины строки OUT Символы копируются, пока не будет достигнута максимальная длина строки OUT Руководство по программированию 6.2 Расширенные команды Программируемый контроллер S7-1200 172 Системное руководство, 11/2009, A5E02669003-02 Команда MID Параметр Тип параметра Тип данных Описание IN IN String Вводимая строка L IN Int Длина подстроки, которая должна быть создана, используя L символов строки IN, начиная с позиции P P IN Int Положение первого символа подстроки, подлежащей копированию: P= 1, для позиции первого символа строки IN OUT OUT String Выводимая строка Команда MID (средняя подстрока) выводит среднюю часть строки. Средняя подстрока имеет длину L символов и начинается с позиции P (включительно). Если сумма L и P превышает текущую длину строки в параметре IN, то выводится подстрока, начинающаяся с позиции P и продолжающаяся до конца строки IN. В следующей таблице показаны коды условий для этой команды. ENO Условие OUT 1 Ошибки не обнаружены Допустимые символы L или P меньше или равно 0 P больше, чем максимальная длина IN Текущая длина устанавливается в 0 0 Длина подстроки (L), подлежащей копированию, больше максимальной длины строки OUT Символы копируются, начиная с позиции P, пока не будет достигнута максимальная длина OUT Руководство по программированию 6.2 Расширенные команды Программируемый контроллер S7-1200 Системное руководство, 11/2009, A5E02669003-02 173 Команда DELETE Параметр Тип параметра Тип данных Описание IN IN String Вводимая строка L IN Int Число символов, подлежащих удалению P IN Int Положение первого символа, подлежащего удалению: Первый символ строки IN находится в позиции 1 OUT OUT String Выводимая строка Команда DELETE (удалить подстроку) удаляет L символов из строки IN. Удаление символов начинается с позиции P (включительно), а оставшаяся подстрока выводится в параметре OUT. ● Если L равно нулю, то в OUT выводится введенная строка. ● Если сумма L и P больше, чем длина введенной строки, то строка удаляется до конца. В следующей таблице показаны коды условий для этой команды. ENO Условие OUT 1 Ошибки не обнаружены Допустимые символы P больше, чем текущая длина IN IN копируется в OUT без удаления символов L меньше, чем 0, или P меньше или равно 0 Текущая длина устанавливается в 0 0 Результирующая строка после удаления символов больше максимальной длины строки OUT Символы результирующей строки копируются, пока не будет достигнута максимальная длина OUT Руководство по программированию 6.2 Расширенные команды Программируемый контроллер S7-1200 174 Системное руководство, 11/2009, A5E02669003-02 Команда INSERT Параметр Тип параметра Тип данных Описание IN1 IN String Вводимая строка 1 IN2 IN String Вводимая строка 2 P IN Int Положение последнего символа в строке IN1 перед точкой вставки для строки IN2. Первый символ строки IN1 находится в позиции 1. OUT OUT String Результирующая строка Команда INSERT (вставить подстроку) вставляет строку IN2 в строку IN1. Вставка начинается после символа, находящегося в позиции P. В следующей таблице показаны коды условий для этой команды. ENO Условие OUT 1 Ошибки не обнаружены Допустимые символы P больше, чем длина IN1 IN2 присоединяется к IN1 непосредственно после последнего символа IN1 P меньше или равно 0 Текущая длина устанавливается в 0 0 Результирующая строка после вставки больше максимальной длины строки OUT Символы результирующей строки копируются, пока не будет достигнута максимальная длина OUT Руководство по программированию 6.2 Расширенные команды Программируемый контроллер S7-1200 Системное руководство, 11/2009, A5E02669003-02 175 Команда REPLACE Параметр Тип параметра Тип данных Описание IN1 IN String Вводимая строка IN2 IN String Строка с заменяющими символами L IN Int Число символов, подлежащих замене P IN Int Положение первого символа, подлежащего замене OUT OUT String Результирующая строка Команда REPLACE (заменить подстроку) заменяет L символов в строке параметра IN1. Замена начинается с символа строки IN1, находящегося в положении P (включительно), заменяющими символами их строки параметра IN2. ● Если параметр L равен нулю, то строка IN2 вставляется в позицию P строки IN1 без удаления символов из строки IN1. ● Если P равно 1, то первые L символов строки IN1 заменяются символами строки IN2. В следующей таблице показаны коды условий для этой команды. ENO Условие OUT 1 Ошибки не обнаружены Допустимые символы P больше, чем длина IN1 IN2 присоединяется к IN1 непосредственно после последнего символа IN1 Позиция P находится внутри IN1, но в IN1 остается менее чем L символов IN2 заменяет конечные символы IN1, начиная с позиции P L меньше, чем 0, или P меньше или равно 0 Текущая длина устанавливается в 0 0 Результирующая строка после замены больше максимальной длины строки OUT Символы результирующей строки копируются, пока не будет достигнута максимальная длина OUT Команда FIND Параметр Тип параметра Тип данных Описание IN1 IN String Искать внутри этой строки IN2 IN String Искать эту строку OUT OUT Int Положение в строке IN1 первого искомого совпадения Команда FIND (искать подстроку) выдает положение внутри строки IN1 подстроки или символа, указанного в параметре IN2. Поиск начинается слева. Позиция первого появления строки IN2 выводится в OUT. Если строка IN2 не найдена в строке IN1, то выводится ноль. В следующей таблице показаны коды условий для этой команды. ENO Условие OUT 1 Ошибки не обнаружены Действительная позиция символа 0 IN2 больше, чем IN1 Позиция символа устанавливается в 0 Руководство по программированию 6.2 Расширенные команды Программируемый контроллер S7-1200 176 Системное руководство, 11/2009, A5E02669003-02 6.2.4 Команды управления программой 6.2.4.1 Сброс контроля времени цикла Команда RE_TRIGR (перезапустить контроль времени цикла) используется для увеличения максимально допустимого времени цикла, прежде чем таймер контроля времени цикла сгенерирует ошибку. Используйте команду RE_TRIGR для перезапуска таймера контроля времени цикла во время исполнения цикла. Благодаря этому максимально допустимое время цикла увеличивается еще на один интервал максимального времени цикла с момента последнего исполнения функции RE_TRIGR. CPU ограничивает использование команды RE_TRIGR программным циклом, например, OB1, и функциями, которые вызываются из программного цикла. Это значит, что таймер контроля времени цикла сбрасывается, и ENO = EN, если RE_TRIGR из любого OB, содержащегося в списке OB программного цикла. ENO = ЛОЖЬ, и таймер контроля времени не сбрасывается, если RE_TRIGR выполняется из OB запуска, OB прерываний или OB ошибок. Установка максимального времени цикла ПЛК Вы можете установить значение для максимального времени цикла в конфигурации устройств ПЛК через "Cycle time [Время цикла]". Контроль времен цикла Минимальное значение Максимальное значение Значение по умолчанию Максимальное время цикла 1 мс 6000 мс 150 мс Контроль времени исполнения Если максимальное время цикла истекает до того, как цикл завершен, то генерируется ошибка. Если кодовый блок обработки ошибок OB 80 включен в программу пользователя, то ПЛК исполняет OB 80, в который вы можете ввести программную логику для формирования специальной реакции на ошибку. Если OB 80 не включен в программу, то первое превышение лимита времени игнорируется. Если в том же самом программном цикле происходит второе превышение максимального времени цикла (2-кратное значение максимального времени цикла), то генерируется ошибка, которая заставляет ПЛК перейти в состояние STOP. В состоянии STOP исполнение вашей программы прекращается, однако системные коммуникации ПЛК и системная диагностика продолжаются. Руководство по программированию 6.2 Расширенные команды Программируемый контроллер S7-1200 Системное руководство, 11/2009, A5E02669003-02 177 6.2.4.2 Команда остановки цикла Команда STP (остановить цикл сканирования ПЛК) переводит ПЛК в состояние STOP. Когда ПЛК находится в состоянии STOP, исполнение вашей программы и физическое обновление образа процесса прекращаются. Дальнейшую информацию вы найдете под заголовком: Конфигурирование поведения выходных значений для состояния STOP CPU (стр. 56) Если EN = ИСТИНА, то ПЛК переходит в состояние STOP, исполнение программы прекращается, и состояние ENO не имеет значения. В противном случае EN = ENO = 0. 6.2.4.3 Команды получения информации об ошибках Команды получения информации об ошибках предоставляют информацию об ошибках при исполнении программных блоков. Если вы вставите команду GetError или GetErrorID в свой кодовый блок, то вы можете обрабатывать ошибки программы в своем программном блоке. GET_ERROR Команда GET_ERROR показывает, что произошла ошибка при исполнении программного блока, и заполняет заранее определенную структуру данных ошибки подробной информацией об ошибке. Параметр Тип данных Описание ERROR ErrorStruct Структура данных об ошибке: Вы можете переименовать эту структуру, но не элементы внутри нее. Элемент данных ErrorStruct Тип данных Описание ERROR_ID Word Идентификатор ошибки FLAGS Byte Всегда 0. REACTION Byte Реакция на ошибку: • 0 = игнорировать; ничего не записано (ошибка записи) • 1 = заменить: для входного значения был использован 0 (ошибка чтения) • 2 = пропустить команду BLOCK_TYPE Byte Тип блока, где произошла ошибка: • 1 = OB • 2 = FC • 3 = FB PAD_0 Byte Внутренне заполняемый байт для целей выравнивания, равен 0 Руководство по программированию 6.2 Расширенные команды Программируемый контроллер S7-1200 178 Системное руководство, 11/2009, A5E02669003-02 Элемент данных ErrorStruct Тип данных Описание CODE_BLOCK_NUMBER UInt Номер блока, в котором произошла ошибка ADDRESS UDInt Внутренний адрес в памяти для команды, в которой произошла ошибка MODE Byte Внутреннее отображение того, как будут интерпретироваться оставшиеся поля, предназначенные для использования STEP 7 Basic PAD_1 Byte Внутренне заполняемый байт для целей выравнивания; не используется, равен 0 OPERAND_NUMBER UInt Число внутренних операндов команды POINTER_NUMBER_ LOCATION UInt (A) Внутренний адрес указателя команды SLOT_NUMBER_SCOPE UInt (B) Внутренний адрес в памяти AREA Byte (C) Область памяти, на которую делается ссылка при возникновении ошибки: • L: 16#40 – 4E, 86, 87, 8E, 8F, C0 – CE • I: 16#81 • Q: 16#82 • M: 16#83 • DB: 16#84, 85, 8A, 8B PAD_2 Byte Внутренне заполняемый байт для целей выравнивания; не используется, равен 0 DB_NUMBER UInt (D) DB, на который делается ссылка, когда происходит ошибка DB, иначе 0 OFFSET UDInt (E) Битовое смещение, на которое делается ссылка при возникновении ошибки (пример: 12 = байт 1, бит 4) |