Знакомство с SCADA системой zenon 2
Изображение кнопок, хронологического списка событий и информационного списка тревог. Конфигурирование переменных для регистрации их состояния. Функциональный блок, реализующий конечный автомат с памятью на языке релейных диаграмм, графического интерфейса.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | лабораторная работа |
Язык | русский |
Дата добавления | 18.05.2017 |
Размер файла | 1,4 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Синтаксис языка функциональных блоков обозначения меток и переходов приведен на рисунке. Переход может быть по условию или безусловным. В качестве условия может выступать переменная типа “BOOL” или результат выражения типа “BOOL”. Если значение переменной равно “TRUE” выполняется переход к метке, иначе выполняется следующая функция. Безусловный переход выполняется всегда.
После добавления перехода или метки в их названиях устанавливается значение “???”. Для того что бы его изменить необходимо дважды нажать левой кнопкой мыши по метке или переходу, после чего откроется меню, в котором вводится название новой метки или выбирается название уже существующей метки. Блок SIGPLAY используется для последовательного во времени воспроизведения значений таблицы формирования сигналов. В случае, когда необходимо перевести воспроизведения в режим паузы или выполнить его перезапуск допускается применение функционального блока без задействования его выходов. Таким образом, один и тот же блок может находиться в нескольких цепях. Переход “bi_EnableGenerator” производит переход, когда разрешено автоматическое формирование комбинаций состояний датчиков, то есть значение переменной “bi_EnableGenerator” равно “TRUE”, выполняется переход к метке “Generator”, а так же воспроизведение сигналов состояний датчиков. Если же автоматическое формирование комбинаций состояний датчиков запрещено, то есть значение переменной “bi_EnableGenerator” равно “FALSE”, выполняется сброс функционального блока SIGPLAY без формирования комбинаций состояний датчиков.
При отладке программы SCADA системы удобно, что бы автоматическое формирование комбинаций состояний датчиков было включено по умолчанию. Для управления включением и выключением автоматического формирования комбинаций состояний датчиков необходимо в программу симуляции объекта управления в среде разработки Logic Workbench добавить и инициализировать (задать значение равное “TRUE”) новую переменную, которая включит автоматическое формирование комбинаций состояний датчиков. После этого в программу симуляции нужно добавить вызов подпрограммы автоматического формирования. В качестве входного параметра указать добавленную переменную, а в качестве входных-выходных параметров указать переменные датчиков: D1, D2, D3, D4, D5.
Проверку, правильности функционирования программы симуляции объекта управления, удобно выполнять с помощью программного осциллографа. С помощью программного осциллографа будут наблюдаться состояния реле и состояние конечного автомата с памятью при изменении комбинаций состояний датчиков. После проверки, правильности функционирования, программы симуляции объекта управления перейдем к разработке программы для SCADA системы.
Описание функционирования разработанного программного обеспечения
При разработке программного обеспечения для SCADA системы в большинстве случаев отсутствует доступ к физическому контроллеру. Это связано с тем, что контроллер или его объект управления, могут быть еще не готовы к эксплуатации, отсутствует возможность доступа к контроллеру или доступ не допускается технологическим процессом. В SCADA системе zenon присутствует возможность замены физического контроллера с объектом управления их симуляцией. Симуляция реализуется на базе программного ПЛК на одном из языков стандарта МЭК 61131-3.
Программное обеспечение SCADA системы zenon взаимодействует с физическими контроллерами посредством драйверов. Для связи с контроллером добавляется драйвер, в настройках которого указывается адрес, по которому можно к нему подключиться. На основе драйвера создаются переменные, каждой из которой указывается соответствующий адрес в области памяти контроллера. Таким образом, зная адрес контроллера и адрес в области памяти, SCADA система zenon получает доступ к его входам, выходам или внутренним переменным. В случае, когда физический контроллер отсутствует, соответствующий драйвер переводится в режим программной симуляции, и используется программная модель контроллера с объектом управления. Взаимодействие между программным ПЛК и SCADA системой zenon строится на том, что все переменные соответствующего драйвера физического контроллера отображаются в области глобальной памяти программного ПЛК. При изменении значений этих глобальных переменных программным ПЛК новые значения передаются в SCADA систему zenon. При изменении значений переменных драйвера SCADA системой zenon новые значения передаются в программный ПЛК. Программный ПЛК может выполнять над переменными любые действия (читать и писать), SCADA система zenon может выполнять над переменными только те действия, которые допустимы драйвером и областью памяти (читать, читать и писать).
Рассмотрим процесс функционирования разработанного программного обеспечения программного ПЛК с программным обеспечением для SCADA системы zenon, которое будет разработано позже. Во время запуска программного обеспечения для SCADA системы zenon запускается zenon Runtime, в котором будет выполняться программное обеспечение человеко-машинного интерфейса и zenon Logic Runtime, в котором будет выполняться программное обеспечение программного ПЛК. Связь между ними организуется посредством сетевого соединения с использованием протокола TCP/IP. По завершению запуска программный ПЛК начинает выполнять основную программу. В качестве основной программы выступает программа симуляции объекта управления - Main. Программа Main вызывается циклически, по умолчанию период вызова основной программы, составляет 250 мс.
Программа симуляции объекта управления Main может работать в двух режимах: ручное формирование состояния датчиков и автоматическое формирование состояния датчиков. Управление выбором режима формирования состояния датчиков происходит с помощью графического интерфейса. В случае если значение внутренней переменной l_EnableGenerator принадлежащей основной программе Main (Main.l_EnableGenerator) установлено в “FALSE” выполняется ручное формирование состояния датчиков, если “TRUE” автоматическое формирование состояния датчиков.
Рассмотрим работу программы симуляции объекта управления Main в режиме ручного формирования состояния датчиков. Пользователь при помощи графического интерфейса задает необходимое состояние датчиков, при этом изменяются значения глобальных переменных датчиков (D1, D2, D3, D4, D5). Далее программный ПЛК в очередном цикле вызывает программу симуляции объекта управления Main. Программа симуляции выполняется последовательно слева на права, сверху в низ. Первым в программе симуляции идет вызов подпрограммы генератора состояния датчиков - GeneratorSensorState. При вызове в качестве значения для входного параметра подпрограммы bi_EnableGenerator передается значение переменной Main.l_EnableGenerator, а в качестве значений для входных-выходных параметров подпрограммы bio_D1, bio_D2, bio_D3, bio_D4, bio_D5 передаются значения глобальных переменных D1, D2, D3, D4, D5.
По сути значения переменных Main.l_EnableGenerator, D1, D2, D3, D4, D5 копируются во внутренние переменные подпрограммы bi_EnableGenerator, bio_D1, bio_D2, bio_D3, bio_D4, bio_D5. Далее проверяется значение переменной bi_EnableGenerator, так как оно равно “FALSE” происходит переход к выходу из подпрограммы. При этом значения входных-выходных параметров подпрограммы bio_D1, bio_D2, bio_D3, bio_D4, bio_D5 передаются (копируются) глобальным переменным D1, D2, D3, D4, D5. Вторым в программе симуляции объекта управления Main идет вызов пользовательского функционального блока автомата с памятью - StateMachine. В качестве операнда ему передается переменная Main.l_StateMachineData, которая имеет сложную структуру и будет хранить в себе между вызовами пользовательского функционального блока его внутреннюю память, в том числе и состояния графа l_S0, l_S1, l_S2, l_S3, l_S4. Так же при вызове в качестве значений входных параметров блока bi_D1, bi_D2, bi_D3, bi_D4, bi_D5 передаются значения глобальных переменных датчиков D1, D2, D3, D4, D5. По завершению отработки автомата с памятью реализующего граф состояний на языке релейных диаграмм LD происходит выход из блока. При этом значения выходных параметров bo_R1, bo_R2, bo_R3 и bo_SS0, bo_SS1, bo_SS2, bo_SS3, bo_SS4 передаются (копируются) глобальным переменным управляющим значениями реле R1, R2, R3 и сигналам состояний SS0, SS1, SS2, SS3, SS4. Все изменения внутренней памяти, в том числе и состояний графа l_S0, l_S1, l_S2, l_S3, l_S4 сохраняются в переменной Main.l_StateMachineData переданной в качестве операнда пользовательского функционального блока. На этом цикл работы основной программы Main программного ПЛК завершается.
Далее новые значения глобальных переменных передаются в программное обеспечения для SCADA системы zenon (zenon Rumtime) где они присваиваются переменным SCADA системы zenon и используются в работе человеко-машинного интерфейса. Рассмотрим работу программы симуляции объекта управления Main в режиме автоматического формирования состояния датчиков. Программный ПЛК в очередном цикле вызывается программу симуляции объекта управления Main. В программе симуляции идет вызов подпрограммы генератора состояния датчиков - GeneratorSensorState. При вызове в качестве значения для входного параметра подпрограммы bi_EnableGenerator передается (копируется) значение переменной Main.l_EnableGenerator, а в качестве значений для входных-выходных параметров подпрограммы bio_D1, bio_D2, bio_D3, bio_D4, bio_D5 передаются (копируются) значения глобальных переменных D1, D2, D3, D4, D5. Далее проверяется значение переменной bi_EnableGenerator, так как оно равно “TRUE” происходит переход к проигрыванию сигналов. На основании названия таблицы “Signals”, названии колонки “D1”, а так же внутреннего времени “l_SigPlayD1” функциональный блок SigPlay выбирает соответствующую строку таблицы, вычитывает ее значение и присваивает входному-выходному параметру bio_D1. По завершению заполнения значений всех параметров происходит выход из подпрограммы. При этом значения входных-выходных параметров подпрограммы bio_D1, bio_D2, bio_D3, bio_D4, bio_D5 передаются (копируются) глобальным переменным D1, D2, D3, D4, D5. Далее процесс происходит аналогично процессу описанному для режиму ручного формирования состояния датчиков.
Разработка основного изображения программы для SCADA системы
Основное изображение Лабораторной работы №3 не было добавлено в проект Лабораторной работы №4, так как оно требует значительной переработки и его проще разработать заново. Поэтому в проекте необходимо создать новое основное изображение на основе импортированного шаблона основного изображения из Лабораторной работы №3. После чего в настройках проекта нужно указать созданное изображение в качестве стартового (открываемого при запуске SCADA системы). Далее необходимо задать в качестве стартовой функции основного изображения функцию открытия изображения кнопок. Так же нужно задать новое основное изображения в качестве параметра для функции открытия изображения связанной с кнопкой “Основное изображение”. По завершению создания основного изображения и его настройки перейдем непосредственно к разработке. По заданию в основном изображении должны отображаться состояния датчиков и реле в соответствии с ЕСКД, а так же состояния графа и сам граф. Графические элементы, используемые в предыдущих лабораторных работах, для отображения датчиков и реле не соответствуют ЕСКД, поэтому их необходимо разработать самостоятельно, так же необходимо разработать индикаторы состояний графа. Для решения этой задачи в среде разработки zenon Editor используются символы. Символ - это способ объединения графических элементов SCADA системы zenon, таким образом, что бы при помещении их на изображение в среде разработки они представляли собой единый элемент.
Для того что бы создать новый символ необходимо в ветви “Screen” выбрать “Project symbol library” нажать правой кнопкой мыши в таблице символов и выбрать пункт меню “New symbol”.
Для того что бы изменить название символа необходимо развернуть дерево “General” и задать новое название в поле “Element name”.
Что бы перейти к редактированию символа необходимо в таблице символов дважды нажать по нему левой кнопкой мыши. Для того что бы изменить фон символа и его размер необходимо нажать левой кнопкой мыши в окне редактирования символа. В свойствах символа необходимо развернуть дерево “General” в поле “Background color” задать фон символа, в поле “Height [pixels]” задать высоту символа в пикселях и в поле “Width [pixels]” задать ширину символа в пикселях. После настройки размера и фона символа можно перейти к его разработке.Датчик может находиться в двух состояниях: сработал, не сработал. Для каждого из состояний в ЕСКД существует свое обозначение, поэтому необходимо создать два варианта отображения датчика. Реле так же может находиться в двух состояниях: включено, выключено. Для каждого из состояний в ЕСКД существует свое обозначение, поэтому необходимо создать два варианта отображения реле.
Создание датчиков и реле похоже на работу в простейшем графическом редакторе и не требует особых навыков. Для реализации их отображения достаточно использовать линии и прямоугольники. Что бы упростить работу с линиями необходимо нажать правой кнопкой мыши в окне редактирования символа и выбрать пункты меню: “Display grid”, “Use grid”.
Для отображения состояния графа так же создадим два символа. В каждый из них добавим по окружности. В свойствах окружности изменим параметры их отображения, так что бы одно из них было яркое, а другое тусклое. Эту задачу можно решить с помощью цветового градиента, для этого необходимо развернуть дерево “Color”, а в нем ветвь “Color static”, в поле заливки “Filling pattern” выбрать градиент, в поле “Background color” выбрать цвет градиента, после чего развернуть ветвь “Color gradient” и задать яркость внутри градиента “Bright inside” и яркость снаружи градиента “Bright outside”.
Для отображения разных символов в зависимости от состояния переменных в SCADA системе zenon используется “Combined element”. Данный элемент будет использоваться для отображения состояний датчиков, реле и графа. Добавление данного элемента на изображение выполняется аналогично добавлению других элементов. После добавления комбинационного элемента на изображение откроется окно выбора переменной, в котором необходимо выбрать переменную (D1, D2, D3, D4, D5, R1, R2, R3, SS0, SS1, SS2, SS3, SS4, SS5), с которой он будет связан. Далее откроется окно мастера настройки комбинационного элемента, в котором необходимо нажать кнопку “Next”. Далее необходимо выбрать тип отображения комбинационного элемента “Symbol from library” и нажать кнопку “Next”. После чего необходимо нажать по кнопке и выбрать символ по умолчанию, а так же нажать кнопку “New status” для создания нового статуса.
В поле “Value” вводится значение переменной, которому будет соответствовать выбранный символ. Для каждого статуса можно задавать свое значение переменной и свой символ. После завершения создания статусов необходимо нажать кнопку “Finish” (Завершить).
Что бы изменить цвет отображения комбинационного элемента необходимо выбрать элемент, в окне свойств развернуть дерево “Representation” и нажать по полю “Configuration and test”.
В окне конфигурации необходимо выбрать статус, для которого нужно изменить цвет отображения фона. Далее снять флажок “Original symbol color” и изменить “Background”. Теперь во время работы программы SCADA системы при замкнутом состоянии датчика фон будет менять с белого на зеленый.
Теперь необходимо разработать отображение графа состояний в соответствии с заданием. Во время работы программы разрабатываемой для SCADA системы необходимо, что бы текущее состояние графа и предыдущее состояние графа были выделены разными цветами, кроме того дуга перехода из предыдущего состояния в текущее так же должна выделяться. На данном этапе будет разрабатываться только графическое отображение графа, поэтому для используемых комбинационных элементов не имеет значение, выбор переменных, а символы необходимо задавать только для статуса по умолчанию.
Для реализации состояний графа создадим символ с окружностью и добавим пять комбинационных элементов использующих данный символ. Комбинационные элементы с окружностями будут соответствовать состояниям графа. Для реализации выделения дуг перехода создадим символ с прямоугольником и добавим семь комбинационных элементов использующих данный символ. Комбинационные элементы с прямоугольниками будут подсвечивать текст дуги соответствующей переходу. Комбинационные элементы состояний графа соединим между собой с помощью дуг по окружности, стрелки на концах дуг нарисуем с помощью полигонов. Над состояниями поместим текст отображающий номер состояния, а над дугами прямоугольники и текст с условием перехода от одного состояния к другому.
Для изменения уровня отображения элемента необходимо нажать по нему правой кнопкой мыши, после чего в меню выбрать пункт “Element position”. В открывшемся под меню с помощью пункта “Foreground” можно переместить элемент на самый верхний уровень, с помощью “Background” можно переместить элемент на самый нижний уровень, с помощью “Forwards” можно переместить элемент на один уровень выше, с помощью “Backwards” можно переместить элемент на один уровень ниже.
Что бы повернуть комбинационный элемент или текст необходимо выделить элемент. В свойствах элемента развернуть дерево “Position”, развернуть ветвь “Reference point”, выбрать центр поворота по горизонтали “Horizontal” и по вертикали “Vertical”, после чего задать угол поворота элемента в поле “Rotation angel [°]”.Пример разработанного основного изображения:
Разработка механизма управления отображением графа состояний с использованием языка программирования VBA Разработанное отображение графа по заданию должно визуализировать переход конечного автомата с памятью из предыдущего состояния в текущее. Для хранения предыдущего и текущего состояний необходимо объявить соответствующие переменные, которые должны быть доступны только в SCADA системе. Что бы переменная была доступна только в SCADA системе необходимо задать тип драйвера “Intern - Driver for internal variables” и тип объекта драйвера “Internal variable”. Комбинационный автомат может находиться в одном из пяти состояний от 0 до 4. Поэтому в качестве типа данных для создаваемых переменных может использоваться “USINT”. В свойствах переменных необходимо ограничить диапазон значений ПЛК от 0 до 4 и выполнить линеаризацию переменных от 0 до 4. Механизм управления отображением графа состояний должен функционировать, так что бы при изменении состояния конечного автомата с памятью значение переменной текущего состояния сохранялось в переменной предыдущего состояния, после чего номер текущего состояния сохранялся в переменной текущего состояния. Данная задача не может быть реализована стандартными средствами SCADA системы zenon. Для решения таких задач используется средство управления процессами позволяющее разрабатывать программы на языке VBA и вызывать их во время работы среды исполнения zenon RT. Язык программирования VBA (Visual Basic for Application) - это упрощенная реализация языка программирования Visual Basic интегрируемая в приложения и предназначена для пользовательской разработки расширений интерфейса и функционала законченных приложений, таких как Microsoft Office, AutoCAD, SolidWorks, CorelDRAW и других.
Для того что бы открыть редактор средства управления процессами необходимо развернуть ветвь “Programming interfaces”, нажать правой кнопкой мыши по “Process Control Engine” и в открывшемся меню нажать по пункту “Open PCE Editor”.
Во время работы среды исполнения zenon RT средство управления процессами должно знать, каким образом и когда вызывается каждая из разработанных программ, поэтому программы выделяются в отдельные задачи, имеющие свои условия вызова, наборы функций и переменных. Для создания задачи необходимо нажать правой кнопкой мыши в менеджере задач и выбрать пункт меню “New task…”.
При создании задачи в поле “Name:” задается название задачи, отображаемое в редакторе, в поле “Script file:” задается название файла скрипта, в котором будет сохраняться программа, в поле “Type:” задается “cyclic” - это означает, что задача будет вызываться циклически во время работы среды исполнения zenon RT, в поле “Priority:” задается “NORMAL” нормальный приоритет вызова задачи, в поле “cycle time to reach [ms]” задается время “100” через которое будет вызываться задача, в поле “Start type:” задается “system start” - это означает, что задача будет запущена во время запуска среды исполнения zenon RT. По завершению настройки задачи необходимо нажать кнопку “OK”. После этого откроется окно выбора переменных, в котором нужно выбрать переменные сигналов состояний (SS0, SS1, SS2, SS3, SS4), а так же переменные предыдущего (StateOld) и текущего (StateCurrent) состояний.
После выбора переменных открывается окно области ввода программы, в котором отображается текст программы:
'Initfunction
Sub Task_Init()
End Sub
'The Mainfunction is a cyclic function
Sub Task_Main()
End Sub
'Exitfunction
Sub Task_Exit()
End Sub
'Timerfunction
Sub Task_Timer(lTimerId)
End Sub
В приведенном тексте программы нас интересует процедуры: Task_Init и Task_Main. Процедура инициализации Task_Init вызывается во время запуска задачи, то есть при запуске среды исполнения zenon RT, она будет использоват для начальной инициализации значений переменных предыдущего и текущего состояний. Процедура тела программы Task_Main вызывается циклически раз в 100 мили секунд, она будет использоваться для обновления значений переменных предыдущего и текущего состояний.
Для реализации механизма управления отображением графа состояний необходимо использовать операторы: доступа к переменной, присваивания, ветвления, равенства, неравенства, а так же логического И.
Что бы обратиться к переменным SCADA системы zenon из задачи средства управления процессами необходимо использовать конструкцию:
Task.Value(“Имя переменной”)
Для присвоения значения переменной необходимо использовать конструкцию:
Task.Value(“Имя переменной”) = 1
Реализация ветвления выполняется на основе оператора If:
If <условие> Then
<действие 1>
<действие 2>
…
<действие n>
End If
Если условие выполняется, действия внутри условного оператора If выполняются, если условие не выполняется, действия внутри условного оператора If не выполняются. В качестве условия может выступать операция равенства и операция неравенства, эти операции могут быть объединены оператором логического И:
If Task.Value(“Имя переменной”) = 0 Then
<действие если значение переменной равно 0>
End If
If Task.Value(“Имя переменной”) <> 0 Then
<действие если значение переменной не равно 0>
End If
If Task.Value(“Имя переменной”) = 0 And Task.Value(“Имя переменной”) <> 4 Then
<действие если значение переменной равно 0 и не равно 1>
End If
Реализацию процедуры инициализации (Task_Init) удобно выполнять в виде отдельных блоков кода в каждом из которых происходи инициализация переменной предыдущего состояния и текущего состояния в зависимости от состояния конечного автомата с памятью.
If Task.Value(“Состояния конечного автомата”) = 1 Then
Task.Value(“Предыдущее состояния”) = <Номер предыдущего состояния>
Task.Value(“Текущее состояние”) = <Номер текущего состояния>
End If
Каждый блок состоит из условного оператора If. В условии проверяется значение переменной состояния конечного автомата с памятью, если конечный автомат с памятью находится в данном состоянии, выполняется присваивание переменным предыдущего состояния и текущего состояния соответствующих значений. Пример процедуры инициализации:
'Initfunction
Sub Task_Init()
If Task.Value("SS0") = 1 Then
Task.Value("StateOld") = 0
Task.Value("StateCurrent") = 0
End If
If Task.Value("SS1") = 1 Then
Task.Value("StateOld") = 0
Task.Value("StateCurrent") = 1
End If
If Task.Value("SS2") = 1 Then
Task.Value("StateOld") = 1
Task.Value("StateCurrent") = 2
End If
If Task.Value("SS3") = 1 Then
Task.Value("StateOld") = 2
Task.Value("StateCurrent") = 3
End If
If Task.Value("SS4") = 1 Then
Task.Value("StateOld") = 3
Task.Value("StateCurrent") = 4
End If
End Sub
Реализацию процедуры тела программы (Task_Main) удобно выполнять в виде отдельных блоков кода в каждом из которых значения переменной текущего состояния присваивается переменной предыдущего состояния, а номер текущего состояния присваивается переменной текущего состояния, в зависимости от состояния конечного автомата с памятью и значения текущего состояния:
If Task.Value(“Состояния конечного автомата”) = 1
And Task.Value(“Текущее состояние”) <> <Номер текущего состояния> Then
Task.Value(“Предыдущего состояния”) = Task.Value(“Текущее состояние”)
Task.Value(“Текущее состояние”) = <Номер текущего состояния>
End If
Каждый блок состоит из условного оператора If. В условии проверяется значение переменной состояния конечного автомата с памятью, если конечный автомат с памятью находится в данном состоянии и значение переменной текущего состояния не равно номеру текущего состояния, выполняется присвоение значение переменной текущего состояния переменной предыдущего состояния, и присвоение переменной текущего состояния номера текущего состояния. Пример процедуры тела программы:
'The Mainfunction is a cyclic function
Sub Task_Main()
If Task.Value("SS0") = 1 And Task.Value("StateCurrent") <> 0 Then
Task.Value("StateOld") = Task.Value("StateCurrent")
Task.Value("StateCurrent") = 0
End If
If Task.Value("SS1") = 1 And Task.Value("StateCurrent") <> 1 Then
Task.Value("StateOld") = Task.Value("StateCurrent")
Task.Value("StateCurrent") = 1
End If
If Task.Value("SS2") = 1 And Task.Value("StateCurrent") <> 2 Then
Task.Value("StateOld") = Task.Value("StateCurrent")
Task.Value("StateCurrent") = 2
End If
If Task.Value("SS3") = 1 And Task.Value("StateCurrent") <> 3 Then
Task.Value("StateOld") = Task.Value("StateCurrent")
Task.Value("StateCurrent") = 3
End If
If Task.Value("SS4") = 1 And Task.Value("StateCurrent") <> 4 Then
Task.Value("StateOld") = Task.Value("StateCurrent")
Task.Value("StateCurrent") = 4
End If
End Sub
Что бы проверить правильность ввода программы необходимо в меню редактора средства управления процессами выбрать “Execute” “Compile tasks”. В случае отсутствия ошибок в окне вывода отобразится текст: StateMachine.vbs - 0 Syntax error(s).
На этом разработка механизма управления отображением графа состояний завершена, редактор средства управления процессами может быть закрыт, а дальнейшая работа будет вестись по настройке отображения графа состояний.
Настройка отображения графа состояний
Настройка отображения графа состояний будет состоять из двух этапов: на первом этапе будет настраиваться отображение комбинационных элементов отвечающих за визуализацию состояний графа, на втором этапе будет настраиваться отображение комбинационных элементов отвечающих за подсветку дуг перехода из предыдущего состояния в текущее.
Комбинационные элементы визуализации состояний графа будут настраиваться, начиная с 0 и далее по часовой стрелке. Если значение переменной текущего состояния соответствует номеру комбинационного элемента, то он должен быть закрашен ярким цветом, указывающим на то, что комбинационный автомат находиться в текущем состоянии. Если значение переменной предыдущего состояния соответствует номеру комбинационного элемента, то он должен быть закрашен тусклым цветом, указывающим на то, что данное состояние является предыдущим состоянием комбинационного автомата. Если значение переменной предыдущего состояния и значение переменной текущего состояния соответствуют номеру комбинационного элемента (это происходит при запуске среды исполнения zenon RT) он должен быть закрашен ярким цветом. Если значение переменной предыдущего состояния и значение переменной текущего состояния не соответствуют номеру комбинационного элемента, он должен быть закрашен цветом по умолчанию.
Для того что бы настроить визуализацию комбинационного элемента состояния графа необходимо перейти в режим конфигурирования данного элемента. В окне конфигурации с помощью кнопки “Change …” нужно изменить переменную, связанную с символом “X1” на переменную текущего состояния, после чего используя кнопку “Add …” добавить переменную предыдущего состояния, которая будет автоматически связана с символом “X2”. Далее используя кнопку “New” необходимо добавить два статуса.
Самый верхний статус при отображении комбинационного элемента имеет самый высокий приоритет и должен соответствовать текущему состоянию комбинационного автомата. Поэтому необходимо снять флажок “Original symbol colors” и для фона символа “Background” задать яркий цвет. Далее нужно сбросить флажки значений битов переменной в неопределенное состояние, что соответствует точке в центре флажка и нажать кнопку “Formula…” для открытия окна ввода формулы. Формулы используются для определения статуса, в котором должен находиться комбинационный элемент. Если условие формулы выполняется, комбинационный элемент будет отображаться в соответствии с данным статусом. Если одновременно выполняется условия формул нескольких статусов, то комбинационный элемент будет отображаться в соответствии со статусом, имеющим наивысший приоритет.
Каждое отдельное условие в формуле должно обрамляться круглыми скобками, для добавления в формулы значения переменной необходимо развернуть дерево соответствующей переменной и дважды нажать левой кнопкой мыши по “Value” после чего в формулу будет добавлена символьная запись соответствующая значению переменной. Для проверки равенства значения переменной используется знак равно справа от которого задается значение, которому должна быть равна переменная. После завершения ввода формулы необходимо нажать кнопку “OK”. Если значение переменной равно 0, то символ комбинационного элемента соответствующий 0 состоянию будет закрашен ярким цветом. Аналогично настройке статуса текущего состояния выполняется настройка статуса предыдущего состояния. Так как статус текущего состояния имеет наивысший приоритет, то при выполнении условий формул обоих статусов символ комбинационного элемента будет закрашен ярким цветом. По окончанию настройки статусов необходимо нажать кнопку “OK”.
Таким образом, необходимо настроить визуализацию всех комбинационных элементов состояний графа. Отличие между их настройками будет заключаться в условиях формул, для каждого комбинационного элемента в формуле будет использоваться свой номер соответствующий состоянию комбинационного автомат с памятью. Настройка отображения комбинационных элементов отвечающих за подсветку дуг перехода из предыдущего состояния в текущее выполняется аналогично настройке комбинационных элементов состояний графов. Так как дуга перехода должна подсвечиваться только в том случае если совпадает предыдущее и текущее состояние комбинационного автомата, то достаточно добавить только один статус. Формула статуса должна проверять значение переменной предыдущего состояния и значение переменной текущего состояния, для объединения двух условий используется оператор “AND” (логическое И).
По завершению настройки графа состояний можно выполнить сборку программы для SCADA системы и проверить правильность ее функционирования, в соответствии с автоматическим формированием комбинаций состояний датчиков.
Настройка регистрации состояний датчиков, реле и конечного автомата с памятью в хронологическом списке событий
По заданию в хронологическом списке событий должны регистрироваться состояния датчиков, реле и конечного автомата с памятью. Детально этот вопрос был рассмотрен Лабораторной работе №3. По заданию при изменении состояния датчика, реле или конечного автомата с памятью должны быть зарегистрированы соответственно состояния всех датчиков, всех реле или всех сигналов состояний конечного автомата с памятью. SCADA система zenon позволяет выполнять динамическое формирование текста использующегося при описании события в хронологическом списке событий и тревоги в информационном списке тревог. При динамическом формировании текста можно использовать текущие значения любых переменных SCADA системы, а то есть состояние датчиков, реле и сигналов состояний конечного автомата с памятью.
Для задания динамического текста используется тоже поле, что и для задания текста предела. Динамический текст должен начинаться с символа “$”. Указание переменной, значение которой должно быть подставлено в конечный текст должно начинаться с “;%”, имя переменной должно соответствовать имении переменной в SCADA системе. Пример динамического текста для вывода состояния всех датчиков:
$Состояние датчиков: ;%D1;%D2;%D3;%D4;%D5
Таким образом, необходимо настроить динамический текст события срабатывания и отпускания всех датчиков, а так же включения и выключения всех реле. Так как при изменении состояния конечного автомата с памятью сначала выполняется сброс состояния, а после этого установка нового состояния, то событие изменения состояния конечного автомата с памятью должно быть настроено только на установку состояния.
Настройка регистрации состояния конечного автомата с памятью в информационном списке тревог
По заданию при изменении состояния конечного автомата с памятью, соответствующее переходу по графу против часовой стрелки в информационном списке тревог должно регистрироваться состояние конечного автомата. Такие переходы соответствуют изменению состояния конечного автомата с памятью со 2 на 1 и с 4 на 3.
Идентификацию таких переходов можно выполнить с помощью математической переменной. Для этого необходимо создать математическую переменную типа “BOOL” и используя в формуле значение переменной предыдущего состояния и значение переменной текущего состояния определить, выполнился ли соответствующий переход. В данном случае первое условие должно проверять значение переменной предыдущего состояния на равенство 2, а значении переменной текущего состояния на равенство 1, если условия выполняется, переход произошел. Второе условие должно проверять значение переменной предыдущего состояния на равенство 4, а значение переменной текущего состояния на равенство 1, если условие выполняется, переход произошел. Для объединение условий между собой используется оператор “OR” (логическое ИЛИ). Теперь в случае изменения состояния комбинационного автомата с памятью соответствующего переходу по графу против часовой стрелки математическая переменная будет принимать значение “TRUE”. Далее необходимо настроить предел математической переменной для генерации тревоги при равенстве ее значения “TRUE” и задать динамический текст, который будет отображать в информационном списке тревог значение сигналов состояний комбинационного автомата с памятью.
Лабораторная работа Расширенный тренд и архивирование данных
Цель: Разработать программное обеспечение для SCADA системы zenon реализующее с помощью расширенного тренда отображение состояния датчиков, реле, конечного автомата с памятью и выполняющие их архивирование
Задание: Разработать программное обеспечение для SCADA системы zenon на базе Лабораторной работы №4 включающее изображение расширенного тренда и изображение архива. Расширенный тренд должен отображать состояния датчиков, реле и конечного автомата с памятью. Используя инструмент архивирования реализовать сохранение состояния датчиков, реле и конечного автомата с памятью. Разработать изображение архива, обеспечивающее доступ к сохраненным данным.
Порядок выполнения работы:
1. Разработать изображение расширенного тренда.
2. Выполнить настройку архивирования данных.
3. Разработать изображение архива.
1. Разработка изображения расширенного тренда
Разработка программного обеспечения для SCADA системы будет вестись на базе проекта Лабораторной работы №4, поэтому необходимо создать его копию. По заданию в проект нужно добавить изображение расширенного тренда и изображение архива, создать кнопки выбора изображений на изображении кнопок и связать их с функциями открытия изображений.
После создания изображения расширенного тренда необходимо установить тип изображения “Extended trend” и используя, мастер конфигурирования изображения с шаблоном “Standard” добавить на него элементы управления и визуализации специфические для данного изображения. Далее нужно разместить элементы изображения таким образом, что бы они, не выходили за его пределы. Разработанное изображение представлено на рисунке:
Перед началом настройки изображения расширенного тренда необходимо настроить переменные значения, которых будут отображаться на нем. По заданию на тренде должны отображаться состояния датчиков (D1, D2, D3, D4, D5), реле (R1, R2, R3) и конечного автомата с памятью (SS0, SS1, SS2, SS3, SS4), всего 13 графиков. Для того что бы графики значений переменных не накладывались друг на друга необходимо для каждого из них создать математическую переменную и выполнить настройку диапазона значений и сдвига относительно начала координат. Подробно масштабирование значений переменных рассмотрено в Лабораторной работе №2.
После завершения создания и настройки математических переменных для отображения графиков необходимо перейти к настройке параметров тренда. Для этого нужно выбрать в таблице функций функцию открытия изображения расширенного тренда и в окне свойств нажать левой кнопкой мыши по полю “Parameter” выбрать изображение расширенного тренда.
В открывшемся окне выполняется настройка параметров тренда и выбор переменных графики, которых будут отображаться на тренде. В поле “Origin of the data” необходимо задать в качестве источника данных, данные поступающие в реальном времени “Online data”, в поле “Diagram name” необходимо задать название тренда, а в поле “Refresh rate” интервал времени в секундах, через который будут обновляться графики тренда, в поле “x-axis” необходимо указать, что ось X будет соответствовать оси времени “YT display”. С помощью кнопки “Add curve …” необходимо добавить математические переменные соответствующие состояниям датчиков, реле и комбинационного автомата с памятью.
Далее необходимо выполнить настройку области отображения тренда, для этого нужно нажать кнопку “Diagram settings and cursor output …”. Поля “Top”, “Bottom”, “Left” и “Right” позволяют задавать отступы от края области отображения тренда. Поле “Background color” позволяет задать цвет фона области отображения, а “Grid color” цвет сетки.
Для полей “Date”, “Curve”, “Value”, “Limit text” необходимо задать соответствующий размеры колонок, которые будут использоваться в таблице значений курсора “Cursor output list”. Колонки “Measuring unit” и “State” нас не интересуют, поэтому их отображения нужно отключить, сбросив соответствующие флажки. По завершению настройки нужно нажать кнопку “OK”.
Далее необходимо настроить ось времени, для этого в окне создания диаграмм нужно нажать кнопку “Time axes and time filter …”. На вкладке “Time” в поле “Select time range” задается временной диапазон “Set filter a time filter type”, в поле “Type of time filter” необходимо задать тип фильтра “Relative period of time” относительный период времени. Фильтр относительного периода времени отображает графики, за заданный период времени от текущего момента. В поле времени нужно задать интервал времени 2 минуты, после чего нажать кнопку “OK”.
Далее необходимо настроить отображение каждого графика, для этого в окне создания диаграмм нужно выбрать соответствующий график и нажать кнопку “Edit curve”. В поле “Curve name” задается название графика, в поле “Line width” задается толщина линии графика, с помощью кнопки “Curve color” выбирается цвет графика. После окончания настройки графика нужно нажать кнопку “OK”. Таким образом, нужно настроить отображение всех 13 графиков.
Далее необходимо настроить отображение таблицы управления графиками “Expand curve list”, для этого в окне создания диаграмм нужно нажать кнопку “Extended curve list”.
Для того что бы выбрать список отображаемых колонок необходимо нажать кнопку “Column selection…”. Что бы удалить из отображения колонку “Title” необходимо выбрать ее в списке “Selected columns:” и нажать клавишу “<-- Delete”. Для того что бы изменять порядок отображения колонок используются кнопки “Up” и “Down”. По завершению выбора отображаемых колонок необходимо нажать кнопку “OK”.
Для того что бы настроить отображение колонок в окне настройки колонок необходимо нажать кнопку “Column format…”.
В открывшемся окне для настройки отображения колонки в списке “Available columns” выбирается настраиваемая колонка, в поле “Text” задается текст отображаемые в заголовке колонки, а в поле “Width” ширина настраиваемой колонки. С помощью элементов выбора выравнивания “Alignment” для всех колонок необходимо задать выравнивание текста по центру колонки “Centered”. Для колонки “Curve name” должен быть задан текст “Название”, для “Color” - “Цвет”, для “y axis” - “Ось y”, для “Active” - “Активный”. По завершению настройки колонок необходимо нажать кнопку “OK”, после чего в окне настройки колонок так же нажать кнопку “OK”.
По завершению настройки изображения расширенного тренда в окне создания диаграмм необходимо нажать кнопку “OK”. Далее необходимо расширить таблицу языковых файлов переводом колонок таблицы значений курсоров: “Curve”, “Date”, “Status text”, “Value”. Теперь можно собрать исполнительные файлы и запустить разработанное программное обеспечение. Для проверки правильности функционирования разработанного изображения, выводимые им графики можно сравнить с данными, регистрируемыми программным осциллографом в среде разработки Logic Workbench.
2. Выполнить настройку архивирования данных
Для регистрации и хранения данных в SCADA системе zenon используется инструмент архивирования, он поддерживает хранение данных в отдельных файлах и различных базах данных. Структурирование данных по определенным критериям выполняется с помощью отдельных архивов. Для создания архива необходимо в дереве проекта нажать правой кнопкой мыши по “Historian” и выбрать пункт меню “New archive…”.В открывшемся окне мастера создания архива необходимо нажать кнопку “Next”. В поле “Term:” необходимо задать сокращенное название архива, в поле “Name:” полное название архива и нажать кнопку “Next”. По заданию необходимо используя инструмент архивирования реализовать сохранение состояния датчиков, реле и конечного автомата с памятью. Для того что бы добавить соответствующие переменные в архив необходимо нажать кнопку “Variable selection…” и выбрать их. По завершению добавления переменных в архив нужно нажать кнопку “Next”. В поле “Recording type:” необходимо задать циклический тип записи “Cyclic scanning”, в поле “Scanning cycle:” необходимо задать время сканирования 1 секунда. По завершению создания архива нужно нажать кнопку “Finish”. Для изменения параметров архива необходимо нажать правой кнопкой мыши по названию архива и выбрать пункт меню “Edit archive”. В открывшемся окне необходимо выбрать вкладку “Save”, указать тип архива “XML (*.xml)”, выбрать циклический тип сохранения “Cycle” и задать периодичность записи раз в 10 минут. После завершения настройки сохранения данных в архиве нужно нажать кнопку “OK”.
Настройка архива для сохранения состояния датчиков, реле и конечного автомата с памятью завершена. Теперь во время работы среды исполнения zenon RT каждую секунду в архив будут добавляться новые значения переменных, а каждую 10 минуту часа добавленные значения будут сохраняться на жесткий диск в файл формата XML.
3. Разработать изображение архива
В начале выполнения лабораторной работы было создано изображение архива, кнопка открытия данного изображения и функция, связанная с данной кнопкой. Теперь необходимо выполнить настройку данного изображения. Для этого нужно установить тип изображения “Archive revision” и используя, мастер конфигурирования изображения с шаблоном “Standard” добавить на него элементы управления и визуализации специфические для данного изображения. Далее нужно разместить элементы изображения таким образом, что бы они, не выходили за его пределы, а так же добавить кнопку сохранения архива.
Для того что бы перейти к настройке параметров изображения архива нужно выбрать в таблице функций функцию открытия изображения архива и в окне свойств нажать левой кнопкой мыши по полю “Parameter” выбрать изображение архива.
В открывшемся окне необходимо выбрать данные, какого архива будут отображаться, формат сортировки данных по времени “Time”. Далее нажать кнопку “Filter…”. В открывшемся окне необходимо выбрать вкладку “Time”. В поле “Select time range” задается временной диапазон “Set filter a time filter type”, в поле “Type of time filter” необходимо задать тип фильтра “Relative period of time” относительный период времени. Фильтр относительного периода времени отображает данные из архива, за заданный период времени от текущего момента. В поле времени нужно задать интервал времени 1 час, после чего нажать кнопку “OK”.
По завершению настройки изображения архива в окне выбора архива нужно нажать кнопку “OK”. Далее необходимо расширить таблицу языковых файлов переводом колонок таблицы: “Date / time”, “Variable”, “Identification”, “Value”, “Text”, “Measuring unit”, “Status”.
Теперь можно выполнить сборку проекта и проверить правильность функционирования изображения архива. Пример работы изображения приведен на рисунке:
На примере работы изображения архива видно, что колонки в таблице идут слитно и таблица является не читабельной, кроме того некоторые колонки пусты, а колонка текст не поддерживает динамическое формирование текста. Для настройки таблицы можно воспользоваться кнопкой “Настройка таблицы” и задать нужные параметры колонок, однако после перезапуска среды исполнения параметры будут сброшены в состояние по умолчанию. Среда разработки zenon Editor не имеет встроенного инструмента настройки таблицы изображения архива, данную задачу можно решить только через редактирование файла настроек проекта.
Перед тем как перейти к редактированию файла настроек проекта нужно узнать уникальный идентификатор проекта. Для этого в дереве проектов необходимо выбрать нужный проект. В свойствах проекта развернуть дерево “General”, ветвь “Name/Folder” в поле “Project ID” будет отображаться уникальный идентификатор проекта.
Далее необходимо открыть проводник и в строку адреса задать путь к базе данных проектов SCADA системы zenon: “%CD_SYSTEM%\..\SQL2008R2\”. В открывшемся каталоге нужно перейти в каталог имеющий название соответствующее идентификатору проекта, после чего перейти по пути “FILES”?“zenon”?“system”. Настройки проекта хранятся в файле “project.ini”, для его редактирования можно использовать любой текстовый редактор. В конец файла проекта необходимо добавить следующие ключи:
[ARCHEDIT]
DATUMBREITE=20
VARIABLEBREITE=10
KENNUNGBREITE=0
WERTBREITE=10
EINHEITBREITE=0
STATUSBREITE=10
ZUSTANDBREITE=0
ARCHEDITFONT=0
Ключ “[ARCHEDIT]” указывает на то, что ключи ниже него будут относиться, к свойствам отображения таблицы изображения архивов. Ключ “DATUMBREITE” задает размер колонки “Дата / время”, ключ “VARIABLEBREITE” задает размер колонки переменной, ключ “WERTBREITE” задает размер колонки значения переменной и ключ “STATUSBREITE” задает размер колонки статуса. Все остальные колонки будут иметь нулевой размер, и не будут отображаться. Так как изменения в настройки проекта были внесены непосредственно, в базу данных проектов SCADA системы zenon эти изменения будут автоматически добавляться в исполнительные файлы при каждой сборке проекта.
На изображении архива ранее была добавлена кнопка “Сохранить архив”. Для реализации сохранения архива необходимо в таблице функций создать новую функцию развернув дерево “Historian” и выбрав функцию “Export archives”, после чего нажать кнопку “OK”.
В открывшемся окне на вкладку “General”, необходимо выбрать формат экспорта архива “CSV”. CSV - это текстовый формат, предназначенный для представления табличных данных. Каждая строка файла - это одна строка таблицы, каждое значение отделенное точкой с запятой, это значение соответствующей колонки. Так же необходимо установить флажок автоматического формирования имен файлов “Generate file name automatically”. Далее нужно выбрать значения, которые будут сохраняться в экспортируемом файле архива. Порядок выбора влияет на порядок сохранения данных в архиве. После этого на вкладке “Time” необходимо настроить временные параметры экспорта архива. После завершения настройки необходимо нажать кнопку “OK”. Файл архива сохраняется на жесткий диск в каталог “ExportArv” внутри каталога проекта.
Размещено на Allbest.ru
...Подобные документы
Вывод графических файлов на компонент Picture. Действия Visual Basic по умолчанию. Создание графического интерфейса пользователя. Циклический показ фотографий. Формирование списка изображений и их циклический вывод на экран с определенным интервалом.
курсовая работа [3,2 M], добавлен 05.01.2013Створення проекту та розробка SCADA у Vijeo Citect. Використання хронологічного подієвого списку (CEL) для відображення журналу подій або щоденнику операцій. Визначення драйверу та опис конфігурації змінних для визначення внутрішніх змінних ZenOn.
курсовая работа [3,2 M], добавлен 19.08.2012SCADA (Supervisory Control And Date Acquisition) – диспетчерское управление и сбор данных. Формирование удобного человеко-машинного интерфейса. Разработка проекта WinCC: среда проектирования, конфигурирование. Пример отображения информации на экране.
презентация [1023,1 K], добавлен 10.02.2014Создание, использование и уничтожение динамических переменных. Графическое изображение списка. Разработка программного средства, которое имеет список заказов на покупку товаров. Организация пользовательского интерфейса для редактирования информации.
курсовая работа [618,8 K], добавлен 16.09.2012Правила формирования списка на рабочем листе. Что понимается под структурой списка. Как осуществляется ввод данных. Простая сортировка списка. Интерфейс и функции приложения PowerPoint. Создание, редактирование и форматирование текстового документа.
лабораторная работа [25,1 K], добавлен 16.01.2015Стандартные функции для работы с динамической памятью. Представление списков цепочками звеньев. Организация файлового каталога в файловой системе в виде линейного списка на языке Visual C++. Создание блок-схемы и инструкции по работе с программой.
курсовая работа [252,0 K], добавлен 22.01.2015Составление треугольной таблицы. Нахождение списка максимальных классов совместимости, минимального замкнутого покрытия. Получение логических функций выходов автомата. Синтез конечного автомата и функциональной схемы. Принципиальная электрическая схема.
контрольная работа [215,8 K], добавлен 22.06.2012Приобретение навыков работы со списками в программах на Visual Prolog. Изображение списка в виде головы и хвоста. Удаление всех вхождений элемента в списке. Обозначение пустого списка. Вычисление суммы элементов, стоящих в списке на нечетных местах.
лабораторная работа [94,9 K], добавлен 27.11.2014Обзор мобильной ОС Android. Выбор инструментов и технологий. Проектирование прототипа графического интерфейса. Характеристика и описание пользовательского интерфейса. Проектирование и разработка базы данных. Определение списка необходимых разрешений.
курсовая работа [376,6 K], добавлен 13.09.2017Контроль целостности – функция системы защиты, которая предназначена для слежения за изменением параметров заданных ресурсов. Настройка режима регистрации событий для пользователя. Создание списка ресурсов, изменение его свойств и управление составом.
лабораторная работа [719,9 K], добавлен 15.07.2009Создание баз хозяйственных договоров, банков и членов временных трудовых коллективов в среде разработки Delphi. Логическая структура линейного двусвязного списка. Способ упорядочения и алгоритм сортировки списка. Руководство пользования программой.
курсовая работа [749,4 K], добавлен 14.02.2016Теоретическое описание линейного списка с алгоритмами реализации основных операций. Понятия, механизмы объектно-ориентированного программирования. Возможности проектируемого контейнера пользователей, его реализация на основе линейного списка с заголовком.
курсовая работа [475,2 K], добавлен 26.02.2015Структура записей входного массива. Описание основных типов данных. Алгоритм программы: присвоение начальных значений переменных, чтение списка из файла, вывод данных на экран, выполнение обработки данных, сохранение списка в файл. Листинг программы.
курсовая работа [325,2 K], добавлен 28.12.2012Размещение элементов графического интерфейса, обработка событий в нем. Написание программы "Домино", результатом работы которой будет графический интерфейс, реализующий одноименную настольную игру. Объектная декомпозиция классов. Текст программы.
курсовая работа [404,3 K], добавлен 13.10.2014Составление формальной грамматики, недетерминированный конечный автомат. Построение конечного автомата, программное моделирование работы конечного автомата. Граф детерминированного автомата, Синтаксическая диаграмма. Блок-схемы, примеры разбора строк.
курсовая работа [486,2 K], добавлен 19.11.2010Структура организации графического интерфейса, объявление и создание слушателей событий с помощью анонимных классов. Представление данных для таблицы – класс AbstractTableModel. Визуализация ячеек таблицы. Два основных типа потоков ввода-вывода в Java.
лекция [685,3 K], добавлен 01.05.2014Принципы написания консольных приложений на языке Java в среде Eclipse. Составление программы завтрака на основе списка продуктов, передаваемых в качестве параметров в командной строке. Создание пакета для классов, интерфейса, базового класса иерархии.
лабораторная работа [1,2 M], добавлен 01.05.2014Построение программы, создающей ведомость для каждой группы студентов по всем дисциплинам с указанием формы контроля (зачет или экзамен). Упорядочивание списка студентов по алфавиту. Описание функций и переменных. Алгоритм, блок-схема и текст программы.
реферат [281,3 K], добавлен 17.10.2013Исследование программного средства для управления базой данных с информацией о фильмах. Составление алгоритма удаления и добавления элемента в указанное место двунаправленного списка. Характеристика поиска, вывода на экран и сортировки элементов списка.
курсовая работа [94,5 K], добавлен 23.09.2011Понятие и свойства конечного автомата, его назначение и сферы применения. порядок разработки специальной функции, реализующей конечный автомат. Способы описания данной функции, обоснование выбора одного из них. Программная реализация решения задачи.
курсовая работа [466,4 K], добавлен 20.01.2010