Tag Archives: step7

Сименс импорт в CoDeSys

В подменю «Проект» «Сименс импорт», вы найдете команды, которые позволяют импортировать компоненты (POU) и переменные из файлов Siemens STEP5/7.

Команда «Импорт SEQ файла» позволяет  импортировать глобальные переменные из символьных файлов STEP5. Эта команда выполняется перед командой «Импорт проекта S5» для создания удобочитаемых идентификаторов при импортировании компонентов. Две эти команды позволяют импортировать компоненты из файлов STEP5 в открытый проект CoDeSys. Вы можете оставить компоненты на языке STEP5 IL или конвертировать их в МЭК языки.

Мы рекомендуем, проводить импортирование в пустой проект CoDeSys. Обязательно включите библиотеку standard.lib, иначе вы не сможете импортировать таймеры.

Импорт из символьных файлов  SEQ

SEQ это обычный формат символьных файлов STEP5. Символьные определения считываются из файлов *. seq. Каждое определение включает абсолютный адрес S5 элемента программы (вход, выход, память, и т.д.), соответствующий идентификатор, а также может содержать комментарии. Это текстовый файл, каждое определение начинается с новой строки. Поля определения отделены пробелами. Каждый комментарий начинается с точки с запятой.

Определения из SEQ файла будут переведены в глобальные переменные в формате МЭК 61131-3, включая символьное имя, адрес и комментарий (если есть). Адрес будет приведен к требованиям МЭК 61131-3 (знак процента, и т.д.). Так как S5 имена могут содержать не разрешенные МЭК символы, они будут изменены, где это необходимо. Недействительные знаки будут заменены символом подчеркивания. Если потребуется больше чем одно подчеркивание, каждый последующий знак будет заменен допустимым символом (например, «0»). Если имя изменено в процессе преобразования, исходное имя будет добавлено в виде комментария. Исходные SEQ комментарии также импортируются. Может быть создано несколько модулей определения глобальных переменных. Каждый блок включает не более 64КБ текста.

Описанный SEQ формат используется в Siemens STEP5-PG, в большинстве версий Siemens STEP7-300/400 и ACCON-PG от DELTALOGIC. Формат поддерживается в STEP7-SEQ файлах версии 3.x или старше. Формат файлов STEP7 версии 2.x не поддерживается. Вместо разделительных табуляций он содержит символические имена фиксированной длины.

Для начала, вы указываете необходимый SEQ файл в стандартном диалоге Windows и запускаете процесс импортирования. В течение этого процесса могут возникать ошибки. Это может случиться, если разные STEP5/7 идентификаторы преобразуются в одинаковые МЭК идентификаторы. Например, два STEP5 идентификата «A!» И «A?» будут конвертированы в «A_». В этом случае возникнет следующее сообщение: «Повторное определение идентификатора A_». Измените одну из переменных.

Ни при каких других обстоятельствах не стоит изменять список глобальных переменных. Если идентификаторы содержат адреса, допустимые в Siemens ПЛК, но несуществующие в вашем контроллере, не изменяйте их пока, даже если Вы получаете тысячу сообщений ошибках при компиляции. Сохранить исходные адреса важно для правильного импортирования компонентов.

Если проект, в который вы импортируете уже, содержит декларацию для глобальной переменной x с прямым адресом (например, «%MX4.0») то может случиться, что импорт из SEQ содержит переменную с тем же самым адресом. Это допускается в МЭК 61131-3, но возможно не запланировано пользователем. Никаких сообщений об ошибке не будет, но ваша программа может функционировать неверно. Чтобы избежать этой проблемы, лучше импортировать в пустой проект или в проект, в котором еще нет никаких абсолютных адресов.

После импортирования SEQ можно переходить к импортированию программных компонентов  STEP5/7. Вы можете также определить входы-выходы через конфигурацию ПЛК, это не требуется при импортировании, но позволяет своевременно обнаружить ошибки идентификаторов.

 

Импорт из файла проекта S5

Компоненты (POU) читаются из файла программы Siemens S5 (*.s5d). Исходным является MC5 код исполняемый S5 SPS. В целом, MC5 код соответствует знакомым программистам инструкциям STEP5 IL (без символьных имен). Кроме того, S5D включает комментарии из исходного текста STEP5. Поскольку S5D файл содержит абсолютные адреса без символических имен, CoDeSys отыскивает соответствующие символические имена, определенные в проекте. Если таковые отсутствуют, абсолютный адрес остается без изменений. Именно поэтому, символьный файл SEQ должен быть обработан до S5 файла.

Для начала, вы указываете необходимый S5D файл в стандартном диалоге Windows. В следующем диалоговом окне вы должны просмотреть список POU и выбрать необходимые. Наиболее простой путь — выбрать все. Здесь же вы решаете оставлять компоненты в STEP5 IL либо конвертировать их в IL, LD или FBD.

Везде где это возможно, CoDeSys будет отыскивать и включать в код символические имена. Так для инструкции «U M12.0» он возьмет имя переменной расположенной по адресу M12.0. Будет использовано первое объявление в проекте. В результате переменная будет импортирована как, например «U-Name» вместо «U M12.0».

Некоторые дополнительные глобальные объявления будут выполнены в процессе импорта. Например, экземпляр функционального блока R_TRIG будет добавлен при необходимости переключаемого по фронту входа.

    Конвертирование языка S5 в МЭК C 61131-3

    При конвертировании STEP5 в МЭК языки, вы должны знать, что некоторые части вашего проекта не могут быть автоматически преобразованы. Для кода, который не может быть конвертирован в МЭК 61131-3, будет дано сообщение ошибке и критическая часть оригинального STEP5 IL будет вставлена как комментарий в МЭК POU. В этом случае вы должны проконтролировать проблему и поправить текст вручную. Не конвертируются системные команды, специфичные для конкретного CPU. Базовую часть команд STEP5 можно преобразовать в МЭК нажатием клавиши, даже в случае если при этом меняется смысл кода.

    Базовый список команд, которые конвертируются в МЭК 61131-3, содержит все команды, преобразуемые в LD или FBD в системе программирования STEP5 и также команды, допустимые в программных блоках STEP5-PB. Кроме того, общие для всех S5 CPU команды функциональных блоков (например, абсолютные и условные переходы, командах сдвига, и т.д.).

    Единственное ограничение связано с переустанавливаемыми таймерами STEP5, которые не имеют прямых аналогов в МЭК 61131-3.

    Конвертируемые команды:

    U, UN, O, ON, S, R, =  с операндами: I (входы), O (выходы), M (память), S (S память), D (блоки данных)

    U, UN, O, ON ON с операндами: T (таймер), C (счетчик)

    S, R R с операндами: C

    SU, RU, P, PN с операндами: E, A, M, D

    O, O(, U(, )

    L, T со следующим диапазоном операндов: E, A, M, D, T, C, P (Periphery) и размером операндов: B (byte), W (word), D (double word), L (left byte), R (right byte)

    L L со следующими форматами констант: DH, KB, KF, KH, KM, KT, KZ, KY, KG, KC

    SI, SE, SA SA с операндами: T

    ZV, ZR с операндами: C

    +, -, X, : с операндами: F (фикс. запятая), G (плав. запятая)

    +, — с операндами: D (32 бит фикс. запятая)

    !=, ><, >, <, >=, <= с операндами: F, D, G

    ADD с операндами: BF, KF, DH

    SPA, SPB с операндами: PB, FB (с большинством типов параметров), SB

    A, AX с операндами: DB, DX

    BE, BEA, BEB

    BLD, NOP, ***

    UW, OW, XOW

    KEW, KZW, KZD

    SLW, SRW, SLD, RRD, RLD

    SPA=, SPB=

    SPZ=, SPN=, SPP=, SPM=

    TAK

    D, I

    Большинство основных операторов

    Не конвертируемые команды:

    U, UN, O, ON, S, R, =  с битовыми операндами: T0.0, C0.0 (таймер и счетчик)

    L, T с диапазоном операндов: Q (расширенная периферия)

    LC с операндами: T, C

    SV, SS, R, FR FR с операндами: T

    FR с операндами: C

    Формальные оператора старта сброса и остановки таймеров

    Все команды с диапазоном операндов BA, BB, BS, BT (данные ОС).

    SPA, SPB с некоторыми операндами: OB

    BA, BAB с операндами: FX

    E, EX with the following operands: DB, DX

    STP, STS, STW

    DEF, DED, DUF, DUD

    SVW, SVD

    SPO=, SPS=, SPR

    AS, AF, AFS, AFF, BAS, BAF

    ENT

    SES, SEF

    B с операндами: DW, MW, BS

    LIR, TIR, LDI, TDI, TNW, TXB, TXW

    MAS, MAB, MSA, MSB, MBA, MBS

    MBR, ABR

    LRW, LRD, TRW, TRD

    TSG

    LB, TB, LW, TW с операндами: GB, GW, GD, CB, CW, CD

    ACR, TSC

    BI

    SIM, LIM

    Если вы внимательно посмотрите на не конвертируемые команды, то обнаружите что это дополнительные команды, которые специфичны для некоторых CPU. Из основных команд не конвертируются: BCD таймер или счетчик значений (LC T, LC C), таймер типов SV и SS, и переустанавливаемый таймер.

    Блоки данных:

    Блоки данных STEP5 преобразуются в POU имеющие объявления, но не содержащие кода.

    Некоторые типовые проблемы импорта STEP5, требующие ручной правки:

    1. Значения времени в переменных word

    В STEP5 значения времени могут размещаться в любом слове памяти (word) или блока данных. В МЭК 61131-3, переменные или константы TIME не совместимы с WORD адресацией. Отсутствие явного указания типа времени, может приводить к ошибочным последовательностям команд при импорте. При обнаружении некорректного использования таких переменных, вы уведете сообщение «Incompatible Types: Cannot convert WORD to TIME.» либо «Incompatible Types: Cannot convert TIME to WORD.» В этом случае нужно изменить объявление переменной WORD в TIME.

    2. . Сложности с блоками данных

    В МЭК 61131-3 отсутствуют блоки данных (DB) и нет прямого аналога этой концепции. В STEP5 DB применяются для размещения переменных (по словам, как в области памяти), допускают массивы (B DW), указатели (B MW100 A DB 0) или объединения (доступ как к байту, слову или двойному слову). Конвертирование STEP5 DB проходит успешно,  только если их применение упорядочено. При доступе к переменным блока данных, необходимо знать, какой блок сейчас открыт (команда A DB х, где х = номер блока). Это можно определить, если в начале POU стоит команда A DB и номер блока передается в качестве параметра. Если же команда A DB отсутствует, то нет возможности определить какой блок использовать и соответственно конвертировать такой POU нельзя. Об этой проблеме вас оповестит сообщение «No open data block (insert an A DB)». При конвертировании будут получаться обращения к несуществующим переменным, например «ErrorDW0». Вы должны будете вручную поставить обращение к необходимому DB (заменить «ErrorDW0» на «DB10.DW0»). Конечно, проще заранее явно расставить в самих STEP5 POU необходимые команды A DB.

    В случае пропуска команды A BD, существует опасность, что при преобразовании сформируется обращение к ошибочному DB.

    3. Косвенное обращение к блокам данных

    В STEP5 вы можете создавать подобие нескольких экземпляров блоков данных и косвенно (через индекс) выбирать нужный:

    L KF +5

    T MW 44

    B MW 44

    A DB 0

    В конце этой последовательности будет открыт блок данных DB5 (в целом, DB номер которого записан по адресу %MW44). Такой прием не распознается при конвертировании. Поэтому ручная правка будет необходима в итоговом проекте:

    Прежде всего, все экземпляры DB должны быть импортированы (как DB5, DB6 и т.д) в стандартные IL, LD или FBD (по вашему желанию) POU. Каждый такой POU не имеет кода и содержит только объявления. Создайте теперь новый тип данных (например DBType) и перенесите в него объявления данных из соответствующего конвертированного  POU. Затем создайте соответствующие глобальные объявления:

    VAR_GLOBAL

    DB5, DB6 : DBType;

    END_VAR

    Теперь вы можете удалить ненужные более POU (бывшие DBs).

    Доступ к нужному DB блоку теперь можно получить путем передачи программному компоненту дополнительного параметра VAR_INPUT типа DBType. Вы можете использовать  один программный  компонент с разными блоками данных путем задания соответствующего актуального параметра при его вызове.

    4. В S5 существуют встроенные функциональные блоки. Пользователю доступен только их интерфейс, программный код реализован не в STEP5 (или MC5) или защищен специальным механизмом.  Результатом импорта таких блоков являются пустые POU, имеющие только объявление интерфейса. Программный код вам придется написать самостоятельно

    5. Помимо этого могут встретится блоки (OB) реализованные в виде ассемблерных вставок (805xx например). Преимущественно таким способом реализуется ПИД регулятор (OB251),  использующий для приема параметров и хранения локальных переменных отдельный блок данных. Естественно, код регулятора не попадет в импортированный проект. Для понимания работы таких блоков используйте документацию по данному процессору.

    6. Конфигурационные блоки (такие как DB1 [S5-95U], DX0, и DX2), применяемые иногда в S5 CPU, конвертируются в бессмысленные МЭК компоненты. Чтобы понять смысл их содержимого используйте руководство по программированию данного CPU. В крайнем случае, можно исследовать определенную данным блоком конфигурацию в системе программирования S5. Она включает настройку коммуникаций, обработку аналоговых значений, мультипроцессорную работу и т.д. Естественно, все эти параметры имеют смысл только в Siemens SPS.

    По окончании импортирования внимательно просмотрите полученный код. Не конвертированные автоматически фрагменты снабжены комментарием:

    (*Warning! Unconvertible STEP5/7 code shown as comment:*)

    Здесь же, в комментарии содержится и исходный код.

    Обязательно проверьте адреса. При импорте создаются исходные Siemens адреса, в формате:

    Bits: Byte-Offset.Bit-Nummer

    Non-Bits:Byte-Offset

    Два последовательных адреса слов могут пересекаться. Так %MW32 и %MW33 имеют общий байт %MB33 (только в Siemens SPS). В CoDeSys %MW32  и %MW33 обычно не имеют пресечения.

    Ваш ПЛК может иметь иерархическую модель адресации памяти, например «%MW10.0.0.Вы можете сразу переделать все адреса либо попробовать оставить их как есть. Делать это нужно очень осторожно! В Siemens программах попеременное обращение к одной и той же области памяти как слову, байту или биту является обычной практикой. При импортировании блоков данных CoDeSys создает WORD определения для соответствующих слов. Обращение к словам выполнятся напрямую. В МЭК нет возможности объявить в общей памяти несколько пересекающихся переменных разного типа. Но это возможно в прямоадресуемой (M) памяти и памяти входов-выходов. Если применяли адреса типа %MX33.3, %MB33, %MW32 или %MD30, их корректное преобразование нужно выполнить вручную.

    Используйте список перекрестных ссылок, включающий входы, выходы и распределение памяти. Проверьте пересекающиеся области и исключите их там, где их не должно быть.

      КОПЛ-включение асинхронного двигателя в Step7

      Данная программа позволяет автоматический запуск асинхронного двигателя с короткозамкнутым ротором с помощью КОПЛ-включения. При таком Короткозамкнуто-Плавном пуске двигатель запускается с минимальным числом оборотов и достигает номинального числа оборотов только через определенное время.

      Нажатие кнопки ВКЛ на входе E0.0 включает плавный пуск двигателя, а кнопка ВЫКЛ на E0.1 отключает двигатель. На вход E0.2 подключен автомат защиты двигателя, который срабатывает при перегрузке двигателя и отключает его.

      Схема включения

       

      Структура программы

      Описание программы

      Меркер блокировки M1.0 устаналивается при одновременном нажатии кнопок ВКЛ (нормально разомкнута) и ВЫКЛ (нормально замкнута) на входах E0.0 и E0.1 и сбрасывается только после того, как обе кнопки окажутся в исходном положении. Переключатель двигателя подключенный на выход A0.0 сработает после того как будет нажата кнопка ВКЛ и при этом не сработала ни блокировка (M1.0) ни автомат защиты двигателя (E0.2-нормально замкнуто) или кнопка ВЫКЛ (E0.1). Логическая операция ИЛИ с A0.0 реализует самоподхват переключателя. Двигатель запускается теперь с минимальным числом оборотов, так как сопротивление запуска еще не перемкнуто. Если включается переключатель двигателя и выход A0.1 для перемыкателя еще не установлен, то запускается таймер T37. По прошествии установленного времени 5 сек устанавливается выход A0.1 перемыкателя, пока включен переключатель двигателя, т.е. пока установлен A0.0.

      Размер программы составляет 28 слов.

      Листинг

      Основная программа

      // TITEL = КОПЛ-включение

      // E0.0 Кнопка вкл.

      // E0.1 Кнопка выкл. Нормально замкнута

      // E0.2 Защита двигателя Нормально замкнута

      // A0.0 Защита двигателя

      // A0.1 Перемыкатель

      // T37 Таймер для переключения (5 сек)

       

      БЛОКИРОВКА

      LDN E0.1 // Кнопка Выкл нажата

      U E0.0 // Кнопка Вкл нажата

      S M10.0 ,1 // Вспомогательный меркер для блокировки

      LD E0.1 // Кнопка Выкл не нажата

      UN E0.0 // Кнопка Вкл не нажата

      R M10.0 ,1 // Блокировка снята

       

      ЗАПУСК ДВИГАТЕЛЯ

      LD E0.0 // Кнопка Вкл нажата

      O A0.0 // Самоподхват переключателя двигателя

      LD E0.1 // Кнопка Выкл не нажата

      U E0.2 // Защита двигателя OK

      UN M1.0 // Меркер блокировки

      ULD

      = A0.0 // Защита двигателя

      ЗАПУСК ТАЙМЕРА T37

      LD A0.0 // Двигатель в движении

      UN A0.1 // Перемыкатель

      TON T37,50 // Запуск T37

       

      ВКЛЮЧЕНИЕ ПЕРЕМЫКАТЕЛЯ

      LD T37 // T37 завершил работу

      O A0.1 // Самоподхват перемыкателя

      LD A0.0 // Двигатель в движении

      ULD

      = A0.1 // Перемыкатель

      MEND // Конец

       

       

      P.S. Устал я чего — то все это расписывать. Возьму фотоаппарат нащелкаю фоток любимого контроллера и буду их ретушировать. А бесплатные программы для фотографий найти совсем несложно.

      Управление фазным ротором в Step7

      В данном примере описан автоматический запуск асинхронного двигателя с фазным ротором из состоящий четырех ступеней. Двигатель при этом запускается с полным сопротивлением ротора. По прошествии определенного времени включается первый переключатель ротора и перемыкает часть сопротивления ротора. Через каждый последующий интервал времени включаются следующие переключатели, причем сопротивление ротора каждый раз уменьшается, пока не будет полностью перемкнуто и двигатель выходит на номинальные обороты.

      Кнопка ВКЛ на входе E0.0 осуществляет плавный пуск двигателя, а кнопка ВЫКЛ на E0.1 отключает двигатель. На вход E0.2 подключен автомат защиты двигателя, который срабатывает при перегрузке двигателя и отключает его.

      Схема включения

      Структура программы

      Описание программы

      Если нажата кнопка ВКЛ на входе E0.0 и не активны переключатели ротора или уже выполнен самоподхват автомата защиты двигателя (A0.0 = 1), то устанавливается промежуточный меркер M2.0. Этот промежуточный меркер используется для установки меркера защиты двигателя A0.0, в случае если не разомкнут ВЫКЛючатель или автомат защиты двигателя. Блокировка в этот момент должна отсутствовать. Меркер блокировки M10.0 устаналивается при одновременном нажатии кнопок ВКЛ и ВЫКЛ и сбрасывается только после того, как обе кнопки окажутся в исходном положении.

      После того как установлен выход защиты двигателя A0.0, запускается первый таймер T37. По прошествии 2 сек. устанавливается выход A0.1 для первого переключателя ротора. Затем запускается второй таймер T38 и по прошествии 2 сек. Устанавливается выход A0.2 для второго переключателя ротора. Этот шаг повторяется для таймеров T39 и T40, которые со своей стороны включают переключатели ротора 3 и 4 установкой соответствующих выходов A0.3 и A0.4, так что двигатель в конце концов работает с номинальным числом оборотов. Двигатель будет отключен, если на входах E0.1 или E0.2 исчезает напряжение, т.е. если разомкнута кнопка ВЫКЛ или автомат защиты двигателя. Размер программы составляет 77 слов.

      Листинг

      Основная программа

      // TITEL = ФАЗНЫЙ РОТОР

      // E0.0 Кнопка вкл.

      // E0.1 Кнопка выкл. Нормально замкнута

      // E0.2 Защита двигателя Нормально замкнута

      // A0.0 Защита двигателя

      // A0.1 Переключатель ротора 1

      // A0.2 Переключатель ротора 2

      // A0.3 Переключатель ротора 3

      // A0.4 Переключатель ротора 4

      // T37 Таймер 1я ступень

      // T38 Таймер 2я ступень

      // T39 Таймер 3я ступень

      // T40 Таймер 4я ступень

      // БЛОКИРОВКА

      LDN E0.1 // Кнопка Выкл нажата

      U E0.0 // Кнопка Вкл нажата

      S M10.0 ,1 // Вспомогательный меркер для блокировки

      LD E0.1 // Кнопка Выкл не нажата

      UN E0.0 // Кнопка Вкл не нажата

      R M10.0 ,1 // Блокировка снята

      ЗАПУСК ДВИГАТЕЛЯ

      LD E0.0 // Кнопка Вкл нажата

      UN A0.1 // Нет переключателя ротора 1

      UN A0.2 // Нет переключателя ротора 2

      UN A0.3 // Нет переключателя ротора 3

      UN A0.4 // Нет переключателя ротора 4

      LD A0.0

      OLD

      = M2.0 // Промежуточный меркер

      LD M2.0 // Промежуточный меркер

      U E0.1 // Кнопка Выкл не нажата

      U E0.2 // Защита двигателя OK

      UN M10.0 // Блокировка

      = A0.0 // Двигатель в движении

      ЗАПУСК ТАЙМЕРА T37

      LD A0.0 // Двигатель в движении

      UN A0.1 // Нет переключателя ротора 1

      UN A0.2 // Нет переключателя ротора 2

      UN A0.3 // Нет переключателя ротора 3

      UN A0.4 // Нет переключателя ротора 4

      TON T37,20 // Запуск T37 с 2 сек

      ВКЛЮЧЕНИЕ ПЕРЕКЛЮЧАТЕЛЯ РОТОРА 1

      LD T37 // T37 завершил работу

      O A0.1 // Самоподхват переключателя ротора 1

      LD A0.0 // Двигатель в движении

      UN A0.2 // Нет переключателя ротора 2

      UN A0.3 // Нет переключателя ротора 3

      UN A0.4 // Нет переключателя ротора 4

      ULD

      = A0.1 // Переключатель ротора 1

      ЗАПУСК ТАЙМЕРА T38

      LD A0.0 // Двигатель в движении

      UN A0.2 // Нет переключателя ротора 2

      UN A0.3 // Нет переключателя ротора 3

      UN A0.4 // Нет переключателя ротора 4

      U A0.1 // Переключатель ротора 1

      TON T38,20 // Запуск T 38 с 2 сек

      ВКЛЮЧЕНИЕ ПЕРЕКЛЮЧАТЕЛЯ РОТОРА 2

      LD T38 // T38 завершил работу

      O A0.2 // Самоподхват переключателя ротора 2

      LD A0.0 // Двигатель в движении

      UN A0.3 // Нет переключателя ротора 3

      UN A0.4 // Нет переключателя ротора 4

      ULD

      = A0.2 // Переключатель ротора 2

      // ЗАПУСК ТАЙМЕРА T39

      LD A0.0 // Двигатель в движении

      U A0.2 // Переключатель ротора 2

      UN A0.3 // Нет переключателя ротора 3

      UN A0.4 // Нет переключателя ротора 4

      TON T39,20 // Запуск T 39 с 2 сек

      ВКЛЮЧЕНИЕ ПЕРЕКЛЮЧАТЕЛЯ РОТОРА 3

      LD T39 // T39 завершил работу

      O A0.3 // Самоподхват переключателя ротора 3

      LD A0.0 // Двигатель в движении

      UN A0.4 // Нет переключателя ротора 4

      ULD

      = A0.3 // Переключатель ротора 3

       

      ЗАПУСК ТАЙМЕРА T40

      LD A0.0 // Двигатель в движении

      U A0.3 // Переключатель ротора 3

      UN A0.4 // Нет переключателя ротора 4

      TON T40,20 // Запуск T 40 с 2 сек

       

      ВКЛЮЧЕНИЕ ПЕРЕКЛЮЧАТЕЛЯ РОТОРА 4

      LD T40 // T40 завершил работу

      O A0.4 // Самоподхват переключателя ротора 4

      LD A0.0 // Двигатель в движении

      ULD

      = A0.4 // Переключатель ротора 4

      MEND // Конец

       

        Запуск звезда-треугольник с ответным сообщением

        Данный пример управляет запуском звезда-треугольник асинхронного двигателя. Если, например, переключатель звезды дефектен, то это будет опознано с ответным сообщением и SIMATIC S7-200 не переключится через время задержки 5 сек в режим треугольника, исключая тем самым возможность поломки. Двигатель запускается после нажатия кнопки ВКЛ на входе E0.0 в режиме звезды. По прошествии установленного времени двигатель переключается в режим треугольник.  Возможное сообщение об ошибке индицируется посредством лампы на выходе A0.3.

        Схема включения

        Описание программы

        Двигатель запускается после нажатия кнопки ВКЛ на входе E0.0 в режиме звезды. По прошествии установленного времени 5 сек двигатель переключается в режим треугольник, если отсутствует сообщение об ошибке переключателей. Сообщение об ошибке индицируется лампой на выходе A0.3. Кнопкой квитирования на входе E0.6 можно сбросить сообщение об ошибке, в случае если ошибка устранена. Ответные сообщения переключателей подаются на входы с E0.3 по E0.5. Если нажата кнопка ВЫКЛ или сработал автомат защиты двигателя, находящиеся на входах E0.1 и E0.2, двигатель отключается. Если кнопки ВЫКЛ и ВКЛ нажаты одновременно, двигатель остается выключенным.

        Части программы ”Включение переключателя звезда”, ”Запуск таймера переключения” и ”Включение переключателя сети” дополнены условием, что отсутствует сообщение об ошибке (A0.3), что позволит установить меркер для переключателя звезды (A0.1) и переключателя сети (A0.0) и запустить таймер переключения (T37).

        Появилась новая часть программы ”Сообщение об ошибке”. В принципе обработка сообщения действует таким образом, что сравнивается состояние выходноых сигналов со входами, на которые подано действительное состояние переключателей. Состояние этих выходов сравнивается с состоянием входа E0.3 для переключателя сети, E0.4 для переключателя звезды и E0.5 для переключателя треугольника. При отклонении будет включен таймер T38 с временем задержки 2 сек, соответствующим максимальному времени переключения автоматов.

        Если по прошествии данного времени состояния все еще различаются, устанавливыается выход ошибки A0.3. Кнопкой квитирования на входе E0.6 он может быть снова сброшен.

        Размер программы составляет 70 слов.

        Листинг

        Основная программа

        // TITEL = ЗАПУСК ЗВЕЗДА-ТРЕУГОЛЬНИК С ОТВЕТНЫМ СООБЩЕНИЕМ

        // E0.0 Кнопка вкл.

        // E0.1 Кнопка выкл. Нормально замкнута

        // E0.2 Защита двигателя Нормально замкнута // E0.3

        // E0.4 RM. Переключатель звезды

        // E0.5 RM. Переключатель треугольника

        // E0.6 Кнопка квитирования

        // A0.0 Переключатель сети

        // A0.1 Переключатель звезды

        // A0.2 Переключатель треугольника

        // A0.3 Лампа ошибки

        // T37 Таймер переключения 5 сек

        // T38 Таймер сообщения об ошибке 2 сек

         

        БЛОКИРОВКА

        ВКЛЮЧЕНИЕ

         

        ВКЛЮЧЕНИЕ ПЕРЕКЛЮЧАТЕЛЯ ЗВЕЗДЫ

         

        ЗАПУСК ТАЙМЕРА ПЕРЕКЛЮЧЕНИЯ

         

        ВКЛЮЧЕНИЕ ПЕРЕКЛЮЧАТЕЛЯ СЕТИ

         

        ВКЛЮЧЕНИЕ ПЕРЕКЛЮЧАТЕЛЯ ТРЕУГОЛЬНИКА

         

        LD A0.0 // Переключатель сети

        UN E0.3 // RM. Переключатель сети

        LDN A0.0 // Нет переключателя сети

        U E0.3 // RM. Переключатель сети

        OLD

        LD A0.1 // Переключатель звезды

        UN E0.4 // Нет RM. Переключателя звезды

        OLD

        LDN A0.1 // Нет переключателя звезды

        U E0.4 // RM. Переключатель звезды

        OLD

        LD A0.2 // Переключатель треугольника

        UN E0.5 // Нет RM. Переключателя треугольника

        OLD

        LDN A0.2 // Нет переключателя треугольника

        U E0.5 // RM. Переключатель треугольника

        OLD

        TON T38,20 // Таймер задержки для сообщения об ошибке (2 сек)

         

          Запуск звезда-треугольник Step7

          Краткое описание

          Данный пример управляет запуском звезда-треугольник асинхронного двигателя. Двигатель запускается после нажатия кнопки ВКЛ на входе E0.0 в режиме звезды. По прошествии установленного времени 5сек двигатель переключается в режим треугольник.

          Если нажата кнопка ВЫКЛ или сработал автомат защиты двигателя, находящиеся на входах E0.1 и E0.2, двигатель выключается. Если одновременно нажаты кнопки ВЫКЛ и ВКЛ, то двигатель остается выключенным.

          Схема включения

          Структура программы

          Описание программы

          В начале цикла программа проверяет, должен ли быть установлен вспомогательный меркер M10.0 для блокировки. Это будет сделано, если Кнопки ВЫКЛ (E0.1) и ВКЛ (E0.0) нажаты одновременно. Блокировка будет снята только, если обе кнопки снова находятся в исходном состоянии. Блокировка служит для защиты от неверных условий.

          Для процесса включения имеется вспомогательный меркер M11.0. Он будет установлен при включении, т.е. если кнопка на входе E0.0 замкнута и переключатель сети еще не сработал. Он будет также установлен, если двигатель находится в режиме звезды, т.е. переключатель сети (A0.0) и переключатель звезды (A0.1) активны. Установка вспомогательного меркера M11.0 происходит впрочем только тогда, если не разомкнуты автомат защиты двигателя (E0.2) или кнопка ВЫКЛ (E0.1), а переключатель треугольника (A0.2) неактивен.

          Выход A0.1 переключателя звезды будет установлен, если установлен вспомогательный меркер запуска M11.0, отсутствует блокировка (M10.0) и время переключения (5 сек таймера T37) еще не закончилось.

          Время переключения запускается в момент установки вспомогательного меркера запуска M11.0, в случае если отсутствует блокировка. Временной базис таймера T37 — 100 мсек, т.е. при загрузке значения 50 время переключения составит 5 сек.

          Выход A0.0 переключателя сети устанавливается, если или кнопка ВКЛ на E0.0, выход A0.1 переключателя звезды или переключатель сети уже активны и нет команды ВЫКЛ от кнопки на E0.1 или сработала защита двигателя на E0.2 и отсутствует блокировка.

          Переключатель треугольника, т.е. выход A0.2, устанавливается при активном переключателе сети и уже неактивном переключателе звезды.

          Размер программы составляет 40 слов.

          Листинг

          Основная программа

          // TITEL = ЗАПУСК ЗВЕЗДА-ТРЕУГОЛЬНИК БЕЗ ОТВЕТНОГО СООБЩЕНИЯ

          // E0.0 Кнопка вкл.

          // E0.1 Кнопка выкл. Нормально замкнута

          // E0.2 Защита двигателя Нормально замкнута

          // A0.0 Переключатель сети

          // A0.1 Переключатель звезды

          // A0.2 Переключатель треугольника

          // T37 Таймер переключения 5 сек

          // БЛОКИРОВКА

          LDN E0.1 // Кнопка Выкл нажата

          U E0.0 // Кнопка Вкл нажата

          S M10.0 ,1 // Вспомогательный меркер для блокировки

          LD E0.1 // Кнопка Выкл не нажата

          UN E0.0 // Кнопка Вкл не нажата

          R M10.0 ,1 // Блокировка снята

           

          // ВКЛЮЧЕНИЕ

          LD E0.0 // Кнопка Вкл нажата

          UN A0.0 // Нет переключателя сети

          LD A0.0 // Переключатель сети

          U A0.1 // Переключатель звезды

          OLD

          LD E0.2 // Защита двигателя OK

          U E0.1 // Кнопка ВЫКЛ не нажата

          UN A0.2 // Нет переключателя треугольника

          ULD

          = M11.0 // Вспомогательный меркер

           

          // ВКЛЮЧЕНИЕ ПЕРЕКЛЮЧАТЕЛЯ ЗВЕЗДЫ

          LD M11.0 // Вспомогательный меркер

          UN M10.0 // Нет блокировки

          UN T37 // Время переключения не закончилось

          = A0.1 // Переключатель звезды

           

          // ЗАПУСК ТАЙМЕРА ПЕРЕКЛЮЧЕНИЯ

          LDN M10.0 // Нет блокировки

          U M11.0 // Вспомогательный меркер

          TON T37,50 // Запуск таймера переключения (5 сек)

           

          // ВКЛЮЧЕНИЕ ПЕРЕКЛЮЧАТЕЛЯ СЕТИ

          LD E0.1 // Кнопка ВЫКЛ не нажата

          U E0.2 // Защита двигателя OK

          UN M10.0 // Нет блокировки

          LD E0.0 // Кнопка Вкл нажата

          U A0.1 // Переключатель звезды

          O A0.0 // Переключатель сети

          ULD

          = A0.0 // Переключатель сети

           

          // ВКЛЮЧЕНИЕ ПЕРЕКЛЮЧАТЕЛЯ ТРЕУГОЛЬНИКА

          LD A0.0 // Переключатель сети

          UN A0.1 // Переключатель звезды

          = A0.2 // Переключатель треугольника

          MEND // Конец основной программы

           

           

          P.S. Кадастровый паспорт земельного участка — это ничто иное, как выписка  из государственного кадастра недвижимости, которая содержит все  необходимые сведения об объекте недвижимости, требующиеся для  государственной регистрации прав объекта недвижимости.

           

            Реверсивный переключатель для полюсно-переключаемых асинхронных двигателей с выбором направления вращения (часть 2)

            Подпрограммы

            SBR 1 // Начало подпрограммы

            //****************VERRIEGELUNG****************************

            LD E0.0 // Медленное движение вправо

            O E0.1 // Или быстрое движение вправо

            O E0.2 // Или медленное движение влево

            O E0.3 // Или быстрое движение влево

            UN E0.4 // И нажата кнопка ВЫКЛ

            LD E0.1 // Или…

            O E0.2

            O E0.3

            U E0.0

            OLD

            LD E0.2 // Или…

            O E0.3

            U E0.1

            OLD

            LD E0.2 // Или…

            U E0.3

            OLD

            LD M1.1 // Или идет время ожидания

            OLD

            S M1.0,1 // То установить меркер блокировки

             

            ДЕБЛОКИРОВКА

            LD E0.4 // Если ни одна кнопка не нажата…

            UN E0.0

            UN E0.1

            UN E0.2

            UN E0.3

            UN M1.1

            R M1.0,1 // То блокировку снять

             

            РАЗРЕШЕНИЕ МЕДЛЕННОГО ВРАЩЕНИЯ ВПРАВО

             

            LDN E0.1 // Нет команды быстро

            LD E0.4 // Нет команды выкл

            U E0.5 // Не сработал автомат защиты двигателя

            UN A0.2 // Бит состояния медленное вращение влево не установлен

            UN A0.3 // Бит состояния быстрое вращение влево не установлен

            = M2.0 // Деблокировка медленного вращения вправо

             

            // РАЗРЕШЕНИЕ БЫСТРОГО ВРАЩЕНИЯ ВПРАВО

            LDN E0.0 // Нет команды медленно

            LD E0.4 // Нет команды выкл

            U E0.5 // Не сработал автомат защиты двигателя

            UN A0.2 // Бит состояния медленное вращение влево не установлен

            UN A0.3 // Бит состояния быстрое вращение влево не установлен

            = M2.1 // Деблокировка быстрого вращения вправо

             

            РАЗРЕШЕНИЕ МЕДЛЕННОГО ВРАЩЕНИЯ ВЛЕВО

            LDN E0.3 // Нет команды быстро

            LD E0.4 // Нет команды выкл

            U E0.5 // Не сработал автомат защиты двигателя

            UN A0.0 // Бит состояния медленное вращение вправо не установлен

            UN A0.1 // Бит состояния быстрое вращение вправо не установлен

            = M2.2 // Деблокировка медленного вращения влево

             

            РАЗРЕШЕНИЕ БЫСТРОГО ВРАЩЕНИЯ ВЛЕВО

            LDN E0.2 // Нет команды медленно

            LD E0.4 // Нет команды выкл

            U E0.5 // Не сработал автомат защиты двигателя

            UN A0.0 // Бит состояния медленное вращение вправо не установлен

            UN A0.1 // Бит состояния быстрое вращение вправо не установлен

            = M2.3 // Деблокировка быстрого вращения влево

            LD E0.0 // Команда вправо медленно

            O A0.0 // Или состояние вправо медленно

            UN M1.0 // И нет блокировки

            U M2.0 // Разрешение вправо медленно

            = A0.0 // Бит состояния Вправо медленно

            LD E0.1 // Команда вправо быстро

            O A0.1 // Или состояние вправо быстро

            UN M1.0 // И нет блокировки

            U M2.1 // Разрешение вправо быстро

            = A0.1 // Бит состояния Вправо быстро

            LD E0.2 // Команда влево медленно

            O A0.2 // Или состояние влево медленно

            UN M1.0 // И нет блокировки

            U M2.2 // Разрешение влево медленно

            = A0.2 // Бит состояния Влево медленно

            LD E0.3 // Команда влево быстро

            O A0.3 // Или состояние влево быстро

            UN M1.0 // И нет блокировки

            U M2.3 // Разрешение влево быстро

            = A0.3 // Бит состояния Влево быстро

            LD A0.4 // Определение фронта при выключении

            EU

            S M1.1,1 // Установка вспомогательного меркера для выключения

            LD M1.1

            MOVW 500,VW20 // Загрузка времени ожидания для перезапуска

            TON T33,VW20 // Пуск таймера ожидания для перезапуска

            U T33

            R M1.1,1 // Сброс всп. меркера по прошествии времени ожидания

             

            RET // Конец подпрограммы

              Реверсивный переключатель для полюсно-переключаемых асинхронных двигателей с выбором направления вращения (часть 1)

              Данный пример служит для управления асинхронным двигателем с двумя раздельными обмотками для различного числа оборотов и двумя возможными направлениями вращения. Включение двигателя производится кнопками на входах, причем в любой момент возможно переключение между большим и меньшим числом оборотов направления вращения. Двигателю необходимо примерно 5 сек, для торможения и запуска в противоположном направлении. Время ожидания индицируется посредством мигания лампы на выходе A0.5.

               

              Схема включения

              Описание программы

              Данная программа служит для управления асинхронным двигателем с двумя раздельными обмотками для различных оборотов и двумя возможными направлениями движения. Она является дополнением к контакторной схеме из примера Nо. 10. В этой программе можно дополнительно выбирать между меньшим и большим числом оборотов для каждого направления вращения.

              Включение двигателя производится кнопками на входах E0.0 для включения медленного вращения вправо, E0.1 для включения быстрого вращения вправо, E0.2 для включения медленного вращения влево и E0.3 для включения быстрого вращения влево. После включения возможно в любой момент времени произвести переключение между быстрым и медленным вращением в любом направлении. При переключении направления вращения необходимо сначала нажать кнопку ВЫКЛ. Двигателю необходимо примерно 5 сек для торможения и запуска в противоположном направлении. Время ожидания индицируется миганием лампочки на выходе A0.5. Переключатель на E0.4 служит для выключения двигателя. На вход E0.5 подключен автомат защиты двигателя, который размыкается при перегрузке двигателя и производит отключение двигателя. При отключенном двигателе горит сигнальная лампа на выходе A0.4.

              В начале цикла програмы вызывается подпрограмма ‘SBR 1’, чьей задачей является оценка сигналов на входах. Для того чтобы исключить ошибку сначала проверяется, не нажато ли два или более переключателя одновременно или закончено ли время ожидания при переключении. В этих случаях меркер блокировки M1.0 устанавливается в ‘1’, исключая тем самым деблокировку автомата защиты двигателя. Блокировка позволяет избежать неконтролируемого движения двигателя или движения в неверном направлении. Блокировка будет снята, т.е. M1.0 установится в логический ‘0’, только если все кнопки снова находятся в ненажатом положении или окончено время ожидания.

              Деблокировка двигателя для режима работы производится только если ВЫКЛючатель (нормально замкнутый) на E0.4 не нажат, автомат защиты двигателя (нормально замкнутый) на E0.5, контролирующий перегрузку двигателя, не разомкнут и двигатель не вращается в противоположном направлении (бит состояния противоположного направления не установлен). Деблокировка снимается также, если подана команда на изменение числа оборотов. Тем самым гарантируется, что два переключателя, для быстрого и медленного движения в одном направлении, не смогут быть активированы одновременно. Например, выход A0.2, который отвечает за медленное вращение влево, будет сброшен, если нажатием кнопки на E0.3 подана команда быстрого вращения влево.

              Самоподхват включенного режима работы, т.е. установка соответствующих битов состояния A0.0, A0.1 A0.2 или A0.3, возможен, если произошла деблокировка желаемого режима работы и не активна общая блокировка. Определение фронта в конце подпрограммы служит для запуска времени ожидания после выключния двигателя, с тем чтобы двигатель имел время на торможение.

              При выходе из подпрограммы биты состояния копируются на выходы с A0.0 по A0.3. Эти выходы управляют автоматами двигателя, в то время как выходы A0.4 и A0.5 служат для индикации состояния ‘ВЫКЛ’ или ‘Идет время ожидания’.

              Размер программы составляет 125 слов.

              Листинг

              Основная программа

               

              // TITEL = Полюсно-переключаемый асинхронный двигатель с двумя направлениями вращения

              //************ ВХОДЫ ****************************

              // E0.0 Медленное вращение вправо

              // E0.1 Быстрое вращение вправо

              // E0.2 Медленное вращение влево

              // E0.3 Быстрое вращение влево

              // E0.4 Кнопка ВЫКЛ (нормально замкнутый)

              // E0.5 Автомат защиты двигателя (нормально замкнутый)

              //**************** ВЫХОДЫ ***********************

              // A0.0 Переключатель медленного вращения вправо

              // A0.1 Переключатель быстрого вращения вправо

              // A0.2 Переключатель медленного вращения влево

              // A0.3 Переключатель быстрого вращения влево

              // A0.4 Сигнальная лампа ВЫКЛ

              // A0.5 Сигнальная лампа Время ожидания

               

               

                S7-200 Примеры. Реверсивный переключатель для асинхронного двигателя

                Краткое описание

                Данный пример программы служит для управления асинхронным двигателем с двумя направлениями вращения.

                Двигатель может быть запущен на движение влево нажатием кнопки на входе E0.0 или вправо нажатием кнопки на E0.1, при условии, что защитный выключатель на входе E0.3 и основной выключатель на E0.2 не нажаты. Переключить направление вращение можно только после нажатия основного выключателя и окончания времени ожидания 5 с, при этом может происходить торможение и запуск двигателя. Если обе кнопки на включение нажаты одновременно, то двигатель будет блокирован.

                 

                Описание программы включая листинг

                Сначала программа проверяет, должна ли быть включена блокировка установкой вспомогательного меркера M2.0. Это как раз тот случай когда обе кнопки, на входах E0.0 и E0.1 нажаты одновременно или если время ожидания еще не вышло. Только если обе кнопки снова находятся в отжатом состоянии и кончилось время ожидания, т.е вспомогательный меркер M2.3 сброшен, будет сброшен и блокирующий меркер M2.0.

                Разрешение на вращение влево осуществляется установкой соответствующего бита деблокировки M2.1, если ни защитный выключатель двигателя на входе E0.3 или кнопка ВЫКЛ на E0.2 (оба нормально закрытые) не нажаты, ни бит состояния для вращения вправо M1.1 не установлен. Бит состояния для вращения влево это M1.0. Деблокировка вращения вправо происходит аналогично.

                Двигатель включается, если нажата одна кнопка включения и ни бит блокировки ни бит состояния другого направления не установлены. Пуск двигателя происходит установкой соответствующего выхода и относящегося к нему бита состояния, обеспечивающего самоподхват. На выходе A0.0 срабатывает контактор левого вращения, а на выходе A0.1 правого. Кроме того, загорается сигнальная лампа режима. Сигнальная лампа движения влево подключена на A0.4, движения вправо на A0.3, а лампа состояния ВЫКЛ на A0.2.

                Если двигатель выключается, то по положительному фронту ‘ED’ устанавливается вспомогательный меркер M2.3 (процесс выключения). Если последний установлен, то запускается таймер ожидания для повторного пуска со временем работы 5 с (500*10 мс). По завершении этого времени меркер M2.3 процесса выключения сбрасывается. Во время работы таймера ожидания на выходе A0.5 мигает сигнальная лампа. В случае, если бит состояния не установлен, то на выходе A0.2 горит сигнальная лампа состояния ‘ВЫКЛ’.

                Размер программы составляет 61 слово.

                 

                // TITEL = Контакторное переключение

                // Блокировка

                LD E0.1 // Команда вправо

                U E0.0 // и команда влево

                O M2.3 // или время ожидания не кончилось

                S M2.0,1 // устанавливается блокировка

                LDN E0.0 // Нет команды влево

                UN E0.1 // нет команды вправо

                UN M2.3 // время ожидания кончилось

                R M2.0, 1 // блокировка сбрасывается

                Деблокировка движения влево

                LD E0.2 // Нет команды выключения

                U E0.3 // не сработал защитный выключатель

                UN M1.1 // бит состояния движения вправо не установлен

                = M2.1

                // Деблокировка движения вправо

                LD E0.2 // Нет команды выключения

                U E0.3 // не сработал защитный выключатель

                UN M1.0 // бит состояния движения влево не установлен

                = M2.2

                // Движение влево

                LD E0.0 // Команда влево

                O M1.0 // или состояние левого движения

                UN M2.0 // и нет блокировки

                U M2.1 // разрешение на движение влево

                = M1.0 // бит состояния движения влево

                = A0.0 // выход контактора

                = A0.4 // выход сигнальной лампы движения влево

                // Движение вправо

                LD E0.1 // Команда вправо

                O M1.1 // или состояние правого движения

                UN M2.0 // и нет блокировки

                U M2.2 // разрешение на движение вправо

                = M1.1 // бит состояния движения вправо

                = A0.1 // выход контактора

                = A0.3 // выход сигнальной лампы движения вправо

                // Определение фронта процесса выключения

                LDN M1.0 // бит состояния движения влево

                UN M1.1 // бит состояния движения вправо

                = A0.2 // выход сигнальной лампы состояния ВЫКЛ

                 

                 

                LD A0.2 // При выключении

                ED

                S M2.3,1 // Устанавливается вспомогательный меркер для

                // процесса выключения

                LD M2.3

                MOVW 500,VW20 // Загрузка времени ожидания для перезапуска

                TON T33,VW20 // Пуск таймера ожидания для перезапуска

                U T33

                R M2.3, 1 // Сброс вспомогательного меркера после времени ожидания

                // Индикация состояния ВЫКЛ, Время ожидания

                LD M2.3 // Вспомогательный меркер времени ожидания

                // процесса выключения

                U SM0.5 // Мигание 1 с

                = A0.5 // Выход сигнальная лампа время ожидания

                 

                MEND // Конец основной программы

                Различные возможности установки битов или байтов в S-200

                Данная программа описывает различные возможности занесения в области памяти определенных значений или очистки определенных областей памяти.

                В этом примере применения рассмотрены:

                Рисунок  SEQ Рисунок * ARABIC 1 Структура программы

                Описание программы вкл. листинг

                Этот пример программы описывает различные возможности занесения определенных значений в заданные биты и байты или очистки определенных областей памяти.

                Используются команды:

                FILL Устанавливает один или несколько битов

                FOR… NEXT Цикл FOR…NEXT R Сбрасывает один или несколько битов

                Размер программы составляет 55 слов.

                Основная программа

                // TITEL=FORNEXT

                // Основная программа содержит вызовы подпрограмм 0, 1 и 2.

                LD SM0.0 // Всегда в единице

                CALL 0 // Вызов подпрограммы 0

                // (FILL)

                CALL 1 // Вызов подпрограммы 1

                // (FOR…NEXT)

                CALL 2 // Вызов подпрограммы 2

                // (Reset)

                MEND // Конец основной программы

                Подпрограммы

                // Подпрограмма 0 копирует значение слова VW200 в слово VW204 и в 6 последующих слов памяти (до VW216), если установлен вход E0.0.

                SBR 0 // Подпрограмма 0

                LD E0.0 // Чтение входа E0.0

                MOVW 16#ABC3,VW200 Запись 16-рич.значения

                // ABC3 в VW200

                FILL VW200,VW204,7 Копирование значения слова VW200 в слово VW204 и шесть последующих слов памяти (до VW216)

                RET // Конец подпрограммы 0

                Подпрограмма 1 копирует следующие друг за другом числа в переменную область памяти, если установлен вход E0.1. Число выполняемых циклов определяется номерами первого (в VW10) и последнего цикла (в VW0). Текущее значение выполненных циклов находится в слове памяти VW20. Первое число, с которого надо начинать счет, загружается в аккумулятор AC0. Первый адрес, под которым надо запоминать значение,заносится в аккумулятор AC1, действующий в качестве указателя. Затем начинается выполнение циклов. К начальному значению AC0 за один цикл прибавляется 4, указатель AC1 увеличивается на следующее слово памяти, пока не будет обработан последний цикл.

                SBR 1 // Подпрограмма 1

                LD E0.1 // Чтение входа E0.1

                MOVW 10,VW0 // Номер последнего цикла в VW0

                MOVW 0,VW10// Номер первого цикла в VW10

                MOVW 0,VW20// Текущий номер цикла в VW20 (счетчик)

                MOVW 50,AC0// Начальное значение счета в аккумулятор 0

                MOVD &VB100,AC1// аккумулятор 1 (указатель памяти) указывает на байт памяти VB100

                FOR VW20,VW10,VW0 / Начало цикла

                MOVW AC0,*AC1// Сохранить текущее значение счетчика по текущ. адресам памяти

                INCD AC1 // Инкрементировать указатель памяти на 1 байт

                INCD AC1 // Инкрементировать указатель памяти на 1 байт

                +I 4,AC0 // Прибавить 4 к текущ. значению счетчика

                NEXT // Конец цикла

                RET // Конец подпрограммы 1

                // Подпрограмма 2 сбрасывает биты памяти с V100.0 до V121.7 и с V204.0 до 217.7, если установлен вход E0.2.

                SBR 2 // Подпрограмма 2

                LD E0.2 // Установка входа E0.2

                R V100.0,176// Сброс битов с V100.0 до 121.7

                R V204.0,112// Сброс битов с V204.0 до 217.7

                RET // Конец подпрограммы 2