9 Команды SIMATIC Эта глава описывает набор команд SIMATIC для S7–200. Обзор главы Раздел Описание Стр. 9.1 Битовые логические команды SIMATIC 9–2 9.2 Команды SIMATIC для операций сравнения 9–10 9.3 Таймерные команды SIMATIC 9–15 9.4 Команды SIMATIC для операций счета 9–23 9.5 Команды SIMATIC, выполняемые над часами 9–71 9.6 Арифметические команды SIMATIC над целыми числами 9–73 9.7 Арифметические команды SIMATIC над вещественными числами 9–82 9.8 Команды SIMATIC с числовыми функциями 9–85 9.9 Команды SIMATIC для пересылки 9–105 9.10 Табличные команды SIMATIC 9–110 9.11 Логические команды SIMATIC 9–117 9.12 Команды SIMATIC для сдвига и циклического сдвига 9–123 9.13 Команды SIMATIC для выполнения преобразований 9–133 9.14 Команды SIMATIC для управления программой 9–148 9.15 Команды SIMATIC для организации прерываний и связи 9–171 9.16 Команды SIMATIC, выполняемые над логическим стеком 9–199 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-1 Команды SIMATIC 9.1 Битовые логические команды SIMATIC Стандартные контакты L A D Эти команды получают значение из памяти или из регистра образа процесса, если типом данных является I или Q. В блоках AND [И] и OR [ИЛИ] можно использовать не более семи входов. бит бит / F B D Нормально открытый контакт замкнут (включен), когда бит равен 1. Нормально замкнутый контакт замкнут (включен), когда бит равен 0. AND В LAD нормально открытый и нормально замкнутый контакты представлены контактами. OR S T L LD бит A бит O бит LDN бит AN бит ON бит ✓ ✓ ✓ ✓ 221 222 224 226 В FBD команды, соответствующие нормально открытым контактам, представлены блоками AND/OR [И/ИЛИ]. Эти команды могут быть использованы для манипулирования булевыми сигналами таким же образом, как контакты LAD. Команды, соответствующие нормально замкнутым контактам, тоже представлены блоками. Команда, соответствующая нормально замкнутому контакту, строится путем помещения символа отрицания на отметке входного сигнала. Количество входов блоков AND [И] и OR [ИЛИ] может быть увеличено максимум до семи. В STL нормально открытый контакт представляется командами Загрузить (LD), И (A) и ИЛИ (O). Эти команды загружают значение адресного бита в вершину стека или выполняют логическое сопряжение значения адресного бита со значением в вершине стека в соответствии с таблицей истинности логического И или ИЛИ. В STL нормально замкнутый контакт представляется командами Загрузить инверсное значение (LDN), И-НЕ (AN) и ИЛИ-НЕ (ON). Эти команды загружают логическое отрицание значения адресного бита в вершину стека или выполняют логическое сопряжение логического отрицания значения адресного бита со значением в вершине стека в соответствии с таблицей истинности логического И или ИЛИ. Входы/выходы Операнды Типы данных бит (LAD, STL) I, Q, M, SM, T, C, V, S, L Входы (FBD) I, Q, M, SM, T, C, V, S, L, поток сигнала BOOL Выходы (FBD) I, Q, M, SM, T, C, V, S, L, поток сигнала BOOL 9-2 BOOL Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC Контакты непосредственного опроса L A D бит I бит /I Команда непосредственного опроса при ее исполнении получает значение физического входа, однако, регистр образа процесса не обновляется. Нормально открытый контакт непосредственного опроса замкнут (включен), когда физический вход (бит) находится в состоянии 1. Нормально замкнутый контакт непосредственного опроса замкнут (включен), когда физический вход (бит) находится в состоянии 0. F B D В LAD нормально открытые и нормально замкнутые контакты непосредственного опроса представляются S LDI бит контактами. T AI бит L OI бит В FBD нормально открытому контакту непосредственного опроса соответствует индикатор LDNI бит непосредственного опроса, стоящий перед отметкой ANI бит операнда. Индикатор непосредственного опроса не ONI бит может присутствовать, когда используется поток сигнала. Команда может использоваться для ✓ ✓ ✓ ✓ манипулирования физическими сигналами таким же 221 222 224 226 образом, как и контакты LAD. В FBD нормально замкнутому контакту непосредственного опроса также соответствует индикатор непосредственного опроса, стоящий перед отметкой операнда, и символ отрицания. Индикатор непосредственного опроса не может присутствовать, когда используется поток сигнала. Команда, соответствующая нормально замкнутому контакту, строится путем помещения символа отрицания на отметке входного сигнала. В STL нормально открытый контакт непосредственного опроса представляется командами Загрузить непосредственно (LDI), Непосредственное И (AI) и Непосредственное ИЛИ (OI). Эти команды непосредственно загружают значение физического входа в вершину стека или выполняют логическое сопряжение значения физического входа со значением в вершине стека в соответствии с таблицей истинности логического И или ИЛИ. В STL нормально замкнутый контакт непосредственного опроса представляется командами Загрузить непосредственно инверсное значение (LDNI), Непосредственное И-НЕ (ANI) и Непосредственное ИЛИ-НЕ (ONI). Эти команды непосредственно загружают логическое отрицание значения физического входа в вершину стека или выполняют логическое сопряжение отрицания значения физического входа со значением в вершине стека в соответствии с таблицей истинности логического И или ИЛИ. Входы/выходы Операнды Типы данных бит (LAD, STL) I BOOL вход (FBD) I BOOL Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-3 Команды SIMATIC NOT (НЕ) L A D Контакт NOT изменяет состояние входа потока сигнала. Если поток сигнала достигает контакта NOT, то он останавливается у контакта. Если поток сигнала не достигает контакта NOT, то на контакте генерируется поток сигнала. NOT F B D L A D S T L В LAD команда NOT изображается как контакт. В FBD команда NOT использует графический символ отрицания с входами булева блока. В STL команда NOT изменяет значение в вершине стека с 0 на 1 или с 1 на 0. NOT ✓ ✓ ✓ ✓ 221 222 224 226 Операнды: Нет Типы данных: Нет Положительный, отрицательный фронт L A D P N F B D P N S T L EU ED ✓ ✓ ✓ ✓ 221 222 224 226 Контакт Положительный фронт пропускает поток сигнала в течение одного цикла при каждом появлении положительного фронта. Контакт Отрицательный фронт пропускает поток сигнала в течение одного цикла при каждом появлении отрицательного фронта. В LAD команды Положительный и отрицательный фронт представляются контактами. В FBD эти команды представляются блоками P и N. В STL контакту Положительный фронт соответствует команда Нарастающий фронт (EU = Edge Up). При обнаружении перехода значения в вершине стека с 0 на 1 значение в вершине стека устанавливается в 1; в противном случае оно устанавливается в 0. В STL контакту Отрицательный фронт соответствует команда Падающий фронт (ED = Edge Down). При обнаружении перехода значения в вершине стека с1 на 0 значение в вершине стека устанавливается в 1; в противном случае оно устанавливается в 0. Входы/выходы Операнды Типы данных IN (FBD) I, Q, M, SM, T, C, V, S, L, поток сигнала BOOL OUT (FBD) I, Q, M, SM, T, C, V, S, L, поток сигнала BOOL 9-4 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC Примеры контактов LAD STL NETWORK 1 LD I0.0 A I0.1 = Q0.0 NETWORK 2 LD I0.0 NOT = Q 0 1 NETWORK 3 LD I0.1 ED = Q0.2 Network [Сегмент] 1 I0.0 I0.1 Q0.0 Network 2 I0.0 Q0.1 NOT Network 3 I0.1 Q0.2 N FBD Network 1 AND I0.0 Q0.0 I0.1 Network 2 I0.0 Q0.1 = Network 3 N I0.1 Q0.2 Временная диаграмма I0.0 I0.1 Q0.0 Q0.1 Включено в течение одного цикла Q0.2 Рис. 9-1. Примеры булевых команд SIMATIC для LAD, STL и FBD Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-5 Команды SIMATIC Выход L A D Когда выполняется команда Выход, в регистре образа процесса устанавливается выходной бит бит В LAD и FBD при выполнении команды Выход указанный бит устанавливается равным потоку сигнала. бит F B D = S T L В STL команда Выход копирует вершину стека в указанный бит. = бит ✓ ✓ ✓ ✓ 221 222 224 226 Входы/выходы Операнды Типы данных Бит I, Q, M, SM, T, C, V, S, L BOOL Вход (LAD) Поток сигнала BOOL Вход (FBD) I, Q, M, SM, T, C, V, S, L, поток сигнала BOOL Непосредственный выход L A D Когда выполняется команда Непосредственный выход, физический выход (бит или OUT) устанавливается равным потоку сигнала. бит I Символ “I” означает непосредственный доступ; при исполнении команды новое значение записывается в физический выход и в соответствующую ячейку регистра образа процесса. Здесь имеется отличие от других видов доступа, которые записывают новое значение только в регистр образа процесса. бит F B D =I S T L =I бит ✓ ✓ ✓ ✓ 221 222 224 226 Входы/выходы В STL Непосредственный выход копирует вершину стека непосредственно в указанный физический выход (бит). Операнды Типы данных Бит Q BOOL Вход (LAD) Поток сигнала BOOL Вход (FBD) I, Q, M, SM, T, C, V, S, L, поток сигнала BOOL 9-6 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC Установка, сброс (N битов) L A D бит S N бит R N бит F B D S N бит R N S T L S R ✓ 221 бит, N бит, N ✓ ✓ 222 224 ✓ 226 Когда исполняются команды Установка и Сброс, устанавливается (включается) или сбрасывается (выключается) указанное количество разрядов (N), начиная со значения, определенного битом или параметром OUT. Диапазон разрядов, которые могут быть установлены или сброшены, составляет от 1 до 255. При использовании команды Сброс, если указанный бит является битом таймера или счетчика, то сбрасывается как таймер или счетчик, так и текущее значение таймера или счетчика. Ошибки, устанавливающие ENO в 0: SM4.3 (этап исполнения), 0006 (косвенная адресация), 0091 (выход операнда за пределы допустимого диапазона). Входы/выходы Операнды Типы данных бит I, Q, M, SM, T, C, V, S, L BOOL N VB, IB, QB, MB, SMB, SB, LB, AC, константа, *VD, *AC, *LD BYTE Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-7 Команды SIMATIC Непосредственная установка, непосредственный сброс (N битов) L A D бит SI N бит RI N бит F B D SI N бит RI N S T L SI бит, N RI бит, N ✓ ✓ ✓ ✓ Когда исполняются команды Непосредственная установка и Непосредственный сброс, непосредственно устанавливается (включается) или сбрасывается (выключается) указанное количество (N) физических выходов, начиная с адреса «бит» или OUT. Диапазон выходов, которые могут быть установлены или сброшены, составляет от 1 до 128. Символ “I” указывает на непосредственный доступ; при исполнении команды новое значение записывается в физический выход и в соответствующую ячейку регистра образа процесса. Здесь имеется отличие от других видов доступа, которые записывают новое значение только в регистр образа процесса. Ошибки, устанавливающие ENO в 0: SM4.3 (этап исполнения), 0006 (косвенная адресация), 0091 (выход операнда за пределы допустимого диапазона) 221 222 224 226 Входы/выходы бит Операнды Типы данных Q N BOOL VB, IB, QB, MB, SMB, SB, LB, AC, константа, *VD, *AC, *LD BYTE Пустая операция L A D N NOP S T L NOP ✓ 9-8 N ✓ ✓ ✓ 221 222 224 226 Команда Пустая операция не оказывает влияния на исполнение программы пользователя. Эта команда отсутствует в FBD. Операнд N – это число от 0 до 255. Операнды: 255) N: константа (от 0 до Типы данных: BYTE Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC Примеры выходов, установки и сброса LAD STL NETWORK 1 LD I0.0 = Q0.0 S Q0.1, 1 R Q0.2, 2 Network [Сегмент] 1 I0.0 Q0.0 Q0.1 S 1 Q0.2 R 2 FBD Network 1 Q0.0 AND = I0.0 SM0.0 Q0.1 S 1 N Q0.2 R 2 N Временная диаграмма I0.0 Q0.0 Q0.1 Q0.2 Q0.3 Рис. 9-2. Примеры команд SIMATIC Выход, Установка и Сброс для LAD, STL и FBD Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-9 Команды SIMATIC 9.2 Команды SIMATIC для операций сравнения Сравнение байтов L A D Команда Сравнить байты используется для сравнения двух величин: IN1 и IN2. Возможны следующие сравнения: IN1 = IN2, IN1 >= IN2, IN1 <= IN2, IN1 > IN2, IN1 < IN2 и IN1 <> IN2. IN1 ==B IN2 F B D Байты сравниваются без знака. ==B В LAD контакт включен, когда сравнение истинно. В FBD выход включен, когда сравнение истинно. S T L LDB= IN1, IN2 AB= IN1, IN2 OB= IN1, IN2 LDB<> IN1, IN2 AB<> IN1, IN2 OB<> IN1, IN2 В STL, если сравнение истинно, то эти команды загружают «1» в вершину стека или выполняют логическое сопряжение значения «1» со значением в вершине стека в соответствии с таблицей истинности для И или ИЛИ. LDB< IN1, IN2 AB< IN1, IN2 OB< IN1, IN2 LDB<= IN1, IN2 AB<= IN1, IN2 OB<= IN1, IN2 LDB> IN1, IN2 AB> IN1, IN2 OB> IN1, IN2 LDB>= IN1, IN2 AB>= IN1, IN2 OB>= IN1, IN2 ✓ Входы/выходы ✓ ✓ ✓ 221 222 224 226 Операнды Типы данных Входы IB, QB, MB, SMB, VB, SB, LB, AC, константа, *VD, *AC,*LD BYTE Выходы (FBD) I, Q, M, SM, T, C, V, S, L, поток сигнала BOOL 9-10 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC Сравнение целых чисел L A D Команда Сравнить целые числа используется для сравнения двух величин: IN1 и IN2. Возможны следующие сравнения: IN1 = IN2, IN1 >= IN2, IN1 <= IN2, IN1 > IN2, IN1 < IN2 и IN1 <> IN2. IN1 ==I IN 2 F B D ==I Целые числа сравниваются с учетом знака (16#7FFF > 16#8000). В LAD контакт включен, когда сравнение истинно. S T L LDW= IN1, IN2 AW= IN1, IN2 OW= IN1, IN2 LDW<> IN1, IN2 AW<> IN1, IN2 OW<> IN1, IN2 LDW< IN1, IN2 AW< IN1, IN2 OW< IN1, IN2 В FBD выход включен, когда сравнение истинно. В STL, если сравнение истинно, то эти команды загружают «1» в вершину стека или выполняют логическое сопряжение значения «1» со значением в вершине стека в соответствии с таблицей истинности для И или ИЛИ. LDW<= IN1, IN2 AW<= IN1, IN2 OW<= IN1, IN2 LDW> IN1, IN2 AW> IN1, IN2 OW> IN1, IN2 LDW>= IN1, IN2 AW>= IN1, IN2 OW>= IN1, IN2 ✓ ✓ ✓ 221 222 224 226 Входы/выходы ✓ Операнды Типы данных Входы IW, QW, MW, SW, SMW, T, C, VW, LW, AIW, AC, константа, *VD, INT *AC,*LD Выходы (FBD) I, Q, M, SM, T, C, V, S, L, поток сигнала Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 BOOL 9-11 Команды SIMATIC Сравнение двойных слов L A D Команда Сравнить двойные слова используется для сравнения двух величин: IN1 и IN2. Возможны следующие сравнения: IN1 = IN2, IN1 >= IN2, IN1 <= IN2, IN1 > IN2, IN1 < IN2 и IN1 <> IN2. IN1 ==D IN2 F B D Двойные слова сравниваются с учетом знака (16#7FFFFFFF > 16#80000000). ==D В LAD контакт включен, когда сравнение истинно. В FBD выход включен, когда сравнение истинно. S T L LDD= IN1, IN2 AD= IN1, IN2 OD= IN1, IN2 LDD<> IN1, IN2 AD<> IN1, IN2 OD<> IN1, IN2 LDD< IN1, IN2 AD< IN1, IN2 OD< IN1, IN2 В STL, если сравнение истинно, то эти команды загружают «1» в вершину стека или выполняют логическое сопряжение значения «1» со значением в вершине стека в соответствии с таблицей истинности для И или ИЛИ. LDD<= IN1, IN2 AD<= IN1, IN2 OD<= IN1, IN2 LDD> IN1, IN2 AD> IN1, IN2 OD> IN1, IN2 LDD>= IN1, IN2 AD>= IN1, IN2 OD>= IN1, IN2 ✓ ✓ ✓ ✓ 221 222 224 226 Входы/выходы Операнды Типы данных Входы ID, QD, MD, SD, SMD, VD, LD, HC, AC, константа, *VD, *AC, *LD DINT Выходы (FBD) I, Q, M, SM, T, C, V, S, L, поток сигнала 9-12 BOOL Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC Сравнение вещественных чисел L A D Команда Сравнить вещественные числа используется для сравнения двух величин: N1 и IN2. Возможны следующие сравнения: IN1 = IN2, IN1 >= IN2, IN1 <= IN2, IN1 > IN2, IN1 < IN2 и IN1 <> IN2. IN1 ==R IN2 F B D ==R Вещественные числа сравниваются с учетом знака. В LAD контакт включен, когда сравнение истинно. S T L LDR= IN1, IN2 AR= IN1, IN2 OR= IN1, IN2 LDR<> IN1, IN2 AR<> IN1, IN2 OR<> IN1, IN2 LDR< IN1, IN2 AR< IN1, IN2 OR< IN1, IN2 В FBD выход включен, когда сравнение истинно. В STL, если сравнение истинно, то эти команды загружают «1» в вершину стека или выполняют логическое сопряжение значения «1» со значением в вершине стека в соответствии с таблицей истинности для И или ИЛИ. LDR<= IN1, IN2 AR<= IN1, IN2 OR<= IN1, IN2 LDR> IN1, IN2 AR> IN1, IN2 OR> IN1, IN2 LDR>= IN1, IN2 AR>= IN1, IN2 OR>= IN1, IN2 ✓ 221 Входы/выходы ✓ ✓ 222 224 ✓ 226 Операнды Типы данных Входы ID, QD, MD,SD, SMD, VD, LD, AC, константа, *VD, *AC, *LD REAL Выходы (FBD) I, Q, M, SM, T, C, V, S, L, поток сигнала BOOL Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-13 Команды SIMATIC Примеры команд сравнения LAD STL Network [Сегмент] 4 NETWORK 4 LDW>= VW4, VW8 = Q0.3 Q0.3 VW 4 >=I VW 8 FBD Network 4 >=I VW 4 Q0.3 VW 8 Временная диаграмма VW 4 >= VW8 VW 4 < VW8 Q0.3 Рис. 9-3. Примеры команд сравнения SIMATIC для LAD, STL и FBD 9-14 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC 9.3 Таймерные команды SIMATIC Таймер с задержкой включения, таймер с задержкой включения с запоминанием, таймер с задержкой выключения L A D IN F B D Txxx TON PT Txxx TONR IN PT IN Txxx TOF PT S T L TON Txxx, PT TONR Txxx, PT TOF Txxx, PT ✓ ✓ ✓ 221 222 ✓ 224 226 Команды Таймер с задержкой включения (TON) и Таймер с задержкой включения с запоминанием (TONR) отсчитывают время, когда включен разрешающий вход. Когда текущее значение (Txxx) становится больше или равно предустановленному времени (PT), бит таймера устанавливается. Текущее значение Таймера с задержкой включения сбрасывается, когда выключается разрешающий вход, тогда как текущее значение Таймера с задержкой включения с запоминанием сохраняется, когда этот вход выключается. Вы можете использовать Таймер с задержкой включения с запоминанием для накопления времени за несколько периодов, когда включен разрешающий вход. Для стирания текущего значения Таймера с задержкой включения с запоминанием используется команда Сброс (R). Таймер с задержкой включения и Таймер с задержкой включения с запоминанием продолжают счет после достижения предустановленного значения, они останавливают счет при достижении максимального значения, равного 32767. Таймер с задержкой выключения (TOF) используется для задержки выключения выхода на фиксированный интервал времени после выключения входа. Когда включается разрешающий вход, немедленно включается бит таймера, а текущее значение устанавливается в 0. Когда вход выключается, таймер ведет отсчет времени, пока истекшее время не достигнет предустановленного времени. Когда предустановленное время достигнуто, бит таймера сбрасывается, а отсчет текущего значения прекращается. Если выключен в течение более короткого интервала времени, чем предустановленное значение, то бит таймера остается включенным. Команда TOF должна обнаружить переход от включенного состояния к выключенному, чтобы начать отсчет времени. Если таймер TOF находится внутри области SCR, и область SCR не активна, то текущее значение устанавливается в 0, бит таймера выключается, и отсчет текущего значения не ведется. Входы/выходы Операнды Типы данных Txxx Константа WORD IN (LAD) Поток сигнала BOOL IN (FBD) I, Q, M, SM, T, C, V, S, L, поток сигнала BOOL PT VW, IW, QW, MW, SW, SMW, LW, AIW, T, C, AC, константа, *VD, INT *AC, *LD Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-15 Команды SIMATIC Имеется три вида таймеров TON, TONR и TOF, отличающихся разрешением. Разрешение определяется номером таймера, как это показано в таблице 9–1. Любое текущее значение таймера является кратным базы времени. Например, текущее значение 50 на 10– миллисекундном таймере представляет 500 мс. Таблица 9–1. Номера таймеров и разрешения Тип таймера TONR (с запоминанием) TON, TOF (без запоминания) Разрешение в миллисекундах (мс) Максимальное значение в секундах (с) Номер таймера 1 мс 32,767 с (0,546 мин.) T0, T64 10 мс 100 мс 1 мс 327,67 с (0,546 мин.) T1 − T4, T65 − T68 3276,7 с (0,546 мин.) T5 − T31, T69 − T95 32,767 с (0,546 мин.) T32, T96 10 мс 100 мс 327,67 с (0,546 мин.) T33 − T36, T97 − T100 3276,7 с (0,546 мин.) T37 − T63, T101 − T255 Примечание Таймеры TOF и TON не могут иметь один и тот же номер. Например, у вас не могут одновременно использоваться TON Т32 и TOF Т32. Описание таймерных команд S7–200 Вы можете использовать таймеры для реализации функций отсчета времени. Набор команд S7–200 предоставляет в ваше распоряжение три типа таймеров, показанных ниже. В таблице 9–2 описаны действия, выполняемые различными таймерами. 9-16 • Таймер с задержкой включения (TON) для отсчета одиночного интервала. • Таймер с задержкой включения с запоминанием (TONR) для накапливания отсчитанных интервалов времени. • Таймер с задержкой выключения (TOF) для увеличения интервала времени после сбойных ситуаций, например, для охлаждения двигателя после его отключения. Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC Таблица 9–2. Действия таймеров Тип таймера TON TONR TOF 1 Текущее >= предустановленного Бит таймера установлен, отсчет текущего значения продолжается до 32 767 Бит таймера установлен, отсчет текущего значения продолжается до 32 767 Бит таймера сброшен, текущее значение = предустановленному, отсчет времени прекращен Разрешающий вход включен Разрешающий вход выключен Текущее значение отсчитывает время Бит таймера сброшен, текущее значение = 0 Текущее значение отсчитывает время Бит таймера и текущее значение сохраняют последнее значение Отсчет времени ведется после перехода от включенного состояния к выключенному Бит таймера установлен, текущее значение = 0 Выключениевключение питания / первый цикл Бит таймера сброшен, текущее значение = 0 Бит таймера сброшен, текущее значение может1 быть сохранено Бит таймера сброшен, текущее значение = 0 Текущее значение таймера с запоминанием может быть выбрано для сохранения на время выключениявключения питания. Информацию о сохранении памяти для CPU S7–200 вы найдете в разделе 5.3. Примечание Для сброса любого таймера может быть использована команда Сброс (R). Команда Сброс выполняет следующие операции: Бит таймера сброшен. Текущее значение = 0. Таймер TONR может быть сброшен только командой Сброс. После сброса таймеры TOF, чтобы перезапуститься, требуют наличия разрешающего входа для перехода из включенного состояния в выключенное. Действия таймеров с различными разрешениями объяснены ниже. Разрешение 1 миллисекунда Таймеры с разрешением 1 мс отсчитывают количество интервалов времени длиной 1 мс, прошедших с момента, когда активный 1миллисекундный таймер был разблокирован. Выполнение таймерной команды запускает отсчет времени; однако 1-миллисекундные таймеры обновляют бит таймера и текущее значение каждую миллисекунду асинхронно с циклом обработки программы. Иначе говоря, бит таймера и текущее значение обновляются несколько раз в течение цикла сканирования, имеющего длительность более 1 мс. Таймерная команда используется для включения таймера, сброса таймера и, в случае таймера TONR, для выключения таймера. Так как таймер может быть запущен в любой момент интервала в 1 мс, предустановленное время должно быть установлено на один отсчет времени больше, чем минимальное желаемое время работы таймера. Например, чтобы гарантировать интервал работы таймера не менее 56 мс с помощью 1-миллисекундного таймера, предустановленное значение должно быть равно 57. Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-17 Команды SIMATIC Разрешение 10 миллисекунд Таймеры с разрешением 10 мс отсчитывают количество интервалов времени длиной 10 мс, прошедших с момента, когда активный 10миллисекундный таймер был разблокирован. Выполнение таймерной команды запускает отсчет времени; однако, 10-миллисекундные таймеры актуализируются в начале каждого цикла сканирования (иными словами, текущее значение таймера и бит таймера остаются неизменными на протяжении цикла) путем добавления накопленного количества 10– миллисекундных интервалов (с начала предыдущего цикла) к текущему значению для активного таймера. Так как таймер может быть запущен в любой момент интервала в 10 мс, предустановленное время должно быть установлено на один отсчет времени больше, чем минимальное желаемое время работы таймера. Например, чтобы гарантировать интервал работы таймера не менее 140 мс с помощью 10-миллисекундного таймера, предустановленное значение должно быть равно 15. Разрешение 100 миллисекунд Таймеры с разрешением 100 мс отсчитывают количество интервалов времени длиной 100 мс, прошедших с момента, когда активный 100миллисекундный таймер был последний раз актуализирован. Эти таймеры актуализируются путем добавления накопленного количества 100–миллисекундных интервалов (с начала предыдущего цикла сканирования) к текущему значению таймера, когда выполняется таймерная команда. Текущее значение 100-миллисекундного таймера обновляется только в том случае, если исполняется таймерная команда. Следовательно, если 100-миллисекундный таймер разблокирован, но таймерная команда выполняется не в каждом цикле, то текущее значение для этого таймера не актуализируется, и он теряет время. Аналогично, если один и тот же 100-миллисекундный таймер выполняется несколько раз в одном цикле сканирования, то число 100-миллисекундных интервалов добавляется к текущему значению таймера несколько раз, и он увеличивает свое время. 100-миллисекундные таймеры должны использоваться там, где команда таймера исполняется ровно один раз за цикл сканирования. Так как таймер может быть запущен в любой момент интервала в 100 мс, предустановленное время должно быть установлено на один отсчет времени больше, чем минимальное желаемое время работы таймера. Например, чтобы гарантировать интервал работы таймера не менее 2100 мс с помощью 10-миллисекундного таймера, предустановленное значение должно быть равно 22. Обновление текущего значения таймера Воздействие различных способов обновления текущих значений времени зависит от того, как таймеры используются. Например, рассмотрим работу таймера, показанного на рис. 9–4. • При использовании 1-миллисекундного таймера (1) Q0.0 включается на один цикл всякий раз, когда обновляется текущее значение таймера, а именно, после срабатывания нормально замкнутого контакта T32 и перед срабатыванием нормально открытого контакта T32. 9-18 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC • При использовании 10-миллисекундного таймера (2) Q0.0 никогда не включается, так как бит таймера T33 включен с начала цикла до момента времени, когда исполняется таймерный блок. После исполнения таймерного блока текущее значение и бит таймера сбрасываются в ноль. Если срабатывает нормально открытый контакт T33, то Т33 выключается и Q0.0 тоже выключается. • При использовании 100-миллисекундного таймера (3) Q0.0 включается на один цикл всякий раз, когда текущее значение таймера достигает предустановленного значения. При использовании в качестве разрешающего входа в блок таймера нормально замкнутого контакта Q0.0 вместо бита таймера гарантируется, что выход Q0.0 будет включен на один цикл каждый раз, как таймер достигнет предустановленного значения. (1) Неверно T32 / 300 T32 (2) Неверно Q0.0 / PT T32 IN TON PT 300 T32 Q0.0 Использование 10-миллисекундного таймера T33 IN TON 30 Верно Исправлено T33 IN TON Q0.0 / PT Q0.0 T33 30 PT T33 Q0.0 Использование 100-миллисекундного таймера T37 / T37 IN TON 3 T37 T32 IN TON Q0.0 T33 / (3) Использование 1-миллисекундного таймера Исправлено Q0.0 / PT Q0.0 T37 IN TON 3 T37 Лучше PT Q0.0 Рис. 9-4. Пример автоматического перезапуска таймера Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-19 Команды SIMATIC Пример таймера с задержкой включения LAD I2.0 IN 3 FBD T33 TON T33 TON I2.0 PT +3 IN PT STL LD I2.0 TON T33, 3 Временная диаграмма I2.0 Максимальное значение = 32767 T33 (текущее значение) PT = 3 PT = 3 T33 (бит) Рис. 9-5. Пример команды SIMATIC «Таймер с задержкой включения» для LAD, FBD и STL 9-20 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC Пример таймера с задержкой включения с запоминанием LAD FBD T2 I2.1 T2 TONR IN TONR 10 I2.1 PT +10 IN PT STL LD I2.1 TONR T2, 10 Временная диаграмма I2.1 Максимальное значение = 32767 PT = 10 T2 (текущее значение) T2 (бит) Рис. 9-6. Пример команды SIMATIC «Таймер с задержкой включения с запоминанием» для LAD, FBD и STL Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-21 Команды SIMATIC Пример таймера с задержкой выключения FBD LAD T33 I0.0 IN 3 TOF PT T33 TOF I0.0 IN +3 PT STL LD I0.0 TOF T33, 3 Временная диаграмма I0.0 PT = 3 PT = 3 T33 (текущее значение) T33 (бит) Рис. 9-7. Пример команды SIMATIC «Таймер с задержкой выключения» для LAD, FBD и STL 9-22 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC 9.4 Команды SIMATIC для операций счета Прямой, реверсивный и обратный счет L A D Cxxx CU CTU F B D R PV Cxxx CUCTUD CD R PV Cxxx CD CTD LD PV S T L CTU Cxxx, PV CTUD Cxxx, PV CTD Cxxx, PV ✓ ✓ ✓ 221 222 ✓ 224 226 Команда Прямой счет увеличивает значение счетчика вплоть до максимального значения при появлении нарастающих фронтов сигнала на входе CU (Count Up = Прямой счет). Когда текущее значение (Сххх) больше или равно предустановленному значению (PV), бит счетчика (Cxxx) устанавливается. Счетчик сбрасывается, когда включается вход сброса ®. Он прекращает счет при достижении PV. Команда Реверсивный счет увеличивает значение счетчика при появлении нарастающих фронтов сигнала на входе CU (Count Up = Прямой счет).Она уменьшает значение счетчика при появлении нарастающих фронтов сигнала на входе CD (Count Down = Обратный счет). Когда текущее значение (Сххх) больше или равно предустановленному значению (PV), бит счетчика (Cxxx) устанавливается. Счетчик сбрасывается, когда включается вход сброса ®. Команда Обратный счет уменьшает значение счетчика от предустановленного значения при появлении нарастающих фронтов сигнала на входе CD (Count Down = Обратный счет). Когда текущее значение равно нулю, бит счетчика (Cxxx) включается. Счетчик сбрасывает свой бит (Cxxx) и загружает текущее значение предустановленным значением (PV), когда включается вход загрузки (LD). Обратный счет прекращается при достижении нуля. Область счетчиков: Cxxx = C0 ÷ C255 В STL входу сброса CTU соответствует значение, находящееся в вершине стека, а входу Прямой счет – значение, загруженное во второй уровень стека. В STL входу сброса CTUD соответствует значение, находящееся в вершине стека, входу Обратный счет – значение, загруженное во второй уровень стека, а входу Прямой счет – значение, загруженное в третий уровень стека. В STL входу загрузки CTD соответствует вершина стека, а входу Обратный счет – значение, загруженное во второй уровень стека. Входы/выходы Операнды Типы данных Cxxx Константа WORD CU, CD, LD, R (LAD) Поток сигнала BOOL CU, CD, R, LD (FBD) I, Q, M, SM, T, C, V, S, L, поток сигнала BOOL PV VW, IW, QW, MW, SMW, LW, SW, AIW, AC, T, C, константа, *VD, INT *AC, *LD Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-23 Команды SIMATIC Описание команд счета S7–200 Прямой счетчик (CTU) увеличивает свое текущее значение каждый раз, когда на входе прямого счета происходит переход от выключенного состояния к включенному. Счетчик сбрасывается, когда включается вход сброса или когда выполняется команда Сброс. Счетчик останавливается при достижении максимального значения (32 767). Реверсивный счетчик (CTUD) увеличивает свое значение каждый раз, когда на входе прямого счета происходит переход от выключенного состояния к включенному, и уменьшает свое значение каждый раз, когда переход от выключенного состояния к включенному происходит на входе обратного счета. Счетчик сбрасывается, когда включается вход сброса или когда выполняется команда Сброс. При достижении максимального значения (32 767) следующий нарастающий фронт на входе прямого счета вызывает переход к минимальному значению (-32 768). Аналогично, при достижении минимального значения (-32 768) следующий нарастающий фронт на входе обратного счета вызывает переход к максимальному значению (32 767). Прямой и реверсивный счетчики имеют текущее значение, в котором хранится текущее значение счета. У них есть также предустановленное значение (PV), которое сравнивается с текущим значением всякий раз, когда выполняется команда счета. Если текущее значение больше или равно предустановленному значению, то бит счетчика (C–бит) устанавливается. В противном случае C–бит выключается. Обратный счетчик уменьшает свое текущее значение каждый раз, когда на входе обратного счета происходит переход от выключенного состояния к включенному. Счетчик сбрасывает бит счетчика и загружает текущее значение предустановленным значением, когда включается вход загрузки. Счетчик останавливается при достижении нуля, его бит (C–бит) при этом устанавливается. Если вы сбрасываете счетчик с помощью команды Сброс, то бит счетчика сбрасывается, а текущее значение устанавливается в ноль. Для обращения как к текущему значению, так и к C-биту используется номер счетчика. Примечание Так как для каждого счетчика имеется только одно текущее значение, не назначайте один и тот же номер более, чем одному счетчику (прямые, реверсивные и обратные счетчики с одним и тем же номером обращаются к одному и тому же текущему значению). 9-24 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC Примеры счетчиков FBD LAD I3.0 CD C50 C50 CTD I3.0 CD I1.0 LD +3 PV CTD I1.0 LD 3 PV STL LD I3.0 //Вход обратного счета LD I1.0 //Вход загрузки CTD C50, 3 Временная диаграмма I3.0 Обратный счет I1.0 Загрузка C50 (текущее значение) 0 3 3 2 2 1 0 C50 (бит) Рис. 9–8. Пример команды SIMATIC «Обратный счетчик» (CTD) для LAD, FBD и STL Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-25 Команды SIMATIC FBD LAD C48 C48 I4.0 CU CTUD CTUD I4.0 CU I3.0 CD I2.0 R I3.0 CD I2.0 R 4 +4 PV PV STL LD I4.0 //Вход прямого счета LD I3.0 //Вход обратного счета LD I2.0 //Вход сброса CTUD C48, 4 Временная диаграмма I4.0 Прямой счет I3.0 Обратный счет I2.0 Сброс 4 C48 (текущее значение) 0 1 2 3 5 4 4 5 3 0 C48 (бит) Рис. 9-9. Пример команды SIMATIC «Реверсивный счетчик» (CTUD) для LAD, FBD и STL 9-26 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC 9.5 Команды SIMATIC для скоростного счета Определение скоростного счетчика, Скоростной счетчик L A D HDEF EN ENO HSC MODE HSC EN ENO N S T L HDEF HSC, MODE HSC N ✓ ✓ ✓ 221 222 ✓ 224 226 Команда Определение скоростного счетчика (HDEF) назначает режим(MODE) скоростному счетчику (HSC), к которому производится обращение. См. табл. 9–5 на стр. 9–33. Команда Скоростной счетчик (HSC) при своем исполнении конфигурирует и управляет режимом работы скоростного счетчика, основанном на состоянии специальных битов памяти HSC. Параметр N определяет номер скоростного счетчика. CPU 221 и CPU 222 не поддерживают HSC1 и HSC2. На один счетчик может быть использован только один блок HDEF. HDEF: Ошибки, устанавливающие ENO в 0: SM4.3 (этап исполнения), 0003 (конфликт входов), 0004 (недопустимая команда в прерывании), 000A (повторное определение HSC) HSC: Ошибки, устанавливающие ENO в 0: SM4.3 (этап исполнения), 0001 (HSC перед HDEF), 0005 (одновременно HSC/PLS) Входы/выходы Операнды Типы данных HSC Константа BYTE MODE Константа BYTE N Константа WORD Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-27 Команды SIMATIC Описание команд Скоростной счетчик Скоростные счетчики считают происходящие с высокой скоростью события, которые не могут контролироваться при скорости сканирования CPU. Они могут быть сконфигурированы на двенадцать различных режимов работы. Режимы счетчиков перечислены в таблице 9–5. Максимальная частота счета скоростного счетчика зависит от типа вашего CPU. Информацию о вашем CPU вы найдете в Приложении G. Каждый счетчик имеет специализированные входы, которые поддерживают такие функции, как датчик тактовых импульсов, управление направлением, сброс и запуск. Для двухфазных счетчиков оба датчика тактовых импульсов могут работать со своей максимальной скоростью. В квадратурных режимах предоставляется возможность выбора однократной (1х) или четырехкратной (4х) скорости счета. Все счетчики работают с максимальной скоростью, не создавая помех друг другу. 9-28 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC Использование скоростных счетчиков Обычно скоростные счетчики используются в качестве привода для счетных механизмов, в которых вал, вращающийся с постоянной скоростью, снабжен угловым шаговым датчиком. Угловой шаговый датчик дает определенное количество отсчетов на оборот, а также импульс сброса один раз за оборот. Датчик (датчики) тактовых импульсов и импульс сброса от углового шагового датчика обеспечивают входы для скоростного счетчика. Скоростной счетчик загружается первым из нескольких предустановленных значений, и желаемые выходы активизируются на интервал времени, в течение которого текущее значение счетчика меньше текущего предустановленного значения. Счетчик настроен таким образом, что, когда текущее значение счетчика становится равным предустановленному значению, или при появлении сброса происходит прерывание. Когда при равенстве текущего значения счетчика и предустановленного значения происходит прерывающее событие, загружается новое предустановленное значение, и устанавливается следующее состояние для выходов. Когда происходит событие, вызывающее прерывание по сбросу, то устанавливаются первое предустановленное значение и первые состояния выходов, и цикл повторяется. Так как прерывания происходят со значительно меньшей частотой, чем считает скоростной счетчик, то может быть реализовано точное управление быстрыми операциями при относительно малом воздействии на общий цикл обработки программы программируемого логического контроллера. Метод подключения прерываний позволяет выполнять каждую загрузку нового предустановленного значения в отдельной программе обработки прерывания для облегчения управления состоянием, делая программу простой и легкой для понимания. Конечно, все события, вызывающие прерывания, могут быть обработаны и в одной единственной программе обработки прерываний. За дополнительной информацией о командах прерывания обратитесь к разделу 9.15. Описание временных диаграмм для скоростных счетчиков Следующие временные диаграммы (рисунки 9–10 ÷ 9–16) показывают, как работает каждый счетчик в соответствии с режимом. Работа входов сброса и запуска показана на отдельной временной диаграмме, которая применима ко всем режимам, использующим входы сброса и запуска. На диаграммах для входов сброса и запуска активность обоих входов запрограммирована для высокого уровня сигнала. Генерируется прерывание по сбросу Сброс (активен при высоком уровне) 1 0 +2 147 483 647 Текущее значение счетчика 0 -2 147 483 648 Значение счетчика находится где-то в этом диапазоне Рис. 9-10. Пример работы счетчика с входом сброса, но без входа запуска Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-29 Команды SIMATIC Счетчик блокирован Пуск (активен при высоком уровне) 1 0 Сброс (активен при высоком уровне) 1 Генерируется прерывание по сбросу Счетчик Счетчик разблоблокикирован рован Генерируется прерывание по сбросу Счетчик разблокирован 0 +2 147 483 647 Текущее значение счетчика Текущее значение заморожено 0 Текущее значение заморожено -2 147 483 648 Текущее значение находится где-то в этом диапазоне. Рис. 9-11. Пример работы счетчика с входами сброса и запуска Датчик тактовых импульсов 1 0 В качестве текущего значения загружен 0, в качестве предустановленного значения 4, направление счета – вперед. Бит деблокировки счетчика установлен на «разблокирован». Генерируется прерывание по PV=CV Изменение направления в программе прерывания Внутреннее 1 управление 0 направлением (1 = вперед) 4 3 Текущее значение счетчика 3 2 1 2 1 0 0 -1 Рис. 9-12. Пример работы в режимах 0, 1 или 2 9-30 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC В качестве текущего значения загружен 0, в качестве предустановленного значения 4, направление счета – вперед. Бит деблокировки счетчика установлен на «разблокирован». Генерируется прерывание по PV=CV Датчик тактовых импульсов Генерируется прерывание по PV=CV и прерывание по изменению направления 1 0 Внешнее 1 управление 0 направлением (1 = вперед) 5 4 4 3 3 2 2 1 Текущее значение счетчика 0 1 Рис. 9-13. Пример работы в режимах 3, 4 или 5 Когда используются режимы счета 6, 7 или 8, и в течение 0,3 микросекунды друг за другом появляется нарастающий фронт на тактовых входах счета вперед и счета назад, скоростной счетчик может рассматривать эти события как происходящие одновременно. Если это происходит, то текущее значение не меняется и не отображается изменение в направлении счета. Если между поступлениями нарастающих фронтов на тактовые входы счета вперед и счета назад проходит больше 0,3 микросекунды, то скоростной счетчик воспринимает эти события отдельно. В этом случае ошибки не происходит, и счетчик сохраняет правильное счетное значение. См. рисунки 9–14, 9–15 и 9–16. В качестве текущего значения загружен 0, в качестве предустановленного значения 4, начальное направление счета – вперед. Бит деблокировки счетчика установлен на «разблокирован». Генерируется прерывание по PV=CV Датчик тактовых 1 импульсов, счет вперед0 Генерируется прерывание по PV=CV и прерывание по изменению направления Датчик тактовых 1 импульсов, счет назад 0 5 4 3 2 Текущее значение счетчика 0 1 4 3 2 1 Рис. 9-14. Пример работы в режимах 6, 7 или 8 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-31 Команды SIMATIC В качестве текущего значения загружен 0, в качестве предустановленного значения 3, начальное направление счета – вперед. Бит деблокировки счетчика установлен на «разблокирован». Генерируется прерывание по PV=CV и прерывание по Генерируется изменению направления прерывание по PV=CV Генератор тактовых импульсов1 0 Фаза A Генератор1 тактовых импульсов0 Фаза B 4 3 Текущее значение счетчика 3 2 2 1 0 Рис. 9-15. Пример работы в режимах 9, 10 или 11 (квадратурный режим, 1-кратная скорость) В качестве текущего значения загружен 0, в качестве предустановленного значения 9, начальное направление счета – вперед. Бит деблокировки счетчика установлен на «разблокирован». Генератор тактовых импульсов Фаза A Генератор тактовых импульсов Фаза B Генерируется прерывание по PV=CV Генерируется прерывание по изменению направления 1 0 Генерируется прерывание по PV=CV 1 0 12 11 10 9 8 7 6 11 10 9 8 7 6 5 4 3 2 Текущее значение счетчика 0 1 Рис. 9-16. Пример работы в режимах 9, 10 или 11 (квадратурный режим, 4кратная скорость) 9-32 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC Подключение входов скоростных счетчиков В таблице 9–3 показаны входы для таких функций скоростных счетчиков, как генератор тактовых импульсов, управление направлением, сброс и запуск. Эти функции входов и режимы работы скоростных счетчиков описаны в таблицах 9–5 ÷ 9–10. Таблица 9–3. Специализированные входы скоростных счетчиков Скоростной счетчик Используемые входы HSC0 I0.0, I0.1, 0.2 HSC1 I0.6, I0.7, I1.0, I1.1 HSC2 I1.2, I1.3, I1.4, I1.5 HSC3 I0.1 HSC4 I0.3, I0.4, I0.5 HSC5 I0.4 Как показано в выделенной серым цветом области таблицы 9–4, имеется некоторое перекрытие в назначении входов для некоторых скоростных счетчиков и прерываний по фронту сигнала. Один и тот же вход не может быть использован для двух разных функций, но любой вход, не используемый текущим режимом скоростного счетчика, может быть использован для другой цели. Например, если HSC0 используется в режиме 2, который использует I0.0 и I0.2, то I0.1 может быть использован для прерываний по фронту сигнала или для HSC3. Если используется режим HSC0, который не использует вход I0.1, то этот вход доступен для использования или как HSC3, или для прерываний по фронту сигнала. Аналогично, если I0.2 не используется в выбранном режиме HSC0, то этот вход доступен для прерываний по фронту сигнала; и если I0.4 не используется в выбранном режиме HSC4, то этот вход доступен для HSC5. Примите во внимание, что все режимы HSC0 всегда используют I0.0, а все режимы HSC4 всегда используют I0.3, так что эти входы не бывают доступными для других целей, когда используются данные счетчики. Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-33 Команды SIMATIC Таблица 9–4. Назначения входов для скоростных счетчиков и прерываний по фронту сигнала Элемент HSC0 0.0 0.1 0.2 x x 0.3 0.4 Вход (I) 0.5 0.6 0.7 1.0 1.1 1.2 1.4 1.5 x HSC1 x x x x HSC2 x HSC3 1.3 x x x x HSC4 x HSC5 x x x Прерывания по фронту x x x x Таблица 9–5. Режимы работы HSC0 (CPU 221, CPU 222, CPU 224 и CPU 226) HSC0 Режим Описание 0 Однофазный реверсивный счетчик с внутренним управлением направлением SM37.3 = 0, счет назад SM37.3 = 1, счет вперед 1 3 Однофазный реверсивный счетчик с внешним управлением направлением I0.1 = 0, счет назад I0.1 = 1, счет вперед 4 6 Двухфазный счетчик с тактовыми входами для счета вперед и назад 7 9 I0.0 Тактовый генератор I0.1 I0.2 Сброс Тактовый Напгене- равл. ратор Сброс Такт. генер. (вперед) Такт. генер. (назад) Такт. генер. Фаза A Такт. генер. Фаза B Сброс Квадратурный счетчик с фазами A и B, фаза A опережает B на 90 градусов при вращении по часовой стрелке, фаза B опережает A на 90 градусов при вращении против часовой стрелки 10 Сброс 9-34 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC Таблица 9–6. Режимы работы HSC1 (CPU 224 и CPU 226) HSC1 Режим Описание Однофазный реверсивный счетчик с внутренним 0 управлением направлением 1 SM47.3 = 0, счет назад 2 SM47.3 = 1, счет вперед 3 4 5 6 7 8 9 10 11 I0.6 Тактовый генератор Однофазный реверсивный счетчик с внешним управлением направлением I0.7 = 0, счет назад I0.7 = 1, счет вперед Двухфазный счетчик с тактовыми входами для счета вперед и назад Тактовый генератор Такт. генер. (вперед) Квадратурный счетчик с фазами A и B, Такт. фаза A опережает B на 90 градусов при вращении по генер. Фаза часовой стрелке, A фаза B опережает A на 90 градусов при вращении против часовой стрелки I0.7 I1.0 I1.1 Сброс Пуск Направл. Сброс Пуск Такт. генер. Сброс (наПуск зад) Такт. генер. Сброс Фаза Пуск B Таблица 9–7. Режимы работы HSC2 (CPU 224 и CPU 226) HSC2 Режим 0 1 2 3 4 5 6 7 8 9 10 11 Описание Однофазный реверсивный счетчик с внутренним управлением направлением SM57.3 = 0, счет назад SM57.3 = 1, счет вперед Однофазный реверсивный счетчик с внешним управлением направлением I1.3 = 0, счет назад I1.3 = 1, счет вперед Двухфазный счетчик с тактовыми входами для счета вперед и назад I1.2 I1.4 Тактовый генератор Сброс Тактовый Напгене- равл. ратор Сброс Такт. генер. (вперед) Квадратурный счетчик с фазами A и B, Такт. фаза A опережает B на 90 градусов при вращении по генер. Фаза часовой стрелке, A фаза B опережает A на 90 градусов при вращении против часовой стрелки Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 I1.3 I1.5 Пуск Пуск Такт. генер. Сброс (наПуск зад) Такт. генер. Сброс Фаза Пуск B 9-35 Команды SIMATIC Таблица 9–8. Режимы работы HSC3 (CPU 221, CPU 222, CPU 224 и CPU 226) HSC3 Режим 0 Описание I0.1 Однофазный реверсивный счетчик с внутренним управлением направлением SM137.3 = 0, счет назад SM137.3 = 1, счет вперед Тактовый генератор Таблица 9–9. Режимы работы HSC4 (CPU 221, CPU 222, CPU 224 и CPU 226) HSC4 Режим 0 1 3 4 Описание I0.3 Тактовый генератор Сброс Однофазный реверсивный счетчик с внешним управлением направлением I0.4 = 0, счет назад I0.4 = 1, счет вперед Такто- Напвый равл. генератор Сброс Двухфазный счетчик с тактовыми входами для счета вперед и назад 7 9 10 I0.5 Однофазный реверсивный счетчик с внутренним управлением направлением SM147.3 = 0, счет назад SM147.3 = 1, счет вперед Такт. генер. (вперед) Квадратурный счетчик с фазами A и B, Такт. фаза A опережает B на 90 градусов при вращении по генер. Фаза часовой стрелке, A фаза B опережает A на 90 градусов при вращении против часовой стрелки 6 I0.4 Такт. генер. Сброс (назад) Такт. генер. Фаза Сброс B Таблица 9–10. Режимы работы HSC5 (CPU 221, CPU 222, CPU 224 и CPU 226) HSC5 Режим 0 Описание Однофазный реверсивный счетчик с внутренним управлением направлением SM157.3 = 0, счет назад SM157.3 = 1, счет вперед 9-36 I0.4 Тактовый генератор Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC Адресация скоростных счетчиков (HC) Для доступа к счетному значению скоростного счетчика указывается адрес этого счетчика с помощью типа памяти (HC) и номера счетчика (например, HC0). Текущее значение скоростного счетчика может быть только считано и, как показано на рис. 9–17, может быть адресовано только как двойное слово (32 бита). Формат: HC[номер скоростного счетчика] MSB 31 HC2 LSB 0 HC2 Старший байт Байт 3 Младший байт Байт 2 Байт 1 Байт 0 HC 2 Номер скоростного счетчика Идентификатор области (скоростной счетчик) Рис. 9-17. Доступ к текущему значению скоростного счетчика Описание различных скоростных счетчиков Все счетчики в одном и том же режиме работают одинаково. Как показано в таблице 9–5, имеется четыре основных режима для счетчиков. Обратите внимание, что каждый счетчик поддерживает не все режимы. Каждый счетчик можно использовать: без входов сброса и пуска, со сбросом, но без пуска, или с входами пуска и сброса. Когда вы активизируете вход сброса, он сбрасывает текущее значение и сохраняет его сброшенным, пока вы не деактивизируете сброс. Когда вы активизируете вход пуска, он разрешает счетчику считать. Если вход пуска деактивизирован, текущее значение счетчика остается постоянным, а тактовые события игнорируются. Если сброс активизируется, когда пуск неактивен, то сброс игнорируется, а текущее значение не изменяется. Если вход пуска становится активным, когда активен вход сброса, текущее значение сбрасывается. Перед использованием скоростного счетчика вы должны выбрать его режим. Вы можете сделать это с помощью команды HDEF (High–Speed Counter Definition = Определение скоростного счетчика). HDEF устанавливает соответствие между скоростным счетчиком (HSCx) и режимом работы. Для каждого скоростного счетчика можно использовать только одну команду HDEF. Определяйте скоростной счетчик с помощью бита памяти первого цикла SM0.1 (этот бит включен в течение первого цикла обработки программы, а затем выключается), чтобы вызвать подпрограмму, которая содержит команду HDEF. Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-37 Команды SIMATIC Выбор активного состояния и однократной или четырехкратной скорости Четыре счетчика имеют три управляющих бита, которые используются для конфигурирования активного состояния входов сброса и пуска и для выбора односкоростного или четырехскоростного режима счета (только для квадратурных счетчиков). Эти биты находятся в управляющем байте соответствующего счетчика и используются только тогда, когда выполняется команда HDEF. Эти биты определены в таблице 9–11. Вы должны установить эти управляющие биты в соответствии с желаемым состоянием до исполнения команды HDEF. В противном случае счетчик принимает конфигурацию, определенную по умолчанию для выбранного режима работы счетчика. По умолчанию входы сброса и пуска активны при высоком уровне сигнала, а в квадратурных счетчиках скорость счета установлена четырехкратной (по отношению к частоте входного датчика тактовых импульсов). Если команда HDEF была выполнена, вы не можете изменить настройку счетчика, не переведя сначала CPU в состояние STOP. Таблица 9–11. Активный уровень для управляющих битов сброса, пуска и выбора 1-кратной или 4-кратной скорости HSC0 HSC1 HSC2 HSC4 Описание (используются только при исполнении HDEF) SM37.0 SM47.0 SM57.0 SM147.0 Активный уровень управляющего бита для сброса: 0 = сброс активен при высоком уровне; 1 = сброс активен при низком уровне -- SM47.1 SM57.1 -- Активный уровень управляющего бита для пуска: 0 = пуск активен при высоком уровне; 1 = пуск активен при низком уровне SM37.2 SM47.2 SM57.2 SM147.2 Выбор скорости счета для квадратурных счетчиков: 0 = 4-кратная скорость; 1 = 1-кратная скорость 9-38 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC Управляющий байт Определив счетчик и режим его работы, вы можете программировать динамические параметры счетчика. Каждый скоростной счетчик имеет управляющий байт, который позволяет разблокировать или заблокировать счетчик; управлять направлением (только для режимов 0, 1 и 2) или устанавливать начальное направление счета для всех остальных режимов; загружать текущее значение; загружать предустановленное значение. Проверка управляющего байта и соответствующих текущего и предустановленного значений производится при выполнении команды HSC. В таблице 9–12 описан каждый из этих управляющих битов. Таблица 9–12. Управляющие биты для HSC0, HSC1 и HSC2 HSC0 HSC1 HSC2 HSC3 HSC4 HSC5 Описание SM37.3 SM47.3 SM57.3 SM137.3 SM147.3 SM157.3 Бит управления направлением счета: 0 = счет назад; 1 = счет вперед SM37.4 SM47.4 SM57.4 SM137.4 SM147.4 SM157.4 Записать направление счета в HSC: 0 = не актуализировать; 1 = актуализировать направление SM37.5 SM47.5 SM57.5 SM137.5 SM147.5 SM157.5 Записать новое предустановленное значение в HSC: 0 = не актуализировать; 1 = актуализировать предустановленное значение SM37.6 SM47.6 SM57.6 SM137.6 SM147.6 SM157.6 Записать новое текущее значение в HSC: 0 = не актуализировать; 1 = актуализировать текущее значение SM37.7 SM47.7 SM57.7 SM137.7 SM147.7 SM157.7 Разблокировка HSC: 0 = заблокировать HSC; 1 = разблокировать HSC Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-39 Команды SIMATIC Установка текущего и предустановленного значений Каждый скоростной счетчик имеет 32–битное текущее значение и 32– битное предустановленное значение. Оба значения являются целыми числами со знаком. Чтобы загрузить новое текущее или предустановленное значение, вы должны настроить управляющий байт и байты специальной памяти, содержащие текущее и/или предустановленное значение. Затем вы должны выполнить команду HSC, чтобы новые значения были переданы в скоростной счетчик. Таблица 9– 13 описывает байты специальной памяти, используемые для хранения новых текущих и предустановленных значений. В дополнение к управляющим байтам и байтам, содержащим новые текущие и предустановленные значения, текущее значение каждого скоростного счетчика может быть прочитано путем задания типа данных HC, за которым следует номер (0, 1, 2, 3, 4 или 5) счетчика. Таким образом, текущее значение непосредственно доступно для операций чтения, но оно может быть записано только с помощью описанной выше команды HSC. Таблица 9–13. Текущее и предустановленное значения HSC0, HSC1, HSC2, HSC3, HSC4 и HSC5 Загружаемое значение HSC3 HSC4 HSC5 SMD38 SMD48 SMD58 SMD138 SMD148 SMD158 Новое предустановленное SMD42 SMD52 SMD62 SMD142 SMD152 SMD162 Новое текущее 9-40 HSC0 HSC1 HSC2 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC Байт состояния Каждому скоростному счетчику поставлен в соответствие байт состояния, предоставляющий в распоряжение биты памяти, указывающие текущее направление счета, а также информацию о том, действительно ли текущее значение больше или равно предустановленному. Таблица 9–14 определяет эти биты состояния для каждого скоростного счетчика. Таблица 9–14. Биты состояния для HSC0, HSC1, HSC2, HSC3, HSC4 и HSC5 HSC0 HSC1 HSC2 HSC3 SM36.0 SM46.0 SM56.0 SM136.0 HSC4 HSC5 Описание SM146.0 SM156.0 Не используются SM36.1 SM46.1 SM56.1 SM136.1 SM146.1 SM156.1 Не используются SM36.2 SM46.2 SM56.2 SM136.2 SM146.2 SM156.2 Не используются SM36.3 SM46.3 SM56.3 SM136.3 SM146.3 SM156.3 Не используются SM36.4 SM46.4 SM56.4 SM136.4 SM146.4 SM156.4 Не используются SM36.5 SM46.5 SM56.5 SM136.5 SM146.5 SM156.5 Бит состояния текущего направления счета: 0 = счет назад; 1 = счет вперед SM36.6 SM46.6 SM56.6 SM136.6 SM146.6 SM156.6 Бит состояния, указывающий, равно ли текущее значение предустановленному: 0 = не равно; 1 = равно SM36.7 SM46.7 SM56.7 SM136.7 SM146.7 SM156.7 Бит состояния, указывающий, больше ли текущее значение, чем предустановленное: 0 = меньше или равно; 1 = больше Примечание Биты состояния действительны только во время исполнения программы обработки прерывания скоростного счетчика. Цель контроля состояния скоростного счетчика состоит в том, чтобы разблокировать прерывания для событий, оказывающих воздействие на выполняемую операцию. Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-41 Команды SIMATIC Прерывания HSC Все режимы счетчиков поддерживают прерывание по равенству текущего значения предустановленному. Режимы счетчиков, использующие вход внешнего сброса, поддерживают прерывание по активизации внешнего сброса. Все режимы счетчиков, кроме режимов 0, 1 и 2, поддерживают прерывание по изменению направления счета. Каждое из этих условий возникновения прерываний может быть заблокировано или разблокировано по отдельности. Полностью использование прерываний обсуждается в разделе 9.15. Примечание Если вы используете прерывание по внешнему сбросу, не пытайтесь загрузить текущее значение или заблокировать, а затем снова разблокировать скоростной счетчик изнутри программы обработки прерывания, закрепленной за этим событием. Результатом этих действий может быть фатальная ошибка. Чтобы помочь вам понять работу скоростных счетчиков, в ваше распоряжение предоставляются следующие описания инициализации и последовательности обработки. На всем протяжении этих описаний в качестве примера используется счетчик HSC1. При описании инициализаций предполагается, что S7–200 только что переведен в режим RUN, и поэтому бит памяти первого цикла установлен. Если это не так, помните, что команда HDEF может быть выполнена только один раз для каждого скоростного счетчика после вхождения в режим RUN. Выполнение HDEF для скоростного счетчика во второй раз приводит к ошибке выполнения и не изменяет настройку счетчика по сравнению с тем, как она была выполнена для данного счетчика при первом выполнении HDEF. 9-42 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC Инициализация режимов 0, 1 и 2 Следующие шаги описывают, как инициализировать HSC1 в качестве однофазного реверсивного счетчика с внутренним управлением направлением счета (режим 0, 1 или 2). 1. Используйте бит памяти первого цикла для вызова подпрограммы, в которой будет выполняться операция по инициализации. Когда вы используете вызов подпрограммы, следующие циклы эту подпрограмму не вызывают, что сокращает время цикла и делает программу более структурированной. 2. В подпрограмме инициализации загрузите SMB47 в соответствии с желаемой операцией управления. Например: SMB47 = 16#F8 дает следующие результаты: Разблокирует счетчик Записывает новое текущее значение Записывает новое предустановленное значение Устанавливает направление счета вперед Настраивает входы пуска и сброса на активность при высоком уровне сигнала. 3. Выполните команду HDEF с входом HSC , установленным в 1, и входом MODE [режим], установленным в 0 при отсутствии внешнего сброса и пуска, 1 для внешнего сброса без пуска или 2 для внешнего сброса и пуска. 4. Загрузите SMD48 (двойное слово) желаемым текущим значением (загрузите 0, чтобы его очистить). 5. Загрузите SMD52 (двойное слово) желаемым предустановленным значением. 6. Чтобы распознавать равенство текущего и предустановленного значений, запрограммируйте прерывание, поставив в соответствие программе обработки прерывания прерывающее событие CV = PV (событие 13). Подробную информацию об обработке прерываний вы найдете в разделе 9.15. 7. Чтобы распознавать внешний сброс, запрограммируйте прерывание, поставив в соответствие программе обработки прерывания прерывающее событие «внешний сброс» (external reset) (событие 15). 8. Для разблокировки прерываний выполните команду разрешения глобальных прерываний (ENI). 9. Выполните команду HSC, чтобы S7–200 запрограммировал HSC1. 10. Выйдите из подпрограммы. Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-43 Команды SIMATIC Инициализация режимов 3, 4 и 5 Следующие шаги описывают, как инициализировать HSC1 в качестве однофазного реверсивного счетчика с внешним управлением направлением счета (режим 3, 4 или 5): 1. Используйте бит памяти первого цикла для вызова подпрограммы, в которой будет выполняться операция по инициализации. Когда вы используете вызов подпрограммы, следующие циклы эту подпрограмму не вызывают, что сокращает время цикла и делает программу более структурированной. 2. В подпрограмме инициализации загрузите SMB47 в соответствии с желаемой операцией управления. Например: SMB47 = 16#F8 дает следующие результаты: Разблокирует счетчик Записывает новое текущее значение Записывает новое предустановленное значение Устанавливает начальное направление счета HSC вперед Настраивает входы пуска и сброса на активность при высоком уровне сигнала 3. Выполните команду HDEF с входом HSC , установленным в 1, и входом MODE [режим], установленным на 3 при отсутствии внешнего сброса и пуска, 4 для внешнего сброса без пуска или 5 для внешнего сброса и пуска. 4. Загрузите SMD48 (двойное слово) желаемым текущим значением (загрузите 0, чтобы его очистить). 5. Загрузите SMD52 (двойное слово) желаемым предустановленным значением. 6. Чтобы распознать равенство текущего и предустановленного значений, запрограммируйте прерывание, поставив в соответствие программе обработки прерывания прерывающее событие CV = PV (событие 13). Подробную информацию об обработке прерываний вы найдете в разделе 9.15. 7. Чтобы распознавать изменения направления счета, запрограммируйте прерывание, поставив в соответствие программе обработки прерывания прерывающее событие «изменение направления» (direction changed) (событие 14). 8. Чтобы распознавать внешний сброс, запрограммируйте прерывание, поставив в соответствие программе обработки прерывания прерывающее событие «внешний сброс» (external reset) (событие 15). 9. Для разблокировки прерываний выполните команду разрешения глобальных прерываний (ENI). 10. Выполните команду HSC, чтобы S7–200 запрограммировал HSC1. 11. Выйдите из подпрограммы. 9-44 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC Инициализация режимов 6, 7 и 8 Следующие шаги описывают, как инициализировать HSC1 в качестве двухфазного реверсивного счетчика с датчиками тактовых импульсов вперед и назад (режим 6, 7 или 8): 1. Используйте бит памяти первого цикла для вызова подпрограммы, в которой будет выполняться операция по инициализации. Когда вы используете вызов подпрограммы, следующие циклы эту подпрограмму не вызывают, что сокращает время цикла и делает программу более структурированной. 2. В подпрограмме инициализации загрузите SMB47 в соответствии с желаемой операцией управления. Например: SMB47 = 16#F8 дает следующие результаты: Разблокирует счетчик Записывает новое текущее значение Записывает новое предустановленное значение Устанавливает начальное направление счета HSC вперед Настраивает входы пуска и сброса на активность при высоком уровне сигнала 3. Выполните команду HDEF с входом HSC , установленным в 1, и входом MODE [режим], установленным на 6 при отсутствии внешнего сброса и пуска, 7 для внешнего сброса без пуска или 8 для внешнего сброса и пуска. 4. Загрузите SMD48 (двойное слово) желаемым текущим значением (загрузите 0, чтобы его очистить). 5. Загрузите SMD52 (двойное слово) желаемым предустановленным значением. 6. Чтобы распознать равенство текущего и предустановленного значений, запрограммируйте прерывание, поставив в соответствие программе обработки прерывания прерывающее событие CV = PV (событие 13). Подробную информацию об обработке прерываний вы найдете в разделе 9.15. 7. Чтобы распознавать изменения направления счета, запрограммируйте прерывание, поставив в соответствие программе обработки прерывания прерывающее событие «изменение направления» (direction changed) (событие 14). 8. Чтобы распознавать внешний сброс, запрограммируйте прерывание, поставив в соответствие программе обработки прерывания прерывающее событие «внешний сброс» (external reset) (событие 15). 9. Для разблокировки прерываний выполните команду разрешения глобальных прерываний (ENI). 10. Выполните команду HSC, чтобы S7–200 запрограммировал HSC1. 11. Выйдите из подпрограммы. Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-45 Команды SIMATIC Инициализация режимов 9, 10 и 11 Следующие шаги описывают, как инициализировать HSC1 в качестве квадратурного счетчика с фазами A и B (режим 9, 10 или 11): 1. Используйте бит памяти первого цикла для вызова подпрограммы, в которой будет выполняться операция по инициализации. Когда вы используете вызов подпрограммы, следующие циклы эту подпрограмму не вызывают, что сокращает время цикла и делает программу более структурированной. 2. В подпрограмме инициализации загрузите SMB47 в соответствии с желаемой операцией управления. Например (однократная скорость счета): SMB47 = 16#FC дает следующие результаты: Разблокирует счетчик Записывает новое текущее значение Записывает новое предустановленное значение Устанавливает начальное направление счета HSC вперед Настраивает входы пуска и сброса на активность при высоком уровне сигнала Например (четырехкратная скорость счета): SMB47 = 16#F8 дает следующие результаты: Разблокирует счетчик Записывает новое текущее значение Записывает новое предустановленное значение Устанавливает начальное направление счета HSC вперед Настраивает входы пуска и сброса на активность при высоком уровне сигнала 3. Выполните команду HDEF с входом HSC , установленным в 1, и входом MODE [режим], установленным на 9 при отсутствии внешнего сброса и пуска, 10 для внешнего сброса без пуска или 11 для внешнего сброса и пуска. 4. Загрузите SMD48 (двойное слово) желаемым текущим значением (загрузите 0, чтобы его очистить). 5. Загрузите SMD52 (двойное слово) желаемым предустановленным значением. 6. Чтобы распознать равенство текущего и предустановленного значений, запрограммируйте прерывание, поставив в соответствие программе обработки прерывания прерывающее событие CV = PV (событие 13). Подробную информацию об обработке прерываний вы найдете в разделе 9.15. 7. Чтобы распознавать изменения направления счета, запрограммируйте прерывание, поставив в соответствие программе обработки прерывания прерывающее событие «изменение направления» (direction changed) (событие 14). 8. Чтобы распознавать внешний сброс, запрограммируйте прерывание, поставив в соответствие программе обработки прерывания прерывающее событие «внешний сброс» (external reset) (событие 15). 9. Для разблокировки прерываний выполните команду разрешения глобальных прерываний (ENI). 10. Выполните команду HSC, чтобы S7–200 запрограммировал HSC1. 11. Выйдите из подпрограммы. 9-46 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC Изменение направления в режиме 0, 1 или 2 Следующие шаги описывают, как сконфигурировать изменение направления для HSC1 как однофазного счетчика с внутренним управлением направлением счета (режим 0, 1 или 2): 1. Загрузите SMB47, чтобы записать желаемое направление: SMB47 = 16#90 Разблокирует счетчик Устанавливает направление счета HSC назад SMB47 = 16#98 Разблокирует счетчик Устанавливает направление счета HSC вперед 2. Выполните команду HSC, чтобы S7–200 запрограммировал HSC1. Загрузка нового текущего значения (любой режим) Изменение текущего значения приводит к принудительной блокировке счетчика на время выполнения изменения. Пока счетчик заблокирован, он не считает и не генерирует прерываний. Следующие шаги описывают, как изменить текущее значение счетчика HSC1 (любой режим): 1. Загрузите SMB47, чтобы записать желаемое текущее значение: SMB47 = 16#C0 Разблокирует счетчик Записывает новое текущее значение 2. Загрузите SMD48 (двойное слово) желаемым текущим значением (загрузите 0, чтобы его очистить). 3. Выполните команду HSC, чтобы S7–200 запрограммировал HSC1. Загрузка нового предустановленного значения (любой режим) Следующие шаги описывают, как изменить предустановленное значение HSC1 (любой режим): 1. Загрузите SMB47, чтобы записать желаемое предустановленное значение: SMB47 = 16#A0 Разблокирует счетчик Записывает новое предустановленное значение 2. Загрузите SMD52 (двойное слово) желаемым предустановленным значением. 3. Выполните команду HSC, чтобы S7–200 запрограммировал HSC1. Блокировка скоростного счетчика (любой режим) Следующие шаги описывают, как заблокировать скоростной счетчик HSC1 (любой режим): 1. Загрузите SMB47, чтобы заблокировать счетчик: SMB47 = 16#00 Блокирует счетчик 2. Выполните команду HSC, чтобы заблокировать счетчик. Хотя вышеприведенные последовательности показывают, как изменить направление, текущее и предустановленное значение по отдельности, вы можете изменить все эти настройки или любую их комбинацию в той же последовательности, устанавливая надлежащим образом SMB47, а затем выполняя команду HSC. Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-47 Команды SIMATIC Пример скоростного счетчика LAD STL MAIN OB1 Network [Сегмент] 1 SM0.1 SBR0 EN Network 1 В первом цикле вызвать подпрограмму 0. Конец главной программы. LD SM0.1 CALL 0 SUBROUTINE 0 [Подпрограмма 0] Network 1 SM0.0 16#F8 MOV _ EN ENO IN OUT 1 11 HDEF EN ENO HSC MODE 0 MOV_D W EN ENO IN OUT 50 MOV_D W EN ENO IN OUT 0 13 SMB47 HSC1 сконфигурирован для квадратурного режима с входами сброса и пуска. SMD48 Сбросить текущее значение HSC1. Ввести предустановленное значение HSC1, равное 50. Network 1 LD SM0.0 MOVB 16#F8, SMB47 HDEF 1, 11 MOVD 0, SMD48 MOVD 50, SMD52 SMD52 Программе прерывания 0 поставлено в соответствие событие 13 (текущее значение ATCH 0, 13 = предустановленному) ATCH EN ENO INT EVENT ENI 1 Разблокировать счетчик. Записать новое текущее значение. Записать новое предустановленное значение. Записать начальное направление счета вперед. Сделать входы пуска и сброса активными при высоком уровне сигнала. Установить 4-кратную скорость. HSC EN ENO N Разрешены глобальные прерывания ENI Запрограммировать HSC1. HSC 1 INTERRUPT 0 [Прерывание 0] Network 1 Network 1 SM0.0 0 16#C0 1 MOV_D W EN ENO IN OUT MOV_B EN ENO IN OUT EN N HSC ENO Сбросить текущее значение LD SM 0.0 MOVD 0, SMD48 HSC1. SMD48 Записать новое текущее значение и разблокировать SMB47 счетчик. Запрограммировать HSC1. MOVB 16#C0, SMB47 HSC 1 Рис. 9-18. Пример инициализации HSC1 (SIMATIC LAD и STL) 9-48 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC FBD MAIN OB1 [Главная программа ОВ1] Network [Сегмент] 1 SM0.1 В первом цикле вызвать подпрограмму 0. SBR0 EN * Конец главной программы. *Обратитесь к стр. 9-150 SUBROUTINE 0 [Подпрограмма 0] Network 1 SM0.0 16#F8 +50 MOV_B EN ENO IN OUT MOV_D W ENO EN IN OUT SMB47 SMD52 1 11 0 13 HDEF EN ENO HSC MODE MOV_D W ENO EN IN OUT +0 ATCH EN ENO INT EVENT HSC EN ENO N 1 SMD48 ENI INTERRUPT 0 [Прерывание 0] Network 1 SM0.0 0 MOV_D W ENO EN IN OUT SMD48 16#C0 MOV_B EN ENO IN OUT SMB47 1 HSC EN ENO N Рис. 9-19. Пример инициализации HSC1 (SIMATIC FBD) Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-49 Команды SIMATIC 9.6 Команды SIMATIC для импульсного вывода Импульсный вывод L A D PLS EN ENO F B D S T L Q Операнды: PLS Q ✓ Команда Импульсный вывод проверяет биты специальной памяти для импульсного выхода (Q0.0 или Q0.1). Затем вызывается импульсная операция, определенная битами специальной памяти. ✓ ✓ ✓ 221 222 224 226 Q: константа (0 или 1) Типы данных: WORD Импульсные выходы Q0.0 и Q0.1 Описание команд со скоростными выходами для S7–200 Каждый CPU имеет два генератора: PTO – для вывода последовательностей импульсов и PWM – для управления с помощью широтно-импульсной модуляции. Один генератор поставлен в соответствие цифровому выходу Q0.0, другой генератор – цифровому выходу Q0.1. Генераторы PTO и PWM и регистр образа процесса совместно используют Q0.0 и Q0.1. Когда функция PTO или PWM активна на Q0.0 или Q0.1, то выходом управляет генератор PTO или PWM, а нормальное использование выхода заблокировано. На форму выходного сигнала не влияет ни состояние регистра образа процесса, ни принудительное присваивание значений выходам, ни выполнение команд непосредственного вывода. Когда генератор PTO/PWM не активен, управление выходом возвращается регистру образа процесса. Регистр образа процесса определяет начальное и конечное состояние импульсного выходного сигнала, вызывая его начало и завершение на высоком или низком уровне. Примечание Рекомендуется устанавливать регистр образа процесса для Q0.0 и Q0.1 на нулевое значение перед разблокировкой операции PTO или PWM. Функция «Последовательность импульсов» (PTO) предоставляет в распоряжение выходной сигнал в виде прямоугольных импульсов (с относительной длительностью импульсов 50%), период следования которых и количество определяется пользователем. Функция «Широтноимпульсная модуляция» (PWM) предоставляет в распоряжение выходной импульсный сигнал с постоянным периодом следования и переменной относительной длительностью импульсов, причем период следования импульсов и их ширину определяет пользователь. 9-50 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC Каждому генератору PTO/PWM поставлены в соответствие управляющий байт (8 битов), период следования и ширина импульса (16-битовое значение без знака) и количество импульсов (32-битовое значение без знака). Все эти величины хранятся в определенных ячейках области специальной памяти (SM). Когда эти ячейки специальной битовой памяти настроены для выбора желаемой операции, операция вызывается выполнением команды «Импульсный вывод» (PLS). Эта команда заставляет S7–200 прочитать ячейки SM и соответствующим образом запрограммировать генератор PTO или PWM. Вы можете изменять характеристики сигнала PTO или PWM, изменяя желаемые ячейки области SM (включая управляющий байт), а затем выполняя команду PLS. Вы можете в любое время заблокировать импульсный сигнал PTO или PWM, записав ноль в бит разблокировки PTO или PWM управляющего байта (SM67.7 или SM77.7), а затем выполнив команду PLS. Примечание По умолчанию значения всех управляющих битов, периода следования, ширины и количества импульсов равны нулю. Примечание Выходы PTO/PWM должны иметь минимальную нагрузку не менее 10% от номинальной нагрузки, чтобы обеспечить четкий переход от выключенного состояния к включенному и наоборот. Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-51 Команды SIMATIC Функционирование PWM Функция PWM обеспечивает выход с переменной относительной длительностью импульсов. Период следования и ширина импульсов могут быть заданы в микросекундной или миллисекундной базе времени. Период следования импульсов имеет диапазон от 50 микросекунд до 65 535 микросекунд или от 2 миллисекунд до 65 535 миллисекунд. Ширина импульса имеет диапазон от 0 микросекунд до 65 535 микросекунд или от 0 миллисекунд до 65 535 миллисекунд. Когда ширина импульса задается большей или равной периоду следования импульсов, то относительная длительность импульсов равна 100%, и выход включен постоянно. Когда ширина импульсов задана равной 0, то относительная длительность импульсов равна 0%, и выход выключен. Если период следования импульсов задан меньшим, чем две единицы времени, то он устанавливается равным двум единицам времени. Имеется два способа изменения характеристик импульсов PWM: с синхронным обновлением и с асинхронным обновлением. • Синхронное обновление: Если не требуется изменение базы времени, то может быть выполнено синхронно обновление. При синхронном обновлении изменение характеристик импульсов происходит на границе периода следования, обеспечивая плавный переход. • Асинхронное обновление: Обычно при работе PWM меняется ширина импульсов при постоянном периоде следования. Поэтому изменение базы времени не требуется. Однако, если требуется изменение базы времени генератора PTO или PWM. То используется асинхронное обновление. Асинхронное обновление вызывает на мгновение блокирование генератора PTO или PWM асинхронно со следованием импульсов PWM. Это может вызвать нежелательную неустойчивость работы управляемого устройства. Поэтому рекомендуется синхронное обновление PWM. Выбирайте базу времени, которая будет работать со всеми ожидаемыми вами значениями периода следования импульсов. Для задания типа обновления используется бит метода обновления PWM (SM67.4 или SM77.4) в управляющем байте. Чтобы произвести изменения, выполните команду PLS. Имейте в виду, что если изменяется база времени, то произойдет асинхронное обновление независимо от состояния бита метода обновления PWM. 9-52 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC Функционирование PTO Функция PTO обеспечивает генерирование последовательности импульсов прямоугольной формы (с относительной длительностью 50%) с заданным количеством импульсов. Период следования импульсов может быть задан в микросекундах или миллисекундах. Период следования импульсов имеет диапазон от 50 микросекунд до 65 535 микросекунд или от 2 миллисекунд до 65 535 миллисекунд. Если заданное время цикла является нечетным числом, то в результате будет несколько искажена относительная длительность импульсов. Количество выводимых импульсов находится в диапазоне от 1 до 4 294 967 295. Если период следования импульсов задан меньшим двух единиц времени, то он устанавливается равным двум единицам времени. Если количество импульсов задано равным нулю, то оно устанавливается равным единице. Бит незанятости PTO в байте состояния (SM66.7 или SM76.7) предназначен для индикации завершения запрограммированной последовательности импульсов. Кроме того, после завершения последовательности импульсов может быть вызвана программа обработки прерывания (за информацией о командах прерывания и связи см. раздел 9.15). Если вы используете многосегментную обработку, то программа обработки прерывания будет вызвана после завершения таблицы профиля последовательности импульсов. См. ниже многосегментную конвейерную обработку. Функция PTO разрешает сцепление или конвейерную обработку последовательностей импульсов. Когда активная последовательность импульсов завершена, немедленно начинается вывод новой последовательности импульсов. Это обеспечивает непрерывность следующих друг за другом последовательностей импульсов. Конвейерная обработка может быть выполнена одним из двух способов: в виде односегментной конвейерной обработки или в виде многосегментной конвейерной обработки. Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-53 Команды SIMATIC Односегментная конвейерная обработка. При односегментной конвейерной обработке вы несете ответственность за обновление ячеек области SM для следующей последовательности импульсов. Как только был запущен первый сегмент PTO, вы должны немедленно изменить ячейки SM в соответствии с требованиями второй последовательности и снова выполнить команду PLS. Атрибуты второй последовательности импульсов будут храниться в конвейере до завершения первой последовательности импульсов. В конвейере в каждый момент времени может храниться только одна запись. Как только завершится первая последовательность импульсов, начнется вывод второй последовательности, и конвейер становится доступным для задания характеристик новой последовательности импульсов. Вы можете затем повторить этот процесс, чтобы установить характеристики следующей последовательности импульсов. Между последовательностями импульсов происходит плавный переход, кроме следующих ситуаций: • Если меняется база времени • Если активная последовательность импульсов завершается раньше, чем настройка новой последовательности импульсов распознается при исполнении команды PLS. Если вы пытаетесь загрузить конвейер, когда он полон, то в регистре состояния устанавливается бит переполнения PTO (SM66.6 или SM76.6). Этот бит инициализируется нулем при переходе в режим RUN. Если вы хотите обнаруживать следующие переполнения, то после обнаружения переполнения вы должны сбрасывать этот бит вручную. Многосегментная конвейерная обработка. При многосегментной конвейерной обработке CPU автоматически считывает характеристики каждого сегмента последовательности импульсов из таблицы профиля, расположенной в V-памяти. Единственными ячейками области SM, используемыми в этом режиме, являются управляющий байт и байт состояния. Для выбора многосегментного режима работы должно быть загружено начальное смещение таблицы профиля (SMW168 или SMW178). В качестве базы времени могут быть заданы микросекунды или миллисекунды, но этот выбор применяется ко всем значениям периода следования импульсов в таблице профиля и не может быть изменен, когда таблица используется. Многосегментный режим работы затем может быть запущен исполнением команды PLS. Запись для каждого сегмента имеет длину 8 байтов 16-битового значения периода следования импульсов, 16-битового значения приращения периода следования импульсов и 32-битового значения количества импульсов. 9-54 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC Формат таблицы профиля показан в табл. 9–15. Дополнительной характеристикой, доступной в многосегментном режиме работы PTO, является возможность автоматически увеличивать или уменьшать период следования импульсов на заданную для каждого импульса величину. Программирование положительного значения в поле приращения периода следования импульсов увеличивает этот период. Программирование отрицательного значения в поле приращения периода следования импульсов уменьшает этот период. Нулевое значение не меняет период следования импульсов. Если задать приращение периода следования импульсов таким, что через некоторое количество импульсов величина периода следования импульсов становится недопустимой, то возникает математическое переполнение. Функция PTO завершается, а выход возвращается под управление регистра образа процесса. Кроме того, в байте состояния устанавливается в единицу бит ошибки расчета приращения периода следования импульсов (SM66.4 или SM76.4). Если вы вручную прерываете использование выполняемого в данный момент профиля PTO, то в байте состояния пользователем будет установлен в единицу бит прерывания (SM66.5 или SM76.5). Когда профиль PTO работает, количество активных в данный момент сегментов доступно в SMB166 (или SMB176). Таблица 9–15. Формат таблицы профиля для многосегментного режима PTO Смещение в байтах от начала таблицы Номер сегмента 0 1 Количество сегментов (от 1 до 255); значение 0 генерирует нефатальную ошибку, выход PTO не генерируется. #1 3 Количество импульсов (от 1 до 4294967295) #2 11 Начальный период следования импульсов (от 2 до 65535 единиц базы времени) Приращение периода следования импульсов (величина со знаком) (от –32768 до 32767 единиц базы времени) 13 : : Начальный период следования импульсов (от 2 до 65535 единиц базы времени) Приращение периода следования импульсов (величина со знаком) (от –32768 до 32767 единиц базы времени) 5 9 Описание записей таблицы Количество импульсов (от 1 до 4294967295) : : : : Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-55 Команды SIMATIC Расчет значений таблицы профиля Возможность многосегментного режима конвейерной обработки генераторов PTO/PWM может быть полезной во многих приложениях, в частности, при управлении шаговыми двигателями. Пример, показанный на рис. 9–20, иллюстрирует, как нужно определять значения таблицы профиля, необходимые для генерирования последовательности выходных импульсов, которая разгоняет шаговый двигатель, обеспечивает его работу с постоянной скоростью, а затем тормозит двигатель. Частота 10 кГц 2 кГц Время Сегмент #1 Сегмент #2 (200 импульсов) Сегмент #3 (400 импульсов) 4 000 импульсов Рис. 9–20. Пример диаграммы частота – время применительно к простому шаговому двигателю В этом примере предполагается, что для достижения желаемого количества оборотов двигателя требуется 4 000 импульсов. Начальная и конечная частота следования импульсов равна 2 кГц, а максимальная частота следования импульсов равна 10 кГц. Так как величины в таблице профиля выражаются в периодах следования импульсов, а не в частоте, преобразуйте заданные значения частоты в значения периодов следования импульсов. Тогда начальный и конечный период следования импульсов составит 500 мкс, а период следования импульсов, соответствующий максимальной частоте, составит 100 мкс. На интервале ускорения желательно, чтобы желаемая максимальная частота следования импульсов была достигнута примерно через 200 импульсов. Предполагается также, что интервал замедления должен быть реализован примерно за 400 импульсов. В примере на рис. 9–20 для определения приращения периода следования импульсов для данного сегмента может быть использована простая формула (показана ниже), которую генератор PTO/PWM использует для настройки периода каждого импульса: Приращение периода следования импульсов для данного сегмента = | ECT – ICT | / Q, где ECT = конечный период следования импульсов для данного сегмента ICT = начальный период следования импульсов для данного сегмента Q = количество импульсов в данном сегменте По этой формуле приращение периода следования импульсов для этапа ускорения (или сегмента #1) составляет –2. Аналогично, приращение периода следования импульсов для этапа замедления (или сегмента #3) равно 1. Так как для сегмента #2 скорость постоянна, то приращение периода следования импульсов для этого сегмента равно нулю. 9-56 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC Предполагая, что таблица профиля расположена в V-памяти, начиная с V500, значения таблицы, используемые для генерирования желаемой последовательности импульсов, показаны в табл. 9–16. Таблица 9–16. Значения в таблице профиля Адрес V-памяти VB500 Значение 3 (общее количество сегментов) VW501 500 (начальный период следования импульсов – сегмент #1) VW503 -2 (приращение периода следования импульсов – сегмент #1) VD505 200 (количество импульсов – сегмент #1) VW509 100 (начальный период следования импульсов – сегмент #2) VW511 0 (приращение периода следования импульсов – сегмент #2) VD513 3400 (количество импульсов – сегмент #2) VW517 100 (начальный период следования импульсов – сегмент #3) VW519 1 (приращение периода следования импульсов – сегмент #3) VD521 400 (количество импульсов – сегмент #3) Значения из этой таблицы могут быть помещены в V-память с помощью команд в вашей программе. Альтернативным методом является определение значений профиля в блоке данных. Пример программы с командами для использования многосегментного режима PTO показан на рис. 9–23. Период для последнего импульса сегмента прямо в профиле не указывается, но вместо этого он должен быть рассчитан (конечно, за исключением случая, когда приращение периода следования импульсов равно нулю). Знание периода для последнего импульса сегмента полезно для определения приемлемости перехода сегментами последовательности импульсов. Ниже приведена формула расчета периода для последнего импульса сегмента: Период для последнего импульса сегмента = ICT + ( DEL * ( Q-1 )), где ICT = начальный период следования импульсов для данного сегмента DEL = приращение периода следования импульсов для данного сегмента Q = количество импульсов в данном сегменте В то время как приведенный выше упрощенный пример полезен в качестве введения, реальные приложения могут потребовать более сложных профилей последовательностей импульсов: • Приращение периода следования импульсов может быть задано только как целое количество микросекунд или миллисекунд • Изменение периода следования выполняется на каждом импульсе. Влияние этих двух пунктов состоит в том, что расчет приращения периода следования импульсов для данного сегмента может потребовать итеративного подхода. Может потребоваться некоторая гибкость в значении конечного периода следования импульсов или количества импульсов для данного сегмента. Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-57 Команды SIMATIC В процессе определения правильных значений таблицы профиля может быть полезна длительность данного сегмента профиля. Время, необходимое для завершения данного сегмента профиля, может быть рассчитано с помощью следующей формулы: Длительность сегмента = Q * ( ICT + ( ( DEL/2 ) * ( Q-1 ) ) ), где Q = количество импульсов в данном сегменте ICT = начальный период следования импульсов для данного сегмента DEL = приращение периода следования импульсов для данного сегмента 9-58 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC Управляющие регистры PTO/PWM Таблица 9–17 описывает регистры, используемые для управления режимом PTO/PWM. Таблицу 9–18 вы можете использовать в качестве быстрой справки, чтобы определить значение, которое следует поместить в управляющий регистр PTO/PWM, чтобы вызвать желаемую операцию. Используйте SMB67 для PTO/PWM 0 и SMB77 для PTO/PWM 1. Если вы собираетесь загрузить новое количество импульсов (SMD72 или SMD82), ширину импульсов (SMW70 или SMW80) или период следования импульсов (SMW68 или SMW78), вы должны загрузить эти значения, а также управляющий регистр перед выполнением команды PLS. Если вы используете многосегментную последовательность импульсов, то перед выполнением команды PLS вы также должны загрузить начальное смещение (SMW168 или SMW178) таблицы профиля и значения таблицы профиля. Таблица 9–17. Управляющие регистры PTO /PWM Q0.0 Q0.1 SM66.4 SM76.4 Профиль PTO завершен из-за ошибки расчета приращения 0 = нет ошибки; 1 = завершен Биты состояния SM66.5 SM76.5 Профиль PTO завершен по команде пользователя 0 = нет завершения; 1 = завершен SM66.6 SM76.6 Переполнение/потеря значимости в конвейере PTO 0 = нет переполнения; 1 = переполнение/потеря значимости SM66.7 Q0.0 SM76.7 Q0.1 PTO не действует SM67.0 SM77.0 Обновить значение периода следования импульсов PTO/PWM 0 = не обновлять; 1 = обновить период следования импульсов SM67.1 SM77.1 Обновить значение ширины импульсов PWM 0 = не обновлять; 1 = обновить ширину импульсов SM67.2 SM77.2 Обновить количество импульсов PTO 0 = не обновлять; 1 = обновить количество импульсов SM67.3 SM77.3 Выбрать базу времени PTO/PWM 0 = 1 мкс/такт; SM67.4 SM77.4 Метод обновления PWM: 0 = асинхронное обновление, 1 = синхронное обновление SM67.5 SM77.5 Режим PTO: 0 = односегментный 1 = многосегментный SM67.6 SM77.6 Выбрать PTO/PWM SM67.7 SM77.7 Q0.0 Q0.1 Разблокировать PTO/PWM 0 = блокирует PTO/PWM; 1 = разблокирует PTO/PWM Другие регистры PTO/PWM SMW68 SMW78 Значение периода следования импульсов PTO/PWM (диапазон: от 2 до 65535) SMW70 SMW80 Значение ширины импульса PWM (диапазон: от 0 до 65535) SMD72 SMD82 Количеств импульсов PTO (диапазон: от 1 до 4294967295) SMB166 SMB176 Номер действующего сегмента (используется только в многосегментном режиме PTO) 0 = действует; 1 = PTO не действует Управляющие биты 1 = 1мс/такт 0 = выбирает PTO;1 = выбирает PWM SMW168 SMW178 Начальный адрес таблицы профиля, выраженный как байтовое смещение от V0 (используется только в многосегментном режиме PTO) Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-59 Команды SIMATIC Таблица 9–18. Справочные данные об управляющем байте PTO/PWM Управляющий Разрегистр реш. (16-ричное значение) Результат выполнения операции PLS Режим Режим сегментирования РТО Метод обновления PWM База времени Количество импульсов Ширина импульса Период следов. импульсов 16#81 Да PTO Односегмент. 1 мкс/такт 16#84 Да PTO Односегмент. 1 мкс/такт Загружено Загруж. 16#85 Да PTO Односегмент. 1 мкс/такт Загружено Загруж. 16#89 Да PTO Односегмент. 1 мс/такт Загруж. 16#8C Да PTO Односегмент. 1 мс/такт Загружено 16#8D Да PTO Односегмент. 1 мс/такт Загружено 16#A0 Да PTO Многосегм. 1 мкс/такт 16#A8 Да PTO Многосегм. 16#D1 Да PWM Синхронный 1 мкс/такт 16#D2 Да PWM Синхронный 1 мкс/такт Загруж. 16#D3 Да PWM Синхронный 1 мкс/такт Загруж. 16#D9 Да PWM Синхронный 1 мс/такт 16#DA Да PWM Синхронный 1 мс/такт Загруж. 16#DB Да PWM Синхронный 1 мс/такт Загруж. Загруж. 1 мс/такт Загруж. Загруж. Загруж. Загруж. Инициализация и последовательность функционирования PTO/PWM Далее следуют описания инициализации и последовательности функционирования. Они могут помочь вам лучше понять работу функций PTO и PWM. На всем протяжении этих описаний используется импульсный выход Q0.0. При описании инициализации подразумевается, что S7–200 переведен в режим RUN и поэтому бит памяти первого цикла установлен. Если это не так или если функция PTO/PWM должна быть повторно инициализирована, вы можете вызвать программу инициализации без использования бита памяти первого цикла. 9-60 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC Инициализация PWM Для инициализации PWM для Q0.0 выполните следующие шаги: 1. С помощью бита памяти первого цикла (SM0.1) установите выход в 0 и вызовите подпрограмму, которая вам необходима для выполнения операций по инициализации. Когда вы используете вызов подпрограммы, следующие циклы эту подпрограмму не вызывают, что сокращает время цикла и делает программу более структурированной. 2. В подпрограмме инициализации загрузите SMB67 значением 16#D3 для PWM, использующего микросекундные приращения (или 16#DB для PWM, использующего миллисекундные приращения). Эти значения устанавливают управляющий байт на разрешение функции PTO/PWM, выбирают режим PWM, выбирают микросекундные или миллисекундные приращения и устанавливают обновление ширины импульса и периода следования импульсов. 3. Загрузите SMW68 (слово) желаемым периодом следования импульсов. 4. Загрузите SMW70 (слово) желаемой шириной импульса. 5. Выполните команду PLS, чтобы S7–200 запрограммировал генератор PTO/PWM. 6. Загрузите SMB67 значением 16#D2 для микросекундных приращений (или 16#DA для миллисекундных приращений). Это предварительно загружает новое значение управляющего байта для последующих изменений ширины импульсов. 7. Выйдите из подпрограммы. Изменение ширины импульсов для выходов PWM Для изменения ширины импульсов для выходов PWM в подпрограмме выполните следующие шаги. (Предполагается, что SMB67 был предварительно загружен значением 16#D2 или 16#DA.) 1. Вызовите подпрограмму для загрузки SMW70 (слово) желаемой шириной импульса. 2. Выполните команду PLS, чтобы S7–200 запрограммировал генератор PTO/PWM. 3. Выйдите из подпрограммы. Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-61 Команды SIMATIC Инициализация PTO – односегментный режим Для инициализации PTO выполните следующие шаги: 1. С помощью бита памяти первого цикла (SM0.1) установите выход в 0 и вызовите подпрограмму, которая вам необходима для выполнения операций по инициализации. Это сокращает время цикла и делает программу более структурированной. 2. В подпрограмме инициализации загрузите SMB67 значением 16#85 для PTO, использующего микросекундные приращения (или 16#8D для PTO, использующего миллисекундные приращения). Эти значения устанавливают управляющий байт на разрешение функции PTO/PWM, выбирают режим PTO, выбирают микросекундные или миллисекундные приращения и устанавливают обновление количества импульсов и периода следования импульсов. 3. Загрузите SMW68 (слово) желаемым периодом следования импульсов. 4. Загрузите SMD72 (двойное слово) желаемым количеством импульсов. 5. Этот шаг необязателен. Если вы хотите выполнить соответствующую функцию, когда вывод импульсной последовательности будет завершен, вы можете запрограммировать прерывание, поставив в соответствие программе обработки прерывания событие «Импульсная последовательность завершена» (pulse train complete) (категория прерывания 19) с помощью команды ATCH и выполнив команду ENI, разрешающую глобальные прерывания. Полное описание обработки прерываний вы найдете в разделе 9.15. 6. Выполните команду PLS, чтобы S7–200 запрограммировал генератор PTO/PWM. 7. Выйдите из подпрограммы. Изменение периода следования импульсов PTO – односегментный режим Для изменения периода следования импульсов PTO в программе обработки прерывания или подпрограмме при использовании односегментного режима PTO выполните следующие шаги: 1. Загрузите SMB67 значением 16#81 для PTO, использующего микросекундные приращения (или 16#89 для PTO, использующего миллисекундные приращения). Эти значения устанавливают управляющий байт на разрешение функции PTO/PWM, выбирают режим PTO, выбирают микросекундные или миллисекундные приращения и устанавливают обновление периода следования импульсов. 2. Загрузите SMW68 (слово) желаемым периодом следования импульсов. 3. Выполните команду PLS, чтобы S7–200 запрограммировал генератор PTO/PWM. CPU должен завершить любую выводимую в данный момент PTO, прежде чем начнется вывод последовательности импульсов PTO с обновленным периодом следования импульсов. 9-62 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC 4. Выйдите из программы обработки прерывания или подпрограммы. Изменение количества импульсов PTO – односегментный режим Для изменения количества импульсов PTO в программе обработки прерывания или подпрограмме при использовании односегментного режима PTO выполните следующие шаги: 1. Загрузите SMB67 значением 16#84 для PTO, использующего микросекундные приращения (или 16#8C для PTO, использующего миллисекундные приращения). Эти значения устанавливают управляющий байт на разрешение функции PTO/PWM, выбирают режим PTO, выбирают микросекундные или миллисекундные приращения и устанавливают обновление количества импульсов. 2. Загрузите SMD72 (двойное слово) желаемым количеством импульсов. 3. Выполните команду PLS, чтобы S7–200 запрограммировал генератор PTO/PWM. CPU должен завершить любую выводимую в данный момент PTO, прежде чем начнется вывод последовательности импульсов PTO с обновленным количеством импульсов. 4. Выйдите из программы обработки прерывания или подпрограммы. Изменение периода следования и количества импульсов PTO – односегментный режим Для изменения периода следования и количества импульсов PTO в программе обработки прерывания или подпрограмме при использовании односегментного режима PTO выполните следующие шаги: 1. Загрузите SMB67 значением 16#85 для PTO, использующего микросекундные приращения (или 16#8D для PTO, использующего миллисекундные приращения). Эти значения устанавливают управляющий байт на разрешение функции PTO/PWM, выбирают режим PTO, выбирают микросекундные или миллисекундные приращения и устанавливают обновление периода следования и количества импульсов. 2. Загрузите SMW68 (слово) желаемым периодом следования импульсов. 3. Загрузите SMD72 (двойное слово) желаемым количеством импульсов. 4. Выполните команду PLS, чтобы S7–200 запрограммировал генератор PTO/PWM. CPU должен завершить любую выводимую в данный момент PTO, прежде чем начнется вывод последовательности импульсов PTO с обновленным периодом следования и количеством импульсов. 5. Выйдите из программы обработки прерывания или подпрограммы. Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-63 Команды SIMATIC Инициализация PTO – многосегментный режим Для инициализации PTO выполните следующие шаги: 1. С помощью бита памяти первого цикла (SM0.1) установите выход в 0 и вызовите подпрограмму, которая вам необходима для выполнения операций по инициализации. Это сокращает время цикла и делает программу более структурированной. 2. В подпрограмме инициализации загрузите SMB67 значением 16#A0 для PTO, использующего микросекундные приращения (или 16#A8 для PTO, использующего миллисекундные приращения). Эти значения устанавливают управляющий байт на разрешение функции PTO/PWM, выбирают режим PTO и многосегментную обработку и выбирают микросекундные или миллисекундные приращения 3. Загрузите SMW168 (слово) начальным смещением таблицы профиля в V-памяти. 4. Установите необходимые значения для сегмента в таблице профиля. Убедитесь, что поле «Номер сегмента» (Number of Segment) (первый байт таблицы) заполнено правильно. 5. Этот шаг необязателен. Если вы хотите выполнить соответствующую функцию, когда вывод импульсной последовательности будет завершен, вы можете запрограммировать прерывание, поставив в соответствие программе обработки прерывания событие «Импульсная последовательность завершена» (pulse train complete) (категория прерывания 19) с помощью команды ATCH и выполнив команду ENI, разрешающую глобальные прерывания. Полное описание обработки прерываний вы найдете в разделе 9.15. 6. Выполните команду PLS, чтобы S7–200 запрограммировал генератор PTO/PWM. 7. Выйдите из подпрограммы. 9-64 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC Пример широтно-импульсной модуляции На рис. 9–21 показан пример широтно-импульсной модуляции. LAD STL MAIN OB1 [Главная программа ОВ1] Network 1 Network 1 SM0.1 В первом цикле сбросить бит в регистре образа процесса и вызвать подпрограмму 0 Когда необходимо перейти к относительной длительности импульсов, равной 50%, устанавливается М0.0. Конец главной программы. Q0.1 R 1 SBR0 EN Network 2 M0.0 SBR1 EN P . . SUBROUTINE 0 [Подпрограмма 0] Network 1 MOV_B EN ENO SM0.0 16#DB IN OUT MOV_W EN ENO 10000 IN OUT Начало подпрограммы 0. Установка управляющего байта: - выбрать режим PWM - выбрать миллисекундные приращения, синхронные обновления SMB77 - установить ширину и период следования импульсов - разблокировать функцию PWM Установить период SMW78следования импульсов 10 000 мс. LD SM0.1 R Q0.1, 1 CALL 0 Network 2 LD M0.0 EU CALL 1 . . Network 1 LD SM0.0 MOVB 16#DB, SMB77 MOVW 10000, SMW78 MOV_W EN ENO 1000 IN OUT Установить ширину SMW80импульсов 1 000 мс. PLS EN ENO Вызвать операцию PWM. PLS 1 => Q0.1 1 Q0.x . . MOV_B EN ENO 16#DA IN OUT Предварительно загрузить управляющий байт для последующих изменений SMB77 ширины импульсов. MOVW 1000, SMW80 PLS 1 MOVB 16#DA, SMB77 . . . SUBROUTINE 1 [Подпрограмма 1] MOV_W SM0.0 Начало подпрограммы 1. EN ENO 5000 IN OUT PLS EN ENO 1 Q0.X SMW80 Установить ширину импульсов 5000 мс Утвердить изменение ширины импульсов. Network 1 LD SM0.0 MOVW 5000, SMW80 PLS 1 Рис. 9-21. Пример скоростного вывода, использующего широтно-импульсную модуляцию Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-65 Команды SIMATIC FBD MAIN OB1 [Главная программа ОВ1] Network 1 Q0.1 R AND SM0.1 SM0.0 1 N SBR1 EN Network 2 AND P SBR1 EN M0.0 SM0.0 SUBROUTINE 0 [Подпрограмма 0] Network 1 MOV_B MOV_W SM0.0 EN ENO 16#DB IN EN ENO IN OUT OUT SMB77 +10000 PLS MOV_W EN ENO +1000 IN SMW80 MOV_B EN ENO OUT SMW80 1 Q0.x EN ENO 16#DA IN OUT SMB77 SUBROUTINE 1 [Подпрограмма 1] Network 61 SM0.0 MOV_W EN ENO +5000 IN OUT SMW80 1 PLS EN ENO Q0.X Временная диаграмма Q0.1 Относительная длительность импульсов 10% Относительная Относительная Относительная длительность длительность длительность импульсов 10% импульсов 50% импульсов 50% Здесь выполняется подпрограмма 1 (Период следования импульсов = 10 000 мс) Рис. 9-21. Пример скоростного вывода, использующего широтно-импульсную модуляцию (продолжение) 9-66 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC Пример вывода последовательности импульсов с использованием односегментного режима LAD MAIN OB1 [Главная программа ОВ1] MAIN OB1 Network 1 SM0.1 STL Network 1 LD SM0.1 Q0.0 R 1 SBR0 EN В первом цикле сбросить бит в регистре образа процесса и вызвать подпрограмму 0. R Q0.0, 1 CALL 0 SUBROUTINE 0 [Подпрограмма 0] Network 1 SM0.0 Установка управляющего байта: - выбрать режим РТО - выбрать миллисекундные приращения MOV_B EN ENO 16#8D IN OUT период следования импульсов - разблокировать функцию РТО EN ENO IN OUT следования импульсов 500 мс. Установить число импульсов = 4. EN ENO IN OUT EN ENO 19 INT EVNT ENI PLS EN ENO 0 Q0.X MOV_B ENENO 16#89 IN OUT MOVD 4, SMD72 SMD72 ATCH 3 MOVW 500, SMW68 SMW68Установить период MOV_DW 4 MOVB 16#8D, SMB67 SMB67- установить количество и MOV_W 500 Network 1 LD SM0.0 Поставить программу прерывания 3 в соответствие событию «Завершение обработки РТО» Разрешить глобальные прерывания. Вызвать режим PTO PLS 0 => Q0.0 Предварительно загрузить управляющий байт для последующих изменений периода следования импульсов. SMB67 ATCH 3, 19 ENI PLS 0 MOVB 16#89, SMB67 Рис. 9-22. Пример вывода последовательности импульсов с использованием односегментного режима в SM-памяти Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-67 Команды SIMATIC LAD STL INTERRUPT 3 [Прерывание 3] Network 1 Network 1 SMW68 ==I 500 Если текущий период следования импульсов равен IN OUT SMW68 500 мс, то установить его равным 1000 мс и PLS вывести 4 импульса. EN ENO MOV_W EN ENO 1000 LDW= SMW68, 500 MOVW 1000, SMW68 PLS 0 0 CRETI RETI Network 2 SMW68 ==I 1000 MOV_W 500 0 Если текущий период следования EN ENO импульсов равен 1000 мс, то IN OUT SMW68 установить его равным 500 мс и PLS вывести 4 импульса. EN ENO LDW= SMW68, 1000 MOVW 500, SMW68 PLS 0 Q0.X Временная диаграмма 1 период 1000 мс 1 период 500 мс Q0.0 4 периода или 4 импульса 4 периода или 4 импульса Происходит прерывание 3 Происходит прерывание 3 Рис. 9-22. Пример вывода последовательности импульсов с использованием односегментного режима (продолжение) 9-68 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC FBD MAIN OB1 [Главная программа ОВ1] Network 1 Q0.0 R SM0.1 1 N Network 2 SM0.1 SBR0 EN SUBROUTINE 0 [Подпрограмма 0] Network 1 MOV_B SM0.0 16#8D EN IN MOV_W ENO OUT SMB67 +500 ATCH 3 19 EN IN ENO OUT MOV_DW SMW68 +4 EN IN ENO OUT SMD72 ENI EN ENO IN T EVNT PLS EN ENO Q0.X 0 MOV_B EN ENO 16#89 IN OUT SMB67 INTERRUPT 3 [Прерывание 3] Network 1 +1000 +500 PLS EN ENO MOV_W EN ENO ==I SMW68 IN OUT SMW68 0 RETI Q0.x Network 2 ==I +1000 PLS EN ENO MOV_W EN ENO SMW68 +500 IN OUT SMW68 0 Q0.X Рис. 9-22. Пример вывода последовательности импульсов с использованием односегментного режима (продолжение) Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-69 Команды SIMATIC Пример вывода последовательности импульсов с использованием многосегментного режима LAD STL MAIN OB1 [Главная программа ОВ1] Network 1 SM0.1 Network 1 В первом цикле сбросить бит в регистре образа процесса и вызвать подпрограмму 0 Q0.0 R 1 SBR0 EN LD SM0.1 R Q0.0, 1 CALL 0 SUBROUTINE 0 [Подпрограмма 0] Network 1 SM0.0 Установка управляющего байта: - выбрать режим РТО - выбрать многосегментную EN ENO обработку IN OUT SMB67 - выбрать миллисекундные приращения MOV_B 16#AO Network 1 LD SM0.0 MOVB 16#A0, SMB67 - разблокировать функцию РТО MOV_W EN ENO 500 IN OUT Задать начальный адрес таблицы профиля V500 SMW168 MOV_B EN ENO 3 IN OUT VB500 Установить количество сегментов таблицы профиля = 3 MOVW 500, SMW168 MOVB 3, VB500 MOV_W Установить начальный период следования импульсов для сегмента IN OUT VW501 #1 = 500 мс ENENO 500 Установить приращение периода следования импульсов для сегмента IN OUT VW503 #1 = –2 мс MOVW 500, VW501 MOV_W ENENO −2 MOV_D EN ENO 200 IN OUT VD505 Установить количество импульсов в сегменте #1 = 200. MOVW -2, VD503 MOVD 200, VD505 Рис. 9-23. Пример вывода последовательности импульсов с использованием многосегментного режима 9-70 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC STL LAD Network 1 MOV_W 100 EN ENO IN OUT VW509 IN OUT VW511 MOVD 3400, VD513 VD513 Установить количество импульсов в сегменте #2 = 3400. Установить начальный период следования импульсов для сегмента #3 = 100 мс. MOVW 100, VW517 Установить приращение периода следования импульсов для сегмента #3 = 1 мс. MOVW 1, VW519 Установить количество импульсов в сегменте #3 = 400 MOVD 400, VD521 MOV_D EN ENO 3400 IN OUT MOV_W EN ENO 100 IN OUT VW 517 MOV_W EN ENO 1 IN OUT VW 519 MOV_D EN ENO 400 IN OUT MOVW 100, VW509 Установить приращение периода следования импульсов для сегмента #2 = 0 мс. MOV_W EN ENO 0 Установить начальный период следования импульсов для сегмента #2 = 100 мс. VD521 MOVW 0, VW511 ATCH EN ENO 2 INT 19 EVNT 0 Поставить программу прерывания 2 в соответствие событию «Процесс РТО завершен». ATCH 2, 19 ENI Разрешить глобальные прерывания. ENI PLS EN ENO Вызвать режим PTO PLS 0 => Q0.0. PLS QO.X 0 INTERRUPT 0 [Прерывание 0] Network 1 SM0.0 Q0.5 Включить выход Q0.5, когда профиль вывода РТО завершен. Network 1 LD SM0.0 = Q0.5 Рис. 9-23. Пример вывода последовательности импульсов с использованием многосегментного режима (продолжение) Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-71 Команды SIMATIC FBD MAIN OB1 [Главная программа ОВ1] Network 1 Q0.0 R SM0.1 N 1 Network 2 SBR0 EN SM0.1 SUBROUTINE 0 [Подпрограмма 0] Network 1 MOV_B SM0.0 16#A0 MOV_W MOV_B EN ENO EN ENO EN ENO IN OUT SMB67+500 IN OUT SMW168 IN OUT MOV_W +500 EN IN ENO OUT 3 MOV_B EN IN VW 501 2 ENO OUT VW 503 VB500 MOV_DW +200 EN IN ENO OUT VD505 Network 2 SM0.0 +100 MOV_W MOV_W EN ENO EN ENO EN ENO IN OUT SMW509 +0 IN OUT SMW511 +3400 IN OUT MOV_W MOV_W +100 2 19 EN ENO IN OUT VW 517 +1 IN OUT VW 519 ATCH PLS EN ENO 0 VD513 MOV_DW EN ENO EN ENO IN T EVNT MOV_DW +400 EN ENO IN OUT VD521 Q0.X ENI INTERRUPT 0 [Прерывание 0] Network 1 Q0.5 SMW0.0 == Рис. 9-23. Пример вывода последовательности импульсов с использованием многосегментного режима (продолжение) 9-72 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC 9.7 Команды SIMATIC, выполняемые над часами Чтение и установка часов реального времени L A D F B D READ_RTC EN ENO T SET_RTC ENO EN T S T L ✓ ✓ ✓ Команда Установить часы реального времени записывает в часы текущее время и дату, загруженные в 8-байтовый буфер, начинающийся с адреса Т. В STL команды TODR и TODW означают «Прочитать время суток» (Time of Day Read, TODR) и «Записать время суток» (Time of Day Write, TODW). TODR T TODW T 221 Команда Прочитать часы реального времени считывает текущее время и дату из часов и загружает их в 8-байтовый буфер, начиная с адреса T. ✓ 222 224 226 TODR: Ошибки, устанавливающие ENO в 0: SM4.3 (этап исполнения), 0006 (косвенная адресация), 000C (отсутствует картридж часов) TODW: Ошибки, устанавливающие ENO в 0: SM 4.3 (исполнение), 0006 (косвенная адресация), 0007 (ошибка данных TOD), 000C (отсутствует картридж часов) Входы/выходы T Операнды Типы данных VB, IB, QB, MB, SMB, SB, LB, *VD, *AC, *LD BYTE Рис. 9–24 показывает формат буфера времени (T). T T+1 год месяц T+2 T+3 T+4 день час минута T+5 секунда T+6 T+7 0 день недели Рис. 9-24. Формат буфера времени Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-73 Команды SIMATIC После продолжительного отключения питания или потери памяти часы реального времени инициализируют следующую дату и время: Дата: 01-Янв-90 Время: 00:00:00 День недели: Воскресенье Часы реального времени в S7–200 используют только две младшие значащие цифры для года, так что 2000-й год представлен как 00. Все значения даты и времени должны быть закодированы в двоичнодесятичном (BCD) формате (например, 16#97 для 1997 года). Используйте следующие форматы: Год/месяц День/час Минута/секунда День недели ггмм ддчч ммсс д гг дд мм д- 0 − 99 1 − 31 0 − 59 0−7 мм чч сс 1= 0= 1 − 12 0 − 23 0 − 59 воскресенье блокирует день недели (сохраняется 0) Примечание CPU S7-200 не проверяет соответствие дня недели дате. Могут быть восприняты неверные даты, например, 30 февраля. Правильность даты должны обеспечивать вы сами. Не используйте команду TODR/TODW одновременно в главной программе и программе обработки прерывания. Эта команда не будет исполнена в программе обработки прерывания, которая пытается ее выполнить, когда действует другая команда TODR/TODW. Если делается попытка одновременно двух обращений к часам, то устанавливается SM4.3 (нефатальная ошибка 0007). ПЛК S7-200 никак не использует информацию о годе, и на него не влияет переход из одного столетия в другое (проблема 2000). Однако прикладные программы, которые используют арифметические операции или сравнения со значением года, должны учитывать двухзначное представление и изменение столетия. Високосные годы обрабатываются правильно до 2096 года. 9-74 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC 9.8 Арифметические команды SIMATIC над целыми числами Сложение и вычитание целых чисел L A D F B D ADD_I EN ENO IN1 OU OUT T IN2 В LAD и FBD: IN1 + IN2 = OUT IN1 – IN2 = OUT EN ENO В STL: IN1 + OUT = OUT OUT – IN1 = OUT IN1 OU OUT T IN2 Ошибки, устанавливающие ENO в 0: SM1.1 (переполнение), SM4.3 (ошибка этапа выполнения), 0006 (косвенная адресация) SUB_I S T L Эти команды влияют на следующие биты специальной памяти: SM1.0 (ноль); SM1.1 (переполнение); SM1.2 (отрицательное число) +I IN1,OUT -I IN1,OUT ✓ Команды Сложить целые числа и Вычесть целые числа складывают или вычитают два 16– битовых целых числа и дают 16–битовый результат (OUT). ✓ ✓ ✓ 221 222 224 226 Входы/выходы Операнды Типы данных IN1, IN2 VW, IW, QW, MW, SW, SMW, LW, AIW, T, C, AC, константа, *VD, INT *AC, *LD OUT VW, IW, QW, MW, SW, SMW, LW, T, C, AC, *VD, *AC, *LD Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 INT 9-75 Команды SIMATIC Сложение и вычитание двойных целых чисел L A D F B D ADD_DI ENO EN IN1 OUT OU T IN2 SUB_DI EN ENO OU IN1 OUT T IN2 S T L +D IN1, OUT -D IN1, OUT ✓ 221 Входы/выходы ✓ 222 ✓ 224 Команды Сложить двойные целые числа и Вычесть двойные целые числа складывают или вычитают два 32–битовых целых числа и дают 32– битовый результат (OUT). В LAD и FBD: IN1 + IN2 = OUT IN1 – IN2 = OUT В STL: IN1 + OUT = OUT OUT – IN1 = OUT Ошибки, устанавливающие ENO в 0: SM1.1 (переполнение), SM4.3 (этап исполнения), 0006 (косвенная адресация) Эти команды влияют на следующие биты специальной памяти: SM1.0 (ноль); SM1.1 (переполнение); SM1.2 (отрицательное число) ✓ 226 Операнды Типы данных IN1, IN2 VD, ID, QD, MD, SMD, SD, LD, AC, HC, константа, *VD, *AC, *LD DINT OUT VD, ID, QD, MD, SMD, SD, LD, AC, *VD, *AC, *LD 9-76 DINT Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC Умножение и деление целых чисел L A D F B D MUL_I EN ENO IN1 OU OUT T IN2 DIV_I EN ENO IN1 OU OUT T IN2 S T L ✓ Команда Умножить целые числа перемножает два 16–битовых целых числа и дает 16–битовое произведение. Команда Разделить целые числа делит два 16– битовых целых числа и дает 16–битовое частное. Остаток не сохраняется. Бит переполнения устанавливается, если результат занимает долее одного слова. В LAD и FBD: IN1*N2 = OUT IN1 / IN2 = OUT В STL: IN1*OUT = OUT OUT / IN1 = *I IN1,OUT OUT /I IN1,OUT Ошибки, устанавливающие ENO в 0: SM1.1 (переполнение), SM1.3 (деление на ноль), SM4.3 (этап исполнения), 0006 (косвенная адресация) ✓ 221 222 ✓ ✓ 224 226 Эти команды влияют на следующие биты специальной памяти: SM1.0 (ноль); SM1.1 (переполнение); SM1.2 (отрицательное число); SM1.3 (деление на ноль) Если во время операции умножения или деления устанавливается SM1.1 (переполнение), то выход не записывается, и все остальные биты состояния арифметической операции устанавливаются в ноль. Если во время операции деления устанавливается SM1.3 (деление на ноль), то все остальные биты состояния арифметической операции остаются неизменными, первоначальные входные операнды не меняются. В противном случае все поддерживаемые биты состояния арифметической операции содержат после завершения арифметической операции допустимый статус. Входы/выходы Операнды Типы данных IN1, IN2 VW, IW, QW, MW, SW, SMW, LW, AIW, T, C, AC, константа, *VD, *AC, *LD INT OUT VW, QW, IW, MW, SW, SMW, LW, T, C, AC, *VD, *LD, *AC INT Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-77 Команды SIMATIC Умножение и деление двойных целых чисел L A D F B D MUL_DI EN ENO OU IN1 OUT T IN2 DIV_DI ENO EN IN1 OU OUT T IN2 Команда Умножить двойные целые числа перемножает два 32–битовых целых числа и дает 32–битовое произведение. Команда Разделить двойные целые числа делит два 32–битовых целых числа и дает 32–битовое частное. Остаток не сохраняется. В LAD и FBD: IN1*N2 = OUT IN1 / IN2 = OUT В STL: OUT IN1*OUT = OUT / IN1 = OUT S T L Ошибки, устанавливающие ENO в 0: SM1.1 (переполнение), SM1.3 (деление на ноль), SM4.3 (этап исполнения), 0006 (косвенная адресация) *D IN1,OUT /D IN1,OUT ✓ ✓ ✓ ✓ 221 222 224 226 Эти команды влияют на следующие биты специальной памяти: SM1.0 (ноль); SM1.1 (переполнение); SM1.2 (отрицательное число); SM1.3 (деление на ноль) Если во время операции умножения или деления устанавливается SM1.1 (переполнение), то выход не записывается, и все остальные биты состояния арифметической операции устанавливаются в ноль. Если во время операции деления устанавливается SM1.3 (деление на ноль), то все остальные биты состояния арифметической операции остаются неизменными, первоначальные входные операнды не меняются. В противном случае все поддерживаемые биты состояния арифметической операции содержат после завершения арифметической операции допустимый статус. Входы/выходы Операнды Типы данных IN1, IN2 VD, ID, QD, MD, SMD, SD, LD, HC, AC, константа, *VD, *AC, *LD DINT OUT VD, ID, QD, MD, SMD, SD, LD, AC, *VD, *LD, *AC DINT 9-78 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC Умножение и деление целых чисел с представлением результата в виде двойного целого числа L A D F B D EN MUL ENO IN1 OU OUT T IN2 EN DIV ENO IN1 OU OUT T IN2 S T L MUL IN1, OUT DIV IN1, OUT ✓ 221 В STL: ✓ ✓ ✓ 222 224 226 Команда Умножить целые числа с представлением результата в виде двойного целого числа перемножает два 16–битовых целых числа и дает 32–битовое произведение. Команда Разделить целые числа с представлением результата в виде двойного целого числа делит два 16–битовых целых числа и дает 32–битовый результат, состоящий из 16– битового остатка (старшее слово) и 16–битового частного (младшее слово). В команде умножения STL младшее слово (16 битов) 32–битового выхода OUT используется как один из сомножителей. В команде деления STL младшее слово (16 битов) 32–битового выхода OUT используется как де6лимое. В LAD и FBD: IN1*N2 = OUT IN1 / IN2 = OUT IN1*OUT = OUT OUT / IN1 = OUT Ошибки, устанавливающие ENO в 0: SM1.1 (переполнение), SM1.3 (деление на ноль), SM4.3 (этап исполнения), 0006 (косвенная адресация) Эти команды влияют на следующие биты специальной памяти: SM1.0 (ноль); SM1.1 (переполнение); SM1.2 (отрицательное число); SM1.3 (деление на ноль) Если во время операции деления устанавливается SM1.3 (деление на ноль), то все остальные биты состояния арифметической операции остаются неизменными, первоначальные входные операнды не меняются. В противном случае все поддерживаемые биты состояния арифметической операции содержат после завершения арифметической операции допустимый статус. Входы/выходы Операнды Типы данных IN1, IN2 VW, IW, QW, MW, SW, SMW, LW, AC, AIW, T, C, константа, *VD, INT *AC, *LD OUT VD, ID, QD, MD, SMD, SD, LD, AC, *VD, *LD, *AC Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 DINT 9-79 Команды SIMATIC Примеры арифметических операций LAD STL NETWORK 1 Network 1 I0.0 ADD_I AC1 AC0 LD I0.0 ENO EN IN1 OU OUT T IN2 AC0 +I AC1, AC0 MUL EN ENO OUT AC1 IN1 OU T VW102 IN2 MUL AC1, VD100 VD100 DIV EN ENO VW202 IN1 OUT OU T VW10 IN2 VD200 DIV VW10, VD200 FBD Network 1 ADD_I I0.0 EN ENO AC1 OU IN1 OUT T IN2 AC0 DIV MUL EN AC0 ENO AC1 IN1 OU OUT T VW102 IN2 EN VD100 VW202 VW10 ENO IN1 OU OUT T IN2 VD200 Применение Сложение AC1 AC0 4000 плюс 6000 Умножение AC1 4000 VD100 VD100 4000 VD200 умноженное на равно AC0 10000 Divide 200 равно 800000 Примечание: VD100 содержит VW100 и VW102. VD200 содержит VW200 и VW202. деленное на VW 10 41 равно VD200 23 97 остаток частное VW 200 VW 202 Рис. 9-25. Примеры арифметических операций с целыми числами для SIMATIC LAD, STL и FBD 9-80 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC Увеличение и уменьшение байта на 1 L A D F B D INC_B EN ENO IN OUT DEC_B EN ENO IN S T L OUT DECB OUT ✓ Операции увеличения и уменьшения байта на 1 являются беззнаковыми. В LAD и FBD: В STL: IN + 1 = OUT IN – 1 = OUT OUT+ 1 = OUT OUT – 1 = OUT Ошибки, устанавливающие ENO в 0: SM1.1 (переполнение), SM4.3 (этап исполнения), 0006 (косвенная адресация) INCB OUT ✓ Команды Увеличить байт на 1 и Уменьшить байт на 1 прибавляют к входному байту (IN) или вычитают из него 1 и помещают результат в переменную, определенную OUT. ✓ ✓ 221 222 224 226 Эти команды влияют на следующие биты специальной памяти: SM1.0 (ноль); SM1.1 (переполнение) Входы/выходы Операнды Типы данных IN VB, IB, QB, MB, SB, SMB, LB, AC, константа, *VD, *AC, *LD BYTE OUT VB, IB, QB, MB, SB, SMB, LB, AC,*VD, *AC, *LD BYTE Увеличение и уменьшение слова на 1 L A D F B D INC_W EN ENO IN OUT DEC_W EN ENO IN OUT S T L INCW OUT DECW OUT ✓ ✓ 221 222 Входы/выходы ✓ ✓ Команды Увеличить слово на 1 и Уменьшить слово на 1 прибавляют к входному слову (IN) или вычитают из него 1 и помещают результат в OUT. Операции увеличения и уменьшения слова на 1 учитывают знак (16#7FFF > 16#8000). В LAD и FBD: IN + 1 = OUT IN – 1 = OUT В STL: OUT + 1 = OUT OUT – 1 = OUT Ошибки, устанавливающие ENO в 0: SM1.1 (переполнение), SM4.3 (этап исполнения), 0006 (косвенная адресация) Эти команды влияют на следующие биты специальной памяти: SM1.0 (ноль); SM1.1 (переполнение); SM1.2 (отрицательное число) 224 226 Операнды Типы данных IN VW, IW, QW, MW, SW, SMW, AC, AIW, LW, T, C, константа, *VD, INT *AC, *LD OUT VW, IW, QW, MW, SW, SMW, LW, AC, T, C, *VD, *AC, *LD Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 INT 9-81 Команды SIMATIC Увеличение и уменьшение двойного слова на 1 L A D F B D INC_DW EN ENO IN OUT DEC_DW EN ENO IN S T L INCD OUT OUT DECD OUT ✓ ✓ ✓ ✓ 221 222 224 226 Входы/выходы Команды Увеличить двойное слово на 1 и Уменьшить двойное слово на 1 прибавляют к входному двойному слову (IN) или вычитают из него 1 и помещают результат в OUT. В LAD и FBD: IN + 1 = OUT IN – 1 = OUT Операции увеличения и уменьшения двойного слова на 1 учитывают знак (16#7FFFFFFF > 16#80000000). В STL: OUT + 1 = OUT OUT – 1 = OUT Ошибки, устанавливающие ENO в 0: SM1.1 (переполнение), SM4.3 (этап исполнения), 0006 (косвенная адресация) Эти команды влияют на следующие биты специальной памяти: SM1.0 (ноль); SM1.1 (переполнение); SM1.2 (отрицательное число) Операнды Типы данных IN VD, ID, QD, MD, SD, SMD, LD, AC, HC, константа, *VD, *AC, *LD DINT OUT VD, ID, QD, MD, SD, SMD, LD, AC, *VD, *AC, *LD 9-82 DINT Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC Пример увеличения и уменьшения на 1 LAD I4.0 STL INC_W LD I4.0 EN ENO IN AC0 OUT INCW AC0 AC0 DEC_DW VD100 EN ENO IN OUT DECD VD100 VD100 FBD INC_W I4.0 AC0 DEC_DW EN ENO IN OUT EN ENO AC0 VD100 Увеличение слова на 1 AC0 IN OUT VD100 Применение Уменьшение двойного слова на 1 125 VD100 Увеличить на 1 AC0 126 128000 Уменьшить на 1 VD100 127999 Рис. 9-26. Пример команд увеличения/уменьшения на 1 для SIMATIC LAD, STL и FBD Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-83 Команды SIMATIC 9.9 Арифметические команды SIMATIC над вещественными числами Сложение и вычитание вещественных чисел L A D F B D ADD_R ENO EN IN1 OUT OU T IN2 Команды Сложить вещественные числа и Вычесть вещественные числа складывают или вычитают два 32–битовых вещественных числа и дают результат в виде 32–битового вещественного числа(OUT). В LAD и FBD: IN1 + IN2 = OUT IN1 – IN2 = OUT В STL: IN1 + OUT = OUT OUT – IN1 = OUT SUB_R EN ENO IN1 OUT OU T IN2 S T L +R IN1, OUT -R IN1, OUT ✓ ✓ 221 222 224 ✓ ✓ 226 Ошибки, устанавливающие ENO в 0: SM1.1 (переполнение), SM4.3 (этап исполнения), 0006 (косвенная адресация) Эти команды влияют на следующие биты специальной памяти: SM1.0 (ноль); SM1.1 (переполнение); SM1.2 (отрицательное число) SM1.1 используется для индикации ошибок переполнения и недопустимых значений. Если SM1.1 установлен, то состояние SM1.0 и SM1.2 не имеет значения, первоначальные входные операнды не изменяются. Если SM1.1 не установлен, то арифметическая операция завершилась с допустимым результатом, а SM1.0 и SM1.2 содержат действительное состояние. Входы/выходы Операнды Типы данных IN1, IN2 VD, ID, QD, MD, SD, SMD, AC, LD, константа, *VD, *AC, *LD REAL OUT VD, ID, QD, MD, SD, SMD, AC, LD, *VD, *AC, *LD REAL Примечание Вещественные числа, или числа с плавающей точкой, представляются в формате, описанном в стандарте ANSI/IEEE 754-1985 (одинарная точность). За дополнительной информацией обратитесь к стандарту. 9-84 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC Умножение и деление вещественных чисел L A D F B D MUL_R EN ENO IN1 OU OUT T IN2 DIV_R EN ENO IN1 OU OUT T IN2 Команда Умножить вещественные числа перемножает два 32–битовых вещественных числа и дает результат в виде 32–битового вещественного числа (OUT). Команда Разделить вещественные числа делит два 32–битовых вещественных числа и дает частное в виде 32–битового вещественного числа. В LAD и FBD: В STL: = OUT IN1*N2 = OUT IN1 / IN2 = OUT IN1*OUT OUT / IN1 S T L = OUT *R IN1, OUT /R IN1, OUT ✓ ✓ 221 222 ✓ ✓ Ошибки, устанавливающие ENO в 0: SM1.1 (переполнение), SM1.3 (деление на ноль), SM4.3 (этап исполнения), 0006 (косвенная адресация) 224 226 Эти команды влияют на следующие биты специальной памяти: SM1.0 (ноль); SM1.1 (переполнение, или во время операции образовалось недопустимое значение, или обнаружен недопустимый входной параметр); SM1.2 (отрицательное число); SM1.3 (деление на ноль) Если во время операции деления устанавливается SM1.3, то все остальные биты состояния арифметической операции остаются неизменными, первоначальные входные операнды не меняются. SM1.1 используется для индикации ошибок переполнения и недопустимых значений. Если SM1.1 установлен, то состояние SM1.0 и SM1.2 не имеет значения, и первоначальные входные операнды не меняются. Если SM1.1 и SM1.3 (во время операции деления) не устанавливаются, то арифметическая операция завершилась с допустимым результатом, и SM1.0 и SM1.2 содержат допустимый статус. Входы/выходы Операнды Типы данных IN1, IN2 VD, ID, QD, MD, SMD, SD, LD, AC, константа, *VD, *AC, *LD REAL OUT VD, ID, QD, MD, SMD, SD, LD, AC, *VD, *AC, *LD REAL Примечание Вещественные числа, или числа с плавающей точкой, представляются в формате, описанном в стандарте ANSI/IEEE 754-1985 (одинарная точность). За дополнительной информацией обратитесь к стандарту. Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-85 Команды SIMATIC Примеры арифметических операций LAD STL Network 1 NETWORK 1 I0.0 ADD_R EN LD I0.0 ENO AC1 IN1 OU OUT T AC0 IN2 +R AC1, AC0 AC0 MUL_R *R AC1, VD100 EN ENO IN1 OU OUT T VD100 IN2 VD100 AC1 DIV_R EN ENO /R VD10, VD200 VD100 IN1 OU OUT T IN2 VD10 VD200 FBD Network 1 MUL_R ADD_R I0.0 EN ENO AC1 IN1 OU OUT T AC0 IN2 EN DIV_R ENO AC0 AC1 IN1 OU OUT T VD100 IN2 EN ENO VD100 VD100 IN1 OUT OU T VD10 IN2 VD200 Применение Сложение AC1 4000.0 Умножение AC1 400.00 плюс AC0 6000.0 VD200 умноженное на VD100 равно AC0 10000.0 Деление 200.0 VD10 800000.0 41.0 равно равно VD100 4000.0 деленное на VD200 97.5609 Рис. 9-27. Примеры арифметических операций с вещественными числами для SIMATIC LAD, STL и FBD 9-86 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC 9.10 Команды SIMATIC с числовыми функциями Квадратный корень L A D F B D L A D SQRT EN ENO IN S T L OUT SQRT IN, OUT ✓ ✓ 221 222 ✓ ✓ 224 226 Команда Квадратный корень извлекает квадратный корень из 32–битового вещественного числа (IN) и дает результат в виде 32–битового вещественного числа (OUT), как показано в уравнении: √IN = OUT Ошибки, устанавливающие ENO в 0: SM1.1 (переполнение), SM4.3 (этап исполнения), 0006 (косвенная адресация) Эта команда влияет на следующие биты специальной памяти: SM1.0 (ноль); SM1.1 (переполнение); SM1.2 (отрицательное число). SM1.1 используется для индикации ошибок переполнения и недопустимых значений. Если SM1.1 установлен, то состояние SM1.0 и SM1.2 не имеет значения, первоначальные входные операнды не изменяются. Если SM1.1 не установлен, то арифметическая операция завершилась с допустимым результатом, а SM1.0 и SM1.2 содержат действительное состояние. Для получения других корней см. команду Натуральная экспонента на стр. 9–86. Входы/выходы Операнды Типы данных IN VD, ID, QD, MD, SMD, SD, LD, AC, константа, *VD, *AC, *LD REAL OUT VD, ID, QD, MD, SMD, SD, LD, AC, *VD, *AC, *LD REAL Натуральный логарифм L A D F B D L A D LN EN ENO IN S T L OUT LN IN, OUT ✓ 221 222 Команда Натуральный логарифм находит натуральный логарифм числа в IN и помещает результат в OUT. Для получения десятичного логарифма из натурального используйте DIV_R (/R) для деления натурального логарифма на 2.302585 (примерно натуральный логарифм 10). Ошибки, устанавливающие ENO в 0: SM1.1 (переполнение), 0006 (косвенная адресация) ✓ 224 226 Эта команда влияет на следующие биты специальной памяти: SM1.0 (ноль); SM1.1 (переполнение); SM1.2 (отрицательное число), SM4.3 (ошибка этапа выполнения). Входы/выходы Операнды Типы данных IN VD, ID, QD, MD, SMD, SD, LD, AC, константа, *VD, *AC, *LD REAL OUT VD, ID, QD, MD, SMD, SD, LD, AC, *VD, *AC, *LD REAL Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-87 Команды SIMATIC Натуральная экспонента L A D F B D L A D EXP EN ENO IN OUT S T L EXP IN, OUT ✓ 221 222 ✓ Команда Натуральная экспонента выполняет экспоненциальную операцию по возведению е в степень, заданную значением в IN, и помещает результат в OUT. Натуральная экспонента может быть использована в сочетании с Натуральным логарифмом для возведения любого вещественного числа в степень, заданную другим вещественным числом, включая дробные. А именно, Х в степени Y может быть вычислен как EXP (Y * LNX). 224 226 Примеры: 5 в кубе = 5^3 = EXP(3*LN(5)) = 125 Кубический корень из 125 = 125^(1/3) = EXP(1/3)*LN(125)) = 5 Квадратный корень из 5 в кубе = 5^(3/2) = EXP(3/2*LN(5)) = 11.18034 … Ошибки, устанавливающие ENO в 0: SM1.1 (переполнение), 0006 (косвенная адресация) Эта команда влияет на следующие биты специальной памяти: SM1.0 (ноль); SM1.1 (переполнение); SM1.2 (отрицательное число), SM4.3 (ошибка этапа выполнения). Входы/выходы Операнды Типы данных IN VD, ID, QD, MD, SMD, SD, LD, AC, константа, *VD, *AC, *LD REAL OUT VD, ID, QD, MD, SMD, SD, LD, AC, *VD, *AC, *LD REAL Синус, косинус и тангенс L A D F B D L A D SIN EN ENO IN OUT COS EN ENO OUT IN TAN EN ENO IN S T L OUT SIN IN, OUT COS IN, OUT TAN IN, OUT 222 222 Входы/выходы ✓ Команды Синус, Косинус и Тангенс вычисляют тригонометрическую функцию угловой величины IN и помещают результат в OUT. Входной угол задается в радианах. Для преобразования угла из градусов в радианы используйте MUL_R (*R) для умножения угла в градусах на 1.745329E-2 (примерно на π /180). Ошибки, устанавливающие ENO в 0: SM1.1 (переполнение), 0006 (косвенная адресация) Эта команда влияет на следующие биты специальной памяти: SM1.0 (ноль); SM1.1 (переполнение); SM1.2 (отрицательное число), SM4.3 (ошибка этапа выполнения). ✓ 224 226 Операнды Типы данных IN VD, ID, QD, MD, SMD, SD, LD, AC, константа, *VD, *AC, *LD REAL OUT VD, ID, QD, MD, SMD, SD, LD, AC, *VD, *AC, *LD REAL 9-88 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC PID-регулятор L A D F B D S T L PID EN ENO TBL LOOP PID TBL, LOOP ✓ ✓ 221 222 ✓ ✓ 224 226 Входы/выходы Команда PID-регулятор выполняет расчет контура PID-регулятора для заданного контура регулирования LOOP с помощью данных о входных величинах и конфигурации в таблице (TBL). Ошибки, устанавливающие ENO в 0: SM1.1 (переполнение), SM4.3 (ошибка этапа выполнения), 0006 (косвенная адресация) Эта команда влияет на следующие биты специальной памяти: SM1.1 (переполнение) Операнды Типы данных TBL VB BYTE LOOP Константа (от 0 до 7) BYTE Команда PID-регулятор (пропорционально-интегральнодифференциальный регулятор) предназначена для расчета PIDрегуляторов. Чтобы эти расчеты можно было выполнять, вершина логического стека (TOS) должна быть активизирована (поток сигнала). Команда имеет два операнда: TABLE, являющийся начальным адресом таблицы с данными контура регулирования, и LOOP – номер контура регулирования, являющийся константой от 0 до 7. В программе можно использовать до восьми команд PID. Если две или более команд PID используются с одним и тем же номером контура регулирования (даже если у них разные номера таблиц), то расчеты PID-регуляторов будут влиять друг на друга, и выход будет непредсказуемым. Таблица контура регулирования хранит девять параметров, используемых для управления и контроля за работой контура регулирования. Сюда входят текущее и предыдущее значение регулируемой переменной (фактическое значение), заданное значение, регулирующее воздействие (выход), коэффициент усиления, период квантования, постоянная времени интегрирования (сброс), постоянная времени воздействия по производной (скорость) и интегральная сумма (смещение). Для выполнения расчета PID-регулятора с желаемым временем квантования команда PID-регулятор должна выполняться или из программы обработки прерывания по времени, или из главной программы со скоростью, управляемой таймером. Время квантования должно подаваться как вход в команду PID-регулятор через таблицу контура регулирования. Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-89 Команды SIMATIC Использование мастера PID в STEP 7–Micro/WIN 32 STEP 7–Micro/WIN 32 предоставляет в распоряжение мастер PID для руководства вами при определении PID-алгоритма для процесса с замкнутым контуром управления. Выберите команду меню Tools → Instruction Wizard [Инструментальные средства → Мастер команд], а затем выберите PID из окна Instruction Wizard [Мастер команд]. PID-алгоритм В установившемся режиме PID-регулятор управляет своим выходом (регулирующим воздействием) таким образом, чтобы свести ошибку регулирования (e) к нулю. Мерой ошибки является разность между заданным значением (setpoint, SP) и значением регулируемой переменной (process variable, PV) (фактическое значение). Принцип PID-регулятора основан на следующем уравнении, которое выражает регулирующее воздействие M(t) как функцию пропорциональной составляющей, интегральной составляющей и дифференциальной составляющей: M(t) = Регулирующее = воздействие KC * e + Пропорциональная часть + t KC 0∫e dt + Mнач Интегральная часть + KC * de/dt + Дифференциальная часть где: M(t) - регулирующее воздействие (выход регулятора) как функция времени KC - коэффициент усиления контура регулирования e - ошибка регулирования (разность между заданным значением и регулируемой переменной) Mнач - начальное значение регулирующего воздействия Чтобы реализовать эту функцию управления в цифровой вычислительной машине, должно быть выполнено квантование непрерывной функции в соответствии с периодическими замерами значения ошибки с последующим расчетом регулирующего воздействия. Соответствующее уравнение, являющееся основой для решения на цифровой вычислительной машине, имеет вид: Mn = Регулирующее = воздействие где: Mn KC en en – 1 KI Mнач KD 9-90 n KC * en + KI * Σ1 en + Mнач + KD * (en – en-1) Пропорциональная часть + Интегральная часть + Дифференциальная часть - расчетное значение регулирующего воздействия в момент квантования n - коэффициент усиления контура регулирования - значение ошибки регулирования в момент квантования n - предыдущее значение ошибки регулирования (в момент квантования n – 1) - коэффициент пропорциональности интегральной составляющей - начальное значение регулирующего воздействия - коэффициент пропорциональности дифференциальной составляющей Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC Из этого уравнения следует, что интегральная составляющая является функцией всех составляющих ошибки от первого до текущего отсчета. Дифференциальная составляющая является функцией текущего и предыдущего отсчета, тогда как пропорциональная составляющая является функцией только текущего отсчета. В цифровой вычислительной машине нецелесообразно хранить все отсчеты ошибки регулирования, да в этом и нет необходимости. Так как компьютер должен вычислять регулирующее воздействие каждый раз, как опрашивается значение ошибки, начиная с первого отсчета, то необходимо сохранять только предыдущее значение ошибки и предыдущее значение интегральной составляющей. Как результат повторяющейся природы компьютерного решения, может быть получено упрощение уравнения, подлежащего решению в каждый момент квантования. Упрощенное уравнение имеет вид: Mn = Регулирующее = воздействие KC * en + KI * en + МХ + KD * (en – en-1) Пропорциональная часть + Интегральная часть + Дифференциальная часть где: Mn - расчетное значение регулирующего воздействия в момент квантования n KC - коэффициент усиления контура регулирования en - значение ошибки регулирования в момент квантования n en – 1 - предыдущее значение ошибки регулирования (в момент квантования n – 1) KI коэффициент пропорциональности интегральной составляющей MX - предыдущее значение интегральной составляющей (в момент квантования n – 1) KD - коэффициент пропорциональности дифференциальной составляющей CPU использует модифицированную форму упрощенного выше уравнения при расчете регулирующего воздействия. Это модифицированное уравнение имеет вид: Mn = MPn Регулирующее воздействие = Пропорциональная часть где: Mn MPn MIn MDn + MIn + + Интегральная часть + MDn Дифференциальная часть - расчетное значение регулирующего воздействия в момент квантования n - значение пропорциональной составляющей регулирующего воздействия в момент квантования n - значение интегральной составляющей регулирующего воздействия в момент квантования n - значение дифференциальной составляющей регулирующего воздействия в момент квантования n Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-91 Команды SIMATIC Пропорциональная составляющая Пропорциональная составляющая MP – это произведение коэффициента усиления (KC), определяющего точность расчета регулирующего воздействия, и ошибки регулирования (е), представляющей собой разность между заданным значением (SP) и регулируемой переменной (PV) в данный момент квантования. Уравнение для пропорциональной составляющей, решаемое CPU, имеет вид: MPn = KC * (SPn – PVn) где: MPn KC SPn PVn - значение пропорциональной составляющей регулирующего воздействия в момент квантования n - коэффициент усиления контура регулирования - заданное значение регулируемой величины в момент квантования n - значение регулируемой переменной в момент квантования n Интегральная составляющая Интегральная составляющая MI пропорциональна сумме ошибок за все время управления. Уравнение для интегральной составляющей, решаемое CPU, имеет вид: MIn = KC * TS / TI * (SPn – PVn) + MX где: MIn - значение интегральной составляющей регулирующего воздействия в момент квантования n KC - коэффициент усиления контура регулирования - период квантования контура регулирования TS - постоянная времени интегрирования контура регулирования TI (называемая также сбросом) SPn - заданное значение регулируемой величины в момент квантования n PVn - значение регулируемой переменной в момент квантования n MX - значение интегральной составляющей в момент квантования n – 1 (называемое также интегральной суммой или смещением) Интегральная сумма или смещение (MX) – это текущая сумма всех предыдущих значений интегральной составляющей. После каждого расчета MIn смещение обновляется значением MIn, которое может быть согласовано или ограничено (подробности см. в разделе «Переменные и диапазоны» на стр. 9–97). Начальное значение смещения обычно устанавливается равным значению регулирующего воздействия (Minitial) сразу перед его первым расчетом. Частью интегральной составляющей являются также несколько констант: коэффициент усиления (KC), период квантования (TS), представляющий собой время цикла, с которым PIDрегулятор пересчитывает регулирующее воздействие, и постоянная времени интегрирования (или сброс) (TI), которая используется для управления влиянием интегральной составляющей на расчет регулирующего воздействия. 9-92 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC Дифференциальная составляющая Дифференциальная составляющая MD пропорциональная изменению ошибки регулирования. Ниже показано уравнение для расчета дифференциальной составляющей: MDn = KC * TD / TS * ((SPn – PVn) – (SPn – 1 – PVn – 1)) Во избежание ступенчатых изменений или скачков регулирующего воздействия при изменениях заданного значения это уравнение модифицировано в предположении, что заданное значение постоянно (SPn = SPn – 1). В результате рассчитывается изменение регулируемой переменной, а не изменение ошибки регулирования. Это показывает следующее уравнение: MDn = KC * TD / TS * (SPn – PVn – SPn + PVn – 1) или: MDn = KC * TD / TS * (PVn – 1 – PVn) где: MDn - значение дифференциальной составляющей регулирующего воздействия в момент квантования n KC - коэффициент усиления контура регулирования - период квантования контура регулирования TS - постоянная времени воздействия по производной контура TD регулирования (называемая также временем упреждения) SPn - заданное значение регулируемой величины в момент квантования n SPn – 1 - заданное значение регулируемой величины в момент квантования n – 1 PVn - значение регулируемой переменной в момент квантования n PVn – 1 - значение регулируемой переменной в момент квантования n –1 Для использования в следующих расчетах дифференциальной составляющей должна сохраняться регулируемая переменная, а не ошибка регулирования. При первом отсчете значение PVn - 1 инициализируется равным PVn. Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-93 Команды SIMATIC Выбор регулятора Во многих системах управления может оказаться необходимым использовать только один или два метода регулирования. Например, может потребоваться только пропорциональное или пропорциональноинтегральное управление. Выбор желаемого типа регулятора выполняется установкой значений постоянных параметров. Если вам не нужно интегральное воздействие (нет составляющей “I” в расчете PID-регулятора), то постоянная времени интегрирования должна быть задана равной бесконечности. Даже при отсутствии интегрального воздействия значение этой составляющей не может быть равно нулю изза начального значения интегральной суммы MX. Если вам не нужно дифференцирующее воздействие (нет составляющей “D” в расчете PID-регулятора), то постоянная времени воздействия по производной (упреждение) должна быть задана равной 0.0. Если вам не нужно пропорциональное воздействие (нет составляющей “P” в расчете PID-регулятора), а вы хотите иметь интегральный или интегрально-дифференциальный регулятор, то значение 0.0 должно быть задано для коэффициента усиления. Так как усиление является коэффициентом в уравнениях для расчета интегральной и дифференциальной составляющей, установка значения 0.0 для коэффициента усиления контура регулирования приведет к тому, что при расчете интегральной и дифференциальной составляющей для коэффициента усиления будет использовано значение 1.0. 9-94 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC Преобразование и нормализация входов контура регулирования Контур регулирования имеет две входных переменных – заданное значение и регулируемую переменную. Заданное значение – это обычно фиксированная величина, например, уставка скорости для регулятора скорости движения в вашем автомобиле. Регулируемая переменная – это величина, связанная с регулирующим воздействием, поэтому она измеряет влияние, оказываемое регулирующим воздействием на управляемую систему. В примере с регулятором скорости движения автомобиля регулируемой переменной является вход тахометра, измеряющего скорость вращения колес. Заданное значение и регулируемая переменная – это реальные физические величины, диапазон значений которых и единицы измерения могут быть различными. Прежде чем эти физические величины могут быть использованы командой PID-регулятор, они должны быть преобразованы в нормализованные представления с плавающей точкой. Первый шаг состоит в преобразовании физической величины, представленной в виде 16–битового целого числа в вещественное число, или число с плавающей точкой. Следующая последовательность команд показывает, как можно преобразовать целое число в вещественное. XORD AC0, AC0 //Очистить аккумулятор. MOVW AIW0, AC0 //Сохранить в аккумуляторе аналоговое //значение. LDW>= AC0, 0 //Если аналоговое значение положительно, JMP 0 //то преобразовать его в вещественное //число. NOT //В противном случае ORD 16#FFFF0000, AC0 //снабдить значение в AC0 знаком. LBL 0 DTR AC0, AC0 //Преобразовать 32–битовое целое число в //вещественное. Следующий шаг состоит в преобразовании вещественного представления реальной физической величины в нормализованное значение между 0.0 и 1.0. Для нормализации заданного значения или регулируемой переменной используется следующее уравнение: RNorm = ((RRaw / Span) + Offset) где: RNorm RRaw Offset Span и - нормализованное вещественное число, представляющее реальную физическую величину - ненормализованное, или необработанное (raw), вещественное представление реальной физическое величины - смещение, равное 0.0 для униполярных величин, и 0,5 для биполярных величин - диапазон, равный разности между максимально возможным минимально возможным значением = 32 000 для униполярных величин (типичное значение) = 64 000 для биполярных величин (типичное значение) Следующая последовательность команд, являющаяся продолжением предыдущей последовательности, показывает, как нормализовать биполярную величину в AC0 (с диапазоном 64 000): Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-95 Команды SIMATIC /R 64000.0, AC0 аккумуляторе +R 0.5, AC0 от MOVR AC0, VD100 //Нормализовать значение в //Смещение для величины в диапазоне //0.0 до 1.0 //Сохранить нормализованное значение в //таблице контура регулирования TABLE Преобразование регулирующего воздействия в масштабированную целую величину Регулирующее воздействие – это управляющая переменная, например, установка дроссельной заслонки в примере с регулятором скорости движения автомобиля. Регулирующее воздействие – это нормализованное вещественное значение между 0.0 и 1.0. Прежде чем регулирующее воздействие может быть использовано для управления аналоговым выходом, оно должно быть преобразовано в 16–битовую масштабированную целую величину. Этот процесс противоположен преобразованию PV и SP в нормализованную величину. Первый шаг состоит в преобразовании регулирующего воздействия в масштабированное вещественное число с помощью следующей формулы: RScal = (Mn – Offset) * Span где: RScal Mn Offset Span и - масштабированное (scaled) вещественное значение регулирующего воздействия - нормализованное вещественное значение регулирующего воздействия - смещение, равное 0.0 для униполярных величин, и 0,5 для биполярных величин - диапазон, равный разности между максимально возможным минимально возможным значением = 32 000 для униполярных величин (типичное значение) = 64 000 для биполярных величин (типичное значение) Следующая последовательность команд показывает, как масштабировать регулирующее воздействие: MOVR VD108, AC0 //переместить регулирующее воздействие в //аккумулятор. –R 0.5, AC0 //Этот оператор включить только для биполярного //значения. *R 64000.0, AC0 //Масштабировать значение в аккумуляторе. Затем масштабированное вещественное представление регулирующего воздействия должно быть преобразовано в 16–битовое целое. Как выполнить это преобразование, показывает следующая последовательность команд: ROUND AC0 AC0 //Преобразовать вещественное число в 32– битовое //целое. MOVW AC0, AQW0 //Записать 16–битовое целое число в аналоговый //выход. 9-96 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC Контуры регулирования с положительной и отрицательной обратной связью Контур регулирования имеет положительную обратную связь, если его коэффициент усиления положителен, и отрицательную обратную связь, если его коэффициент усиления отрицателен. (Для интегрального и интегрально-дифференциального регулятора, где значение коэффициента усиления равно 0.0, задание положительных значений для постоянных времени интегрирования и воздействия по производной приведет к положительной обратной связи, а задание отрицательных значений – к отрицательной обратной связи.) Переменные и диапазоны Регулируемая переменная и заданное значение являются входами для расчета PID-регулятора. Поэтому поля таблицы контура регулирования для этих переменных могут считываться, но не могут быть изменены командой PID-регулятор. Регулирующее воздействие генерируется как результат расчетов PIDрегулятора, так что поле регулирующего воздействия в таблице контура регулирования обновляется после каждого расчета PID-регулятора. Регулирующее воздействие заключено между 0.0 и 1.0. Поле регулирующего воздействия может быть использовано для задания начального регулирующего воздействия при организации перехода от ручного управления к автоматическому с помощью команды PIDреггулятор (см. обсуждение этого вопроса в нижеследующем разделе «Режимы»). Если используется интегральный регулятор, то значение смещения обновляется в результате расчета PID-регулятора, и обновленное значение используется как вход в следующем расчете PID-регулятора. Если рассчитанное регулирующее воздействие выходит за пределы допустимого диапазона (меньше 0.0 или больше 1.0), то смещение корректируется в соответствии со следующими формулами: MX = 1.0 – (MPn + MDn), если расчетное значение Mn > 1.0 или MX = - (MPn + MDn), если расчетное значение Mn < 0.0, где: MX - значение скорректированного смещения - значение пропорциональной составляющей регулирующего MPn воздействия в момент квантования n MDn - значение дифференциальной составляющей регулирующего воздействия в момент квантования n Mn - значение регулирующего воздействия в момент квантования n При корректировке смещения описанным выше способом достигается улучшение чувствительности системы, когда рассчитанное регулирующее воздействие возвращается в надлежащий диапазон. Рассчитанное смещение также устанавливается в диапазоне между 0.0 и 1.0, а затем записывается в поле смещения таблицы контура регулирования при завершении каждого расчета PID-регулятора. Значение, сохраняемое в таблице контура регулирования, используется в следующем цикле расчетов PID-регулятора. Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-97 Команды SIMATIC Значение смещения в таблице контура регулирования может быть изменено пользователем перед выполнением команды PID-регулятор для оказания воздействия на определенные ситуации в некоторых приложениях. При ручной корректировке смещения необходимо учитывать, что любое смещение, записываемое в таблицу контура регулирования, должно быть вещественным числом в диапазоне между 0.0 и 1.0. Значение регулируемой величины, используемое для сравнения при расчете дифференциальной составляющей PID-регулятора, сохраняется в таблице контура регулирования. Это значение не может быть изменено пользователем. Режимы Для PID-регуляторов S7-200 нет встроенного управления режимом работы. Расчет PID-регулятора выполняется только тогда, когда поток сигнала достигает блока PID. Поэтому «автоматический» режим имеет место, когда расчеты PID-регулятора выполняются циклически. «Ручной» режим имеет место, когда расчеты PID-регулятора не выполняются. Команда PID-регулятор имеет бит истории потока сигнала, аналогичный биту, используемому в команде счета. Команда использует этот бит для обнаружения изменения потока сигнала с 0 на 1. Когда это изменение потока сигнала обнаруживается, это заставляет команду выполнить ряд действий, обеспечивающих плавный переход от ручного управления к автоматическому. Для плавного перехода к автоматическому режиму управления значение регулирующего воздействия, установленное при ручном управлении, должно быть передано в качестве входа команде PIDрегулятор (записано в таблицу контура регулирования для Mn) перед переключением в автоматический режим управления. Команда PIDрегулятор выполняет следующие действия с величинами в таблице контура регулирования, чтобы обеспечить плавный переход от ручного режима управления к автоматическому при обнаружении перехода потока сигнала из 0 в 1: • устанавливает заданное значение (SPn) = регулируемой переменной (PVn) • устанавливает старое значение регулируемой переменной (PVn-1) = регулируемой переменной (PVn) • регулируемой смещение (MX) = регулирующему воздействию (Mn) По умолчанию бит истории PID-регулятора установлен, и это состояние формируется при запуске CPU и при каждом переходе контроллера из STOP в RUN. Если сигнал достигает блока PID при первом его исполнении после перехода в режим RUN, то переход потока сигнала из 0 в 1 не обнаруживается, и действия, обеспечивающие плавный переход, не выполняются. Аварийный контроль и специальные операции PID-регулятор – это простая, но мощная команда, выполняющая расчеты, необходимые для PID-регулирования. Если требуются другие функции, например, контроль аварийных ситуаций или выполнение специальных расчетов с переменными контура регулирования, то они должны быть реализованы с помощью основных команд, поддерживаемых CPU. 9-98 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC Сбойные ситуации Если начальный адрес таблицы контура регулирования или операнды контура регулирования, указанные в команде, находятся вне допустимого диапазона, то при компиляции CPU выдаст ошибку компиляции (ошибка диапазона), и компиляция потерпит неудачу. Некоторые входные значения таблицы контура регулирования не проверяются на соответствие допустимому диапазону командой PIDрегулятор. Вы должны позаботиться о том, чтобы регулируемая переменная и заданное значение (а также смещение и предыдущее значение регулируемой переменной, если они используются в качестве входов) были вещественными числами в диапазоне между 0.0 и 1.0. Если при выполнении арифметических операций в расчетах PIDрегулятора встретится любая ошибка, то будет установлен бит SM1.1 (переполнение или недопустимое значение), и выполнение команды PIDрегулятор будет завершено. (Обновление выходных значений в таблице контура регулирования может быть неполным, так что вы не должны принимать эти значения во внимание, а исправить входное значение, вызвавшее арифметическую ошибку перед следующим выполнением команды PID-регулятор.) Таблица контура регулирования Таблица контура регулирования имеет длину 36 байтов и формат, показанный в таблице 9–19. Таблица 9–19. Формат таблицы контура регулирования СмещеПоле ние 0 Регулируемая переменная (PVn) 4 Заданное значение (SPn) 8 Регулирующее воздействие (Mn) 12 Коэффициент усиления (KC) 16 Период квантования (TS) 20 Постоянная времени интегрирования (TI) 24 Постоянная времени воздействия по производной (TD) Смещение (MX) 28 32 Предыдущее значение регулируемой переменной (PVn-1) Формат Тип Описание Двойное слово – in вещественная Двойное слово – in вещественная Двойное слово – in/out вещественная Содержит регулируемую переменную, которая должна быть между 0.0 и 1.0. Содержит заданное значение, которое должна быть между 0.0 и 1.0. Содержит расчетное регулирующее воздействие, которое должна быть между 0.0 и 1.0. Двойное слово – in Содержит усиление, являющееся вещественная коэффициентом пропорциональности. Может быть положительным или отрицательным числом. Двойное слово – in Содержит период квантования в вещественная секундах. Должен быть положительным числом. Двойное слово – in Содержит постоянную времени вещественная интегрирования в минутах. Должно быть положительным числом. Двойное слово – in Содержит постоянную времени вещественная воздействия по производной в минутах. Должно быть положительным числом. Двойное слово – in/out Содержит значение смещения или вещественная интегральной суммы в пределах от 0.0 до 1.0. Двойное слово – in/out Содержит предыдущее значение вещественная регулируемой переменной, сохраняемое после последнего выполнения команды PID-регулятор. Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-99 Команды SIMATIC Пример программы с PID-регулятором В этом примере в резервуаре с водой должно поддерживаться постоянное давление воды. Вода постоянно забирается из резервуара с различной скоростью. Для добавления воды в резервуар со скоростью, обеспечивающей надлежащее давление воды, а также не допускающей опустошения резервуара, используется насос, снабженный приводом с переменной скоростью. Заданным значением для этой системы является установка уровня воды, эквивалентная наполнению резервуара на 75%. Регулируемая переменная поставляется поплавковым измерительным устройством, показывающим, насколько полон резервуар. Выдаваемое им значение может находиться в пределах от 0% при пустом резервуаре до 100% при полном резервуаре. Регулирующим воздействием является величина скорости насоса, которая может меняться от 0% до 100% от максимальной скорости. Заданное значение определяется заранее и непосредственно вводится в таблицу контура регулирования. Регулируемая переменная поставляется как однополярная аналоговая величина из поплавкового измерительного устройства. Регулирующее воздействие записывается как однополярная аналоговая величина, используемая для управления скоростью насоса. Диапазон аналогового входа и аналогового выхода равен 32 000. В этом примере используется только пропорциональный и интегральный регулятор. Коэффициент усиления контура регулирования и постоянные времени определены из инженерных расчетов и могут быть настроены для достижения оптимального управления. Рассчитанные значения коэффициента усиления и постоянных времени: KC = 0,25 TS = 0,1 секунды TI = 30 минут Скорость насоса управляется вручную, пока резервуар не будет заполнен на 75%, затем открывается клапан, позволяющий воде вытекать из резервуара. Одновременно насос переключается из ручного режима в автоматический. Для переключения из ручного режима в автоматический используется цифровой вход. Этот вход описан ниже: I0.0 – ручной/автоматический режим; 0 – ручной, 1 – автоматический. В ручном режиме скорость насоса записывается оператором в VD108 как вещественное число в диапазоне от 0.0 до 1.0. Программа управления для этого приложения показана на рис. 9–28. 9-100 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC LAD STL MAIN [Главная программа] OB1 Network 1 SM0.1 SBR0 EN Network 1 LD SM0.1 //В первом цикле вызвать CALL 0 //подпрограмму //инициализации SUBROUTINE 0 [Подпрограмма 0] Network 1 SM0.0 Network 1 LD SM0.0 MOVR 0.75, VD104 //Загрузить заданное MOV_R EN ENO 0.75 IN OUT VD104 0.25 EN IN MOV_R ENO OUT VD112 MOV_R 0.10 ENO IN OUT VD116 MOV_R ENO OUT VD124 0.0 100 EN ENO IN OUT MOV_B ATCH EN ENO 0 10 INT // квантования = 0,1 секунды. MOVR 30.0, VD120 //Загрузить постоянную EN ENO IN OUT VD120 EN IN MOVR 0.25, VD112 //Загрузить коэффициент //усиления = 0,25. MOVR 0.10, VD116 //Загрузить период EN MOV_R 30.0 // значение = 75% емкости резервуара. SMB34 //времени интегрирования = 30 минут. // MOVR 0.0, VD124 //Исключить действие по // по производной. MOVB 100, SMB34 //Установить интервал //(100 мс) для управляемого временем //прерывания 0. ATCH 0, 10 //Организовать управляемое // временем прерывание для вызова на //исполнение PID-регулятора. EVNT ENI ENI //Разрешить прерывания. //Конец подпрограммы 0. Рис. 9-28. Пример PID-регулятора для SIMATIC LAD, STL и FBD Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-101 Команды SIMATIC LAD STL INT ER RU PT 0 [П реры ван ие 0] Network 1 SM0.0 N ETW OR K 1 I_D I EN EN O AIW 0 IN OUT AC0 DI_R EN EN O OUT AC0 IN AC0 // П реобр азо вать P V в нор м али зованн ое //вещ ественное числ о – P V явл яется //унипол ярны м входом , кот оры й не м ож ет //бы ть отрицательн ым . LD SM 0.0 IT D AIW 0, AC0 //С охранить унипол ярную //ан алоговую вел ичину в аккум уляторе. D TR AC0, AC 0 //П реобр азовать 32-битовое //ц елое числ о в вещ ест венное числ о. DIV_R EN EN O AC0 IN1 OUT 32 000 AC0 3200 0.0, AC0 //Н орм ал изо вать значение в //аккум уляторе. IN2 MOV_R M O VR EN EN O AC0 IN - O UT AC0, VD 100 //С охр анить нор м али зо- //ванн ую PV в т абл ице к онтура р егул ировани я. VD1 00 Network 2 N ETW OR K 2 I0.0 //Вы полни ть регули рование, вкл ючен ное //в автом ати ческий р ежим. LD I0.0 //Когд а авт ом атический режи м //вкл ючен , PID VB100, 0 //вызвать P ID -регулятор. P ID EN EN O VB100 T BL 0 LO O P Network 3 SM0.0 /R MUL_R EN EN O VD1 08 IN1 OUT OU T 32 000 IN2 AC0 RO UND EN EN O AC0 IN OUT AC0 DI_I D TI AC 0, AQ W 0 EN EN O AC0 IN OUT N ETW OR K 3 //П реобр азовать M n в м асш т абир ованное //16-битовое ц елое числ о //M n – унипол ярная вел ичина, кот орая //не м ожет бы ть отрицательн ой. LD SM 0.0 M O VR VD10 8, AC //П ерем естить регули рующ ее //возд ейст ви е в аккум улятор. *R 3200 0.0, AC0 //М асш табир овать значение в //аккум уляторе. R OU ND AC0, AC 0 //П реобр азо вать // вещ ест венное числ овое значение //в 32-битовое цел ое числ о. AQ W 0 //Запис ать 1 6-би товую //ц елую вел ичину в анал оговый выход . //К онец прогр ам м ы прер ывания 0 Рис. 9-28. Пример PID-регулятора для SIMATIC LAD, STL и FBD (продолжение) 9-102 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC FBD MAIN OB1 [Главная программа ОВ1] Network 1 SBR0* EN SM0.1 *См. стр. 9-150 SUBROUTINE 0 [Подпрограмма 0] MOV_R MOV_R SM0.0 EN ENO 0.75 OUT IN VD104 0.25 IN MOV_R IN OUT OUT EN ENO VD112 MOV_R EN ENO 30.0 MOV_R EN ENO 0.0 IN OUT IN OUT VD116 MOV_B EN ENO VD120 0.10 EN ENO VD124 100 IN OUT SMB34 ATCH ENI EN ENO 0 INT 10 EVNT INTERRUPT 0 [Прерывание 0] Network 1 I_DI DI_R SM0.0 EN ENO DIV_R EN ENO EN ENO AIW0 IN OUT AC0AC0 IN OUT AC0 AC0 IN1 OU OUT T 32000.0 IN2 Network 2 MOV_R EN ENO AC0AC0 IN OUT VD100 PID I0.0 EN ENO VB100 TBL 0 LOOP Network 3 MUL_R SM0.0 EN ENO VB108 IN1 OUT OU T 32000.0 IN2 ROUND DI_I EN ENO AC0 AC0 IN OUT EN ENO AC0 AC0 IN OUT AQW0 Рис. 9-28. Пример PID-регулятора для SIMATIC LAD, STL и FBD (продолжение) Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-103 Команды SIMATIC 9.11 Команды SIMATIC для пересылки Пересылка байта, слова, двойного слова, вещественного числа L A D F B D MOV_B EN ENO IN OUT MOV_W EN ENO IN OUT MOV_DW EN ENO IN OUT MOV_R EN ENO IN OUT S T L MOVB MOVW MOVD MOVR ✓ ✓ 221 222 IN, OUT IN, OUT IN, OUT IN, OUT ✓ Команда Переслать байт пересылает входной байт (IN) в выходной байт (OUT). Входной байт командой пересылки не изменяется. Команда Переслать слово пересылает входное слово (IN) в выходное слово (OUT). Входное слово командой пересылки не изменяется. Команда Переслать двойное слово пересылает входное двойное слово (IN) в выходное двойное слово (OUT). Входное двойное слово командой пересылки не изменяется. Команда Переслать вещественное число пересылает входное вещественное число (двойное слово, 32 бита) (IN) в выходное (OUT). Входное двойное слово командой пересылки не изменяется. Ошибки, устанавливающие ENO в 0: SM4.3 (ошибка этапа выполнения), 0006 (косвенная адресация) ✓ 224 226 Переслать … Входы/выходы байт IN OUT VB, IB, QB, MB, SB, SMB, LB, AC, *VD, *AC, *LD BYTE слово IN VW, IW, QW, MW, SW, SMW, LW, T, C, AIW, константа, AC *VD, *AC, *LD WORD, INT OUT VW, T, C, IW, QW, SW, MW, SMW, LW, AC, AQW, *VD, *AC, *LD WORD, INT VD, ID, QD, MD, SD, SMD, LD, HC, &VB, &IB, &QB, &MB, &SB, &T, &C, AC, константа, *VD, *AC, *LD DWORD, DINT VD, ID, QD, MD, SD, SMD, LD, AC, *VD, *AC, *LD DWORD, DINT VD, ID, QD, MD, SD, SMD, LD, AC, константа, *VD, *AC, *LD REAL VD, ID, QD, MD, SD, SMD, LD, AC, *VD, *AC, *LD REAL двойное слово IN OUT Вещественное IN число OUT 9-104 Операнды VB, IB, QB, MB, SB, SMB, LB, AC, константа, *VD, *AC, *LD Типы данных BYTE Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC Групповая пересылка байтов, слов, двойных слов L A D F B D BLKMOV_B EN ENO IN OUT N BLKMOV_W EN ENO IN Команда Переслать группу слов пересылает несколько слов (N) из входного адреса IN в выходной адрес OUT. N может иметь значение от 1 до 255. Команда Переслать группу двойных слов пересылает несколько двойных слов (N) из входного адреса IN в выходной адрес OUT. N может иметь значение от 1 до 255. OUT N BLKMOV_D EN ENO IN Команда Переслать группу байтов пересылает несколько байтов (N) из входного адреса IN в выходной адрес OUT. N может иметь значение от 1 до 255. OUT Ошибки, устанавливающие ENO в 0: SM4.3 (ошибка этапа выполнения), 0006 (косвенная адресация), 0091 (выход операнда за пределы допустимого диапазона) N S T L BMB IN, OUT, N BMW IN, OUT, N BMD IN, OUT, N ✓ 221 ✓ ✓ ✓ 222 224 226 Переслать Входы/выходы несколько… Байтов слов двойных слов Операнды Типы данных IN, OUT VB, IB, QB, MB,SB, SMB, LB, *VD, *AC, *LD BYTE N VB, IB, QB, MB, SB, SMB, LB, AC, константа, *VD, *AC, *LD BYTE IN VW, IW, QW, MW, SW, SMW, LW, T, C, AIW, *VD, *AC, *LD WORD N VB, IB, QB, MB, SB, SMB, LB, AC, константа, *VD, *AC, *LD BYTE OUT VW, IW, QW, MW, SW, SMW, LW, T, C, AQW, *VD, *LD, *AC WORD IN, OUT VD, ID, QD, MD, SD, SMD, LD, *VD, *AC, *LD DWORD N VB, IB, QB, MB, SB, SMB, LB, AC, константа, *VD, *AC, *LD BYTE Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-105 Команды SIMATIC Пример групповой пересылки LAD I2.1 EN VB20 IN 4 STL Переслать массив 1 (VB20 ÷ VB23) в массив 2 (VB100 ÷ VB103) BLKMOV_B ENO LD I2.1 BMB VB20, VB100, 4 OUT VB100 N FBD BLKMOV_B I2.1 VB20 4 EN ENO IN OUT VB100 N Применение Массив 1 VB20 30 VB21 VB22 VB23 31 32 33 переслать группу Массив 2 VB100 30 VB101 31 VB102 32 VB103 33 Рис. 9-29. Пример команд групповой пересылки для SIMATIC LAD, STL и FBD 9-106 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC Перестановка байтов L A D F B D Команда Переставить байты меняет местами старший и младший байты слова (IN). SWAP EN ENO Ошибки, устанавливающие ENO в 0: SM4.3 (ошибка этапа выполнения), 0006 (косвенная адресация) IN S T L SWAP IN ✓ 221 ✓ ✓ ✓ 222 224 226 Входы/выходы IN Операнды Типы данных VW, IW, QW, MW, SW, SMW, LW, T, C, AC, *VD, *AC, *LD WORD Примеры пересылки и перестановки LAD STL LD I2.1 MOVB VB50, AC0 SWAP AC0 MOV_B I2.1 VB50 EN ENO IN OUT AC0 SWAP EN AC0 ENO IN FBD MOV_B I2.1 EN VB50 IN SWAP ENO EN OUT AC0 ENO AC0 IN Применение Пересылка C3 VB50 переслать AC0 C3 Перестановка AC0 D6 C3 переставить AC0 C3 D6 Рис. 9-30. Пример команд пересылки и перестановки для SIMATIC LAD, STL и FBD Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-107 Команды SIMATIC Пересылка непосредственно считанного байта L A D F B D Команда Переслать непосредственно считанный байт считывает физический вход IN и записывает результат в OUT. MOV_BIR EN ENO IN S T L OUT Ошибки, устанавливающие ENO в 0: SM4.3 (ошибка этапа выполнения), 0006 (косвенная адресация) BIR IN, OUT ✓ ✓ 221 ✓ ✓ 222 224 226 Входы/выходы Операнды Типы данных IN IB BYTE OUT VB, IB, QB, MB, SB, SMB, LB, AC, *VD, *LD, *AC BYTE Пересылка байта для непосредственной записи L A D F B D MOV_BIW EN ENO L AIN OUT D S T L BIW IN, OUT ✓ 221 Входы/выходы ✓ ✓ 222 224 ✓ 226 Команда Переслать байт для непосредственной записи считывает байт из ячейки IN и записывает в физический выход OUT. Ошибки, устанавливающие ENO в 0: SM4.3 (ошибка этапа выполнения), 0006 (косвенная адресация) Операнды Типы данных IN VB, IB, QB, MB, SB, SMB, LB, AC, константа, *VD, *LD, *AC BYTE OUT QB BYTE 9-108 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC 9.12 Табличные команды SIMATIC Добавление данных к таблице L A D F B D AD_T_TBL EN ENO DATA Команда Добавить данные к таблице добавляет к таблице (TBL) значения, имеющие размер слова (DATA). TBL S T L ATT DATA, TABLE ✓ 221 ✓ ✓ 222 224 ✓ 226 Первым значением таблицы является ее максимальная длина (table length, TL). Второе значение – это количество записей (entry count, EC) в таблице. (См. рис. 9–31.) Новые данные добавляются к таблице после последней записи. Каждый раз, когда к таблице добавляются новые данные, количество записей увеличивается на единицу. Таблица может иметь до 100 записей данных (TBL). Ошибки, устанавливающие ENO в 0: SM1.4 (переполнение таблицы), SM4.3 (ошибка этапа выполнения), 0006 (косвенная адресация), 0091 (операнд вне допустимого диапазона) Эта команда влияет на следующие биты специальной памяти: SM1.4 устанавливается в 1, если вы пытаетесь переполнить таблицу. Входы/выходы Операнды Типы данных DATA VW, IW, QW, MW, SW, SMW, LW, T, C, AIW, AC, константа, *VD, INT *AC, *LD TBL VW, IW, QW, MW, SW, SMW, LW, T, C, *VD, *AC, *LD Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 WORD 9-109 Команды SIMATIC Пример добавления данных к таблице LAD I3.0 STL LD I3.0 ATT VW100, VW200 AD_T_TBL EN VW 100 VW 200 ENO FBD DATA AD_T_TBL TBL I3.0 EN VW 100 DATA VW 200 TBL ENO Применение Перед выполнением ATT VW 100 1234 VW 200 VW 202 VW 204 VW 206 VW 208 VW 210 VW 212 VW 214 0006 0002 5431 8942 xxxx xxxx xxxx xxxx TL (макс. кол-во записей) EC (кол-во записей) d0 (данные 0) d1 (данные 1) После выполнения ATT VW 200 VW 202 VW 204 VW 206 VW 208 VW 210 VW 212 VW 214 0006 0003 5431 8942 1234 xxxx xxxx xxxx TL (макс. кол-во записей) EC (кол-во записей) d0 (данные 0) d1 (данные 1) d2 (данные 2) Рис. 9-31. Пример команды «Добавить данные к таблице» для SIMATIC LAD, STL и FBD 9-110 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC Поиск в таблице L A D F B D TBL_FIND EN ENO TBL PTN INDX CMD S T L FND= TBL, PATRN INDX FND<> TBL, PATRN, INDX FND< TBL, PATRN, INDX FND> TBL, PATRN, INDX ✓ 221 ✓ ✓ ✓ 222 224 226 Входы/выходы Команда Поиск в таблице ищет в таблице (TBL), начиная с записи INDX и основываясь на образце (PTN), значение данных, удовлетворяющее критерию поиска, определенному CMD. Командному параметру CMD дается числовое значение от 1 до 4, что соответственно означает =, <>, < и >. Если соответствующая запись, найдена, то INDX указывает на эту запись в таблице. Для нахождения следующей записи INDX должен быть увеличен, прежде чем команда Поиск в таблице будет вызвана снова. Если запись, удовлетворяющая условию поиска, не найдена, то INDX имеет значение, равное количеству записей. Таблица может иметь до 100 записей данных. Записи данных (область поиска) нумеруются от 0 до максимум 99. Ошибки, устанавливающие ENO в 0: SM4.3 (ошибка этапа выполнения), 0006 (косвенная адресация), 0091 (операнд вне допустимого диапазона) Операнды Типы данных SRC VW, IW, QW, MW, SMW, LW, T, C, *VD, *AC, *LD WORD PTN VW, IW, QW, MW, SW, SMW, AIW, LW, T, C, AC, константа, *VD, INT *AC, *LD INDX VW, IW, QW, MW, SW, SMW, LW, T, C, AC, *VD, *AC, *LD WORD CMD константа BYTE Примечание Когда вы используете команды поиска в таблицах, созданных с помощью команд ATT, LIFO и FIFO, то количество записей и сами записи данных согласуются непосредственно. Слово, определяющее максимальное количество записей, требуемое для команд ATT, LIFO и FIFO, не требуется для команд поиска. Поэтому операнд SRC команды поиска находится, как показано на рис. 9-32, на один адрес слова (два байта) выше, чем операнд TBL соответствующей команды ATT, LIFO или FIFO. Формат таблицы для ATT, LIFO и FIFO VW 200 VW 202 VW 204 VW 206 VW 208 VW 210 VW 212 VW 214 0006 0006 xxxx xxxx xxxx xxxx xxxx xxxx TL (макс. кол-во записей) EC (число записей) d0 (данные 0) d1 (данные 1) d2 (данные 2) d3 (данные 3) d4 (данные 4) d5 (данные 5) Формат таблицы для TBL_FIND VW 202 VW 204 VW 206 VW 208 VW 210 VW 212 VW 214 0006 xxxx xxxx xxxx xxxx xxxx xxxx EC (число записей) d0 (данные 0) d1 (данные 1) d2 (данные 2) d3 (данные 3) d4 (данные 4) d5 (данные 5) Рис. 9-32. Разница в формате таблицы между командами поиска и ATT, LIFO, FIFO Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-111 Команды SIMATIC Пример поиска в таблице LAD STL LD I2.1 FND= VW202, 16#3130, AC1 I2.1 FBD TBL_FIND ENO EN VW 202 16#3130 AC1 1 TBL PTN INDX CMD Когда I2.1 включен, искать в таблице значение, равное 3130 HEX. TBL_FIND I2.1 VW 202 16#3130 AC1 1 EN ENO TBL PTN INDX CMD Применение Это таблица, в которой производится поиск. Если таблица была создана с помощью команды ATT, LIFO или FIFO, то VW200 содержит максимально разрешенное количество записей и не требуется для команд поиска. 0006 VW 202 EC (число записей) 3133 VW 204 d0 (данные 0) 4142 VW 206 d1 (данные 1) 3130 VW 208 d2 (данные 2) 3030 d3 (данные 3) VW 210 3130 VW 212 d4 (данные 4) 4541 VW 214 d5 (данные 5) AC1 0 Выполнить поиск в таблице. AC1 AC1 2 AC1 содержит номер записи данных, соответствующий первому совпадению, найденному в таблице (d2). 3 Увеличьте INDX на 1 перед поиском среди оставшихся записей в таблице. Выполнить поиск в таблице. AC1 AC1 AC1 должен быть установлен в 0 для поиска с самой верхней записи таблицы. 4 AC1 содержит номер записи данных, соответствующий второму совпадению, найденному в таблице (d4). 5 Увеличьте INDX на 1 перед поиском среди оставшихся записей в таблице. Выполнить поиск в таблице. AC1 6 AC1 содержит значение, равное количеству записей. Вся таблица была просмотрена, но больше совпадений не найдено. AC1 0 Прежде чем опять можно будет вести поиск в таблице, значение INDX должно быть сброшено в 0. Рис. 9-33. Пример команд поиска для SIMATIC LAD, STL и FBD 9-112 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC Удаление первой записи L A D F B D S T L FIFO EN ENO TBLDATA OUT FIFO TABLE, DATA ✓ ✓ 221 ✓ ✓ 222 224 226 Команда Удаление первой записи (FIFO) удаляет первую запись из таблицы (TBL) и пересылает значение по адресу, указанному в DATA. Все остальные записи таблицы смещаются на одну позицию вверх. Количество записей в таблице после выполнения каждой команды уменьшается на 1. Ошибки, устанавливающие ENO в 0: SM1.5 (пустая таблица), SM4.3 (ошибка этапа выполнения), 0006 (косвенная адресация), 0091 (операнд вне допустимого диапазона) Эта команда влияет на следующие биты специальной памяти: SM1.5 устанавливается в 1, если вы пытаетесь удалить запись из пустой таблицы. Входы/выходы Операнды Типы данных TABLE VW, IW, QW, MW, SW, SMW, LW, T, C, *VD, *AC, *LD INT DATA VW, IW, QW, MW, SW, SMW, LW, AC, AQW, T, C, *VD, *AC, *LD WORD Пример удаления первой записи LAD I4.1 FIFO EN STL LD I4.1 FIFO VW200, VW400 ENO VW 200 TBL DATA VW 400 FBD I4.1 EN FIFO ENO VW 200 TBL DATA VW 400 Применение Перед выполнением FIFO После выполнения FIFO VW 400 VW 200 VW 202 VW 204 VW 206 VW 208 VW 210 VW 212 VW 214 0006 0003 5431 8942 1234 xxxx xxxx xxxx TL (макс. кол-во записей) VW 200 VW 202 EC (число записей) VW 204 d0 (данные 0) VW 206 d1 (данные 1) VW 208 d2 (данные 2) VW 210 VW 212 VW 214 5431 0006 0002 8942 1234 xxxx xxxx xxxx xxxx TL (макс. кол-во записей) EC (число записей) d0 (данные 0) d1 (данные 1) Рис. 9-34. Пример команды «Удаление первой записи» для SIMATIC LAD, STL и FBD Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-113 Команды SIMATIC Удаление последней записи L A D F B D Команда Удаление последней записи (LIFO) удаляет последнюю запись из таблицы (TBL) и пересылает значение по адресу, указанному в DATA. Количество записей в таблице после выполнения каждой команды уменьшается на 1. LIFO EN ENO O OUT DATA TBL S T L LIFO TABLE, DATA ✓ 221 ✓ ✓ 222 224 ✓ 226 Ошибки, устанавливающие ENO в 0: SM1.5 (пустая таблица), SM4.3 (ошибка этапа выполнения), 0006 (косвенная адресация), 0091 (операнд вне допустимого диапазона) Эта команда влияет на следующие биты специальной памяти: SM1.5 устанавливается в 1, если вы пытаетесь удалить запись из пустой таблицы. Входы/выходы Операнды Типы данных TABLE VW, IW, QW, MW, SW, SMW, LW, T, C, *VD, *AC, *LD INT DATA VW, IW, QW, MW, SW, SMW, LW, AQW, T, C, AC, *VD, *AC, *LD WORD Пример удаления последней записи LAD I4.0 LIFO EN STL LD I4.0 LIFO VW200, VW300 ENO VW 200 TBL DATA FBD VW 300 I4.0 LIFO EN ENO VW 200 TBL DATA VW 300 Применение Перед выполнением LIFO После выполнения LIFO VW 300 VW 200 VW 202 VW 204 VW 206 VW 208 VW 210 VW 212 VW 214 0006 0003 5431 8942 1234 xxxx xxxx xxxx TL (макс. кол-во записей) VW 200 EC (число записей) VW 202 d0 (данные 0) VW 204 d1 (данные 1) VW 206 d2 (данные 2) VW 208 VW 210 VW 212 VW 214 1234 0006 TL (макс. кол-во записей) 0002 EC (число записей) 5431 d0 (данные 0) 8942 d1 (данные 1) xxxx xxxx xxxx xxxx Рис. 9-35. Пример команды «Удалить последнюю запись» для SIMATIC LAD, STL и FBD 9-114 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC Заполнение памяти L A D F B D Команда Заполнить память заполняет область памяти, начинающуюся с адреса OUT, N словами по образцу, расположенному по адресу IN. N имеет диапазон от 1 до 255. FILL_N EN ENO IN OUT Ошибки, устанавливающие ENO в 0: SM4.3 (ошибка этапа выполнения), 0006 (косвенная адресация), 0091 (операнд вне допустимого диапазона) N S T L FILL IN, OUT, N ✓ 221 ✓ ✓ 222 224 ✓ 226 Входы/выходы Операнды Типы данных IN VW, IW, QW, MW, SW, SMW, LW, AIW, T, C, AC, константа, *VD, WORD *AC, *LD N VB, IB, QB, MB, SB, SMB, LB, AC, константа, *VD, *AC, *LD BYTE OUT VW, IW, QW, MW, SW, SMW, LW, T, C, AQW, *VD, *AC, *LD WORD Пример заполнения LAD FILL_N I2.1 EN ENO 0 10 Сбросить от VW200 до VW218 STL LD I2.1 FILL 0, VW200, 10 IN N OUT VW 200 FBD Применение FILL_N I2.1 +0 10 EN ENO IN OUT VW 200 N 0 заполнить VW 200 0 VW 202 0 VW 218 ... 0 Рис. 9-36. Пример команды «Заполнить память» для SIMATIC LAD, STL и FBD Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-115 Команды SIMATIC 9.13 Логические команды SIMATIC Логические операции И, ИЛИ и исключающее ИЛИ с байтами L A D F B D WAND_B EN ENO IN1 OUT IN2 WOR_B EN ENO IN1 OUT IN2 WXOR_B EN ENO Команда Логическое ИЛИ с байтами сопрягает соответствующие биты двух входных байтов в соответствии с таблицей истинности логической операции ИЛИ и загружает результат (OUT) в байт. Команда Исключающее ИЛИ с байтами сопрягает соответствующие биты двух входных байтов в соответствии с таблицей истинности логической операции Исключающее ИЛИ и загружает результат (OUT) в байт. Ошибки, устанавливающие ENO в 0: SM4.3 (ошибка этапа выполнения), 0006 (косвенная адресация) IN1 OUT IN2 S T L Команда Логическое И с байтами сопрягает соответствующие биты двух входных байтов в соответствии с таблицей истинности логической операции И и загружает результат (OUT) в байт. ANDB IN1, OUT Эти команды влияют на следующие биты специальной памяти: SM1.0 (ноль) ORB IN1, OUT XORB IN1, OUT Входы/выходы ✓ ✓ ✓ ✓ 221 222 224 226 Операнды Типы данных IN1, IN2 VB, IB, QB, MB, SB, SMB, LB, AC, константа, *VD, *AC, *LD BYTE OUT VB, IB, QB, MB,SB, SMB, LB, AC, *VD, *AC, *LD BYTE 9-116 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC Логические операции И, ИЛИ и исключающее ИЛИ со словами L A D F B D WAND_W EN ENO IN1 OUT IN2 WOR_W EN ENO IN1 OUT IN2 WXOR_W EN ENO IN1 OUT IN2 S T L ANDW IN1, OUT ORW IN1, OUT Команда Логическое И со словами сопрягает соответствующие биты двух входных слов в соответствии с таблицей истинности логической операции И и загружает результат (OUT) в слово. Команда Логическое ИЛИ со словами сопрягает соответствующие биты двух входных слов в соответствии с таблицей истинности логической операции ИЛИ и загружает результат (OUT) в слово. Команда Исключающее ИЛИ со словами сопрягает соответствующие биты двух входных слов в соответствии с таблицей истинности логической операции Исключающее ИЛИ и загружает результат (OUT) в слово. Ошибки, устанавливающие ENO в 0: SM4.3 (ошибка этапа выполнения), 0006 (косвенная адресация) Эти команды влияют на следующие биты специальной памяти: SM1.0 (ноль) XORW IN1, OUT ✓ 221 Входы/выходы ✓ ✓ 222 224 ✓ 226 Операнды Типы данных IN1, IN2 VW, IW, QW, MW, SW, SMW, LW, T, C, AIW, AC, константа, *VD, *AC, *LD WORD OUT VW, IW, QW, MW, SW, SMW, LW, T, C, AC, *VD, *AC, *LD WORD Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-117 Команды SIMATIC Логические операции И, ИЛИ и исключающее ИЛИ с двойными словами L A D F B D WAND_DW EN ENO IN1 OUT IN2 WOR_DW EN ENO IN1 OUT IN2 WXOR_DW EN ENO IN1 OUT Команда Логическое ИЛИ с двойными словами сопрягает соответствующие биты двух входных двойных слов в соответствии с таблицей истинности логической операции ИЛИ и загружает результат (OUT) в двойное слово. Команда Исключающее ИЛИ с двойными словами сопрягает соответствующие биты двух входных двойных слов в соответствии с таблицей истинности логической операции Исключающее ИЛИ и загружает результат (OUT) в двойное слово. Ошибки, устанавливающие ENO в 0: SM4.3 (ошибка этапа выполнения), 0006 (косвенная адресация) IN2 S T L Команда Логическое И с двойными словами сопрягает соответствующие биты двух входных двойных слов в соответствии с таблицей истинности логической операции И и загружает результат (OUT) в двойное слово. ANDD IN1, OUT ORD IN1, OUT Эти команды влияют на следующие биты специальной памяти: SM1.0 (ноль) XORD IN1, OUT ✓ 221 Входы/выходы ✓ ✓ 222 224 ✓ 226 Операнды Типы данных IN1, IN2 VD, ID, QD, MD, SD, SMD, AC, LD, HC, константа, *VD, *AC, SD, DWORD *LD OUT VD, ID, QD, MD, SMD, LD, AC, *VD, *AC, SD, *LD 9-118 DWORD Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC Пример команд И, ИЛИ и Исключающее ИЛИ LAD I4.0 STL WAND_W EN ENO AC1 IN1 OUT AC0 IN2 LD I4.0 AC0 ANDW AC1, AC0 ORW AC1, VW100 WOR_W EN ENO AC1 IN1 OUT VW 100 IN2 VW 100 XORW AC1, AC0 WXOR_W AC1 EN ENO IN1 OUT AC0 IN2 AC0 FBD WAND_W I4.0 AC1 AC0 EN ENO IN1 OUT AC0 WOR_W AC1 EN ENO IN1 OUT WXOR_W VW 100 VW 100 IN2 IN2 EN ENO AC1 IN1 OUT AC0 AC0 IN2 Применение И со словами AC1 0001 1111 0110 1101 Исключающее ИЛИ со словами ИЛИ со словами AC1 0001 1111 0110 1101 AC1 0001 1111 0110 1101 0001 0011 0110 0100 XOR OR AND AC0 1101 0011 1110 0110 равно VW 100 1101 0011 1010 0000 равно AC0 AC0 0001 0011 0110 0100 VW 100 1101 1111 1110 1101 AC0 равно 0000 1100 0000 1001 Рис. 9-37. Пример логических операций для SIMATIC LAD, STL и FBD Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-119 Команды SIMATIC Команды инвертирования байта, слова, двойного слова L A D F B D Команда Инвертировать байт образует дополнение до единицы входного байта IN и загружает результат в выходной байт OUT. INV_B EN ENO IN Команда Инвертировать слово образует дополнение до единицы входного слова IN и загружает результат в выходное слово OUT. OUT INV_W EN ENO Команда Инвертировать двойное слово образует дополнение до единицы входного двойного слова IN и загружает результат в выходное двойное слово OUT. IN OUT INV_DW EN ENO IN S T L Ошибки, устанавливающие ENO в 0: SM4.3 (ошибка этапа выполнения), 0006 (косвенная адресация) OUT Эти команды влияют на следующие биты специальной памяти: SM1.0 (ноль) INVB OUT INVW OUT INVD OUT ✓ 221 Инвертировать… байт двойное слово 9-120 ✓ ✓ Входы/выходы IN слово ✓ 222 224 226 Операнды VB, IB, QB, MB,SB, SMB, LB, AC, константа, *VD, *AC, *LD Типы данных BYTE OUT VB, IB, QB, MB, SB, SMB, LB, AC,*VD, *AC, *LD BYTE IN VW, IW, QW, MW, SW, SMW, T, C, AIW, LW, AC, константа, *VD, *AC, *LD WORD OUT VW, IW, QW, MW, SW, SMW, T, C, LW, AC, *VD, *AC, *LD WORD IN VD, ID, QD, MD, SD, SMD, LD, HC, AC, константа, *VD, *AC, *LD DWORD OUT VD, ID, QD, MD, SD, SMD, LD, AC, *VD, *AC, *LD DWORD Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC Пример инвертирования LAD STL I4.0 INV_W EN LD I4.0 INVW AC0 ENO FBD AC0 IN OUT INV_W AC0 I4.0 EN ENO AC0 IN OUT AC0 Применение Инвертировать слово AC0 1101 0111 1001 0101 дополнение AC0 0010 1000 0110 1010 Рис. 9-38. Пример команды инвертирования для SIMATIC LAD, STL и FBD Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-121 Команды SIMATIC 9.14 Команды SIMATIC для сдвига и циклического сдвига Сдвиг байта вправо, влево L A D F B D SHR_B EN IN ENO OUT OU T N SHL_B EN IN ENO OUT OU T N S T L SRB OUT, N ✓ ✓ Команды сдвига заполняют позиции выдвигаемых битов нулями. Если величина сдвига (N) больше или равна 8, то сдвиг производится не более 8 раз. Если величина сдвига больше 0, то бит переполнения (SM1.1) принимает значение последнего выдвинутого бита. Бит нулевого значения (SM1.0) устанавливается, если результат операции сдвига равен нулю. Операции сдвига байта вправо и влево являются беззнаковыми. SLB OUT, N 221 Команды Сдвинуть байт вправо и Сдвинуть байт влево сдвигают содержимое входного байта (IN) вправо или влево на число разрядов, указанное в (N), и загружают результат в выходной байт (OUT). ✓ ✓ 222 224 226 Ошибки, устанавливающие ENO в 0: SM4.3 (ошибка этапа выполнения), 0006 (косвенная адресация) Эти команды влияют на следующие биты специальной памяти: SM1.0 (ноль); SM1.1 (переполнение) Входы/выходы Операнды Типы данных IN VB, IB, QB, MB, SB, SMB, LB, AC, константа, *VD, *AC, *LD BYTE OUT VB, IB, QB, MB, SB, SMB, LB, AC, *VD, *AC, *LD BYTE N VB, IB, QB, MB, SB, SMB, LB, AC, константа, *VD, *AC, *LD BYTE 9-122 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC Сдвиг слова вправо, влево L A D F B D SHR_W EN ENO IN N OU OUT T SHL_W EN ENO IN OU OUT T N S T L SRW OUT, N SLW OUT, N ✓ 221 ✓ ✓ 222 224 ✓ 226 Команды Сдвинуть слово вправо и Сдвинуть слово влево сдвигают содержимое входного слова (IN) вправо или влево на число разрядов, указанное в (N), и загружают результат в выходное слово (OUT). Команды сдвига заполняют позиции выдвигаемых битов нулями. Если величина сдвига (N) больше или равна 16, то сдвиг производится не более 16 раз. Если величина сдвига больше 0, то бит переполнения (SM1.1) принимает значение последнего выдвинутого бита. Бит нулевого значения (SM1.0) устанавливается, если результат операции сдвига равен нулю. Обратите внимание, что знаковый бит сдвигается, если вы используете типы данных со знаком. Ошибки, устанавливающие ENO в 0: SM4.3 (ошибка этапа выполнения), 0006 (косвенная адресация) Эти команды влияют на следующие биты специальной памяти: SM1.0 (ноль); SM1.1 (переполнение) Входы/выходы Операнды Типы данных IN VW, IW, QW, MW, SW, SMW, LW, T, C, AIW, AC, константа, *VD, WORD *AC, *LD N VB, IB, QB, MB, SB, SMB, LB, AC, константа, *VD, *AC, *LD BYTE OUT VW, IW, QW, MW, SW, SMW, LW, T, C, AC, *VD, *AC, *LD WORD Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-123 Команды SIMATIC Сдвиг двойного слова вправо, влево L A D F B D SHR_DW EN IN ENO OU OUT T N SHL_DW EN IN N S T L ENO OUT OU T SRD OUT, N SLD OUT, N ✓ 221 ✓ ✓ ✓ 222 224 226 Команды Сдвинуть двойное слово вправо и Сдвинуть двойное слово влево сдвигают содержимое входного двойного слова (IN) вправо или влево на число разрядов, указанное в (N), и загружают результат в выходное двойное слово (OUT). Marker 66 Команды сдвига заполняют позиции выдвигаемых битов нулями. Если величина сдвига (N) больше или равна 32, то сдвиг производится не более 32 раз. Если величина сдвига больше 0, то бит переполнения (SM1.1) принимает значение последнего выдвинутого бита. Бит нулевого значения (SM1.0) устанавливается, если результат операции сдвига равен нулю. Обратите внимание, что знаковый бит сдвигается, если вы используете типы данных со знаком. Ошибки, устанавливающие ENO в 0: SM4.3 (ошибка этапа выполнения), 0006 (косвенная адресация) Эти команды влияют на следующие биты специальной памяти: SM1.0 (ноль); SM1.1 (переполнение) Входы/выходы Операнды Типы данных IN VD, ID, QD, MD, SD, SMD, LD, AC, HC, константа, *VD, *AC, *LD DWORD N VB, IB, QB, MB, SB, SMB, LB, AC, константа, *VD, *AC, *LD BYTE OUT VD, ID, QD, MD, SD, SMD, LD, AC, *VD, *AC, *LD DWORD 9-124 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC Циклический сдвиг байта вправо, влево L A D F B D ROR_B EN ENO IN OU OUT T N ROL_B EN ENO IN OU OUT T N S T L RRB OUT, N RLB OUT, N ✓ 221 ✓ ✓ 222 224 ✓ 226 Команды Сдвинуть циклически байт вправо и Сдвинуть циклически байт влево циклически сдвигают содержимое входного байта (IN) вправо или влево на число разрядов, указанное в (N), и загружают результат в выходной байт (OUT). Циклический сдвиг является кольцевым. Если величина сдвига (N) больше или равна 8, то перед выполнением циклического сдвига от величины сдвига, указанной в (N), берется остаток от деления на 8. В результате величина сдвига находится в пределах от 0 до 7. Если величина сдвига равна нулю, то циклический сдвиг не производится. Если циклический сдвиг выполняется, то значение последнего циклически сдвинутого бита копируется в бит переполнения (SM1.1). Если величина сдвига не является целым кратным 8, то последний циклически выдвинутый бит копируется в бит переполнения (SM1.1). Бит нулевого значения (SM1.0) устанавливается, если подлежащая циклическому сдвигу величина равна нулю. Операции циклического сдвига байта вправо и влево являются беззнаковыми. Ошибки, устанавливающие ENO в 0: SM4.3 (ошибка этапа выполнения), 0006 (косвенная адресация) Эти команды влияют на следующие биты специальной памяти: SM1.0 (ноль); SM1.1 (переполнение) Входы/выходы Операнды Типы данных IN VB, IB, QB, MB, SMB, SB, LB, AC, *VD, *AC, *LD BYTE N VB, IB, QB, MB, SMB, SB, LB, AC, константа, *VD, *AC, *LD BYTE OUT VB, IB, QB, MB, SMB, SB, LB, AC, *VD, *AC, *LD BYTE Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-125 Команды SIMATIC Циклический сдвиг слова вправо, влево L A D F B D ROR_W ENO EN OUT IN OU T N ROL_W EN ENO OU IN OUT T N S T L RRW OUT, N RLW OUT, N ✓ 221 ✓ ✓ 222 224 ✓ 226 Команды Сдвинуть циклически слово вправо и Сдвинуть циклически слово влево циклически сдвигают содержимое входного слова (IN) вправо или влево на число разрядов, указанное в (N), и загружают результат в выходное слово (OUT). Циклический сдвиг является кольцевым. Если величина сдвига (N) больше или равна 16, то перед выполнением циклического сдвига от величины сдвига, указанной в (N), берется остаток от деления на 16. В результате величина сдвига находится в пределах от 0 до 15. Если величина сдвига равна нулю, то циклический сдвиг не производится. Если циклический сдвиг выполняется, то значение последнего циклически сдвинутого бита копируется в бит переполнения (SM1.1). Если величина сдвига не является целым кратным 16, то последний циклически выдвинутый бит копируется в бит переполнения (SM1.1). Бит нулевого значения (SM1.0) устанавливается, если подлежащая циклическому сдвигу величина равна нулю. Обратите внимание, что знаковый бит сдвигается, если вы используете типы данных со знаком. Ошибки, устанавливающие ENO в 0: SM4.3 (ошибка этапа выполнения), 0006 (косвенная адресация) Эти команды влияют на следующие биты специальной памяти: SM1.0 (ноль); SM1.1 (переполнение) Входы/выходы Операнды Типы данных IN VW, T, C, IW, MW, SW, SMW, AC, QW, LW, AIW, константа, *VD, WORD *AC, *LD N VB, IB, QB, MB, SMB, LB, AC, константа, *VD, *AC, SB, *LD BYTE OUT VW, T, C, IW, QW, MW, SW, SMW, LW, AC, *VD, *AC, *LD WORD 9-126 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC Циклический сдвиг двойного слова вправо, влево L A D F B D ROR_DW EN ENO IN OU OUT T N ROL_DW EN ENO IN OU OUT T N S T L RRD OUT, N RLD OUT, N ✓ ✓ 221 222 ✓ ✓ Команды Сдвинуть циклически двойное слово вправо и Сдвинуть циклически двойное слово влево циклически сдвигают содержимое входного двойного слова (IN) вправо или влево на число разрядов, указанное в (N), и загружают результат в выходное двойное слово (OUT). Циклический сдвиг является кольцевым. Если величина сдвига (N) больше или равна 32, то перед выполнением циклического сдвига от величины сдвига, указанной в (N), берется остаток от деления на 32. В результате величина сдвига находится в пределах от 0 до 31. Если величина сдвига равна нулю, то циклический сдвиг не производится. Если циклический сдвиг выполняется, то значение последнего циклически сдвинутого бита копируется в бит переполнения (SM1.1). 224 226 Если величина сдвига не является целым кратным 32, то последний циклически выдвинутый бит копируется в бит переполнения (SM1.1). Бит нулевого значения (SM1.0) устанавливается, если подлежащая циклическому сдвигу величина равна нулю. Обратите внимание, что знаковый бит сдвигается, если вы используете типы данных со знаком. Ошибки, устанавливающие ENO в 0: SM4.3 (ошибка этапа выполнения), 0006 (косвенная адресация) Эти команды влияют на следующие биты специальной памяти: SM1.0 (ноль); SM1.1 (переполнение) Входы/выходы Операнды Типы данных IN VD, ID, QD, MD, SMD, LD, AC, HC, константа, *VD, *AC, SD, *LD DWORD N VB, IB, QB, MB, SMB, LB, AC, константа, *VD, *AC, SB, *LD BYTE OUT VD, ID, QD, MD, SMD, LD, AC, *VD, *AC, SD, *LD DWORD Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-127 Команды SIMATIC Примеры сдвига и циклического сдвига LAD I4.0 STL LD I4.0 RRW AC0, 2 SLW VW200, 3 ROR_W AC0 2 EN IN ENO N OUT FBD AC0 ROR_W SHL_W EN VW 200 IN 3 I4.0 ENO OUT AC0 VW 200 2 N EN ENO IN OUT N SHL_W AC0 EN VW 200 I N 3 N ENO O VW 200 U Применение Циклический сдвиг 0100 0000 0000 0001 Переполнение x После 1-го сдвига Переполнение Перед сдвигом AC0 AC0 1010 0000 0000 0000 После 2-го сдвига AC0 1 Сдвиг VW 200 VW 200 Переполнение 0101 0000 0000 0000 0 1110 0010 1010 1101 Переполнение x После 1-го сдвига Переполнение 1100 0101 0101 1010 1 Перед сдвигом После 2-го сдвига VW 200 1000 1010 1011 0100 VW 200 0001 0101 0110 1000 Переполнение 1 Бит нулевого значения (SM1.0) = 0 Бит переполнения (SM1.1) = 0 После 3-го сдвига 1 Бит нулевого значения (SM1.0) = 0 Бит переполнения (SM1.1) = 1 Рис. 9-39. Пример команд сдвига и циклического сдвига для SIMATIC LAD, STL и FBD 9-128 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC Вдвигание бита в регистр сдвига L A D F B D SHRB EN ENO DATA S_BIT Каждый бит, выдвинутый из регистра командой SHRB, помещается в бит переполнения (SM1.1). N S T L SHRB DATA, S_BIT, N ✓ 221 ✓ 222 Команда Вдвинуть бит в регистр сдвига (SHRB) вдвигает значение DATA в регистр сдвига. S_BIT указывает младший бит регистра сдвига. N задает длину регистра сдвига и направление сдвига (положительный сдвиг = N, отрицательный сдвиг = -N). ✓ 224 ✓ 226 Ошибки, устанавливающие ENO в 0: SM4.3 (ошибка этапа выполнения), 0006 (косвенная адресация), 0091 (выход операнда за пределы допустимого диапазона), 0092 (ошибка в поле счета) Эта команда влияет на следующий бит специальной памяти: SM1.1 (переполнение) Входы/выходы Операнды Типы данных DATA, S_BIT I, Q, M, SM, T, C, V, S, L BOOL N VB, IB, QB, MB, SMB, LB, AC, константа, *VD, *AC, SB, *LD BYTE Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-129 Команды SIMATIC Описание команды вдвигания бита в регистр сдвига Команда Вдвинуть бит в регистр сдвига предоставляет в распоряжение простой метод упорядочения и управления потоком изделий или данных. С помощью этой команды вы можете сдвигать весь регистр на один бит каждый цикл. Команда Вдвинуть бит в регистр сдвига определяется младшим битом регистра сдвига (S_BIT) и количеством битов, задаваемых параметром (N). На рис. 9–41 показан пример команды вдвигания бита в регистр сдвига. Адрес старшего бита регистра сдвига (MSB.b) можно рассчитать с помощью следующего уравнения: MSB.b = [(байт параметра S_BIT) + ([N] – 1 + (бит параметра S_BIT)) / 8].[остаток от деления на 8] Вы должны вычесть 1 бит, так как S_BIT – это один из битов регистра сдвига. Например, если S_BIT – это V33.4, и N = 14, то MSB.b – это V35.1, или: MSB.b = V33 + ([14] – 1 +4)/8 = V33 + 17/8 = V33 + 2 с остатком 1 = V35.1 При отрицательном сдвиге, который задается отрицательным значением длины (N), входное значение (DATA) вдвигается на место старшего бита регистра сдвига и выдвигает из регистра младший бит (S_BIT). При положительном сдвиге, который задается положительным значением длины (N), входное значение (DATA) вдвигается на место младшего бита регистра сдвига (S_BIT) и выдвигает из регистра сдвига старший бит. Данные, выдвинутые из регистра, помещаются в бит переполнения (SM1.1). Максимальная длина регистра сдвига (положительная или отрицательная) равна 64 битам. На рис. 9–40 показан сдвиг битов при отрицательном и положительном значении N. Отрицательный сдвиг, длина = -14 S_BIT MSB V33 7 V34 7 V35 7 Положительный сдвиг, длина = 14 S_BIT LSB 4 1 MSB 0 V33 7 0 V34 7 0 V35 7 Старший бит регистра сдвига LSB 4 0 0 1 0 Старший бит регистра сдвига Рис. 9-40. Положительный и отрицательный сдвиг в регистре сдвига 9-130 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC Пример команды вдвигания бита в регистр сдвига LAD I0.2 P I0.3 V100.0 4 STL LD I0.2 EU SHRB I0.3, V100.0, 4 SHRB EN ENO DATA S_BIT N FBD I0.2 IN P SHRB OUT I0.3 V100.0 EN ENO DATA S_BIT N 4 Временная диаграмма I0.2 Положительный фронт (P) I0.3 Первый сдвиг Второй сдвиг MSB 7 Перед первым сдвигом V100 0 1 Переполнение (SM1.1) После первого сдвига V100 Переполнение (SM1.1) После второго сдвига V100 LSB 0 S_BIT 0 1 I0.3 1 1 S_BIT I0.3 1 0 S_BIT I0.3 x 1 0 0 0 1 Переполнение (SM1.1) 1 Рис. 9-41. Пример вдвигания бита в регистр сдвига для SIMATIC LAD, STL и FBD Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-131 Команды SIMATIC 9.15 Команды SIMATIC для выполнения преобразований Преобразование BCD в целое и целого в BCD L A D F B D BCD_I EN ENO IN OUT I_BCD EN ENO IN S T L OUT BCDI OUT IBCD OUT ✓ 221 ✓ ✓ ✓ 222 224 226 Команда BCD в целое преобразует входное число, представленное в двоично-десятичном формате, (IN) в целое число и загружает результат в переменную, указанную в OUT. Допустимый диапазон для IN: от 0 до 9999 (BCD). Команда Целое в BCD преобразует входное целое число (IN) в двоично-десятичный формат и загружает результат в переменную, указанную в OUT. Допустимый диапазон для IN: от 0 до 9999 (целое). Ошибки, устанавливающие ENO в 0: SM1.6 (ошибка BCD), SM4.3 (ошибка этапа выполнения), 0006 (косвенная адресация) Эти команды влияют на следующие биты специальной памяти: SM1.6 (недопустимое значение BCD) Входы/выходы Операнды Типы данных IN VW, T, C, IW, QW, MW, SMW, LW, AC, AIW, константа, *VD, *AC, WORD SW, *LD OUT VW, T, C, IW, QW, MW, SMW, LW, AC, *VD, *AC, SW, *LD WORD Преобразование двойного целого в вещественное L A D F B D DI_R EN ENO IN S T L DTR IN, OUT ✓ 221 Входы/выходы OUT ✓ ✓ 222 224 ✓ 226 Команда Двойное целое в вещественное преобразует 32–битовое целое со знаком (IN) в 32–битовое вещественное число и помещает результат в переменную, указанную в OUT. Ошибки, устанавливающие ENO в 0: SM4.3 (ошибка этапа выполнения), 0006 (косвенная адресация) Операнды Типы данных IN VD, ID, QD, MD, SMD, AC, LD, HC, константа, *VD, *AC, SD, *LD DINT OUT VD, ID, QD, MD, SMD, LD, AC, *VD, *AC, SD, *LD 9-132 REAL Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC Округление L A D F B D S T L ROUND EN ENO IN OUT ROUND IN, OUT ✓ ✓ 221 ✓ ✓ 222 224 226 Команда Округлить преобразует вещественное число (IN) в двойное целое число и помещает результат в переменную, указанную в OUT. Если дробная часть равна 0,5 или больше, то число округляется в большую сторону. Ошибки, устанавливающие ENO в 0: SM1.1 (переполнение), SM4.3 (ошибка этапа выполнения), 0006 (косвенная адресация) Эта команда влияет на следующий бит специальной памяти: SM1.1 (переполнение) Входы/выходы Операнды Типы данных IN VD, ID, QD, MD, SMD, AC, LD, константа, *VD, *AC, SD, *LD REAL OUT VD, ID, QD, MD, SMD, LD, AC, *VD, *AC, SD, *LD DINT Округление отбрасыванием L A D F B D TRUNC EN ENO IN OUT S T L TRUNC IN, OUT ✓ 221 ✓ ✓ ✓ 222 224 226 Команда Округлить отбрасыванием преобразует 32−битовое вещественное число (IN) в 32−битовое целое число со знаком и помещает результат в переменную, указанную в OUT. Преобразуется только целая часть вещественного числа, а дробная часть отбрасывается. Если преобразованное вами значение не является допустимым вещественным числом или слишком велико, чтобы быть представленным на выходе, то устанавливается бит переполнения, а выход не меняется. Ошибки, устанавливающие ENO в 0: SM1.1 (переполнение), SM4.3 (ошибка этапа выполнения), 0006 (косвенная адресация) Эта команда влияет на следующий бит специальной памяти: SM1.1 (переполнение) Входы/выходы Операнды Типы данных IN VD, ID, QD, MD, SMD, LD, AC, константа, *VD, *AC, SD, *LD REAL OUT VD, ID, QD, MD, SMD, LD, AC, *VD, *AC, SD, *LD DINT Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-133 Команды SIMATIC Преобразование двойного целого числа в целое L A D F B D S T L Команда Двойное целое в целое преобразует двойное целое число (IN) в целое число и помещает результат в переменную, указанную в OUT. Если преобразованное вами значение слишком велико, чтобы быть представленным на выходе, то устанавливается бит переполнения, а выход не изменяется. Ошибки, устанавливающие ENO в 0: SM1.1 (переполнение), SM4.3 (ошибка этапа выполнения), 0006 (косвенная адресация) DI_I EN ENO IN OUT DTI IN, OUT ✓ 221 ✓ ✓ 222 224 ✓ 226 Эта команда влияет на следующий бит специальной памяти: SM1.1 (переполнение) Входы/выходы Операнды Типы данных IN VD, ID, QD, MD, SMD, AC, LD, HC, константа, *VD, *AC, SD, *LD DINT OUT VW, IW, QW, MW, SW, SMW, LW, T, C, AC, *VD, *LD, *AC INT Преобразование целого числа в двойное целое число L A D F B D EN ENO S T L ITD IN, OUT I_DI IN ✓ 221 Входы/выходы Команда Целое в двойное целое преобразует целое число (IN) в двойное целое число и помещает результат в переменную, указанную в OUT. Знак распространяется. Ошибки, устанавливающие ENO в 0: SM4.3 (ошибка этапа выполнения), 0006 (косвенная адресация) ✓ OUT ✓ ✓ 222 224 226 Операнды Типы данных IN VW, IW, QW, MW, SW, SMW, LW, T, C, AIW, AC, константа, *AC, INT *VD, *LD OUT VD, ID, QD, MD, SD, SMD, LD, AC, *VD, *LD, *AC DINT Преобразование целого числа в вещественное Для преобразования целого числа в вещественное используйте команду «Целое в двойное целое», а затем команду «Двойное целое в вещественное» (стр. 9–133). См. рис. 9–42. 9-134 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC Преобразование байта в целое число L A D F B D B_I EN ENO IN OUT S T L Ошибки, устанавливающие ENO в 0: SM4.3 (ошибка этапа выполнения), 0006 (косвенная адресация) BTI IN, OUT ✓ 221 ✓ ✓ Команда Байт в целое преобразует байт (IN) в целое число и помещает результат в переменную, указанную в OUT. Байт не имеет знака, поэтому распространение знака не происходит. ✓ 222 224 226 Входы/выходы Операнды Типы данных IN VB, IB, QB, MB, SB, SMB, LB, AC, константа, *AC, *VD, *LD BYTE OUT VW, IW, QW, MW, SW, SMW, LW, T, C, AC, *VD, *LD, *AC INT Преобразование целого числа в байт L A D F B D S T L I_B EN ENO IN OUT ITB IN, OUT ✓ 221 ✓ ✓ 222 224 ✓ 226 Команда Целое в байт преобразует слово (IN) в байт и помещает результат в переменную, указанную в OUT. Преобразуются значения от 0 до 255. Все остальные значения приводят к переполнению и не влияют на выход. Ошибки, устанавливающие ENO в 0: SM1.1 (переполнение), SM4.3 (ошибка этапа выполнения), 0006 (косвенная адресация) Эта команда влияет на следующий бит специальной памяти: SM1.1 (переполнение) Входы/выходы Операнды Типы данных IN VW, IW, QW, MW, SW, SMW, LW, T, C, AIW, AC, константа, *VD, INT *LD, *AC OUT VB, IB, QB, MB, SB, SMB, LB, AC, *VD, *AC, *LD Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 BYTE 9-135 Команды SIMATIC Пример преобразований STL LAD Network 1 I0.0 I_DI EN IN C10 Для преобразования целого числа в вещественное: очистить ENO аккумулятор 1. Загрузить значение OUT AC1 счетчика (количество дюймов) в АС1. Network 1 LD I0.0 ITD C10, AC1 DI_R EN IN AC1 ENO OUT VD0 DTR AC1, VD0 Преобразовать в вещественное число. MOVR VD0, VD8 MUL_R EN ENO *R VD4, VD8 Умножить на 2,54 для IN1 OUT VD8 перехода к сантиметрам. IN2 VD0 VD4 ROUND EN VD8 IN ENO OUT VD12 ROUND VD8, VD12 Снова преобразовать в целое число. Network 2 Network 2 I3.0 BCD_I AC0 EN ENO IN OUT LD I3.0 BCDI AC0 AC0 FBD Network 1 DI_R I_DI I0.0 C10 EN ENO IN OUT EN AC1 AC1 IN MUL_R ENO EN VD0 IN1 OUT VD0 VD4 IN2 ROUND ENO OUT VD8 EN ENO VD8 IN OUT VD12 Network 2 BCD_I I3.0 EN ENO AC0 IN OUT AC0 Применение Преобразование двойного целого в вещественное и округление C10 VD0 101 BCD в целое В счетчике 101 дюйм. 101.0 VD4 2.54 VD8 256.54 V12 257 Константа 2,54 (дюймы в сантиметры) 256,54 сантиметра как вещественное число. 257 сантиметров как целое число. AC0 1234 BCDI AC0 04D2 Рис. 9-42. Пример команд преобразования для SIMATIC LAD, STL и FBD 9-136 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC Декодирование L A D F B D Команда Декодировать устанавливает в выходном слове (OUT) бит, соответствующий номеру бита, представленному младшим полубайтом (4 бита) входного байта (IN). Все остальные биты выходного слова устанавливаются в 0. DECO EN ENO IN OUT S T L DECO IN, OUT ✓ ✓ 221 222 ✓ 224 Входы/выходы Ошибки, устанавливающие ENO в 0: SM4.3 (ошибка этапа выполнения), 0006 (косвенная адресация) ✓ 226 Операнды Типы данных IN VB, IB, QB, MB, SMB, LB, SB, AC, константа, *VD, *AC, *LD BYTE OUT VW, IW, QW, MW, SMW, LW, SW, AQW, T, C, AC, *VD, *AC, *LD WORD Кодирование L A D F B D S T L Команда Закодировать записывает номер самого младшего установленного бита входного слова (IN) в младший полубайт (4 бита) выходного байта (OUT). ENCO EN ENO IN OUT Ошибки, устанавливающие ENO в 0: SM4.3 (ошибка этапа выполнения), 0006 (косвенная адресация) ENCO IN, OUT ✓ 221 ✓ ✓ 222 224 ✓ 226 Входы/выходы Операнды Типы данных IN VW, T, C, IW, QW, MW, SMW, AC, LW, AIW, константа, *VD, *AC, WORD SW, *LD OUT VB, IB, QB, MB, SMB, LB, AC, *VD, *AC, SB, *LD Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 BYTE 9-137 Команды SIMATIC Примеры декодирования и кодирования LAD I3.1 DECO EN ENO STL Установить бит, соответствующий коду ошибки в АС2. LD I3.1 DECO AC2, VW40 FBD OUT VW 40 AC2 IN DECO I3.1 EN ENO OUT VW 40 AC2 IN Применение AC2 содержит код ошибки 3. Команда DECO устанавливает в VW40 бит, соответствующий этому коду ошибки. AC2 3 15 DECO 3 0 VW 40 0000 0000 00001000 Рис. 9-43. Пример установки бита ошибки с помощью команды декодирования для LAD, STL и FBD LAD I3.1 AC2 ENCO EN ENO IN OUT STL Преобразовать бит ошибки в АС2 в код ошибки в VB40. LD I3.1 ENCO AC2, VB40 FBD ENCO VB40 I3.1 EN AC2 IN ENO OUT VB40 Применение 15 AC2 содержит код ошибки. Команда ENCO преобразует самый младший установленный бит в код ошибки, который сохраняется в VB40. AC2 9 0 1000 0010 0000 0000 ENCO VB40 9 Рис. 9-44. Пример преобразования бита ошибки в код ошибки с помощью команды кодирования для LAD, STL и FBD 9-138 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC Сегмент L A D F B D S T L Команда Сегмент использует символ, заданный в IN, для генерирования двоичного кода (OUT), с помощью которого высвечиваются сегменты семисегментного дисплея. Высвечиваемые сегменты представляют символ младшей цифры входного байта (IN). SEG EN ENO IN OUT Ошибки, устанавливающие ENO в 0: SM4.3 (ошибка этапа выполнения), 0006 (косвенная адресация) SEG IN, OUT ✓ 221 ✓ ✓ 222 224 ✓ 226 На рис. 9–45 показано кодирование семисегментного дисплея с помощью команды Сегмент. Входы/выходы Операнды Типы данных IN VB, IB, QB, MB, SMB, LB, AC, константа, *VD, *AC, SB, *LD BYTE OUT VB, IB, QB, MB, SMB, LB, AC, *VD, *AC, SB, *LD BYTE (IN) LSD Отображение сегментов (OUT) 0 -g f e dcba 0011 1111 (IN) LSD a Отображение сегментов (OUT) -g f e dcba 8 0111 1111 9 0110 0111 A 0111 0111 B 0111 1100 C 0011 1001 D 0101 1110 1 0000 0110 2 0101 1011 3 0100 1111 4 0110 0110 5 0110 1101 6 0111 1101 E 0111 1001 7 0000 0111 F 0111 0001 f g e b c d Рис. 9-45. Кодирование семисегментного дисплея Пример команды «Сегмент» LAD I3.3 VB48 STL LD I3.3 SEG VB48, AC1 SEG FBD EN ENO IN OUT AC1 SEG I3.3 EN ENO VB48 IN OUT AC1 Применение VB48 05 SEG AC1 6D (отображаемый символ) Рис. 9-46. Пример команды «Сегмент» для SIMATIC LAD, STL и FBD Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-139 Команды SIMATIC Преобразование ASCII в 16-ричный код и 16-ричного кода в ASCII L A D ATH F B D EN ENO IN OUT LEN HTA EN ENO IN OUT LEN S T L ATH IN, OUT, LEN HTA IN, OUT, LEN ✓ ✓ ✓ ✓ 221 222 224 226 Команда Преобразовать ASCII в 16-ричный код преобразует строку символов ASCII длиной (LEN), начинающуюся с адреса IN, в шестнадцатеричные цифры, начиная с адреса OUT. Максимальная длина строки ASCII составляет 255 символов. Команда Преобразовать 16-ричный код в ASCII преобразует шестнадцатеричные цифры, начинающиеся с входного байта (IN), в строку символов ASCII, которая начинается по адресу OUT. Количество шестнадцатеричных цифр, подлежащих преобразованию, задается длиной (LEN). Максимальное количество шестнадцатеричных цифр, которое может быть преобразовано, равно 255. Допустимым символам ASCII соответствуют шестнадцатеричные значения от 30 до 39 и от 41 до 46. Преобразование ASCII в 16-ричный код: Ошибки, устанавливающие ENO в 0: SM1.7 (недопустимый символ ASCII), SM4.3 (ошибка этапа выполнения), 0006 (косвенная адресация), 0091 (операнд вне допустимого диапазона) Преобразование 16-ричного кода в: Ошибки, устанавливающие ENO в 0: SM4.3 (ошибка этапа выполнения), 0006 (косвенная адресация), 0091 (операнд вне допустимого диапазона) Эти команды влияют на следующий бит специальной памяти: SM1.7 (недопустимый символ ASCII) Входы/выходы Операнды Типы данных IN, OUT VB, IB, QB, MB, SMB, LB, *VD, *AC, SB, *LD BYTE LEN VB, IB, QB, MB, SMB, LB, AC, константа, *VD, *AC, SB, *LD BYTE 9-140 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC Пример преобразования ASCII в 16-ричный код LAD I3.2 STL ATH VB30 3 EN ENO IN OUT LD I3.2 ATH VB30, VB40, 3 VB40 LEN Применение FBD ATH EN I3.2 VB30 IN OUT LEN 3 VB30 33 ENO 45 41 ATH VB40 3E AХ VB40 Примечание: X указывает, что полубайт не был изменен. Рис. 9-47. Пример преобразования ASCII в 16-ричный код для SIMATIC LAD, STL и FBD Преобразование целого числа в строку ASCII L A D F B D S T L ITA Входы/выходы ENO IN OUT FMT ITA IN, OUT, FMT ✓ ✓ 221 222 224 226 ✓ IN EN ✓ Команда Преобразовать целое число в строку ASCII преобразует целое число, содержащееся в слове (IN), в строку ASCII. Операнд формат (FMT) определяет точность преобразования справа от десятичной точки, а также форму представления десятичной точки – в виде запятой или точки. Результат преобразования помещается в 8 последовательных байтов, начиная с адреса OUT. Строка ASCII всегда содержит 8 символов. Ошибки, устанавливающие ENO в 0: SM4.3 (ошибка этапа выполнения), 0006 (косвенная адресация), нет выхода (недопустимый формат) Операнды Типы данных VW, IW, QW, MW, SW, SMW, LW, AIW, T, C, AC, константа, *VD, INT *AC, *LD FMT VB, IB, QB, MB, SMB, LB, AC, константа, *VD, *AC, SB, *LD BYTE OUT VB, IB, QB, MB, SMB, LB, *VD, *AC, SB, *LD BYTE Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-141 Команды SIMATIC Операнд формата (FMT) для команды ITA (Integer to ASCII [Целое в ASCII]) описан на рис. 9–48. Размер выходного буфера всегда равен 8 байтам. Количество цифр справа от десятичной точки в выходном буфере определяется полем nnn. Допустимый диапазон поля nnn составляет от 0 до 5. Задание 0 цифр справа от десятичной точки приводит к тому, что число отображается без десятичной точки. Для значений nnn, больших 5, выходной буфер заполняется пробелами ASCII. Бит с определяет использование запятой (с=1) или десятичной точки (с=0) в качестве разделителя целой и дробной части. Старшие 4 бита должны быть нулями. Выходной буфер форматируется в соответствии со следующими правилами: 1. Положительные числа записываются в выходной буфер без знака. 2. Отрицательные числа записываются в выходной буфер с ведущим знаком минус (-). 3. Нули в старших разрядах слева от десятичной точки (кроме цифры, смежной с десятичной точкой) подавляются. 4. Числа в выходном буфере выравниваются вправо. Рис. 9–48 дает примеры чисел, форматированных с помощью десятичной точки (c = 0), с тремя цифрами справа от десятичной точки (nnn = 011). FMT Пример: MSB 7 6 5 4 3 0 0 0 0 c 2 n 1 n LSB 0 n c = запятая (1) или десятичная точка (0) Out Out Out Out Out Out Out Out +1 +2 +3 +4 +5 +6 +7 nnn = цифры справа от десятичной 0 . 0 1 2 in=12 точки 0 . 1 2 3 in=-123 . 1 2 3 4 in=1234 . 1 2 3 4 5 in = -12345 Рис. 9–48. Операнд FMT для команды ITA 9-142 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC Преобразование двойного целого числа в строку ASCII L A D F B D S T L DTA EN ENO IN OUT FMT DTA IN, OUT, FMT ✓ 221 ✓ ✓ 222 224 ✓ 226 Команда Преобразовать двойное целое число в строку ASCII преобразует двойное слово (IN) в строку ASCII. Операнд формат (FMT) определяет точность преобразования справа от десятичной точки, а также форму представления десятичной точки – в виде запятой или точки. Результат преобразования помещается в 12 последовательных байтов, начиная с адреса OUT. Ошибки, устанавливающие ENO в 0: SM4.3 (ошибка этапа выполнения), 0006 (косвенная адресация), нет выхода (недопустимый формат) Входы/выходы Операнды Типы данных IN VD, ID, QD, MD, SD, SMD, LD, HC, константа, AC, *VD, *AC, *LD DINT FMT VB, IB, QB, MB, SMB, LB, AC, константа, *VD, *AC, SB, *LD BYTE OUT VB, IB, QB, MB, SMB, LB, *VD, *AC, SB, *LD BYTE Операнд формата (FMT) для команды DTA описан на рис. 9–49. Размер выходного буфера всегда равен 12 байтам. Количество цифр справа от десятичной точки в выходном буфере определяется полем nnn. Допустимый диапазон поля nnn составляет от 0 до 5. Задание 0 цифр справа от десятичной точки приводит к тому, что число отображается без десятичной точки. Для значений nnn, больших 5, выходной буфер заполняется пробелами ASCII. Бит с определяет использование запятой (с=1) или десятичной точки (с=0) в качестве разделителя целой и дробной части. Старшие 4 бита должны быть нулями. Выходной буфер форматируется в соответствии со следующими правилами: 1. Положительные числа записываются в выходной буфер без знака. 2. Отрицательные числа записываются в выходной буфер с ведущим знаком минус (-). 3. Нули в старших разрядах слева от десятичной точки (кроме цифры, смежной с десятичной точкой) подавляются. 4. Числа в выходном буфере выравниваются вправо. Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-143 Команды SIMATIC Рис. 9–49 дает примеры чисел, форматированных с помощью десятичной точки (c = 0), с четырьмя цифрами справа от десятичной точки (nnn = 100). FMT Пример: MSB 7 6 5 4 3 2 1 LSB 0 0 0 0 n n 0 c n c = запятая (1) или десятичная точка (0) nnn = цифры справа от десятичной точки Out Out Out Out Out Out Out Out Out Out Out Out +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 - 0 . in=-12 0 0 1 2 in=1234567 1 2 3 . 4 5 6 7 . Рис. 9–49. Операнд FMT для команды DTA Преобразование вещественного числа в строку ASCII L A D F B D RTA EN ENO IN OUT FMT S T L RTA IN, OUT, FMT ✓ 221 ✓ ✓ 222 224 ✓ 226 Команда Преобразовать вещественное число в строку ASCII преобразует число с плавающей точкой (IN) в строку ASCII. Формат (FMT) определяет точность преобразования справа от десятичной точки, а также форму представления десятичной точки – в виде запятой или точки и размер выходного буфера. Результат преобразования помещается в выходном буфере, начиная с адреса OUT. Длина результирующей строки ASCII определяется размером выходного буфера и может быть задана в диапазоне от 3 до 15. Ошибки, устанавливающие ENO в 0: SM4.3 (ошибка этапа выполнения), 0006 (косвенная адресация), нет выхода (недопустимый формат или буфер слишком мал) Входы/выходы Операнды Типы данных IN VD, ID, QD, MD, SD, SMD, LD, AC, *VD, *AC, *LD REAL FMT VB, IB, QB, MB, SMB, LB, AC, константа, *VD, *AC, SB, *LD BYTE OUT VB, IB, QB, MB, SMB, LB, *VD, *AC, SB, *LD BYTE 9-144 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC Операнд формата (FMT) для команды RTA описан на рис. 9–50. Размер выходного буфера определяется полем ssss. Размеры 0, 1 или 2 байта недопустимы Количество цифр справа от десятичной точки в выходном буфере определяется полем nnn. Допустимый диапазон поля nnn составляет от 0 до 5. Задание 0 цифр справа от десятичной точки приводит к тому, что число отображается без десятичной точки. Выходной буфер заполняется пробелами ASCII для значений nnn, больших 5, или если заданный выходной буфер слишком мал для хранения преобразованного значения. Бит с определяет использование запятой (с=1) или десятичной точки (с=0) в качестве разделителя целой и дробной части. Выходной буфер форматируется в соответствии со следующими правилами: 1. Положительные числа записываются в выходной буфер без знака. 2. Отрицательные числа записываются в выходной буфер с ведущим знаком минус (-). 3. Нули в старших разрядах слева от десятичной точки (кроме цифры, смежной с десятичной точкой) подавляются. 4. Значение справа от десятичной точки округляется в соответствии с заданным количеством цифр справа от десятичной точки. 5. Размер выходного буфера должен по крайней мере на три байта превышать количество цифр справа от десятичной точки. 6. Числа в выходном буфере выравниваются вправо. Рис.9–50 дает примеры чисел, форматированных с помощью десятичной точки (c = 0), с одной цифрой справа от десятичной точки (nnn=001) и размером буфера, равным 6 байтам (ssss=0110). MSB 7 6 s s 5 4 3 2 1 s c n s LSB 0 n n Out Out Out Out Out Out +1 +2 +3 +4 +5 ssss = размер выходного буфера in = 1234.5 1 c = запятая (1) или in = -0.0004 десятичная точка (0) in = -3.67526 nnn = цифры справа от in = 1.95 десятичной точки 2 3 - 4 . 5 0 . 0 3 . . 7 2 0 Рис. 9–50. Операнд FMT для команды RTA Примечание Формат чисел с плавающей точкой, используемый CPU S7-200, поддерживает не более значащих цифр. Попытка отобразить более 7 значащих цифр приводит к ошибке округления. Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-145 Команды SIMATIC 9.16 Команды SIMATIC для управления программой Условное завершение L A D Команда Условное завершение завершает главную программу пользователя в зависимости от результата предшествующей логической операции. END Операнды: F B D END S T L Нет Типы данных: Нет END ✓ 221 ✓ ✓ ✓ 222 224 226 Примечание Вы можете использовать команду «Условное завершение» в главной программе, но ее нельзя использовать в подпрограммах и программах обработки прерываний. Примечание STEP 7-Micro/WIN 32 автоматически добавляет к главной программе пользователя команду безусловного завершения. STOP L A D Команда STOP завершает выполнение программы, вызывая переход CPU из RUN в STOP. STOP Операнды: F B D STOP S T L STOP ✓ 221 9-146 ✓ ✓ ✓ 222 224 226 Нет Если команда STOP выполняется в программе обработки прерывания, то эта программа завершается немедленно, а все прерывания, стоящие в очереди, игнорируются. Оставшиеся действия в текущем цикле обработки программы завершаются, включая выполнение главной программы пользователя, а переход из RUN в STOP производится в конце текущего цикла. Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC Сброс контроля времени L A D WDR F B D S T L WDR Команда Сбросить контроль времени позволяет перезапустить системный таймер контроля времени CPU. Это увеличивает время, которое может занимать цикл обработки программы, не вызывая ошибки контроля времени. Операнды: Нет WDR ✓ 221 ✓ ✓ ✓ 222 224 226 Рекомендации по использованию команды WDR для сброса таймера контроля времени Команду сброса контроля времени следует использовать с осторожностью. Если вы с помощью программных циклов препятствуете завершению цикла обработки программы или существенно задерживаете его завершение, то следует иметь в виду, что до завершения цикла обработки программы запрещены следующие процессы. • связь (за исключением режима свободно программируемой связи) • актуализация входов и выходов (кроме входов и выходов с непосредственным доступом) • актуализация принудительно задаваемых значений • актуализация битов специальной памяти (SM0, SM5 ÷ SM29 не обновляются) • диагностика в режиме реального времени • 10–миллисекундные и 100–миллисекундные таймеры не накапливают время должным образом для циклов обработки программы, превышающих 25 мс • команда STOP при использовании в программе обработки прерывания Примечание Команду WDR следует использовать для перезапуска таймера контроля времени, если вы ожидаете, что время цикла обработки программы превысит 300 мс, или вы ожидаете увеличения активности прерываний, что может воспрепятствовать возвращению в главный цикл более чем на 300 мс. Перевод переключателя CPU в положение STOP вызывает переход CPU в режим STOP в течение 1,4 секунды. Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-147 Команды SIMATIC Пример команд STOP, END и WDR LAD STL Network 1 SM5.0 STOP . . . Network 15 M5.6 WDR . . . Network 78 I0.0 END . . . При обнаружении ошибки ввода/вывода перейти принудительно в режим STOP. При включении M5.6 перезапустить контроль времени цикла (WDR), чтобы разрешить увеличение времени цикла. При включении I0.0 завершить главную программу. Network 1 LD SM5.0 STOP . . . Network 15 LD M5.6 WDR . . . Network 78 LD I0.0 END FBD Network 1 SM5.0 STOP Network 15 M5.6 WDR Network 78 I0.0 END При обнаружении ошибки ввода/вывода перейти принудительно в режим STOP. При включении M5.6 перезапустить контроль времени цикла (WDR), чтобы разрешить увеличение времени цикла. При включении I0.0 завершить главную программу. Рис. 9-51. Пример команд STOP, END и WDR для SIMATIC LAD, STL и FBD 9-148 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC Переход на метку, метка L A D n JMP n LBL Команда Метка отмечает положение цели перехода (n). n F B D JMP n LBL S T L JMP n LBL n ✓ 221 ✓ ✓ Команда Перейти на метку осуществляет переход к указанной метке (n) внутри программы. При выполнении перехода вершина стека всегда имеет значение 1. ✓ 222 224 226 Операнды: n: константа (от 0 до 255) Типы данных: WORD Команда перехода и соответствующая метка должны находиться в главной программе, подпрограмме или программе обработки прерывания. Вы не можете перейти из главной программы на метку в подпрограмме или в программе обработки прерывания. Аналогично, вы не можете перейти из подпрограммы или программы обработки прерывания на метку вне этой подпрограммы или программы обработки прерывания. Пример перехода на метку STL LAD Network 14 SM0.2 / . . . Network 33 4 LBL 4 JMP Если сохраняемые данные не потеряны, перейти на метку LBL 4. Команду “Переход на метку” можно использовать в главной программе, в подпрограммах или программах прерывания. Команда JMP и соответствующая метка всегда должны находиться в одном и том же сегменте кода (в главной программе, подпрограмме или программе прерывания). Network LDN SM0.2 JMP 4 . . . Network LBL 4 FBD Network 14 . . . . Network 33 4 SM0.2 JMP 4 LBL Если сохраняемые данные не потеряны, перейти на метку LBL 4. Команду “Переход на метку” можно использовать в главной программе, в подпрограммах или программах прерывания. Команда JMP и соответствующая метка всегда должны находиться в одном и том же сегменте кода (в главной программе, подпрограмме или программе прерывания). Рис. 9-52. Пример команд «Переход на метку» и «Метка» для SIMATIC LAD, STL и FBD Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-149 Команды SIMATIC Подпрограмма, возврат из подпрограммы L A D SBR EN RET F B D L A D Команда Условный возврат из подпрограммы используется для завершения подпрограммы в зависимости от предшествующей логической операции. SBRn EN RET S T L CALL n CRET ✓ 221 ✓ ✓ 222 224 Команда Вызвать подпрограмму передает управление подпрограмме (n). Команду Вызвать подпрограмму можно использовать с параметрами или без них. Для добавления подпрограммы выберите из меню Edit → Insert → Subroutine [Редактировать → Вставить → Подпрограмма]. ✓ 226 Операнды: Нет Типы данных: Нет Как только исполнение подпрограммы завершается, управление возвращается команде, следующей за вызовом подпрограммы. На рис. 9–55 показан пример команд «Вызвать подпрограмму» и «Вернуться из подпрограммы». Ошибки, устанавливающие ENO в 0 для вызова подпрограммы с параметрами: SM4.3 (ошибка этапа выполнения), 0008 (превышена максимальная вложенность для подпрограмм) Примечание STEP 7-Micro/WIN 32 автоматически добавляет команду возврата из каждой подпрограммы. В главной программе вы можете вкладывать подпрограммы друг в друга (помещать вызов подпрограммы внутри другой подпрограммы) на глубину до восьми уровней. В программе обработки прерывания вложение подпрограмм друг в друга невозможно. Подпрограмма не может быть помещена ни в какую другую подпрограмму, вызываемую из программы обработки прерывания. Рекурсия (вызов подпрограммы, вызывающей саму себя) не запрещена, но с подпрограммами ее следует использовать с осторожностью. Когда вызывается подпрограмма, весь логический стек сохраняется, вершина стека устанавливается в единицу, все остальные ячейки стека устанавливаются в ноль и управление передается вызываемой подпрограмме. Когда эта подпрограмма завершается, стек восстанавливается со значениями, сохраненными в точке вызова, а управление возвращается в вызывающую программу. Аккумуляторы являются общими для подпрограмм и вызывающей программы. При использовании подпрограммы операции сохранения и восстановления к аккумуляторам не применяются. 9-150 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC Вызов подпрограммы с параметрами Подпрограмма может содержать передаваемые параметры. Параметры определяются в таблице локальных переменных подпрограммы (рис. 9– 53). Параметру должно быть назначено символическое имя (не более 8 символов), тип переменной и тип данных. В подпрограмму и из нее может быть передано шестнадцать параметров. Поле типа переменной в таблице локальных переменных определяет, передается ли переменная в подпрограмму (IN), в подпрограмму и из нее (IN_OUT), или она передается из подпрограммы (OUT). Типы параметров имеют следующие характеристики: • IN: параметры передаются в подпрограмму. Если параметр является прямым адресом (например, VB10), то переменная с указанным адресом передается в подпрограмму. Если параметр является косвенным адресом (например, *AC1), то в подпрограмму передается значение, расположенное по указанному адресу. Если параметр является константой (16#1234) или адресом (VB100), то в подпрограмму передается значение константы или адреса. • IN_OUT: значение, находящееся по указанному адресу параметра, передается в подпрограмму, а результирующее значение возвращается по тому же самому адресу. Константы (например, 16#1234) и адреса (например, &VB100) не могут быть параметрами типа IN_OUT. • OUT: результирующее значение из подпрограммы возвращается по указанному адресу параметра. Константы (например, 16#1234) и адреса (например, &VB100) не могут быть параметрами типа OUT. • TEMP: Локальная память, не используемая для передаваемых параметров, может использоваться для временного хранения данных внутри подпрограммы. Для добавления параметра поместите курсор на поле того типа параметров (IN, IN_OUT, OUT), который вы хотите добавить. Щелкните правой кнопкой мыши, чтобы вызвать меню опций. Выберите опцию Insert [Вставить] и опцию Row Below [Строка снизу]. Под текущей записью появится место для записи еще одного параметра выбранного типа. Name [Имя] L0.0 LB1 EN IN1 IN2 LB2.0 IN3 LW7 IN4 IN/OUT1 LD9 OUT1 LD3 Var.Type [Тип пер.] Data Type [Тип данн.]Comment [Комментарий] IN BOOL IN BOOL IN IN IN IN_OUT OUT TEMP BYTE BOOL DWORD WORD DWORD Рис. 9–53. Таблица локальных переменных STEP 7-Micro/WIN 32 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-151 Команды SIMATIC Поле типа данных в таблице локальных переменных определяет размер и формат параметра. Типами данных являются: • Power Flow [Поток сигнала]: Булев поток сигнала разрешен только для битовых (булевых) входов. Это описание сообщает STEP 7–Micro/WIN 32, что этот входной параметр является результатом достижения подпрограммы потоком сигнала, основанным на комбинации битовых логических операций. Входы с булевым потоком сигнала должны находиться в таблице локальных переменных перед любым другим типом входов. Таким способом можно использовать только входные параметры. Разрешающий вход (EN) и вход IN1 на рис. 9–54 используют булеву логику. • BOOL – Этот тип данных используется для отдельных битовых входов и выходов. IN2 на рис. 9–54 является булевым входом. • BYTE, WORD, DWORD – Эти типы данных определяют входной или выходной параметр без знака размером 1, 2 или 4 байта соответственно. • INT, DINT - Эти типы данных определяют входной или выходной параметр со знаком размером 2 или 4 байта соответственно. • REAL – Этот тип данных определяет число с плавающей точкой IEEE однократной точности (4 байта). LAD I0.0 STL SBR10 EN I0.1 VB10 I1.0 &VB100 *AC1 IN1 IN2 IN3 IN4 OUT1 VD200 LD I0.0 CALL 10, I0.1, VB10, I1.0, &VB100, *AC1, VD200 IN/OUT Рис. 9–54. Вызов подпрограммы в LAD и STL Адресные параметры, например, IN4 на рис. 9–54 (&VB100), передаются в подпрограмму как DWORD (двойное слово без знака). Тип постоянного параметра должен быть указан для параметра в вызывающей программе с помощью описателя константы перед значением константы. Например, чтобы передать в качестве параметра константу, имеющую размер двойного слова без знака, со значением 12 345, постоянный параметр должен быть задан как DW#12345. Если описатель константы для параметра опущен, то константа может быть воспринята как имеющая другой тип. Автоматическое преобразование типов для входных и выходных параметров не производится. Например, если таблица локальных переменных указывает, что параметр имеет тип данных REAL, а вызывающая программа задает для этого параметра двойное слово (DWORD), то это значение в подпрограмме будет рассматриваться как двойное слово. 9-152 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC Когда значения передаются в подпрограмму, они помещаются в локальную память подпрограммы. Самый левый столбец таблицы локальных переменных (см. рис. 9–53) показывает адрес в локальной памяти для каждого передаваемого параметра. Значения входных параметров копируются в локальную память подпрограммы, когда подпрограмма вызывается. Значения выходных параметров копируются из локальной памяти подпрограммы в указанные адреса выходных параметров, когда исполнение подпрограммы завершается. Размер и тип элемента данных представляются в коде параметра. Значения параметров ставятся в соответствие локальной памяти в подпрограмме следующим образом: • Значения параметров ставятся в соответствие локальной памяти в порядке, задаваемом командой вызова подпрограммы с параметрами, начиная с L.0. • От одного до восьми последовательных битовых значений параметров ставятся в соответствие отдельному байту, начиная с Lx.0 и вплоть до Lx.7. • Значения, имеющие тип байт, слово или двойное слово ставятся в соответствие локальной памяти на границах байтов (LBx, LWx или LDx). В команде вызова подпрограммы с параметрами параметры должны расположены быть расположены в следующем порядке: сначала входные параметры, за ними параметры типа IN_OUT, а затем выходные параметры. Если вы программируете на STL, то формат команды CALL имеет вид: CALL номер подпрограммы, параметр 1, параметр 2, ... , параметр n Ошибки, устанавливающие ENO в 0 для вызова подпрограммы с параметрами: SM4.3 (ошибка этапа выполнения), 0008 (превышена максимальная вложенность для подпрограмм) Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-153 Команды SIMATIC Пример подпрограммы и возвращения из подпрограммы LAD STL MAIN [Главная программа] Network 1 SM0.1 SBR10 EN . . В первом цикле: Вызвать SBR10 для инициализации. Network 1 LD SM0.1 CALL 10 . SUBROUTINE 10 [Подпрограмма 10] . . . . Запуск подпрограммы 10 Network 6 M14.3 RET . . . Может быть использован условный возврат (RET) из подпрограммы 10. . . . Network 6 LD M14.3 CRET . . . FBD MAIN [Главная программа] SM0.1 SBR10 EN SUBROUTINE 10 [Подпрограмма 10] M14.3 RET Рис. 9-55. Пример команд вызова и возврата из подпрограммы для SIMATIC LAD, STL и FBD 9-154 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC FOR и NEXT L A D FOR ENO EN INDX INIT Команда NEXT отмечает конец цикла FOR и устанавливает вершину стека в 1. FINAL NEXT F B D FOR EN ENO INDX INIT FINAL Например, если значение INIT равно 1 , значение FINAL равно 10, то команды между FOR и NEXT исполняются 10 раз, причем значение INDX каждый раз увеличивается на единицу: 1, 2, 3, ...10. Если начальное значение больше конечного, то цикл не выполняется. После каждого исполнения команд между FOR и NEXT значение INDX увеличивается, а результат сравнивается с конечным значением. Если INDX больше конечного значения, то цикл завершается. FOR: Ошибки, устанавливающие ENO в 0: SM4.3 (ошибка этапа выполнения), 0006 (косвенная адресация) NEXT S T L Команда FOR выполняет команды, расположенные между операторами FOR и NEXT. Вы должны задать значение индекса или счетчик цикла (INDX), начальное значение (INIT) и конечное значение (FINAL). FOR INDX, INIT FIN AL NEXT ✓ 221 Входы/выходы ✓ ✓ ✓ 222 224 226 Операнды Типы данных INDX VW, IW, QW, MW, SW, SMW, LW, T, C, AC, *VD, *AC, *LD INIT VW, IW, QW, MW, SW, SMW, T, C, AC, LW, AIW, константа, *VD, INT *AC, *LD FINAL VW, IW, QW, MW, SW, SMW, LW, T, C, AC, AIW, константа, *VD, INT *AC, *LD Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 INT 9-155 Команды SIMATIC Вот некоторые указания по использованию цикла FOR/NEXT: • Если вы разблокируете FOR/NEXT, то процесс циклического выполнения продолжается, пока не закончатся итерации, если только вы не измените конечное значение изнутри самого цикла. Вы можете изменять эти значения, пока FOR/NEXT выполнят циклическую обработку. • Когда цикл снова разблокирован, он копирует начальное значение в индекс (счетчик цикла). Команда FOR/NEXT сбрасывает себя каждый раз, когда она разблокируется. Используйте команды FOR/NEXT для описания цикла, который повторяется заданное количество раз. Каждая команда FOR требует наличия команды NEXT. Вы можете вкладывать циклы FOR/NEXT друг в друга (помещать цикл FOR/NEXT внутри другого цикла FOR/NEXT). Глубина вложения не может превышать восьми. 9-156 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC Пример цикла FOR/NEXT LAD Network 1 I2.0 VW 100 1 100 FOR EN ENO INDX INIT FINAL Network 10 FOR EN ENO I2.1 VW 225 INDX 1 INIT 2 FINAL 2 STL Когда включается I2.0, внешний цикл, показанный стрелкой 1, исполняется 100 раз. Внутренний цикл, показанный стрелкой 2, выполняется дважды при каждом исполнении 1 внешнего цикла, когда включается I2.1. Network 15 NEXT Network LD I2.0 FOR VW100, 1, 100 . . . Network LD I2.1 FOR VW225, 1, 2 . . . Network NEXT . . Network NEXT Network 20 NEXT FBD Network 1 I2.0 VW 100 +1 +100 FOR EN ENO INDX INIT FINAL Network 10 I2.1 VW 225 +1 +2 FOR EN ENO INDX INIT FINAL Network 15 NEXT Network 20 NEXT Рис. 9-56. Пример команд FOR/NEXT для SIMATIC LAD, STL и FBD Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-157 Команды SIMATIC Реле управления последовательностью L A D S-бит SCR S-бит SCRT SCRE F B D S-бит SCR S-бит SCRT LSCR n SCRT n SCRE ✓ 221 ✓ ✓ 222 224 Входы/выходы n Команда Перейти к следующему реле управления последовательностью (SCRT) определяет бит SCR, который должен быть разблокирован (следующий S-бит, который должен быть установлен). Когда поток сигнала достигает катушки или блока FBD, S-бит, к которому производится обращение, устанавливается, а Sбит команды LSCR (который разблокировал этот сегмент SCR) сбрасывается. Команда Конец реле управления последовательностью (SCRE) отмечает конец сегмента SCR. SCRE S T L Команда Загрузить реле управления последовательностью (LSCR) отмечает начало сегмента SCR. Когда n равно 1, поток сигнала пропускается к сегменту SCR. Сегмент SCR должен завершаться командой SCRE. ✓ 226 Операнды S Типы данных BOOL Описание команд SCR В LAD, FBD и STL реле управления последовательностью (Sequence Control Relay, SCR) используются для организации машинных операций или шагов в эквивалентные сегменты программы. SCR делают возможной логическую сегментацию программы управления. Команда LSCR загружает стек SCR и логический стек значением S-бита, к которому обращается команда. Сегмент SCR активизируется или деактивизируется результирующим значением стека SCR. Вершина логического стека загружается в S-бит, к которому производится обращение, так что блоки или выходные катушки могут быть непосредственно связаны с левой силовой шиной без промежуточных контактов. На рис. 9–57 показаны S-стек и логический стек и влияние выполнения команды LSCR. 9-158 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC LSCR Загрузить значение Sx.y в стек SCR и в логический стек. ПЕРЕД ПОСЛЕ S-стек начальное ivs значение S Логический стек iv0 S-стек S-бит Sx.y Логический стек Sx.y iv1 iv1 iv2 iv2 iv3 iv3 iv4 iv4 iv5 iv5 iv6 iv6 iv7 iv7 iv8 iv8 Рис. 9-57. Влияние LSCR на логический стек Относительно команд реле управления последовательностью имеет силу следующее: • Вся логика между командами LSCR и SCRE образует сегмент SCR, и ее исполнение зависит от значения S-стека. Логика между SCRE и следующей командой LSCR не зависит от значения S-стека. • Команда SCRT устанавливает S-бит, чтобы разблокировать следующее SCR, а также сбрасывает S-бит, который был загружен для разблокирования данного раздела сегмента SCR. Ограничения Использование SCR имеет следующие ограничения: • Нельзя использовать один и тот же S-бит более чем в одной программе. Например, если вы используете S0.1 в главной программе, не используйте его в подпрограмме. • В сегменте SCR нельзя использовать команды JMP и LBL. Это значит, что не разрешаются переходы в, внутри и из сегмента SCR. Команды перехода и метки можно использовать для обхода сегментов SCR. • В сегменте SCR нельзя использовать команды FOR, NEXT и END. Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-159 Команды SIMATIC Пример SCR На рис. 9–58 показан пример работы SCR. • В этом примере бит первого цикла SM0.1 используется для установки S0.1, который в первом цикле будет в активном состоянии 1. • После 2-секундной задержки T37 вызывает переход к состоянию 2. Этот переход деактивизирует сегмент SCR для состояния 1 (S0.1) и активизирует сегмент SCR для состояния 2 (S0.2). LAD Network 1 SM0.1 Network 2 S0.1 SCR Network 3 SM0.0 S0.1 S 1 Q0.4 S 1 Q0.5 R 2 T37 STL В первом цикле разблокировать состояние 1. Network 1 LD SM0.1 S S0.1, 1 Начало области управления для состояния 1. Network 2 LSCR S0.1 Включить красный сигнал на 1-й улице. Network 4 T37 Network 5 20 PT LD SM0.0 S Q0.4, 1 Выключить желтый и R Q0.5, 2 зеленый сигнал на 1-й улице. TON T37, 20 TON IN Network 3 Запустить 2-секундный таймер. Network 4 S0.2 SCRT Переход к состоянию 2 после 2-секундной LD T37 SCRT S0.2 задержки. SCRE Конец области SCR для состояния 1. Network 5 SCRE (Продолжение программы на следующей странице) Рис. 9-58. Пример реле управления последовательностью (SCR) для SIMATIC LAD, STL и FBD 9-160 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC LAD Network 6 STL Начало области управления для состояния 2. S0.2 SCR Network 7 SM0.0 Q0.2 T38 IN TON Запустить 25-секундный таймер. PT Network 8 T38 Network 9 Network 7 LD SM0.0 S Q0.2, 1 TON T38, 250 Включить зеленый сигнал на 3-й улице. S 1 250 Network 6 LSCR S0.2 Network 8 LD T38 S0.3 SCRT Переход к состоянию SCRT S0.3 3 после 25-секундной задержки. SCRE Конец области SCR для состояния 2. . . . Network 9 SCRE . . . FBD Network 1 SM0.1 1 Network 2 S0.1 S В первом цикле разблокировать состояние 1. N Начало области управления для состояния 1. S0.1 SCR Network 3 SM0.0 Q0.4 S AND SM0.0 1 Включить красный сигнал на 1-й улице. N Q0.5 R 2 N Выключить желтый и зеленый сигнал на 1-й улице. T37 IN TON Network 4 T37 +20 PT Запустить 2-секундный таймер. S0.2 SCRT Переход к состоянию 2 после 2-секундной задержки. Рис. 9-58. Пример реле управления последовательностью (SCR) для SIMATIC LAD, STL и FBD (продолжение) Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-161 Команды SIMATIC FBD Network 5 Конец области SC R для состояния 1. SCRE Network 6 S0.2 S SCR C R T Н ачало области управления для состояния 2. Network 7 SM0.0 Q0.2 Вклю чить зелены й сигнал на 3-й улице. S AN D SM0.0 N 1 T38 IN +250 Network 8 T38 TON Запустить 25-секундный таймер. PT S0.3 S C SCRT R T П ереход к состоянию 3 после 25-секундной задержки. Network 9 Конец области SC R для состояния 2. SCRE Рис. 9-58. Пример реле управления последовательностью (SCR) для SIMATIC LAD, STL и FBD (продолжение) Разделение потока управления Во многих приложениях единый поток состояний последовательности исполнения должен быть разделен на два или более различных потоков. Когда поток управления разделяется на несколько потоков, все выходящие потоки должны активизироваться одновременно. Это показано на рис. 9–59. Состояние L Условие перехода Состояние M Состояние N Рис. 9-59. Разделение потока управления 9-162 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC Разделение потоков управления может быть реализовано в программе SCR путем использования нескольких команд SCRT, разблокируемых одним и тем же условием перехода, как показано на рис. 9–60. LAD N e two rk S TL Н ач ал о о бл ас ти у п р а вл ен и я д л я с ос тоя н и я L S 3.4 S CR N e two rk N e two rk . . . . . . N e two rk M 2.3 N e two rk L S C R S 3.4 I2 .1 N e two rk S 3.5 S CR T П ер е ход к с ос тоя н и ю M S 6.5 S CR T П ер е ход к с ос тоя н и ю N S CR E Кон е ц о бл ас ти у п р а вл ен и я S C R д л я с ос тоя н и я L N e two rk L D M 2 .3 A I2 .1 S CR T S3 .5 S CR T S6 .5 N e two rk S CR E FB D N e two rk S 3.4 S CR N e two rk M 2.3 S 3.5 AND I2 .1 S CR T S 6.5 S CR T N e two rk S CR E Рис. 9-60. Пример разделения потоков управления для LAD, STL и FBD Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-163 Команды SIMATIC Управление слиянием Аналогичная ситуация возникает, когда два или более потоков последовательных состояний должны быть объединены в один поток. Когда несколько потоков объединяются в один поток, говорят, что они сливаются. Когда несколько потоков сливаются в один поток, все входящие потоки должны быть завершены до того, как будет выполняться следующее состояние. На рис. 9–61 изображено слияние двух потоков управления. С остоя ние M С остоя ние L Услови е пер ехода С остоя ние N Рис. 9-61. Слияние потоков управления 9-164 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC Слияние потоков управления может быть реализовано в программе SCR путем создания перехода от состояния L к состоянию L’ и перехода от состояния М к состоянию M’. Когда биты SCR, представляющие L’ и M’, установлены, состояние N может быть разблокировано, как показано на рис. 9–62. LAD Network S3.4 SCR STL Начало области управления для состояния L Network ... Network LSCR S3.4 Network ... Network V100.5 S3.5 SCRT Переход к состоянию L'. SCRE Конец области SCR для состояния L Network Network S6.4 SCR Начало области управления для состояния M Network ... Network C50 S6.5 SCRT Network Network S3.5 S6.5 Переход к состоянию M'. Network LD V100.5 SCRT S3.5 Network SCRE Network LSCR S6.4 Network ... Network LD C50 SCRT S6.5 Network SCRE SCRE Конец области SCR для состояния М. S5.0 S 1 Разблокировать состояние N. LD S3.5 A S6.5 S S5.0, 1 S3.5 R 1 Сбросить состояние L'. R S3.5, 1 S6.5 R 1 Сбросить состояние M'. R S6.5, 1 Network Рис. 9-62. Пример слияния потоков управления для LAD, STL и FBD Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-165 Команды SIMATIC FBD Network S3.4 Начало области управления для состояния L. SCR Network S3.5 V100.5 Переход к состоянию L'. SCRT Network Конец области SCR для состояния L. SCRE Network S6.4 Начало области управления для состояния M SCR Network C50 S6.5 SCRT Переход к состоянию M'. SCRE Конец области SCR для состояния М. Network Network S3.5 S6.5 S5.0 AND S 1 Разблокировать состояние N. N S3.5 R Сбросить состояние L'. 1 N S6.5 R 1 Сбросить состояние M'. N Рис. 9-62. Пример слияния потоков управления для LAD, STL и FBD (продолжение) 9-166 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC В других ситуациях поток управления может быть направлен в один из нескольких возможных потоков управления в зависимости от того, какое условие перехода выполнилось первым. Такая ситуация изображена на рис. 9–63. Состояние L Условие перехода Состояние M Условие перехода Состояние N Рис. 9-63. Перенаправление потока управления в зависимости от условия перехода Эквивалентная программа SCR показана на рис. 9–64. LAD Network STL Начало области управления для состояния L. S3.4 SCR Network Network ... ... Network M2.3 S3.5 SCRT Переход к состоянию М. S6.5 SCRT Переход к состоянию N. SCRE Конец области SCR для состояния L. Network I3.3 Network LSCR S3.4 Network Network LD M2.3 SCRT S3.5 Network LD I3.3 SCRT S6.5 Network SCRE Рис. 9-64. Пример условных переходов для LAD, STL и FBD Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-167 Команды SIMATIC FBD Network S3.4 SCR Network M2.3 Network I3.3 Начало области управления для состояния L. S3.5 SCRT Переход к состоянию М. S6.5 SCRT Переход к состоянию N. Network SCRE Конец области SCR для состояния L. Рис. 9-64. Пример условных переходов для LAD, STL и FBD (продолжение) 9-168 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC ENO S T L AENO ✓ 221 ✓ ✓ 222 224 ✓ 226 ENO – это булев выход для блоков в LAD и FBD. Если блок имеет поток сигнала на входе EN и выполняется без ошибок, то выход ENO передает поток сигнала следующему элементу. ENO может быть использован как разблокирующий бит, указывающий на успешное завершение команды. Бит ENO используется с вершиной стека для воздействия на поток сигнала для выполнения последующих команд. У команд STL нет входа EN; чтобы команда исполнялась, вершина стека должна быть равна 1. В STL нет выхода ENO, но команды STL, соответствующие командам LAD и FBD с выходами ENO обязательно устанавливают специальный бит ENO. Доступ к этому биту осуществляется с помощью команды И ENO (And ENO, AENO). AENO можно использовать для создания такого же эффекта, что и бит ENO в блоке. Команда AENO доступна только в STL. AENO выполняет логическое И бита ENO и вершины стека. Результатом операции И является новая вершина стека. Операнды: Нет Типы данных: Нет Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-169 Команды SIMATIC 9.17 Команды SIMATIC для организации прерываний и связи Назначение и отсоединение прерывания L A D F B D Команда Назначить прерывание связывает прерывающее событие (EVNT) с номером программы обработки прерывания (INT) и разблокирует прерывающее событие. ATCH EN ENO INT Команда Отсоединить прерывание разрывает связь прерывающего события (EVNT) со всеми программами обработки прерываний и блокирует прерывающее событие. EVNT DTCH EN ENO EVNT S T L ATCH INT, EVENT DTCH EVENT ✓ 221 ✓ ✓ 222 224 ✓ 226 Входы/выходы Назначить прерывание: Ошибки, устанавливающие ENO в 0: SM4.3 (ошибка этапа выполнения), 0002 (конфликт при назначении входов для HSC). Операнды Типы данных INT константа BYTE EVNT константа (CPU 221/222: 0-12, 19-23, 27-33; CPU 224: 0-23, 27-33; CPU 226: 0 - 33) BYTE Описание команд назначения и отсоединения прерываний Прежде чем программа обработки прерывания может быть вызвана, должно быть установлено соответствие между прерывающим событием и сегментом программы, который вы хотите выполнить, когда это событие происходит. Для организации связи между прерывающим событием (задаваемым номером прерывающего события) и сегментом программы (задаваемым номером программы обработки прерывания) используйте команду «Назначить прерывание» (ATCH). Одной программе обработки прерываний можно поставить в соответствие несколько прерывающих событий, но одно событие не может быть одновременно поставлено в соответствие нескольким программам обработки прерываний. Когда происходит событие при разблокированных прерываниях, то исполняется только последняя программа обработки прерывания, поставленная в соответствие этому событию. Когда вы назначаете прерывающее событие программе обработки прерывания, это прерывание автоматически разблокируется. Если вы заблокировали все прерывания с помощью команды глобального блокирования прерываний, то каждое возникновение прерывающего события ставится в очередь, пока прерывания не будут снова разблокированы с помощью глобального разблокирования прерываний. 9-170 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC Отдельные прерывающие события можно заблокировать разрывом связи между этим прерывающим событием и программой обработки прерывания с помощью команды «Отсоединить прерывание» (DTCH). Команда отсоединения возвращает прерывание в неактивное или игнорируемое состояние. Таблица 9–20 перечисляет различные типы прерывающих событий. Таблица 9–20. Прерывающие события Номер события Описание прерывания CPU 221 CPU 222 CPU 224 CPU 226 0 Нарастающий фронт, I0.0 Да Да Да Да 1 Падающий фронт, I0.0 Да Да Да Да 2 Нарастающий фронт, I0.1 Да Да Да Да 3 Падающий фронт, I0.1 Да Да Да Да 4 Нарастающий фронт, I0.2 Да Да Да Да 5 Падающий фронт, I0.2 Да Да Да Да 6 Нарастающий фронт, I0.3 Да Да Да Да 7 Падающий фронт, I0.3 Да Да Да Да 8 Порт 0: символ принят Да Да Да Да 9 Порт 0: передача завершена Да Да Да Да 10 Управляемое временем прерывание 0, SMB34 Да Да Да Да 11 Управляемое временем прерывание 1, SMB35 Да Да Да Да 12 HSC0: CV=PV (текущее значение = предустановленному) Да Да Да Да 13 HSC1: CV=PV (текущее значение = предустановленному) Да Да 14 HSC1: направление изменено Да Да 15 HSC1: внешний сброс Да Да 16 HSC2: CV=PV (текущее значение = предустановленному) Да Да 17 HSC2: направление изменено Да Да 18 HSC2: внешний сброс Да Да 19 PLS0: отсчет количества импульсов завершен Да Да Да Да 20 PLS1: отсчет количества импульсов завершен Да Да Да Да 21 Таймер T32: прерывание CT=PT Да Да Да Да 22 Таймер T96: прерывание CT=PT Да Да Да Да 23 Порт 0: прием сообщения завершен Да Да Да Да 24 Порт 1: прием сообщения завершен Да 25 Порт 1: символ принят Да 26 Порт 1: передача завершена 27 HSC0: направление изменено Да Да Да Да 28 HSC0: внешний сброс Да Да Да Да 29 HSC4: CV=PV (текущее значение = предустановленному) Да Да Да Да 30 HSC4: направление изменено Да Да Да Да 31 HSC4: внешний сброс Да Да Да Да 32 HSC3: CV=PV (текущее значение = предустановленному) Да Да Да Да 33 HSC5: CV=PV (текущее значение = предустановленному) Да Да Да Да Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Да 9-171 Команды SIMATIC Условный возврат из программы обработки прерывания L A D RETI F B D RETI S T L ✓ ✓ Операнды: Нет Типы данных: Нет На экране STEP 7-Micro/WIN 32 возврат из программ обработки прерываний обозначается отдельными программными метками. CRETI 221 Команда Условный возврат из программы обработки прерывания может быть использована для возврата из программы обработки прерывания в зависимости от условия, задаваемого предшествующей логикой. ✓ 222 224 ✓ 226 Программы обработки прерываний Программа обработки прерывания исполняется в ответ на соответствующее внутреннее или внешнее событие. После выполнения последней команды программы обработки прерывания управление возвращается в главную программу. Вы можете покинуть эту программу, выполнив команду «Условный возврат из прерывания» (CRETI). Рекомендации по использованию прерываний Обработка прерываний обеспечивает быструю реакцию на определенные внутренние или внешние события. Вам следует оптимизировать программы обработки прерываний, чтобы выполнить конкретную задачу, а затем вернуть управление главной программе. Если программа обработки прерывания спроектирована короткой с точными спецификациями, то она будет быстро выполняться и не будет задерживать другие процессы на длительные промежутки времени. Если этого не сделать, то неожиданные условия могут вызвать ненормальную работу оборудования, управляемого главной программой. Для прерываний безусловно верна аксиома «чем короче, тем лучше». Ограничения В программе обработке прерывания нельзя использовать команды DISI, ENI, HDEF, LSCR и END. Системная поддержка прерываний Так как прерывания могут оказывать влияние на контакты, катушки и аккумуляторы, то система сохраняет и перезагружает логический стек, аккумуляторные регистры и биты специальной памяти (SM), которые отображают состояние аккумуляторов и команд. Это позволяет избежать искажения главной программы пользователя из-за перехода в программу обработки прерывания и возвращения из нее. 9-172 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC Вызов подпрограммы из программы обработки прерывания Из программы обработки прерывания можно вызвать только один уровень вложенности подпрограмм. Аккумуляторы и логический стек совместно используются программой обработки прерывания и вызываемой подпрограммой. Совместное использование данных главной программой и программами обработки прерываний Данные могут совместно использоваться главной программой и одной или несколькими программами обработки прерываний. Например, часть вашей программы может предоставить данные для использования программе обработки прерываний и наоборот. Если в вашей программе применяется совместное использование данных, то вы должны также принять в расчет влияние асинхронной природы прерывающих событий, которые могут возникнуть в любой момент при исполнении вашей главной программы. Проблемы непротиворечивости совместно используемых данных могут возникнуть в результате действий программ обработки прерываний, когда выполнение команд вашей главной программы прерывается событиями, вызывающими прерывания. Существует ряд методов программирования, которые вы можете использовать, чтобы обеспечить корректное разделение данных между вашей главной программой и программами обработки прерываний. Эти методы или ограничивают способ доступа к совместно используемым ячейкам памяти, или препятствую прерыванию последовательностей команд, использующих разделяемые ячейки памяти. • Для программы на STL, которая совместно использует единственную переменную: Если разделяемые данные представляют собой единственную переменную в виде байта, слова или двойного слова и ваша программа написана на STL, то правильный совместный доступ может быть обеспечен сохранением промежуточных значений от операций над совместно используемыми данными только в неразделяемых ячейках памяти или аккумуляторах. • Для программы на LAD, которая совместно использует единственную переменную: Если разделяемые данные представляют собой единственную переменную в виде байта, слова или двойного слова и ваша программа написана на LAD, то правильный совместный доступ может быть обеспечен установлением соглашения, что доступ к разделяемым ячейкам памяти может осуществляться только с помощью команд передачи (MOVB, MOVW, MOVD, MOVR). В то время как многие команды LAD составлены из непрерываемых последовательностей команд STL, команды передачи состоят из единственной команды STL, на исполнение которой не могут влиять прерывающие события. Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-173 Команды SIMATIC • Для программы STL или LAD, совместно использующей несколько переменных: Если разделяемые данные составлены из ряда связанных байтов, слов или двойных слов, то для управления исполнением программ обработки прерываний могут быть использованы команды блокировки/ разблокировки прерываний (DISI и ENI). В той точке вашей программы, где должны начаться операции с разделяемыми ячейками памяти, заблокируйте прерывания. Как только все действия, влияющие на совместно используемые ячейки памяти, завершены, вновь разблокируйте прерывания. В течение времени, когда прерывания заблокированы, программы обработки прерываний не могут выполняться и, следовательно, не имеют доступа к разделяемым ячейкам памяти; однако такой подход может привести к запаздыванию реакции на прерывающие события. Блокировка и разблокировка прерываний L A D ENI DISI F B D ENI DISI S T L ENI DISI ✓ ✓ 221 222 224 ✓ Команда Разблокировать прерывания глобально разблокирует обработку всех назначенных прерывающих событий. Команда Заблокировать прерывания глобально блокирует обработку всех прерывающих событий. Операнды: Нет Типы данных: Нет Когда вы переходите в режим RUN, прерывания первоначально заблокированы. Находясь в режиме RUN, вы можете разблокировать все прерывания, выполнив глобальную команду «Разблокировать прерывания». Глобальная команда «Заблокировать прерывания» дает возможность ставить прерывания в очередь, но не позволяет вызывать программы обработки прерываний. ✓ 226 Ошибки, устанавливающие ENO в 0: SM4.3 (ошибка этапа выполнения), 0004 (попытка исполнения команд ENI, DISI или HDEF в программе обработки прерываний). Прерывания коммуникационных портов Программы, написанные на LAD и STL, могут управлять последовательным коммуникационным портом программируемого логического контроллера. Этот режим работы коммуникационного порта называется свободно программируемой связью (Freeport mode). В этом режиме ваша программа определяет скорость передачи, количество битов на символ, контроль по четности и протокол. Для облегчения программно управляемой связи в вашем распоряжении имеются прерывания приема и передачи. За дополнительной информацией обратитесь к командам приема и передачи. 9-174 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC Прерывания от ввода/вывода К прерываниям от ввода/вывода относятся прерывания при нарастающем/ падающем фронте, прерывания скоростных счетчиков и прерывания от последовательности импульсов. CPU может генерировать прерывание при нарастающем и/или падающем фронте на входе. Входы, доступные для этих прерываний, приведены в таблице 9–21. Появления нарастающего и падающего фронта могут быть распознаны для любой из этих точек ввода. Эти события могут использоваться для отображения условия, которое немедленно должно быть принято во внимание, когда это событие происходит. Таблица 9–21. Поддерживаемые прерывания при нарастающем/падающем фронте Прерывания от ввода/вывода CPU S7–200 Входы и выходы от I0.0 до I0.3 Прерывания скоростных счетчиков дают вам возможность реагировать на такие условия, как достижение текущим значением предустановленного значения, изменение направления счета, которое может соответствовать реверсированию направления, в котором вращается вал, или внешний сброс счетчика. Каждое из этих прерываний дает возможность предпринимать в реальном времени действия в ответ на быстрые события, которыми нельзя управлять при скоростях, определяемых временем цикла программируемого логического контроллера. Прерывания от последовательности импульсов немедленно извещают о завершении вывода предписанного количества импульсов. Импульсные последовательности часто используются для управления шаговыми двигателями. Каждое из вышеописанных прерываний может быть разблокировано назначением программы обработки прерывания соответствующему событию ввода/вывода. Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-175 Команды SIMATIC Прерывания, управляемые временем К прерываниям, управляемым временем, относятся циклические прерывания и прерывания, вызываемые таймерами T32 и T96. CPU может поддерживать циклические прерывания. С помощью циклических прерываний вы можете задать действия, которые должны выполняться циклически. Время цикла устанавливается в пределах от 1 до 255 мс шагами по 1 мс. Вы должны записать время цикла в SMB34 для циклического прерывания 0 и в SMB35 для циклического прерывания 1. Событие, вызывающее циклические прерывания, передает управление соответствующей программе обработки прерываний каждый раз, как истекает время работы таймера. Обычно циклические прерывания используются для управления опросом аналоговых входов через регулярные интервалы времени или для организации работы PIDрегулятора. Циклическое прерывание разблокируется, и начинается отсчет времени, когда вы назначаете программу обработки прерывания событию, вызывающему циклическое прерывание. При этом система воспринимает значение времени цикла, и последующие изменения на это время цикла влияния не оказывают. Чтобы изменить время цикла, вы должны задать для него новое значение, а затем снова назначить программу обработки прерывания событию, вызывающему циклическое прерывание. Когда происходит повторное назначение, функция циклического прерывания сбрасывает все накопленное время от предыдущего назначения и начинает отсчет времени с новым значением. Будучи разблокированным, циклическое прерывание работает постоянно, выполняя назначенную программу обработки прерывания при каждом истечении заданного временного интервала. Если вы выйдете из режима RUN или отсоедините циклическое прерывание, то циклическое прерывание блокируется. Если выполняется глобальная команда блокирования прерываний, то циклические прерывания продолжают происходить. Каждое появление циклического прерывания ставится в очередь (пока прерывания не будут разблокированы или не заполнится очередь). Пример использования циклического прерывания показан на рис. 9–66. Прерывания от таймера T32 или T96 позволяет своевременно реагировать на завершение заданного интервала времени. Эти прерывания поддерживаются только для таймеров с задержкой включения (TON) и с задержкой выключения (TOF) с разрешением 1 мс T32 и T96. Таймеры T32 и T96 в противном случае ведут себя нормально. Когда прерывание разблокировано, назначенная программа обработки прерывания исполняется, когда текущее значение активного таймера становится равным предустановленному значению во время нормального обновления 1-миллисекундного таймера, выполняемого в CPU. Эти прерывания разблокируются назначением программы обработки прерывания событиям, вызывающим прерывание от таймера T32/T96. 9-176 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC Описание приоритета прерываний и постановки их в очередь Прерывания получают приоритеты в соответствии с фиксированной схемой приоритетов, показанной ниже: • связь (наивысший приоритет) • прерывания от ввода/вывода • прерывания, управляемые временем (самый низкий приоритет). В пределах соответствующего приоритета прерывания обслуживаются CPU по принципу «первым пришел – первым обслужен». В любой момент времени исполняется только одна программа обработки прерывания. Когда исполнение программы обработки прерывания начинается, программа исполняется до своего завершения. Она не может быть выгружена другой программой обработки прерывания, даже если последняя имеет более высокий приоритет. Прерывания, возникающие во время обработки другого прерывания, ставятся в очередь для последующей обработки. Три очереди прерываний и максимальное количество прерываний, которое они могут хранить, показаны в таблице 9–22. Таблица 9–22. Очереди прерываний и максимальное количество записей на очередь Очередь CPU 221 CPU 222 CPU 224 CPU 226 Очередь коммуникационных прерываний 4 4 4 8 Очередь прерываний от ввода/вывода 16 16 16 16 Очередь циклических прерываний 8 8 8 8 В принципе может возникнуть больше прерываний, чем может содержать очередь. Поэтому системой поддерживаются биты переполнения очереди (обозначающие тип прерывающих событий, которые были потеряны). Биты переполнения очереди прерываний показаны в таблице 9–23. Вам следует использовать эти биты только в программе обработки прерывания, так как они сбрасываются, когда очередь опустошается и управление возвращается главной программе. Таблица 9–23. Определение битов специальной памяти в качестве битов переполнения очереди прерываний Описание (0 = нет переполнения, 1 = переполнение) SM-бит Переполнение очереди коммуникационных прерываний SM4.0 Переполнение очереди прерываний от ввода/вывода SM4.1 Переполнение очереди циклических прерываний SM4.2 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-177 Команды SIMATIC В табл. 9–24 представлены события, вызывающие прерывания, приоритеты и соответствующие номера событий. Таблица 9–24. События, вызывающие прерывания, в порядке убывания приоритета Номер события Описание прерывания Группа приоритета Приоритет в группе 8 Порт 0: символ принят 9 Порт 0: передача завершена 23 Порт 0: прием сообщения завершен 0 24 Порт 1: прием сообщения завершен 1 25 Порт 1: символ принят 1 26 Порт 1: передача завершена 1 19 Прерывание при завершении PTO 0 Дискретные 20 Прерывание при завершении PTO 1 операции 1 0 Нарастающий фронт, I0.0 (средняя) 2 2 Нарастающий фронт, I0.1 3 4 Нарастающий фронт, I0.2 4 6 Нарастающий фронт, I0.3 5 1 Падающий фронт, I0.0 6 3 Падающий фронт, I0.1 7 5 Падающий фронт, I0.2 8 7 Падающий фронт, I0.3 9 12 HSC0: CV=PV (текущее значение = предустановленному) 10 27 HSC0: направление изменено 11 28 HSC0: внешний сброс 12 13 HSC1: CV=PV (текущее значение = предустановленному) 13 14 HSC1: направление изменено 14 15 HSC1: внешний сброс 15 16 HSC2: CV=PV (текущее значение = предустановленному) 16 17 HSC2: направление изменено 17 18 HSC2: внешний сброс 18 32 HSC3: CV=PV (текущее значение = предустановленному) 19 29 HSC4: CV=PV (текущее значение = предустановленному) 20 30 HSC4: направление изменено 21 31 HSC4: внешний сброс 22 33 HSC5: CV=PV (текущее значение = предустановленному) 10 Циклическое прерывание 0 Управление 11 Циклическое прерывание 1 Временем 1 21 Прерывание от таймера T32 CT=PT (низшая) 2 22 Прерывание от таймера T96 CT=PT 9-178 Коммуникации 0 (наивысшая) 0 0 23 0 3 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC Примеры прерываний На рис. 9–65 показан пример команд с программами обработки прерываний. LAD MAIN OB1 [Главная программа ОВ1] Network 1 SM0.1 ATCH EN ENO 4 INT 0 EVNT ENI Network 2 DTCH SM5.0 EN ENO 0 EVNT Network 3 M5.0 DISI STL В первом цикле: определить программу обработки прерываний 4 как программу обработки нарастающего фронта для I0.0. Глобально разблокировать прерывания Если обнаружена ошибка ввода-вывода, заблокировать прерывание по нарастающему фронту для I0.0. (Этот шаг не обязателен.) Заблокировать все прерывания, когда М5.0 установлен. Network 1 LD SM0.1 ATCH 4, 0 ENI Network 2 LD SM5.0 DTCH 0 Network 3 LD M5.0 DISI . .INTERRUPT 4 [Прерывание 4] . Программа обработки прерывания по нарастающему фронту. Условный возврат при RETI ошибке ввода-вывода. Конец программы обработки прерывания по нарастающему фронту для I0.0. Network 1 SM5.0 Network 1 LD SM5.0 CRETI FBD MAIN OB1 [Главная программа ОВ1] Network 1 SM0.1 ATCH EN ENO 4 INT 0 EVNT ENI Network 2 DTCH SM5.0 0 Network 3 M5.0 EN ENO EVNT DISI INTERRUPT 4 [Прерывание 4] Network 1 SM5.0 RETI Рис. 9-65. Пример команд прерывания для SIMATIC LAD, STL и FBD Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-179 Команды SIMATIC На рис. 9–66 показано, как организовать циклическое прерывание для считывания значений аналогового входа. LAD MAIN [Главная программа] Network 1 SM0.1 STL Бит первого цикла: Вызвать подпрограмму 0. SBR0 EN Network 1 LD SM0.1 CALL 0 SUBROUTINE 0 Network 1 SM0.0 Начало подпрограммы 0. Network 1 MOV_B Бит памяти постоянно установлен: Установить SMB34 интервал для циклического прерывания 0 на 100 мс. EN ENO 100 IN OUT Глобально разблокировать прерывания. ATCH INT 10 EVNT ATCH 0, 10 ENI Назначить циклическое прерывание 0 программе обработки прерываний 0. EN ENO 0 LD SM0.0 MOVB 100, SMB34 ENI INTERRUPT 0 [Прерывание 0] Начало программы обработки Network 1 Network 1 прерываний 0. MOV_W SM0.0 LD SM0.0 EN ENO Опросить AIW4. MOVW AIW4, VW100 AIW4 IN OUT Завершить программу обработки прерываний. VW 100 FB D MAIN [Главная программа] Network 1 SBR0 * EN SM0.1 *См. стр. 9-150 SUBROUTINE 0 [Подпрограмма 0] Network 1 ATCH MOV_B SM0.0 100 EN ENO EN ENO IN INT OUT SMB34 0 10 ENI EVNT INTERRUPT 0 [Прерывание 0] Network 1 MOV_W SM0.0 EN ENO AIW4 IN OUT VW 100 Рис. 9-66. Пример организации циклического прерывания для чтения значения аналогового входа 9-180 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC Чтение из сети, запись через сеть L A D F B D Команда Читать из сети инициирует коммуникационную операцию для получения данных из удаленного устройства через указанный порт (PORT), как указано в таблице (TBL). NETR EN ENO TBL Команда Записать через сеть инициирует коммуникационную операцию для записи данных в удаленное устройство через указанный порт (PORT), как указано в таблице (TBL). PORT NETW EN ENO TBL PORT S T L NETR TBL,PORT NETW TBL,PORT ✓ ✓ ✓ ✓ 221 222 224 226 Команда NETR может прочитать до 16 байтов информации из удаленной станции, а команда NETW может записать до 16 байтов информации в удаленную станцию. В программе можно иметь любое количество команд NETR/NETW, но одновременно можно активизировать не более восьми команд NETR и NETW. Например, в данном S7-200 в одно и то же время у вас могут активными четыре NETR и четыре NETW или два NETR и шесть NETW. На рис. 9–67 определена таблица, к которой обращается параметр TBL в командах NETR и NETW. NETR: Ошибки, устанавливающие ENO в 0: SM4.3 (этап исполнения), 0006 (косвенная адресация) NETW: Ошибки, устанавливающие ENO в 0: SM4.3 (этап исполнения), 0006 (косвенная адресация) Входы/выходы Операнды Типы данных TBL VB, MB, *VD, *AC, *LD BYTE PORT константа BYTE Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-181 Команды SIMATIC D – выполнена (функция завершена): 0 = не завершена; 1 = завершена А – активна (функция поставлена в очередь): 0 = не активна; 1 = активна Байтовое Е – ошибка (функция вернула ошибку): 0 = нет ошибки; 1 = ошибка смещение Адрес удаленной станции: адрес ПЛК, к данным 7 0 которого нужно получить доступ. 0 D A E 0 Код ошибки Указатель на область данных в удаленной станции: косвенный указатель на данные, к которым нужно Адрес удаленной станции 1 получить доступ. 2 Указатель на область Длина данных: количество данных, к которым нужно данных в получить доступ в удаленной станции (от 1 до 16 3 байтов). удаленной станции 4 Область данных для приема или передачи: от 1 до 5 (I, Q, M или V) 16 байтов, зарезервированных для данных, как описано Длина данных ниже: 6 Для NETR это область данных, где хранятся значения, Байт данных 0 7 считанные из удаленной станции, после выполнения Байт данных 1 8 NETR. Для NETW это область данных, где хранятся значения, подлежащие передаче в удаленную станцию, перед Байт данных 15 22 выполнением NETW. Код ошибки Определение 0 1 2 3 4 5 6 7 8 9 A-F Нет ошибки Ошибка истечения времени ожидания, удаленная станция не отвечает. Ошибка приема; ошибка четности, кадрирования или контрольной суммы в ответе Ошибка отключения: коллизии, вызванные двойным адресом станции или неисправностью аппаратуры Ошибка переполнения очереди; активизировано более 8 блоков NETR/NETW Нарушение протокола; попытка выполнить NETR/NETW без разблокировки PPI+ в SMB30 Недопустимый параметр; таблица NETR/NETW содержит недопустимое или ошибочное значение Нет ресурса; удаленная станция занята (идет процесс загрузки) Ошибка 7-го уровня; нарушение протокола приложения Ошибка сообщения; неверный адрес данных или неправильная длина данных Не используются (зарезервированы для использования в будущем) Рис. 9-67. Определение TABLE для NETR и NETW 9-182 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC Пример чтения из сети и записи через сеть На рис. 9–68 показан пример, иллюстрирующий использование команд NETR и NETW. Для этого примера рассмотрим автоматическую линию, где коробочки заполняются маслом и передаются одной из четырех упаковочных машин. Упаковочная машина пакует по восемь коробочек с маслом в одну картонную коробку. Направляющее устройство управляет потоком коробочек с маслом, направляя их к той или иной упаковочной машине. Для управления упаковочными машинами используются четыре модуля CPU 221, а для управления направляющим устройством используется модуль CPU 222, оборудованный интерфейсом оператора TD 200. Структура сети показана на рис. 9–68. TD 200 Станция 1 Упаковочная машина №1 Упаковочная машина №2 Упаковочная машина №3 Упаковочная машина №4 CPU 221 CPU 221 CPU 221 CPU 221 Станция 2 Станция 3 Станция 4 Направляющее устройство Станция 5 CPU 222 Станция 6 VB100 Управл VB100 Управл VB100 Управл.VB100 Управл. VB200 Прини- VB300 Перемающ. дающ. СостоСостоСостоСостобуфер буфер VW 101 яние VW101 яние VW 101 яние VW 101 яние VB100 VB101 VB102 VB200 Принимающий буфер (станция 2) VB300 Передающий буфер (станция 2) VB210 Принимающий буфер (станция 3) VB310 Передающий буфер (станция 3) Принимающий Состоян. VB220 буфер (станция 4) (MSB) Принимающий упакованных ящиков Состоян. VB230 (LSB) буфер (станция 5) VB320 Передающий буфер (станция 4) VB330 Передающий буфер (станция 5) f e e e 0 g b t Управл. Количество f неисправ. индикатор; f=1, ошибка на упаковочн. машине g мало клея; g=1, добавить клея в течение следующих 30 мин. b мало коробок; b=1, добавить коробок в течение следующих 30 мин. t нет коробочек для упаковки; t=1, нет коробочек для масла eee код ошибки, указывающий тип произошедшей ошибки Рис. 9-68. Пример команд NETR и NETW Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-183 Команды SIMATIC Приемный и передающий буфера для доступа к данным в станции 2 (размещенные соответственно в VB200 и VB300) подробно показаны на рис. 9–69. CPU 224 использует команду NETR для регулярного чтения управляющей информации и информации о состоянии из каждой упаковочной машины. Каждый раз, когда упаковочная машина упаковывает 100 коробок, направляющее устройство замечает это и с помощью команды NETW передает сообщение для сброса слова состояния. Программа, необходимая для чтения управляющего байта, подсчета количества упакованных ящиков и сброса количества упакованных ящиков для каждой упаковочной машины в отдельности (упаковочная машина №1), показана на рис. 9–70. Приемный буфер направляющего устройства для чтения из упаковочной машины №1 7 VB200 VB201 D A E 0 0 Код ошибки Адрес удаленной станции Передающий буфер направляющего устройства для сброса подсчитанного количества коробок в упаковочной машине №1 7 VB300 VB301 D A E 0 0 Код ошибки Адрес удаленной станции VB202 Указатель на VB302 Указатель на VB203 область данных VB303 область данных VB204 VB205 VB206 VB207 в удаленной станции = (&VB100) Длина данных = 3 байта Управление VB208 Состояние (MSB) VB209 Состояние (LSB) VB304 в удаленной VB305 станции = (&VB101) VB306 Длина данных = 2 байта VB307 0 VB308 0 Рис. 9-69. Образец данных TABLE для примера команд NETR и NETW 9-184 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC LAD Network 1 SM0.1 STL MOV_B 2 EN ENO IN OUT SMB30 FILL_N 0 68 Network 2 V200.7 VW 208 ==I EN ENO IN OUT N MOV_B EN ENO 100 2 IN OUT MOV_D &VB101 EN ENO IN OUT MOV_B 2 EN ENO IN OUT 0 EN ENO IN OUT MOV_W VW 200 0 Network 4 SM0.1 V200.6 V200.5 / / TBL PORT MOV_B VB207 EN ENO IN OUT VB400 MOV_B / 2 EN ENO IN OUT VB201 MOV_D EN ENO &VB100 IN OUT VD202 MOV_B EN ENO 3 IN OUT VB206 NETR EN ENO VB200 0 Очистить все принимающие и передающие буфера. FILL VW307 NETW Network 3 V200.7 Network 1 LD SM0.1 MOVB 2, SMB30 Если бит завершения NETR установлен и 100 коробок упаковано, загрузить адрес VB301 станции упаковочной машины №1. Загрузить указатель на VD302 данные в удаленной станции. Загрузить длину для VB306 данных передачи. Загрузить данные, подлежащие передаче. EN ENO VB300 В первом цикле разблокировать протокол PPI+. TBL PORT Сбросить количество коробок, упакованных упаковочной машиной №1. Если бит завершения установлен, сохранить управляющие данные упаковочной машиной №1. Если NETR не активна и нет ошибок, загрузить адрес станции упаковочной машиной №1. Загрузить указатель на данные в удаленной станции. Загрузить длину данных, подлежащих приему. Прочитать управляющие данные и данные о состоянии в упаковочной машине №1. 0, VW200, 68 Network 2 LD V200.7 AW= VW208, 100 MOVB 2, VB301 MOVD &VB101, VD302 MOVB 2, VB306 MOVW 0, VW307 NETW VB300, 0 Network 3 LD V200.7 MOVB VB207, VB400 Network 4 LDN SM0.1 AN V200.6 AN V200.5 MOVB 2, VB201 MOVD &VB100, VD202 MOVB 3, VB206 NETR VB200, 0 Рис. 9-70. Пример команд NETR и NETW для SIMATIC LAD и STL Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-185 Команды SIMATIC FBD Network 1 MOV_B SM0.1 2 EN ENO IN OUT FILL_N EN ENO SMB30 +0 IN OUT 68 N VW 200 Network 2 AND ==I VW 208 +100 MOV_B EN 2 OUT VB301 &VB101 IN MOV_W OUT VW 307 VB300 VB306 +0 IN Network 3 OUT VD302 NETW EN EN ENO ENO IN OUT MOV_DW EN ENO IN 2 V200.7 MOV_B EN ENO 0 ENO TBL PORT MOV_B V200.7 VB207 EN ENO IN OUT VB400 Network 4 AND SM0.1 MOV_B 2 V200.6 V200.5 EN ENO IN OUT EN ENO VB201 &VB101 IN OUT VD202 NETR MOV_B 3 MOV_DW EN ENO IN OUT VB206 VB200 0 EN ENO TBL PORT Рис. 9–71. Пример команд NETR и NETW для SIMATIC FBD 9-186 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC Передача, прием сообщения L A D F B D XMT EN ENO TBL PORT RCV EN ENO TBL PORT S T L XMT TBL, PORT RCV TBL, PORT ✓ 221 ✓ ✓ 222 224 ✓ 226 Команда Передать сообщение вызывает передачу буфера данных (TBL). Первая запись в буфере данных определяет количество байтов, подлежащих передаче. PORT задает коммуникационный порт, который должен быть использован для передачи. Команда XMT использует в режиме свободно программируемой связи для передачи данных через коммуникационный порт(ы). Команда Принять сообщение инициирует или завершает обслуживание приема сообщения. Чтобы блок приема мог работать, вы должны указать условия начала и конца сообщения. Сообщения, получаемые через указанный порт (PORT), сохраняются в буфере данных (TBL). Первая запись в буфере данных указывает количество принятых байтов. Передать сообщение: Ошибки, устанавливающие ENO в 0: SM4.3 (этап исполнения), 0006 (косвенная адресация), 0009 (одновременно XMT/RCV в порту 0), 000B (одновременно XMT/RCV в порту 1), CPU не в режиме свободного программирования связи. Принять сообщение: Ошибки, устанавливающие ENO в 0: SM86.6 и SM186.6 (RCV – ошибка параметризации), SM4.3 (этап исполнения), 0006 (косвенная адресация), 0009 (одновременно XMT/RCV в порту 0), 000B (одновременно XMT/RCV в порту 1), CPU не в режиме свободного программирования связи. Входы/выходы Операнды Типы данных TABLE VB, IB, QB, MB, SB, SMB, *VD, *AC, *LD BYTE PORT константа (0 для CPU 221, CPU 222, CPU 224; 0 или 1 для CPU 226) BYTE Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-187 Команды SIMATIC Описание режима свободно программируемой связи Режим свободно программируемой связи можно выбрать для управления последовательным коммуникационным портом CPU с помощью программы пользователя. Если вы используете режим свободно программируемой связи, то программа на LAD управляет работой коммуникационного порта путем использования прерываний приема, прерываний передачи, команды передачи (XMT) и команды приема (RCV). Во время свободно программируемой связи протокол связи полностью управляется программой LAD. Для выбора скорости передачи и контроля четности используются SMB30 (для порта 0) и SMB130 (для порта 1, если ваш CPU имеет два порта). Режим свободно программируемой связи блокируется, и восстанавливается обычная связь (например, доступ через устройство программирования), когда CPU находится в состоянии STOP. В простейшем случае вы можете послать сообщение на принтер или дисплей, используя только команду «Передать сообщение» (XMT). К другим примерам относятся связь с устройством для считывания штрихового кода, весами или сварочным аппаратом. В каждом случае вы должны написать программу для поддержки протокола, используемого устройством, с которым CPU обменивается данными при нахождении в режиме свободно программируемой связи. Свободно программируемая связь возможна только тогда, когда CPU находится в режиме RUN. Разблокируйте режим свободно программируемой связи установкой значения 01 в поле выбора протокола SMB30 (порт 0) или SMB130 (порт 1). В режиме свободно программируемой связи обмен данными с устройством программирования невозможен. Примечание Вход в режим свободно программируемой связи может управляться с помощью бита специальной памяти SM0.7, который отражает текущее положение переключателя режимов работы. Если SM0.7 равен 0, то переключатель находится в положении TERM; если SM0.7 = 1, то переключатель режимов работы находится в положении RUN. Если вы разблокируете режим свободно программируемой связи только тогда, когда переключатель находится в положении RUN, то вы можете использовать устройство программирования для контроля и управления работой CPU путем перевода переключателя в любое другое положение. 9-188 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC Инициализация свободно программируемой связи SMB30 и SMB130 конфигурируют коммуникационные порты 0 и 1 соответственно для свободно программируемой связи и обеспечивают выбор скорости передачи, контроля четности и количество битов данных. Описание управляющих байтов свободно программируемой связи представлено в таблице 9–25. Таблица 9–25. Байты специальной памяти SMB30 и SMB130 Порт 0 Порт 1 Описание MSB 7 Формат SMB30 Формат SMB130 SM30.6 и SM30.7 SM130.6 и pp: SM130.7 p p d LSB 0 b b b m m Управляющий байт режима с программируемой связи выбор контроля четности 00 = нет контроля четности 01 = контроль по четности 10 = нет контроля четности 11 = контроль по нечетности SM30.5 SM130.5 d: Количество битов данных на символ 0= 8 битов на символ 1= 7 битов на символ SM30.2 ÷ SM130.2 ÷ bbb: скорость передачи в режиме свободно SM130.4 программируемой связи SM30.4 000 = 38 400 Бод 001 = 19 200 Бод 010 = 9 600 Бод 011 = 4 800 Бод 100 = 2 400 Бод 101 = 1 200 Бод 110 = 600 Бод 111 = 300 Бод SM30.0 и SM130.0 и mm: Выбор протокола SM30.1 SM130.1 00 = протокол интерфейса точка-точка (PPI/непривилегированный режим) 01 = протокол свободно программируемой связи 10 = PPI/привилегированный режим 11 = резерв (по умолчанию PPI/ непривилегированный режим) Примечание: для всех конфигураций генерируется один стоповый бит. Использование команды XMT для передачи данных Команда XMT дает возможность передать буфер, состоящий из одного или нескольких символов (не более 255). После того как передан последний символ буфера, генерируется прерывание (прерывающее событие 9 для порта 0 и прерывающее событие 26 для порта 1), если событию «Передача завершена» поставлена в соответствие программа обработки прерывания. Вы можете производить передачу и без использования прерываний (например, посылая сообщение на принтер), контролируя SM4.5 или SM4.6, сигнализирующих о завершении передачи. Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-189 Команды SIMATIC Команда XMT может быть использована для генерирования условия BREAK путем установки количества символов в ноль, а затем исполнения команды XMT. Это генерирует условие BREAK 16 раз с текущей скоростью передачи. Передача BREAK обрабатывается так же, как передача любого другого сообщения, причем прерывание XMT генерируется, когда передача BREAK завершена, а SM4.5 или SM4.6 отображают текущее состояние XMT. Формат буфера XMT показан на рис. 9–72. count M S E S G A E где: count - количество байтов, предназначенных для передачи (байтовый массив) МЕ … - символы сообщения Рис. 9–72. Формат буфера XMT Использование команды RCV для приема данных Команда RCV дает возможность принять буфер, состоящий из одного или нескольких символов (не более 255). После того как принят последний символ буфера, генерируется прерывание (прерывающее событие 23 для порта 0 и прерывающее событие 24 для порта 1), если событию «Прием сообщения завершен» поставлена в соответствие программа обработки прерывания. Вы можете принимать сообщения и без использования прерываний, контролируя SMB86. SMB86 (или SMB186) не равен нулю, если блок RCV неактивен или завершил работу. ОН равен нулю, когда происходит прием. Команда RCV позволяет выбирать условие начала и окончания сообщения. Описание этих условий см. в таблице 9–26 (от SM86 до SM94 для порта 0 и от SM186 до SM194 для порта 1). Формат буфера RCV показан на рис. 9–73. Примечание Функция приема сообщений автоматически завершается при превышении количества символов или ошибке четности. Вы должны определить условие начала (х или z) и условие конца (y, t или максимальное количество символов), чтобы функция приема сообщений могла работать. коли- нач. чество симв. M E S S A G E конеч. симв. Рис. 9–73. Формат буфера RCV 9-190 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC Таблица 9–26. Байты специальной памяти SMB86 ÷ SMB94 и SMB186 ÷ SMB194 Порт 0 SMB86 Порт 1 SMB186 Описание MSB LSB 7 n r 0 e 0 0 t c Байт состояния принимаемого сообщения p n: 1 = прием сообщения завершен командой блокировки от пользователя r: 1 = прием сообщения завершен: ошибка во входных параметрах или отсутствие условия начала или конца е: 1 = получен символ конца t: 1 = прием сообщения завершен: истекло время таймера с: 1 = прием сообщения завершен: достигнуто макс. количество символов р: 1 = прием сообщения завершен из-за ошибки четности SMB87 SMB187 MSB 7 en LSB 0 sc ec il c/m tmr bk B 0 Управляющий байт для приема сообщения en: 0 =функция приема сообщений заблокирована. 1 = функция приема сообщений разблокирована. Бит разблокировки/блокировки приема сообщений проверяется при каждом исполнении команды RCV. sc: 0 = игнорировать SMB88 или SMB188. 1 = использовать значение SMB88 или SMB188 для обнаружения начала сообщения. ec: 0 = игнорировать SMB89 или SMB189. 1 = использовать значение SMB89 или SMB189 для обнаружения конца сообщения. Il: 0 = игнорировать SMW90 или SMB90. 1 = использовать значение SMW90 для обнаружения бездействия линии c/m: 0 = таймер измеряет время между символами 1 = таймер измеряет время сообщения. tmr: 0 = игнорировать SMW92 или SMW192. 1 = завершить прием, если превышен интервал времени, указанный в SMW92 или SMW192 . bk: 0 = игнорировать условия прерывания 1 = использовать условие прерывания как начало обнаружения сообщения. Биты байта управления прерыванием сообщения используются для определения критериев, с помощью которых распознается сообщение. Определяются критерии начала и конца сообщения. Для определения начала сообщения должен принимать значение «истина» любой из двух наборов логически соединенных по И критериев начала сообщения, которые должны выполняться последовательно (бездействующая линия, после чего следует символ начала, или разрыв сообщения, за которым следует символ начала). Для завершения сообщения разрешенные критерии конца сообщения логически комбинируются по ИЛИ. Ниже приведены уравнения для критериев начала и конца: Начало сообщения = il * sc + bk * sc Конец сообщения = ec + tmr + достигнуто максимальное количество символов. Программирование критериев начала сообщения: 1. обнаружение бездействующей линии: il=1, sc=0, bk=0, SMW90>0 2. обнаружение символа начала: il=0, sc=1, bk=0, SMW90 не имеет значения 3. обнаружение разрыва: il=0, sc=0, bk=1, SMW90 не имеет значения 4. любой ответ на запрос: il=0, sc=0, bk=1, SMW90=0 (Для завершения приема может быть использован таймер сообщения, если ответ отсутствует.) 5. разрыв и символ начала: il=0, sc=1, bk=1, SMW90 не имеет значения 6. бездействующая линия и символ начала: il=1, sc=1, bk=0, SMW90 >0 7. бездействующая линия и символ начала (недопустимый): il=1, sc=1, bk=0, SMW90=0 Примечание: прием будет автоматически завершен при превышении количества символов или ошибке четности (если разблокирована) SMB88 SMB89 SMB90 SMB188 Символ начала сообщения SMB189 Символ конца сообщения SMB190 Время бездействия линии в миллисекундах. Первый символ, Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-191 Команды SIMATIC Таблица 9–26. Байты специальной памяти SMB86 ÷ SMB94 и SMB186 ÷ SMB194 Порт 0 SMB91 SMB92 SMB93 SMB94 Порт 1 Описание SMB191 принятый по истечении времени бездействия линии, является началом нового сообщения. SMB90 (или SMB190) – это старший байт, а SMB91 (или SMB191) – младший байт. SMB192 Значение контроля времени при измерении времени между SMB193 символами и времени сообщения в миллисекундах. Если этот интервал времени истек, то прием сообщения завершается. SMB92 (или SMB192) – это старший байт, а SMB93 (или SMB193) – младший байт. SMB194 Максимальное количество символов, которое должно быть принято (от1 до 255 байтов). Примечание: Этот диапазон должен быть установлен на ожидаемый максимальный размер буфера, даже если завершение сообщения с помощью подсчета символов не используется. Прием данных с помощью прерываний от символов Для достижения полной гибкости в поддержке протоколов вы также можете принимать данные, управляя прерываниями от приема символов. Каждый принимаемый символ генерирует прерывание. Принятый символ помещается в SMB2, а результат контроля четности (если активизирован) помещается в SM3.0 непосредственно перед исполнением программы обработки прерывания, назначенной событию «Символ принят». • SMB2 – это буфер для принятого символа при свободно программируемой связи. Каждый символ, принятый в режиме свободно программируемой связи, помещается по этому адресу для облегчения доступа к нему из программы пользователя. • SMB3 используется для режима свободно программируемой связи и содержит бит ошибки четности, который устанавливается, когда в принятом символе обнаруживается ошибка четности. Все остальные биты этого байта зарезервированы. Используйте этот бит для отклонения сообщения или для генерирования отрицательного квитирования этого сообщения. Примечание SMB2 и SMB3 совместно используются портами 0 и1. Когда прием символа в порт 0 приводит к исполнению программы обработки прерывания, назначенной этому событию (прерывающее событие 8), SMB2 содержит символ, принятый портом 0, а SMB3 содержит результат контроля четности этого символа. Когда прием символа в порт 1 приводит к исполнению программы обработки прерывания, назначенной этому событию (прерывающее событие 25), SMB2 содержит символ, принятый портом 1, а SMB3 содержит результат контроля четности этого символа. 9-192 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC Пример приема и передачи Программа этого примера (рис. 9–74) показывает использование команд приема и передачи. Эта программа принимает строку символов, пока не будет принят символ перевода строки. Это сообщение затем передается обратно отправителю. STL LAD MAIN (OB1) [Главная программа (ОВ1)] Network 1 SM0.1 MOV_B ENO EN 16#9 IN OUT MOV_B EN ENO 16#B0 IN OUT MOV_B EN ENO 16#A IN OUT MOV_W EN ENO +5 IN OUT В первом цикле: - инициализировать свободно программируемую связь - выбрать 9600 Бод SMB30 - выбрать 8 битов данных - выбрать отсутствие контроля четности Инициализировать управляющий байт для приема сообщения: SMB87 - RCV разблокирован - обнаруживать символ конца сообщения - обнаруживать условие бездействия линии как условие начала сообщения SMB89 В качестве символа конца сообщения установить 0АН (перевод строки). Установить время ожидания бездействия линии равным 5 мс. SMW90 Установить максимальное количество символов равным 100. MOV_B EN ENO 100 IN OUT ATCH EN ENO 0 INT 23 EVNT ATCH EN ENO 1 INT 9 EVNT ENI EN VB100 0 RCV ENO TBL Network 1 LD SM0.1 MOVB 16#9, SMB30 MOVB 16#B0, SMB87 MOVB 16#0A, SMB89 MOVW +5, SMW90 MOVB 100, SMB94 SMB94 Назначить прерывание событию «Прием завершен». Назначить прерывание событию «Передача завершена». Разблокировать прерывания со стороны пользователя. Разблокировать блок приема с буфером в VB100 для порта 0. ATCH 0, 23 ATCH 1, 9 ENI RCV VB100, 0 PORT Рис. 9-74. Пример команды передачи для SIMATIC LAD, STL и FBD Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-193 Команды SIMATIC INTERRUPT 0 [Прерывание 0] Network 1 SMB86 ==B MOV_B EN ENO 16#20 10 OUT IN ATCH EN ENO 1 10 INT EVNT RETI RCV NOT EN ENO VB100 0 Прерывание при завершении приема. SMB34 Если обнаруживается символ конца, то назначить 10миллисекундный таймер для запуска передачи, а затем выполнить возврат. Network 1 LDB= SMB86, 16#20 MOVB 10, SMB34 ATCH 2, 10 CRETI NOT RCV VB100, 0 Если прием завершен по любой дугой причине, то начать новый прием. TBL PORT INTERRUPT 1 [Прерывание 1] Network 1 SM0.0 DTCH EN ENO 10 XMT 0 Network 1 LD SM0.0 DTCH 10 EVNT EN ENO VB100 Прерывание по таймеру. Отсоединить прерывание по таймеру. TBL Передать сообщение обратно пользователю через порт 0. XMT VB100, 0 PORT INTERRUPT 2 [Прерывание 2] Network 10 RCV SM0.0 Прерывание при завершении передачи. EN ENO VB100 0 TBL Разблокировать еще один прием. Network 10 LD SM0.0 RCV VB100, 0 PORT Рис. 9-74. Пример команды передачи для SIMATIC LAD, STL и FBD (продолжение) 9-194 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC FBD Network 1 MOV_B IN OUT SMB3016#B0 IN MOV_W IN OUT OUT EN ENO SMB87 16#A EN ENO SMW90 100 IN IN OUT SMB89 ATCH MOV_B EN ENO +5 MOV_B MOV_B EN ENO EN ENO SM0.1 16#9 EN ENO OUT SMB94 0 23 INT EVNT ATCH ENI EN ENO 2 INT 9 EVNT RCV EN ENO VB100 0 TBL PORT INTERRUPT 0 Network 1 SMB86 ==B ATCH MOV_B EN ENO EN ENO 16#20 10 IN OUT SMB34 1 10 RETI INT EVNT RCV EN ENO VB100 0 TBL PORT INTERRUPT 1 DTCH SM0.0 10 XMT EN ENO EVNT EN ENO VB100 0 TBL PORT INTERRUPT 2 RCV SM0.0 EN ENO VB100 TBL 0 PORT Рис. 9-74. Пример команды передачи для SIMATIC LAD, STL и FBD (продолжение) Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-195 Команды SIMATIC Получение адреса порта L A D F B D S T L Команда Получить адрес порта считывает адрес станции из пота CPU, указанного в параметре PORT, и помещает значение по адресу, указанному в ADDR. GET ADDR EN ENO ADDR PORT Получить адрес порта: Ошибки, устанавливающие ENO в 0: SM4.3 (этап исполнения), 0006 (косвенная адресация) GPA ADDR, PORT ✓ ✓ ✓ ✓ 221 222 224 226 Входы/выходы Операнды Типы данных ADDR VB, IB, QB, MB, SB, SMB, LB, AC, *VD, *AC, *LD BYTE PORT константа BYTE Установить адрес порта L A D F B D S T L SET ADDR EN ENO ADDR PORT Установить адрес порта: Ошибки, устанавливающие ENO в 0: SM4.3 (этап исполнения), 0006 (косвенная адресация) SPA ADDR, PORT ✓ 221 ✓ ✓ ✓ 222 224 226 Входы/выходы Команда Установить адрес порта адрес порта станции (PORT) на значение, указанное в ADDR. Новый адрес не сохраняется постоянно. По завершении цикла порт возвращается к последнему адресу (к тому, который был загружен системным блоком). Операнды Типы данных ADDR VB, IB, QB, MB, SB, SMB, LB, AC, константа, *VD, *AC, *LD BYTE PORT константа BYTE 9-196 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC 9.18 Команды SIMATIC, выполняемые над логическим стеком Логическое сопряжение первого и второго уровня по И S T L Команда Выполнить логическое сопряжение первого и второго уровня по И комбинирует значения в первом и втором уровне стека, используя логическое И. ALD ✓ ✓ 221 ✓ 222 224 ✓ 226 Результат загружается в вершину стека. После выполнения ALD глубина стека уменьшается на единицу. Операнды: Нет Логическое сопряжение первого и второго уровня по ИЛИ S T L Команда Выполнить логическое сопряжение первого и второго уровня стека по ИЛИ комбинирует значения в первом и втором уровне стека, используя логическое ИЛИ. OLD ✓ 221 ✓ ✓ 222 224 ✓ 226 Результат загружается в вершину стека. После выполнения ALD глубина стека уменьшается на единицу. Операнды: Нет Дублирование вершины логического стека S T L Команда Дублировать вершину логического стека дублирует значение вершины стека и помещает это значение в стек. Дно стека выталкивается и теряется. LPS ✓ ✓ ✓ ✓ 221 222 224 226 Операнды: Нет Копирование второго уровня стека S T L Команда Копировать второй уровень стека копирует второй уровень стека в его вершину. В стек ничего не помещается и из него ничего не извлекается, но его вершина замещается копией. LRD ✓ 221 ✓ ✓ 222 224 ✓ 226 Операнды: Нет Извлечение вершины стека S T L LPP ✓ 221 ✓ ✓ 222 224 ✓ 226 Команда Извлечь вершину стека извлекает одно значение из стека. Второй уровень становится новой вершиной стека. Операнды: Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Нет 9-197 Команды SIMATIC Дублирование n-го бита стека S T L LDS Команда Дублировать n-ый бит стека дублирует n-ый бит стека и помещает это значение в вершину стека. Дно стека выталкивается и теряется. n ✓ ✓ ✓ ✓ 221 222 224 226 Операнды: 8) n (от 1 до Логические операции со стеком Рис. 9–75 иллюстрирует действие логического сопряжения первого и второго уровня стека по И и ИЛИ. ALD Сопряжение по И двух верхних значений стека До OLD Сопряжение по ИЛИ двух верхних значений стека После После До iv0 S0 iv0 S0 iv1 iv2 iv1 iv2 iv2 iv3 iv2 iv3 iv3 iv4 iv3 iv4 iv4 iv5 iv4 iv5 iv5 iv6 iv5 iv6 iv6 iv7 iv6 iv7 iv7 iv8 iv7 iv8 iv8 x iv8 x S0 = iv0 И iv1 S0 = iv0 ИЛИ iv1 Примечание: х означает, что значение неизвестно (оно может быть 0 или 1). Рис. 9-75. Команды логического сопряжения по И и ИЛИ двух верхних уровней стека 9-198 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 Команды SIMATIC Рис. 9–76 иллюстрирует действие дублирования вершины логического стека, копирования второго уровня стека и извлечения вершины стека. LPS Дублирование вершины стека LRD Копирование 2-го уровня стека LPP Извлечение вершины стека До iv0 После iv0 До iv0 После iv1 До iv0 После iv1 iv1 iv0 iv1 iv1 iv1 iv2 iv2 iv1 iv2 iv2 iv2 iv3 iv3 iv2 iv3 iv3 iv3 iv4 iv4 iv3 iv4 iv4 iv4 iv5 iv5 iv4 iv5 iv5 iv5 iv6 iv6 iv5 iv6 iv6 iv6 iv7 iv7 iv6 iv7 iv7 iv7 iv8 iv8 iv7 iv8 iv8 iv8 x Примечание: х означает, что значение неизвестно (оно может быть 0 или 1). После выполнения LPS бит iv8 теряется. Рис. 9-76. Дублирование вершины стека, копирование второго уровня стека и извлечение вершины стека Рис. 9–77 иллюстрирует действие дублирования n-го бита стека. LDS 3 Дублирование 3-го бита стека Before After iv0 iv3 iv1 iv0 iv2 iv1 iv3 iv2 iv4 iv3 iv5 iv4 iv6 iv5 iv7 iv6 iv8 iv7 Рис. 9-77. Дублирование n-го бита стека Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02 9-199 Команды SIMATIC Пример логического стека LAD STL Network 1 I0.0 I2.0 NETWORK 1 LD I0.0 LD I0.1 LD I2.0 A I2.1 OLD ALD = Q5.0 Q5.0 I0.1 I2.1 Network 2 I0.0 NETWORK 2 LD I0.0 LPS LD I0.5 O I0.6 ALD = Q7.0 LRD LD I2.1 O I1.3 ALD = Q6.0 LPP A I1.0 = Q3.0 Q7.0 I0.5 I0.6 I2.1 Q6.0 I1.3 I1.0 Q3.0 Рис. 9-78. Пример команд, выполняемых над логическим стеком для SIMATIC LAD и STL FBD Network 1 AND OR AND I2.0 I2.1 Q5.0 I0.0 I0.1 Network 2 I0.5 Q7.0 I0.0 I0.6 I2.1 AND OR OR AND I0.0 I1.3 I0.0 Q6.0 AND Q3.0 I1.0 Рис. 9–79. Пример команд, выполняемых над логическим стеком для SIMATIC FBD 9-200 Программируемый контроллер S7-200. Системное руководство C79000-G7076-C233-02