Урок №2: Функциональные блоки программы
В этом уроке мы разберем основные функциональные блоки кода советника на MQL, который мы с Вами создали в предыдущей статье.
Итак, первый блок — так называемая «Шапка». Она отображает справочную информацию:
- наименование советника;
- авторские права;
- сайт или email;
- версия советника;
- свойство-команда, необходимое для того, чтобы во время компилирования MetaEditor строго проверял в коде наши ошибки и выдавал предупреждения.
Следующий блок — это объявление внешних переменных.
Это те самые параметры, которые мы заполняли в мастере создания советника и которые будут появляться в окне при переносе советника на график.
13. Типовые функциональные блоки
Ключевое слово input определяет переменную как внешнюю и указывается он перед типом данных. Изменять значение переменной с ключевым словом input внутри mql4-программы нельзя, такие переменные доступны только для чтения. Изменять значения input-переменных может только пользователь из окна свойств программы.
И наконец последний блок — это блок самой программы.
В этом блоке мы видим три предопределённые функции(события): OnInit(), OnDeinit() и OnTick():
- Функция OnInit() является обработчиком события Init. Может иметь тип void или int, параметров не имеет.Функция OnInit () выполняется один раз при загрузке советника — она выполняется самая первая (иначе этот процесс называется инициализация). Иначе говоря, OnInit () выполняется только один раз при загрузке советника на наш график. Например, если мы поставим наш советник на график в MetaTrader4 и первое, что произойдет в советнике — это выполнится функция OnInit().
- Функция OnDeinit() похожа на OnInit(), она также выполняется только один раз, но уже при удалении советника. Должна быть объявлена с типом void и иметь один параметр типа const int , который содержит код причины деинициализации. Если объявлен иной тип, компилятор выдаст предупреждение, но функция вызываться не будет.
- Функция OnTick() вызывается только для экспертов при поступлении нового тика по символу, к графику которого прикреплен эксперт. Функцию OnTick() бесполезно определять в пользовательском индикаторе или скрипте, поскольку событие NewTick для них не генерируется. Должна быть объявлена с типом void, параметров не имеет.
Более подробно о событиях программы можно почитать на этой страничке в разделе «События клиентского терминала».
- при переносе советника на график выполняется функция OnInit();
- при поступлении новой котировки в терминал — выполняется функция OnTick();
- при удалении советника с графика выполняется функция OnDeinit().
На следующем уроке мы познакомимся с комментариями в коде советника.
Программирование ПЛК. 10.Функции и функциональные блоки.
Источник: mql.su
Язык непрерывных функциональных схем CFC. Часть 1
Пять основных языков программирования (ST, SFC, FBD, LD, IL), установленных стандартом МЭК 61131-3, используются при написании программ для логических контроллеров. В дополнение к ним CODESYS предлагает язык непрерывных функциональных схем (CFC). Редактор языка и сама его структура интуитивно понятна. Для написания программ не требуется специальных знаний. Именно поэтому CFC является языком выбора для начинающих программистов.
Начиная с 1993 года стандартом IEC 61131-3 (МЭК 61131-3) определено пять основных языков (ST, SFC, FBD, LD, IL) для программирования логических контроллеров. Из них наиболее простым в изучении и удобным в работе является графический язык FBD.
Некоторые компании для облегчения программирования внедряют в свои программные продукты языки, не входящие в стандарт МЭК. Например, CODESYS использует язык непрерывных функциональных схем (CFC), как вариант языка FBD. Язык удобен для прикладных специалистов, не имеющих специальной подготовки в области информатики.
Принципиальное отличие CFC от FBD заключается в том, что в редакторе CFC размещать компоненты программы (функциональные и логические блоки) и задавать порядок их выполнения можно произвольным образом. Такие возможности позволяют легко реализовывать обратные связи, что удобно при разработке схем регулирования. При создании программ на CFC необходимо вручную выстраивать связи между элементами, в то время как на FBD соединения выполняются автоматически.
Свойства редактора CFC
Существуют две разновидности редактора CFC: стандартный (рис. 1) и страничный (рис. 2). Выбрать тип редактора можно при создании нового проекта или при добавлении POU (компонент организации программы) в уже существующий проект
Страничный тип редактора CFC удобен при создании проектов, содержащих большое количество последовательно выполняющихся частей программы. Постраничное размещение программы позволяет быстро переключаться между ее разделами, акцентировать внимание только на необходимых элементах, снижает риск построения ошибочных связей и делает проект интуитивно понятным. При работе программы страницы выполняются последовательно, а передача информации с одной страницы на другую осуществляется с помощью меток соединения.
Стандартный тип редактора CFC более популярен среди пользователей, так как обладает рядом преимуществ: наглядность представления кода (все блоки и связи между ними расположены на единой рабочей области), не требуется переключения между страницами, что позволяет избежать лишних действий при написании кода.
Важно помнить, что стандартный и страничный типы редактора не конвертируются один в другой.
Общие свойства блоков
Программа на языке CFC начинается с добавления блоков на рабочую область редактора. Нужный блок добавляется мышкой с панели инструментов.
Блоки имеют фиксированное значение входных и выходных контактов. Можно добавить дополнительные контакты с панели инструментов Входной и Выходной контакт или из пункта: Контакты, контекстного меню, вызываемого нажатием ПКМ на рабочей области редактора.
При работе с большим числом ФБ могут остаться не задействованными входные/выходные контакты. Для компактности программы их можно удалить. При необходимости удаленные контакты всегда можно восстановить функцией сброс контактов. Операции удаления и сброса контактов выполняются аналогично добавлению входных и выходных контактов, а также при помощи соответствующих кнопок на панели инструментов. Чтобы поменять порядок входных/выходных контактов, необходимо их удалить, а потом заново добавить в нужном порядке.
После создания блока начинается этап создания входов и выходов путем перемещения их с панели инструментов. Если блок имеет два-три входных/выходных контакта, то операция занимает мало времени. Если у блока большое число контактов, то потребуется оптимизировать процесс. Необходимо выделить входной или выходной контакт блока и начать вводить имя переменной или константу.
Таким образом выход будет добавляться автоматически столько раз, сколько потребуется (рис. 3).
Существует еще один способ добавления входа/выхода блока сразу с переменной. Для этого переменные задаются в разделе программы VAR: выделяется имя переменной и перемещается к нужному входному или выходному контакту блока.
При формировании логики программы блоки добавляются, как правило, в произвольном порядке и так же строятся связи между ними. Это приводит к тому, что нумерация блоков отличается от последовательности их расположения (порядка выполнения) (рис. 4). Чтобы соблюсти очередность выполнения (рис. 5), нужно перед запуском программы нажать ПКМ на рабочем поле редактора CFC и в меню Порядок выполнения, выбрать пункт Упорядочить в соответствии с потоком данных.
В версии CODESYS V3.5 SP15 появилась новая опция – автоматическая нумерация блоков в соответствии с потоком данных. Теперь элементы можно добавлять на рабочую область редактора в любом порядке и как угодно перемещать. Автоматическая нумерация элементов программы установлена по умолчанию. Вместе с тем сохранена нумерация элементов в режиме заданного порядка выполнения.
Переключаться между режимами можно из свойств POU на вкладке: Порядок выполнения CFC. Посмотреть номера элементов при автоматической нумерации (рис. 6) можно из пункта контекстного меню Порядок выполнения с помощью кнопки Показать порядок выполнения или с помощью этой же кнопки, расположенной на панели инструментов.
Функциональные блоки и структуры
При работе с ФБ, имеющими большое количество входов/выходов, или структурами, содержащими большое количество переменных, удобно использовать компоновщик и селектор (рис. 7), которые находятся на панели инструментов.
Компоновщик упаковывает входы ФБ или структуры, а селектор распаковывает в отдельные выходы, таким образом заменяется большое количество близко расположенных линий связи на одну. Такой подход позволяет избежать ошибок и ускорить процесс компоновки и перемещения блоков, а также экономит место на рабочей области редактора и делает код программы нагляднее.
Линии связи
Для построения линии связи между двумя элементами нужно соединить контакты двух блоков. В редакторе CFC реализован ряд полезных функций по построению линий свиязи. Функция автосоединения линий связи по умолчанию активна, ее можно включить или отключить в меню Инструменты, пункт Опции. Для автосоединения необходимо вплотную приблизить контакты элементов.
Существует поддержка параллельной связи от одного элемента к многим другим (рис. 3).
Если линия связи целиком не умещается на экране монитора, нужно выделить один из контактов линии связи (зажать клавишу + нажать стрелку ), тогда рабочая область сама сдвинется к входным или выходным контактам.
Для того чтобы избежать проблем из-за наличия большого количества линий связи, в стандартном редакторе CFC используют соединительные метки (рис. 8). Единственная задача меток – заменить длинные нечитаемые линии связи. Соединительные метки можно установить с панели инструментов.
Сначала добавляется метка выхода (ей автоматически присваивается идентификационный номер), затем добавляется метка входа, и ей присваивается соответствующий номер. Заменить линию связи метками можно в пункте Метка соединения контекстного меню, вызываемого нажатием ПКМ на самой линии или на соответствующем входе/выходе. Аналогичным образом можно восстановить линию из меток.
В страничном редакторе CFC нельзя добавить соединительную метку на рабочую область (заменить ими линии связи), так как они выполняют другую задачу. Соединительные метки служат входами и выходами на страницах проекта – осуществляют передачу данных с одной страницы на другую (рис. 9). Метки добавляются не на рабочей области, что улучшает наглядность проекта и экономит место непосредственно на рабочей области редактора.
Оформление и компоновка программ
Неотъемлемой частью оформления программы являются комментарии. В редакторе CFC можно свободно размещать комментарии на рабочей области. Создать комментарий можно с помощью одноименного элемента на панели инструментов. Переход на новую строку при написании комментария осуществляется с помощью комбинации клавиш: +.
В редакторе CFC существует возможность печати проекта с двумя типами подгонки – Постер и Страница, выбрать один из них можно в меню Инструменты, в пункте Опции. По умолчанию стоит печать постером. Перед печатью проекта можно выполнить его предварительный просмотр в пункте Файл.
Во второй части статьи речь пойдет о реализации условий на языке CFC; особенностях работы с элементами, охваченными обратной связью; свойствах раздела VAR_INPUT CONSTANT в ФБ; кастомизации проектов и других важных особенностях работы с CFC.
Издание зарегистрировано Федеральной службой по надзору в сфере связи, информационных технологий и массовых коммуникаций. Свидетельство о регистрации средств массовой информации ПИ № ФС77-68720.
Источник: aip.com.ru
3 Основы разработки программы
Работа ЦПУ выполняется циклически под управлением операционной системы (см. рисунок 3.1). Фазы циклической обработки программы:
- Операционная система запускает время контроля цикла;
- ЦПУ записывает значения из отображения процесса на выходах в модули вывода;
- ЦПУ считывает состояние входов на модулях ввода и обновляет отображение процесса на входах;
- ЦПУ обрабатывает прикладную программу и исполняет указанные в программе команды;
- В конце цикла ОС выполняет стоящие на очереди задачи, например, загрузку и стирание блоков, статус блоков, прием и передачу глобальных данных.
Рисунок 3.1 – Принцип выполнения программы вS7-CPU Время, необходимое для выполнения всех перечисленных операций, называется циклом сканирования или временем цикла. Время цикла является величиной переменной и может меняться от цикла к циклу. В начале каждого цикла ОС перезапускает счетчик времени цикла.
3.3 Типы блоков
- упрощается чтение больших программ;
- можно стандартизировать отдельные блоки программы;
- упрощается структура программы;
- упрощается внесение изменений в программу;
- упрощается отладка, поскольку можно тестировать отдельные блоки;
- ввод в действие становится значительно проще.
Источник: studfile.net
Назначение функциональных блоков
На условные обозначения в схемах алгоритмов, программ, данных и систем распространяется ГОСТ 19.701—90. «ЕСПД. Схемы алгоритмов, программ, данных и систем. Обозначения условные и правила выполнения». При отрисовке
блок-схем мы будем использовать функциональные блоки, представленные ниже. Заметим, что некоторые их названия или отрисовка не всегда совпадают с указанными в ГОСТ, поэтому при создании схем алгоритмов для курсовых, дипломных работ, безусловно, следует обратиться к существующему стандарту.
Начало и конец алгоритма
Проверка условия (логического выражения)
Начало циклического алгоритма Разрыв соединительных линий
Вызов пользовательской функции Линии потоков
Вывод на печать
Основные этапы решения задач
Процесс решения некоторой задачи в среде программирования, как правило, состоит из нескольких этапов, часть из которых выполняется пользователем, а часть — компьютером.
1- й этап. Общая постановка задачи.
2- й этап. Разработка математической модели.
Цель этого этапа состоит в установлении формализованных связей между исходными данными и искомыми результатами. Этап заключается в записи расчетных формул или функциональных зависимостей.
3- й этап. Разработка алгоритма.
Этап состоит в описании последовательности действий, в результате которых может быть получено решение задачи.
4- й этап. Разработка программы.
Программа составляется в полном соответствии с разработанным алгоритмом решения задачи.
5- й этап. Отладка программы.
Процесс поиска ошибок в программе и их устранение.
6- й этап. Анализ результатов.
Позволяет принять решение о необходимости внесения изменений в программу, проведении дополнительных расчетов или их окончании.
Источник: studref.com