Що означает входные и выходные данные
Всем Привет!
Вот пишу курсовую!Есть одна проблемка:
У меня есть содержание, по котором я пишу курсовую. (Название курсовой Базад Данных Флоры и Фауны)
Там есть два пунктика, которые я не очень понимаю!
Нужно написать Входные данные и Выходные данные.
Что подразумевается под Входными данными и что под Выходными данными?
Зарание благодарен!
Исходные, входные и выходные данные
Друзья мне нужна Ваша помощь,почему у меня неувязки в исходных,входных и выходных данных? Вроде бы.
Входные и выходные данные!
Сегодня лектор помог написать программу но по прибытию домой стал разбиратся и ничего не.
Входные и выходные данные
Подскажите, что является входными и выходными данными в следующих 4 работах. Лабораторная работа.
Ну смотрите опишу подробно!
Нашел пример курсовой, для того чтобы разобратся!
Название курсовой: Проектирование информационных баз данных
В курсовой работе в соответствии с заданием автоматизируется деятельность отдела сбыта предприятия «Русская еда».
На предприятии работают 3 цеха, в которых производится продукция.
Есть там пункт 1.2. Перечень входных (первичных) документов.
Смотрите фото
Я так понял это данные, которые нужно помещять в базу данных?
Если нет, поправте меня!
Вы меня конечно извините, но чем вы занимались во время лекций?
Советую просто спросить у преподавателя. Так как я еще пока начинающий телепат.
Входные данные это по большому счету то что мы должные ввести в компьютер по средством либо текстового файла либо какого другого либо с помощью какого-то интерфейса программы. А выходные данные это то что отобразится или то что мы получим в результате манипуляций ими программы.
Вот то что я пишу сейчас есть входные данные, но когда вы их будите читать это уже будут выходные данные. В этом и заключается вся трудность. Везде нужно смотреть по отношению к чему-то. А так просто вам даже Эйнштейн не скажет что есть входными а что выходными в вашей курсовой. Может быть вам даже писать БД не нужно, тогда это вообще меняет дело.
Вы дали слишком мало входных данных, что бы получить на выходе желаемый ответ. Какой вопрос такой и ответ.
Что такое входные данные в программировании
Пример формулировки олимпиадной задачи по программированию
Ограничение времени: 1.0 секунды
Ограничение памяти: 64 МБ
В единственную строку выходного файла OUTPUT.TXT нужно вывести одно целое число — сумму чисел А и В.
Эта простая задача соответствует всем критериям правильной постановки олимпиадной задачи и позволяет ознакомиться с системой автоматической проверки. При решении необходимо из входного файла input.txt, расположенного в текущей папке (где и Ваша программа) считать 2 целых числа и вывести их сумму в выходной файл output.txt.
В мире предпочтение отдается языку С++, но в России по-прежнему классическим языком программирования остается Pascal. В школе программистов при нашем АГУ изучают С++. Поэтому, чтобы получить поддержку при подготовке к олимпиаде на республиканском уровне желательно изучить ещё и С++, ну а я помогу.
Пример решения рассмотренной задачи о сложении двух чисел на языках Pascal и С:
Для участника олимпиады, иногда, требуется написать программу, которая считывает некоторые данные из одного файла, производит определенные вычисления, а результат выводит в другой файл.
Для работы с файлами в языке Паскаль, можно обойтись без использования файловых переменных. Добавив две строчки кода в программу, можно перенаправить ввод данных с консоли на ввод из файла, а вывод на экран заменить на вывод в файл.
assign(input, ‘input.txt’); reset(input);
assign(output, ‘output.txt’); rewrite(output);
Ну и соответственно программы ваши примут вид:
1. Язык программирования и программа
1.1. Структура программы и языка программирования
Изучение программирования нельзя начать, не ответив на ряд вопросов: а что же такое программа, алгоритм, данные, язык программирования. В этом списке основным термином является алгоритм, который, как и большинство понятий общего вида, имеет множество определений. Например:
«Алгоритм — это конечный набор правил, который определяет последовательность операций для решения конкретного множества задач и обладает пятью важными чертами: конечность, определённость, ввод, вывод, эффективность». ( Д. Э. Кнут)
«Алгоритм — это точное предписание, определяющее вычислительный процесс, идущий от варьируемых исходных данных к искомому результату». ( А. Марков).
Компьютерная программа, в отличие от абстрактного алгоритма, имеет собственные элементы, над которыми она совершает действия, и которые являются ее составной частью. Это – данные. Таким образом, она представляет собой замкнутую систему, отделенную от внешней среды. Посмотрим, из каких еще частей состоит компьютерная программа. Все они должны выражаться в соответствующих компонентах языка программирования:
· в языке программирования имеются средства описания данных, которые позволяют программисту конструировать различные формы их представления – типы данных;
· вторая основная компонента программы – описание порядка, последовательности выполняемых действий, также называется алгоритмом «в узком смысле», или алгоритмической компонентой. Она обычно состоит из двух частей. Первая часть – выражения, представляет собой описание линейной последовательности выполнения простейших действий из набора операций (арифметические операции, присваивание, условные выражения). Они включаются во вторую компоненту – операторы, которые задают ту или иную последовательность действий;
· как уже отмечалось, программа работает исключительно с данными, что и определяет сущность алгоритма. В наборе операций имеются команды ввода-вывода, осуществляющие обмен данными между переменными и внешней средой (посредством устройств ввода-вывода). С «программно-эгоцентрической» точки зрения это выглядит чистой формальностью и не является существенной частью программы;
Любая программа выполняется в компьютере. Посмотрим, как соотносятся между собой компоненты программы и компьютерной архитектуры:
· компоненты программы находятся в памяти. В принципе, память является общей для них всех, но логически она разделяется на области, именуемые сегментами. Прежде всего, это сегмент данных, содержащий, естественно, данные программы. Алгоритмическая компонента (выражения, операторы) также находится в памяти в собственном сегменте команд;
И, наконец, язык программирования также содержит в себе компоненты, предназначенные для описания соответствующих частей программы:
· средства описания данных: определение типов данных (форма представления) и переменных;
· набор операций над основными типами данных (включая ввод-вывод), а также средства записи выражений;
· набор операторов, определяющих различные варианты порядка выполнения выражений в программе (последовательность, условие, повторение, блок);
· средства разбиения программы на независимые части – модули (функции, процедуры), взаимодействующие между собой через программные интерфейсы.

· если данные можно в какой-то мере обладают свойствами пространства (объем, протяженность), то алгоритм – свойствами времени (эффективность, быстродействие). Тезис «проигрывая в пространстве, выигрываем во времени» здесь также уместен: эффективность программ может быть принципиально повышена за счет использования дополнительных структур данных в памяти;
· c интаксически данные являются аналогом существительных (объектов, над которыми производятся действия), набор операций – аналогом глаголов (выполняемых действий). Программа в целом аналогично предложению, описывающему процесс – последовательность действий над заданными предметами с целью получения результата.
Взаимосвязь алгоритма и данных в программе не является простой и линейной. Процесс выполнения любой программы можно рассматривать с двух точек зрения: как последовательность выполнения операций (команд), в которых содержится информация об операндах (данных), которые они обрабатывают – поток команд (поток управления). С другой стороны – любой элемент данных можно рассматривать как результат выполнения действий над исходными данными и как источник данных (операнд) для последующих результатов. Т.е. в программе также присутствует логическая последовательность вычислений (преобразований данных), называемая потоком данных. Исторически сложилось, что в традиционной (фон Неймановской) архитектуре в программе в явном виде задается последовательность команд, т.е. программа выглядит как поток управления, в котором алгоритмическая компонента является первичной (ведущей), а данные – вторичной (ведомой).

тБЪДЕМ 4 вБЪЩ ДБООЩИ


пЮЕЧЙДОП, ЮФП УХЭЕУФЧХЕФ НОПЦЕУФЧП ХТПЧОЕК БВУФТБЛГЙЙ НЕЦДХ ьчн, ЙНЕАЭЕК ДЕМП У ВЙФБНЙ, Й ЛПОЕЮОЩН РПМШЪПЧБФЕМЕН, ЛПФПТПНХ УПЧЕТЫЕООП ОЕФ ДЕМБ, ДП ФПЗП, ЛБЛ ЙОЖПТНБГЙС ИТБОЙФУС Ч ьчн.
рТЕДУФБЧМЕОЙЕ ВБЪЩ ДБООЩИ Ч ухвд ЧЛМАЮБЕФ ФТЙ ХТПЧОС: ЧОХФТЕООЙК, ЛПОГЕРФХБМШОЩК Й ЧОЕЫОЙК (ТЙУХОПЛ 1).
оБРТЙНЕТ, РПМШЪПЧБФЕМШ ЙЪ ПФДЕМБ ЛБДТПЧ НПЦЕФ ТБУУНБФТЙЧБФШ ВБЪХ ДБООЩИ ЛБЛ ОБВПТ ЪБРЙУЕК У ЙОЖПТНБГЙЕК ПВ ПФДЕМБИ РМАУ ОБВПТ ЪБРЙУЕК У ЙОЖПТНБГЙЕК П УМХЦБЭЙИ Й ОЙЮЕЗП ОЕ ЪОБФШ П ЪБРЙУСИ У ЙОЖПТНБГЙЕК П ДЕФБМСИ Й РПУФБЧЭЙЛБИ, У ЛПФПТЩНЙ ТБВПФБАФ РПМШЪПЧБФЕМЙ Ч ПФДЕМЕ ПВЕУРЕЮЕОЙС.
ч ЛПОГЕРФХБМШОПК УИЕНЕ ОЕ ДПМЦОП ВЩФШ ОЙЛБЛПЗП ХРПНЙОБОЙС П РТЕДУФБЧМЕОЙЙ ИТБОЙНПЗП ЖБКМБ, РПУМЕДПЧБФЕМШОПУФЙ ИТБОЙНЩИ ЪБРЙУЕК, ЙОДЕЛУЙТПЧБОЙЙ, ИЕЫ-БДТЕУБГЙЙ, ХЛБЪБФЕМСИ ЙМЙ ДТХЗЙИ РПДТПВОПУФСИ ИТБОЕОЙС ЙМЙ ДПУФХРБ. пВЩЮОП РПД ЛПОГЕРФХБМШОПК НПДЕМША РПОЙНБЕФУС ЙОЖПТНБГЙПООБС НПДЕМШ (НБФЕНБФЙЮЕУЛБС (ЙМЙ МПЗЙЮЕУЛБС) НПДЕМШ) вд.
дТХЗЙНЙ УМПЧБНЙ, ЧОХФТЕООЕЕ РТЕДУФБЧМЕОЙЕ РТЕДРПМБЗБЕФ ВЕУЛПОЕЮОПЕ МЙОЕКОПЕ БДТЕУОПЕ РТПУФТБОУФЧП; РПДТПВОПУФЙ ФПЗП, ЛБЛ БДТЕУОПЕ РТПУФТБОУФЧП ПФПВТБЦЕОП ОБ ЖЙЪЙЮЕУЛПЕ ХУФТПКУФЧП ИТБОЕОЙС, ПЮЕОШ ЪБЧЙУСФ ПФ УЙУФЕНЩ Й ХНЩЫМЕООП ОЕ ЧЛМАЮЕОЩ Ч ПВЭХА БТИЙФЕЛФХТХ.
чОХФТЕООЕЕ РТЕДУФБЧМЕОЙЕ ПРЙУЩЧБЕФУС У РПНПЭША ЧОХФТЕООЕК УИЕНЩ, ЛПФПТБС ПРТЕДЕМСЕФ ОЕ ФПМШЛП ТБЪМЙЮОЩЕ ФЙРЩ ИТБОЙНЩИ ЪБРЙУЕК, ОП ФБЛЦЕ УХЭЕУФЧХАЭЙЕ ЙОДЕЛУЩ, УРПУПВЩ РТЕДУФБЧМЕОЙС ИТБОЙНЩИ РПМЕК, ЖЙЪЙЮЕУЛХА РПУМЕДПЧБФЕМШОПУФШ ИТБОЙНЩИ ЪБРЙУЕК Й Ф.Д.
MПЦОП УЛБЪБФШ, ЮФП вд УПУФПЙФ ЙЪ ОБВПТБ РПУФПСООЩИ ДБООЩИ, ЙУРПМШЪХЕНЩИ РТЙМПЦЕОЙСНЙ. рПД УМПЧПН РПУФПСООЩЕ РПДТБЪХНЕЧБАФУС ДБООЩЕ, ЛПФПТЩЕ ПФМЙЮБАФУС ПФ ДТХЗЙИ, ВПМЕЕ ЙЪНЕОЮЙЧЩИ ДБООЩИ, ФБЛЙИ ЛБЛ РТПНЕЦХФПЮОЩЕ ТЕЪХМШФБФЩ, ЧИПДОЩЕ Й ЧЩИПДОЩЕ ДБООЩЕ Й Ф.Д.
вд ИТБОЙФ ОЕ ФПМШЛП ДБООЩЕ, ОП Й ДБООЩЕ П ДБООЩИ, ФБЛ ОБЪЩЧБЕНЩЕ НЕФБДБООЩЕ.
л ЮЙУМХ ЖХОЛГЙК ухвд РТЙОСФП ПФОПУЙФШ УМЕДХАЭЕЕ.
оЕРПУТЕДУФЧЕООПЕ ХРТБЧМЕОЙЕ ДБООЩНЙ ЧП ЧОЕЫОЕК РБНСФЙ
ьФБ ЖХОЛГЙС ЧЛМАЮБЕФ ПВЕУРЕЮЕОЙЕ ОЕПВИПДЙНЩИ УФТХЛФХТ ЧОЕЫОЕК РБНСФЙ ЛБЛ ДМС ИТБОЕОЙС ОЕРПУТЕДУФЧЕООЩИ ДБООЩИ, ЧИПДСЭЙИ Ч вд, ФБЛ Й ДМС УМХЦЕВОЩИ ГЕМЕК, ОБРТЙНЕТ, ДМС ХВЩУФТЕОЙС ДПУФХРБ Л ДБООЩН Ч ОЕЛПФПТЩИ УМХЮБСИ (ПВЩЮОП ДМС ЬФПЗП ЙУРПМШЪХАФУС ЙОДЕЛУЩ).
хРТБЧМЕОЙЕ ВХЖЕТБНЙ ПРЕТБФЙЧОПК РБНСФЙ
ухвд ПВЩЮОП ТБВПФБАФ У вд ЪОБЮЙФЕМШОПЗП ТБЪНЕТБ; РП ЛТБКОЕК НЕТЕ ЬФПФ ТБЪНЕТ ПВЩЮОП УХЭЕУФЧЕООП РТЕЧЩЫБЕФ ДПУФХРОЩК ПВЯЕН ПРЕТБФЙЧОПК РБНСФЙ. рПОСФОП, ЕУМЙ РТЙ ПВТБЭЕОЙЙ Л МАВПНХ ЬМЕНЕОФХ ДБООЩИ ВХДЕФ РТПЙЪЧПДЙФШУС ПВНЕО У ЧОЕЫОЕК РБНСФША, ФП ЧУС УЙУФЕНБ ВХДЕФ ТБВПФБФШ УП УЛПТПУФША ХУФТПКУФЧБ ЧОЕЫОЕК РБНСФЙ. еДЙОУФЧЕООЩН ЦЕ УРПУПВПН ТЕБМШОПЗП ХЧЕМЙЮЕОЙС ЬФПК УЛПТПУФЙ СЧМСЕФУС ВХЖЕТЙЪБГЙС ДБООЩИ Ч ПРЕТБФЙЧОПК РБНСФЙ. й ДБЦЕ ЕУМЙ ПРЕТБГЙПООБС УЙУФЕНБ РТПЙЪЧПДЙФ ПВЭЕУЙУФЕНОХА ВХЖЕТЙЪБГЙА (ЛБЛ Ч УМХЮБЕ пу UNIX), ЬФПЗП ОЕДПУФБФПЮОП ДМС ГЕМЕК ухвд, ЛПФПТБС ТБУРПМБЗБЕФ ЗПТБЪДП ВПМШЫЕК ЙОЖПТНБГЙЕК П РПМЕЪОПУФЙ ВХЖЕТЙЪБГЙЙ ФПК ЙМЙ ЙОПК ЮБУФЙ вд. рПЬФПНХ Ч ТБЪЧЙФЩИ ухвд РПДДЕТЦЙЧБЕФУС УПВУФЧЕООЩК ОБВПТ ВХЖЕТПЧ ПРЕТБФЙЧОПК РБНСФЙ У УПВУФЧЕООПК ДЙУГЙРМЙОПК ЪБНЕОЩ ВХЖЕТПЧ.
юБУФП ЙНЕЕФ НЕУФП УЙФХБГЙС, ЛПЗДБ ЙУРПМОСЕФУС УТБЪХ ОЕУЛПМШЛП РТПЗТБНН, ПДОПЧТЕНЕООП ПУХЭЕУФЧМСАЭЙИ ДПУФХР Л вд. ухвд ДПМЦОБ ПВЕУРЕЮЙЧБФШ ЪБЭЙФХ ПФ ОБТХЫЕОЙК ЙИ ОЕРТПФЙЧПТЕЮЙЧПУФЙ, СЧМСАЭЙИУС УМЕДУФЧЙЕН ДЧХИ ЛЧБЪЙПДОПЧТЕНЕООЩИ ПРЕТБГЙК ОБД ОЕЛПФПТЩН ЬМЕНЕОФПН ДБООЩИ.
1. лБЛЙЕ ХТПЧОЙ ЙНЕЕФ РТЕДУФБЧМЕОЙЕ вд Ч ухвд?
2. юФП РПОЙНБЕФУС РПД ЧОЕЫОЙН РТЕДУФБЧМЕОЙЕН вд?
3. оБ ЛБЛЙЕ ЧЙДЩ РПДТБЪДЕМСАФУС ДБООЩЕ Ч ухвд?
4. рПЮЕНХ ЧИПДОЩЕ Й ЧЩИПДОЩЕ ДБООЩЕ ОЕ СЧМСАФУС ЮБУФША ухвд?
5. рЕТЕЮЙУМЙФЕ Й ПИБТБЛФЕТЙЪХКФЕ ПУОПЧОЩЕ ЖХОЛГЙЙ ухвд.
лХЪОЕГПЧ у. чЧЕДЕОЙЕ Ч УЙУФЕНЩ ХРТБЧМЕОЙС ВБЪБНЙ ДБООЩИ. // ухвд # 1, 2, 3, 4, 1995; # 1, 2, 3, 4, 5-6 1996
Обращение к программе. Входные и выходные данные.¶
Общая схема по созданию прикладной программы в среде разработки «Beremiz» представлена на рис. Рис. 1. Входными данными являются программные модули, написанные пользователем (в большинстве случаев инженером по автоматизации) на текстовых (ST, IL) и/или графических (FBD, SFC, LD) языках в соответствии со стандартом IEC 61131-3, объединённые в проект. Каждый такой проект представлен в формате XML и хранится в отдельной папке.
Выходными данными является сгенерированный исходный код и исполняемый файл:
Сгенерированный C код, с помощью кросскомпилятора, запущенного под UNIX-подобной оболочной, компилируется в исполняемый бинарный файл, представленный в виде библиотеки.
Исполняемый файл, благодаря средствам «Beremiz», может быть размещен на целевом устройстве через локальную сеть.
На целевом устройстве исполняемый файл запускается и в процессе работы выполняет следующие действия (рис. Рис. 1):
Рис. 1 – Обобщенная схема среды разработки «Beremiz»
Требования к техническим средствам¶
Техническими требованиями для работы среды разработки «Beremiz» является персональный компьютер с тактовой частотой процессора 1000 МГц (поддерживаются как 32-битные, так и 64-битные), 1 Гб оперативной памяти и установленная операционная система Windows XP/Vista/7. Необходимо наличие монитора (для оптимальной работы не меньше 17”), клавиатуры, мыши (или устройства, полноценно заменяющего мышь).
Основные термины и определения¶
IEC 61131-3 – раздел международного стандарта МЭК 61131 (также существует соответствующий европейский стандарт EN 61131), описывающий языки программирования для программируемых логических контроллеров.
Среда разработки для языков стандарта IEC 61131-3 – система программных средств, используемая инженерами по автоматизации, для разработки прикладного программного обеспечения на высокоуровневых языках стандарта IEC 61131-3 под различные целевые платформы, которая включает в себя:
Модули УСО – модули ввода/вывода, обеспечивающие подключение датчиков и исполнительных механизмов.
Целевое устройство – аппаратное средство с определённой архитектурой процессора, на котором могут исполняться различные исполняемые файлы, обращающиеся с помощью него к модулям УСО.
Прикладная программа (исполняемый файл) для целевого устройства – скомпилированный и скомпонованный so-файл, который будет выполняться на целевом устройстве.
Плагин для модуля УСО – интерфейс, состоящий из специальных драйверов и элементов пользовательского интерфейса для среды разработки «Beremiz», позволяющий связывать переменные модулей УСО с переменными программных модулей, из которых состоит проект.
Проект – совокупность программных модулей (программ, функциональных блоков, функций), плагинов внешних модулей УСО, ресурсов, пользовательских типов данных, сборка (компиляция и компоновка) которых, представляет собой прикладную программу для целевого устройства. Каждый проект сохраняется в отдельном файле.
Переменная – область памяти, в которой находятся данные, с которыми оперирует программный модуль.
Ресурс – элемент, отвечающий за конфигурацию проекта: глобальные переменные и экземпляры проекта, связываемыми с программными модулями типа «Программа» и задачами.
Программный модуль – элемент, представляющий собой функцию, функциональный блок или программу. Каждый программный модуль состоит из раздела объявлений и кода. Для написания всего кода программного используется только один из языков программирования стандарта IEC 61131-3.
Функция – программный модуль, который возвращает только единственное значение, которое может состоять из одного и нескольких элементов (если это битовое поле или структура).
Функциональный блок – программный модуль, который принимает и возвращает произвольное число значений, а так же позволяет сохранять своё состояние (подобно классу в различных объектно-ориентированных языках). В отличие от функции функциональный блок не формирует возвращаемое значение.
Программа – программный модуль, представляющий собой единицу исполнения, как правило, связывается (ассоциируется) с задачей.
Задача – элемент представляющий время и приоритет выполнения программного модуля типа «Программа» в рамках экземпляра проекта.
Экземпляр – представляет собой программу, как единицу исполнения, связанную (ассоциированную) с определённой задачей. Так же, как экземпляр, рассматриваются переменные, определённые в программных модулях: программа и функциональный блок.
Пользовательский тип данных – тип данных, добавленный в проект и представляющий собой: псевдоним существующего типа, поддиапазон существующего типа, перечисление, массив или структуру.
Основные компоненты среды разработки «Beremiz»¶
Пользовательский интерфейс среды разработки «Beremiz» состоит из следующих компонент:
Далее подробно рассказано про каждый компонент среды разработки «Beremiz» в отдельности.
Главное меню программы¶
Главное меню программы (см. рис. Рис. 2) содержит следующие пункты:
Рис. 2 – Главное меню программы
Часть операций, выполняемых с помощью выбора определённого пункта меню мышью, могут быть исполнены с помощью «горячей клавиши». Далее будет подробно описан каждый пункт меню и соответствующая ему (если определена) «горячая клавиша».
Меню «Файл» предназначено для работы с проектом и предоставляет следующие пункты:
Меню «Редактировать» предназначено для работы с редакторами языков стандарта IEC 61131-3 (см. п. 6.6 и 6.7) и предоставляет следующие возможности:
Меню «Вид» предназначено для работы с редакторами языков стандарта IEC-61131 и предоставляет следующие возможности:
Меню «Помощь» предназначено для обращения к выводу информации в виде диалога о создателях данной среды – пункт «О программе».
Панель инструментов¶
Панель инструментов представляет собой панель с кнопками для быстрого обращения к часто используемым функциям среды разработки «Beremiz». Она состоит из нескольких панелей, содержащих кнопки: главного меню, сборки проекта и установки связи с целевым устройством. Подробнее об этих панелях рассказано ниже. При редактировании программных модулей, написанных на графических языках, появляются дополнительные панели с кнопками. Они рассмотрены при описании редакторов графических языков стандарта IEC 61131-3 (см. п. 6.7).
Кнопки главного меню¶
Панель инструментов, содержащая кнопки главного меню представлена на рис. Рис. 3.
Рис. 3 – Панель инструментов
Список кнопок и их функций описывается в таблице 1.
Таблица 1 – Кнопки панели инструментов
| Внешний вид кнопки | Наименование кнопки | Функции кнопки |
![]() | Новый проект | Создать новый проект |
![]() | Открыть проект | Открыть существующий проект |
![]() | Сохранить проект | Сохранить текущий проект |
![]() | Сохранить проект как | Сохранить текущий проект в определённую папку |
![]() | Печать | Печать на принтере текущей программы |
![]() | Отменить | Отмена последнего действия в среде разработки |
![]() | Повторить | Повтор отменённого действия в среде разработки |
![]() | Вырезать | Удалить в буфер обмена выделенный(е) элемент(ы) в редакторе |
![]() | Копировать | Копировать в буфер обмена выделенный(е) элемент(ы) в редакторе |
![]() | Вставить | Вставить из буфера обмена находящиеся там элемент(ы) в редактор |
![]() | Поиск в проекте | Вызов диалога поиска данных в проекте |
![]() | Выделение объекта | Состояние, при котором возможно выделение объектов в редакторе с помощью мыши |
Кнопки сборки проекта и установки связи с целевым устройством¶
Панель, содержащая кнопки сборки проекта и соединения с целевым устройством, позволяет скомпилировать и скомпоновать текущий проект и, в случае, если эта операция завершилась успешно (данную информацию можно увидеть в отладочной консоли (см. п. 6.12)), передать и запустить полученный исполняемый файл на целевом устройстве.
Часть кнопок данной панели показана на рис. Рис. 4.
Рис. 4 – Панель сборки проекта и соединения с целевым устройством
Полный список всех кнопок, относящихся к сборке проекта и соединению с целевым устройством, представлен в таблице 2.
Таблица 2 – Кнопки сборки проекта и связи с целевым устройством на панели инструментов
| Внешний вид кнопки | Наименование кнопки | Функции кнопки |
![]() | Собрать проект | Полная сборка (компиляция и компоновка) текущего проекта в папку build, находящейся в папке, где хранится проект |
![]() | Очистить папку для сборки проекта | Удаление папки build, где был собран проект |
![]() | Соединиться с целевым устройством | Соединиться с целевым устройством по адресу URI, который указан в настройках проекта (п. 6.5) |
![]() | Отключиться от целевого устройства | Разрыв соединения с целевым устройством |
![]() | Показать сгенерированный IEC код | Отобразить в отдельной панели (см. п. 6.5.1) код на языках ST и LD, который был транслирован в C код |
![]() | Передача прикладной программы | Перенести исполняемый файл, полученный в ходе сборки проекта, на целевое устройство |
![]() | Запуск прикладной программы | Запустить на исполнение собранную прикладную программу на целевом устройстве |
![]() | Остановить работающую прикладную программу | Остановить исполнение прикладной программы на целевом устройстве |
В зависимости от того, произведено в настоящий момент времени соединение с целевым устройством или выполняется ли прикладная программа на нём, появляются и скрываются некоторые кнопки.
На рис. Рис. 5 приведено состояние данной в панели, когда соединение с целевым устройством установлено и на нём уже есть прикладная программа. Соответственно, можно запустить с помощью кнопки «Запуск прикладной программы» её или передать новую, используя кнопку «Передача прикладной программы».
Рис. 5 – Панель инструментов сборки проекта и соединения с целевым устройством
Когда соединение с целевым устройством установлено, но при этом сделаны изменения проекте и необходима сборка нового исполняемого файла – во время сборки в целях защиты от ошибок кнопки становятся недоступными (см. рис. Рис. 6).
Рис. 6 – Панель инструментов сборки проекта и соединения с целевым устройством
В случае, когда при установке соединения произошли ошибки, данная информация будет выведена в отладочную консоль (см. п. 6.12). Далее будет рассмотрен компонент «Дерево проекта», который представляет структуру элементов, составляющих проект.
Дерево проекта¶
Дерево проекта обычно расположено в левой части окна среды разработки «Beremiz» (см. рис. Рис. 7) и отображает структуру элементов, из которых состоит проект.
Рис. 7 – Дерево проекта
В роли элементов могут выступать:
Дерево проекта позволяет добавлять, удалять элементы. Операции копирования и вставки только доступны для программных модулей.
Добавление элемента в дерево проекта¶
В правом нижнем углу дерева проекта находится кнопка «+» (см. рис. Рис. 8), при нажатии на которую, появляется меню для выбора добавления необходимого элемента в проект.
Рис. 8 – Всплывающее меню добавления элементов проекта на панели проекта
В случае добавления программного модуля, т.е. выбора пункта «Функция», «Функциональный блок» или «Программа», появится диалог «Создать новый программный модуль» (см. рис. Рис. 9).
Рис. 9 – Диалог добавления программного модуля
В данном диалоге три поля:
Имя, присвоенное по умолчанию, может быть заменено на имя, соответствующее назначению данного программного модуля. В зависимости от того, какой программный модуль был выбран во всплывающем меню, в поле «Тип программного модуля» будет подставлено именование данного программного модуля. В поле «Язык» необходимо выбрать из списка (см. рис. Рис. 10) один из языков стандарта IEC 61131-3 (IL, ST, LD, FBD, SFC), на котором будут реализованы алгоритмы и логика работы данного добавляемого программного модуля.
Рис. 10 – Выбор языка для программного модуля
В случае выбора добавления типа данных, появится диалог (см. рис. Рис. 11), в котором необходимо указать имя нового пользовательского типа данных.
Рис. 11 – Диалог ввода имени создаваемого нового типа данных
Добавление нескольких элементов одного типа, например нескольких программ, функций, функциональных блоков приводит к их группировке в дереве проекта. Еще одним способом добавления нового элемента является нажатие правой клавиши мыши по определённому разделу в дереве проекта. Например, при нажатии на «Программы», появится всплывающее меню (см. рис. Рис. 12). В данном меню можно выбрать «Добавить программный модуль» или «Вставить программный модуль», если он был скопирован в буфер обмена.
Рис. 12 – Всплывающее меню добавления и вставки программного модуля
Добавление нового элемента или выбор существующего в дереве проекта приводит к появлению панели редактирования и настроек соответствующего элемента:
Каждая вышеперечисленная панель редактирования будет рассмотрена в последующих пунктах.
Удаление элемента в дереве проекта¶
Удаление осуществляется наведением на определённый элемент в дереве проекта и нажатием на него правой клавишей мыши, а далее в появившемся меню выбирается пункт «Удалить» (см. рис. Рис. 13)
Рис. 13 – Удаление элемента
Переименование, копирование и вставка программных модулей¶
Дерево проекта позволяет выполнять операции переименования, копирования и вставки для программных модулей. Копирование или переименование осуществляются с помощью нажатия правой клавиши мыши на элемент (см. рис. Рис. 14), соответствующий программному модулю в дереве проекта, и выбор соответствующего пункта появившегося меню.
Рис. 14 – Пункт «Копировать программный модуль»
Вставка программного модуля осуществляется в меню (нажатие правой клавишей мыши по данному элементу) корневого элемента дерева проекта, соответствующего проекту (см. рис. Рис. 15):
Рис. 15 – Пункт «Вставка программного модуля»
Другим способом выполнения вышеописанной операции является вызов меню для элемента группировки программных модулей одного типа (см. рис. Рис. 16).
Рис. 16 – Пункт «Вставка программного модуля»
Далее приводится описание панели переменных и констант, которая присутствует при редактировании проекта, ресурса и программных модулей (функции, функционального блока, программы).
Панель списка переменных и констант¶
Панель списка переменных и констант (см. рис. Рис. 17) отображает с помощью таблицы переменные и константы, соответствующие выбранному программному модулю, ресурсу или в целом проекту.
Рис. 17 – Панель переменных и констант
Каждая переменная имеет следующие параметры:
Первый символ имени переменной или константы должен быть буквой, или символом подчеркивания, далее могут следовать цифры, буквы латинского алфавита и символы подчеркивания. Набор возможных вариантов классов переменных зависит от типа элемента проекта, редактирования которого осуществляется. Двойной клик на полю «Адрес» вызывает появление кнопки «…», показанной на рис. Рис. 18:
Рис. 18 – Поле «Адрес» панели переменных и констант
Нажатие на данную кнопку приводит к появлению диалога «Просмотр адресов» (см. рис. Рис. 19), т.е. списка переменных модулей УСО, которые могут быть связанны с переменой в панели переменных и констант. При выборе в данном диалоге определённой переменной и нажатии клавиши «OK» в поле «Адрес» будет добавлен адрес переменной внешнего модуля УСО.
Рис. 19 – Диалог «Просмотр адресов», вызываемый из поля «Адрес»
Поле опции позволяет определить переменную как константу. Соответственно, если компилятор обнаружит в коде фрагмент, в котором происходит изменение этой переменной – будет выведена ошибка компиляции «Assignment to CONSTANT variables is not be allowed» в «Отладочной консоли». Квалификатор «Константа» не может быть использован в объявлении функциональных блоков. Добавление, удаление и перемещение переменных происходит с помощью специальных кнопок на панели переменных и констант. Описания данных кнопок представлены в таблице 3.
Панель переменных и констант предоставляет возможность фильтровать отображаемые переменные по их конкретным классам («Входная», «Выходная», «Входная/Выходная», «Внешняя», «Локальная», «Временная») или сгруппированным классам («Интерфейс» и «Переменные»). Данная операция выполняется с помощью функции «Фильтр по классам» (см. рис. Рис. 20).
Рис. 20 – Фильтрация отображения переменных в панели переменных и констант
В нижней части рабочей области может располагаться панель с настройками проекта, панель ресурсов, редакторы текстовых и графических языков стандарта IEC 61131-3, редакторы для настройки параметров внешних плагинов, визуализация процесса отладки графических языков стандарта IEC 61131-3 и другие элементы. Далее следует подробное их описание.
Таблица 3 – Кнопки добавления, удаление и перемещения переменных на панели переменных и констант
| Внешний вид кнопки | Наименование кнопки | Функции кнопки |
![]() | Добавить переменную | Добавить новую переменную в панель переменных и констант со значениями по умолчанию |
![]() | Удалить переменную | Удалить выделенную переменную или константу |
![]() | Добавить переменные | Добавление переменных внешних добавленных в проект плагинов (подробнее в п. 7) |
![]() | Переместить переменную вверх | Перемещение переменной в таблице переменных и констант вверх на одну позицию |
![]() | Переместить переменную вниз | Перемещение переменной в таблице переменных и констант вниз на одну позицию |
Панель настройки проекта¶
Панель редактирования проекта (см. рис. Рис. 21) состоит из панели переменных и констант, а также настроек сборки проекта и данных о проекте.
Рис. 21 – Панель настройки проекта
Панель переменных и констант, позволяющая задать глобальные переменные на уровне проекта, располагается вверху. Ниже две области: слева настройки параметров сборки данного проекта, а справа поля с различной информацией о проекте.
Настройки сборки проекта (см. рис. Рис. 22) позволяют задать следующие параметры:
Рис. 22 – Панель с настройками проекта
Так же в настройках сборки проекта имеются две кнопки, описание которых приведено в таблице 4.
Таблица 4 – Кнопки в панели настройки сборки проекта
| Внешний вид кнопки | Наименование кнопки | Функции кнопки |
![]() | Промежуточный IEC код | Вызов «Панели отображения промежуточного кода» (см. п. 6.5.1), для вывода кода, из которого генерируется ST код всего проекта |
![]() | Файлы проекта | Вызов «Панели файлов проекта», в которой можно выбрать файлы необходимые для передачи на целевое устройство вместе с исполняемым файлом (см. п. 6.5.2) |
Вкладка «Проект» (см. рис. Рис. 23) позволяет задать: имя проекта, версию проекта, имя продукта, версию продукта и релиз продукта.
Рис. 23 – Вкладка данные о проекте
Вкладка «Автор» (см. рис. Рис. 24) позволяет задать: Имя компании, URL-адрес компании, Имя автора, Название организации.
Рис. 24 – Вкладка данные об авторе проекта
Вкладка «Параметры графики» (см. рис. Рис. 25) позволяет задать размеры страницы и разрешение сетки для редакторов диаграмм графических языков FBD, LD и SFC.
Рис. 25 – Вкладка настроек параметров редакторов графических языков
Вкладка «Разное», изображенная на рис. Рис. 26, позволяет выбрать язык интерфейса для среды разработки «Beremiz» и указать дополнительное текстовое описание для проекта.
При запуске среды разработки «Beremiz» языком по умолчанию является язык, соответствующий текущей локали операционной системы, если файл для данной локали присутствуют. В случае отсутствия данных файлов, устанавливается английская локаль, которая доступна всегда. Файлы доступных локалей располагаются в папке beremiz/locale.
Рис. 26 – Вкладка с настройками языка и описанием проекта
Далее рассмотрены «Панели отображения промежуточного код на языке ST» и «Панель файлов проекта», вызываемые с помощью кнопок, описанных в таблице 4 и располагающихся на панели настроек проекта.
Панель отображения промежуточного кода¶
Данная панель (см. рис. Рис. 27) представляет собой текстовый редактор, отображающий с подсветкой синтаксиса и нумерацией строк код на языке ST, доступный только для чтения, без возможности редактирования.
Рис. 27 – Панель отображения промежуточного кода на языке ST
Открытие данной панели доступно после сборки проекта с помощью соответствующей кнопки (см. таблица 4).
Панель файлов проекта¶
Панель файлов проекта (см. рис. Рис. 28) содержит встроенный проводник файлов (справа), в котором файлы могут быть выделены и перенесены в левую часть.
Рис. 28 – Вкладка файлы проекта
Все манипуляции с файлами осуществляются с помощью кнопок, расположенных в середине данной панели. Их описание приведено в таблице 5.
Таблица 5 – Кнопки в панели файлов проекта
| Внешний вид кнопки | Наименование кнопки | Функции кнопки |
![]() | Удалить файл списка файлов проекта | Удаление выделенного файла из левого списка добавленных файлов в проект |
![]() | Добавить файл в проект | Добавить выделенный файл из проводника файлов в проект |
![]() | Добавить файл в проводник | Добавить в текущую папку проводника файлов слева выделенный файл в списке файлов проекта |
Данные файлы будут переданы на целевое устройство вместе с исполняемым файлом. Как правило, этими дополнительными файлами проекта являются сторонние библиотеки, необходимые для корректной работы плагинов модулей УСО.
Текстовый редактор языков ST и IL¶
Текстовый редактор языков ST и IL (см. рис. Рис. 29) позволяет создавать и редактировать алгоритмы и логику выполнения программных модулей на языках ST и IL.
Рис. 29 – Редактор языков ST и IL
Он обеспечивают следующие возможности:
Описание синтаксиса, основных конструкций и примеров использования языка ST приведены в приложении 3, а языка IL в приложении 4.
Графические редакторы диаграмм языков FBD, SFC, LD¶
Данные редакторы позволяют создавать и редактировать алгоритмы и логику выполнения программных модулей, написанных на языках FBD, SFC и LD.
Редактор языка FBD¶
Основными элементами языка FBD являются: переменные, функции, функциональные блоки и соединения. При редактировании FBD диаграммы, в панели инструментов появляется следующая панель (см. рис. Рис. 30).
Рис. 30 – Панель редактирования FBD диаграмм
С помощью данной панели можно добавить все элементы языка FBD (назначение каждой кнопки описано в таблице 6).
Таблица 6 – Кнопки панели редактирования FBD диаграммы
| Внешний вид кнопки | Наименование кнопки | Функции кнопки |
![]() | Выделение объектов на диаграмме | Перевод указателя мыши в состояние, при котором можно осуществлять выделение объектов редакторе одного из графических языков |
![]() | Перемещение диаграммы | Перевод указателя мыши в состояние, при котором можно изменять размеры редактора одного из графических языков, с помощью его перемещения |
![]() | Создать новый комментарий | Вызов диалога создания комментария |
![]() | Добавить переменную | Вызов диалога добавления переменной |
![]() | Добавить функцию или функциональный блок | Вызов диалога добавления функции или функционального блока |
![]() | Добавить соединение | Вызов диалога добавления соединения |
Для этого необходимо указателем мыши выбрать необходимую кнопку и нажать на свободное место в области редактирования FBD диаграммы. В зависимости от выбранного элемента появятся определённые диалоги добавления данного элемента.
Аналогичные действия можно выполнить с помощью всплывающего меню в области редактирования FBD диаграмм. Вызов данного меню происходит нажатием правой клавишей мыши и выбором пункта «Добавить», в котором будет: «Блок», «Переменная», «Соединение», «Комментарий» (см. рис. Рис. 31).
Рис. 31 – Всплывающее меню редактора языка FBD
Далее рассмотрено добавление каждого элемента в отдельности.
Добавление функции или функционального блока¶
При добавлении функции или функционального блока одним из описанных выше способов, появится диалог «Свойства блока» (см. рис. Рис. 32).
Рис. 32 – Свойства функции или функционального блока
В данном диалоге приведено краткое описание функции или функционального блока и предоставлена возможность задать некоторые свойства (имя, количество входов, порядок выполнения и т.д.).
Опция «Управление выполнением» добавляет в функцию или функциональный блок дополнительные параметры EN/ENO, о которых подробнее рассказано в приложении 5. Для сохранения изменений необходимо нажать «OK». Одним из свойств является «Порядок выполнения», его назначение рассматривается в п. 6.7.1.5.
Добавление (путем копирования существующего блока), удаление и переименование функции или функционального блока осуществляется при помощи команд меню «Редактирование» в главном меню или с помощью всплывающего меню диаграммы (см. рис. Рис. 31).
Следует отметить, что функция или функциональный блок могут быть так же добавлены из «Панели библиотеки функций и функциональных блоков» (см. п. 6.11), перетаскиванием мыши (Drag&Drop) выбранного блока на панель редактирования диаграммы FBD.
Добавление переменной¶
Переменные добавляются из панели переменных и констант с помощью перетаскивания (Drag&Drop) левой клавишей мыши за область, выделенную красным цветом на рис. Рис. 33, в область редактирования FBD диаграмм.
Рис. 33 – Добавление переменной из панели переменных и констант
Изменить параметры переменной можно в диалоге «Свойства переменной» (см. рис. Рис. 34), нажав на неё два раза левой клавишей мыши.
Рис. 34 – Свойства переменной
В данном диалоге можно задать порядок выполнения переменной и изменить её класс («Входная», «Выходная», «Входная/Выходная»).
Добавление соединения¶
В тех случаях, когда необходимо передать выходное значение одного функционального блока на один из входов другого, удобно использовать элемент «Соединение». При прямом соединении с помощью перетаскивания выхода одного функционального блока к входу другого получится прямое соединение с помощью чёрной соединительной линии. На схемах с большим количеством функциональных блоков элемент «Соединение» позволяет избежать пересечения прямых соединений, которые приводит к тому, что схема становится менее понятной.
После выбора добавления элемента «Соединение» появится диалог «Свойства соединения» (см. рис. Рис. 35).
Рис. 35 – Диалог добавления соединения для FBD
В данном диалоге можно выбрать тип соединения: «Выходное соединение» – для выходного значения, «Входное соединение» – для входного значения, а так же необходимо указать имя данного соединения. На рис. Рис. 36 представлен пример использования соединений.
Рис. 36 – Пример FBD диаграммы с использованием соединений
Функция «MAX» на выходе «OUT» имеет некоторое значение, которое с помощью соединения «RESULT» передаётся на вход «IN1» в функцию «MIN». В функции «MAX» используется соединение типа «Выходное соединение», в функции «MIN» – типа «Входное соединение». Имена у этих соединений, соответственно, одинаковые.
Редактор FBD диаграмм (и остальные редакторы, о которых будет рассказано ниже) позволяют добавлять комментарии на диаграмму. После выбора на панели редактирования комментария и добавления его в область редактирования появится диалог (см. рис. Рис. 37) для ввода текста комментария.
Рис. 37 – Диалог добавления комментария
После нажатия кнопки OK комментарий появится на диаграмме (см. рис. Рис. 38).
Рис. 38 – Добавленный комментарий к FBD диаграмме
Порядок выполнения функций и функциональных блоков¶
Последовательность исполнения функций и функциональных блоков определяется порядком их выполнения. Автоматически он регламентируется следующим образом: чем выше и левее расположен верхний левый угол, описывающего функцию или функциональный блок прямоугольника, тем раньше данная функция или функциональный будет выполнен.
Если обратиться к рис. Рис. 39, то порядок выполнения функций будет следующим: 1) SUB 2) MUL 3) ADD.
Рис. 39 – Схема, содержащая функции с порядком выполнения (обсчета) по расположению
Порядок выполнения может быть изменён вручную с помощью диалога свойств. Данная опция «Порядок выполнения» выделена красным цветом на рис. Рис. 40.
Рис. 40 – Свойство порядок выполнения функции или функционального блока
После задания порядка выполнения для каждой функции или функционального блока на схеме в правом нижнем углу будет указан его порядковый номер выполнения. Пример представлен на рис. Рис. 41.
Рис. 41 – Схема, содержащая функции с порядком выполнения заданным вручную
Описание языка FBD, основных его конструкций и пример использования приведены в приложении 5.
Редактор языка LD¶
Язык LD или РКС (Релейно-Контактные Схемы) представляет собой графическую форму записи логических выражений в виде контактов и катушек реле. Основными элементами языка LD являются: шина питания, катушка, контакт. Добавить данные элементы, так же как и элементы языка FBD, можно несколькими способами.
Как только активной становится вкладка с редактированием LD диаграммы, в панели инструментов появляется панель (см. рис. Рис. 42) с элементами языка LD.
Рис. 42 – Панель редактирования LD диаграмм
Аналогично редактору языка FBD с помощью данной панели можно добавить все элементы языка LD, а так же и FBD, т.к. есть возможность комбинированного применения языков на одной диаграмме. В таблице 7 приведено описание кнопок данной панели. Описание остальных кнопок, относящихся к языку FBD, находится в таблице 6.
Таблица 7 – Кнопки панели редактирования LD диаграммы
| Внешний вид кнопки | Наименование кнопки | Функции кнопки |
![]() | Создать новую шину питания | Вызов диалога создания новой шины питания |
![]() | Создать новую катушку | Вызов диалога создания новой катушки |
![]() | Создать новый контакт | Вызов диалога создания нового контакта |
Во всплывающем меню для редактора LD диаграмм (см. рис. Рис. 43), так же как и в панели инструментов помимо элементов LD языка, доступны элементы языка FBD.
Рис. 43 – Всплывающее меню редактора языка LD
Добавление шины питания¶
При добавлении шины питания, одним из описанных выше способов, появится диалог «Свойства шины питания» (см. рис. Рис. 44).
В данном диалоге указываются следующие свойства:
Рис. 44 – Свойство шины питания
На рис. Рис. 45 приведены две добавленные шины питания: левая с тремя контактами и правая с одним контактом.
Рис. 45 – Шины питания на LD диаграмме
Добавление контакта¶
При добавлении контакта на LD диаграмму появится диалог «Редактирование значения контакта» (см. рис. Рис. 46).
Рис. 46 – Редактирование контакта
Данный диалог позволяет определить модификатор данного контакта:
Кроме того, диалог позволяет выбрать из списка «Имя» переменную, «связываемую» с данным контактом. Следует отметить, что «связываемые» переменные должны быть определены в панели переменных и констант для данного программного модуля типом BOOL.
Еще одним способом добавления контакта на диаграмму является метод Drag&Drop из панели переменных и констант переменной типа BOOL и класса: «Входная», «Входная/Выходная», «Внешняя», «Локальная», «Временная». Для этого необходимо зажать левой кнопкой мыши за первый столбец (который имеет заголовок #) переменную, удовлетворяющую описанным выше критериям и перенести в область редактирования диаграммы (см. рис. Рис. 47).
Рис. 47 – Добавление контакта на диаграмму из панели переменных и констант
Добавление катушки¶
При добавлении катушки на LD диаграмму появится диалог «Редактирование значения катушки» (см. рис. Рис. 48).
Рис. 48 – Редактирование катушки
В данном диалоге можно определить модификатор данного контакта:
Кроме того, производится выбор из списка «Имя» переменной, «связываемой» с данным контактом. Эти переменные, как и для контактов, должны быть определены в панели переменных и констант для данного программного модуля типом BOOL.
Аналогично добавлению контакта с помощью Drag&Drop можно добавить и катушки, но в данном случае переменная должна относиться к классу «Выходная» (см. рис. Рис. 49).
Рис. 49 – Добавление катушки на диаграмму из панели переменных и констант
Описание языка LD, основных конструкций и примера его использования приведены в приложении 6.
Редактор языка SFC¶
Основными элементами языка SFC являются: начальный шаг, шаг, переход, блок действий, дивергенции, «прыжок». Программа на языке SFC состоит из набора шагов, связанных переходами.
Как только активной становится вкладка с редактированием SFC диаграммы, в панели инструментов появляется следующая панель (см. рис. Рис. 50).
Рис. 50 – Панель редактирования SFC диаграмм
В таблице 8 приведено описание кнопок данной панели. Описание остальных кнопок, относящихся к языку FBD и LD (за исключением катушки) и так же находящихся на этой панели, приведены в таблицах 6 и 7 соответственно.
Таблица 8 – Кнопки панели редактирования SFC диаграммы
| Внешний вид кнопки | Наименование кнопки | Функции кнопки |
![]() | Создать новый начальный шаг | Вызов диалога редактирования шага |
![]() | Создать новый шаг | Вызов диалога редактирования шага |
![]() | Создать новый переход | Вызов диалога редактирования перехода |
![]() | Создать новый блок действий | Вызов диалога редактирования блока действий |
![]() | Создать новую дивергенцию | Вызов диалога создания новой дивергенции и конвергенции |
![]() | Создать новый «прыжок» | Вызов диалога создания «прыжка» |
Далее даётся описание добавления приведённых в таблице 8 элементов языка SFC.
Добавление шага инициализации и шага¶
Процедура добавления шага инициализации и обычного шага ничем не отличается. В обоих случаях вызывается диалог «Редактировать шаг» (см. рис. Рис. 51).
Рис. 51 – Диалоги редактирования шага инициализации и обычного шага SFC диаграммы
Согласно стандарту IEC 61131-3, на SFC диаграмме должен быть один шаг инициализации, который характеризует начальное состояние SFC-диаграммы и отображается со сдвоенными линиями на границах (см. рис. Рис. 52).
Рис. 52 – Шаг инициализации языка SFC
В случае, если при добавлении шага не указано его имя – будет выдана ошибка (см. рис. Рис. 53).
Рис. 53 – Ошибка отсутствии имени шага во время его добавления
При добавлении шага появляется диалог, в котором можно указать, с помощью галочек его соединители (см. рис. Рис. 54):
Рис. 54 – Добавление шага на SFC диаграмму
«Действие» добавляет соединитель для связывания данного шага с блоком действий. «Входной» и «Выходной» соединители, как правило, соединены с переходом. Соответственно, после нажатия кнопки OK, на диаграмму будет добавлен шаг с указанными соединителями (см. рис. Рис. 55).
Рис. 55 – Шаг SFC диаграммы с соединителями входа и действия
Добавление перехода¶
При добавлении на SFC диаграмму перехода, появится диалог «Редактировать переход» (см. рис. Рис. 56).
Рис. 56 – Диалог редактирования перехода для SFC диаграммы
В данном диалоге необходимо выбрать тип перехода и его приоритет. Тип перехода может быть:
При выборе типа перехода «Ссылка» в открывающемся списке (см. рис. Рис. 57) будут доступны переходы, предопределённые в дереве проекта для данного программного модуля, написанного на языке SFC. Добавление предопределённого перехода описывается ниже после описания всех добавляемых элементов языка SFC.
Рис. 57 – Всплывающий список с доступными предопределёнными переходами
При выборе типа перехода «Встроенный код» (см. рис. Рис. 58), условие перехода можно написать в виде выражения на языке ST.
Рис. 58 – Условие перехода в виде встроенного кода, написанного на языке ST
Реализация перехода таким способом удобна в случае, когда необходимое условие короткое, например: переменные типа f3 и f4 INT равны. Встроенный код для такого условия выглядит следующим образом (см. рис. Рис. 58):
Так же например можно в качестве условия просто указать переменную. В случае её значения равного 0 – будет означать FALSE, все остальные значения – TRUE.
При выборе типа перехода «Соединение» (см. рис. Рис. 59), в качестве условия перехода можно использовать выходные значения элементов языка FBD или LD.
Рис. 59 – Выбор условия перехода как соединение с элементами других графических языков IEC 61131-3
При выборе типа перехода «Соединение», у добавленного перехода появится слева контакт, который необходимо соединить с выходным значением, например, функционального блока языка FBD или катушки LD диаграммы. Стоит отметить, что данное выходное значение должно быть типа BOOL. Ниже, на рис. Рис. 60 красным цветом выделен пример перехода, условия которого задано с помощью языка LD – двух последовательно соединённых контактов языка LD.
Рис. 60 – Пример SFC диаграммы, в которой один из переходов задан с помощью языка LD
Добавление блока действий¶
При добавлении блока действий на диаграмму появится диалог «Редактировать свойство блока действий» (см. рис. Рис. 61).
Рис. 61 – Диалог «Редактировать свойство блока действий»
Данный блок действий может содержать набор действий. Добавить новое действие можно нажав кнопку «Добавить» и установив необходимые параметры:
Поле «Квалификатор» определяет момент времени, когда действие начинается, сколько времени продолжается и когда заканчивается. Выбрать квалификатор можно из списка (см. рис. Рис. 62).
Рис. 62 – Меню выбора квалификатора для действия в диаграмме SFC
Подробное описание квалификаторов, которые выбираются из предлагаемого списка при добавлении действия приведено в таблице 9.
Таблица 9 – Квалификаторы действий SFC диаграммы
| Имя квалификатора | Поведение блока действия |
| D | Действие начинает выполняться через некоторое заданное время (если шаг еще активен) и выполняется до тех пор, пока данный шаг активен |
| L | Действие выполняется в течение некоторого заданного интервала времени, после чего выполнение действия останавливается |
| N | Действие выполняется, пока данный шаг активен |
| P | Действие выполняется один раз, как только шаг стал активен |
| S | Действие активируется и остается активным пока SFC диаграмма выполняется |
| R | Действие выполняется, когда диаграмма деактивизируется |
| DS | Действие начинается выполняться через некоторое заданное время, только в том случае если шаг еще активен |
| SL | Действие активно в течении некоторого, заданного интервала |
| SD | Действие начинается выполняться через некоторое время, даже в том случае если шаг уже не активен |
Поле «Продолжительность» необходимо для установки интервала времени необходимого для некоторых квалификаторов, описанных выше в таблице 9.
«Тип» определяет код или конкретную манипуляцию, которая будет выполняться во время активации действия. В случае выбора «Действия» появляется возможность, как и в случае с переходом, использовать предопределённые действия в дереве проекта для данного программного модуля, написанного на языке SFC (см. рис. Рис. 63).
Рис. 63 – Выбор предопределённого действия
Добавление предопределённого действия также как добавление предопределённого перехода описывается ниже после описания всех добавляемых элементов языка SFC.
В случае выбора типа действия «Переменная» в поле «Значение» появляется возможность выбрать переменные (см. рис. Рис. 64), относящиеся к данному программному модулю.
Рис. 64 – Выбор предопределённой переменной
Как только шаг становится активным, данная переменная в зависимости от своего типа принимает значение 0, 0.0, FALSE и другие нулевые значения типов. Как только действие начинает выполняться, переменная принимает значение 1, 1.0, TRUE и другие единичные значения типов. В случае если действие прекратило своё выполнение переменная снова принимает значение 0, 0.0, FALSE и другое нулевое значение, в зависимости от своего типа.
В случае выбора «Встроенный код», появляется возможность в поле «Значение» написать на языке ST код, который будет выполняться, когда действие становится активным (см. рис. Рис. 65).
Рис. 65 – Написание встроенного кода для действия
Следует отметить, что в конце встроенного кода для действия необходимо поставить «;», в отличие от встроенного кода для перехода.
После добавления блока действия на диаграмму необходимо его ассоциировать с конкретным шагом. Данная операция выполняется обычным соединением правого контакта у шага и левого контакта у действия (см. рис. Рис. 66).
Рис. 66 – Ассоциирование шага step2 блоком действия, содержащим два действия
Добавление дивергенции¶
При добавлении дивергенции, появится диалог «Создать новую дивергенцию и конвергенцию» (см. рис. Рис. 67).
Рис. 67 – Добавление дивергенции
В первую очередь следует выбрать тип дивергенции:
Вторым параметром является количество разветвлений, которое определяет на сколько ветвей будет либо расходится (в случае выбора типа дивергенции «Дивергенции» или «Параллельной дивергенции») одна ветвь, либо сколько ветвей будет сходиться в одну ветвь (в случае выбора типа дивергенции «Конвергенция» или «Параллельная конвергенция»)
Пример дивергенции с двумя разветвлениями показан на рис. Рис. 68 и выделен красным цветом.
Рис. 68 – Пример SFC диаграммы, содержащей дивергенцию
Пример конвергенции выделен красным цветом на рис. Рис. 69.
Рис. 69 – Пример SFC диаграммы, содержащей конвергенцию
Пример параллельной конвергенции показан на рис. Рис. 70 и выделен красным цветом.
Рис. 70 – Пример SFC диаграммы, содержащей параллельную дивергенцию
Добавление «прыжка»¶
Элемент «прыжок» на SFC диаграмме подобен выполнению оператора GOTO при переходе на определённую метку в коде в различных языках программирования. После выбора добавления прыжка на SFC диаграмму, появится диалог (см. рис. Рис. 71), в котором необходимо выбрать из списка шаг, к которому будет происходить «прыжок» – переход от одного шага SFC диаграммы к другому.
Рис. 71 – Диалог добавления «прыжка»
В данном диалоге также присутствует и шаг инициализации (начальный шаг). После выбора шага и нажатия кнопки OK. На SFC диаграмме появится стрелочка, которую нужно соединить с переходом (см. рис. Рис. 72). Справа от стрелочки находится имя шага, к которому осуществляется переход в случае выполнения условия перехода, находящегося выше и соединённого с ней.
Рис. 72 – Прыжок с шага «secondStep» на «firstStep»
Согласно стандарту IEC 61131-3, между шагом и прыжком должен обязательно быть определён переход.
Предопределённые условия перехода и действия в дереве проекта¶
В случае, если необходимо использовать определённое условие перехода между множеством шагов, есть возможность определить данное условие перехода в структуре SFC диграммы. Данная операция выполняется нажатием на данную SFC диаграмму на дереве проекта (п. 6.3) правой клавишей мыши и выбором «Добавить переход» (см. рис. Рис. 73).
Рис. 73 – Всплывающее меню SFC диаграммы в панели проекта
Далее появится диалог под названием «Создать новый переход» (см. рис. Рис. 74). В нём необходимо выбрать уникальное имя перехода и язык, в котором будет описанно данное условие.
Рис. 74 – Диалог «Создать новый переход»
В случае, если переходы с введённым именем уже существуют, то будет выведено сообщение об ошибке (см. рис. Рис. 75).
Рис. 75 – Сообщение об ошибке добавления существующего программного модуля
Добавление действия в структуру SFC диаграммы (см. рис. Рис. 76) происходит аналогично добавлению перехода в данную структуру.
Рис. 76 – Всплывающее меню SFC для структуры диаграммы
После выбора «Добавить действие» во всплывающем меню, вызванном с помощью нажатия правой кравиши мыши по программному модулю, написанном с помощью языка SFC, появится диалог «Создать новое действие» (см. рис. Рис. 77).
Рис. 77 – Диалог «Создать новое действие»
В данном диалоге необходимо указать «Имя действия» (должно быть уникальным) и выбрать язык (ST, IL, FBD, LD), на котором будет написано данное действие. Если имя действия не заполнено будет выведено сообщение об ошибке (см. рис. Рис. 78).
Рис. 78 – Ошибка не заполнения имени действия при его добавлении
После того как действие добавлено, необходимо реализовать его код на текстовом или графическом языке, в зависимости от языка, который был выбран в диалоге «Создать новое действие» (см. рис. Рис. 77). После добавления переходов и действий в дерево проекта они будут доступны для множественного использования.
Описание языка SFC, основных конструкций и примера его использования приведены в приложении 7.
Панель редактирования ресурса¶
Панель редактирования ресурса (см. рис. Рис. 79) содержит панель переменных и констант, которая позволяет определять глобальные переменные на уровне ресурса и панели, содержащие задачи и экземпляры.
Рис. 79 – Вкладка ресурс главной рабочей области
Добавление переменных в ресурс ничем не отличается от добавления переменных в программные модули, единственное исключение – переменные могут быть только класса «Глобальная». Основной задачей данной панели является возможность добавить экземпляр, указать для него программный модуль типа «Программа», из ранее определённых в проекте, для поля «Тип» и выбрать задачу из добавленных в список «Задачи».
Панель редактирования типа данных¶
Панель редактирования типа данных (см. рис. Рис. 80) позволяет определить различные параметры создаваемого пользовательского типа данных.
Рис. 80 – Вкладка создания нового типа данных
Главным параметром является список под названием «Механизм создания нового типа», позволяющим выбрать следующие типы:
Далее рассмотрены подробнее параметры для каждого из вышеперечисленных типов
Прямое наследование¶
При выборе «Прямое наследование» (см. рис. Рис. 81), из списка указывается базовый тип и его начальное значение.
Рис. 81 – Добавление псевдонима типа данных
Созданный тип представляет собой псевдоним (например, аналогично использованию typedef в языке C) уже существующего типа.
Поддиапазон существующего типа¶
В случае выбора механизма создания нового типа «Поддиапазон существующего типа», помимо базового типа и начального значения производится установка параметров «Минимум» и «Максимум» (см. рис. Рис. 82), т.е. соответственно минимального и максимального значения, которое может принимать создаваемый тип данных.
Рис. 82 – Добавление нового типа данных, представляющего поддиапазон существующего типа
Перечисляемый тип¶
При выборе механизма создания нового типа «Перечисляемый тип» (см. рис. Рис. 83), появится панель, содержащая таблицу, в которой можно задать список возможных значений данного перечисляемого типа.
Рис. 83 – Добавление перечисляемого типа данных
Добавление, редактирование, удаление, перемещение данных значений осуществляется с помощью кнопок, описание которых приведено в таблице 10.
Таблица 10 – Кнопки редактирования значений перечисляемого типа
| Внешний вид кнопки | Наименование кнопки | Функции кнопки |
![]() | Редактировать | Редактировать выделенное поле в таблице |
![]() | Добавить | Добавить новое поле в таблицу |
![]() | Удалить | Удалить выделенное поле в таблице |
![]() | Переместить вверх | Переместить вверх выделенное поле в таблице |
![]() | Переместить вниз | Переместить вниз выделенное поле в таблице |
Также есть возможность задать начальное значение данного перечисляемого типа в поле «Начальное значение».
Массив¶
При выборе механизма создания нового типа «Массив» (см. рис. Рис. 84) появится панель, в которой необходимо указать базовый тип, начальное значение, а так же размерность массива.
Рис. 84 – Добавление типа данных – массива
Размерность массива задаётся в следующем формате:
Структура¶
При выборе механизма создания нового типа «Структура» (см. рис. Рис. 85), в появившейся таблице необходимо добавить необходимое количество полей структуры. Каждое поле имеет своё имя, тип и начальное значение.
Рис. 85 – Добавление типа данных – структуры
Добавленные типы данных могут использоваться также как и стандартные при реализации алгоритмов и логики выполнения программных модулей.
Выше были рассмотрены варианты редактирования различных элементов, из которых состоит проект, согласно стандарту IEC 61131-3. Далее будет продолжено рассмотрение остальных компонент среды разработки «Beremiz»
Панель экземпляров проекта¶
Панель экземпляров проекта (см. рис. Рис. 86) обычно располагается слева в среде разработки «Beremiz» и отображаемые в ней экземпляры зависят от выбранного элемента в дереве проекта.
Рис. 86 – Панель экземпляров проекта
При выборе в дереве проекта элемента, соответствующего ресурсу, в панели экземпляров проекта будут отображены экземпляры (см. п. 6.8), определённые в данном ресурсе, а так же глобальные переменные ресурса. На рис. Рис. 87 показано, как в панели редактирования ресурса определена глобальная переменная «globalValue» и два экземпляра для программных модулей «program0» и «program1»:
Рис. 87 – Два экземпляра проекта в панели редактирования ресурса
Соответственно, при выборе в дереве проекта ресурса, в котором определены экземпляры (описанные выше) и глобальная переменная, панель экземпляров будет выглядеть, как показано на рис. Рис. 88:
Рис. 88 – Панель экземпляров при выборе элемента ресурса в дереве проекта
При выборе в дереве проекта элемента, соответствующего программным модулям «Программа» и «Функциональный блок» в панели экземпляров будут отображены переменные, определённые в них. Ниже на рис. Рис. 89 приведён пример программного модуля типа «Программа» с именем «program0», в котором определено 6 переменных различных классов.
Рис. 89 – Программный модуля типа «Программа»
Соответственно, при выборе в дереве проекта данного программного модуля в панели экземпляров будут отображены, определённые выше переменные (см. рис. Рис. 90).
Рис. 90 – Панель экземпляров проекта при выборе в дереве проекта программного модуля типа «Программа»
В случае выбора других элементов в дереве проекта, панель отладки будет пустой. Как можно заметить, с правой стороны от каждого элемента в панели отладки располагаются кнопки, назначение которых описано в таблице 11.
Таблица 11 – Кнопки на панели экземпляров проекта
| Внешний вид кнопки | Функции кнопки |
![]() | Кнопка отображения графика изменения значения переменной в режиме отладки |
![]() | Кнопка запуска режима отладки для экземпляра |
В случае нажатия кнопки запуска режима отладки для экземпляра программы, написанной на одном из графических языков (FBD, LD или SFC), откроется вкладка с панелью, на которой диаграмма будет отображена в режиме отладки (см. п. 9). Если кнопка запуска режима отладки нажимается для элемента переменной, то переменная будет добавлена в панель отладки (см. п. 6.14).
Описанные выше кнопки доступны только в режиме отладки прикладной программы. Про данный режим подробнее рассказывается в п. 9.
Панель библиотеки функций и функциональных блоков¶
Панель библиотеки функций и функциональных блоков (см. рис. Рис. 91), как правило, располагается справа в среде разработки «Beremiz». Она содержит коллекцию стандартных функций и функциональных блоков, разделённых по разделам в соответствии с их назначением, которые доступны при написании алгоритмов и логики работы программных модулей.
Рис. 91 – Панель библиотеки функций и функциональных блоков
Выделены следующие разделы для функций и функциональных блоков: стандартные, дополнительные, преобразования типов данных, операций с числовыми данными, арифметических операций, временных операций, побитовых и смещения бит, операций выбора, операций сравнения, строковых операций, модулей «Python» и «SVGUI».
Помимо стандартных функций и функциональных блоков, данная панель содержит раздел «пользовательские программные модули». В него попадают функции и функциональные блоки, добавленные в конкретный проект, т.е. содержащиеся в дереве проекта.
Использование данных функций и функциональных блоков осуществляется перетаскиванием необходимого блока с помощью зажатой левой кнопки мыши (Drag&Drop) в область редактирования: либо текстовый редактор, либо графический редактор.
Имеется специальное поле поиска функционального блока по имени. Более подробное описание каждого функционального блока приведено в приложении 2.
Отладочная консоль¶
Панель, содержащая отладочную консоль (см. рис. Рис. 92), как правило, располагается в правом нижнем углу среды разработки «Beremiz».
Рис. 92 – Успешная сборка в отладочной консоли
Она служит для отображения в виде текстовых сообщений:
В случае, если необходимо вывести предупреждения среды разработки «Beremiz» или ошибки компиляторов во время их работы («MatIEC» или C кода) цвет вывода текстовых сообщений становится красным. Критические ошибки также выделяется красным цветом, но при этом еще желтым фоном (см. рис. Рис. 93).
Рис. 93 – Ошибка сборки проекта в отладочной консоли
Поиск элементов в проекте¶
Для поиска интересующего элемента в проекте используется диалог «Поиск в проекте» (см. рис. Рис. 94). Его вызов происходит с помощью главного меню программы (п. 6.1) или панели инструментов (п. 6.2).
Рис. 94 – Диалог поиска в проекте
В появившемся диалоге можно установить различные параметры поиска: шаблон поиска, область поиска, чувствительность к регистру при поиске, а так же записать шаблон поиска в виде регулярного выражения. После того как все параметры установлены, необходимо нажать кнопку «Поиск» в этом диалоге. Ниже на рис. Рис. 95 приведен пример поиска элемента с именем «ValueH».
Рис. 95 – Результат поиска элемента в проекте
Результат поиска выводится в иерархической структуре. При двойном щелчке по одному из результатов – данный элемент будет выделен в проекте оранжевым цветом.
Панель отладки¶
Панель отладки располагается в правой части среды разработки «Beremiz» (см. рис. Рис. 96).
Рис. 96 – Панель отладки
Данная панель представляет собой таблицу с двумя столбцами «Переменная» и «Значение». Соответственно, столбец «Переменная» содержит экземпляры переменных, значения которых во время исполнения, отображаются в поле «Значение» и могут изменяться. Добавление переменных осуществляется с помощью панели экземпляров проекта (см. п. 6.10).
Изменение значений переменной во время отладки прикладной программы осуществляется нажатием правой клавишей мыши в поле «Значение» интересующей переменной и в появившемся всплывающем меню (см. рис. Рис. 97) выбирается «Установить значение».
Рис. 97 – Всплывающее меню манипуляций со значением переменной
Далее появится диалог ввода значения для выбранной переменной (см. рис. Рис. 98).
Рис. 98 – Установка значения переменной во время отладки
Для того чтобы отменить установленное значение для переменной, необходимо нажать во всплывающем меню «Освободить значение».
На данной панели так же присутствуют кнопки, подобные кнопкам в панели переменных и констант, позволяющие перемещать и удалять добавленные переменные.
Панель графика изменения значения переменной в режиме отладки¶
Данная панель (см. рис. Рис. 99) открывается в отдельной вкладке в случае, если в панели экземпляров проекта (см. п. 6.10) для переменной нажимается кнопка отображения графика изменения значения переменной в режиме отладки (см. таблица 11).
Рис. 99 – График изменения значения переменной во время выполнения прикладной программы
На данной панели есть возможность установить:
Также на данной панели в правом нижнем углу располагаются вспомогательные кнопки. Описание данных кнопок приведено в таблице 12:
Таблица 12 – Кнопки на панели экземпляров проекта
| Внешний вид кнопки | Функции кнопки |
![]() | Очистка отображения графика |
![]() | Переход к отображению текущего значения графика, т.е. сдвиг параметра «Позиция» максимально вправо. |
![]() | Сброс настроек масштаба до настроек по умолчанию: x 1.0 |
![]() | Экспортировать в буфер обмена значения изменения графика |
Далее в отдельном разделе рассмотрен механизм связывания внешних модулей УСО с программными модулями прикладной программы.
Внешние плагины для модулей УСО
Среда разработки «Beremiz» предоставляет интерфейс, позволяющий связывать внешние источники данных, такие как модули УСО (их параметры, состояния) с программными модулями (в частности с их переменными), написанными на языках высокого уровня (IEC 61131-3), из которых состоит прикладная программа. Интерфейс реализован с помощью механизма плагинов для модулей УСО. Данный механизм представляет собой:
Есть возможность добавить требуемый плагин в проект и получить доступ к переменным модуля, который представляет данный плагин. Далее рассмотрены основные операции с плагинами в среде разработки «Beremiz».
Добавление плагина в проект¶
Как упоминалось в п. 6.3, добавление плагинов, как и программных модулей, осуществляется через всплывающее меню дерева проекта (см. рис. Рис. 100).
Рис. 100 – Всплывающее меню панели проекта
В меню для добавления доступны плагины модулей: «TCP интерфейс», «Modbus интерфейс» «МДВ», «МДВыв», «МАВ 1.2.1», «МАО». Подробнее о каждом плагине будет рассказано в следующих разделах. Так же операция добавления может быть выполнена через главное меню среды разработки «Beremiz» (см. рис. Рис. 101).
Рис. 101 – Добавление плагинов через главное меню среды разработки «Beremiz»
После того, как в меню выбран пункт с необходимым плагином, он добавляется в структуру проекта. На рис. Рис. 102 в проект добавлено два плагина с именами «mdo_0» и «mav121_0», соответствующие модулям УСО: «МДВыв» и «МАВ 1.2.1».
Рис. 102 – Структура проекта после добавления двух плагинов
Далее даётся описание процессу настройки плагина и заданию соответствующих ему параметров с помощью редактора плагина.
Редактор плагина¶
При двойном щелчке левой кнопкой мыши по плагину в дереве проекта появится вкладка с редактором данного плагина, позволяющим задать настройки модуля и различные параметры в зависимости от типа модуля. На рис. Рис. 103 приведен пример вкладки с редактором плагина для модуля «mdo_0» (модуль дискретного вывода «МДВыв»).
Рис. 103 – Редактор плагина модуля «МДВыв»
Редактор состоит из двух частей. Нижняя часть содержит параметры специфичные для плагина, и её описание приводится для каждого плагина в отдельности. Верхняя часть общая для всех плагинов. Она позволяет задать:
В случае указания имени плагина, которое уже имеется в проекте, будет добавлен цифровой постфикс, например, «mdo_1_1» (см. рис. Рис. 104).
Рис. 104 – Добавление цифрового постфикса для уникальности имени плагина
Имя плагина должно быть уникально в рамках проекта. Назначение идентификаторов плагина приводится далее в п. 7.1.3.
Идентификаторы переменных плагина¶
Каждому плагину присваивается уникальный идентификатор, указанный слева от его имени. На рис. Рис. 105 он выделен красным цветом для обоих добавленных плагинов.
Рис. 105 – Отображение уникальных идентификаторов добавленных плагинов
Данный идентификатор представлен в следующем формате:
– является уникальным числовым идентификатором в рамках текущего проекта и присваивается автоматически средой разработки «Beremiz», но может быть изменён с помощью редактора плагина;
x – обозначает номера переменных плагина, которые определены доступными для модуля, которому соответствует данный плагин.
Изменить идентификатор плагина можно с помощью редактора плагина, как показано на рис. Рис. 106, с помощью стрелочек «Вверх» и «Вниз», выделенных красным цветом.
Рис. 106 – Изменение идентификатора плагина с помощью редактора плагина
В соответствии с данным идентификатором формируются адреса переменных плагина, благодаря которым, эти переменные могут быть связаны с переменными программных модулей.
Адреса переменных плагина¶
Адреса для переменных плагина представляется следующим образом:
Идентификатор класса переменной представляет собой символ «I» – если переменная входная и «Q» – если переменная выходная. Далее в зависимости от типа переменной плагина подставляется соответствующий идентификатор для данного типа. Соотношение типов данных и их идентификаторов приведено в таблице 13. В конце добавляется точка и порядковый номер переменной в данном плагине.
Таблица 13 – Соотношение типов данных и идентификаторов типа
| Тип | Идентификатор типа |
| BOOL | X |
| SINT, USINT, STRING, BYTE | B |
| INT, UINT, WORD, WSTRING | W |
| DINT, UDINT, REAL, DWORD | D |
| LINT, ULINT, LREAL, LWORD | L |
Например, входная переменная, соответствующая дискретному сигналу (типа BOOL) под номером 1 для модуля с идентификатором 0.x будет выглядеть следующим образом: «%IX0.1».
В среде разработки «Beremiz» существуют следующие правила для переменных внешних плагинов (модулей):
Следует отметить правило для переменных внешних плагинов: 2*n-1 – значение, 2*n – состояние, где n – номер канала или другого источника данных модуля. Например, переменная %ID1.5 является значением 3-го сигнала, а переменная %ID1.6 является состоянием 3-го сигнала.
Далее подробнее рассказано о каждом плагине доступном в среде разработки «Beremiz» и его редакторе. В п. 7.5 даётся описание процесса связывания переменных плагинов и переменными программных модулей с применением описанных выше адресов переменных плагина.
Плагины дискретных модулей
Модуль дискретного ввода «МДВ»
Редактор модуля дискретного ввода «МДВ» с 32 каналами (см. рис. Рис. 107), позволяет задать:
Рис. 107 – Редактор модуля дискретного ввода «МДВ»
В виде таблицы отображен список доступных для связывания переменных. Переменная с нулевым номером («mdv_0_condition») хранит состояние всего модуля в целом. Переменная с нечётным номером хранит значение сигнала. Например, «mdv_0_signal2» соответствует второму сигналу модуля дискретного ввода. А перемеменная «mdv_0_condition4» – соответствует состоянию 4 сигнала. Для дискретных модулей состояние сигналов равно по умолчанию 0.
Модуль дискретного вывода «МДВыв»¶
Редактор модуля дискретного вывода «МДВыв» с 32 каналами (см. рис. Рис. 108) позволяет задать:
В виде таблицы отображен список доступных для связывания переменных. Аналогично модулю дискретного ввода, переменная с нулевым номером хранит состояние всего модуля в целом. Переменная с нечётным номером хранит значение сигнала, а с чётным – состояние сигнала.
Рис. 108 – Редактор модуля дискретного вывода «МДВыв»
Плагины аналоговых модулей
Модуль аналогового ввода «МАВ 1.2.1»
Редактор плагина аналогового модуля ввода (см. рис. Рис. 109) позволяет задать настройки для работы в целом данным модулей и отдельно для каждого сигнала.
В целом для модуля можно установить:
Рис. 109 – Редактор плагина модуля аналогового ввода «МАВ 1.2.1»
Для каждого конкретного сигнала указывается его имя, адрес и адрес состояния сигнала. Последние два параметра используются для связывания с переменными программных модулей.
Данный редактор позволяет задать для каждого сигнала:
Значения множителя и слагаемого могут быть заданы автоматическим вычислением, при выборе флажка «Автоматическое вычисление» (см. рис. Рис. 110).
Рис. 110 – Установка в ручную значений множителя и слагаемого
Модуль аналогового вывода «МАО»¶
Редактор данного модуля представлен на рис. Рис. 111.
В целом для модуля можно установить:
Рис. 111 – Редактор плагина модуля аналогового вывода
Для каждого конкретного сигнала указывается его имя, адрес и адрес состояния сигнала. Последние два параметра используются для связывания с переменными программных модулей.
Данный редактор позволяет изменить для каждого сигнала:
фильтрация шумов сигнала, указывающая в процентах, изменения отклонения значения сигнала, которые не будут рассматриваться;
минимальное электрическое значение измеряемого сигнала, которое может выдать датчик;
максимальное электрическое значение измеряемого сигнала, которое может выдать датчик;
минимальное значение физической величины, соответствующее минимальному значению сигнала датчика;
значение нагрузочного резистора.
максимальное значение физической величины, соответствующее максимальному значению сигнала датчика;
Плагин «TCP интерфейс»
Плагин «TCP интерфейс» позволяет различным внешним модулям (для которых также есть соответствующие плагины) и прикладным программам взаимодействовать (получать и передавать различные данные) с устройствами «верхнего уровня». При использовании плагина «TCP интерфейс», в общих настройках плагина (см. рис. Рис. 112) необходимо указать следующие флаги компоновки (LDFLAGS):
Рис. 112 – Установка флагов компоновки для плагина «TCP интерфейс»
Данные флаги необходимы, т.к. при выполнении плагина «TCP интерфейс» происходит обращение к библиотекам libtcpsrv.so и libtagsmanager.so, которые находятся на целевом устройстве. Редактор плагина «TCP интерфейс» (см. рис. Рис. 113) позволяет выполнять следующие операции:
Рис. 113 – Редактор плагина «TCP интерфейс»
Связывание переменных внешних модулей с плагином «TCP интерфейс»¶
Связывание переменных внешних модулей с плагином «TCP интерфейс» происходит следующим образом. Во-первых, в проект добавляется необходимый плагин, соответствующий внешнему модулю, переменные которого будут связываться. Данное действие осуществляется с помощью дерева проекта (п. 6.3) или главного меню программы (п. 6.1). После того как плагин добавлен, необходимо объявить интересующние переменные (внешнего модуля) глобальными на уровне проекта. Данную операцию оптимальнее выполнить с помощью кнопки «Добавить переменные» (см. таблица 3) на панели переменных и констант.
В появившемся диалоге (см. рис. Рис. 114) выбран модуль с идентификатором «mdo_0» («МДВыв») и отмечены галочкой необходимые переменные, соответствующие определённым сигналам.
Рис. 114 – Выбор переменных модулей для добавлениях их в глобальную область проекта
Нажатие кнопки «Добавить» добавляет отмеченные переменные на панель переменных и констант. После того как переменные добавлены глобально на уровне проекта (см. рис. Рис. 115), они будут доступны для связывания в плагине «TCP интерфейс».
Рис. 115 – Добавленные глобальные переменные модуля «mdo_0» («МДВыв»)
Далее все операции выполняются уже в редакторе плагина «TCP интерфейс». В нём необходимо нажать кнопку «Модули» (см. рис. Рис. 116).
Рис. 116 – Выбор добавления переменных модулей, объявленных глобально
В появившемся диалоге будут доступны все переменные модулей, объявленные глобально. Далее необходимо выделить с помощью галочки интересующие переменные и нажать кнопку «Добавить» (см. рис. Рис. 117).
Рис. 117 – Добавление глобальных переменных проекта как переменных плагина «TCP интерфейс»
После этого переменные будут добавлены как переменные плагина «TCP интерфейс» (см. рис. Рис. 118).
Рис. 118 – Добавленные переменные модуля «mdo_0» («МДВыв») как переменные плагина «TCP интерфейс»
Имя каждой переменной (столбец «Имя») для внешних программных средств это идентификатор (имя тега) для обращения к данной переменной, т.е. для получения и изменения её значения, внешних программных средств. Данные имена могут быть изменены на любой другое уникальное имя в рамках плагина «TCP интерфейс».
Добавление собственных переменных плагина «TCP интерфейс»¶
Плагин «TCP интерфейс» позволяет добавлять собственные переменные, которые будут доступны программным модулям как переменные плагина модуля УСО. Переменные могут быть следующих типов: DINT, LINT, REAL, LREAL. Информация о типах данных приведена в приложении 3 в описании языка ST. Добавление новой переменной осуществляется с помощью кнопки «Добавить переменную» (см. рис. Рис. 119).
Рис. 119 – Добавление собственной переменной плагина «TCP интерфейс»
В добавленном поле необходимо указать «Имя», «Класс» и «Тип» для новой переменной (см. рис. Рис. 120).
Рис. 120 – Указание типа добавленной переменной в плагин модуля «TCP интерфейс»
Поле «Адрес» для новой переменной будет None, что означает, что переменная не связана ни с каким внешним модулем. После того как переменная добавлена, в данном случае её имя «tcp_in», класс – «input» (т.е. входная) и тип – REAL (вещественный), она доступна как переменная плагина модуля «TCP интерфейс» в программных модулях (см. рис. Рис. 121).
Рис. 121 – Добавленная переменная «tcp_in» модуля «TCP интерфейс»
Связывание переменных программных модулей с внешними переменными¶
Связывание внешних переменных с переменными программных модулей осуществляется с помощью адресов переменных, рассмотренных в п. 7.1.4. Данная операция осуществляется следующим образом. Выбирается программный модуль, переменные которого необходимо связать с переменными плагинов. Далее на панели переменных и констант (п. 6.4) выбирается переменная, которую необходимо связать и выполняется двойной щелчок мышью по полю «Адрес» данной переменной для того, чтобы появилась кнопка «…» (см. рис. Рис. 122).
Рис. 122 – Поле «Адрес» панели переменных и констант
Нажав появившуюся кнопку «…» в поле «Адрес» появится диалог «Просмотр адресов» (см. рис. Рис. 123), в котором отображаются доступные для связывания переменные плагинов. Список отображаемых переменных в данном диалоге зависит от типа и класса переменной в панели переменных и констант, с которой связывается внешняя переменная.
Рис. 123 – Диалог просмотра адресов
После выбора необходимой переменной и нажатия кнопки OK, поле адреса соответствующей переменной будет заполнено адресом внешней переменной (см. рис. Рис. 124).
Рис. 124 – Добавленный адрес переменной внешнего модуля
Среда разработки «Beremiz» позволяет добавить сразу множество переменных, связанных с плагинами внешних модулей. На панели переменных и констант имеется кнопка «Добавить переменные» (см. таблица 3), которая вызывает диалог «Модули» (см. рис. Рис. 125).
Рис. 125 – Диалог добавления переменных модулей
Необходимо выделить с помощью галочки все переменные, которые необходимо добавить на панель программного модуля и нажать кнопку «Добавить». Все внешние переменные буду сразу же добавлены (см. рис. Рис. 126).
Рис. 126 – Добавление переменных с помощью диалога «Модули»
В данном диалоге имеются кнопки «Выделить всё» и «Снять выделение», позволяющие быстро выделить все переменные текущего модуля (выбранного из списка, находящегося над кнопками) или, соответственно снять выделение со всех переменных.
Работа с проектом¶
В данном разделе рассмотрены основные приёмы работы в среде разработки «Beremiz», которые необходимы при создании прикладной программы.
Создание нового проекта¶
Новый проект создаётся с помощью главного меню «Файл» – «Новый» (см. рис. Рис. 127), либо с помощью кнопки «Новый» на панели управления.
Рис. 127 – Создание нового проекта с помощью главного меню
Далее появится диалог (см. рис. Рис. 128), в котором необходимо выбрать папку, где будет храниться данный проект.
Рис. 128 – Диалог выбора папки для нового проекта
Папка должна быть обязательно пустой и не защищена от записи. Если в папке уже есть файлы, будет выдана соответствующая ошибка. В созданной папке будут сохранены следующие файлы и папки:
«beremiz.xml» – в данном XML файле сохраняются настройки специфичные для среды разработки «Beremiz» относительно проекта;
«plc.xml» – в данном XML файле сохраняется полное описание проекта: всех программных модулей, ресурсов, пользовательских типов данных, данных о проекте, настроек редакторов графических языков IEC 61131-3;
папки с настройками плагинов внешних модулей УСО;
папка «build», которая хранит генерируемый ST и C код, а также получаемый исполняемый бинарный файл.
Как правило, первым шагом после создания проекта является его настройка, включающая в себя задание глобальных переменных, установку параметров компиляции и компоновки, а также заполнение данных о проекте. Вызов панели настройки проекта осуществляется при выборе (двойном щелчке левой кнопкой мыши) корневого элемента дерева проекта, которое по умолчанию, сразу после создания проекта называется «Unnamed», как показано на рис. Рис. 129:
Рис. 129 – Вызов панели настройки проекта с помощью корневого элемента дерева проекта
Глобальные переменные проекта¶
Глобальные переменные позволяют программным модулям типа «Программа» и «Функциональный блок» использовать общие переменные, которые будут определены в глобальной области видимости проекта.
Ниже, на рис. Рис. 130, в панели переменных и констант создана глобальная переменная «globalValue» с начальным значением 10, с помощью кнопки «Добавить переменную» (см. таблица 3).
Рис. 130 – Объявление глобальный переменной проекта
Для того чтобы к данной глобальной переменной можно было обращаться из программных модулей типа «Программа» или «Функциональный блок» необходимо в их панели редактирования в панели переменных и констант создать переменную с таким же именем, как и ранее объявленная глобальная, и установить её класс «Внешняя». На рис. 131 приведён пример объявления в программном модуле «program0» переменной «globalValue» класса «Внешняя», типа INT и изменение её значения с помощью языка ST.
Рис. 131 – Использование глобальной переменной в программном модуле
На рис. 132 в программном модуле «program1» также определена переменная «globalValue» класса «Внешняя» и изменение её значения с помощью языка ST.
Рис. 132 – Использование глобальной переменной в программном модуле
Соответственно, переменная «globalValue» будет изменяться во время выполнения в двух программных модулях: «program0» и «program1».
Настройки сборки проекта и соединения с целевым устройством¶
Для использования написанной прикладной программы необходимо её собрать (скомпилировать и скомпоновать), т.е. получить исполняемый файл и передать на целевое устройство для отладки или просто исполнения. В связи с этим основными настройками являются: «URI адрес» целевого устройства и целевая платформа, указывающая архитектуру платформы целевого устройства. На рис. 133 данные параметры выделены красным цветом.
Рис. 133 – Выбор целевой платформы для сборки прикладной программы
Как правило, «URI адрес» указывается в формате:
IP адрес целевого устройства должен быть известен и необходима возможность подключения к нему по локальной сети (требуется обратить внимание на сетевые настройки операционной системы). По умолчанию порт имеет номер 3000.
Например, целевая платформа указывается «Sparc», если архитектура целевого устройства «SPARC».
Данные о проекте¶
При создании нового проекта, все обязательные поля в настройках информации о проекте заполняются значениями по умолчанию. Рекомендуется заменить данные настройки по умолчанию на релевантную информацию (см. рис. 134), позволяющую удобным образом различать проекты.
Рис. 134 – Указание данных о проекте
Большая часть данных в информации проекте являются необязательным для заполнения, но некоторые должны быть всегда заполнены. Это указывается в подсказках в именовании каждого пункта.
После задания настроек проекта, как правило, следует добавление в проект необходимых программных модулей (функций, функциональных блоков и программ), реализация их алгоритмов и логики работы с помощью текстовых и графических языков стандарта IEC 61131-3.
Программные модули¶
Добавление программных модулей (программ, функций, функциональных блоков) осуществляется с помощью всплывающего меню дерева проекта, в котором необходимо выбрать пункт «Функция», «Функциональный блок» или «Программа». Далее появится диалог «Создать новый программный модуль» (см. рис. 135).
Рис. 135 – Диалог добавления программного модуля
В данном диалоге три поля:
Имя, присвоенное по умолчанию, может быть заменено на имя, соответствующее назначению данного программного модуля. В зависимости от того, какой программный модуль был выбран во всплывающем меню, в поле «Тип программного модуля» будет подставлено именование данного программного модуля. В поле «Язык» необходимо выбрать из списка (см. рис. 136) один из языков стандарта IEC 61131-3 (IL, ST, LD, FBD, SFC), на котором будет реализованы алгоритмы и логика работы данного добавляемого программного модуля.
Рис. 136 – Выбор языка для программного модуля
Далее расмотрено добавление каждого программного модуля в отдельности.
Программа¶
Ниже будет приведён пример добавления в проект программы, написанной на языке FBD. Логика и алгоритм работы данного программного модуля следующие: определены две глобальные переменные «globalValue» и «globalLevel», если значение «globalValue» больше 10.0, то присвоить переменной «globalLevel» значение 100, в противном случае присвоить «globalLevel» значение 50.
Сначала следует добавление программы в проект, осуществляемое с помощью меню дерева проекта, выбором пункта «Программа» (см. рис. 137):
Рис. 137 – Выбор в дереве проекта добавления программы
В появившемся диалоге (см. рис. 138) выбирается язык FBD и нажимается кнопка «OK».
Рис. 138 – Диалог добавления программы
Далее в открывшейся вкладке с панелью редактирования данного программного модуля в панели переменных и констант (см. рис. 139) добавляются переменные: «globalValue» типа REAL, класса «Внешняя» и «globalLevel» типа INT, класса «Внешняя».
Рис. 139 – Объявление в программе внешних переменных
Предполагается, что эти переменные уже определены глобальными переменными проекта в панели редактирования проекта (см. рис. 140), как описывается в п. 8.2.1.
Рис. 140 – Глобальные переменные проекта
Далее необходимо обратиться к редактору языка FBD. Для написания алгоритма и логики выполнения данной программы будут добавлены две функции: «GT» и «SEL». Функция «GT» обозначает сравнение «Больше чем» и находится во вкладке «Операции сравнения». Она может содержать от 2 до 20 входных значений (в данном примере их будет 2) и одно выходное значение «OUT». Если значение «IN1» больше значения «IN2», то на выходе «OUT» будет TRUE, в противном случае FALSE.
Функция «SEL» обозначает «Выбор одного из двух значений» и находится во вкладке «Операции выбора». Она содержит три входных переменных «G», «IN0», «IN1» и одну выходную «OUT». Если «G» равно 0 (или FALSE), то выходной переменной «OUT» присваивается значение «IN0». Если «G» равно 1 (или TRUE), то выходной переменной «OUT» присваивается значение «IN1».
Добавление данных функций удобнее осуществить переносом соответствующей функции с помощью мыши (Drag&Drop) из панели библиотеки функций и функциональных блоков в область редактирования FBD диаграммы данного программного модуля (см. рис. 141):
Рис. 141 – Добавление двух функций на FBD диаграмму
Далее, так же используя мышь, переносятся переменные «globalValue» и «globalLevel» на FBD диаграмму. Как уже упоминалось ранее (см. п. 6.7.1.2), необходимо левой клавишей мыши зажать столбец «#» для переменной в панели переменных и констант, далее перенести указатель на область редактирования FBD диаграммы и отпустить кнопку мыши (Drag&Drop). Такую манипуляцию нужно произвести для обоих переменных (см. рис. 142).
Рис. 142 – Перенесённые переменные на FBD диаграмму
Переменную «globalValue» можно сразу соединить с входом «IN1» функции «GT». Чтобы переменную «globalValue» можно было соединить с выходом «OUT» функции «SEL», необходимо сделать двойной щелчок левой кнопкой мыши по «globalValue» на FBD диаграмме и в появившемся диалоге «Свойства переменной» указать класс «Выходная», как показано на рис. 143:
Рис. 143 – Указание класса «Выходная» для переменной
После этого переменную «globalValue» можно соединить с выходом «OUT» функции «SEL» и выход «OUT» функции «GT» с входом «G» функции «SEL» (см. рис. 144).
Рис. 144 – Соединение входов и выходом функций на диаграмме FBD
Далее необходимо добавить 3 числовых литерала, которые будут напрямую соединены с входом «IN2» функции «GT» и входами «IN0» и «IN1» функции «SEL». В панели редактирования FBD диаграммы выбирается кнопка «Добавить переменную» (см. таблица 6) и в появившемся диалоге «Свойства переменной» (см. рис. 145) в поле выражения пишется «10.0». Нажимается кнопка «OK».
Рис. 145 – Добавление переменной на FBD диаграмму
Добавленный литерал соединяется с входом «IN2» функции «GT», как показано на рис. 146:
Рис. 146 – Соединение добавленной переменной с выходом функции
Аналогичным образом создаются литералы со значениями 50 и 100 для входов «IN0» и «IN1» функции «SEL» и соединяются с ними (см. рис. 147).
Рис. 147 – Пример программного модуля, написанного на языке FBD
Соответственно, в случае если значение переменной «globalValue» больше 10.0, то на выходе «OUT» функции «GT» будет значение TRUE, тем самым на вход функции «SEL» поступит тоже True и выходное значение «OUT» будет равно «IN1», т.е. 100.
Далее будет рассмотрен пример добавления программного модуля типа «Функция»
Функция¶
Ниже будет приведен пример добавления в проект функции, и её использование в программном модуле типа «Программа». Добавление функции осуществляется с помощью меню дерева проекта, выбором пункта «Функция» (см. рис. 148):
Рис. 148 – Выбор в дереве проекта добавления функции
В появившемся диалоге «Создать новый программный модуль» в поле «Имя программного модуля» укажем имя «GetStatus» и выберем «Язык» ST из списка языков стандарта IEC 61131-3 (см. рис. 149). Язык SFC не может быть использован для описания алгоритма и логики работы функции.
Рис. 149 – Диалог добавления пользовательской функции
В появившейся панели редактирования функции выберем тип возвращаемого значения функции – STRING (см. рис. 150).
Рис. 150 – Выбор возвращаемого значения фунцией
Далее в панели переменных и констант указываются переменная «value» (хотя переменных может быть несколько) класса «Входная» и в редакторе языка ST пишется алгоритм и логика работы данной функции, как показано на рис. 151:
Рис. 151 – Опредение функции алгоритма и логики выполнения фунции
С помощью блока CASE…OF определяются возвращаемые значения функции в зависимости от значения «value». Если ни одно из 3 условий не подходит, то возвращается «Error».
Далее необходимо создать программный модуль «Программа» на языке FBD и в появившейся панели его редактирования добавить две переменные «in_value» и «out_status», как показано на рис. 152:
Рис. 152 – Добавленный программный модуль «Программа» на языке FBD
На панели библиотеки функций и функциональных блоков в разделе «Пользовательские программные модули» необходимо выбрать функцию «GetStatus» и с помощью указателя мыши (зажав левую кнопку мыши) перенести данную функцию (Drag&Drop) в область редактирования FBD диаграммы программного модуля «program0» (см. рис. 153).
Рис. 153 – Добавление на FBD диаграмму пользовательской функции
Аналогичным образом «перетаскиваются» переменные из панели переменных и констант в область редактирования FBD диаграммы (см. рис. 154).
Рис. 154 – Добавление на FBD диаграмму переменных из панели переменных и констант
Для того чтобы переменную «out_status» можно было соединить с «выходом» функции «GetStatus», необходимо в диалоге свойств данной переменной (который вызывается двойным щелчком левой кнопки мыши по переменной в области редактирования FBD диаграммы) указать класс «Выходная» (см. рис. 155).
Рис. 155 – Изменение «класса» переменной FBD диаграммы
Теперь переменные «in_value» и «out_status» можно соединить соответственно с «входом» и «выходом» функции «GetStatus» (см. рис. 156).
Рис. 156 – Пример FBD диаграммы с использованием пользовательской функции
В результате созданная функция будет возвращать текстовое значение в переменную «out_status» в зависимости от значения переменной «in_value». Стоит отметить, что в данном примере значение переменной «in_value» постоянно равно 5 (для упрощения примера), но она также может зависеть от других переменных или быть связана, используя поле «Адрес», например с переменными внешних модулей УСО.
Функциональный блок¶
Добавление пользовательского функционального блока происходит аналогично добавлению функции. Ниже приведён пример создания функционального блока и его использования. После выбора в дереве проекта добавить «Функциональный блок», создаётся функциональный блок с именем «RectParams» (см. рис. 157), который будет считать площадь и периметр прямоугольника с заданными сторонами.
Рис. 157 – Диалог добавления пользовательского функционального блока
В отличие от функции, функциональный блок может быть описан на любом языке стандарта IEC 61131-3, включая язык SFC. На рис. 158 показана реализация данного функционального блока на языке ST.
Рис. 158 – Описание пользовательского функционального блока на языке ST
Возвращаемого значения у функционального блока нет. Добавленные переменные, обозначающие ширину – «width» и высоту – «height» имеют класс «Входная» и тип INT. Выходные значения: площадь – «area» и периметр – «perimeter» определены соответственно классом «Выходная» и так же типа INT. Ниже находится текст алгоритма расчёта площади и периметра на языке ST. Реализованный функциональный блок становится доступным в панели библиотеки функций и функциональных блоков (см. п. 6.11) и может использоваться в программных модулях типа «Программа» и «Функциональный блок». На рис. 159 показано использование созданного функционального блока «RectParams» в FBD диаграмме.
Рис. 159 – Использование созданного функционального блока в FBD диаграмме
С входом «width» соединена переменная «width», а с входом «height» литерал «40». Результат выполнения данного функционального блока также помещается, соответственно, в «area» и «perimeter». Следует отметить, что при попытке удаления функции или функционального блока из проекта (см. рис. 160), где эти добавленные программные модули уже используются, будет выдана ошибка.
Рис. 160 – Удаление функционального блока
Пример сообщения об ошибке удаления программного модуля приведен на рис. 161.
Рис. 161 – Сообщение об ошибке при удалении функционального блока
Плагины модулей УСО¶
Панель редактирования плагинов для модулей УСО содержит общие настройки для всех плагинов и специфичные в зависимости от назначения плагина.
В проект, содержащий программный модуль типа «Программа» («program0»), написанный на языке ST, добавляются два плагина модулей УСО: «МДВ-У» и «МДВыв-У». Данная операция осуществляется с помощью соответствующих пунктов меню дерева проекта (см. рис. 162):
Рис. 162 – Выбор в меню дерева проекта плагина модуля «МДВ-У» для добавления в проект
После добавления плагинов модулей «МДВ-У» и «МДВыв-У», дерево проекта выглядит, как показано на рис. 163:
Рис. 163 – Дерево проекта после добавления двух плагинов модулей УСО
Далее в программном модуле «program0» необходимо создать переменные, связанные с переменными модулей, которые были добавлены выше. Т.к. переменных будет добавлено несколько, данную операцию удобнее всего осуществить с помощью кнопки «Добавить переменные» (см. таблица 3) на панели переменных и констант. В появившемся диалоге отображены переменные модуля «mdo-0». Далее отмечаются необходимые для добавления переменные данного модуля и нажимается кнопка «Добавить», как показано на рис. 164:
Рис. 164 – Добавление переменных модуля «mdo-0»
В «Списке модулей» выбирается модуль «mdv-0» и отмечаются интересующие переменные. Выполняется аналогичная операция добавления с помощью кнопки «Добавить» (см. рис. 165).
Рис. 165 – Добавление переменных модуля «mdv-0»
После того, как все необходимые переменные добавлены, диалог может быть закрыт. В панели переменных и констант будут отображены все переменные соответствующего типа и класса с установленным адресом (см. рис. 166).
Рис. 166 – Панель переменных и констант после добавления переменных модулей УСО
Следует отметить, что имена добавленных переменных можно изменить. Далее в редакторе языка ST написана логика работы данного программного модуля, показанная на рис. 167:
Рис. 167 – Панель редактирования программного модуля
Если первый или второй сигналы, соответственно переменные «mdv0_singnal1» и «mdv0_singnal2», модуля «МДВ-У» (в проекте «mdv0») равны TRUE, то переменным модуля «МДВыв-У» «md0_signal2» и «md0_signal3» присваивается значение TRUE, в противном случае – FALSE. Если третий сигнал модуля «МДВ-У» «mdv0_signal3» равен FALSE, то переменной модуля «МДВыв-У» «md0_signal1» присваивается TRUE, в противном случае FALSE.
Ресурс¶
Согласно стандарту IEC 61131-3, каждый проект должен иметь как минимум один ресурс, с определённым в нём как минимум одним экземпляром. Экземпляр представляет собой элемент, связанный с программным модулем типа «Программа» и одной определённой задачей. По умолчанию, среда разработки «Beremiz» создаёт для нового проекта один ресурс.
Глобальные переменные ресурса¶
Глобальные переменные ресурса объявляются аналогично глобальным переменным проекта (см. п. 8.2.1) на панели переменных и констант (см. рис. 168) выбранного ресурса с использованием кнопки «Добавить переменную», либо «Добавить переменные» (см. таблица 3).
Рис. 168 – Пример объявления глобальной на уровне проекта константы
Использование данных глобальных переменных на уровне ресурса также аналогично использованию глобальных переменных проекта в программных модулях. Ниже, на рис. 169, показано, как в программном модуле «program0» добавлено две переменных класса «Внешняя» с такими же именами, как и глобальными переменные, объявленные выше для ресурса.
Рис. 169 – Объявление и использование глобальных переменных ресурса
В редакторе ST кода написан алгоритм работы данного программного модуля с использованием данных глобальных переменных.
Задачи и экземпляры ресурса¶
Для создания экземпляра необходимо наличие как минимум одного программного модуля типа «Программа» в проекте и как минимум одной задачи, определённой в панели редактирования ресурса.
После добавления задачи с помощью кнопки «Добавить» (данная кнопка аналогична кнопки «Добавить» на панели переменных и констант), необходимо задать её уникальное имя (поле «Имя») и выбрать тип выполнения задачи (поле «Тип выполнения», см. рис. 170):
Рис. 170 – Выбор типа выполнения задачи
В случае выбора типа выполнения «Цикличное», в поле «Интервал» необходимо указать интервал, с которым будет выполняться данная задача. Двойной щелчок левой кнопкой мыши по полю «Интервал» приводит к появлению кнопки «. » (см. рис. 171).
Рис. 171 – Добавление задачи с цикличным режимом выполнения
Нажатие данной кнопки вызывает диалог «Редактировать продолжительность» (см. рис. 172), в котором можно указать время, используя микросекунды, миллисекунды, секунды, минуты, часы и дни.
Рис. 172 – Диалог редактирования продолжительности задачи
Завершение ввода времени кнопкой «OK» приводит к закрытию диалога и добавлению данного интервала времени в поле «Интервал» добавляемой задачи (см. рис. 173).
Рис. 173 – Добавленный интервал выполнения
В случае выбора типа выполнения «По условию» в поле «Флаг условия» необходимо указать переменную типа BOOL, определённую глобально либо на уровне проекта (см. п. 8.2.1), либо на уровне ресурса (см. п. 8.5.1). На рис. 174 выбирается переменная «globalFlag», определённая в данном ресурсе.
Рис. 174 – Выбор переменной типа BOOL для определения условия выполнения задачи
Задача будет выполнена один раз, как только значение переменной, определённой в этом поле, будет TRUE.
Поле «Приоритет» позволяет указать приоритет выполнения задачи, по умолчанию все задачи имеют приоритет 0. Следует отметить, что в ресурсе должна быть определена как минимум одна задача с типом выполнения «Цикличное», в противном случае будет ошибка в компиляции в отладочной консоли (см. п. 6.12).
После того как задачи определены, их можно использовать в экземплярах. Создание экземпляра происходит аналогичным образом с помощью кнопки «Добавить». Необходимо выбрать уникальное имя экземпляра и далее указать программный модуль типа «Программа» в поле «Тип» и одну из задач в поле «Задача». Например, в проекте определено два программных модуля типа «Программа»: «program0» и «program1» (см. рис. 175).
Рис. 175 – Проект, содержащий два программными модулями типа «Программа»
Соответственно, при создании экземпляра в поле «Тип» оба этих программных модуля будут доступны (см. рис. 176).
Рис. 176 – Выбор программного модуля типа «Программа» для экземпляра
Аналогичным образом выбирается задача из списка, в котором будут отображены определённые ранее задачи (см. рис. 177).
Рис. 177 – Выбор задачи для экземпляра
В каждом проекте в ресурсе должен быть определен как минимум один экземпляр, в противном случае будет ошибка выдана компиляции в отладочной консоли (см. п. 6.12).
Типы данных¶
Добавление типа данных происходит выбором пункта «Типа данных» в меню дерева проекта (см. рис. 178) в уже созданный проект, содержащий программный модуль типа «Программа» – «program0».
Рис. 178 – Выбор пункта меню добавления пользовательского типа данных в дереве проекта
Будет создан массив типа INT размерностью 11 элементов. В появившемся диалоге указывается имя создаваемого типа данных, например «MyArrayType» (см. рис. 179) и нажимается кнопка «OK».
Рис. 179 – Диалог ввода имени создаваемого пользовательского типа данных
В дереве проекта появляется панель редактирования добавленного типа данных с именем «MyArrayType (см. п. 6.9). В поле «Механизм создания нового типа» необходимо выбрать «Массив» и указать тип INT, как показано на рис. 180:
Рис. 180 – Выбор базового типа для массива
С помощью кнопки «Добавить» (см. таблица 10) создаётся поле для массива с указанием его размерности (см. рис. 181) в соответствующем формате.
Рис. 181 – Задание размерности для массива
После выполнения вышеперечисленных операций тип «MyArrayType» может быть использован для определения переменных в программных модулях, так же как и базовые типы данных (см. рис. 182).
Рис. 182 – Выбор добавленного типа данных в панели переменных и констант программного модуля
Добавим две переменные «temp_value» и «out_value» типа INT в панель переменных и констант. Ниже, на рис. 183, пример кода на языке ST, в котором используется переменная «mas», тип которой массив, добавленный выше.
Сначала локальной переменной «temp_value» присваивается значение 10:
Далее первому элементу массива «mas» (нумерация элементов в массиве начинается с 0) присваивается значение переменной «temp_value»:
Второму элементу массива «mas» присваивается значение 20:
И в конце второй локальной переменной присваивается первый элемент массива «mas»:
Далее будет рассмотрена процедура сборки и отладки проекта.
Рис. 183 – Пример использования массива в коде на языке ST
Сборка, передача на целевое устройство и отладка прикладной программы¶
Следующими шагами после создания основных элементов проекта является его сборка (компиляция и компоновка), передача полученного исполняемого файла на целевое устройство и отладка данной прикладной программы.
Сборка проекта осуществляется с помощью соответствующих кнопок, находящихся на панели инструментов (см. п. 6.2.2). Для успешного завершения данной операции каждый проект должен иметь как минимум один ресурс (как уже упоминалось, при создании проекта по умолчанию ресурс будет создан). В ресурсе должна быть определена, как минимум, одна задача циклического типа и, как минимум, один экземпляр. Соответственно, проект обязан содержать, как минимум, один программный модуль типа «Программа», причём тело, т.е. алгоритм и логика его выполнения, не может быть пустым (в противном случае будет ошибка компиляции).
Возможность передачи на целевое устройство прикладной программы и её отладки определяется наличием запущенной на целевом устройстве серверной части среды разработки «Beremiz».
Среда разработки «Beremiz» предоставляет следующие возможности отладки:
Далее подробнее рассказывается про соединение с целевым устройством, передачи на него исполняемого файла и его отладке.
Запуск серверной части для отладки¶
Серверная часть среды разработки «Beremiz», необходимая для передачи исполняемого файла на целевое устройство и его отладки, находится в сценарии на языке Python: Beremiz_service.py. Запуск данного файла осуществляется из командной строки, следующей командой с параметрами по умолчанию (см. таблица 13):
Также, при запуске могут быть указаны параметры, представленные в таблице 13.
Таблица 13 – Параметры командной строки запуска серверной части среды «Beremiz»
После указания всех параметров команды запуска серверной части «Beremiz» можно ввести адрес директории, в которой будут храниться файлы на файловой системе целевого устройства. По умолчанию этой директорией является та, в которой находится Beremiz_service.py.
Как правило, данный сценарий запускается в автоматическом режиме при включении целевого устройства, средствами операционной системы.
Соединение с целевым устройством и передача исполняемого файла¶
После того как скрипт серверной части среды разработки «Beremiz» запущен, можно производить соединение с целевым устройством. В панели настроек проекта (см. п. 6.5) необходимо указать URI-адрес целевого устройства:
На рис. 184 показан URI адрес целевого устройства PYRO://192.168.23.226 и выделена красным цветом кнопка «Соединиться с целевым устройством» (см. таблица 2), которая используется для соединения с целевым устройством.
Рис. 184 – Соединение с целевым устройством
В случае успешного соединения, в отладочной консоли будет выведено соответствующее сообщение и выведен статус прикладной программы (см. рис. 185).
Рис. 185 – Отладочная консоль после соединения с целевым устройством
Статусы прикладной программы могут быть следующие:
Используя кнопки передачи, запуска и остановки прикладной программы на целевом устройстве (см. таблица 2) можно передать исполняемый файл прикладной программы, запустить его и остановить. В отладочной консоли будут выведены соответствующие сообщения (после передачи, запуска и остановки прикладной программы), как показано на рис. 186:
Рис. 186 – Отладочная консоль после передачи прикладной программы, запуска и остановки
Отладка текстовых языков¶
После установки соединения с целевым устройством и запуском прикладной программы на выполнение, среда разработки «Beremiz» позволяет отслеживать и изменять значения переменных программных модулей, из которых состоит проект. Необходимо обратиться к панели экземпляров (см. п. 6.10) и используя соответствующие кнопки, выделенные красным цветом на рис. 187, добавить переменных панель отладки (см. п. 6.14):
Рис. 187 – Добавление переменных для отладки из панели экземпляров
На панели отладки сразу же отобразятся текущие значения добавленных переменных (см. рис. 188).
Рис. 188 – Панель отладки значений переменных
Для того чтобы изменить значение переменной во время исполнения проекта, необходимо нажать правой клавишей мыши в поле «Значение» интересующей переменной и в появившемся всплывающем меню (см. рис. 189) выбрать «Установить значение».
Рис. 189 – Всплывающее меню манипуляций со значением переменной
Появится диалог, показанный на рис. 190.
Рис. 190 – Установка значения переменной во время отладки
Для корректного изменения, вводимое значение должно соответствовать типу переменной, иначе будет выведено сообщение об ошибке (см. рис. 191).
Рис. 191 – Ошибка при вводе недопустимого значения изменяемой переменной в режиме отладки
После изменения значения переменной, она будет отображаться синим цветом (см. рис. 192) в таблице переменных и их значений во вкладке «Отладка»:
Рис. 192 – Переменные в режиме отладки
Для возврата переменной в «нормальный» режим (т.е. вывести из режима отладки), необходимо снова обратиться к всплывающему меню и выбрать «Освободить значение» (см. рис. 193):
Рис. 193 – Всплывающее меню манипуляций со значением переменной
Далее следует описание отладки прикладных программ, написанных на графических языках.
Отладка FBD диаграмм¶
Во время отладки прикладной программы, в которой часть программных модулей написано на графических языках, есть возможность видеть изменения всех значений на диаграмме и вносить необходимые изменения прямо на ней. Как уже упоминалось ранее в п. 6.10, в случае нажатия кнопки запуска режима отладки (на рис. 194 выделены красным цветом) для экземпляра программы, написанной на одном из графических языков, откроется вкладка с панелью диаграммы в режиме отладки.
Рис. 194 – Панель экземпляров проекта
В режиме отладки FBD диаграммы есть возможность устанавливать входные и выходные значения переменных (с помощью всплывающего меню, которые вызывается нажатием правой клавишей по соединению) для функциональных блоков, а также в целом видеть все остальные значения на входах и выходах элементов диаграммы (см. рис. 195).
Рис. 195 – Пример отладки FBD диаграммы
Изменённые значения в режиме отладки выделяются синим цветом. После выбора во всплывающем меню «Освободить значение» значение возвращается в то, которое получается в результате выполнения логики и алгоритма данного модуля на данном участке, а соединение на диаграмме становятся исходного цвета.
Отладка LD диаграммы¶
Отладка LD диаграммы осуществляется аналогично отладке FBD диаграммы. Для вызова всплывающего меню (см. рис. 196), в котором можно установить желаемое значение для контакта или катушки необходимо нажать правую клавишу мыши.
Рис. 196 – Пример отладки LD диаграммы
Появится диалог (см. рис. 197), в котором нужно ввести значение типа BOOL: TRUE – контакт «ON», FALSE – контакт «OFF».
Рис. 197 – Отладка LD диаграммы
После установки в режиме отладки, для данного примера, контакта «IN2» (см. рис. 198), в значение «TRUE» катушка OUT1 приняла значение TRUE, т.к. данная схема представляет собой реализацию «Логического ИЛИ» для IN1 и IN2.
Рис. 198 – Отладка LD диаграммы
Отладка SFC диаграммы¶
Отладка SFC диаграммы происходит аналогично отладке диаграмм FBD и LD. С помощью всплывающего меню (см. рис. 199), есть возможность устанавливать активность для шагов и переходов.
Рис. 199 – Пример отладки SFC диаграммы
На рис. 200 показано, как устанавливается значение (после выбора «Установить значение», появится диалог) TRUE для шага «firstStep».
Рис. 200 – Пример отладки SFC диаграммы
После установки значения шага в TRUE с помощью режима отладки, шаг будет выделен голубым цветом. Как можно заметить по рис. 201, т.к. шаг «firstStep» стал активным, блок действий, ассоциированный с ним, так же стал активным (выделен зелёным цветом), а действия внутри него, в данном случае одно действие по увеличению переменной «count» на 1:
Рис. 201 – Пример отладки SFC диаграммы
Так как квалификатор этого действия – N, то оно будет выполняться до тех пор, пока шаг активен.
График изменения значения переменной¶
Среда разработки «Beremiz» так же позволяет отображать в виде графика изменение значения переменной в режиме отладки. Для вывода панели с графиком, необходимо выбрать в панели экземпляра кнопку отображения графика изменения значения переменной в режиме отладки (см. таблица 11) для необходимой переменной, выделенную красным цветом на рис. 202:
Рис. 202 – Выбор кнопки на панели экземпляров для отображения графика изменения значения переменной
Появившееся панель графика изменения переменной (см. рис. 203) позволяет отслеживать то, как значение определённой переменной изменяется в течение времени.
Рис. 203 – График изменения переменной
На данной панели можно установить интервал обновления и масштаб отображения графика, а так же передвигать позицию графика.
График, изображенный на рис. 203, соответствует изменению переменной из программного модуля на рис. 204:
Рис. 204 – Пример программного модуля тип «Программа» на языке ST
Как видно из графика, переменная «value» изменяется по закону синуса, что соответствует алгоритму, записанному на языке ST.
Пример создания прикладной программы
Пример, создаваемый ниже, будет работать с двумя модулями УСО (построенных на архитектуре «SPARC»): модулем дискретного ввода и TCP интерфейсом, а так же содержать два программных модуля на языках SFC и ST, с определённым алгоритмом и логикой работы. Данные, полученные с сигналов модуля дискретного ввода, соответствующие 3-му и 4-му сигналу будут напрямую связаны с TCP интерфейсом и доступны как теги для внешних программных средств.
Создание проекта¶
Создание проекта начинается с выбора в главном меню «Файл» – «Новый», как показано на рис. 205:
Рис. 205 – Создание нового проекта
В появившемся диалоге необходимо выбрать пустую папку, где будет создан проект, и нажать кнопку «ОК». В созданном новом проекте (см. рис. 206) в дереве проекта отображен созданный по умолчанию ресурс с именем «resource1».
Рис. 206 – Созданный новый проект
Далее следует настройка параметров проекта.
Настройка параметров проекта¶
С помощью дерева проекта выбирается корневой элемент, соответствующий вызову панели настройки проекта. Необходимо снять флаг дополнительных библиотек «Python_Library» и «SVGUI_Library». Целевая платформа выбирается «Sparc». В качестве «URI адреса» указывается в IP адрес и порт целевого устройства с начальной приставкой PYRO, на котором автоматически запускается серверная часть среды разработки «Beremiz» (см. п. 9.1):
Соответственно, панель настройки проекта будет выглядеть, как показано на рис. 207.
Рис. 207 – Настройка параметров проекта
Следующим шагом будет добавление необходимых элементов проекта с помощью меню дерева проекта.
Добавление плагинов для модулей УСО¶
Как ранее было сказано, существует интерфейс, позволяющий связывать внешние источники данных, такие как модули УСО (их параметры, состояния) с программными модулями, из которых состоит прикладная программа. Данный интерфейс осуществлён с помощью механизма плагинов для модулей УСО. Далее в проект будут добавлены плагины модулей: «МДВ-У» и «TCP интерфейс».
Добавление плагина модуля «МДВ-У»¶
Добавим плагин для модуля дискретного ввода «МДВ-У» с помощью меню дерева проекта (см. рис. 208).
Рис. 208 – Добавление плагина для модуля МДВ-У
В появившейся вкладке настройки плагина «МДВ-У» (см. рис. 209) параметры, заданные по умолчанию, изменены не будут:
Рис. 209 – Панель настройки плагина модуля МДВ-У
Объявим переменные соответствующие 3-му и 4-му сигналу, добавленного выше модуля «МДВ-У», глобальными на уровне проекта, чтобы их можно было связать с плагином «TCP интерфейс». Данная операция выполняется в настройках параметров проекта. Необходимо обратиться к панели переменных и констант и нажать на ней кнопку «Добавить переменные», которая на рис. 210 выделена красным цветом:
Рис. 210 – Кнопка добавить переменных на панели переменных и констант настройки проекта
В появившемся диалоге отмечаются сигналы «mdv0_signal3» и «mdv0_signal4» и нажимается кнопка «Добавить» (см. рис. 211).
Рис. 211 – Добавление переменных плагина «TCP интерфейс», как глобальных переменных проекта
Соответственно, панель переменных и констант проекта будет выглядеть, как показано на рис. 212.
Рис. 212 – Список глобальных переменных проекта
Далее следует добавление плагина модуля «TCP интерфейс».
Добавление плагина модуля «TCP интерфейс»¶
Добавление плагина «TCP интерфейс» осуществляется аналогично добавлению плагина модуля «МДВ-У» через всплывающее меню дерева проекта (см. рис. 213).
Рис. 213 – Добавление плагина для модуля «TCP интерфейс»
В плагине «TCP интерфейс» указываются флаги (см. п. 7.4), необходимые для его сборки в параметре «LDFLAGS»:
Далее добавляются две переменные, с помощью кнопки «Добавить переменную», относящиеся к самому плагину, т.е. две его собственные переменные «tcp_out1» и «tcp_out2» (см. рис. 214):
Рис. 214 – Добавленные переменные плагина «TCP интерфейс»
Установим у них класс «output», т.е. выходные переменные и тип «DINT». Так же добавим две связанные переменные с плагином «МДВ-У» с помощью кнопки «Модули». В появившемся диалоге устанавливаются галочки для двух ранее объявленных глобально переменных модуля «МДВ-У»: «mdv_signal4» и «mdv_signal3» и нажимается кнопка «Добавить» (см. рис. 215):
Рис. 215 – Добавление двух переменных модуля
Добавленные переменные отобразятся в список переменных плагина «TCP интерфейс», показанный на рис. 216.
Рис. 216 – Добавленные переменные в настройках плагина
На этом настройка плагина «TCP интерфейс» завершена. После добавления двух плагинов для модулей УСО, дерево проекта выглядит, как показано на рис. 217:
Рис. 217 – Дерево проекта после добавления двух плагинов для модулей УСО
Далее будут в проект добавлены необходимые программные модули, а также написаны алгоритм и логика их работы.
Добавление программных модулей¶
Два программных модуля, первый на языке SFC, второй на языке ST будут определять значения переменных плагина «TCP интерфейс» в зависимости от сигналов модуля «МДВ-У».
Добавление программы, написанной на языке SFC¶
В меню дерева проекта, вызываемого с помощью кнопки «+» выбирается программный модуль «Программа» (см. рис. 218).
Рис. 218 – Добавление программного модуля «Программа» с помощью меню дерева проекта
В появившемся диалоге происходит выбор языка «SFC» и нажимается кнопка «OK» (см. рис. 219).
Рис. 219 – Добавление программы на языке SFC
После того, как данный программный модуль добавлен появляется его окно редактирования. Необходимо добавить две переменные типа BOOL на панель переменных и констант данного программного модуля и назвать их соответственно «flagStart» и «flagFinish», как показано на рис. 220.
Рис. 220 – Две добавленные переменные для программного модуля на языке SFC
Далее происходит связывание этих двух переменных с двумя сигналами «mdv0_signal1» и «mdv0_signal2» модуля дискретного ввода с помощью поля «Адрес» (двойное нажатие левой клавишей мыши по данному полю) и вызов диалога просмотра адресов (см. рис. 221).
Рис. 221 – Связывание переменных типа BOOL с переменными модуля УСО
В результате на панели переменных и констант программного модуля «program0» будут две переменных типа BOOL, связанные с двумя сигналами «mdv0_signal1» и «mdv0_signal2» модуля дискретного ввода (см. рис. 222).
Рис. 222 – Две переменные типа BOOL связанные с переменными модуля «МДВ-У»
Теперь можно перейти к созданию SFC диаграммы. Выберем на панели редактирования кнопку создания нового шага инициализации и добавим его в область редактирования. В появившемся диалоге (см. рис. 223) определим только выходной соединитель.
Рис. 223 – Добавление шага инициализации
Далее добавим еще один шаг с названием «mainStep» (см. рис. 224).
Рис. 224 – Добавление шага
Соответственно, после добавления двух шагов, панель редактирования SFC диаграммы выглядит следующим образом (см. рис. 225):
Рис. 225 – Создание SFC диаграммы
Далее необходимо добавить переход между шагом «initStep» и «mainStep». Выбираем на панели управления кнопку «Добавить новый переход» и в появившемся диалоге «Редактировать переход» (см. рис. 226) устанавливаем тип перехода «Встроенный код» со значением «flagStart». Нажимаем кнопку «OK».
Рис. 226 – Добавление перехода
Теперь необходимо соединить, посредством перехода, шаги «initStep» и «mainStep» с помощью их контактов. В результате SFC диаграмма будет выглядеть, как показано на рис. 227:
Рис. 227 – Создание SFC диаграммы
Далее будет произведено добавление еще одного перехода, у которого тип «Соединение» (см. рис. 228)
Рис. 228 – Добавление перехода типа «Соединение»
Верхний конец добавленного перехода соединяется с выходным соединением шага «mainStep» (см. рис. 229).
Рис. 229 – Создание SFC диаграммы
С помощью указателя мыши переменная «flagFinish» перетаскивается из панели переменных и констант в область редактирования, и её левый контакт соединяется с контактом добавленного выше перехода, как показано на рис. 230.
Рис. 230 – Создание SFC диаграммы
Для того чтобы после выполнения второго условия диаграмма возвращалась в начальное состояние необходимо сделать переход на шаг «initStep». Данную операцию удобнее реализовать с помощью добавление «прыжка» (см. рис. 231).
Рис. 231 – Добавление «прыжка» на SFC диаграмму
Выходное соединение перехода соединяется с «прыжком» и в результате получается SFC диаграмма, показанная на рис. 232:
Рис. 232 – Создание SFC диаграммы
Теперь необходимо добавить в шаг «mainStep» выполнение действия. В панель переменных и констант добавляется еще одна переменная с именем «value» (см. рис. 233).
Рис. 233 – Добавление переменной «value» программный модуль «program0»
Данная переменная будет изменяться во время выполнения действия и будет связана с переменной «tcp_out1». Данная операция выполняется с помощью двойного щелчка по полю «Адрес» добавленной переменной «value» и нажатия кнопки «…» для выбора диалога «Просмотр адресов», как показано на рис. 234:
Рис. 234 – Связывание переменной программного модуля с переменной плагина «TCP интерфейс»
Далее создаётся блок действий, в который добавляется одно действие с квалификатором N (см. таблица 9), типа «Встроенный код» и в поле «Значение» пишется код (см. рис. 235), который будет исполняться, когда данное действие становится активным:
Рис. 235 – Редактирование блока действий
После того как действие добавлено, его контакт, расположенный справа, можно соединить с контактом шага (см. рис. 236).
Рис. 236 – SFC диаграмма
В результате получилась SFC диаграмма, состоящая из двух шагов, двух переходов одного блока действий и одного «прыжка». Выполнение (состояние) данной диаграммы зависит от входных сигналов модуля «МДВ-У», т.к. условия переходов зависят от переменных «flagStart» и flagFinish, которые связаны с сигналами модуля «МДВ-У».
Далее следует добавление второго программного модуля.
Добавление программы, написанной на ST¶
Для добавления программного модуля «Программа» необходимо снова обратиться к меню дерева проекта, выбрав в нём соответствующий элемент (см. рис. 237).
Рис. 237 – Добавление программы в дерево проекта
Появится диалог создания нового программного модуля, в котором необходимо указать «Язык» ST (см. рис. 238) и нажать кнопку «OK».
Рис. 238 – Диалог добавления программы, написанной на языке ST
После добавления дерево проекта будет выглядеть, как показано на рис. 239.
Рис. 239 – Добавленная программа в дереве проекта
В появившейся вкладке редактирования программного модуля, написанного на языке ST, в панели переменных и констант добавим переменную «sig5» типа BOOL. С помощью поля «Адрес» свяжем её с переменной модуля «МДВ-У» с названием «mdv0_signal5», соответствующей сигналу под номером 5, как показано на рис. 240.
Рис. 240 – Связывание переменной модуля «МДВ-У» с переменной программного модуля
Далее добавляется еще одна переменная типа DINT, которая связывается с добавленной переменной «tcp_out2» модуля «TCP интерфейс» (см. п. 7.4.2). Связывание происходит аналогично связыванию «mdv0_signal5» с помощью поля «Адрес» (см. рис. 241).
Рис. 241 – Связывание переменной модуля «TCP интерфейс» с переменной программного модуля
Соответственно, после добавления двух переменных и их связывания с переменными внешних модулей панель переменных и констант будет выглядеть, как показано на рис. 242:
Рис. 242 – Панель переменных и констант добавленного программного модуля «program1»
Далее следует написание алгоритма и логики работы данного программного модуля. На языке ST будет записано следующе условие: в случае если переменная «sig5» равна TRUE, т.е. 1, то присвоить переменной «out» значение 10, в противном случае, если переменная «sig5» равна FALSE, т.е. 0, то присвоить переменной «out» значение 20, как показано на рис. 243.
Рис. 243 – Пример простой логики на языке ST
После того, как логика и алгоритмы для двух программных модулей реализованы, необходимо определить их экземпляры и связать с задачами.
Создание экземпляра программы¶
Для создания экземпляров необходимо обратиться к элементу «Ресурс», созданному по умолчанию, в дереве проекта, как показано на рис. 244.
Рис. 244 – Выбор элемента «Ресурс» в дереве проекта
Появится новая вкладка с панелью редактирования ресурса (см. рис. 245).
Рис. 245 – Панель редактирования ресурса
В появившейся панели необходимо добавить две задачи с типом выполнения «Цикличное», одна из которых продолжительностью 500 мс, а другая 1000 мс. С помощью кнопки добавить (данная кнопка аналогична кнопки добавления переменной в панели переменных и констант) добавляется задача, поле «Тип выполнения» устанавливается «Цикличное» и делается двойной щелчок по полю «Интервал» (см. рис. 246).
Рис. 246 – Добавление новое задачи
В появившемся диалоге (рис. 247) указывается продолжительность в 500 мс и нажимается кнопка «OK».
Рис. 247 – Редактирование продолжительности задачи
Аналогичным образом добавляется вторая задача, но с интервалом продолжительности 1 секунда. Соответственно, список задач после их добавления выглядит, как показано на рис. 248:
Рис. 248 – Добавленные задачи
Далее создаётся два экземпляра: «instance1» и «instance2». Данная операция осуществляется аналогичным образом, используя кнопку добавления экземпляра. Каждый из добавленных экземпляров ассоциируется с программным модулем типа «Программа» (соответственно «program0» и «program1»), используя поле «Тип» и с задачей (соответственно «task1» и «task2»), используя поле «Задача» (см. рис. 249).
Рис. 249 – Связывание экземпляра с программой и задачей
После добавление задачи и экземпляров, панель ресурса выглядит, как показано на рис. 250:
Рис. 250 – Панель ресурса после добавления задачей и экземпляров
На этом этапе написание программы заканчивается и далее следует переход к сборке проекта, соединению с целевым устройством, передачи на него исполняемого файла, запуску и отладке.
Сборка проекта¶
Сборка проекта осуществляется с помощью кнопки «Собрать проект» (см. таблица 2). На рис. 251 данная кнопка выделена красным цветом:
Рис. 251 – Кнопка сборки проекта
Во время сборки проекта необходимо следить за отладочной консолью, в которой в случае наличия ошибок, будут выведены соответствующие сообщения. На рис. 252 показано, что сборка проекта завершилась успешно.
Рис. 252 – Успешная сборка проекта
Сообщения-предупреждения, выделенные красным цветом, связаны с тем, что для сборки проекта используется UNIX-подобная оболочка Cygwin.
После успешного завершения процесса сборки проекта, его необходимо передать на целевое устройство. Описание данного шага следует далее.
Передача и запуск прикладной программы на целевом устройстве¶
Как упоминалось в п. 9, для возможности передачи прикладной программы и её отладки необходимо на целевом устройстве иметь запущенную серверную часть среды разработки «Beremiz» (см. п. 9.1), представляющую собой скрипт «Beremiz_service.py». В данном примере предполагается, что она уже автоматически запущена на целевом устройстве, с IP-адресом 192.168.23.226 и портом 3000. Соответственно в настройках проекта указано PYRO://192.168.23.226:3000 (см. п. 10.3), как показано на рис. 253:
Рис. 253 – Панель настройки проекта
Нажатие кнопки «Соединиться с целевым устройством» (см. таблица 2) инициирует соединение с целевым устройством. На рис. 254 данная кнопка выделена красным цветом:
Рис. 254 – Кнопка соединения с целевым устройством
В отладочной консоли будет выдано соответствующее сообщение, показанное на рис. 255:
Рис. 255 – Отладочная консоль после соединения с целевым устройством
Состояние «Empty» указывает, что на целевом устройстве отсутствует какая либо прикладная программа. Далее необходимо передать собранный исполняемый файл с помощью кнопки «Передача прикладной программы» (см. таблица 2), выделенной на рис. 256 красным цветом:
Рис. 256 – Кнопка передачи прикладной программы
В отладочной консоли будет выдано соответствующее сообщение «Передача успешно выполнена», показанное на рис. 257:
Рис. 257 – Отладочная консоль после соединения с целевым устройством
Запуск прикладной программы осуществляется с помощью кнопки «Запуск прикладной программы» (см. таблица 2), выделенной на рис. 258 красным цветом:
Рис. 258 – Кнопка запуска прикладной программы
В отладочной консоли будет выдано соответствующее сообщение «ПЛК запущен на выполнение», показанное на рис. 259:
Рис. 259 – Отладочная консоль после запуска прикладной программы
Остановка прикладной программы осуществляется с помощью кнопки «Остановить работающую прикладную программу» (см. таблица 2), выделенной на рис. 260 красным цветом:
Рис. 260 – Кнопка остановки прикладной программы
В отладочной консоли будет выдано соответствующее сообщение «Отладчик отключён», показанное на рис. 261:
Рис. 261 – Отладочная консоль после остановки прикладной программы
Далее можно приступить к процессу отладки прикладной программы.
Отладка прикладной программы¶
После того как прикладная программа запущена, можно обратиться к дереву проекта и выбрать элемент «resource1». В панели экземпляров будут отображены два экземпляра, определённых в ресурсе «resource»: «instance1» для «program0» и «instance2» для «program1». Если нажать кнопку запуска режима отладки для экземпляра, выделенную на рис. 262 красным цветом для «instance1»:
Рис. 262 – Дерево проекта и панель экземпляров проекта
Откроется новая вкладка, содержащая FBD диаграмму, переведённую в режим отладки, как показано на рис. 263:
Рис. 263 – Пример FBD диаграммы в режиме отладки
С помощью кнопки запуска режима отладки для экземпляра, выделенной на рис. 264 красным цветом, добавим переменную «value» на панель отладки:
Рис. 264 – Добавление переменной «value» на панель отладки
Значение переменной «value» равно 0, т.к. это значение присвоено ей при инициализации. Для того, чтобы значение начало изменяться необходимо сделать шаг «mainStep» активным. Это может произойти, если в модуле «МДВ-У» 1-ый сигнал станет TRUE, т.к. переход «flagStart», зависит именно от него. Другим способом перевести переход «flagStart» в состояние TRUE является механизм отладки SFC диаграммы. Для этого на SFC диагрмме необходимо нажать правой кнопкой мыши по переходу «flagStart» и выбрать «Установить значение» в появившемся всплывающем меню, как показано на рис. 265.
Рис. 265 – Всплывающее меню отладки переда SFC диаграммы
В появившемся диалоге «Ввода значения переменной типа “BOOL”» устанавливается значение «True». Далее следует нажатие кнопки «OK», как показано на рис. 266.
Рис. 266 – Установка значения True для перехода
Соответственно, после установки перехода «flagStart» на SFC диаграмме в значение TRUE, шаг «mainStep» выделен зелёным цветом (см. рис. 267).
Рис. 267 – SFC диаграмма во время отладки
Блок действий, ассоциированный с этим шагом, также становится и активным и выделен зелёным цветом. Единственное действие начинает выполняться. Следовательно, в панели отладки видно, как значение переменной «value» увеличивается на единицу с периодичностью в 500 миллисекунд, т.к. экземпляр программы «program0» связан с задачей, у которой интервал 500 мс (см. п. 10.6).
Библиотека функций и функциональных блоков¶
Функции и функциональные блоки представляют собой предопределённые элементы, которые могут быть использованы при написании алгоритмов и логики программных модулей типа «Функциональный блок» и «Программ», как на текстовых, так и на графических языках стандарта IEC 61131-3.
Данные элементы имеют параметры на входе и на выходе. Как правило, каждый параметр имеет имя и своё назначение.
Стандартные функциональные блоки
Данный функциональный блок представляет собой бистабильный SR-триггер, с доминирующим входом S (Set). Выход Q1 становится “1”, когда вход S1 становится “1”. Это состояние сохраняется, даже если S1 возвращается обратно в “0”. Выход Q1 возвращается в “0”, когда вход R становится “1”. Если входы S1 и R находятся в “1” одновременно, доминирующий вход S1 установит выход Q1 в “1”. Когда функциональный блок вызывается первый раз, начальное состояние Q1 это “0”.
Данный функциональный блок представляет собой бистабильный RS-триггер, с доминирующим входом R (Reset). Выход Q1 становится “1”, когда вход S становится “1”. Это состояние сохраняется, даже если S возвращается обратно в “0”. Выход Q1 возвращается в “0”, когда вход R1 становится “1”. Если входы S и R1 находятся в “1” одновременно, доминирующий вход R1 установит выход Q1 в “0”. Когда функциональный блок вызывается первый раз, начальное состояние Q1 это “0”.
Данный функциональный блок представляет собой семафор, определяющий механизм, позволяющий элементам программы иметь взаимоисключающий доступ к определенным ресурсам.
R_TRIG – Индикатор нарастания фронта
F_TRIG – Индикатор спада фронта
Данный функциональный блок представляет собой индикатор спада фронта, который генерирует на выходе одиночный импульс при спаде фронта сигнала.
CTU – инкрементный счётчик
Примечание: Счетчик работает только до достижения максимального значения используемого типа данных. Переполнения не происходит.
Входы CU, RESET и выход Q типа BOOL, вход PV и выход CV типа WORD.
По каждому фронту на входе CU (переход из FALSE в TRUE) выход CV увеличивается на 1. Выход Q устанавливается в TRUE, когда счетчик достигнет значения заданного PV. Счетчик CV сбрасывается в 0 по входу RESET = TRUE.
CTD – декрементный счётчик
Когда CV = PV, выход QU имеет значение “1”.
Когда CV IN2) & (IN2 > IN3) & … (INn-1 > INn), в противном случае в результат выдаётся False. Количество входов IN(n) изменяемое – от 2 до 20. По умолчанию 2.
GE – больше чем или равно
Данная функция сравнивает все входные аргументы и выдаёт в результате значение True, если выполнится следующее условие: (IN1 >= IN2) & (IN2 >= IN3) & … (INn-1 >= INn), в противном случае в OUT выдаётся False. Количество входов IN(n) изменяемое – от 2 до 20. По умолчанию 2.
Данная функция сравнивает все входные аргументы и выдаёт на выходе OUT значение True, если выполнится следующее условие: (IN1 = IN2) & (IN2 = IN3) & … (INn-1 = INn), в противном случае в OUT выдаётся False. Количество входов IN(n) изменяемое – от 2 до 20. По умолчанию 2.
Строковые операции с переменными типа STRING
Данная функция возвращает в результат длину строки IN. Входному параметру можно ставить в соответствие только символически определенную переменную.
LEFT – левая часть строки
Данная функция возвращает в результат из строки IN первые L символов. Если L больше, чем текущая длина переменной типа STRING, то возвращается входное значение. При L = 0 и при пустой строке в качестве входного значения возвращается пустая строка. Если число L отрицательно, то выводится пустая строка. Параметру IN и возвращаемому значению можно ставить в соответствие только символически определенную переменную.
RIGHT – правая часть строки
Данная функция возвращает в результат из строки IN последние L символов. Если L больше, чем текущая длина переменной STRING, то возвращается входное значение. При L = 0 и при пустой строке в качестве входного значения возвращается пустая строка. Если число L отрицательно, то выводится пустая строка. Параметру IN и возвращаемому значению можно ставить в соответствие только символически определенную переменную.
MID – середина строки
Данная функция возвращает в результат из строки IN L-символов, начиная с позиции P. Если сумма L и (P–1) превосходит текущую длину переменной типа STRING, то возвращается строка символов, начиная с P-го символа входной строки до ее конца. Во всех остальных случаях (P находится вне текущей длины, P и/или L равны нулю или отрицательны) выводится пустая строка. Параметру IN и возвращаемому значению можно ставить в соответствие только символически определенную переменную.
CONCAT – объединение двух переменных STRING
Данная функция возвращает в результат объединение (конкатенацию) строк IN1 и IN2.
CONCAT_DAT_TOD – объединение (конкатенация) времени
Данная функция возвращает в результат типа DT конкатенацию входных значений типов DATE и TOD, соответственно IN1 и IN2.
INSERT – вставка в переменной STRING
Данная функция возвращает в результат строку IN1, в которую вставлена строка IN2, начиная с позиции P. Если P равно нулю, то вторая строка символов вставляется перед первой строкой символов. Если P больше, чем текущая длина первой строки символов, то вторая строка символов присоединяется к первой. Если P отрицательно, то выводится пустая строка. Входным параметрам IN1 и IN2 и выходному параметру можно ставить в соответствие только символически определенную переменную.
DELETE – удаление в переменной STRING
Данная функция возвращает в результат строку IN1, в которой удалено L символов, начиная с позиции P. Если L и/или P равны нулю или P больше, чем текущая длина входной строки, то возвращается входная строка. Если сумма L и P больше, чем входная строка символов, то строка символов удаляется до конца. Если L и/или P имеют отрицательное значение, то выводится пустая. Входному параметру IN и выходному параметру можно ставить в соответствие только символически определенную переменную.
REPLACE – замена в переменной STRING
Данная функция возвращает в результат строку IN1, в которой символы, начиная с позиции P, заменены L первыми символами строки IN2. Если L равно нулю, то возвращается первая строка символов. Если P равно нулю или единице, то замена происходит, начиная с 1-го символа (включительно). Если P лежит вне первой строки символов, то вторая строка присоединяется к первой строке. Если L и/или P отрицательны, то возвращается пустая строка. Входным параметрам IN1 и IN2 и выходному параметру можно ставить в соответствие только символически определенную переменную.
FIND – поиск в переменной STRING
Данная функция возвращает в результат номер позиции, в которой находится строка IN2 в строке IN1. Поиск начинается слева, сообщается о первом появлении строки символов. Если вторая строка символов не содержится в первой, то возвращается нуль. Входным параметрам IN1 и IN2 можно ставить в соответствие только символически определенную переменную.










































































































































































































































































































































