Главная страница
Навигация по странице:

  • Предметные конструкции модели

  • Описание_применения. Серия Авторское приложение Приложение гиперсистема


    Скачать 34.89 Mb.
    НазваниеСерия Авторское приложение Приложение гиперсистема
    АнкорОписание_применения.docx
    Дата21.04.2018
    Размер34.89 Mb.
    Формат файлаdocx
    Имя файлаОписание_применения.docx
    ТипДокументы
    #18329
    страница21 из 23
    1   ...   15   16   17   18   19   20   21   22   23

    -Представление алгоритмов на SFC



    Представление алгоритмов управления УУ, записанных на языке Геракл, в графическую программу на языке SFC, выполняется программой Gerakl To SFC Converter.

    Принцип работы программы Gerakl To SFC Converter заключается в преобразовании алгоритма, записанного в текстовом виде на языке, в файл .isaxml, который среда ISaGRAF отображает в графической форме.
    Язык последовательных функциональных схем - SFC

    Характер многих технических объектов и технологических процессов предполагает выполнение отдельных операций последовательно. В этих случаях разработчику ПО очень важно иметь средство программирования, которое позволяло бы наглядно воспроизводить структуру объекта/процесса. Именно таким средством и является язык SFC. Это высокоуровневый графический язык, предназначенный для использования на этапе проектирования ПО. Его основой является математический аппарат двудольных графов – сети Петри.

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

    Описание СП может быть представлено в виде четверки G = (P, T, I, O) или графически в форме двудольных ориентированных графов (рис. 1), где

    P ={Р1, ...,Рn}, - множество вершин, называемых позициями;

    T ={Т1,...,Тm}, - множество вершин, называемых переходами;

    I, O - входная и выходная функции (матрицы инцидентности).



    В общем случае элементами матриц I и O являются кратности дуг, например: 0 - нет дуги, 1 - одна дуга, 2 - две дуги и т. д., т.е. элементами этих матриц являются не только 0 или 1 (свидетельствующие только о том, существует или нет дуга), а и целые числа (кратности дуг).

    Эти множества полностью определяют структуру СП, которая отражает статику исследуемой системы, т.е. вершины (позиции и переходы) и связи (дуги) между ними в СП отражают соответствующие компоненты системы и связи между ними. Множества P и T не пересекаются, а дуги графа соединяют вершины только разноименных множеств.

    Для описания динамических свойств сети (и соответственно моделируемой системы) вводится функция М разметки сети (маркировки) М: Р Æ {0,1,2,...}. С помощью функции разметки Mi = М(pi), где 1, in = , позиции помечаются целыми неотрицательными числами.

    При графическом задании СП разметка отображается соответствующим числом точек (меток, фишек, маркеров) внутри соответствующих кружков-позиций pi.

    Срабатывание какого-либо перехода Tj в размеченной сети ведет к смене разметки.

    Функционированием (срабатыванием) размеченной СП называется процесс изменения разметки, осуществляемый по правилам:

    1) если для перехода Tj все входные позиции имеют ненулевую разметку, то происходит обязательное срабатывание этого перехода, в результате чего изменяется разметка во всех входных и выходных позициях только этого перехода - из каждой входной позиции изымается по одной метке, а в каждую выходную добавляется по одной метке;

    2) если два или более перехода могут одновременно сработать и они не имеют общих входных позиций, то их срабатывание независимо и осуществляется в любой последовательности или параллельно;

    3) если несколько переходов могут сработать и имеют общую входную позицию, то сначала срабатывает только один переход, любой из них; при этом может оказаться, что, сработав, этот переход лишит другие переходы возможности сработать - этим моделируется конфликтная ситуация (она устраняется вне формализма СП);

    4) функционирование СП останавливается, если ни один из ее переходов не может сработать.

    Естественно, что при формировании языка SFC интерпретация и реализация некоторых положений теории сетей Петри изменилась.

    Язык SFC предназначен для использования на этапе проектирования ПО и позволяет описать блок-схему программы - логику ее работы на уровне последовательных шагов и условных переходов; обеспечивает общую структуризацию и координацию функций управления последовательными процессами или машинами и механизмами.

    SFC-программа состоит из элементов двух типов: шагов (steps) и переходов (transitions), которые могут включать в себя элементы других языков. В соответствии с состоянием внутренних ссылок и входов-выходов логика шага может обрабатываться или игнорироваться, т.е. в каждый текущий момент времени шаг может быть активным или пассивным.

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

    Таким образом, с помощью языка SFC автоматизируемый процесс представляется в виде совокупности определённых последовательных шагов (автономных ситуаций), разделённых (связанных) переходами. Для объединения шагов и переходов в единую структуру, т.е. SFC-программу – используются направленные линии (связи). Каждому переходу сопоставлено (присоединяется) логическое условие, а шагу – совокупность действий.

    На рис. 2 приведены условные графические обозначения основных компонентов SFC-программ: Начальный шаг; Шаг; Переход; Переход на другой шаг (длинный переход); Макрошаг и др.



    Действия внутри шагов описываются более детально при помощи других языков (ST, IL, LD, FBD).

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

    Параллельные соединения

    Расхождения – это множественные связи от одного шага или перехода ко многим.

    Схождения – это множественные связи от более чем одного шага или перехода к одному другому.

    Альтернативные расхождения и схождения - обозначаются одиночными горизонтальными линиями. Расхождение альтернативное (альтернативные ветви) – это множественная связь от одного шага к нескольким переходам. Активной становится одна из ветвей (в зависимости от активности того или иного перехода). Проверка активности переходов осуществляется слева направо.

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

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

    Параллельные расхождения (параллельные ветви) и схождения - обозначаются двойными горизонтальными линиями.

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

    Расхождение параллельное – это множественная связь от одного перехода к нескольким шагам. Она соответствует параллельному функционированию процесса.

    Схождение параллельное – это множественная связь от нескольких шагов к одному и тому же переходу.


    Иерархия программы SFC.

    Каждая SFC-программа может управлять (запускать, уничтожать, и т.д.) другими программами на этом же языке (SFC), которые в таком случае называют дочерними программами (наследниками) той программы, которая ими управляет. SFC-программы объединяются в иерархическое дерево на основе “родственных” отношений (родитель-наследник).

    Реализация SFC в IsaGraf 6

    Шаги

    Начальный шаг



    Шаг



    Активный и неактивный шаг



    Переходы



    Длинные переходы





    Альтернативное расхождение





    Альтернативное схождение

    Параллельное расхождение





    Параллельное схождение



    Программирование действий для шагов

    Булевские действия



    Импульсные действия





    Не сохраняемые действия





    Программирование условий переходов

    Программирование условий на ST



    Программирование условий на LD



    Вызов функций из переходов


    Программа Gerakl To SFC Converter
    Принцип работы программы

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

    В среде разработки ISaGRAF алгоритм управления на языке SFC сохраняется в файле с расширением .isaxml.

    Принцип работы программы Gerakl To SFC Converter заключается в преобразовании алгоритма, записанного в текстовом виде на языке Геракл (см. раздел Ввод модели), в файл .isaxml, который среда ISaGRAF отображает в графической форме.



    Шаблонный файл Prog1.isaxml хранится в папке проекта среды ISaGRAF и содержит в себе:

    • координаты связей между шагами и переходами, OR и AND -дивергенций и конвергенций, а также координаты прыжков (длинных переходов);

    • конструкции описания шагов;

    • описания действий;

    • описания переходов;

    • словарь переменных проекта;

    • некоторые другие элементы файла.

    Рассмотрим подробнее структуру файла и вышеприведенные элементы файла Prog1.isaxml. Файл имеет структуру XML документа и начинается тегом объявления версии языка, на которой написан документ, и кодировки документа:



    В следующем теге Pou определены атрибуты версии файла (FileVersion), имени проекта (Name), комментария (Comment), языка программы проекта (Language), генерации отладочной информации (GenDebugInfo) и различные другие атрибуты. Данный тег содержит в себе все остальные теги, включая структуру блок-схемы алгоритма:


    Определяемый пользователем)" GenDebugInfo = "false" UseResPassword = "true" GenerateSymbMon = "true" Is1499 = "false">

    Следующий Тег представляет собой словарь переменных проекта.

    Далее идет тег
    и в нем секция CDATA, содержащая в себе уже только символьные данные, которые не смогут быть обработаны средой ISaGRAF как разметка XML-документа:
    В этой секции и размещается структура блок-схемы на языке SFC со всеми ее элементами, которая отображается при открытии проекта в ISaGRAF.

    Рассмотрим теперь основные конструкции элементов файла Prog1.isaxml.

    Конструкция LINK описывает связь между шагами, переходами, дивергенциями и конвергенциями:

    #info= LINK

    COORD= 56 35

    COORD= 56 37

    FROM= 3 T1

    TO= 2 S2

    #end_info

    #info= LINK

    COORD= 56 107

    COORD= 56 109

    FROM= 8

    TO= 2 S5

    #end_info

    Конструкция STEP описывает шаг. В ней помимо координат может записываться также вызов действия, принадлежащего данному шагу:

    STEP S2 :

    Action2 (N);

    #info= COORD

    [ 48 , 36 ]

    #end_info

    END_STEP

    Конструкция ACTION описывает действия шага (программные инструкции) на языке ST:

    ACTION Action2 :

    #info= ST

    bb := 56*34;

    func(a, bb);

    #end_info

    END_ACTION

    Конструкция TRANSITION описывает переход. Если переход условный, т.е. осуществляется переход к той или иной ветви OR - дивергенции, то в конструкции также записывается условие перехода на языке ST:

    TRANSITION T3

    FROM S2

    TO S4 :

    #info= ST

    not(a);

    #end_info

    #info= COORD

    [ 80 , 60 ]

    #end_info

    END_TRANSITION

    Локальные переменные алгоритма хранятся в файле .isaxml в тегах .


    Каждая переменная описывается рядом параметров через атрибуты в теге :

    • имя переменной (Name),

    • тип данных (DataType),

    • начальное значение (InitialValue),

    • комментарий (Comment),

    • адрес (Address),

    • направление (Kind),

    • алиас (Alias),

    • права доступа (AccessRights),

    • размер строки (StringSize)

    • другие атрибуты, которые можно задать в редакторе переменных среды ISaGRAF.



    Подготовка исходных данных

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

    Исходный файл с описанием алгоритма на языке Геракл создается программой Алгоритмы_Visio_Геракл на этапе Ввод данных модели как обычный текстовый файл Алгоритмы.txt в папке Предметные конструкции модели.

    Для получения второго файла Prog1.isaxml, следует создать в среде разработки ISaGRAF новый проект.


    В этом проекте нужно создать новую программу Prog1 на языке SFC.

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


    Затем следует сохранить и закрыть Project1, в результате чего будет создан Шаблонный файл Prog1.isaxml, подлежащий заполнению программой Gerakl to SFC Converter.

    Работа с программой

    Окно программы Gerakl to SFC Converter содержит два текстовых поля, две текстовых надписи и три кнопки.

    В первом текстовом поле указывается путь к файлу с описанием алгоритма на языке Геракл. Этот файл выбирается в диалоговом окне открытия файла, которое вызывается при нажатии на первую кнопку «Обзор…». Аналогичным образом второе текстовое поле хранит путь к результирующему файлу SFC программы проекта среды ISaGRAF.

    Кнопка «Преобразовать» запускает алгоритм преобразования блок-схемы алгоритма на языке Геракл в графическую блок-схему алгоритма на языке SFC в формате проекта среды ISaGRAF.

    После преобразования блок-схемы алгоритма на языке Геракл в программу на языке SFC, представленную в формате проекта среды ISaGRAF, текстовый файл с алгоритмом на Геракле закрывается, файл Prog1.isaxml сохраняется и закрывается, выводится сообщение об успешном выполнении программы.

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

    Шаблонный файл Prog1.isaxml находится в директории решения по пути следующего вида: …\Project1\Project1\Project1\Device1\Resource1\. Если при создании проекта была выбрана опция «Создать каталог для решения», как в данном примере, то имя решения будет совпадать с именем проекта.


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

    Для запуска процесса преобразования надо нажать кнопку «Преобразовать». После завершения преобразования выдается сообщение.


    Шаблон Prog1.IsaXML, заполненный программой Gerakl to SFC Converter, имеет вид:


    Открываем решение, проект Project1 и программу Prog1 в среде ISaGRAF.

    Можно также открыть словарь программы, щелкнув дважды по элементу «Локальные переменные» в раскрывающемся списке программы Prog1.


    Визуальное моделирование алгоритмов управления

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




    На шаге S1 включена переменная FR009.



    На шаге S2 включены переменные VIPIMS и NNVIPIMS.

    На шаге S4 действий нет.

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



    Изменим на шаге 2 действие SDPNK13 := false; на SDPNK13 := true;

    В результате после шага S2 выполняется шаг S3, а не шаг S4.



    -Представление функций на LD

    Язык релейных диаграмм - LD

    Язык LD – это графический язык - применяется для описания логических выражений различного уровня сложности, графического представления булевых уравнений. Он содержит контакты (входные аргументы) и катушки (выходные переменные). Элементы организуются в сеть релейно-контактных схем. При необходимости можно реализовывать более сложную логику, используя, например элементы языка FBD.

    Каждому контакту ставится в соответствие логическая переменная, определяющая его состояние. Ее имя ставится над контактом и служит его названием. Если контакт замкнут, то переменная имеет значение true, если разомкнут – false. Последовательное соединение контактов или цепей соответствует логической операции И/AND, параллельное – ИЛИ/OR. Нормально замкнутый (инверсный) контакт равнозначен логической операции НЕ.

    Релейная схема представляет собой 2 вертикальные шины питания, между которыми расположены горизонтальные цепи из контактов и катушек реле. Графические символы языка LD соответствуют элементам электрических цепей и имеют те же названия и обозначения.

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

    Строгий порядок выполнения цепей очень важен. Благодаря жесткому порядку выполнения LD-программы сохраняют устойчивость при наличии обратных связей.

    Словарь ISaGRAF – это средство для редактирования внутренних переменных, переменных ввода/вывода, функциональных блоков и макросов приложения.

    Переменные, функциональные блоки и макросы должны быть объявлены в словаре перед выполнением LD-программы. Переменные и макросы могут использоваться в любом языке: SFC, FBD, LD, ST, и IL.

    Переменные сортируются в соответствии со своей областью действия и типом.

    Основные типы области видимости переменных:

    • Глобальная – может быть использована любой программой текущего проекта;

    • Локальная – может быть использована только одной программой.

    Основные типы переменных:

    • Булевская – true/false двоичные величины;

    • Аналог – действительные или целые величины;

    • Таймер – временные величины;

    • Сообщение – символьные строки.

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

    • Внутренняя – переменная в памяти;

    • Вход – переменная, связанная с устройством ввода;

    • Выход – переменная, связанная с устройством вывода;

    • Константа – внутренняя переменная только для чтения (с начальным значением).

    Каждая переменная имеет имя, заданное по принципу транслитерации переменных из ТЗ. Также каждая переменная имеет алиас, который представляет собой имя этой переменной в ТЗ.

    Функции памяти (триггеры) представляют собой переменные, хранящиеся в памяти, и их следующее значение зависит от предыдущего значения. Поэтому их значение определяется с помощью двух блоков: блока SET (включить) и блока RESET (выключить). Если сигнал доходит до блока SET, то переменная принимает значение TRUE. Если сигнал доходит до блока RESET, то переменная принимает значение FALSE. А если же сигнал доходит и до SET и до RESET, то переменная принимает значение FALSE. Это происходит потому, что блок RESET логически находится после блока SET, соответственно он выполняется последним (преобладание RESET, RS-триггер).
    Реализация LD в IsaGraf 6

    Цепи



    Обмотки

    Прямая обмотка



    Инверсная обмотка



    Импульсная обмотка (Передний фронт)



    Импульсная обмотка (Задний фронт)



    Включающая обмотка (Set) и Выключающая обмотка (Reset)



    Прямой контакт



    Инверсный контакт



    Импульсный контакт (Передний фронт)



    Импульсный контакт (Задний фронт)



    Блоки

    EN вход



    ENO выход



    EN и ENO параметры



    Возвраты



    Переходы и метки





    Разветвления

    Функции и функциональные блоки


    Программа Функции_LD
    Принцип работы программы

    Принцип работы программы Функции_LD заключается в преобразовании логических формул, записанных в текстовом виде, в файл .isaxml, который среда ISaGRAF отображает в графической форме.

    Язык логических диаграмм LD позволяет представить логические формулы в наглядной графической форме и исполняемом виде.

    В среде разработки ISaGRAF диаграмма LD сохраняется в файле с расширением .isaxml.

    При запуске ISaGRAF создается шаблон файла Prog1.isaxml:


    В среде разработки ISaGRAF шаблону соответствует пустая диаграмма LD:

    Программа Функции_LDзаполняет этот шаблон в соответствии с заданной системой логических формул.

    Рассмотрим подробнее структуру файла Prog1.isaxml после заполнения тестовой системой логических формул:

    Файл Prog1.isaxml имеет структуру XML документа и начинается тегом объявления версии языка, на которой написан документ, и кодировки документа:



    В следующем теге Pou определены атрибуты версии файла (FileVersion), имени проекта (Name), комментария (Comment), языка программы проекта (Language), генерации отладочной информации (GenDebugInfo) и различные другие атрибуты:


    Следующий Тег представляет собой словарь переменных проекта:

    Каждая переменная описывается рядом параметров через атрибуты в теге :

    • имя переменной (Name),

    • тип данных (DataType),

    • начальное значение (InitialValue),

    • комментарий (Comment),

    • адрес (Address),

    • направление (Kind),

    • алиас (Alias),

    • права доступа (AccessRights),

    • размер строки (StringSize)

    • другие атрибуты, которые можно задать в редакторе переменных среды ISaGRAF.

    В среде разработки ISaGRAF словарь проекта имеет вид:

    Далее идет тег
    и в нем секция CDATA:
    В этой секции и размещается структура логических формул на языке LD, которая отображается при открытии проекта в ISaGRAF.

    В среде разработки ISaGRAF система формул принимает вид:


    Подготовка исходных данных

    Прежде, чем начать работу с программой Функции_LD, следует подготовить исходные файлы.

    Исходный файл с описанием логических формул создается программой Ввод данных ТЗ на этапе Ввод данных модели как обычный текстовый файл с Функции.txt в папке Предметные конструкции модели.

    Для получения второго файла Prog1.isaxml, следует создать в среде разработки ISaGRAF новый проект.


    В этом проекте нужно создать новую программу Prog1 на языке LD.

    Далее нужно открыть созданную программу Prog1 для автоматической инициализации программы.


    Затем следует сохранить и закрыть проект, в результате чего будет создан Шаблонный файл Prog1.isaxml, подлежащий заполнению программой Функции_LD.
    Работа с программой

    Окно программы Функции_LD имеет вид:



    Открываем тестовый файл с логическими формулами:

    Открываем файл шаблона диаграмм LD:

    Открываем файл шаблона словаря:


    Открываем файл кэша проекта:

    Главное окно после выбора файлов имеет вид:

    Выполняем команду Преобразовать логические формулы в логические диаграммы. На этом работа с программой Функции_LD завершена.
    Визуальное моделирование логических функций

    После запуска среды IsaGraf можно просматривать созданную LD-программу в разных вариантах:

    • LD-программа в среде IsaGraf;



    • LD-программа в полноэкранном виде;



    • LD-программа в режиме Обзор документа;



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

    Строим решение (компилируем проект).



    Переходим в режим Моделирование.




    Подача команд на диаграмме LD

    Изменение входных переменных (подача команд) непосредственно на диаграмме LD (можно выполнять двойным щелчком по переменной или через контекстное меню).


    Подана команда F1P1_2 на включение триггера Z1P.


    Подана команда XRK061 на включение триггера ZVBIVK.

    При подаче команд XRK062 и ZROBIVK триггер ZVBIVK выключается (хотя команда XRK061 на его включение не снята).


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





    Использование списков наблюдения

    Изменение входных переменных (подача команд), а так же просмотр изменений внутренних и выходных переменных можно выполнять в словаре программы LD, открыв его щелчком по элементу Локальные переменные в окне Обозреватель решения.

    Подаем команду XRK061 (отмечена галочкой) на включение триггера ZVBIVK.

    Подаем команды (пакет команд, ВП) F1P1_2, F2P1_2, F3P1_2, FKO, XRK061, XRK062, XRKA5.

    Перечисленные команды выполняются по мере подачи (установки галочек) и дают итоговый результат:


    Так как в словаре проекта содержатся все входные, внутренние и выходные переменные, то для работы со сложной реальной LD-программой представленный выше способ моделирования оказывается неудобным. В среде разработки IsaGraf можно дополнительно использовать списки наблюдения (шпиона). Количество и размеры списков не ограничены.

    Наиболее целесообразно использовать три группы списков:

    • Один или несколько списков для входных переменных;

    • Один или несколько списков для внутренних переменных;

    • Один или несколько списков для выходных переменных;

    Ниже представлены средства создания и использования этих списков.

    Созданные списки можно оформить в виде вкладок в главном окне или в виде плавающих окон.

    Подаем команды на включение триггеров F1P1_2, F2P1_2, F3P1_2.

    Снимаем команды на включение триггеров.

    Подаем команды на выключение триггеров F1P1_3, F2P1_3, F3P1_3.

    Снимаем команды на выключение триггеров, сделав все окна плавающими.

    Подаем команды на включение триггеров XRK061, XRKA5.

    Подаем команды на выключение триггеров, не снимая команд на включение.


    -Представление функций на FBD


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

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

    При этом необходимо отметить, что использование в качестве тестов соотношений “вход-выход”, обеспечивающих полноту проверки для схем без памяти, не решает проблему определения всех функциональных возможностей для схем с памятью, так как в этом случае необходимо проверять также и правильность порядка изменений выходных переменных. Однако, именно соотношения «вход-выход» и применяются при создании методик проверки на функционирование большинства систем логического управления. Это, как отмечалось выше, не обеспечивает качественной их проверки, так как такие соотношения не позволяют анализировать все имеющиеся в схеме переходы между состояниями.

    Функциональные схемы при их применении в качестве языка программирования обладают всеми достоинствами декларативных языков функционального программирования, основным из которых является функциональность (прозрачность по ссылкам). При этом каждое выражение определяет единственную величину, а все ссылки на нее эквивалентны самой этой величине, и тот факт, что на выражение можно ссылаться из другой части программы, никак не влияет на величину рассматриваемого выражения. Это свойство определяет различие между математическими функциями и функциями, которые можно написать на процедурных языках программирования таких, например, как Паскаль, позволяющих функциям ссылаться на глобальные данные и применять "разрушающее" присваивание. Такое присваивание может привести к побочным эффектам, например к изменению значения функции при повторном ее вызове даже без изменения значений аргументов. Это приводит к тому, что функцию трудно использовать, так как для того, чтобы определить, какая величина получится при ее вычислении, необходимо рассмотреть текущую величину глобальных данных, что, в свою очередь, требует изучения предыстории вычислений для определения того, что порождает эту величину в каждый момент времени”.

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


    Язык программирования FBD (Function Block Diagram) является составной частью стандарта IEC-61131 и так же входит в стандарт IEC-61499.

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

    FBD является графическим языком и применяется для построения комплексных процедур, состоящих из различных функциональных библиотечных блоков – арифметических, тригонометрических, регуляторов, мультиплексоров и т.д. Он подходит также для управления непрерывными процессами и процессами регулирования. При этом осуществляется представление функций посредством блоков, связанных между собой. Соединения между выходами функциональных блоков в явном виде могут отсутствовать, а выход блока может соединяться со входами одного или нескольких блоков.

    Основными объектами языка FBD являются элементарные функции и элементарные функциональные блоки (ФБ). Они находятся в библиотеке, логика их работы (программа) написана на языке С и не может быть изменена в редакторе FBD (изменять можно только их параметры). Кроме них можно использовать функции и ФБ пользователя, которые конструируются пользователем из элементов языка FBD.

    Разработка программы осуществляется с помощью графического редактора посредством формирования блок-схемы из перечисленных выше компонентов, которые объединяются друг с другом либо посредством внешних (фактических) параметров (переменные, соответствующие входам и выходам), либо непосредственно линиями связи – графическими связями.

    Идеология программирования на языке FBD подразумевает, что время исполнения каждой программы должно быть вполне определенным, т.е. детерминированным. Другими словами ни одна программа не имеет права зациклиться на неопределенное время, например на ожидании какого-либо события.

    FBD - программа очень напоминает функциональную схему электронного устройства. Каждый ФБ имеет фиксированное количество входных точек связи и фиксированное количество выходных точек связи.

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

    Данный язык программирования, помимо прочего, может использоватся для описания шагов и переходов в языке SFC. Функциональные блоки инкапсулируют данные и методы, чем подобны объектно-ориентированным языкам программирования, но они не поддерживают наследование и полиморфизм.
    Реализация FBD в IsaGraf 6

    Главные элементы FBD

    Функциональный блок



    Функция



    Элементы FBD

    Переменные



    Блоки





    Переходы



    Возвраты



    Комментарии



    Метки



    Цепи



    Вертикальная шина



    Обмотки

    Прямая обмотка



    Инверсная обмотка



    Включающая обмотка (Set) и Выключающая обмотка (Reset)



    Контакты

    Прямой контакт



    Инверсный контакт



    Импульсный контакт (Передний фронт)



    Импульсный контакт (Задний фронт)



    Функциональные блоки

    Управление тревогами



    Булевские операции

    SR - триггер





    RS - триггер





    Определение переднего фронта



    Определение заднего фронта



    Блок сравнения





    Счетчики

    Счет вверх





    Счет вниз





    Счет вверх-вниз





    Управление процессами

    Вычисление среднего





    Генератор импульсов



    Гистерезис



    Интегратор





    Генератор сигналов



    Стек чисел



    Удаленные коммуникации







    Таймеры






    Программирование функциональных блоков

    Рассмотрим процесс разработки FBD – программы на простейшем примере логического элемента AND.

    Создаем программу с помощью панели элементов.



    Создаем словарь локальных переменных.



    Используя окно навигации создаем виртуальные устройства ввода – вывода (монтируем переменные) для входов и выходов.





    Создаем список наблюдения (шпиона).



    Добавляем в список наблюдения переменные.



    Настраиваем список наблюдения.




    Визуальное моделирование функциональных блоков

    Строим решение (компилируем программу).


    Выполняем моделирование, разными способами подавая входы.


    Подача входов в FBD – программе





    Подача входов в окне наблюдения

    Исходное состояние.

    Подаем вход X1.


    Подаем вход X2.


    Подача входов c виртуальной панели ввода

    Исходное состояние.


    Подаем вход X1.

    Подаем вход X2.

    1   ...   15   16   17   18   19   20   21   22   23


    написать администратору сайта