WWW.DISS.SELUK.RU

БЕСПЛАТНАЯ ЭЛЕКТРОННАЯ БИБЛИОТЕКА
(Авторефераты, диссертации, методички, учебные программы, монографии)

 

Pages:     | 1 |   ...   | 2 | 3 || 5 | 6 |   ...   | 12 |

«Автоматизация посредством STEP 7 с использованием STL и SCL и программируемых контроллеров SIMATIC S7-300/400 (Automating with STEP 7 in STL and SCL by Hans Berger) Перевод по изданию 2-му, исправленному 2001 SIMATIC ...»

-- [ Страница 4 ] --

• Косвенная адресация посредством памяти ("Memory-indirect-addressing") означает, что адрес находится двойном слове памяти.

• Косвенная внутризонная адресация посредством регистра ("Register-indirect area-internal addressing") означает, что адрес, находящийся в адресном регистре AR1, получает приращение на величину смещения (offset) P#2,0 при выполнении • Косвенная межзонная адресация посредством регистра ("Register-indirect area-crossing addressing") означает, что адрес (включая адресную область), находящийся в адресном регистре AR1, получает приращение на величину смещения (offset) P#0,0 при выполнении оператора.

Двойные слова адресной области для данных (DBD и DID), меркеров (MD) и временных локальных данных (LD) могут использоваться для хранения адресов при косвенной адресации посредством памяти. Косвенную адресацию посредством регистра можно применять с использованием двух адресных регистров: AR1 и AR2.

При использовании языка программирования SCL адресные области состоят из поля, элементы которого доступны косвенно и отдельно.

Например, MW[index] - это обращение к слову памяти, адрес которого размещен в переменной index. Переменная index может быть изменена в процессе выполнения программы. Более подробно косвенная адресация при использовании SCL рассматривается в разделе 27.2.3 "Косвенная адресация при использовании SCL".

3.3.3 Символьная адресация переменных Символьная адресация (symbolic addressing) использует имена (символы) вместо абсолютных адресов. Вы сами можете выбирать эти имена. Такое имя должно начинаться с буквы и может содержать до 24 символов. В STL не разрешено использовать ключевые слова в качестве имен (символов).

Для того, чтобы использовать ключевые слова в качестве имен (символов) в SCL, вставьте символ решетки "#" перед таким именем.

При присвоении имен входам учитывается регистр написания символа (имеет значение, какой регистр применяется: верхний или нижний). Для имен выходов редактор использует регистр и нотацию (форму записи), которые были применены при объявлении (declaration) символа.

При символьной адресации абсолютному адресу должно быть назначено 3. SIMATIC S7-программа Символы различаются по месту назначения: глобальные символы действительны во всей программе, тогда как локальные символы действительны только в блоке, в разделе объявления переменных Глобальные символы Вы можете назначить имена в таблице символов (symbol table) • Входы, выходы, периферийные входы и периферийные выходы • Пользовательские типы данных Глобальный символ может также содержать пробелы, специальные символы и национальные символы, такие как умляут. Исключения составляют символы 00 hex, FF hex и кавычки ("). При использовании в программе имен со специальными символами Вы должны заключать имена в кавычки. В скомпилированном блоке программный редактор всегда отображает все глобальные символы в кавычках.

Вы можете использовать глобальный символ во всей программе; каждый такой символ должен быть уникальным (однозначно принадлежать одному адресу) в этой программе.

Редактирование, импортирование и экспортирование глобальных символов описано в разделе 2.5.2 "Таблица символов".

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

Локальные символы являются действующими только внутри блока, в котором они описаны. Такие же символы (такие же имена переменных) могут быть применены в ином контексте (для обозначения совершенно иных объектов) в другом блоке. Редактор отображает локальные символы (имена) с впереди стоящим символом "#". Если редактор не может отличить локальный символ от адреса Вы должны вводить этот символ с впереди стоящим символом "#".

Локальные символы доступны только в базе данных программатора PG (в автономном [offline] каталоге Blocks [Блоки]). Если эта информация отсутствует при декомпиляции, то редактор вставляет символы замены Использование символьных имен Если Вы используете символьные имена во время инкрементного программирования, то эти имена должны уже к этому времени быть присвоены абсолютным адресам. Вы можете ввести новые символические имена в таблицу символов во время инкрементного программирования и можете в дальнейшем использовать в программе.

Если вы программируете исходный текстовый файл программы, то полностью закончить процесс назначения символических имен абсолютным адресам необходимо лишь к моменту компиляции Автоматизация посредством STEP с использованием STL и SCL В случае использования массивов доступ к отдельным элементам массивов обеспечивается использованием имени массива с индексом, например, имя MSERIES[1] принадлежит первому элементу массива MSERIES. В случае программирования на STL индекс должен быть константой (INT). В случае программирования на SCL индекс может быть как целой переменной (INT), так и целым выражением (INT).

В структурах каждый элемент имени ("subname") отделяется от остальных элементов десятичной точкой, например, FRAME.HEADER.CNUM.

Компоненты пользовательских типов данных адресуются точно также как Подробная информация изложена в главе 24 "Типы данных".

Адресация данных Символьная адресация данных предполагает использование полного адреса. включая блока данных. Например, блок данных с символьным адресом MVALUES содержит переменные MVALUE1, MVALUE2 и MTIME.

Эти переменные могут быть адресованы следующим образом:



Для получения дополнительной информации по использованию адресов для доступа к данным обратитесь к разделам 18.2.2 "Адреса для доступа к данным" (STL) и 27.2.2 "Символьная адресация" (SСL).

3.4 Программирование кодовых блоков на STL 3.4.1 Структура STL-выражения STL-программа состоит из ряда отдельных выражений (statement).

пользовательской программы. Выражение содержит описание работы для CPU. На рисунке 3.6 показана общая структура STL-выражения.

3. SIMATIC S7-программа Ниже перечислены компоненты STL-выражения:

• Метка (не обязательный элемент) содержит до 4 символов, заканчивается двоеточием ":" (см. раздел "Функции перехода").

• Описание задания для CPU (такие задания, например, как load [загрузить], scan [считать], compare [сравнить] и т.д.).

• Адрес - информация, необходимая для выполнения действия (например, абсолютный адрес IW12, символьный адрес некоторой переменной ANALOGVALUE_1 или некоторой константы W#16#F001 и т. д.). Отдельные операторы не требуют задания адреса.

• Комментарий (не обязательный элемент) должен начинаться двумя косыми чертами "//" и может продолжаться до конца строки.

При вводе в исходный файл Вы должны заканчивать каждое выражение (до начала комментария, если он есть) символом "точка с запятой (";"). В STL строка может содержать не более 200 символов, а длина комментария не может быть больше 160 символов.

3.4.2 Инкрементное программирование кодовых блоков на STL В разделе 2.5 "Создание S7-программ" Вы можете найти введение в основы создания S7-программы и использование программного Создание блоков Процесс программирования блока начинается с его открытия одним из двух способов: либо двойным щелчком на блоке в окне проекта SIMATIC Manager, либо в редакторе с помощью выбора опций меню: File -> Open (Файл -> Открыть). Если блок пока не существует, Вы должны его сначала создать одним из следующих путей:

• В левой половине окна проекта SIMATIC Manager выберите объект Blocks (Блоки), создайте новый блок с помощью опций меню: Insert->S Block->… (Вставка -> S7 Block -> …). В окне свойств (Properties) блока на вкладке "General - Part 1" ("Общие - часть 1") выберите номер блока • Находясь в редакторе, с помощью опций меню: File -> New (Файл -> Создать) вызовите окно диалога с заголовком блока (номер блока, язык программирования, атрибуты блока). После закрытия диалогового окна Вы можете вводить программу этого блока.

Вы можете ввести информацию заголовка блока либо при создании блока, либо позднее, активизировав редактор, затем открыв блок и выбрав опции меню: File -> Properties (Файл -> Свойства).

В редакторе программ язык программирования устанавливается на вкладке "Create Block" ("Создать блок") в диалоговом окне, открытом с помощью опций меню: Options -> Customize (Опции -> Установки Окно блока На нижеприведенном рисунке представлен пример открытого блока STLпрограммы (см. рис. 3.7).

Автоматизация посредством STEP с использованием STL и SCL Когда открывается кодовый блок, появляется окно блока, которое само по • В верхней части окна блока отображается окно таблицы объявления переменных. Именно здесь Вы определяете внутриблочные (локальные) переменные данного блока.

• Ниже таблицы объявления переменных отображается окно программы.

В этом окне Вы вводите текст Вашей программы для блока.

• В правой части окна блока отображается окно каталога элементов программы. В STL этот каталог содержит только блоки, которые находятся в автономном (offline) каталоге Blocks (Блоки), а также уже запрограммированные экземпляры мультиэкземплярных FB и Таблица объявления переменных Таблица объявления переменных располагается выше окна программы.

Если она не видна, то поместите курсор на верхней разделительной с окном программы линии, щелкните левой кнопкой мыши, когда курсор изменит свою форму, и "потащите" курсор. Вы увидите окно таблицы объявления переменных, в которой Вы должны дать описание для локальных переменных блока (см. таблицу 3.2). Существуют типы переменных, которые не могут использоваться в некоторых типах кодовых блоков. Если Вы не используете данный тип переменных, соответствующая строка должна остаться незаполненной.

3. SIMATIC S7-программа Таблица 3.2 Типы переменных в разделе объявления переменных (Статические локальные данные) Описание переменных состоит из имени, типа данных, значения по умолчанию (если есть) и комментария (не обязательный элемент). Не всем переменным может быть назначено значение по умолчанию (например, значения по умолчанию не могут присваиваться временным локальным данным). Более подробно значения, назначаемые по умолчанию для функций и функциональных блоков, описаны в главе Порядок описаний в кодовом блоке фиксирован (как показано в таблице выше), в то же время порядок следования типов переменных произволен.

Вы можете экономно расходовать память, если будете группировать двоичные переменные в блоки по 8 или 16 штук, а переменные типа BYTE - парами. Редактор сохраняет новые переменные типов BOOL или BYTE, выделяя им байтовые участки памяти. Для всех остальных типов переменных выделяются участки памяти размером в 1 слово (начиная с Окно программы В окне программы Вы увидите (в зависимости от установок редактора, принятых по умолчанию) поля для заголовка и комментария блока и, если это первый сегмент, то поля для заголовка и комментария сегмента, а также поле для ввода программы. В разделе программы кодового блока Вы можете управлять отображением комментариев и символов (имен) с помощью опций меню: View -> Comment (Вид -> Комментарий), View -> Symbolic Representation (Вид -> Представление символов), View -> Symbol Information (Вид -> Информация о символе). Также Вы можете менять размер отображения с помощью опций меню: View -> Zoom In (Вид -> Увеличить масштаб), View -> Zoom Out (Вид -> Уменьшить масштаб) View -> Zoom Factor (Вид -> Коэффициент масштабирования).

Вы можете разделить STL-программу на сегменты. Редактор нумерует сегменты автоматически, начиная с 1. Вы можете дать каждому сегменту заголовок сегмента (network title) и комментарий сегмента (network comment). Во время редактирования Вы можете выбирать каждый сегмент непосредственно с помощью опций меню: Edit -> Go To ->...(Правка -> Перейти к ->…). Сегментирование не является обязательным приемом.

Автоматизация посредством STEP с использованием STL и SCL Для начала ввода программного кода щелкните один раз кнопкой мыши ниже поля для комментария сегмента или, если Вы установили режим отображения "Display with Comments" ("Отображать с комментариями"), тогда щелкните один раз кнопкой мыши ниже выделенного тенью поля для комментария. Перед Вами пустая рамка окна. Здесь Вы можете вводить программу в любом месте внутри этого окна. Обратитесь к разделу 3.4.1 "Структура STL-выражения" для получения информации о структуре STL-выражения.

Отделите оператор (OP-code [operator]) от адреса (операнд [operand]) одним или несколькими пробелами или одним шагом табуляции. После адреса в этой же строке Вы можете ввести две косых черты, после которых введите комментарий к выражению. Закончите выражение, нажав клавишу. Вы можете также ввести целую строку комментария, начав новую строку с двойной косой черты "//".

Новый сегмент можно запрограммировать, выбрав опции меню: Insert -> Network (Вставка -> Сегмент). При этом редактор вставляет пустой сегмент после выбранного сегмента.

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

Вы можете вызывать таблицу символов для выбора из нее символьных имен с помощью опций меню: Insert -> Symbol (Вставка -> Символ).

После вызова таблицы символов требуемый символ переносится в программу после щелчка на нем кнопкой мыши.

При инкрементном программировании Вы также можете вносить новые символьные имена в таблицу символов или корректировать имена, ранее в нее внесенные. Вы можете вызывать таблицу символов целиком с помощью опций меню: Option -> Symbol Table (Опции -> Таблица символов), также Вы можете вызывать одну строку из таблицы символов для редактирования с помощью опций меню: Edit -> Symbol (Правка -> Символ). После редактирования или ввода нового символьного имени Вы можете использовать его, продолжив ввод своей программы.

Нет необходимости завершать блок специальным выражением. Тем не менее, Вы можете запрограммировать последний "пустой" сегмент с заголовком "Block End" ("Конец блока"), облегчая тем самым зрительное восприятие программы (это может быть полезно в случае особо длинных Если с помощью редактора открывается ранее скомпилированный блок, этот блок "декомпилируется", т.е. для него генерируется STL-код. Для этого редактор использует разделы программы в базе данных программатора PG, которые не совсем соответствуют программе, например, в плане символов, комментариев и меток перехода. Если нужная информация в базе данных программатора PG отсутствует во время декомпиляции программы, редактор использует подставленные символы (substitute symbols).

Вы можете в редакторе создать новые блоки или открыть и отредактировать существующие без необходимости перехода в утилиту Каталог элементов программы Если каталог элементов программы не видим, активизируйте его с помощью опций меню: View -> Catalog (Вид -> Каталог).

3. SIMATIC S7-программа Каталог элементов программы располагается в своем собственном окне в правой части окна редактора. Каталог можно убрать с экрана, если дважды щелкнуть кнопкой манипулятора "мышь" на заголовке окна Каталог элементов программы поддерживается при программировании на языках LAD и FBD, обеспечивая доступные графические элементы. При программировании на языке STL этот каталог показывает только блоки, которые находятся в автономном (offline) каталоге Blocks (Блоки), а также уже запрограммированные экземпляры мультиэкземплярных FB и ориентированное на создание исходных файлов В разделе 2.5 "Создание S7-программ" Вы можете найти введение в основы создания S7-программы и использование программного редактора. Процесс программирования блока, ориентированный на создание исходных файлов, начинается с создания пустого файла исходной программы в SIMATIC Manager (см. раздел 2.5.3 "Редактор STLпрограмм [STL Program Editor] под подзаголовком "Программирование, ориентированное на создание исходных файлов").

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

программировании блоков, а также порядок их использования.

Заголовок блока Вы должны запрограммировать свойства блока в его заголовке после указания типа блока и перед разделом объявления переменных. Вся информация в заголовке блока опциональна (optional); Вы можете пропустить или отдельные характеристики, или все характеристики без исключения. Для получения информации по описанию и назначению свойств блоков обратитесь к разделу 3.2.3 "Свойства блоков".

С помощью ключевого слова "TITLE =" сразу же после строки с указанием типа блока Вы можете ввести заголовок блока длиной до 64 символов. Вы можете вслед за тем добавить комментарий в одной или нескольких строках, начинающихся двойной косой чертой. Комментарий блока может Описание переменных внутриблочных переменных, т.е. таких переменных, которые Вы применяете только в этом блоке. Вы не можете использовать любые типы переменных в любом блоке (см. таблицу 3.3). Если Вы не используете какие-либо типы переменных, пропустите соответствующие описания, Описание переменной состоит из имени, типа данных, значения по умолчанию (если есть) и комментария переменной (необязательный Quantity : INT := +500; //Units per batch (единиц на пакет) Автоматизация посредством STEP с использованием STL и SCL Таблица 3.3 Ключевые слова для программирования кодовых блоков на STL Блок Организационный блок Функциональный блок Функция Тип блока ORGANIZATION_BLOCK FUNCTION_BLOCK

VAR_OUTPUT VAR_OUTPUT

VAR_TEMP VAR_TEMP VAR_TEMP

BEGIN BEGIN BEGIN

NETWORK NETWORK NETWORK

//Комментарий строки //Комментарий строки //Комментарий строки

NETWORK NETWORK NETWORK

Конец блока END_ORGANIZATION_

END_FUNCTION_BLOCK END_FUNCTION

[Block end] BLOCK Не всем переменным могут быть назначены значения по умолчанию (не могут значения по умолчанию назначаться, например, для временных локальных данных). Назначения по умолчанию для функций и функциональных блоков детально описаны в главе 19 "Параметры Порядок описаний в кодовых блоках является регламентированным (см.

таблицу 3.3), в то же время порядок следования типов переменных в разделе описания переменных произволен, при этом порядок следования типов переменных влияет (с учетом типов данных) на расходование памяти. В главе 24 "Типы данных" показано, как оптимизировать распределение памяти, правильно планируя порядок размещения 3. SIMATIC S7-программа Раздел программы Раздел программы кодового блока начинается с ключевого слова BEGIN и заканчивается ключевым словом END_xxx, в котором xxx заменяется, в FUNCTION_BLOCK или FUNCTION. Ключевое слово END_xxx заменяет И в ключевых словах, и в тексте программы редактор различает, какой регистр используется (верхний или нижний). Подробнее о синтаксисе выражений Вы можете прочитать в разделе 3.4.1 "Структура STLвыражения". OP-код (оператор) может быть отделен от адреса (операнд) одним или несколькими пробелами или шагами табуляции. Для улучшения читаемости исходного текста программы Вы можете оставлять один или несколько пробелов (и/или шагов табуляции) между словами. Вы должны заканчивать каждое выражение точкой с запятой ";". После точки с запятой Вы можете записать комментарий, который должен начинаться с двойной косой черты "//". Комментарий может продолжаться до конца строки. Вы можете помещать несколько выражений в одной строке, разделяя их точкой с запятой ";". Вы также можете записывать комментарии с начала строки, помещая в начале строки двойную косую черту "//". Строка комментария не может содержать более 160 символов;

она не может содержать символов табуляции и непечатаемых символов.

Для улучшения читаемости и логики программы Вы можете разбить программу блока на сегменты (network). В графических языках (с графической интерпретацией) такое разбиение обязательно, в языке STL - необязательно. Сегменты в STL не имеют функционального назначения;

они используются здесь просто для разбиения программы на большее количество логически связанных частей и для улучшения ее читаемости, а также чтобы упростить и сделать более эффективным написание комментариев. В очень больших программах сегментирование программы дает преимущество, заключающееся в том, что возможен прямой доступ к сегментам в скомпилированном блоке, что способствует быстрому доступу к отдельным точкам в программе посредством опций: Edit -> Go To ->... (Правка -> Перейти к->…). Так, Вы можете задавать номер сегмента или номер строки, относящийся к началу сегмента.

Сегменты начинаются с ключевого слова NETWORK; ключевое слово "TITLE=" в следующей строке позволяет задавать сегменту заголовок длиной до 64 символов. Строка комментариев, следующая сразу за заголовком, образует комментарий сегмента, вмещающий до 18 Кбайт информации. Редактор STL нумерует сегменты автоматически, начиная с номера 1. В каждом блоке может находиться до 999 сегментов. Всего пользователю доступно 64 Кбайта памяти для комментариев блока и Порядок блоков при программировании, ориентированном на создание исходных файлов программы Для вызова блока редактор требует информацию из заголовка блока, заданные параметры блока, заявленный тип, а также тип данных запрограммировать вызываемые функции и функциональные блоки, то есть Вы должны начать программирование программы с блоков "самого нижнего уровня" (имеется в виду положение блоков относительно начала Автоматизация посредством STEP с использованием STL и SCL Однако, достаточно запрограммировать заголовки блоков и задать их параметры (то есть задать описание интерфейса ["interface description"]), чтобы не было ошибки при вызове блока. В дальнейшем Вы можете снабдить этот "интерфейс" программой, Однако необходимо сохранять без изменения интерфейс уже вызванного блока! Иначе редактор выдаст сообщение о конфликте временных меток при вызове блока.

В случае большой пользовательской программы Вы будете, очевидно, разбивать исходный файл программы на отдельные легкоуправляемые файлы, например, на "стандартные подпрограммы", которые можно использовать неоднократно по всей программе, технологически- или функционально-законченные подпрограммы и главную программу (main program), которая содержит, как правило, организационные блоки. При создании отдельных исходных файлов, Вы должны следить за порядком компилирования, для соблюдения правил вызовов блоков, приведенных выше. Рекомендуется использовать следующий порядок компилирования:

• Пользовательские типы данных UDT • Функции и функциональные блоки, начиная с блоков самого низкого • Экземплярные блоки данных (эти блоки могут также быть расположены непосредственно за назначенным функциональным блоком) Пример функционального блока с экземплярным блоком данных На рисунке 3.8 показан пример функционального блока со статическими локальными данными, за которым следует экземплярный блок данных, связанный с этим функциональным блоком.

3.5 Программирование кодовых блоков на SCL 3.5.1 Структура SCL-выражения SCL-программа состоит из ряда отдельных выражений (statement).

Выражение - это наименьшая самостоятельная единица программы пользователя. Выражение содержит описание работы для CPU. На рисунке 3.9 показаны несколько примеров SCL-выражений.

В составе SCL-выражения можно выделить следующие компоненты:

• Метка перехода (необязательный элемент), содержащая до символов и заканчивающаяся двоеточием ":". Метки перехода должны • Инструкция, описывающая задание для CPU (например, присвоение значений, оператор управления и т.д.) • Комментарий (необязательный элемент), начинающийся двойной косой чертой "//", может продолжаться до конца строки и содержать только печатаемые символы (кроме табуляции).

Каждое SCL-выражение должно завершаться точкой с запятой ";" (перед комментарием). SCL-выражение может содержать до 126 символов.

3. SIMATIC S7-программа FUNCTION_BLOCK V_Memory TITLE = Intermediate buffer for 4 values //В заголовке: промежуточный буфер на 4 значения //Пример блока FB с параметрами и статическими локальными данными на STL AUTHOR : Berger FAMILY : STL_Book VERSION : 01. VAR_INPUT Transfer : BOOL := FALSE;//Пересылка положительного фронта сигнала Input_value : REAL := 0.0; //в формате данных REAL (дробное число) END_VAR VAR_OUTPUT Output_value : REAL := 0.0; //в формате данных REAL (дробное число) END_VAR VAR Valuel : REAL := 0.0; //первое сохраненное значение в формате данных REAL Value2 : REAL := 0.0; //второе значение Value3 : REAL := 0.0; //третье значение Value4 : REAL := 0.0; //четвертое значение Edge_memory_bit : BOOL := FALSE;//меркер фронта передаваемого сигнала END_VAR BEGIN

NETWORK

TITLE = Program for transfer and output //Передача и вывод имеют место, если в Transfer положительный фронт сигнала A Transfer; // если Transfer устанавливается в значение "l" FP Edge_memory_bit; // RLO устанавливается в "1" вслед за FP JCN End; // переход, если нет положительного фронта //Передача значений, начиная с последнего T Output_value; //Передача последнего значения L Input_value; //Передача входного значения End: BE;

END FUNCTION BLOCK

DATA_BLOCK Values TITLE = Instance data block for "V_Memory" //Пример экземплярного блока данных для FB "V_Memory" AUTHOR : Berger FAMILY : STL_Book NAME : V_MEM_DB VERSION : 01. V_Memory //экземпляр для FB "V_Memory" BEGIN Valuel := 1.0; //Индивидуальные присвоения для Value2 := 1.3; //отдельных значений END_DATA_BLOCK Рис. 3.8 Пример программирования функционального STL-блока со связанным экземпляром блока данных Автоматизация посредством STEP с использованием STL и SCL Value Assignments (присвоение значений) Power := Voltage * Current;

TooLarge := Volt_Act > Volt_Set;

Switch_on := Manual_on OR Auto_on;

Control Statements (операторы управления) IF Input_value > Maximum THEN Delimiter := Maximum;

ELSIF Input_value < Minimum THEN Delimiter := Minimum;

ELSE Delimiter := Input_value;

END_IF;

FOR i := 1 TO 32 DO Measure_value[i] := 0;

END_FOR;

Function Calls (вызовы функций) Result := Delimiter( Input_value:= Actual_value, Minimum := Lower_limit, Maximum := Upper_limit) Рис. 3.9 Примеры STL-выражений 3.5.2 Программирование кодовых SCL-блоков В разделе 2.5 "Создание S7-программ" Вы можете найти введение в основы создания S7-программы и использование программного Процесс программирования блока начинается с создания пустого файла исходной программы в SIMATIC Manager (см. раздел 2.5.4 "Редактор SCLпрограмм [SCL Program Editor] под подзаголовком "Программирование исходного SCL-файла").

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

программировании блоков, а также порядок их использования.

Заголовок блока Вы должны запрограммировать свойства блока в его заголовке после указания типа блока и перед разделом объявления переменных. Вся информация в заголовке блока опциональна (optional); Вы можете пропустить или отдельные характеристики, или все характеристики без исключения. Для получения информации по описанию и назначению свойств блоков обратитесь к разделу 3.2.3 "Свойства блоков".

С помощью ключевого слова "TITLE =" сразу же после строки с указанием типа блока Вы можете ввести заголовок блока длиной до 64 символов. Вы можете вслед за тем добавить комментарий в одной или нескольких строках, начинающихся двойной косой чертой "//". Комментарий блока может иметь размер до 18 Кбайт.

3. SIMATIC S7-программа Таблица 3.4 Ключевые слова для программирования кодовых блоков на SCL Блок Организационный блок Функциональный блок Функция

FUNCTION_BLOCK

Тип блока ORGANIZATION_BLOCK

KNOW_HOW_PROTECT KNOW_HOW_PROTECT

Заголовок [Header]

VAR_OUTPUT VAR_OUTPUT

VAR_TEMP VAR_TEMP VAR_TEMP

CONST CONST CONST

END_CONST END_CONST END_CONST

LABEL LABEL LABEL

END_LABEL END_LABEL END_LABEL

//Комментарий строки //Комментарий строки //Комментарий строки Программа [Program] (*Комментарий блока … (*Комментарий блока … (*Комментарий блока … …Комментарий блока*) …Комментарий блока*) …Комментарий блока*) Конец блока END_ORGANIZATION_ END_FUNCTION_BLOCK

END_FUNCTION

[Block end] BLOCK Локальные данные под ключевым словом VAR в SCL-функции FC используются как временные локальные данные (VAR_TEMP).

Не требуется в SCL.

Альтернативный вариант функциональному блоку: FUNCTION_BLOCK и END_FUNCTION_BLOCK.

Автоматизация посредством STEP с использованием STL и SCL Описание переменных внутриблочных переменных, т.е. таких переменных, которые Вы применяете только в этом блоке. Вы не можете использовать любые типы переменных в любом блоке (см. таблицу 3.4). Если Вы не используете какие-либо типы переменных, пропустите соответствующие описания, включая ключевые слова.

Описание переменной состоит из имени, типа данных, значения по умолчанию (если есть) и комментария переменной (необязательный Quantity : INT := +500; //Units per batch (единиц на пакет) При описании переменных допускается группировать переменные одного типа в одной строке, например:

Value1, Value2, Value3, Value4 : INT;

Не всем переменным могут быть назначены значения по умолчанию (не могут значения по умолчанию назначаться, например, для временных локальных данных). Назначения по умолчанию для функций и функциональных блоков детально описаны в главе 19 "Параметры Порядок описаний в кодовых блоках является регламентированным (см.

таблицу 3.4), в то же время порядок следования типов переменных в разделе описания переменных произволен, при этом порядок следования типов переменных влияет (с учетом типов данных) на расходование памяти. В главе 24 "Типы данных" показано, как оптимизировать распределение памяти, правильно планируя порядок размещения При программировании на SCL Вы можете объявлять константы, то есть можно назначать символическое имя фиксированным значениям.

Если в SCL-программе Вы используете метки перехода, то Вы также Раздел программы Раздел программы кодового SCL-блока может начинаться с ключевого слова BEGIN (опционально) и заканчивается ключевым словом END_xxx, в котором xxx заменяется, в зависимости от типа блока, на ORGANIZATION_BLOCK, FUNCTION_BLOCK или FUNCTION. Ключевое слово END_xxx заменяет Block End (BE).

И в ключевых словах, и в тексте программы редактор различает, какой регистр используется (верхний или нижний). Подробнее о синтаксисе выражений Вы можете прочитать в разделе 3.5.1 "Структура SCLвыражения". OP-код (оператор) может быть отделен от адреса (операнд) одним или несколькими пробелами или шагами табуляции. Для улучшения читаемости исходного текста программы Вы можете оставлять один или несколько пробелов (и/или шагов табуляции) между словами.

Вы должны заканчивать каждое выражение точкой с запятой ";". После точки с запятой Вы можете записать комментарий, который должен начинаться с двойной косой черты "//". Комментарий может продолжаться до конца строки. Вы можете помещать несколько выражений в одной строке, разделяя их точкой с запятой ";".

3. SIMATIC S7-программа SCL-блок должен содержать по крайней мере одно SCL-выражение (один знак точки с запятой ";"). SCL-программа не имеет сегментов в отличие от Вы также можете записывать комментарии с начала строки, помещая в начале строки двойную косую черту "//". Строка комментария не может содержать более 160 символов; она не может содержать символов табуляции и непечатаемых символов.

В SCL Вы можете создавать комментарий блока, который может занимать несколько строк. Он начинается открывающей скобкой и звездочкой "(*" и заканчивается звездочкой и закрывающей скобкой "*)". Комментарий блока может также помещаться внутри SCL-выражения; однако он не может "разрывать" символических имен или констант (исключение: строка Порядок блоков при программировании, ориентированном на создание исходных файлов программы Для вызова блока редактор требует информацию из заголовка блока, заданные параметры блока, заявленный тип, а также тип данных запрограммировать вызываемые функции и функциональные блоки, то есть Вы должны начать программирование программы с блоков "самого нижнего уровня" (имеется в виду положение блоков относительно начала Однако, достаточно запрограммировать заголовки блоков и задать их параметры (то есть задать описание интерфейса ["interface description"]), чтобы не было ошибки при вызове блока. В дальнейшем Вы можете снабдить этот "интерфейс" программой, Однако необходимо сохранять без изменения интерфейс уже вызванного блока! Иначе редактор выдаст сообщение о конфликте временных меток при вызове блока.

В случае большой пользовательской программы Вы будете, очевидно, разбивать исходный файл программы на отдельные легкоуправляемые файлы, например, на "стандартные подпрограммы", которые можно использовать неоднократно по всей программе, технологически- или функционально-законченные подпрограммы и главную программу (main program), которая содержит, как правило, организационные блоки. При создании отдельных исходных файлов, Вы должны следить за порядком компилирования, для соблюдения правил вызовов блоков, приведенных Рекомендуется использовать следующий порядок компилирования:

• Функции и функциональные блоки, начиная с блоков самого низкого • Экземплярные блоки данных (эти блоки могут также быть расположены непосредственно за назначенным функциональным блоком) Пример функционального блока с экземплярным блоком данных На рисунке 3.10 показан пример функционального блока со статическими локальными данными, за которым следует экземплярный блок данных, связанный с этим функциональным блоком.

Автоматизация посредством STEP с использованием STL и SCL FUNCTION_BLOCK V_Memory TITLE = 'Intermediate buffer for 4 values' //В заголовке: промежуточный буфер на 4 значения //Пример блока FB с параметрами и статическими локальными данными на SCL AUTHOR : Berger FAMILY : SCL_Book NAME : Memory VERSION : 01. VAR_INPUT Transfer : BOOL := FALSE;//Пересылка положительного фронта сигнала Input_value : REAL := 0.0; //в формате данных REAL (дробное число) END_VAR VAR_OUTPUT Output_value : REAL := 0.0; //в формате данных REAL (дробное число) END_VAR VAR Valuel : REAL := 0.0; //первое сохраненное значение в формате данных REAL Value2 : REAL := 0.0; //второе значение Value3 : REAL := 0.0; //третье значение Value4 : REAL := 0.0; //четвертое значение Edge_memory_bit : BOOL := FALSE;//меркер фронта передаваемого сигнала END_VAR BEGIN //Передача и вывод имеют место, если в Transfer положительный фронт IF Transfer = 1 AND Edge_memory_bit = THEN Output_value := Value4;

//Передача начинается с последнего значения Value4 := Value3;

Value3 := Value2;

Value2 := Valuel;

Valuel := Input_value;

Edge_memory_bit := Transfer; //обновление меркера, даже ELSE Edge_memory_bit := Transfer; //если нет фронта END_IF;

END FUNCTION BLOCK

DATA_BLOCK Values TITLE = 'Instance data block for "V_Memory" //Пример экземплярного блока данных для FB "V_Memory" AUTHOR : Berger FAMILY : SCL_Book NAME : V_MEM_DB VERSION : 01. V_Memory //экземпляр для FB "V_Memory" BEGIN Valuel := 1.0; //Индивидуальные присвоения для Value2 := 1.3; //отдельных значений END_DATA_BLOCK Рис. 3.10 Пример программирования функционального SCL-блока со связанным экземплярным блоком данных 3. SIMATIC S7-программа 3.6 Программирование блоков данных В разделе 2.5 "Создание S7-программ" Вы можете найти введение в основы создания S7-программы и использование программного Блоки данных программируются на языках программирования STL и SCL таким же образом, что и кодовые блоки. Для инкрементного программирования Вы будете использовать редактор STL-программ. Для программирования, ориентированного на создание исходных текстовых файлов программ используются как редактор STL-программ, так и 3.6.1 Инкрементное программирование блоков данных Создание блоков Процесс программирования блока начинается с его открытия одним из двух способов: либо двойным щелчком на блоке в окне проекта SIMATIC Manager, либо в редакторе STL-программ с помощью выбора опций меню:

File -> Open (Файл -> Открыть). Если блок пока не существует, Вы должны его сначала создать одним из следующих путей:

• В левой половине окна проекта SIMATIC Manager выберите объект Blocks (Блоки), создайте новый блок данных с помощью опций меню:

Insert -> S7 Block -> Data Block (Вставка -> S7 Block -> Блок данных). В окне свойств (Properties) блока на вкладке "General - Part 1" ("Общие часть 1") выберите номер блока. Язык программирования (creation language) установлен как "DB". Вы можете ввести остальные свойства • Находясь в редакторе, с помощью опций меню: File -> New (Файл -> Создать) вызовите окно диалога, в котором Вы можете задать требуемый блок в окне "Object name" ("Имя объекта"). После закрытия диалогового окна Вы можете вводить программу этого блока.

Вы можете ввести информацию заголовка блока либо при создании блока, либо позднее, активизировав редактор, затем открыв блок и выбрав опции меню: File -> Properties (Файл -> Свойства).

Типы блоков данных Когда Вы впервые открываете новый блок данных, Вы увидите окно "New Data Block" ("Новый блок данных"); теперь Вы должны решить, какой тип назначать для создаваемого блока.

Вы можете назначить блоку данных один из трех следующих типов, щелкнув кнопкой манипулятора "мышь" по одному из них:

При выборе данной опции создается блок глобальных данных; в данном случае Вы должны объявить назначенные адреса данных при • "Data block with assigned user-defined data type" ("Блок данных При выборе данной опции создается блок данных пользовательского типа; в данном случае Вы должны объявить структуру данных Автоматизация посредством STEP с использованием STL и SCL • "Data block with assigned function block" ("Блок данных с назначением При выборе данной опции создается экземплярный блок данных; в данном случае Вы должны объявить структуру данных для пересылки в соответствующий функциональный блок.

Окно блока На нижеприведенном рисунке представлен пример открытого блока Рис.3.11 Пример открытого блока данных (Declaration View [вид Вы можете выбирать один из двух видов окна:

• Declaration View (вид объявления данных) При выборе данной опции Вы вводите назначенные адреса данных, задаете тип данных и определяете начальные значения.

• Data View (вид фактических значений данных) При выборе данной опции редактор отображает фактические значения данных, которые Вы можете редактировать.

При программировании блока глобальных данных Вы можете задать для каждого адреса начальное значение. Переменные имеют стандартное значение, принимаемое по умолчанию, равное нулю (0), наименьшему значению или пробелу (blank), в зависимости от типа данных.

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

Блок, создаваемый из данных пользовательского типа UDT, принимает в качестве начальных значений данных значения, принятые по умолчанию, 3. SIMATIC S7-программа Редактор может отображать блок данных в двух видах:

Declaration View (вид объявления данных: View -> Declaration View [Вид -> При использовании данного вида Вы можете определять адреса данных, кроме того Вы можете наблюдать переменные в том виде, который Вы определили для них, например, поле или пользовательский тип данных Data View (вид фактических значений данных: View -> Data View [Вид -> Вид фактических значений данных]) При использовании данного вида редактор отображает каждую переменную и каждый компонент поля или структуры индивидуально.

Данный вид обеспечивает дополнительно отображение столбца "Actual value" ("Фактическое значение"). Фактическое значение адреса данных это то значение, которое это адрес имеет или будет иметь в основной (main) памяти CPU. Редактор использует здесь начальное значение в качестве значения по умолчанию.

Вы можете модифицировать фактические значения отдельно для каждого Пример: допустим Вы создаете несколько экземплярных блоков данных для функционального блока. Тем не менее, Вам необходимо для каждого вызова функционального блока (для каждой пары FB/DB) иметь слегка отличающийся в предустановках отдельный экземплярный блок данных.

Вы можете редактировать каждый блок данных, выбрав опции: View -> Data View (Вид -> Вид фактических значений данных) и затем задавая значения, действительные только для данного блока данных, в столбце "Actual value" ("Фактическое значение"). С помощью опций меню: Edit -> Initialize Data Block (Правка -> Инициализировать блок данных) Вы можете вновь вернуть начальные значения данным этого блока.

3.6.2 Программирование блоков данных, ориентированное на создание исходных файлов При создании исходных файлов блоков данных Вы должны придерживаться структуры или порядка, показанного в таблице 3.5.

Данная таблица регламентирует использование ключевых слов при программировании блоков данных. Это касается как исходных файлов STL-программ, так и исходных файлов SCL-программ.

Заголовок блока Вы должны запрограммировать свойства блока в его заголовке после указания типа блока и перед разделом объявления переменных. Вся информация в заголовке блока опциональна (optional); Вы можете пропустить или отдельные характеристики, или все характеристики без исключения. Для получения информации по описанию и назначению свойств блоков обратитесь к разделу 3.2.3 "Свойства блоков".

С помощью ключевого слова "TITLE =" сразу же после строки с указанием типа блока Вы можете ввести заголовок блока длиной до 64 символов. Вы можете вслед за тем добавить комментарий в одной или нескольких строках, начинающихся двойной косой чертой. Комментарий блока может Автоматизация посредством STEP с использованием STL и SCL Таблица 3.5 Ключевые слова для программирования блоков данных

KNOW_HOW_PROTECT KNOW_HOW_PROTECT

READ_ONLY READ_ONLY

UNLINKED UNLINKED

STRUCT

Описание [Declaration]

BEGIN BEGIN BEGIN

ИнициаИмя := Значение по (имя := Значение по (имя := Значение по лизация [Initialization] Конец блока

END_DATA_BLOCK END_DATA_BLOCK END_DATA_BLOCK

[Block end] Описание переменных внутриблочных переменных, т.е. таких переменных, которые Вы применяете только в этом блоке. Вы можете объявить блок данных как блок глобальных данных с отдельными ("individual") переменными, как блок глобальных данных с UDT и как экземплярный блок данных.

Описание переменной в блоке глобальных данных состоит из имени, типа данных, значения по умолчанию (если есть) и комментария переменной Всем переменным могут быть назначены значения по умолчанию.

Порядок следования переменных в разделе описания переменных произволен, при этом порядок следования типов переменных влияет (с учетом типов данных) на расходование памяти. В главе 24 "Типы данных" представлены требования к памяти для разных типов переменных. Из раздела 26.2 "Хранение данных в переменных" Вы можете получить информацию о том, как переменные хранятся в блоках данных. Вы можете оптимизировать распределение памяти, правильно планируя 3. SIMATIC S7-программа Если Вы не назначите других значений по умолчанию для переменных, редактор запишет в них нулевые значения (0), минимальные значения или заполнит их пробелами (blank), в зависимости от типа данных.

Блок, создаваемый из данных пользовательского типа UDT, состоит только из UDT. Вы можете использовать абсолютные адреса (например, UDT 51) или символьные адреса (например, "Frame header").

Экземплярный блок данных, генерирующийся для функционального блока, принимает в качестве начальных значений данных только значения из раздела объявления переменных этого FB или с абсолютной, или с Инициализация блока данных Раздел инициализации блока данных начинается с ключевого слова BEGIN и заканчивается ключевым словом END_DATA_BLOCK. Даже если Вы не назначаете значения по умолчанию для переменных в разделе инициализации, Вы должны ввести эти ключевые слова.

Значения, которые Вы определили в разделе инициализации блока данных соответствуют фактическим (actual) значениям при инкрементном программировании. При компилировании блока данных значения, принятые по умолчанию (default) для переменных в разделе инициализации блока, становятся начальными (initial) значениями этих переменных, а начальные значения становятся фактическими (actual) значениями. Если блок данных загружается в CPU, начальные (initial) значения пересылаются в загрузочную (load) память, а фактические (actual) значения пересылаются в рабочую (work) память CPU (см. раздел 2.6.5 "Обработка блоков" пункт "Блоки данных в автономном (offline)/в интерактивном (online) режимах").

Если Вы не определили начальные значения для переменных, редактор будет использовать начальные значения как фактические. Если Вы принимаемыми по умолчанию, в разделе объявления переменных, Вы можете переписать (заменить - "overwrite") эти значения, принимаемые по умолчанию, в разделе инициализации.

Это же касается экземплярных блоков данных, которые назначены функциональным блокам (со своими значениями, принимаемыми по умолчанию) как структуры данных. Здесь Вы можете сформировать фактические (actual) значения по отдельности для каждого экземпляра (для вызова функционального блока с конкретным блоком данных).

3.7 Переменные и константы 3.7.1 Общие замечания по поводу переменных Переменная - это величина особого формата (см. рис. 3.12). Простые переменные состоят из адреса (например, адрес входа input 5.2) и типа данных (например, BOOL для дискретного [двоичного] значения). Адрес, в свою очередь, содержит идентификатор адреса (такой как I для входа input) и указание абсолютного месторасположения (такое, например, как 5.2, что означает 2-ой бит 5-ого байта). Вы можете также использовать для доступа к адресу или переменной символьное имя, назначив для этого адреса имя (символ) в таблице символов (Symbol Table).

Автоматизация посредством STEP с использованием STL и SCL Бит данных типа BOOL адресуется как двоичный адрес (binary address) или двоичный операнд (binary operand). Адреса, содержащие один, два или четыре бита или переменные соответствующих типов называются численными операндами (digital operand).

Переменные, объявленные внутри блока, являются внутриблочными (local - локальными) переменными. К ним относятся параметры блока, статические и временные локальные данные и даже адреса данных в блоках глобальных данных. Если локальные переменные являются переменными простого типа, они также могут быть доступны как операнды (например, статические локальные данные - как DI операнды, временные локальные данные - как L операнды, и данные в блоках глобальных Тем не менее, локальные переменные могут быть сложных типов (например, такие переменные как структура или массив). Переменные этих типов требуют для размещения памяти больше, чем 32 бита, так что они не могут быть, например, загружены в аккумулятор. И по этой же причине они не могут быть адресованы с помощью обычного ("normal") STL-выражения. Существуют специальные функции для обработки таких переменных, такие как IEC-функции, которые поставляются в виде стандартной библиотеки с ПО STEP 7 (Вы можете создавать переменные сложных типов в параметрах блоков такого же типа).

Если переменные сложного типа содержат компоненты простого типа, то эти компоненты могут расматриваться, как если бы они были отдельными переменными (например, Вы можете загрузить в аккумулятор элемент массива, состоящего из 30 значений целого (INT) типа, и в дальнейшем обрабатывать его).

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

3. SIMATIC S7-программа 3.7.2 Общие замечания по поводу типов данных Тип данных обуславливает характеристики данных, особенно это касается представления содержания переменной и диапазона допустимых для нее значений. STEP 7 предусматривает предопределение типов данных. Вы можете комбинировать типы данных, формируя пользовательске типы данных (User Data Type - UDT). Типы данных доступны в базовом пакете (Global Basis) и могут использоваться в каждом блоке.

В данном разделе приводится обзор всех типов данных. В разделе также содержится краткое введение в простые типы данных. Эти знания помогут Ниже в таблице 3.6 приведен обзор типов данных в STEP 7.

Таблица 3.6 Классификация типов данных Elementary Data Types Complex Data Types User Data Types Parametr Data Types (Простые типы (Сложные типы (Пользовательские (Типы данных для WORD, INT, DATE, STRING, DWORD, DINT, REAL, ARRAY, S5TIME, TIME, TOD STRUCT одного двойного слова (DT, STRING) которые могут быть слова (32 бита) или состоящие из адресованы по имени Разрешенные во всех глобальные данные и экземплярные данные), в связи адресных областях как временные локальные данные и как с параметрами 3.7.3 Простые типы данных Переменные простых типов данных могут быть отредактированы непосредственно в редакторе STL-программ, так как их значения могут быть занимать от одного до 32 битов в памяти. При присвоении значений в программе переменные простых типов данных также могут быть отредактированы непосредственно в SCL-редакторе.

Переменные простых типов могут быть предопределены фиксированными значениями (константами) на этапе объявления переменных.

Автоматизация посредством STEP с использованием STL и SCL Здесь записи в STL-программе (см. табл. 3.7) и записи в SCL-программе (см. табл. 3.8) отличаются друг от друга. Для многих типов данных существует больше одной формы для записи константы и все эти записи одинаково правомочны в употреблении (например, можно использовать форму записи TIME# или форму записи T#).

Запись константы в STL Язык STL не накладывает ограничений на обработку (на операторы) типов данных (за исключением различий для двоичных [binary] и численных [digital] операндов). Функции сравнения, такие например, как сравнение содержимого аккумуляторов, не зависят от типа переменных, содержащихся в аккумуляторах.

Запись константы в SCL При использовании языка SCL Вы можете обрабатывать переменные только разрешенных типов данных. Константы в SCL не принимают своего типа данных, пока они не будут поставлены в соответствие оператору.

Пример: в SCL константа 12345 относится к классу типов ANY_NUM, так как в зависимости от применения она будет иметь тип INT или DINT, или REAL. С помощью "определяющих тип" ("type-defined") записей Вы можете назначить отдельный тип данных непосредственно константе, например, с помощью определения DINT#12345 вы задаете для константы тип DINT.

3.7.4 Сложные типы данных Вы можете использовать сложные типы данных (табл. 3.9) для работы с переменными в блоках данных или в L-стеке, а также для работы с Переменные сложных ("complex") типов, которые назначаются параметрам блоков, могут быть только полными ("complete") переменными; отдельные части переменных сложных типов не могут быть обработаны с помощью обычных ("normal") операторов. Тем не менее с помощью прямого доступа к переменным ("direct variable access") и с помощью косвенной адресации STL обеспечивает способ управления переменными, если известна их внутренняя структура.

Кроме того существуют IEC-функции, с помощью которых можно обрабатывать переменные DT и STRING (например, объединение двух символьных строк в одну). IEC-функции являются составной частью системы STEP 7; Вы можете найти их в стандартной библиотеке "Standard Library" в разделе "IEC Function Blocks". IEC-функции могут быть использованы в любом языке программирования. Длина переменной DT является фиксированной; Вы можете сами задавать длину переменных STRING, ARRAY и STRUCT при их определении.

Строка символов STRING может содержать до 254 символов и резервирует в памяти на 2 байта больше, чем число символов в строке.

Массив может иметь до 65536 элементов для каждого из индексов (т.е. от Таблица 3.7 Обзор простых типов данных при записи констант на языке STL CHAR (8 битов) One character (ASCII) Печатный символ, Печатный символ, WORD (16 битов) 32-bit binary number 2#0000_0000...0000_0000 2#1111_1111...1111_ (32 бита) (Число с фиксированной запятой) REAL Floating-point number в экспоненциальном представлении: +1.234567E+ (32 бита) (Число с плавающей S5TIME (16 битов) TIME (32 бита) (32 бита) (Суточное время) TIME_OF_DAY#00:00:00 TIME_OF_DAY#23:59:59. "L#" может быть опущено, если число за пределами диапазона целых чисел INT информация о диапазоне значений в разделе 24.1.3, "Представление чисел" Автоматизация посредством STEP с использованием STL и SCL Таблица 3.8 Обзор простых типов данных при записи констант на языке SCL Data Type (width) Description BOOL Bit (бит, двоичное число) FALSE (ЛОЖЬ), TRUE (ИСТИНА), BOOL#FALSE, (8 битов) 8-bit hexadecimal number 16#0, B#16#7F, BYTE#16#FF Соответственно, 8-разрядные: десятичное, шестнадцатеричное, восьмеричное (16 битов) 16-bit hexadecimal number 16#0, W# 16#7FFF, WORD#16#FFFF Соответственно, 16-разрядные: десятичное, шестнадцатеричное, восьмеричное DWORD 32-bit decimal number 0, DW#2147483647, DWORD# (32 бита) 32-bit hexadecimal number 16#0, DW#16#7FFF_FFFF, DWORD#16#FFFF_FFFF 32-bit binary number 2#0, DW#2#0111_1111_..., DWORD#2#1111_1111_...

Соответственно, 32-разрядные: десятичное, шестнадцатеричное, восьмеричное (16 битов) 16-bit hexadecimal number INT#16#0, INT#16#7FFF, INT#16#FFFF 16-bit binary number INT#2#0, INT#2#0111_1111_..., INT#2#1111_1111_...

Соответственно, 16-разрядные: десятичное, шестнадцатеричное, восьмеричное DINT 32-bit decimal number -2_147_483_648, 0, +2_147_483_ (32 бита) 32-bit hexadecimal number DINT#16#0, DINT#16#7FFF_FFFF, DINT#16#FFFF_...

32-bit binary number DINT#2#0, DINT#2#0111_1111_..., DINT#2#1111_...

Соответственно, 32-разрядные: десятичное, шестнадцатеричное, восьмеричное (32 бита) (Число с плавающей (32 бита) (Значение времени в IECT#-24.855134d, T#0.0ms, TIME#24.855134d TIME_OF_DAY Time of day (32 бита) (Суточное время) информация о диапазоне значений в разделе 24.1.3, "Представление чисел" 3. SIMATIC S7-программа Таблица 3.9 Обзор сложных типов данных 3.7.5 Параметрические типы Параметрические типы - это типы данных для параметров блоков (см.

табл. 3.10). Размеры данных в таблице соответствуют области памяти, требуемой для параметров блока (для случая функциональных блоков).

Используйте также TIMER и COUNTER в таблице символов как типы данных Таблица 3.10 Обзор параметрических типов Тип параметра Автоматизация посредством STEP с использованием STL и SCL 3 - 46 Automating with STEP 7 in STL and SCL Автоматизация посредством STEP Базовые функции В данной части книги описываются функции языка программирования STL, представляющие собой "базовые функции" ("basic functionality") STEP 7. Эти функции позволят Вам запрограммировать PLC как систему управления, построенную на контакторах и реле.

Двоичные логические операции (binary logic operations) используются для моделирования параллельных и последовательных цепей в схемах или для выполнения функций AND (И) и OR (ИЛИ) в электронных переключающих системах. Использование приема вложения ("комбинирование") функций делает возможным выполнение сложных двоичных логических операций.

Операции с памятью (memory functions) используются для сохранения результата логической операции (RLO - result of logic operation). Таким образом, этот результат может быть в дальнейшем проверен и обработан в Функции пересылки (transfer functions) используются для обработки дискретных значений. Эти функции также используются, например, для передачи таймеру значения времени.

Таймеры (timer) используются для программирования PLC на выполнение функций включения/выключения, управляемых по времени, и для обеспечения функции задержки в переключающих электронных системах "electronic switching systems". Таймеры, встроенные в CPU, позволяют Вам программировать такие параметры как время ожидания или время контроля Счетчики (counter) двух видов - прямого и обратного счета - используются В данной части книги описываются функции, использующие адресные области входов, выходов и меркеров. Входы и выходы связаны с процессом или установкой. Меркеры играют роль дополнительных реле, сохраняющих двоичные состояния. В последующих разделах книги рассматриваются другие адресные области, которые могут использоваться в двоичных логических операциях. Одними из наиболее важных являются биты данных в блоках глобальных данных, а также биты данных во временных и статических Глава 5 "Операции с памятью" (memory functions) содержит примеры программирования двоичных логических операций и операций с памятью (memory functions); глава 8 "Функции счетчиков" предоставляет Вашему вниманию примеры использования таймеров и счетчиков. Каждый пример содержится в FC функции без параметров.

Автоматизация посредством STEP с использованием STL и SCL 4 Двоичные логические операции (binary logic operations) Функции AND (И), OR (ИЛИ), Exclusive OR (Исключающее ИЛИ);

считывание состояния сигнала "1" и "0"; выполнение двоичных логических операций; вложение (комбинирование) функций.

5 Операции с памятью (memory functions) Функции Assign (присвоение), Set (установка) и Reset (сброс); RS-триггер;

проверка наличия фронта сигнала; пример управления ленточным 6 Функции пересылки (transfer functions) Функции Load (загрузка) и Transfer (выгрузка); функции аккумулятора.

Запуск 5 различных типов таймеров; сброс, разблокировка и считывание значения таймера; значение времени.

Установка счетчика; прямой и обратный счет; сброс разблокировка и считывание значения счетчика; значение счетчика; пример счетчика 4. Двоичные логические операции 4 Двоичные логические операции В этой главе обсуждаются функции AND (И), OR (ИЛИ), Exclusive OR (Исключающее ИЛИ), также как и их комбинации для языка программирования STL. Функции AND (И), OR (ИЛИ), Exclusive OR (Исключающее ИЛИ) используются для проверки состояния сигналов двоичных разрядов и связи их друг с другом.

Двоичный разряд может быть проверен (просканирован) на наличие сигнала "1" или "0". С помощью инвертирования результата логической операции и запрограммировать сложные логические операции без необходимости хранения промежуточного результата.

Примеры, показанные в данном разделе, представлены на дискете, приложенной к данной книге, в библиотеке "STL_Book" в разделе "Basic Functions" в функциональном блоке FB 104 и в исходном файле Chap_4.

4.1 Структура программируемого контроллера На рис. 4.1 показана общая схема выполнения двоичной логической операции. Входной модуль выбирает датчик посредством адреса, например, датчик на входе I 1.2. CPU проверяет состояние сигнала ("status" - статус) датчика связывает его на входе блока логической операции с результатом логической операции, сохраненным после выполнения логической операции в предыдущий раз. Результат текущей логической операции (RLO) запоминается и хранится как "новый результат логической операции". Затем CPU обрабатывает следующее выражение программы, например, обеспечивающее сохранение результата логической операции в специальной Состояние сигнала (статус) Состояние (статус) бита эквивалентно состоянию (статусу) его сигнала и может иметь значения "0" или "1". В SIMATIC S7 состояние сигнала имеет значение "1" при наличии напряжения на входе, например, ~ 230 В или = 24 В (в зависимости от модуля); с другой стороны, если напряжение на входе отсутствует, то состояние сигнала входа соответствует "0".

Выражение, содержащее оператор проверки (check statement), инициирует проверку состояния бита. В то же время это выражение содержит правило логической операции - алгоритм, согласно которому результат проверки состояния бита будет сравниваться с сохраненным в процессоре результатом логической операции. Например выражение:

проверяет вход I 17.1 на состояние "1" и связывает с RLO по логике AND (И).

Автоматизация посредством STEP с использованием STL и SCL Рис. 4.1 Схема выполнения двоичной логической операции 4. Двоичные логические операции проверяет меркер M 20.5 на состояние "0" и связывает (links) с RLO по правилу логической операции OR (ИЛИ).

Результат проверки Строго говоря, CPU не связывает (link) состояние сигнала проверенного бита, а скорее формирует результат проверки: в случаях проверки на состояние сигнала "1" результат проверки идентичен состоянию сигнала проверяемого бита; в случаях проверки на состояние сигнала "0" результат проверки инвертируется относительно состояния сигнала проверяемого бита.

Результат логической операции Результат логической операции (RLO) - это состояние сигнала в CPU, которое CPU в дальнейшем использует для обработки двоичных сигналов. Результат логической операции формируется и модифицируется с помощью операторов проверки (check statement). Если RLO имеет значение "1", то это означает, что условие двоичной логической операции выполнено, если RLO имеет значение "0", то это означает, что условие двоичной логической операции не выполнено. Биты устанавливаются или сбрасываются в соответствии с результатом логической операции.

Логический шаг (logic step) Так же как можно выделить последовательный шаг в последовательной системе управления (sequential control system), так и в логической системе управления (logic control system) можно выделить логический шаг (logic step).

На каждом таком логическом шаге формируется и оценивается (т.е.

подвергается последующей обработке) результат логической операции.

Логический шаг состоит из выражений с операторами проверки (также называемыми операторами сканирования - "scan statements") и выражений с условными операторами. Первый оператор проверки, следующий за условным оператором, называется "первичным опросом" ("first check").

Автоматизация посредством STEP с использованием STL и SCL Первичный опрос (First check) Первый оператор проверки, следующий за условным оператором, называется "первичным опросом" ("first check"). Он имеет особенное значение, потому что CPU имеет прямой доступ к результату этого оператора, как результату логической операции. Таким образом "старое значение" ("old") результата логической операции RLO теряется. Первичный опрос всегда соответствует началу логической операции. Правило (алгоритм) первичного опроса (AND (И), OR (ИЛИ), Exclusive OR (Исключающее ИЛИ)) не играет при этом никакой Оператор проверки (Check statement) Результат логической операции RLO формируется с помощью операторов проверки. Эти операторы проверяют сигнал бита на состояние "1" или "0" и связывают (link) его в соответствии с правилом AND (И), OR (ИЛИ), Exclusive OR (Исключающее ИЛИ). Затем CPU сохраняет результат данной логической операции как новый результат логической операции RLO.

На рис. 4.2 показано, как программируется проверка сигнала бита на состояние "1" и "0". В случаях проверки на состояние сигнала "1" результат проверки идентичен состоянию сигнала проверяемого бита. В случаях проверки на состояние сигнала "0" результат проверки инвертируется относительно состояния сигнала проверяемого бита.

(Status) Инструкция (Instruction) (Check) Условные операторы (Condition statement) Условные операторы (condition statement) - это такие операторы, выполнение которых зависит от результата логической операции RLO. Эти операторы включают операции присвоения (назначения [assign]), установки (set) и сброса (reset) двоичных разрядов, а также запуск таймеров и счетчиков и т.п.

4. Двоичные логические операции Условные операторы (за редким исключением) выполняются, когда результат логической операции RLO имеет состояние "1", и не выполняются, когда RLO имеет состояние "0". Условные операторы (за редким исключением) не влияют на результат логической операции RLO, и, таким образом, RLO на протяжении последовательного выполнения нескольких операторов остается Правильный подход в программировании Правило (алгоритм) первичного опроса не имеет значения, так как результат этой проверки берется непосредственно как результат логической операции.

В целях грамотного программирования правило (алгоритм) первичного опроса должно быть идентично требуемой функции. Например, последовательность операторов представляет собой две AND-функции, из которых вторая функция (в которой обе проверки имеют логику AND) запрограммирована более правильным и более предпочтительным способом.

В случае отдельных операторов проверки, как например, в следующем функция AND более предпочтительна.

4.2 Элементарные двоичные логические операции В языке программирования STL используются элементарные двоичные функции AND (И), OR (ИЛИ), Exclusive OR (Исключающее ИЛИ). Эти функции связаны с проверкой сигнала на состояние "1" и "0".

Автоматизация посредством STEP с использованием STL и SCL проверка сигнала на состояние "1" и комбинирование в соответствии с функцией AND (И) проверка сигнала на состояние "0" и комбинирование в соответствии с функцией AND (И) проверка сигнала на состояние "1" и комбинирование в соответствии с функцией OR (ИЛИ) проверка сигнала на состояние "0" и комбинирование в соответствии с функцией OR (ИЛИ) проверка сигнала на состояние "1" и комбинирование в соответствии с Exclusive OR (Исключающее ИЛИ) проверка сигнала на состояние "0" и комбинирование в соответствии с Exclusive OR (Исключающее ИЛИ) Проверка сигнала на состояние "1" дает результат проверки "1", если состояние сигнала бита соответствует "1". Проверка сигнала на состояние "0" дает результат проверки "1", если состояние сигнала бита соответствует "0".

CPU комбинирует результат проверки бита с текущим результатом логической операции RLO в соответствии с определенной функцией и формирует новое значение RLO. Если двоичная логическая операция следует сразу же за операцией с памятью, результат проверки вводится в RLO-буфер без выполнения логической операции.

Число двоичных функций и диапазон их действия теоретически произвольны.

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

4.2.1 Функция AND (И) Функция AND (И) связывает два двоичных сигнала и возвращает результат RLO, равный "1", если оба эти сигнала (оба результата проверки) равны "1".

Если функция AND (И) встречается несколько раз подряд, то для того, чтобы общий результат RLO был равен "1", нужно, чтобы все промежуточные RLO были равны "1", иначе общий результат будет равен "0". На рис. 4.3 показан 4. Двоичные логические операции Функция AND (И) Network 1 (Сегмент 1) Input A Input2;

= Output1;

Network 2 (Сегмент 2) Input AN Input5;

Функция OR (ИЛИ) Network 3 (Сегмент 3) Input O Input2;

= Output3;

Network 4 (Сегмент 4) Input ON Input5;

Функция Exclusive OR (Исключающее ИЛИ) Network 5 (Сегмент 5) Input X Input2;

Network 6 (Сегмент 6) Input XN Input5;

Рис. 4.3 Элементарные двоичные функции Automating with STEP 7 in STL and SCL 4- Автоматизация посредством STEP с использованием STL и SCL пример действия функции AND (И). В сегменте 1 функция AND (И) имеет три входа (Input1... Input3) и один выход (Output1); за этими идентификаторами могут стоять произвольные адреса битов. На всех трех входах сигнал проверяется на состояние "1", так что сигналы этих битов связываются непосредственно по схеме AND (И). Когда все три входных бита дают при проверке состояние сигнала, равное "1", оператор присваивания устанавливает бит Output1 в состояние "1". Во всех других случаях условие AND (И) не выполняется, и бит Output1 находится в состоянии "0".

В сегменте 2 функция AND (И) имеет два входа, один из которых (Input5) инвертирующий, и один выход (Output2). Суть инвертирования для входа Input5 заключается в том, что сигнал на этом входе проверяется на состояние "0", т.е. результат проверки равен "1" при сигнале, равном "0". Поэтому условие AND (И) выполняется, когда бит Input4 находится в состоянии "1", а бит Input5 находится в состоянии "0".

4.2.2 Функция OR (ИЛИ) Функция OR (ИЛИ) связывает два двоичных сигнала и возвращает результат RLO, равный "1", если хоть один из этих сигналов (один из результатов проверки) равен "1". Если функция OR (ИЛИ) встречается несколько раз подряд, то для того, чтобы общий результат RLO был равен "1", нужно, чтобы хоть один промежуточный RLO был равен "1". Если все промежуточные RLO равны "0", то общий результат будет равен "0". На рис. 4.3 показан пример действия функции OR (ИЛИ). В сегменте 3 функция OR (ИЛИ) имеет три входа (Input1... Input3) и один выход (Output3); за этими идентификаторами могут стоять произвольные адреса битов. На всех трех входах сигнал проверяется на состояние "1", так что сигналы этих битов связываются непосредственно по схеме OR (ИЛИ). Если хоть один из входных битов дает при проверке состояние сигнала, равное "1", следующий оператор присваивания устанавливает бит Output3 в состояние "1". Если все промежуточные RLO равны "0", то условие OR (ИЛИ) не выполняется, и бит Output3 устанавливается в состояние "0".

В сегменте 4 функция OR (ИЛИ) имеет два входа, один из которых (Input5) инвертирующий, и один выход (Output4). Суть инвертирования для входа Input5 заключается в том, что сигнал на этом входе проверяется на состояние "0", т.е. результат проверки равен "1" при сигнале, равном "0". Поэтому условие OR (ИЛИ) выполняется, когда бит Input4 находится в состоянии "1", или когда бит Input5 находится в состоянии "0".

4.2.3 Функция Exclusive OR (Исключающее ИЛИ) Функция Exclusive OR (Исключающее ИЛИ) связывает два двоичных сигнала и возвращает результат RLO, равный "1", если оба эти сигнала (оба результата проверки) имеют разные значения; с другой стороны, RLO равен "0", если оба эти сигнала имеют одинаковое значение.

На рис. 4.3 показан пример действия функции Exclusive OR (Исключающее ИЛИ). В сегменте 5 функция Exclusive OR (Исключающее ИЛИ) имеет два входа (Input1 и Input2) и один выход (Output5); за этими именами могут стоять 4. Двоичные логические операции произвольные адреса битов. На обоих входах сигнал проверяется на состояние "1", так что сигналы этих битов связываются непосредственно по схеме Exclusive OR (Исключающее ИЛИ). Если только один из входных битов дает при проверке состояние сигнала, равное "1", бит Output устанавливается в состояние "1". Если оба входных бита дают при проверке состояния сигнала значения, равные "1", или оба дают значения, равные "0", то бит Output5 устанавливается в состояние "0".

В сегменте 6 функция Exclusive OR (Исключающее ИЛИ) имеет два входа, один из которых (Input5) инвертирующий, и один выход (Output6). Суть инвертирования для входа Input5 заключается в том, что сигнал на этом входе проверяется на состояние "0", т.е. результат проверки равен "1" при сигнале, равном "0". Поэтому условие Exclusive OR (Исключающее ИЛИ) выполняется, когда оба входных бита находятся в одинаковом состоянии, т.е.

имеют одинаковое состояние сигнала.

Если функция Exclusive OR (Исключающее ИЛИ) встречается несколько раз подряд, то для того, чтобы общий результат RLO был равен "1", нужно, чтобы нечетное число проверяемых входных битов дало результат проверки, 4.2.4 Допущения, принимаемые по отношению к типам датчиков Элементарные двоичные функции AND (И), OR (ИЛИ), Exclusive OR (Исключающее ИЛИ), описываемые в предыдущих разделах данной главы, рассматривались как входные модули с нормальноразомкнутыми контактами на входах (т.е. датчик имеет нормальноразомкнутые контакты, которые замыкаются при активации датчика, и при этом датчик возвращает значение сигнала, равное "1"). При выполнении функции управления, однако, не всегда возможно использовать только датчики, имеющие нормальноразомкнутые контакты. Во многих случаях, например, в случае "закороченных" цепей (имеющих короткое замыкание), использование нормальнозамкнутых контактов совершенно необходимо (нормальнозамкнутые контакты датчика обеспечивают возвращение сигнала, равного "0", при активации датчика).

Если датчик, подключенный ко входу, имеет нормальноразомкнутые контакты, то при активации датчика на входе возникает значение сигнала, равное "1". Если датчик, подключенный ко входу, имеет нормальнозамкнутые контакты, то в неактивном состоянии датчика на входе сохраняется значение сигнала, равное "1". CPU "не знает" к какому типу относится датчик на том или ином входе (нормальнозамкнутый или нормальноразомкнутый). Он может только различить состояния сигналов "1" или "0".

При разработке программы, следовательно, необходимо учитывать тип Перед вводом программы Вы должны определиться с типом используемого датчика (с нормальнозамкнутыми или с нормальноразомкнутыми контактами).

Это необходимо, потому что в отдельных частях программы учитывается состояние датчиков ("Sensor activated" [Датчик активирован], "Sensor not activated" [Датчик не активен]), а, следовательно, Вы должны проверять вход на состояние сигнала "1" или на состояние "0", в зависимости от типа Автоматизация посредством STEP с использованием STL и SCL На рис. 4.4 показаны варианты программы в зависимости от типа датчика.

Случай 1: оба датчика имеют нормальноразомкнутые контакты:

Случай 2: один нормальноразомкнутый и один нормальнозамкнутый датчики:

Рис. 4.4 Применение различных типов датчиков 4. Двоичные логические операции Из вышеприведенного рисунка следует, что благодаря программам, учитывающим тип датчика, и в первом случае (когда оба подключенных к PLC датчика имеют нормальноразомкнутые контакты), и во втором случае (когда к PLC подключены нормальноразомкнутый и нормальнозамкнутый датчики) контакторы, подключенные к выходам, срабатывают при активации двух Если оба подключенных ко входам датчика с нормальноразомкнутыми контактами активируются, сигналы на входах принимают значение "1". Для выполнения условия функции AND (И) с результатом проверки "1", входы функции проверяются на состояние "1". Если активируется датчик с нормальнозамкнутыми контактами, сигнал на входе принимает значение "0".

Для выполнения в данном случае условия функции AND (И) с результатом проверки "1", такой вход функции должен проверяться на состояние "0".

4.3 Инвертирование результата логической операции Оператор NOT (НЕ) инвертирует результат логической операции. Вы можете использовать оператор NOT (НЕ), например, для инвертирования результата выполнения функции AND (И) (см. рис.4.5. Сегмент 7. Функция NAND [НЕ-И]).

На этом же рисунке в сегменте 8 показано инвертирование функции OR (ИЛИ), вызванное функцией NOR (НЕ-ИЛИ).

Вы можете найти дополнительные примеры использования оператора NOT (НЕ) в разделе 4.4.6 "Инвертирование во вложенных операторах".

Функция NAND (НЕ-И) Network 7 (Сегмент 7) Input A Input2;

NOT;

Функция NOR (НЕ-ИЛИ) Network 8 (Сегмент 8) Input O Input5;

NOT;

Рис. 4.5 Примеры применения функции NOT (НЕ) Автоматизация посредством STEP с использованием STL и SCL 4.4 Сложные двоичные логические операции Двоичные логические функции могут быть объединены, например, функции AND (И) и OR (ИЛИ) могут стоять в программе в любом порядке. Если такие функции стоят в программе в произвольном порядке, нелегко разобраться в обработке их CPU. Поэтому лучше использовать для иллюстрации решения задачи, например, программирование с помощью функциональных блоксхем, чем программирование на STL.

При программировании сложных двоичных логических операций STL одинаково рассматривает операторы OR (ИЛИ) и Exclusive OR (Исключающее ИЛИ) как операторы с одинаковым приоритетом. Оператор AND (И) имеет более высокий приоритет и выполняется "перед" операторами OR (ИЛИ) и Exclusive OR (Исключающее ИЛИ).

Чтобы функции выполнялись в требуемом порядке CPU иногда должен временно сохранять значение функции (результат логической операции RLO, рассчитанный в некоторой точке программы). Для этой цели (для временного хранения результата) могут использоваться вложенные выражения (вложенные операторы). Как и в случае используемых в булевой алгебре записей вложенные операторы обеспечивают выполнение одних функций раньше других. Вложенные выражения (операторы) могут также включать в Язык программирования STL позволяет использование следующих двоичных вложенных выражений (вложенных операторов):

X( открывающая скобка с функцией Exclusive OR (Исключающее ИЛИ) AN( открывающая скобка с функцией NOT-AND (НЕ-И) ON( открывающая скобка с функцией NOT-OR (НЕ-ИЛИ) Правило логики для выражения с открывающей скобкой показывает, как результат вложенного выражения должен быть связан с текущим значением RLO в момент обработки закрывающей скобки. До этой логической операции результат выполнения вложенного выражения инвертируется, если присутствует символ операции инвертирования.

4.4.1 Обработка вложенных выражений (вложенных операторов) В языке программирования STL двоичные вложенные выражения используются для определения порядка выполнения двоичных логических операций. В процессе выполнения программы CPU первыми обрабатывает выражения, заключенные в скобки, то есть до выполнения выражений, находящихся за скобками.

4. Двоичные логические операции Когда CPU встречает открывающую скобку, запоминает текущее значение RLO и затем обрабатывает выражение в скобках (вложенное выражение), когда CPU встречает закрывающую скобку, он связывает значение RLO для вложенного выражения с ранее запомненным значением RLO в соответствии с функцией, определенной при открывающей скобке (Рис. 4.6).

Вложенная инструкция После выполнения вложенной инструкции:

Рис. 4.6 Обработка вложенных выражений Оператор проверки, следующий за открытой скобкой, всегда является первичным опросом, т.к. CPU всегда создает новый результат логической операции RLO для вложенного выражения. Оператор проверки, следующий за закрытой скобкой, никогда не является первичным опросом, т.к. первой инструкцией является вложенное выражение. CPU обрабатывает значение RLO для вложенного выражения как результат первичного опроса.

Вложенные выражения могут включать в себя другие вложенные выражения (см. рис. 4.7). Глубина вложения равна 7, что означает, что Вы можете 7 раз включать новые вложенные выражения в выражения, которые уже сами по себе являются вложенными, не завершая последних. Обработка внутренних Сохранение промежуточных результатов с помощью стека вложения (nesting stack) При обработке вложенных выражений в CPU заполняется "стек вложения" ("nesting stack") в порядке обработки вложенных функций. В данном стеке хранится следующая информация:

• результат логической операции (RLO) предыдущих скобок;

• двоичный результат (BR "binary result") предыдущих скобок;

• бит состояния (OR) (показывающий, было ли уже выполнено условие • функция вложения (для запоминания функции, с которой необходимо связать результат вложенного выражения).

Автоматизация посредством STEP с использованием STL и SCL Рис. 4.7 Пример реализации вложенных выражений (операторов) CPU устанавливает двоичный результат (BR) после закрывающей скобки в состояние, которое имело место к началу обработки вложенного выражения.

Во вложенных выражениях Вы можете использовать не только двоичные логические операторы, но и все остальные выражения языка программирования STL. Однако, от программиста требуется внимание при завершении сложного вложенного выражения закрывающей скобкой. Так, возможно, например, во вложенном выражении запрограммировать несколько логических шагов, или операций с памятью, или функций 4.4.2 Объединение AND-функций (И) в операторе OR (ИЛИ) Эти логические операции, представляющие собой комбинации функций OR (ИЛИ) и AND (И), могут быть записаны в булевой алгебре без использования скобок. Здесь действует правило, согласно которому функции AND (И) выполняются в первую очередь. Затем результаты, если есть функция OR (ИЛИ), обрабатываются (link - связываются) этой функцией.

4. Двоичные логические операции В данном примере единственный оператор O (соответствующий функции OR (ИЛИ)) находится между двумя функциями AND (И).

В примере Output8 устанавливается, если { Input0 И Input1} ИЛИ { Input2 И Input3} установлены (имеют значение "1").

4.4.3 Объединение OR (ИЛИ) и Exclusive OR (Исключающее ИЛИ) в операторе AND (И) Эти логические операции, представляющие собой комбинации функций OR (ИЛИ) и AND (И), должны быть записаны в булевой алгебре с использованием скобок, с помощью которых указывается, что функции OR (ИЛИ) выполняются в первую очередь, раньше функции AND (И).

В данном примере оператор открытой скобки объединен с функцией AND (И).

Функция OR (ИЛИ) находится во вложенном выражении. Закрывающая скобка в данном случае связывает (link) результат функции OR (ИЛИ) (результат логической операции, которая заключена в скобки) с дополнительными проверками, если они есть, по логике функции AND (И).

В примере Output10 устанавливается, если { Input0 ИЛИ Input1} И { Input ИЛИ Input3} установлены (имеют значение "1").

Обработка функций Exclusive OR (Исключающее ИЛИ) в операторе AND (И) производится и записывается точно таким же образом. В вышеуказанном примере функции OR (ИЛИ) должны быть заменены на функции Exclusive OR (Исключающее ИЛИ), так как они имеют одинаковый приоритет.

Автоматизация посредством STEP с использованием STL и SCL 4.4.4 Объединение функций AND (И) в операторе Exclusive OR (Исключающее ИЛИ) Функции AND (И), выполняющиеся перед функцией Exclusive OR (Исключающее ИЛИ), должны быть записаны в скобках. С помощью скобок CPU сохраняет результат выполнения AND (И) функции и затем их комбинирует, возможно с дополнительными проверками, в соответствии с правилами функции Exclusive OR (Исключающее ИЛИ).

В данном примере первая функция AND (И) не нуждается в скобках, так как функция AND (И) имеет более высокий приоритет, чем функция Exclusive OR (Исключающее ИЛИ). Тем не менее, при наличии скобок программа лучше В примере Output12 устанавливается, если только в одной из скобок {Input И Input1} и { Input2 И Input3} выполнено условие функции AND (И).

4.4.5 Объединение функций OR (ИЛИ) в операторе Exclusive OR (Исключающее ИЛИ) Функции OR (ИЛИ), выполняющиеся перед функцией Exclusive OR (Исключающее ИЛИ), должны быть записаны в скобках. С помощью скобок CPU сохраняет результат выполнения OR (ИЛИ) функции и затем их комбинирует, возможно с дополнительными проверками, в соответствии с правилами функции Exclusive OR (Исключающее ИЛИ).

4. Двоичные логические операции В примере Output14 устанавливается, если только в одной из скобок {Input ИЛИ Input1} и { Input2 ИЛИ Input3} выполнено условие функции OR (ИЛИ).

Обработка функций Exclusive OR (Исключающее ИЛИ) в операторе OR (ИЛИ) производится и записывается точно таким же образом. Для такого случая в вышеуказанном примере функции OR (ИЛИ) должны быть заменены на функции Exclusive OR (Исключающее ИЛИ) и наоборот, так как они имеют 4.4.6 Инвертирование вложенных выражений Точно также как Вы можете проверить бит на состояние сигнала "0" (по сути инвертировать состояние бита), Вы также можете инвертировать вложенное выражение (точнее - инвертировать результата этого выражения). Это означает, что CPU после вычисления вложенного выражения должен "взять" его результат в инвертированной форме. Признаком инвертирования результата операции является наличие дополнительного символа N в выражении открывающей скобки.

В примере Output16 устанавливается, если ни в одной из скобок - ни в {Input0 ИЛИ Input1}, ни в { Input2 Исключающее ИЛИ Input3} - не выполняется Второй способ инвертирования вложенных выражений возможен с помощью использования выражения (оператора) NOT. Оператор NOT, записанный перед закрывающей скобкой, инвертирует результат вложенного выражения перед последующей обработкой.

Автоматизация посредством STEP с использованием STL и SCL В данном примере имеет место такая же логическая операция, как и в предыдущем примере. Инвертирование вложенных выражений обеспечивается с помощью использования выражения (оператора) NOT внутри вложенных выражений.

5 Операции с памятью (memory functions) В данной главе рассматриваются операции с памятью, применяемые в языке программирования STL. К операциям с памятью относятся функции Assign (Присвоение) для "динамичного" управления битами, а также функции Set (Установка бита) и Reset (Сброс бита) для "статического" управления битами.

Также к операциям с памятью относится функция проверки наличия фронта Операции с памятью используются в сочетании с двоичными логическими операциями, чтобы воздействовать на значения сигналов (состояния) битов с использованием "результата логической операции" RLO, который Вы можете использовать функции работы с памятью для управления всеми битовыми адресами: адресами области отображения входов/выходов процесса, адресами меркеров, адресами глобальных данных, адресами статических и временных локальных данных.

Примеры, рассмотренные в данной главе, содержатся на дискете, прилагающейся к данной книге в библиотеке STL_Book в разделе "Basic functions" ("Базовые функции") в функциональном блоке FB 105 и исходном 5.1 Функция Assign (Присвоение) Функция присваивает биту результат логической операции Выражение, содержащее символ присвоения "=", назначает результат логической операции RLO, содержащийся в CPU, биту, указанному в выражении. Если результат логической операции имеет значение "1", то бит устанавливается; если результат логической операции имеет значение "0", то бит сбрасывается (см. рис. 5.1. Сегмент 1).

Если необходимо установить бит, в то время когда RLO имеет значение "0", то значение RLO должно быть сначала инвертировано с помощью оператора NOT до момента выполнения функции присвоения (см. рис. 5.1. Сегмент 2).

Вы можете найти дополнительные примеры применения функции присвоения в главе 4 "Двоичные логические операции".

Одновременное выполнение нескольких функций присвоения Также допускается выполнять одновременное присваивание результата логической операции различным битам, запрограммировав подряд несколько операторов присваивания соответствующим битам (см. рис. 5.1. Сегмент 3).

Автоматизация посредством STEP с использованием STL и SCL Функция Assign (Присвоение значения биту) Network 1 (Сегмент 1) A Input1;

= Output1;

Network 2 (Сегмент 2) Input A Input1;

= Output2;

Network 3 (Сегмент 3) Input = Output3;

Network 4 (Сегмент 4) A Input3;

= Output5;

A Output5;

A Input4;

= Output6;

Функции Set и Reset (Установка и сброс бита) Network 5 (Сегмент 5) A Input1;

S Output7;

Network 6 (Сегмент 6) A Input2;

R Output7;

Network 7 (Сегмент 7) A Input3;

A Input4;

S Output8;

R Output9;

S Output10;

= Output11;

Рис. 5.1 Функции Assign (Присвоение), Set (Установка) и Reset (Сброс) 5. Операции с памятью Функции Set и Reset (Установка и сброс бита) Network 8 (Сегмент 8) A Input1;

S Output12;

A Input2;

R Output12;

Network 9 (Сегмент 9) A Input3;

R Output13;

A Input4;

S Output13;

Рис. 5.1 (продолжение) Функции Set (Установка) и Reset (Сброс) Все биты, определенные в функции присвоения Assign, реагируют на эту функцию одинаково, так как инструкции, используемые для управления битами, не влияют на RLO. CPU не генерирует новый результат логической операции RLO до появления следующего оператора проверки.

Если необходимо проверить состояние сигнала выхода в другой логической операции просто проверьте этот выход с помощью соответствующей функции проверки (см. рис. 5.1. Сегмент 4).

5.2 Функции Set (Установка бита) и Reset (Сброс бита) Функция устанавливает бит, в случае если результат логической Функция сбрасывает бит, в случае если результат логической операции Функция Set (Установка бита) устанавливает бит, а функция Reset (Сброс бита) сбрасывает бит только в случае, если результат логической операции RLO имеет значение "1". Если результат логической операции имеет значение "0", то инструкции Set и Reset не изменяют состояния бита, определенного как операнд в этих инструкциях (см. рис. 5.1. Сегменты 5 и 6).

Одновременное выполнение нескольких операций с памятью Также допускается использование нескольких операций с памятью одновременно и в любой комбинации, а также совместно с функциями присвоения Assign с использованием одного и того же результата логической Автоматизация посредством STEP с использованием STL и SCL операции. Просто запишите в программе подряд несколько операторов установки или сброса (Set/Reset) для соответствующих битов (см. рис. 5.1.

Сегмент 7). Во время действия функции присвоения Assign, установки Set и сброса Reset результат логической операции не изменяет своего значения.

При этом CPU не генерирует новый результат логической операции RLO до появления следующего оператора проверки. Также Вы можете использовать оператор NOT (НЕ) для инвертирования значения RLO в одном ряду с операциями с памятью.

Для большей ясности и лучшей читаемости программы рекомендуется использовать операторы Set (Установка бита) или Reset (Сброс бита) парами для определенного бита и только один раз.

5.3 Функции RS Flipflop (RS-триггер) Функция RS Flipflop (RS-триггер) состоит из одного выражения с оператором Set (Установка бита) и одного выражения, содержащего оператор Reset (Сброс бита); данная функция не имеет специального идентификатора в языке программирования STL. Функция RS Flipflop (RS-триггер) реализуется при последовательной записи выражения с оператором Set (Установка бита) и выражения с оператором Reset (Сброс бита) с общим для этих операторов операндом - одним и тем же битом. С точки зрения функциональных свойств триггера очень важным является порядок, в котором записываются вышеуказанные выражения.

Надо отметить, что биты, используемые в операциях с памятью, обычно сбрасываются при запуске (при полном перезапуске). В особых случаях состояния битов, используемых в операциях с памятью, сохраняют свои значения; это может зависеть от типа запуска (например, "теплый" перезапуск), от используемого бита (например, бит расположен в области статических локальных данных) и от установок CPU (имеются в виду установки свойства реманентности).

5.3.1 Операции с памятью при установленном приоритете функции Reset (Сброс бита) Приоритет функции Reset (Сброс бита) здесь означает, что при одновременном управлении битом с помощью инструкций Set (Установка бита) и Reset (Сброс бита) и при одновременной выработке этими инструкциями управляющего сигнала "1", указанный бит будет сброшен (значение его сигнала будет равно "0"). Таким образом, здесь имеет место случай, когда инструкция Reset (Сброс бита) имеет приоритет над инструкцией Set (Установка бита) (см. рис. 5.1. Сегмент 8).

Так как выражения обрабатываются последовательно, CPU сначала устанавливает бит, первой выполняя инструкцию Set (Установка бита), затем сбрасывает этот бит, выполняя инструкцию Reset (Сброс бита). После этого до конца цикла сканирования программы выход остается в сброшенном Если рассматриваемый бит является выходом, то столь короткое по времени 5. Операции с памятью его пребывание в установленном состоянии имеет место лишь в области отображения процесса, на этом промежутке времени состояние соответствующего связанного выхода (внешнего) выходного блока не изменяется. До конца цикла сканирования программы CPU не пересылает в выходные модули таблицу выходов образа процесса.

Фактически приоритет функции Reset (Сброс бита) является "стандартной" формой использования данной функции, так как состояние сброса (состояние "0") является, как правило, более безопасным.

5.3.2 Операции с памятью при установленном приоритете функции Set (Установка бита) Приоритет функции Set (Установка бита) здесь означает, что при одновременном управлении битом с помощью инструкций Set (Установка бита) и Reset (Сброс бита) и при одновременной выработке этими инструкциями управляющего сигнала "1", указанный бит будет установлен (значение его сигнала будет равно "1"). Таким образом, здесь имеет место случай, когда инструкция Set (Установка бита) имеет приоритет над инструкцией Reset (Сброс бита) (см. рис. 5.1. Сегмент 9).

Так как выражения обрабатываются последовательно, CPU сначала сбрасывает этот бит, первой выполняя инструкцию Reset (Сброс бита), выполняя инструкцию Set (Установка бита), затем устанавливает этот бит.

После этого до конца цикла сканирования программы выход остается в установленном состоянии.

Если рассматриваемый бит является выходом, то его пребывание в установленном состоянии имеет место в области отображения процесса до конца цикла сканирования программы, на этом промежутке времени состояние соответствующего связанного выхода (внешнего) выходного блока не изменяется. До конца цикла сканирования программы CPU не пересылает в выходные модули таблицу выходов образа процесса.

Фактически приоритет функции Set (Установка бита) является скорее исключением, чем правилом, как форма использования данной функции.



Pages:     | 1 |   ...   | 2 | 3 || 5 | 6 |   ...   | 12 |


Похожие работы:

«ПРИОРИТЕТНЫЙ ПРОЕКТ РАЗВИТИЯ РЕСПУБЛИКИ ДАГЕСТАН №4 Эффективное государственное управление Руководители: январь-сентябрь 2014 года Юсуфов Р.А., Маликов М.М. Мероприятие Статус Комментарий Дальнейшие задачи, комментарии Проведение эффективной кадровой политики Проведен конкурс и по результатам заключены 2 госконтракта с ФГБОУ ВПО Проведение конкурса на право заключения ДГУ и 10 госконтрактов с ФГБОУ ВПО ДГТУ на общую сумму 1570,5 тыс.рублей. государственного контракта на оказание образовательных...»

«2 Введение Рабочая (модульная) программа: - Предназначена для преподавателей, ведущих данную дисциплину, и студентов специальности 110204 – Селекция и генетика с.-х. культур, участвующих в процессе изучения дисциплины; - устанавливает минимальные требования к знаниям и умениям студента и определяет содержание и виды учебных занятий и отчетности. Раздел 1. Цели и задачи дисциплины Целью дисциплины Общая селекция и сортоведение сельскохозяйственных культур является формирование у студентов...»

«ISSN 1606-6251 РОССИЙСКОГО ФИЛОСОФСКОГО ОБЩЕСТВА 4 2011 ISSN 1606-6251 РОССИЙСКАЯ АКАДЕМИЯ НАУК РОССИЙСКОЕ ФИЛОСОФСКОЕ ОБЩЕСТВО РОССИЙСКОГО ФИЛОСОФСКОГО ОБЩЕСТВА 4 (60) 2011 ФИЛОСОФСКОМУ ОБЩЕСТВУ – 40 ЛЕТ ЖУРНАЛУ ВЕСТНИК РФО – 15 ЛЕТ МОСКВА ГЛАВНЫЙ РЕДАКТОР А.Н. Чумаков ОТВЕТСТВЕННЫЙ СЕКРЕТАРЬ: Н.З. Ярощук РЕДАКЦИОННАЯ КОЛЛЕГИЯ:...»

«МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РЕСПУБЛИКИ АРМЕНИЯ АРМЯНСКИЙ ГОСУДАРСТВЕННЫЙ ПЕДАГОГИЧЕСКИЙ УНИВЕРСИТЕТ ИМЕНИ Х.АБОВЯНА ПРОГРАММА Русская литература в контексте мировой культуры (Современная литература) _ название предмета, в соответствии с государственным образовательным стандартом ПРОГРАММА ДЛЯ МАГИСТРАТУРЫ по специальности -,,РУССКИЙ ЯЗЫК И ЛИТЕРАТУРА” 032400 шифр специаль ности, название ЕРЕВАН Утверждено на заседании N 2013г. Совета филологического факультета Армянского государственного...»

«МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ НОУ ВПО МОСКОВСКАЯ АКАДЕМИЯ ЭКОНОМИКИ И ПРАВА Юридический институт Кафедра гражданско-правовых дисциплин УТВЕРЖДАЮ Проректор по учебной работе д.э.н., профессор Малявина А.В. _2011 г. РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ ИСТОРИЯ И МЕТОДОЛОГИЯ ЮРИДИЧЕСКОЙ НАУКИ Направление подготовки: 030900.68 Юриспруденция Профиль подготовки: Гражданское право, семейное право, международное частное право Квалификация (степень) выпускника: Магистр Форма обучения...»

«Утверждена постановлением Правительства Республики Таджикистан от 29 декабря 2012 года, №759 Программа электронных закупок в Республике Таджикистан на 2013-2015 годы 1. Предисловие 1. Государственные закупки, являясь механизмом удовлетворения потребностей государства в товарах, работах и услугах, оказывают значительное воздействие на все сферы экономики и составляют неотъемлемую часть рыночной экономики, поскольку закупки для государственных нужд осуществляются на рынке, и к ним применяются...»

«Содержание № Название раздела Страница Организация и проведение итоговой 4 1 государственной аттестации студентов Требования к результатам освоения ООП 4 1.1 ВПО, установленным ГОС ВПО, проверяемым в ходе государственного экзамена Аттестационные испытания 7 1.2 Функции и структура государственных 8 1.3 аттестационных комиссий Порядок проведения итоговой 11 1.4 государственной аттестации Фонд оценочных средств итоговой 16 2 государственной аттестации. Программа государственного экзамена...»

«МИНИСТЕРСТВО СЕЛЬСКОГО ХОЗЯЙСТВА РОССИЙСКОЙ ФЕДЕРАЦИИ Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования Саратовский государственный аграрный университет имени Н.И. Вавилова УТВЕРЖДАЮ Декан факультета _ /Морозов А.А. / _ 20 г. РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ (МОДУЛЯ) Дисциплина СТРАТЕГИЧЕСКИЙ МЕНЕДЖМЕНТ Направление подготовки/ 260800.68 Технология продукции и специализация/ организация общественного питания магистерская программа Новые пищевые...»

«МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ УТВЕРЖДАЮ: Заместитель Министра образования Российской Федерации В.Д. Шадриков _2403_ 2000 г. Номер государственной регистрации _206гум/маг ГОСУДАРСТВЕННЫЙ ОБРАЗОВАТЕЛЬНЫЙ СТАНДАРТ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ НАПРАВЛЕНИЕ 520400 Философия Степень (квалификация) – магистр философии Вводится с момента утверждения Москва, 2000 г. 2 1. ОБЩАЯ ХАРАКТЕРИСТИКА НАПРАВЛЕНИЯ 520400 Философия 1.1. Направление утверждено приказом Министерства...»

«Зарегистрировано в Минюсте России 14 октября 2013 г. N 30163 МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ ПРИКАЗ от 12 сентября 2013 г. N 1061 ОБ УТВЕРЖДЕНИИ ПЕРЕЧНЕЙ СПЕЦИАЛЬНОСТЕЙ И НАПРАВЛЕНИЙ ПОДГОТОВКИ ВЫСШЕГО ОБРАЗОВАНИЯ (в ред. Приказа Минобрнауки России от 29.01.2014 N 63) В соответствии с частью 8 статьи 11 Федерального закона от 29 декабря 2012 г. N 273-ФЗ Об образовании в Российской Федерации (Собрание законодательства Российской Федерации, 2012, N 53, ст. 7598; 2013, N 19,...»

«Министерство образования и науки Астраханской области ГАОУ АО ВПО Астраханский инженерно-строительный институт РАБОЧАЯ ПРОГРАММА Наименование дисциплины Основы проектирования теплоэнергетических установок По направлению подготовки 140100 ТЕПЛОЭНЕРГЕТИКА И ТЕПЛОТЕХНИКА По профилю подготовки Энергообеспечение предприятий Кафедра Инженерных систем и экологии Квалификация (степень) выпускника бакалавр Астрахань — 2013 Составитель: Ст. преподаватель кафедры ИСЭ Дербасова Е.М. _ (занимаемая...»

«УТВЕРЖДАЮ ДИРЕКТОР МБОУ СОШ №5 Г.ХИМКИ Т.В.СЕМЕНЯКА ПОЛОЖЕНИЕ О ПОРЯДКЕ ПРИЕМА ДЕТЕЙ В МУНИЦИПАЛЬНОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ I. ОБЩИЕ ПОЛОЖЕНИЯ 1. Настоящее положение (далее Порядок) разработан для соблюдения конституционных прав граждан РФ на образование, исходя из принципов общедоступности и бесплатности общего образования, реализации государственной политики в области образования, защиты интересов ребенка и удовлетворения потребностей семьи в выборе образовательного учреждения,...»

«УДК 662.712 Илья Игоревич Белоусов, соискатель, forestaltruist@gmail. com, Санкт-Петербургский государственный электротехнический университет Виктор Владимирович Литвинов, аспирант, pyrolabfta@gmail. сom, Вячеслав Андреевич Втюрин, кандидат технических наук, профессор Санкт-Петербургский государственный лесотехнический университет МЕТОДИКА И ПРОГРАММА РАСЧЕТА ТЕМПЕРАТУРЫ ФАКЕЛА ДИФФУЗИОННОГО ГОРЕНИЯ ПРИ ТЕРМОХИМИЧЕСКОЙ КОНВЕРСИИ БИОМАССЫ ДЕРЕВА Термохимическая конверсия, горение, расчет...»

«МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ имени М.В. ЛОМОНОСОВА Философский факультет Кафедра этики ПЛАН-ПРОГРАММА спецсеминара по курсу ПОЛИТИЧЕСКАЯ ЭТИКА (36 часов) Составитель: д.ф.н., профессор А.В. Прокофьев Москва, 2011 2 Тематический план: 1. Политическая этика и общественная мораль (4 часа; лекционное введение). 2. Политическое морализаторство (4 часа; семинар без поиска кейс-материалов). 3. Индивидуальная ответственность в политике и проблема грязных рук (4 часа; семинар с поиском...»

«МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ КАЗАНСКИЙ НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ им. А.Н. Туполева-КАИ ПРОГРАММА ВСТУПИТЕЛЬНОГО ИСПЫТАНИЯ ПО СПЕЦИАЛЬНОЙ ДИСЦИПЛИНЕ, соответствующей направленности (профилю) программы подготовки научнопедагогических кадров в аспирантуре 05.13.12 Системы автоматизации проектирования Казань, 2014 1. Общие положения Программа...»

«Рассмотрено Согласовано с Управляющим Утверждаю на педагогическом совете советом школы Приказ № 33/1-А от 29.05.2013г Протокол № 2/1 от 29.05.2013 29.05.2013 Протокол №7/2 Председатель _ Директор _ /Т.В. Власова/ /М.Н. Анучина/ МУНИЦИПАЛЬНОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ СРЕДНЯЯ ОБЩЕОБРАЗОВАТЕЛЬНАЯ ШКОЛА №6 Г.О. КОХМА ИВАНОВСКОЙ ОБЛАСТИ ОБРАЗОВАТЕЛЬНАЯ ПРОГРАММА ОСНОВНОГО ОБЩЕГО ОБРАЗОВАНИЯ на 2013-2018 г.г. г. Кохма, Муниципальное бюджетное образовательное учреждение средняя...»

«| БИОЛОГИЯ УДК 633.16; 581.144 ОСОБЕННОСТИ СТРОЕНИЯ СТЕБЛЯ И ПРОДУКТИВНОСТИ ШЕСТИРЯДНЫХ И ДВУРЯДНЫХ СОРТОВ ЯЧМЕНЯ Л. Н. Ковригина, Г. Я. Степанюк FEATURES OF STALK STRUCTURE AND CROP PRODUCING POWER IN SIX-ROW AND TWO-ROW BARLEY CULTIVARS L. N. Kovrigina, G. Yа. Stepanyuk В статье сопоставляется строение стебля и продуктивность двурядных и шестирядных ячменей. Выделены образцы с оптимальным сочетанием признаков. The stalk structure and crop produing power of two-row and six-row barley cultivars...»

«1 ГЛАВА Структура Программы международных сопоставлений Г лобальная инициатива в области статистики, Программа международных сопоставлений (ПМС)1, собирает сопоставимые данные о ценах, а затем рассчитывает паритеты покупательной способности (ППС) валют в мировой экономике. Проведенная под руководством Статистической комиссии ООН программа предназначена для удовлетворения информационных потребностей международного сообщества государственных директивных органов, международных организаций,...»

«ПРОГРАММА РУССКИЙ ЯЗЫК Е.В. Бунеева, Р.Н. Бунеев Программа составлена в соответствии с требованиями Федерального государственного образовательного стандарта начального общего образования и обеспечена УМК для 1–4 кл., авторов Р.Н. Бунеева, Е.В. Бунеевой, О.В. Прониной, О.В. Чиндиловой и др. I. Пояснительная записка Язык по своей специфике и социальной значимости – явление уникальное: он является средством общения и воздействия, средством хранения и усвоения знаний, средоточием духовной культуры...»

«ПРИНЦИП ФОРМИРОВАНИЯ И ОТОБРАЖЕНИЯ МАССИВА. 6. Лузин С.Ю., Лячек Ю.Т., Петросян Г.С., Полубасов О.Б. Модели и алгоритмы автоматизированного проектирования радиоэлектронной и электронно-вычислительной аппаратуры. – СПб: БХВ-Петербург, 2010. – 224 с. Лузин Сергей Юрьевич – Россия, Санкт-Петербург, ООО ЭРЕМЕКС, доктор технических наук, технический директор, [email protected] Попов Сергей Игоревич – Россия, Санкт-Петербург, Санкт-Петербургский национальный исследовательский университет...»






 
2014 www.av.disus.ru - «Бесплатная электронная библиотека - Авторефераты, Диссертации, Монографии, Программы»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.