TM250TRE.00-ENG
2013/11/08
Требования
Обучающие курсы TM213 — Automation Runtime
(тренинг-модули): TM246 — Язык структурированного текста (ST)
Программное обеспе- Automation Runtime 3.08
чение Automation Studio 3.0.90
Аппаратное обеспе- Нет
чение
ОГЛАВЛЕНИЕ
1 ВВЕДЕНИЕ.......................................................................................................................................... 4
1.1 Цели обучающего курса....................................................................................................... 4
2 ПЕРЕМЕННЫЕ, КОНСТАНТЫ И ТИПЫ ДАННЫХ...........................................................................5
2.1 Общие представления.......................................................................................................... 5
2.2 Простые типы данных.........................................................................................................12
2.3 Массивы, структуры и перечислимый тип данных...........................................................15
2.4 Строки...................................................................................................................................22
2.5 Адреса и размер памяти.................................................................................................... 27
3 ПАМЯТЬ И УПРАВЛЕНИЕ ПАМЯТЬЮ........................................................................................... 29
3.1 Инициализация памяти.......................................................................................................29
3.2 Копирование и инициализация памяти............................................................................. 30
4 РАБОТА С БИБЛИОТЕКАМИ.......................................................................................................... 33
4.1 Общая информация............................................................................................................ 33
4.2 Создание пользовательских библиотек............................................................................ 38
4.3 Примеры использования стандартных библиотек B&R...................................................41
5 ОСНОВНЫЕ СВЕДЕНИЯ ПО ОБРАБОТКЕ ДАННЫХ...................................................................42
5.1 Выравнивание......................................................................................................................42
5.2 Форматы данных................................................................................................................. 43
5.3 Целостность данных........................................................................................................... 44
6 ХРАНЕНИЕ И УПРАВЛЕНИЕ ДАННЫМИ...................................................................................... 46
6.1 Резервирование блоков памяти........................................................................................ 46
6.2 Объекты данных (data objects).......................................................................................... 47
6.3 Хранение файлов в файловой системе............................................................................48
6.4 Базы данных........................................................................................................................ 49
7 ПЕРЕДАЧА ДАННЫХ И СВЯЗЬ...................................................................................................... 50
7.1 Общая информация о связи.............................................................................................. 50
7.2 Протоколы............................................................................................................................ 52
7.3 Библиотеки поддержки связи.............................................................................................52
8 ИТОГ.................................................................................................................................................. 54
1 ВВЕДЕНИЕ
На самом нижнем уровне каждый компьютер способен опрерировать только с двумя электриче-
скими состояниями, которые можно логически представить как 0 или 1. Разработчику необходимо
иметь представление об процессах, происходящих на физическом уровне.
Понимание основных принципов значительно упрощает процесс программирования системы и
локализации ошибок, которые могут возникнуть в дальнейшем.
Каждый бит в байте может принимать значение 0 или 1. Байт может принимать значения от 0 до
255, что соответствует 256 различным состояниям.
1 В стандарте МЭК 61131-3 определяются типы данных, языки программирования и форматы файлов,
которые не зависят от какой-либо конкретной платформы.
+ 00000001 один
00000001 один
= 00000010 два (не десятичное значение 10!)
Table 2: Сложение двоичных чисел с переносом
Programming \ Variables and data types \ Variables \ Data types \ Basic data types \ INT
Programming \ Variables and data types \ Variables \ Bit addressing
Переменные представляют собой области памяти, которые могут быть изменены и которым могут
быть присвоены новые значения во время выполнения программы. В качестве примеров таких
переменных можно привести дискретные и аналоговые входы и выходы, а также вспомогатель-
ные флаги.
В отличие от переменных, именованными константам значения присваиваются при объявлении.
И во время выполнения программы эти значения не могут быть изменены. К константам относят-
ся, например, предельные значения или пределы диапазона.
Как для переменных, так и для констант может быть использован любой из доступных основных
типов данных (Раздел "Простые типы данных").
1) Объявите константу.
В окне объявления создайте переменную MAX_INDEX. Она должна относиться к типу данных
USINT. Выберите тип «Константа» и присвойте ей значение 123.
Константы также могут использоваться для инициализации массивов (Раздел "Массивы"). Для
обеспечения этой возможности в настройках проекта предварительно должна быть выбрана
функция Allow extension of IEC standards («Разрешить расширения стандартов МЭК»).
Project Management \ The Workspace \ General project settings \ Settings for IEC compliance
Инициализация
Переменные и константы могут быть также проинициализированны в редакторе объявлений.
Область видимости
Область действия объявленных переменных и типов данных зависит от положения файла объ-
явлений в окне Logical View.
Простые типы данных также называют основными типами данных. Эти типы данных формируют
основу для всех остальных составных типов данных.
В следующем списке приведены все основные типы данных, описанные в стандарте МЭК 61131-3,
а также указана область их применения.
Полный список основных типов данных с указанием областей их применения и диапазонов зна-
чений приведен во встроенной справочной документации Automation Studio.
Одной из особенностей типов данных, определенных стандартом МЭК, является то, что
они полностью независимы от используемой платформы. А это означает, что эти типы
данных всегда имеют одинаковый диапазон значений независимо от архитектуры про-
цессора или программного кода, в котором они используются.
Этот тип преобразования гарантирует наличие достаточного объема памяти для хране-
ния переменной нового типа данных. Данное преобразование осуществляется без уча-
стия программиста. Компилятор выполняет преобразование неявным образом.
Programming \ Libraries \ IEC 61131-3 functions \ AsIecCon \ Function blocks and functions
Определяемые пользователем типы данных могут быть созданы на основе различных простых
типов данных. Этот метод называется «создание производных типов» (derivation). Производные
типы данных могут состоять не только из простых типов данных, но и из других производных.
К производным типам данных относятся следующие:
• Массивы и многомерные массивы
• Структуры
• Переопределенные типы данных и поддиапазонны
• Данные перечислимого типа
Programming \ Variables and data types \ Data types \ Derived data types
2.3.1 Массивы
Image 10: Массив данных типа INT с нумерацией элементов от 0 до 9 соответствует 10 различным элементам массива.
Объявление VAR
переменных aPressure : ARRAY[0..9] OF INT := [10(0)];
END_VAR
Программный (*Присвоение значения 123 элементу с индексом 0*)
код aPressure[0] := 123;
Массив должен содержать 10 элементов. Наименьший индекс массива равен 0. Тип данных
должен быть INT.
С помощью индекса получите доступ к массиву в коде программы. Используйте для этой цели
фиксированные числа и константы.
Верхний и нижний индексы массива могут быть определены с использованием таких констант. В
дальнейшем эти константы могут использоваться в программном коде для ограничения диапазо-
на изменения индекса массива.
Программный код теперь обновлен таким образом, чтобы индекс, используемый для об-
ращения к элементам массива, был ограничен максимальным индексом массива. Пре-
имущество такого подхода заключается в том, что изменение размеров массива (как в
большую, так и меньшую сторону) не требует редактирования программного кода.
Programming \ Variables and data types \ Data types \ Derived data types \ Arrays
Тип данных, к которому относится среднее значение, должен быть таким же, как тип данных
массива (INT).
Многомерные массивы
Массивы могут также иметь несколько измерений. Объявление и использование в таком случае
могут осуществляться, например, следующим образом:
Объявле- VAR
ние пере- Array2Dim : ARRAY[0..6,0..6] OF INT;
менных END_VAR
Программ- Array2Dim[3,3] := 11;
ный код
В проект Automation Studio может быть импортирована библиотека IEC Check для упрощения
поиска подобных ошибок на этапе выполнения.
В дополнение к массивам, используя простые типы данных, можно создавать другие производные
типы данных.
Существует возможность переопределить уже существующий тип данных. Создается новый тип
данных с новым именем, который обладает такими же свойствами, как и исходный тип данных.
Для новых типов данных также может быть задано начальное значение. В итоге все переменные
этого типа данных по умолчанию получат заданное таким образом значение.
Для переопределенных типов данных может быть также указан допустимый диапазон значений.
В таком случае переменным допускается присваивать значения этого типа только в пределах
заданного диапазона значений.
Programming \ Variables and data types \ Data types \ Derived data types \ Direct derivation
Programming \ Variables and data types \ Data types \ Derived data types \ Subranges
Откройте редактор объявления типа данных и объявите новый тип, задав ему имя pressure_typ
и назначив INT в качестве исходного типа данных.
2) Объявите константы.
С помощью двух констант задайте диапазон значений для этого нового типа данных.
2.3.3 Структуры
Programming \ Variables and data types \ Data types \ Composite data types \ Structures
Programming \ Editors \ Table editors \ Declaration editors \ Data type declaration
Для каждого элемента может быть выбран любой тип данных в зависимости от того, каким образом
эти элементы должны использоваться в программе.
1) Объявите структуру.
Используя новый тип данных, объявите новую переменную с именем "cappuccino". Исполь-
зуйте переменную в коде программы и проинициализируйте элементы значениями.
Массивы структур
Структуры также могут являться элементами массива. В этом случае действуют такие же правила
как и в отношении массивов простых типов данных. Для доступа к элементам также используется
индекс, значение которого должно быть ограничено в прикладной программе, так чтобы не воз-
никали ошибки доступа к памяти.
Перечисление — это по сути еще один способ организации списка значений. Таким образом, воз-
можно использование перечислимых типов данных с переменными. Вместо числового значения
элемента списка переменная содержит соответствующий текст.
Значения перечисленных элементов нумеруются автоматически в порядке возрастания, начиная
с 0. Также могут быть заданы начальные значения.
Перечислимые типы и содержащиеся в них элементы часто используются для обозначения раз-
личных состояний машины.
Programming \ Variables and data types \ Data types \ Derived data types \ Enumeration
2.4 Строки
Строка представляет собой ряд последовательно расположенных байтов. Каждый байт содержит
буквенно-цифровой или управляющий символ. Цепочка символов образует строку.
При определении строки из 10 символов она состоит из 10 используемых символов. Каждая стро-
ка завершается двоичным 0 (так называем нуль-терминатором), который не учитывается в каче-
стве используемого символа. Другими словами строка из 10 символов фактически занимает 11
байт памяти.
Если фактически используется только часть символов, то содержимое памяти, следующее за
двоичным символом 0, остается неопределенным.
Объявление VAR
переменных sDescription : STRING[80] := 'Description';
END_VAR
Программный sDescription := 'Hello World';
код
Table 20: Объявление строки, использование ее в коде программы, присвоение текста
Если строковой переменной присваивается строка, имеющая слишком большую длину (т.е. длина
превышает длину, указанную при объявлении строковой переменной), то в таком случае строка
обрезается компилятором.
Programming \ Variables and data types \ Data types \ Basic data types \ STRING, WSTRING
Programming \ Standards \ Literals in IEC languages
Programming \ Standards \ ASCII tables
Сравнение строк
Строки могут быть проверены на идентичность. Результатом этой операции будет равенство или
неравенство строк.
Объявление VAR
переменных sTextA: STRING[80] := 'Perfection';
sTextB: STRING[80] := ' in Automation';
equal : BOOL;
END_VAR
Если требуется выявить различия между двумя строками, может быть использована
функция brsstrcmp из библиотеки AsBrStr.
Функции также необходимы для более сложной обработки строк. В следующем разделе приво-
дится обзор доступных библиотек и объясняется, в каких случаях они могут быть использованы.
Библиотеки, содержащие функции для работы со строками:
• Standard
• AsIecCon
• AsBrStr
• AsBrWStr
• AsString
Преобразование строк
Если строка имеет соответствующее содержимое, то она может быть преобразована в числовое
значение. Обратное преобразование также возможно. Эти функции преобразования являются
только парой примеров из множества функций, включенных в библиотеку AslecCon, которая ав-
томатически добавляется к каждому новому проекту Automation Studio.
Объявление VAR
переменных Pressure : REAL;
sPressure : STRING[80] := '12.34';
END_VAR
Программный Pressure := STRING_TO_REAL(sPressure);
код
Table 22: Преобразование строки в вещественное число
Объявление VAR
переменных Pressure : REAL;
sPressure : STRING[80] := '12.34';
END_VAR
Программный sPressure := REAL_TO_STRING(Pressure );
код
Table 23: Преобразование вещественного числа в строку
Обработка строк
Наряду со сравнением строк друг с другом и преобразованием их в числовые значения, также
возможно соединение строк друг с другом (операция конкатенации), поиск определенной после-
довательности символов в строке, замена текста и даже помещение одной строки в определен-
ную позицию в другой строке.
Все эти задачи могут быть выполнены с помощью функций из библиотеки STANDARD.
Объявление VAR
переменных sSourceString : STRING[80] := 'Strings in AS';
sFindString : STRING[80] := 'in';
position : INT;
END_VAR
Программный position := FIND(sSourceString, sFindString);
код
Table 24: Определении позиции одной строки в пределах другой строки
В результате получается значение 9, так как искомая строка начинается с 9-й позиции
строки, в которой выполнялся поиск.
1) Объявите переменные.
Дополнительная информация
Функции из библиотеки STANDARD могут использоваться для выполнения операций со строка-
ми. Функции всегда проверяют доступную длину переменной, благодаря чему предотвращается
переполнение памяти.
При этом размер памяти, выделяемый для переменной, как правило, ограничивается объемом
32 КБ. Операции со строками, обеспечивающие обработку данных большего объема, доступны
в библиотеках AsBrStr и AsBrWStr.
При вызове функций из библиотеки AsBrStr следует помнить о том, что в этом случае
система не проверяет, имеется ли достаточное место для размещения результирующей
строки в целевой переменной. Если в программе содержатся ошибки, то может произой-
ти переполнение памяти. По этой причине необходимо всегда в прикладной программе
проверять, достаточно ли памяти, зарезервированной для целевой переменной, для вы-
полнения операции со строкой.
Окончательная длина строки может быть определена с помощью функции brsstrlen из
библиотеки AsBrStr или LEN из библиотеки STANDARD.
Адреса
Каждой переменной, константе, массиву и структуре, которые создаются в окне объявления, ком-
пилятором присваивается определенный адрес памяти. Этот адрес обозначает начальную точку
в памяти контроллера для размещения данных соответствующей переменной.
Во время выполнения программы этот адрес памяти не может быть изменен, поэтому эти пере-
менные называют статическими. Адрес, по которому расположена переменная, может быть опре-
делен с помощью функции ADR().
Адреса переменных чаще всего необходимы для передачи данных функциям и функциональным
блокам. Для того чтобы функция имела возможность изменять значение внешней переменной, ей
необходимо передать адрес данной переменной в качестве параметра. Работа с библиотеками
Несмотря на то, что адрес переменной в памяти может быть определен, он никогда не
должен использоваться в программном коде как фиксированное значение. Это связано с
тем, что каждый раз при начальной загрузке контроллера операционная система назна-
чает новый адрес.
Определение адресов
Для определения адреса памяти, по которому расположен массив aCoffee, используйте функцию
ADR(). Необходимо установить адреса для элементов с индексами 0 и 1. Вычислите разницу меж-
ду двумя адресами и проверьте, соответствует ли результат ожидаемому.
Объем памяти
Каждая статическая переменная занимает определенный объем памяти, который зависит от за-
данного ей типа данных. В некоторых случаях необходимо точно знать, сколько требуется памя-
ти. Объем памяти может быть определен с помощью функции sizeof().
В случае массивов, общий объем памяти кратен количеству используемых в массиве элементов.
Количество элементов в массиве также может быть рассчитано.
Programming \ Libraries \ IEC 61131-3 functions \ OPERATOR \ Address and length functions
\ ADR
Programming \ Libraries \ IEC 61131-3 functions \ OPERATOR \ Address and length functions
\ SIZEOF
При создании прикладной программы необходимо рассмотреть, какое влияние будут ока-
зывать сбои питания или перезагрузки на сохраненные в памяти переменные.
После любой инициализации или перезагрузки прикладная программа должна быть спо-
собна загружаться с правильными параметрами.
Копирование
В зависимости от используемого языка программирования, существует несколько различных ме-
тодов для копирования данных. В программах на языке Structured Text данные из переменной А
могут быть скопированы в переменную B путем операции присваивания. При этом необходимо,
чтобы типы данных исходной переменной и целевой были идентичны, в противном случае будет
выдана ошибка компиляции.
Если данные, относящиеся к одному типу данных, должны быть скопированы в переменную дру-
гого типа данных, то это может быть реализовано с помощью функции brsmemcpy(). В этом слу-
чае в функцию должны быть переданы адреса памяти исходной и целевой переменной, а также
количество копируемых байтов.
Объявление VAR
переменных aTarget : ARRAY[0..4] OF USINT;
aSource : ARRAY[0..4] OF USINT;
END_VAR
Программный brsmemcpy(ADR(aTarget), ADR(aSource), SIZEOF(aTarget));
код
Table 27: Копирование области памяти с помощью функции brsmemcpy()
При этом необходимо следить за тем, чтобы объем целевой памяти был достаточным для сохра-
нения копируемого блока данных. Для определения размера минимально необходимого количе-
ства памяти могут использоваться функции sizeof() и MIN(). Такой подход позволяет обеспечить
копирование только в том случае, когда имеется соответствующее место в целевой памяти.
Объявление VAR
переменных aTarget : ARRAY[0..2] OF USINT;
aSource : ARRAY[0..4] OF USINT;
min_len : USINT := 0;
END_VAR
Программный min_len := MIN(SIZEOF(aTarget), SIZEOF(aSource));
код brsmemcpy(ADR(aTarget), ADR(aSource), min_len);
Table 28: Копирование ограниченной области памяти с применением функции MIN()
Инициализация
Переменные различных типов данных могут быть проинициализированы при объявлении. В неко-
торых случаях возникает необходимость в перезаписи определенных областей памяти в програм-
ме, что может быть реализовано в программном коде с помощью функции brsmemset().
Объявление VAR
переменных aTarget : ARRAY[0..4] OF USINT;
END_VAR
Программный brsmemset(ADR(aTarget), 0 , SIZEOF(aTarget));
код
Table 29: Инициализация области памяти с помощью функции brsmemset()
3) Скопируйте данные.
Скопируйте содержимое первой структуры во вторую. Используйте для этой цели функцию
brsmemcpy(). При использовании этих функций следует обратить внимание на длину данных.
4 РАБОТА С БИБЛИОТЕКАМИ
Библиотека представляет собой набор функций, функциональных блоков, констант и типов дан-
ных. Любая из имеющихся библиотек может быть в любое время добавлена в окно Logical View.
Для выбора доступны как стандартные библиотеки B&R, так и библиотеки, созданные пользова-
телем.
Project Management \ Logical view \ Wizards in the logical view \ Inserting libraries
Функция
Функция вызывается из программы, принимает определенные параметры в качестве аргументов
и возвращает некоторое значение. При вызове функции ей передаются параметры и она сразу
же возвращает значение. При последующем вызове функции могут быть переданы другие пара-
метры.
Функциональный блок
В отличие от функции, функциональный блок может возвращать более одного значения. Допол-
нительно требуется также объявить «экземпляр» функционального блока. Кроме того, функцио-
нальный блок может использоваться для повторного многократного выполнения определенной
задачи.
Два таймера могут быть запущены в различные моменты времени и с разной задержкой.
Информация о заданной задержке и о том, сколько времени уже прошло, хранится в
соответствующем экземпляре функционального блока.
Вызов функционального блока должен продолжаться все время, пока он находится в со-
стоянии BUSY («ЗАНЯТ»). Как только состояние станет равным 0, что свидетельствует
о правильном выполнении процедуры, выходные параметры уже могут использоваться
в программе. Любое состояние, отличное от 0 или BUSY, должно быть соответствующим
образом обработано в программном коде. Обзор номеров ошибок приводится в докумен-
тации к соответствующей библиотеке.
Правильно оцените значение выхода Status. Установите значение переменной равным 1, если
Status = ERR_FUB_BUSY. Установите значение равным 2, если Status = 0. В случае других
ошибок (состояний выхода Status) присвойте переменной значение 100.
Найдите информацию о кодах ошибок для этого функционального блока во встроенной спра-
вочной документации Automation Studio.
Ответьте на вопрос, каким образом программа может обработать эту ошибку. Возможно ли
принятие каких-либо мер по предотвращению возникновения этой ошибки в ходе выполнения
программы?
Компоненты библиотеки
Библиотека объединяет ряд компонентов и свойств.
Programming \ Libraries
Project management \ Logical view \ Libraries
Если функциональный блок имеет выход состояния (Status), рекомендуется для этой це-
ли определить константы. Эти константы могут быть объявлены в файле библиотеки .var.
Для размещения пользовательских констант предусмотрена определяемая пользовате-
лем область значений.
Diagnostics and service \ Error numbers \ AR system \ 50000 - 59999 user area
Реализация и тестирование
Для того чтобы новые функции библиотеки работали должным образом, необходимо выполнить
тщательное их тестирование. Для этой цели новые функции и функциональные блоки могут вы-
зываться и тестироваться в любой программе.
Экспорт и перенос
После того как библиотека будет полностью реализована, ей может быть присвоен номер вер-
сии, например, в свойствах библиотеки. Затем может быть выполнен экспорт пользовательской
библиотеки. Данная задача решается с помощью меню File, вызываемого из окна Logical View.
Пользователь также может выбрать, должны ли экспортироваться исходные файлы библиотеки.
При этом необходимо отметить, что если исходные файлы не добавляются, то впоследствии в
экспортированную библиотеку уже не могут быть внесены никакие изменения.
В окне Logical View над библиотеками могут производиться все те же операции, как и с
программами. Библиотеки могут храниться в том же самом пакете, в котором находится
использующая их программа.
Project Management \ Logical view \ Wizards in the logical view \ Inserting libraries
Project Management \ Logical view \ Inserting functions and function blocks into libraries
Programming \ Editors \ Table editors \ Declaration editors \ Function and function block
declarations
Project management \ Logical view \ Exporting a user library
Project management \ Logical view \ Help for user libraries
Использование стандартных библиотек B&R позволяет упростить выполнение задач. Для облег-
чения работы с этими библиотеками компания B&R разработала несколько примеров их исполь-
зования. На основе стандартных решений функции этих библиотек могут использоваться более
эффективно.
Импорт этих готовых блоков может осуществляться с помощью мастера из окна Logical View.
После этого примеры могут быть изменены с учетом конкретной решаемой задачи (например,
настроены параметры интерфейса) и затем уже загружены в целевую систему.
Кроме того, примеры были разработаны таким образом, что для их тестирования не требуется
контроллер. С работой примеров можно ознакомиться с помощью эмулятора контроллера ARSim.
Структура отдельных программ при этом не изменяется. Благодаря этому примеры могут исполь-
зоваться в различных областях применения. Описания и обзоры примеров включены во встроен-
ную справочную документацию Automation Studio.
Добавление примера
Добавьте в свой проект следующий пример:
До сих пор все переменные, массивы и структуры использовались локально. В тоже время часто
бывает необходимо хранить данные в файле, в определенном месте памяти или передавать их
по сети. При этом следует принимать во внимание несколько важных моментов.
Необходимо иметь представление о том, как данные хранятся в памяти, а также о формате, в
котором они хранятся и переносятся. Кроме того, при хранении или передаче, данные должны
сохранять целостность.
5.1 Выравнивание
Различные архитектуры процессоров следуют различным правилам в том, что касается выпол-
нения операций с данными и управления данными. Как правило, пользователи не должны прини-
мать это во внимание, за исключением крайне редких случаев. В то же время если данные долж-
ны быть переданы между системами, которые имеют различную архитектуру, рекомендуется хо-
рошо продумать то, каким образом эти данные должны быть сохранены.
Вполне возможно, что длина данных, определенных вами, не будет соответствовать ожида-
емой.
1) Переставьте элементы.
Данные могут быть сохранены и переданы в различных форматах. Например, если рассматри-
вать структуру, входящие в ее состав отдельные байты интерпретируются и представляются в
соответствии с используемыми типами данных.
Если содержимое структуры скопировать в массив байт, то останутся только двоичные данные.
В этом случае данные можно интерпретировать только если известен их изначальный формат.
Как видно из таблицы, все данные всегда хранятся в двоичной форме. А если формат
данных известен, они могут быть отображены в ином виде. Расширение файла никаким
образом не отражает его содержимого, а просто предоставляет ключ к тому, каким обра-
зом данные должны быть интерпретированы.
Поэтому, прежде чем запустить процедуру сохранения или копирования, настоятельно рекомен-
дуется выполнить «подготовительный этап» в программе, на котором данные будут подготовле-
ны должным образом. Этот этап выполняется всего один раз перед процедурой сохранения или
передачи. Таким образом обеспечивается целостность данных.
Объявле- VAR
ние пере- stepSave : UINT;
менных aSend : USINT[0..9];
aRaw: USINT[0..9];
cmdSave : BOOL := FALSE;
END_VAR
Программа CASE sSave OF
0: (*--- ######## ##########*)
IF cmdSave = TRUE THEN
sSave := 1; (*--> Prepare & Save*)
END_IF
1: (*--- ########### ######*)
brsmemcpy( ADR(aSend),ADR(aRaw),SIZEOF(aRaw));
2: (*--- ######### ###### # ####*)
SaveData( ADR(aSend));
END_CASE
Table 38: Подготовка данных перед сохранением их в файл
Данные могут храниться в контроллере самыми различными способами. Например, в виде блока
памяти в ОЗУ, в виде объекта данных (data object) с контрольной суммой, в виде файла, в фай-
ловой системе или в сети.
В окне Logical View среды Automation Studio создайте объект данных "param".
3) Считайте содержимое.
4) Проанализируйте данные.
Не всегда данные остаются в одной и той же системе. Файлы представляют собой один из спосо-
бов для хранения и передачи данных. Библиотека FileIO позволяет получить доступ к внутренней
файловой системе, USB-флеш-накопителям или сетевым ресурсам.
Чтобы получить доступ к файловой системе, для места хранения необходимо задать
символическое обозначение. С этой целью используются файловые устройства. Файло-
вое устройство обозначается определенным именем (например, RECIPES, которое ука-
зывает на определенное место (например, F:\Recipes\).
Файловые устройства могут создаваться в системной конфигурации Automation Studio
или с помощью функционального блока DevLink().
Скопируйте файл на карту памяти CompactFlash. Доступ к карте памяти CompactFlash может
быть обеспечен посредством FTP, а также с помощью CompactFlash адаптера. В эмуляторе
контроллера ARSIM диск "С" является жестким диском используемого компьютера.
Реализуйте конечный аппарат. Определите перечислимый тип данных, который будет отра-
жать состояния конечного автомата. Напишите программу, которая открывает файл, считы-
вает его содержимое и затем закрывает.
При хранении данных на карте памяти CompactFlash необходимо обеспечить, чтобы они
находились в пользовательском разделе. В обычной файловой системе это диск D:\, в
защищенной файловой системе — диск F:\. Использование различных разделов позво-
ляет разграничить операционную систему, приложение и пользовательские данные.
Карта памяти CompactFlash может быть разбита на разделы при подготовке ее в среде
Automation Studio / Runtime Utility Center.
Diagnostics and service \ Service tool \ Runtime Utility Center \ Creating a list / data medium
\ Creating a CompactFlash card
Тема передачи данных и связи является довольно сложной и затрагивает несколько различных
областей. Прежде чем приступить к реализации задачи рекомендуется ознакомиться с различ-
ными аспектами, которые будут при этом затронуты.
Вопросы, на которые необходимо ответить в отношении передачи данных и связи:
• Какие данные должны передаваться?
• С какой станцией устанавливается связь?
• В качестве станции используется ПК или контроллер?
• Какая используется среда передачи?
• Какой используется протокол передачи?
• Какой используется формат данных?
• Используется одна или несколько платформ?
• Имеется ли стандартная библиотека, которая поддерживает необходимый протокол?
• Используется ли полевая шина (промышленная сеть)?
• Какой объем данных должен передаваться?
• Какие требования предъявляются к скорости передачи и времени отклика?
• дерево,
• звезда,
• шина,
• кольцо.
Топология «точка-точка»
При соединении точка-точка, как правило, имеются ведущее и ведомое устройства. Ведущее
устройство выдает команды ведомому, которое отвечает на них или выполняет их.
Сеть
Сеть обычно состоит из нескольких станций. Станции внутри сети координируют свою работу в
зависимости от метода доступа. Например, некоторые методы доступа осуществляют обнаруже-
ние и разрешение коллизий (например, CSMA/CD).
Также есть методы доступа, которые предотвращаются возникновение коллизий (например,
CSMA/CA). Например, POWERLINK использует метод, основанный на выделении временных ин-
тервалов, что также позволяет предотвратить возникновение коллизий. Предотвращение колли-
зий позволяет передавать данные в режиме реального времени.
7.2 Протоколы
Протокол связи определяет, каким образом данные должны передаваться от устройства "A" в
устройство "B". Оба устройства должны поддерживать протокол передачи данных, знать струк-
туру передаваемых данных и как ими оперировать. Кроме того, данные должны передаваться в
соответствующем формате, то есть оба устройства, передающее и приемное, должны понимать
используемый формат данных.
Протокол включает в себя следующие элементы:
• идентификатор передающего устройства,
• адрес получателя (приемного устройства),
• объем данных,
• сами данные,
• контрольные суммы.
Communication
Возможности приложения
Использование библиотек поддержки связи позволяет реализовывать множество различных при-
кладных сценариев. Например, библиотека AsTcp обеспечивает настройку и контроль соедине-
ния по протоколу управления передачей TCP (Transmission Control Protocol). К контроллеру B&R
могут быть подключены устройства сторонних производителей, например, контроллеры или Ин-
тернет-камеры.
1) Определите данные.
8 ИТОГ
Всем, кто занимается проектированием систем, постоянно приходится иметь дело с данными.
Очень большое значение имеет то, как эти данные организованы в системе. В этой связи приме-
няют основные типы данных, массивы и структуры, которые определяют принципы хранения и
передачи данных.
Данные могут храниться в файлах, областях памяти или объектах данных. В этих случаях необ-
ходимо определить формат, используемый для хранения данных. Для передачи данных также
необходимо определить формат данных и протокол передачи. Эта информация должна быть из-
вестна обеим станциям — передающей и принимающей.
Данные должны оставаться неизменными во время процесса передачи или сохранения.