Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ГОСЫ НОВЫЕ 2015

.docx
Скачиваний:
100
Добавлен:
18.02.2016
Размер:
6.34 Mб
Скачать

79 Разработать исходный код процедуры для подсчета числа событий в заданном интервале для контроллера PIC 16C52

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

Scan ; метка начала сканирования контакта RA0

btfss PortA,0 ; если «отрицательного» импульса на контакте RA0 не было, т.е. RA0=1, то

перейти к очистке TMR0 и продолжать сканировать этот контакт

goto Count ; переход на метку начала счета, т.к. на RA0 появился «отрицательный»

импульс, во время действия которого необходимо считать количество им-пульсов, поступивших на вход T0CKI

clrf TMR0 ; это обнуление необходимо для очистки TMR0, который при переходе к

этой команде уже мог насчитать “ненужные” (т.к. переход к этой команде

происходит если на RA0 – еще НЕ БЫЛО отрицательного импульса) им-пульсы поступающие на T0CKI

goto Scan ; продолжение сканирования RA0 на наличие «отрицательного» импульса

Count ; метка начала подсчета импульсов на входе T0CKI

movf TMR0,0 ; записать показания регистра TMR0 в W

movwf PortB ; переписать эту информацию из W в регистр PORTB

goto Scan ; вернуться к продолжению сканирования RA0

80 Разработать исходный код процедуры косвенной адресации РОН для контроллера PIC 16C52

Рассмотрим пример обнуления группы из 9 регистров, начиная с адреса 0x07 по 0x0F.

FSR equ 0x04 ; регистр с адресом 0x04 обозначаем именем FSR, для удобства обращения в теле программы

INDF equ 0x00 ; регистр с адресом 0x00 обозначаем именем INDF, для удобства обращения в теле программы

movlw 0x07 ; записываем в W число 0x07 – адрес первой ячейки ОЗУ, которую надо обнулить

movwf FSR ; переписываем это число в регистр FSR, теперь оно становится 5-разрядным адресом

Next ; метка начала перебора адресов и обнуления регистров по этим адресам

clrf INDF ; обнуляем, НО НЕ регистр INDF, а регистр адрес которого содержится в FSR-e, а там находится число 0x07, т.е. сейчас происходи обнуление 07-го регистра ОЗУ

incf FSR,1 ; выставляем следующий адрес регистра в ОЗУ, путем увеличения содержимого FSR-а

btfss FSR,4 ; проверяем, не стал ли равен “1” четвертый (начиная с нулевого) разряд FSR (приэтом переберутся все 9 требуемых адресов и при попытке установить десятый адрес0x10, в FSR окажется число ‘11110000’ четвертый разряд которого впервые в этом процессе стал равным “1”) и если это так заканчиваем работу, пропустив команду goto,если нет – переходим по метке Next для продолжения обнуления следующего регистра

goto Next ; переход по метке для продолжения процесса обнуления

81 Разработать исходный код процедуры для записи в ОЗУ поступающих данных в параллельном коде для контроллера PIC 16C52

start ; метка перехода программы из режима инициализации в режим ожидания импульсов записи по входу T0CKI

rrf TMR0,1 ; сдвиг вправо содержимого регистра-счетчика TMR0 через бит С регистра STATUS (при этом если положительный перепад, поступил, то в бите С окажется 1, т.к. показания счетчика увеличатся на 1) с сохранением результата сдвига в TMR0

btfss STATUS,0x00; проверка: если С=1 (импульс на T0CKI был), то пропуск команды goto и установка С=0 для «ловли» следующего импульса записи, если же С=0 (импульса на T0CKI не было) – то повторение сдвига (ожидание импульса записи)

goto start; возврат к ожиданию положительного перепада

bcf STATUS,0x00 ; обнуление бита С в регистре STATUS необходимое для одинаковых начальных условий при учете следующего импульса записи

incf FSR,1; увеличение числа (адреса регистра ОЗУ) в FSR на единицу, при этом для первого импульса записи адрес станет 0х06+0х01=0х07 (т.к. при инициализации FSR=0x06), а при зацикливании программы для каждого следующе-о – на 1 больше

movlw 0x07

btfsc STATUS,0x02 ; проверка: если Z=0, то начать запись данных, поступивших на PortB, если Z≠0 (FSR = 0х00), то установить FSR=W=0x07, необходимое для записи 26-го байта вновь в 0х07-ой регистр ОЗУ

movwf FSR ; установка FSR=W=0x07, т.к. сейчас в нем записано 0х01 (0х00+1 импульс)

movf PortB,0 ; запись данных, поступивших на PortB, в регистр W

movwf INDF;запись данных из W в регистр с адресом, установленным в FSR

goto start ; возврат к ожиданию положительного перепада

82 Разработать блок-схему алгоритма динамической индикации для 4-х разрядного семисегментного индикатора и контроллера PIC 16C52

Работа схемы сводится к последовательному, выводу на порт В кодов символов и поочередном сдвиге «0» на контактах порта А, вызывая зажига-

ние очередного и погасание предыдущего индикаторов.

83 Охарактеризуйте программное обеспечение автоматизированных систем контроля и управления.

Программные средства АС – это совокупность программ, процедур и правил, написанных на том или ином языке (с использованием средств лингвистического обеспечения), а так же необходимых для их эксплуатации документов, предназначенных для использования в автоматизированных системах с целью обработки данных. Автоматизированная система – это комплекс программно-технических систем управления объектом или процессом, в котором контролирующая и управляющая роль отводится человеку, а операции по сбору данных, их хранению, визуализации, генерацию (выработку) отчетов и прочие подготовительные операции выполняют ЭВМ (ПК), контроллеры и другие технические средства. Свойства ПС АС: 1.Необходимость документирования. По определению программы становятся ПС только при наличии документации.. 2Эффективность. Программное обеспечение, рассчитанное на многократное использование.3Надежность. В том числе:

1.Тестирование программы при всех допустимых вариантах входных данных;

2.Защита от неправильных действий пользователя; 3.Защита от взлома – пользователи должны иметь возможность взаимодействия с ПС только через легальные интерфейсы. Программное обеспечение автоматизированных систем контроля и управления. Эффективное управление сложным в технологическом и организационно-экономическом отношении предприятием требует внедрения новых информационных технологий и кардинального улучшения информационного обеспечения управленческой деятельности.

Рис. 1. Обобщенная схема системы контроля и управления

Как видно из рисунка, СКУ – это трехуровневая иерархическая модель. 1-ый уровень. Контроллер— электрический прибор, с помощью которого в системах управления: 1)измеряют токи, напряжения, температуру и др. физ. параметры; 2) передают и принимают данные по каналам связи. 2-ой уровень. Интеллектуальный контроллер. Это: сбор и обработка данных с контроллеров 1-го уровня; поддержание единого времени в системе; синхронизация работы всех подсистем. Примером ИК может служить контроллер серии ADAM5510. SQL(структурированный язык запросов)-Server (сервер СУБД) реального времени собирает данные в режиме реального (текущего) времени (текущие данные). 3-й уровень. SQL-Server – хранит данные собранные ранее SQL-Server РВ. АРМ - автоматизированное рабочее место (Операторские станции) – это рабочее место специалиста, оборудованное компьютером и специальным ПО, решающим задачи в рамках деятельности специалиста (АРМ диспетчере, АРМ технолога и т.п.). SCADA — это компьютерная система для сбора и анализа текущих данных. SCADA-системы используются для слежения и управления за технологическими процессами, оборудованием на заводах, системах водо- тепло- и энергоснабжения, транспорте нефти и газа

84 Охарактеризуйте технологию COM/DCOM разработки ПО, архитектура, понятие компонентного приложения. Технология ActiveX.

Для инструментальных систем и систем управления, работающих на платформе Windows, фирма Microsoft предложила архитектуру компонентных объектов. Компонент подобен мини-приложению, он поставляется пользователю как двоичный код, скомпилированный, скомпонованный и готовый к использованию.

Компоненты COM – это исполняемый код, распространяемого в виде динамически компонуемых библиотек (DLL) или EXE-файлов. Компонентами является непосредственно исполняемый двоичный код, не "включаемые исходные тексты" компилируемые совместно с проектом, не "библиотеки стандартных программ", присоединяемые линкером, а непосредственно исполняемые файлы, которые никак не надо "связывать" со своим проектом - их достаточно зарегистрировать в операционной системе и они будут доступны любой программе исполняющейся на данной машине. К COM- компонентам требования:1.должен скрывать используемый язык программирования.2. Компоненты должны распространяться в двоичной форме. 3. Должна быть возможность модернизировать компоненты, не затрагивая уже существующих пользователей. 4. Компоненты должны перемещаться по сети. Важным преимуществом компонентной архитектуры является быстрая разработка и развитие (модификация) приложений. Компонентная архитектура позволяет упростить процесс разработки подобных распределенных приложений. Шагом в сторону компонентной архитектуры являются приложения "клиент-сервер", поскольку они разделены на 2 части, клиентскую и серверную. ActiveX.Одним из направлений реализации интерфейсов COM/DCOM является создание управляющих компонентов ActiveX. ActiveX– это стратегическое направление, которое избрала корпорация Microsoft в вопросах развития современных технологий программирования. Почти все программные продукты Microsoft располагают в той или иной мере способностью предоставлять свои функциональные возможности другим приложениям или пользоваться функциональными возможностями других приложений. Разработчики приложений на Visual Basic, C, C++, Java, SCADA-систем могут воспользоваться управляющими элементами ActiveX: 1.для ускорения разработки своих приложений; 2.для использования опыта программистов, работающих на разных языках и различных платформах.

Три основных понятия, определяющие этот несложный интерфейс: Properties (данные); Methods (функции); Eve

85 Охарактеризуйте OPC-технология разработки программного обеспечения, использование в системах клиент-сервер.

OPC (OLE for Process Control) — технология связывания и внедрения объектов для систем промышленной автоматизации.

Технология OPC определяет 2 класса программ:

1.ОРС-сервер, непосредственно взаимодействующий с аппаратурой (например PLC);

2.ОРС-клиент, получающий данные от ОРС-сервера для дальнейшей обработки и передающий в ОРС-сервер команды управления, предназначенные аппаратуре.

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

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

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

Рис. Схема OPC-взаимодействия. Элементы данных часто называют тегами (TAG). Именно эти тэги и являются технологическими переменными в SCADA-системе. Не следует думать, что любое устройство можно просто так «через OPC» подключить к любой SCADA-системе - для этого надо иметь OPC-сервер для данного устройства. Сервер можно получить либо вместе с устройством, либо купить, либо написать самостоятельно. Для написания OPC-серверов в составе некоторых SCADA поставляется специальное ПО.

86 Рассмотрите на примере систем программирования Visual Basic 6.0 и C++ модульный принцип построения проекта.

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

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

Модулями в С++ называются функциями или классами. Обычно программа на С++ пишется путем объединения новых функций, которые создает сам программист, с функциями уже имеющимися в стандартной библиотеке языка. Функция – это подпрограмма, предназначенная для обработки данных и возвращения значения. объявление, определение и использование функции в С++: include <iostream>

using namespace std;

// объявление функции с параметрами (прототип)

int FindWay (int Speed, int Time);

int main()

{ int S,V,T;

cout << "\n Введите значение скорости: ";

cin >> V;

cout << "\n Введите значение времени: ";

cin >> T;

//вызов функции

S = FindWay (V,T);

cout << "\n Путь равен: ";

cout << S << "\n";

return 0; }

// определение функции

int FindWay(int v, int t) { return v*t; }

Модульный принцип построения проекта Visual Basic 6.0 реализован в виде представления программного модуля в двух различных формах представления:

1.модули как составляющие проекта Visual Basic 6.0;

2.модуль как единица программного кода подпрограмма,

МодулиVisual Basic 6.0: 1.Модуль формы(формы содержит сведения о самой форме, описании объектов на форме) 2.Стандартный модуль(в котором содержатся программные коды, которые могут использоваться в нескольких формах) 3.Модуль класса(используется как шаблон для создания собственного объекта)

Модуль как подпрограмма. В VB различают два типа подпрограмм – процедуры и функции. В VB процедурой называется логический компонент приложения, который может быть вызван по имени для выполнения одной или нескольких специальных операций. Это, как правило, маленькие подпрограммы, которые можно вызывать из других мест программы. Поэтому, если в создаваемом приложении есть часто повторяющаяся задача, то целесообразно создать процедуру, которая бы ее выполняла. Затем по мере необходимости просто вызывать ее, что может существенно сэкономить время. К примеру, можно написать процедуру, суммирующую два числа или вычисляющую радиус окружности и использовать ее затем по мере надобности.

Функции в VB несут такую же смысловую нагрузку, как и в любом другом языке программирования – их главная задача – вернуть некоторое значение. Особенности использования функций в VB:

87 Покажите особенность работы с динамической памятью, особенности для языка С++.

Динамическая память – может быть представлена как огромный массив последовательно пронумерованных ячеек, предназначенных для хранения данных. Ячейкам свободной памяти нельзя присвоить имя, можно лишь зарезервировать определенное количество ячеек и запомнить их адрес в указателе. С помощью указателей и осуществляется доступ к участкам динамической памяти. Важным преимуществом динамической памяти является то, что выделенная в ней область не может использоваться в других целях до тех пор, пока не будет освобождена явно. Для выделения участка памяти в динамически распределяемой области используют ключевое слово new: указатель = new выражение;

Аргументом для оператора new служит выражение, возвращающее число байтов, которые необходимо зарезервировать в области динамической памяти. Например, чтобы создать в динамической памяти переменную типа unsigned short необходимо записать: unsigned short int *ptr = new unsigned short int;

Выражение new unsigned short int выделяет два байта динамической памяти. Если до этого указатель был инициализирован, то в выделенный участок памяти будет занесено значение, указанное в инициализаторе. Кроме того, p указывает на переменную типа unsigned short int, размещенную в динамически распределяемой памяти. Его можно использовать как любой другой указатель на переменную и передавать с его помощью значения в эту область памяти. Например, строку *ptr = 21; можно прочитать: «разместить число 21 в той области динамически распределяемой памяти, на которую указывает p».

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

delete указатель; Здесь указатель содержит адрес участка памяти, ранее выделенный с помощью операции new. Например, delete ptr; где p ранее объявлен как указатель. Так происходит освобождение участка динамической памяти, адрес которого находится в указателе. Сам указатель при этом сохраняется, как обычная переменная и ему может быть передан на хранение другой адрес. Синтаксис создания объекта в динамической памяти:

имя_класса *указатель = new имя_класса; Сar *ptrCar = new Car;

Пример.

#include <iostream>

class myclass

{

int a;

public:

myclass ( ) {a = 10;}

~myclass();

int Show ( );

};

int myclass:: Show ( )

{

return a;

}

int main ()

{

myclass *Object=new myclass;

Object->Show ()<<"\n";

return 0;

}

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

Возможны ситуации, когда для получения доступа к закрытым членам класса

необходима функция, не являющаяся членом этого класса. Для этого в С++

поддерживаются дружественные функции (friend function). Дружественная функция задается так же, как и обычная, не являющаяся членам класса. Однако, в объявлении класса, для которого функция будет дружественной, необходимо включить ее прототип, перед которым ставится слово friend.

Пример Обычно ДФ бывает полезна тогда, когда у двух разных классов имеется нечто общее, что необходимо сравнить. В программе создаются классы car (легковой автомобиль) и truck (грузовик). Причем оба содержат в закрытой переменной скорость соответствующего транспортного средства.

#include <iostream>

using namespace std;

class truck; //предварительное объявление класса

class car

{

int passengers;

int speed;

public:

car(int p, int s) {passengers=p; speed=s;}

friend int sp_greater(car c, truck t);

};

class truck

{

int weight;

int speed;

public:

truck(int w, int s){weight=w; speed=s;}

friend int sp_greater(car c, truck t);

};

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

int sp_greater(car c, truck t)

{

return c.speed -t.speed ;

}

void main()

{ int t;

car c1(6, 55), c2 (2, 120);

truck t1(10000, 55), t2(20000, 72);

cout<<"Sravnenie znacheniy speed obectov c1 i t1:\n";

t=sp_greater(c1, t1);

if (t<0) cout<<"Gruzovik bustree.\n";

else if(t==0) cout<<"Skorosti mashin odinakovu.\n";

else cout<<"Leglovaya mashina bustree";

cout<<"Sravnenie znacheniy speed obectov c2 i t2:\n";

t=sp_greater(c2, t2);

if (t<0) cout<<"Gruzovik bustree.\n";

else if(t==0) cout<<"Skorosti mashin odinakovu.\n";

else cout<<"Leglovaya mashina bustree.";

}

Результат:

Sravnenie znacheniy speed obectov c1 i t1:

Skorosti mashin odinakovu.

Sravnenie znacheniy speed obectov c2 i t2:

Leglovaya mashina bustree.

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

89 Покажите реализацию принципа инкапсуляции в объектно-ориентированных языках программирования.

Инкапсуляция- это механизм, который объединяет данные и методы, предназначенные для обработки этих данных, и защищает и то и другое от внешнего вмешательства или неправильного использования. Суть инкапсуляции: переменные состояния объекта скрыты от внешнего мира. Изменение состояния объекта возможно ТОЛЬКО с помощью его методов. Этот принцип позволяет защитить переменные состояния объекта от неправильного их использования. В очень редких случаях разработчика программного обеспечения интересует внутренняя реализация используемого программного объекта. Главное, чтобы объект обеспечивал функции, которые он должен предоставить. А сам объект защищен от внешнего вмешательства.

Взаимодействие клиента с объектом происходит через интерфейс. Обычно интерфейс определяет единственный способ входа в объект и выхода из него; детали реализации остаются инкапсулированы.

Инкапсуляция позволяет: - упростить интерфейс класса, показав наиболее существенные для внешнего пользователя данные и методы;

- обеспечить возможность внесения изменений в реализацию класса без изменения других классов-клиентов (важно для дальнейшего сопровождения и модернизации программного кода). Инкапсуляция в Visual BASIC.В объектах VB интерфейсами являются свойства, методы и события : 1. Примером реализации принципа инкапсуляции может быть оператор Enum, решающий задачу создания перечислимых констант, которые в свою очередь могут определить значение свойств: Свойство Visible может иметь только два значения, ограниченные набором перечислимых констант - False и True.

2. Модификатор доступа Private позволяет должным образом защитить атрибуты объекта от не6сенкционированного или случайного доступа. С его помощью ограничивается доступ не только к переменным, но и процедурам и функциям. 3. Помещение данных и методов в модуль класса (class module).

Инкапсуляция в С++. В области private описывается «сердцевина» будущего объекта, самое важное, что есть и скрыто (инкапсулировано) в объекте и к чему доступ извне должен быть закрыт. В области public описан как бы способ управления объектом, то есть собственные функции объекта, с помощью которых можно получить доступ к области private, задать состояние объекта, заставить выполнить его какие-то действия. 1. Реализация класса. Согласно общему подходу к использованию классов, переменные-члены класса следует оставлять закрытыми (private). Благодаря этому обеспечивается инкапсуляция (сокрытие) данных внутри класса. 2. Структура программы с классами – интерфейс класса и реализация его методов выносятся в разные файлы.

#include <iostream>

using namespace std;

class Car

{ private:

unsigned short Key;

public:

void SetKey (unsigned short Num);

unsigned short GetKey( );

};

void Car :: SetKey (unsigned short Num)

{

Key = Num;

}

unsigned short Car:: GetKey( )

{

return Key;

}

int main ()

{ Car myZaparozec;

unsigned short Pass;

myZaparozec.SetKey (65000);

Pass =myZaparozec.GetKey ( );

cout<<"The key of my automobile is "<<Pass<<endl;

return 0;

}

Результат: The key of my automobile is 65000

90 Покажите реализация принципа полиморфизма в объектно-ориентированных языках программирования.

Полиморфизм – это свойство, которое позволяет одно и то же имя метода использовать для решения двух или более схожих, но технически разных задач. Целью полиморфизма прменительно к ООП, является использование одного имени для задания общих для класса действий, а выполнение каждого конкретного действия будет определяться типом данных. Пример. Для языка С, в котором полиморфизм поддерживается недостаточно, нахождение абсолютной величины числа требует трех различных функций: abs(), labs(), fabs(). Эти функции подсчитывают и возвращают абсолютную величину целых, длинных чисел и чисел с плавающей точкой соответственно. В С++, поддерживеющем концепцию полиморфизма в полной мере, каждая из этих функций может быть названа abs(). А тип данных, который используется при вызове функций, определяет, какая конкретная версия функции действительно выполняется. В С++ полиморфизм поддерживается двумя способами. Во-первых, при компиляции он поддерживается посредством перегрузки операторов и функций (одно имя функции для множества различных действий – это так называемый «слабый полиморфизм»). Перегруженными считаются функции с различным списком параметров. Во-вторых, во время выполнения программы он поддерживается посредством виртуальных функций. Виртуальные функции используют для поддержки так называемого динамического полиморфизма. Перегрузка конструкторов. Под конструктором понимается специальная функция-член (метод), задающий начальное состояние объекта при его создании. Если конструктор класса не объявить явно, то компилятор сам укомплектует программу стандартным (заданным по умолчанию) конструктором, который не получает никаких параметров и не выполняет никаких действий. Назначение конструктора состоит в создании работоспособного объекта: до запуска конструктора объект как таковой отсутствует (в памяти лишь зарезервировано место для него), а по завершении выполнения конструктора появляется готовый к использованию объект. Здесь работает правило: каждому способу объявления объекта класса должна соответствовать своя версия конструктора класса.

#include <iostream>

using namespace std;

class MyClass

{ int x;

public:

//перегружаем конструктор двумя способами

MyClass() { x=21; //инициализация по умолчанию };

MyClass(int n) { x=n; //инициализация вводимым значением }

int GetX() const {return x;}

};

void main()

{ int Var;

cout<<"Enter a value Var: "; cin>>Var;

MyClass obj1(Var);

cout<<"Object_1: "<<obj1.GetX ()<<"\n";

MyClass obj2;

cout<<"Object_2: "<<obj2.GetX ()<<"\n";

}

Результат:

Enter a value Var: 7

Object_1: 7

Object_2: 21

Это пример наиболее частого использования перегрузки конструктора – обеспечение возможности выбора способа инициализации объекта. Если закомментировать строку, в которой определяется конструктор со значением по умолчанию, то программа компилироваться не будет, поскольку у объекта Object_2 не будет конструктора. Полиморфизм в Visual BASIC 6.0. Метод Print. Вызванный для некоторой формы, этот метод выводит текст непосредственно в этой форме. Если же вызвать метод Print для объекта Debug, то вывод текста будет производиться в окне Immediate (немедленное выполнение). Таким образом, одна и та же (по имени) команда используется для выполнения двух различных задач

91 Покажите реализацию принципа наследования в объектно-ориентированных языках программирования. Наследование. Наследование - это механизм, посредством которого, один объект может наследовать свойства другого объекта и добавлять к ним черты, характерные только для него. Т.е. при помощи наследования один объект производится от другого объекта, но при этом он не просто получает в наследство все атрибуты своего предшественника: все изменения, произведенные в объекте – родителе, передаются по наследству его потомкам. Наследование объектами признаков своего класса можно объяснить на следующем примере. Класс объектов – магнитофон – обладающий возможностью проигрывать музыку с аудио кассет. На его основе можно построить класс плеер – «спрятать» свойство запись, минимизировать свойства размер и вес. Наследование в С++ Управление доступом к базовому классу При объявлении базового класса принято придерживаться следующего формата: class имя_производного класса { //закрытые члены, private по умолчанию protected: //защищенные члены public://открытые члены }; Теперь обратимся к формату объявления производного класса. При объявлении производного класса, надо указать, от какого класса он происходит. Когда один класс наследуется другим, используется следующая основная форма записи:

сlass имя_производного класса : сп­_доступа имя_базового_класса

{//дополнительные поля данных //дополнительные методы } Здесь сп­_доступа – это спецификатор доступа коим может являться одно из трех ключевых слов С++: public (открытый), private (закрытый) или protected (защищенный). Здесь представлены базовый и наследующий его производный класс. #include <iostream>

using namespace std;

class Base

{//члены базового класса

int x;

public:

void SetX(int n) {x=n;}

void ShowX() {cout<<x<<"\n";}

};

//класс наследуется как открытый

class Derived: public Base //Derived - производный

{ int y;

public:

void SetY(int m) {y=m;}

void ShowY() {cout<<y<<"\n";}

};

int main ()

{ Derived Object;

Object.SetX (21);//есть доступ к члену базового класса

Object.ShowX ();//есть доступ к члену базового класса return 0; }

Результат: 21

Поскольку класс Base наследуется как открытый, открытые его члены – функции-методы SetX() и ShowX() – становятся открытыми и для производного класса и поэтому доступны из любой части программы. Кроме того, естественно, что для объекта производного класса методы SetY и ShowY доступны. Хотя базовый класс наследуется как открытый (public в объявлении производного класса), для производного класса закрытые члены базового не доступны. Внесем добавление в объявление производного класса, дополнив его методом void ShowSumm() {cout<<x+y<<"\n";} Это вызовет ошибку компиляции. Поскольку переменная x – закрытый член базового класса (private по умолчанию) и внутри производного он недоступен. Если теперь в объявлении производного класса спецификатор доступа public заменить на private, то получим две ошибки компиляции. Поскольку в строках

Object.SetX (21);//ОШИБКА – закрыто для производного класса

Object.ShowX ();//ОШИБКА – закрыто для производного класса

происходит обращение к закрытым для производного класса функциям базового класса. Но важно запомнить, что функции SetX() и ShowX() в базовом классе по-прежнему остаются открытыми независимо от того, как они наследуются производным классом. Это означает, что объект типа Base мог бы получить доступ к этим функциям в любом месте программы.

92 Дайте определение динамического полиморфизма, назначение, примеры.

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

В С++ полиморфизм поддерживается двумя способами. Во-первых, при компиляции он поддерживается посредством перегрузки операторов и функций. Во-вторых, во время выполнения программы он поддерживается посредством виртуальных функций.

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

Указатели на производные классы. Мы рассмотрели достаточно моментов, касающихся указателей, однако, об одной специфической особенности не говорили, поскольку она тесно связана именно с виртуальными функциями (ВФ). Этой особенностью является:

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

Base *ptr; //указатель на базовый класс

Base BaseObj;//объект базового класса

Derived DerivedObj;// объект производного класса

//естественно, что указатель ptr может указывать

//на объект базового класса

ptr = & BaseObj; //указатель «работает» с объектом базового класса

//кроме базового класса указатель ptr может указывать

// на объект производного класса

ptr = & DerivedObj;// указатель «работает» с объектом производного класса

Для указания на объект производного класса можно воспользоваться указателем базового, и при этом доступ будет обеспечен только к тем объектам (полям, функциям-членам) производного класса, которые были унаследованы от базового. Объясняется это тем, что базовый указатель «знает» только о базовом классе и ничего не «знает» о новых членах, добавленных в производном.

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

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

// создаются три класса, в классе base определяется виртуальная функция func()

// класс base наследуется двумя классами, каждый из которых переопределяет func()по-своему

// указатель создается указатель на класс base

base *p;

// создаются по одному объекту каждого из трех классов

base ob(10);

derived1 d_ob1(10);

derived2 d_ob2(10);

// указатель три раза поочередно ссылается на объекты типа

// указатель base, derived1, derived2

p = &ob;

p->func(); // вызывается версия функции func() класса base

p = &d_ob1;

p->func(); // вызывается версия функции func() класса derived1

p = &d_ob2;

p->func(); // вызывается версия функции func()класса derived2

Результат(разный):

Work func() base class: 10

Work func() class derived1:

100 Work func() class derived2: 20

93. Охарактеризуйте интерактивные графические интерфейсы в системах управления, концепции проектирования, требования к разработке. Информационно-логическая структура интерфейса взаимодействия в системах управления.

Определение. Интерактивный графический интерфейс (ИГИ) для пользователя АСУ – это комплекс программных средств, обеспечивающих визуализацию реальных объектов, участвующих в технологическом процессе, определенных как информационная модель на экране монитора в режиме реального времени.

Концепции проектирования интерфейса пользователя СУ.

1) Инженерно-техническая Все параметры системы воспринимались с реальных приборов. Оператор обрабатывал информацию и осуществлял управление, основываясь на показаниях реальных приборов.

2) Системный подход. Современные системы управления по существу являются человеко-машинными системами, где человек выполняет роль субъекта управления.

Компьютер выступает посредником между человеком и системой компьютер. Оператор работает нe с реальными устройствами и оборудованием АС, а с их виртуальной копией

Актуальность применения ИГИ в системах управления.

Человек-оператор является замыкающим звеном системы управления, т.е. субъектом управления, а АПК (аппаратно-программный комплекс) АСУ и интерфейса взаимодействия является инструментальным средством реализации его управленческой (оперативной) деятельности.

Кроме того, в подавляющем большинстве случаев управленческий труд - опосредованная деятельность человека, поскольку в условиях АСУ он ведет управление, «не видя» реального объекта. Между реальным объектом управления и человеком-оператором находится информационная модель (ИМ) объекта управления.

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

Требования к разработке графических интерфейсов АСУ

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

Требованиями, определяющими правила проектирования интерфейса пользователя АСУ при системном подходе к его разработке являются:

1. Учет принципа минимального рабочего усилия:

минимизация затрат ресурсов со стороны разработчика ПО СУ.

минимизация затрат ресурсов со стороны пользователя

2. Учет принципа максимального взаимопонимания. Пользователь должен запоминать как можно меньшее количество информации

3.Учет принципа максимальной концентрациию. Инфоромация об аварии на аварийном элементе.

4. Стандартизация. использовать стандартные интерфейсные решения.

5. Удобство и простота работы. Интерфейс интуитивно понятен.

6. Внешний дизайн. Не утомлял зрение.

7. Неперегруженность форм, разреженность и группировка ее объектов.

94 Охарактеризуйте SCADA-системы, назначение, история возникновения, структура, технические характеристики.

Первый этап внедрение систем автомат. регулирования (САР). Решение задач програм. управления, слежения переходит от человека к САР.

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

Третий этап - внедрением в управление вычислительной техники. Вначале -применение микропроцессоров =>диспетчерское управление на основе использования автоматических информационных систем сбора данных и современных вычислит. комплексов.

Основные особенности концепции SCADA:

- дружественность человеко-машинного интерфейса (HMI);

- полнота и наглядность представляемой информации;

- доступность элементов управления;

Любая SCADA как система сбора информации и управления включает в себя три следующих основных структурных компонента

Remote Terminal Unit (RTU) - удаленный терминал, осуществляющий обработку задачи (управление) в режиме реального времени.

Master Terminal Unit (MTU), Master Station (MS) - диспетчерский пункт управления осуществляет обработку данных и управление высокого уровня.

Communication System (CS) - коммуникационная система (каналы связи), необходима для передачи данных с удаленных точек на центральный интерфейс оператора-диспетчера.

Применение SCADA позволяет:

свести критические ошибки оператора к минимуму;

сократить сроки и затраты на разработку проектов автоматизации производства.

К техническим характеристикам SCADA-систем относятся:

  1. используемые программно-аппаратные платформы;

  2. способы реализации связи с устройствами ввода-вывода;

  3. имеющиеся средства сетевой поддержки;

  4. встроенные командные языки;

Используемые программно-аппаратные платформы

Подавляющее большинство SCADA-систем реализовано на MS Windows-платформах(MS Windows NT/2000 ,MS DOS, MS Windows 3.xx/9X.)

Способы реализации связи с устройствами ввода/вывода

СОМ - порты. Сетевые платы .Платы расширения ЭВМ.

Встроенные командные языки

Большинство SCADA-систем имеют встроенные языки высокого уровня, VBasic-подобные языки, позволяющие программировать реакцию на события.

Поддерживаемые базы данных

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

95 Охарактеризуйте основные подсистемы пакетов SCADA, архитектурное построение, модульность SCADA- систем, примеры.

Основными областями применения систем SCADA являются: производство электроэнергии, промышленное производство; водозабор , водораспределение; управление на транспорте .Особенности SCADA как процесса управления в современных диспетчерских системах:1)процесс SCADA применяется в системах, в которых обязательно наличие человека (оператора, диспетчера); 2)процесс SCADA был разработан для систем, в которых любое неправильное воздействие может привести к отказу (потере);

основные возможности и средства sCADA:1)автоматизированная разработка 2)средства сбора первичной информации от устройств нижнего уровня; 3) средства регистрации аварийных ситуаций; 4)средства обработки первичной информации; 5)средства визуализации текущей и исторической информации; основные функции SCADA: 1) организовать взаимодействие SCADA-пакета с контроллерами;2) создать графический интерфейс для диспетчера/оператора;3) обеспечить оперативный персонал информацией об отклонения ТП.;4) настроить систему регистрации и архивирования данных и их представление на мониторе в виде трендов, что позволит оператору и специалистам проводить анализ состояния процесса и оборудования. Структурно пакеты SCADA представляют собой комплекс подсистем, каждая из которых функционально предназначена для решения сформулированных задач.

Особенности архитектурного построения SCADA рассмотрим на примере. Genesis32 является комплексом основанных на технологии OPC клиентских и серверных приложений.Все приложения комплекса являются 32-разрядными, построенными в соответствии со спецификацией OPC. Все программные компоненты реализованы на базе многопоточной модели и поддерживают технологию ActiveX. В состав Genesis32 входят следующие клиентские приложения, соответствующие спецификации OPC:GraphWorX32 (разработка АРМ);TrendWorX32 (работа с трендами); AlarmWorX32 (работа с тревогами - «алармами»). Указанные приложения могут заказываться и применяться как в составе комплекса, так и автономно. Кроме того, фирма ICONICS поставляет перечисленные ниже дополнительные приложения и инструментальные средства разработки:ScriptWorX32 (разработка собственных алгоритмов на VBA);DataWorX32 (связь клиентских приложений с устройствами);OPC серверы, разработанные ICONICS; OPC серверы, разработанные третьими фирмами. DataWorX32 является OPC-сервером который предназначен для организации единого моста между множеством клиентских и серверных компонентов системы.

Основные функциональные возможности DataWorX32:1)централизация параметров контролируемого процесса, обслуживаемых множеством серверов OPC, в едином списке; 2)оптимизация запросов множества клиентов OPC к одним и тем же параметрам в разных серверах OPC;3)организация списка глобальных переменных с возможностью непосредственного обмена данными между клиентскими приложениями Genesis32;4)возможность выполнения арифметических функциональных, 5)логических и других операций над глобальными переменными; 6)возможность оперативного изменения привязки глобальных переменных к источникам данных в серверах OPC;

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

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

96 Опишите рабочее место диспетчера (оператора) АСУ, графический интерфейс пользователя, мнемосхема.

Важнейшей функцией любой SCADA-системы является обеспечение работы автоматизированного рабочего места диспетчера-оператора.

АВТОМАТИЗИРОВАННОЕ РАБОЧЕЕ МЕСТО (АРМ) - это автономный диалоговый комплекс, система или устройство на базе ЭВМ, предназначенный для автоматизации работ, производимых на рабочих местах. В качестве ядра АРМ могут использоваться универсальные ЭВМ специализированные вычислительные машины (персональные и микро-ЭВМ, контроллеры);

АРМ могут работать либо автономно, либо могут входить в состав коллектива вычислителей подключаться к более мощным ЭВМ.

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

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

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

Требования к структуре мнемосхем

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

приоритет (важность органов управления и средств отображения информации);

группировки в логические блоки;

взаимосвязь между органами управления и средствами отображения информации.

При размещении индикаторов и органов управления на мнемосхеме применяют два способа их группировки:

  1. функциональный 2)последовательный

Оптимальной зоной мнемосхемы называется зона на ее поверхности, находящаяся в пределах 30° влево и вправо от линии взора.

Требования к мнемосхемам

Мнемосхема должна выполнять следующие функции:

  1. отображать функц.-техн. схему управл. объекта и информ. о его состоянии

  2. отображать связи и характер взаимодействия управляемого объекта с другими объектами и внешней средой;

  3. сигнализировать обо всех существенных нарушениях в работе;

  4. обеспечивать быстрое выявление возможности ликвидации неисправностей.

ПРИМЕР

В SCADA-системе Genesis32 для разработки АРМ и реализации их функций используется приложение GraphWorX32.

GraphWorX32 объединяет средства разработки и просмотра графических мнемосхем автоматизированных рабочих мест оператора АСУТП. Мнемосхемы могут создаваться как на основе встроенных средств рисования, так и на основе управляющих элементов ActiveX сторонних производителей. Алгоритмы вторичной обработки данных и процедуры управления экранными формами могут создаваться в интегрированной среде разработки и исполнения сценариев Visual Basic для приложений

97 Покажите на примере обмен данными между GraphWorX и приложением Ecxel.

В приведенном примере обмен данными между экранной формой GraphWorX32 и рабочим листом Excel возможен с использованием в качестве посредника – редактора VBA.

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

1. Разработка интерфейса экранной формы

2. Установка связи GraphWorX с типами данных Excel

Option Explicit

Public g_Excel_App As Excel.Application ‘ связь с приложением глоб перем

Программирование, решение задачи (Создание приложения Excel, книги)

Private Sub GwxDisplay_PreRuntimeStart()

Set g_Excel_App = CreateObject("Excel.Application")‘открываем Excel

Set g_Excel_Book = g_Excel_App.Workbooks.Add ‘открываем лист Excel

Set g_Excel_Sheet = g_Excel_Book.Worksheets(1)

g_Excel_Sheet.Range("a1") = 1‘заполнение ячеек Excel данными

End Sub

3.2. Создание процедуры чтения и записи информации.

Public Sub Read_Write(ByVal n As Integer)

Dim Point As GwxPoint ' переменная для связи с источником данных

Dim St As String ' переменная для хранения имени ячейки

Dim St2 As String 'для хранения имени локальной переменной GW

Dim x As Integer

'связываем объектную переменную с источником данных

Set Point = ThisDisplay.GetPointObjectFromName(St2)

'обращение к ячейке листа Excel, запись в нее значения, 'передаваемого свойством Value (текущее значение) объектной 'переменной Point

ThisDisplay.g_Excel_Sheet.Range(St) = Point.Value

'чтение из Excel

Point.Value = ThisDisplay.g_Excel_Sheet.Range(St)

End Sub

Функция GetPointObjectFromName(pointName as String) As Object

получает в качестве параметра выбранный (текущий объект с определенным именем) и возвращает объект типа GwxPoint с заданным именем.

3.4. Запись кода модулей GwxRd_Main и GwxWr_Main

Sub Rd(o As GwxPick)

Call ThisDisplay.Read_Write(0)

End Sub

Sub Wr(o As GwxPick)

Call ThisDisplay.Read_Write(1)

End Sub

98 Покажите на примере подключение модулей ввода/вывода Advantech к ICONICS GENESIS32.

Самыми распространенными подключения оборудования к SCADA-системам являются использование специальных драйверов и ОРС-серверов. Разработчики предоставляют драйверы только для небольшого ряда продуктов известных фирм, а использование ОРС не всегда доступно. Выход: использования библиотек элементов управления ActiveX.

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

Разработка проекта возможна благодаря библиотеке ActiveX-компонентов ActiveDaq Pro(позволяют интегрировать модули и платы ввода-вывода).Включает в себя базовые и GUI компоненты. К базовым компонентам относятся:

  • AIControl - сбор данных с модулей аналогового и дискретного ввода/вывода;

  • ThermoControl для модулей подключения термопар;

  • Counter Control для плат счетчиков/таймеров;

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

- Методы:

- SelectDevice - выбрать устройство из установленных которое поддерживает функции аналогового ввода;

- Свойства:

- DeviceNumber – отображает или устанавливает номер выбранного устройства;

- DeviceName - отображает имя выбранного устройства;

- ChannelNow - отображает или устанавливает текущий канал аналогового ввода;

- DataAnalog - отображает знач. сигнала на канале анал.вв. с номером ChannelNow.

Выбрать устройство:

Sub SelectDevice(o As GwxPick)

Dim AdvAI1 As AdvAI, DeviceName As GwxPoint

Dim DeviceNumber As GwxPoint

Set AdvAI1 = New AdvAI

Set DeviceName =ThisDisplay.GetPointObjectFromName(«~~DeviceName~~»)

Set DeviceNumber =ThisDisplay.GetPointObjectFromName(«~~DeviceNumber~~»)

AdvAI1.SelectDevice

DeviceName.Value = AdvAI1.DeviceName

DeviceNumber.Value = AdvAI1.DeviceNumber

End Sub

Программирование выбора канала

Код сценария VBA будет выглядеть следующим образом:

Private Sub GwxDisplay_DataEntryValueEntered (ByVal dataEntry As Object )

Dim DevNum As GwxPoint, InsertChannel As GwxPoint

Set DevNum = ThisDisplay.GetPointObjectFromName(“~~DeviceNumber~~”)

Set InsertChannel = ThisDisplay.GetPointObjectFromName(“~~InsertChannel~~”)

AdvAI1.DeviceNumber = DevNum.Value

AdvAI1.ChannelNow = InsertChannel.Value

End Sub

Программирование отображения данных с канала аналогового ввода.

Set AnalogData = ThisDisplay.GetPointObjectFromName(“~~AnalogData~~”)

AnalogData.Value = AdvAI1.DataAnalog

99 Охарактеризуйте технологии обмена данными между контроллерами и внешними приложениями Windows.

Когда контроллер передает данные о результатах своего функционирования ПК приходится решать две проблемы: аппаратного интерфейса связи; логического протокола кодирования и обмена данными.

На аппаратном уровне используется 3 основных вида реализации последовательных каналов связи

RS 232(используется для «заливки» ПО)

Использование интерфейса RS 485 требует наличия аппаратного пре-образователя протоколов, преобразующего электрические уровни сигналов ин-терфейса RS 232 в 2-х проводной (Data+ и Data-) дифференциальный интерфейс RS 485

TCP-IP требует наличия в составе контроллера и ПК, специализир. сетевых карт

ПРИ ЛЮБОМ способе связи, после обеспе-чения физического соединения, требуется установить (выбрать и настроить) логи-ческий протокол обмена. Практическая реализация протоколов может иметь как аппаратную, так и программную составляющие.

На логическом уровне обмен данными между Windows-приложением и контроллером одного «по-средника»( СЕРВЕР). Он функцию двунаправленного преобразо-вания формата данных, поступающих в составе пакета протокола в формат переменной, с которой работает конкретное Win-приложение . В настоящее время на практике наиболее часто используется четыре основных стандартизованных вида технологий обмена данными .

1) ActiveX компоненты . осуществляется двумя основными путями:

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

Б) специальных ActiveX Con-trol компонентов, DLL библиотек (для Win-приложений)

2) Технология DDE - технол. обмена данными между двумя Win-приложениями. В составе всех современных SCADA систем уже есть встроенные модули, формирующие получаемые от контроллеров переменные в «формате DDE». Эти модули часто называют DDE серверами и фактически они обеспечивают обмен данными между SCADA системой и разрабатываемым приложением. основные особенности DDE технологии: обмен осуществляется приемом/передачей трех строковых переменных: Service (имя приложения передатчика), Topic (имя файла хранятooщего передаваемые данные), Item (имя передаваемой переменной). для каждого приложения, поддерживающего эту технологию, предусмотрены заранее известные, зарезервированные и индивидуальные на-звания этих строк.

3) Технология OPC является первой серьезной попыткой стандартизации процессов обмена данными между ЛЮБЫМ УСТРОЙСТВОМ и ЛЮБЫМ Win-ПРИЛОЖЕНИЕМ ПРИ НЕОГРАНИЧЕННОМ ЧИСЛЕ И ТЕХ И ДРУГИХ. ОРС сервер контроллера – это драйвер, обеспечивающий стандартизованный двухсторонний обмен данными между контроллером и Win-приложением ПК в формате ОРС для конкретного транспортного протокола. Преимущества ОРС технологии: независимость ПО приложений-клиентов от контроллеров, отсутствие необходимости модификации ПО при замене контроллеров.

100 Охарактеризуйте встраиваемые системы, основные определения, классификация, характеристики, эволюция развития

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

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

Эволюция встраиваемых систем

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

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

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

4-ый этап. утсранили необходимость их низкоуровневого программирования

Выходом в данной ситуации явилось использование микропроцессоров фирмы Intel семейства х86, работающих под управлением MS-DOS, зашитой в микросхеме BIOS.

Такие контроллеры стали называться PC-совместимыми и в настоящее время являются вершиной развития ВС.

Классификация ВС

1. Системы автоматического управления (САУ);

2. Измерительные системы и системы сбора информации с датчиков(приборные)

3. Информационные системы “запрос-ответ” реального времени

4. Цифровые системы передачи данных (телекоммуникационные системы);

5. Сложные иерархические системы реального времени;

Кроме классификации по функциональному назначению возможно разделение ВсС по таким признакам, как:

• сложность системы (большие, средние, малые);

• топология системы (сосредоточенные, распределенные);

• особенность реализации реального масштаба времени (мягкое и жесткое реальное вРемя);

• конструкция (моноблочные, модульные, встроенные,);

• реализуемая для ВсС надежность, безопасность, информационная защищенность и т.д.

Характеристики встраиваемых систем.

Особую нишу на рынке встраиваемых систем занимают BC для жёстких ус­ловий эксплуатации.

1. Минимизация стоимости электронных компонентов ВС. 2. Размер

3. Потребление минимума энергии 4. Повышенная устойчивость к воздействиям внешней среды. 5. Модульность 6. Возможность эксплуатации в широком температурном диапазоне. 7. Устойчивость к электромагнитным по­мехам. 8. Надёжность, ремонтопригодность и среднее время безотказной работы. 9. Гибкость

101 Охарактеризуйте технологию разработки ПО для PC-совместимых контроллеров на примере утилиты чтения\записи данных.

Постановка задачи. Организовать прием (чтение/запись):

1. аналоговых данных,(напряжения, поступающего с термодатчика

2. дискретных данных, (кнопка без фиксации

3. запрограммировать работу индикаторов (светодиодов) микроконтроллера.

Осуществить запись этих значений в файл с именем, указанным пользователем и хранящемся во flash-памяти (эмулятор HDD) контроллера ADAM5510M.

Формат записи данных в файл следующий:

<номер_измерения> __ <измеренное_значение> где разделены символом «пробел».

Функции управления состоянием светодиодов.

void LED_init(void)-Инициализация void LED_OFF(int which_led) - выкл

void LED_ON(int which_led)- вкл

2. Get_BoardID( ).Определение идентификатора модуля ввода/вывода в указанном слоте

4. Init501718( )

Инициализация модуля ADAM5017 или ADAM5018

Синтаксис: void Init501718(int Slot)

6. AiUpdate(int Board, int *channel)) Проверка готовности результатов измерения входного сигнала.Результат работы можно будет считать когда модуль сообщит, что результат измерения готов к считыванию.

7. Get501718(int Board, int Channel, void *pValue ) Организация чтения данных

8. Get5050(int Board, int Bit, int Size, void *pValue) Чтение данных из модуля ввода/вывода

ПРОГРАММА

Организации cчитывания/хранения/записи данных для контроллера

/* Функция сохранения данных в файл имеет три параметравторой и 2 – для хранения строковых аналогов измеряемых значений, 3 имеет тип FILE и является указателем файла или потока */

void SaveValue(int type, int value_1, int value_2, FILE *fn)

{ /*строковые аналоги сохраняемых значений в соответствии с указанным выше форматом: str_value_1[10] – номер измерения; str_value_1[10] – принятое значение*/

char str_value_1[10];

char str_value_2[10];

/* символ «пробел»*/

char space[3]="\040";/* переводим номер измерения и измеренное значение в строковые значения с использованием функции itoa(), затем записываем их в файл согласно формату fputs() */

itoa(value_1, str_value_1, 10);

fputs(str_value_1, fn);

fputs("\n", fn);

};

Кусок кода

{ Init501718(_5017); /*инициализацию модуля 5017*/

Get501718(_5017,A_ch,&A_data);

SaveValue(sel,cnt,A_data,fn); /*Запись принятых значений (сохранение)в файл*/

}

102 Покажите алгоритм программирования COM-портов РС-совместимых контроллеров с использованием встроенных библиотек Advantech.

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

Порт СОМ1 поддерживает работу в режиме интерфейса RS232, а порт СОМ2 поддерживает работу в режиме интерфейса RS485.

СОМ4 – порт с переключаемыми интерфейсами RS232/485.

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

Алгоритм программирования COM-портов

  1. Выполнить инициализацию регистров.

  2. Определить для конкретного COM-порта параметры информационной посылки:

  3. Установить значение скорости передачи данных

  4. Организовать передачу данных. ПО работает с данными, представленными в параллельном коде, а передача информации через СОМ-порт осуществляется в последовательном коде. необходимо:

4.1. Записать байт данных в буфер передатчика.

4.2. Организовать передачу информации, находящиеся в буфере передатчика уже в виде последовательного кода. Реально передача данных на контакте TX произойдет тогда, когда будет инициировано прерывание на передачу.

  1. Организовать прием данных.

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

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

Функции Advantech для работы с COM-портами контроллера

1. Функция установки коммуникационного драйвера. com_install( )

2. Функции инициализации регистров com_485_install ()

3. Функции установки формата передаваемых данных (количество бит данных, наличие бита четности, количество стоповых бит. com_set_format( )

4. Функции устанавливают значения скорости передачи com_set_ speed( )

5. Функции получения очередного символа из буфера приема СОМ1(RS-232) com_ rx( )

6. Функции передачи данных. com_ tx( )

7. Функции передачи последовательности символов. com_ tx_string( )

8 com_flush_rx( ), Функции очистки буфера приема и буфера передачи СОМ1,

Фрагмент программного кода

{

status=com_install(1); /*выполняется инсталляция порта (установка КД) */

com_set_format(8,0,1); /*установка параметров информационной посылки */

com_set_speed(speed); /*установка скорости передачи данных*/

/* организация передачи данных через COM-порт(Tx(PLC) к Rx (ПК)) PLC -----PC */

com_tx_string(“ com232 test “);/* передача последовательности символов

ch=getch();/* чтение строки данных и размещение их в переменной ch

}

103 Опишите беспроводные технологии обмена данными для мобильных систем.

Мобильной системой, называется система в состав которой АРМ оператора АСУ входит в качестве компонента, не имеющего жесткозакрепленного местоположения. При изменении его местоположения все характеристики и назначение системы, как функциональной части технологического процесса, сохраняются.

Технология IrDA

Интерфейс IrDA (Infrared Data Association – Ассоциация по передаче данных в инфракрасном диапазоне) представляет собой передатчик в виде светодиода и приемник в виде фотодиода, работающих в инфракрасном диапазоне (от 850 до 880 нм).

Скорость передачи 9.6-112кбит/с . Число каналов 1. Дальность действия до 1 метра .

Достоиства 1)Низкое нергопотребление 2) отсутствие радиочастотных помех. 3) Безопасность передаваемых данных. 4) Полная совместимость между устройствами различных производителей.

Недостатки 1) работа по принципу точка – точка 2) радиу действия 1 м 3)отсутствие возможности построения ЛВС

Технология Wi-Fi

Wi-Fi (сокр. от англ. Wireless Fidelity – «Беспроводная надёжность») – стандарт беспроводной радиосвязи, который объединяет несколько протоколов IEEE 802.11

Расстояние до 305 м. Скорость 11-54 мбит/с. Число каналов 12. Рабочие частоты 2.4-2.4835, 5.725-5.825ГГц. Достоинства: !)высокая скорость и дальность передачи данных, 2)отсутствие кабельных соединений. 3) огибание препятствий. 4)Компактность устройств. 5) простота соединения с точкой доступа, наличие роуминга.

Недостатки 1) Высокая стоимость 2) возможность взлома стандартов шифрования. 3) Ограниченный частотный диапазон в различных странах мира, необходимость лицензирования некоторых частот.Перейти к: навигация, поиск

Технология Bluetooth

.Расстояние и скорость передачи данных 1.2-720 кбит/с на растояние до 100м. Число каналов 3. 3) рабочие частоты 2.4-24835 ГГц Достоинства : 1) отсутствие кабельных соединений. 2) Огибание препятствий. 3) Использует нелицензированную частоту. 4)Переносимость на любые платформы 5) низкая стоимость, энергопотребление, компактность. 6) безопасность передаваемых данных

Недостатки : Расстояние и скорость передачи меньше чем у WIFI

104 Разработать пользовательский класс с конструктором, на его примере доказать актуальность принципа ООП - отделение интерфейса класса от его реализации.

Решение

Предложена разработка класса Point, объект которого может однозначно определить положение точки на плоскости (система координат X,Y).

На рисунке показана структура проекта консольного приложения, разработанного в системе программирования Visual C++.

Далее приведен код заголовочного файла Point, содержащего описание класса (интерфейс) Point:

#ifndef Point_h

#define Point_h

class Point

{

int coord_x, coord_y;

public:

//в приведенных ниже прототипах допускается в качестве формальных //параметров указание только из типов без использования имен

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

Point(int, int);//прототип конструктора

//прототип методов доступа к закрытым полям класса

void Set_X_Y(int, int);

void Show_X_Y();

};

#endif

Далее приведен программный код файла DefClassPoint.cpp, содержащий определение (реализацию) методов класса:

#include "Point.h"

#include <iostream>

using namespace std;

//реализация конструктора

Point;;Point(int x, int y)

{

coord_x=x; coord_y=y;

}

//реализация метода Set_X_Y()

void Point::Set_X_Y(int forX, int forY)

{ coord_x=forX; coord_y=forY; }

//реализация метода Show_X_Y()

void Point::Show_X_Y()

{ cout<<"("<<coord_x<<","<<coord_y<<")\n"; }

#include "Point.h"

#include <iostream>

using namespace std;

void main()

{

104 продолжение

Point objectP(0,0); //в момент создания объект находится в центре системы //координат

cout<<"Koordinaty tochki: ";

objectP.Show_X_Y();//

//метод задает значение закрытых полей класса 10 и 15 соответственно

objectP.Set_X_Y(10,15);

cout<<"Koordinaty tochki: ";

objectP.Show_X_Y();//вывод на консоль (10,15)

}

Результат работы программы:

Koordinaty tochki: (0,0)

Koordinaty tochki: (10,15)

Суть отделения интерфейса класса: программисту не важно содержание файла DefClassPoint.cpp, в котором реализованы метода класса, по прототипу этих методов в файле Point можно узнать правила их использования. Таким образом, отделение файла объявления интерфейса класса (файл Point) от его файла его реализации (DefClassPoint.cpp) позволяет упростить интерфейс класса, избавив программиста от ненужных подробностей и предотвратив доступ к телу методов класса.

#include "Point.h"

#include <iostream>

using namespace std;

void main()

{

Point objectP(0,0); //в момент создания объект находится в центре системы //координат

cout<<"Koordinaty tochki: ";

objectP.Show_X_Y();//

//метод задает значение закрытых полей класса 10 и 15 соответственно

objectP.Set_X_Y(10,15);

cout<<"Koordinaty tochki: ";

objectP.Show_X_Y();//вывод на консоль (10,15)

}

Результат работы программы:

Koordinaty tochki: (0,0)

Koordinaty tochki: (10,15)

Суть отделения интерфейса класса: программисту не важно содержание файла DefClassPoint.cpp, в котором реализованы метода класса, по прототипу этих методов в файле Point можно узнать правила их использования. Таким образом, отделение файла объявления интерфейса класса (файл Point) от его файла его реализации (DefClassPoint.cpp) позволяет упростить интерфейс класса, избавив программиста от ненужных подробностей и предотвратив доступ к телу методов класса.

105 Разработать приложение, допускающее возможность управления с использованием динамически добавленных элементов управления c использованием метода Add

Пример 1. При загрузке формы в контейнер (объект класса Frame) динамически добавляется объект управления класса CommandButton.

Private Sub Form_Load()

Form1.Controls. Add "vb.CommandButton", _

"DinСmd1", Frame1

With Form1!DinСmd1

.Visible = True

.Width = 2000

.Height = 2000

.Top = 500

.Left = 500

.Caption = "Динамическая кнопка"

End With

End Sub

Надо заметить, что динамически добавленная кнопка пока «бесполезна», поскольку не оправдывает свое предназначения – элемента управления. С добавленной таким образом кнопкой невозможно связать событие, а следовательно, влиять на работу приложения, управлять им. Этот недостаток устраняется во втором примере.

Пример 2. Здесь с использованием ключевого слова WithEvents объявляется объектная переменная типа CommandButton. В результате приложение способно обрабатывать событие добавляемого элемента управления.

Option Explicit

'Объявляем объектную переменную типа CommandBut-

'ton (создаем объект класса CommandButton)

Private WithEvents DinCmd1 As CommandButton

'*************************************************************

Private Sub DinCmd1_Click()

MsgBox "Работает динамически добавленная кнопка", _

64, "Сообщение"

End Sub

'*************************************************************

Private Sub Form_Load()

'Ключевое слово Set используется для присвоения

'значения объектной переменной

Set DinCmd1 = Controls.Add("vb.CommandButton", _

"DinCmd1", Frame1)

With DinCmd1

.Visible = True

.Width = 1500

.Height = 1500

.Top = 700

.Left = 800

.Caption = " Динамическая кнопка "

End With

End Sub

Результатом работы этого программного кода, кроме динамического добавления кнопки, будет и использование ее в качестве полноценного элемента управления – «клик» по кнопке генерирует появление окна сообщения.

106 Разработать ПО для контроллера ADAM 5510M, реализующее функцию чтения\записи данных от внешних устройств.

#include <stdlib.h>

void InitBoard( ); /* Прототип функции управления состоянием светодиодов.

/*прототип функции сохранения данных в файл;

void SaveValue(int value_1, int value_2, FILE *fn);

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

void InitBoard()

{LED_init( );

LED_OFF(PWR);

LED_OFF(RUN);

LED_OFF(COMM);}

/* Реализация функции SaveValue()*/

/* Функция сохранения данных в файл имеет три параметра: второй и третий – для хранения строковых аналогов измеряемых значений, четвертый имеет тип FILE и является указателем файла или потока */

void SaveValue(int type, int value_1, int value_2, FILE *fn)

{ /*строковые аналоги сохраняемых значений в соответствии с указанным выше форматом: str_value_1[10] – номер измерения; str_value_1[10] – принятое значение*/

char str_value_1[10];

char str_value_2[10];

/* символ «пробел»*/

char space[3]="\040";

/* переводим номер измерения и измеренное значение в строковые значения с использованием функции itoa(), затем записываем их в файл согласно формату fputs() */

itoa(value_1, str_value_1, 10);

fputs(str_value_1, fn);

fputs(space, fn);

itoa(value_2, str_value_2, 10);

fputs(str_value_2, fn);

fputs("\n", fn);

};

void main()

{ Init501718(_5017); /*инициализацию модуля 5017*/

/*Организация приема данных 1 раз в сек, время выполнения 1 цикла равно 1 секунде*/

while (cnt<60)

{

LED_ON(RUN)

Timer_Reset(tidx);

while (tmArriveCnt [tidx] == 0) /*прошла сек. Выполнить:

{

while (AiUpdate(_5017, &A_ch)!=0); /*проверку готовности данных измерения до тех пор пока AiUpdate() не возвратит нуль - данные готовы */

/*Организация проверки канала источника данных (данные считываются только с 0-го канала) и чтения данных с использованием библиотечной функции контроллера Get501718()*/

f (A_ch==0)

Get501718(_5017,A_ch,&A_data);} /*конец цикла while (tmArriveCnt [tidx] == 0) cnt++;/*увеличение счетчика количества измерений*/

SaveValue(sel,cnt,D_data,fn); /*Запись принятых значений (сохранение)в файл*/

} /*конец цикла while (cnt<60) */

107 продолжение

/* PC ---PLC*/

/* прием данных с управляющего ПК переданных через COM-порт контроллера (Rx) */

printf(“\n\n Please transfer data from server or <ESC> to exit\n”);

while(1)

{

/* получение статуса приемника*/

if(com_rx_empty()==0) /* очередь занята, до тех пор, пока не будет передан последний из находящихся в буфере приемника контроллера байт*/

{

/* получение и вывод символа на консоль */

data=com_rx();/* чтение очередного символа из буфера кнтроллера для COM1*/

printf (“\n %c”,data);

}

if(kbhit())

{

ch=getch();

if(ch==0x1b) { break; }

}

}

break;

107 Разработать ПО ADAM 5510M для передачи данных с одного из его COM-портов на управляющий компьютер

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

Порт СОМ1 поддерживает работу в режиме интерфейса RS232, а порт СОМ2 под-держивает работу в режиме интерфейса RS485.

СОМ4 – порт с переключаемыми интерфейсами RS232/485.

Порт СОМ3 предназначен для осуществления загрузки в микроконтроллер управляющих программ. Кроме того, он может быть использован и как коммуникацион-ный порт общего назначения с интерфейсом RS232.

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

/*выбран порт COM1 (RS-232) */

/*выполняется инсталляция порта (установка КД) */

status=com_install(1);

if(status==0) /*успешное завершение установки*/

printf (“\n The allocation of com%d port is ok\n “,com);

else

if (status==1)

{

/*драйвер уже установлен установки*/

Printf (“\ncom%d port is already installed\n “,com);

}

else

{

/*дрйвер не установлен*/

printf(“\n The allocation of com%d port is not ok

\n “,com);

printf(“status=%d\n”,status);

exit(0);

}

/*установка параметров информационной посылки */

com_set_format(8,0,1);

/*установка скорости передачи данных*/

com_set_speed(speed);

/* PLC ---PC*/

/* организация передачи данных через COM-порт(Tx(PLC) к Rx (ПК)) PLC -----PC */

printf(“Stop trasnfer data <ESC>”); /* остановка передачи данных*/

for(i=0;i<1000;i++) /*вложенный цикл как искусственный прием организации непрерывной (в течение сравнительно длительного периода времени) передачи данных*/

{

for(j=0;j<1000;j++)

{

/* передача последовательности символов

“ com232 test “*/

com_tx_string(“ com232 test “);

/* ввод данных с клавиатуры происходит до тех пор, пока не будет нажата клавиша Esc (ее 16-ричный код 0x1b)*/

if (kbhit ( ))

{

ch=getch();/* чтение строки данных и размещение их в переменной ch без отображения на мониторе*/

if(ch==0x1b) { i=1000;j=1000 ;}

}

}

}

/* PC ---PLC*/

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]