Федеральное агентство морского и речного транспорта
Федеральное бюджетное образовательное учреждение
высшего профессионального образования
Волжская государственная академия водного транспорта
Кафедра информатики, систем управления
и телекоммуникаций
, ,
Автоматизация Технологических комплексов
Часть 2
Учебно-методическое пособие для выполнения лабораторных, курсовых, контрольных работ.
Нижний Новгород
Издательство ФГОУ ВПО «ВГАВТ»
2012
УДК 681.5
Поселенов, Е. Н.
Автоматизация технологических комплексов. Часть 2/ , , – Н. Новгород: Изд-во ФГОУ ВПО «ВГАВТ», 2012. – 37 с.
В пособие рассматриваются вопросы применения ЭВМ при автоматизации управления техническими и технологическими процессами. Рассмотрены различного типа прикладные задачи и способы их решения, которые излагаются в курсах лекций «Автоматизация технологических комплексов», «ЭВМ в системах автоматики».
Пособие предназначено для студентов дневного и заочного обучения специальностей 180404 «Эксплуатация судового электрооборудования и средств автоматики».
Рекомендовано к изданию кафедрой информатики, систем управления и телекоммуникаций ( , протокол ).
Ó ФГОУ ВПО «ВГАВТ», 2012
Введение
Интенсивное развитие вычислительной техники значительно расширило области применения электронных вычислительных машин. Если первые ЭВМ проектировались с целью автоматизации процесса математических вычислений, то на современном этапе их широко используют при автоматизации управления техническими и технологическими процессами.
В настоящее время практически все системы автоматического управления используют электронные вычислительные машины.
для различных целей: сбора, обработки, анализа и выдачи информации, для принятия решения об управляющем воздействии.
Задача автоматизации процессов разбивается на следующие этапы:
1. разработка технологической карты процесса (или временных диаграмм);
2. выбор оборудования;
3. выбор способа передачи информации между блоками системы;
4. разработка управляющих программ;
5. анализ качества работы системы.
На системы управления накладываются требования:
1. надежность;
2. экономичность;
3. высокие значения показателей качества работы системы.
Структура систем может быть:
1. последовательной – когда i-тая процедура начинается после выполнения i-1-ой процедуры;
2. параллельной – когда в одно и тоже время может выполняться несколько процедур;
3. последовательно-параллельной – когда на разных участках технического процесса комбинируются и последовательные и параллельные схемы;
4. иерархической – многоуровневые системы автоматического управления (судовая локальная сеть, реализующая информационно-управляющую систему).
Пример параллельно-последовательного исполнения процедур приведен на рис. 1.
|
Рис. 1. Параллельно-последовательное исполнение процедур |
Пример иерархической структуры автоматизированного комплекса приведен на рис. 2.
|
Рис. 2. Иерархическая структура системы |
При проектировании систем управления, использующих вычислительную технику, решаются следующие задачи: выбор датчиков для сбора информации о состоянии управляемого объекта (достаточно сложная проблема); выбор способа ввода/вывода информации в/из ЭВМ (выбор порта ввода/вывода определяется датчиком); подготовка сигнала с датчиков для ввода/вывода через выбранный порт (проектирование УСО - устройства сопряжения «датчики => порт» / «порт => исполнительное устройство»); составление алгоритма управления процессом, протекающим в объекте. Если процедура ввода и вывода информации в ЭВМ практически разработана и не представляет особых трудностей, то разработка управляющих программ, которые вырабатывают воздействие на исполнительные устройства, процесс достаточно сложный и трудоемкий.
В методическом пособии рассматривается интерфейс (посредник) между аппаратурой (hardware), прикладным программным обеспечением (application software) и пользователем компьютера (user), в частности:
1. устройство аналогового, параллельного портов ввода/вывода информации;
2. программное обеспечение работы портов: тестирование портов, прием и выдача информации через порт;
3. разработка информационных и управляющих программ для конкретных задач.
На рис. 3, 4 даны блок-схемы судовой информационно-управляющей сети.
|
Рис. 3. Схема судовой информационно-управляющей сети |
|
Рис. 4. Блок-схема системы управления первого уровня |
Упрощенная блок-схема управляющей программы дана на рис. 5.
|
Рис. 5. Блок-схема системы управляющей программы |
1. Лабораторная работа №1
Информационные системы. Разработка алгоритма обнаружения неисправностей в трубопроводе
Рассматривается система контроля передачи жидкого или газообразного вещества по трубопроводу, рис. 6.
|
Рис. 6. Функциональная схема системы контроля |
1 – трубопровод, 2 – насосные станции, 3 – датчики давления (Д1, Д2, …), 4 – управляющие (или информационные) ЭВМ, одна расположена вблизи места сбора информации, другая в диспетчерском пункте. Задача ЭВМ – собирать, обрабатывать и выдавать на экран информацию, как цифровую, так и графическую, о протекании процесса на всех участках контролируемой трассы и предавать её на дальнее расстояние.
Рассмотрим одну из проблем, возникающих на трубопроводе – прорыв трубы при возрастании давления после включения подкачивающего насоса. От того, как быстро диспетчер определит аварию на трубопроводе, зависит величина материальных потерь и уровень загрязнения среды в окрестностях прорыва. С другой стороны, ложная тревога также влечет за собой материальные затраты – ошибочный вызов техник, ремонтных бригад, … Задача программиста – составить алгоритм, с помощью которого можно быстро и с высокой степенью достоверности определить наличие аварии.
После включения насоса в момент t0 начинает подниматься давление в трубопроводе. На рис. 7, 8 показаны возможные виды переходных процессов, протекающих без аварии (рис. 7) и подчиняющихся закону (1), и с аварийными ситуациями (рис. 8).
| (1) |
|
Рис. 7. Динамика развития процесса без внештатных ситуаций |
|
Рис. 8. Возможные варианты развития ситуаций |
На рис.7, 8 и формуле (1):
Δt – интервал времени между опросами датчиков давления; Pt – ожидаемое (теоретическое); Рr – реальное, истинное значение давления в трубопроводе; t0 – момент включения насоса; t1 – момент начала изменения давления, зафиксированный первым датчиком; tj – момент изменения давления, зафиксированный j-ым датчиком; τ* – момент аварии; ti – текущий момент опроса датчиков; Pj(ti) – значение давления, зафиксированное j-ым датчиком в момент ti; Рj* – установившееся значение давления в j-ой точке рассматриваемого участка трубопровода; Т – постоянная времени, характеризующая инерцию (скорость) развития переходного процесса; τ1=t1-t0 – время задержки в развитии процесса в первой точке; τj – задержка в развитии процесса в j-ой точке.
Рассмотрим упрощенную ситуацию, когда используется информация только с одного датчика давления, расположенного посередине между насосными станциями. Допустим, что в момент t* произошел прорыв трубы. В этом случае вид переходного процесса (после момента аварии) начинает меняться. С точки зрения распознавания процесса возможны различные ситуации: от простейших – рис. 8, а, до сложных – рис. 8, б.
График зависимости Рr(t) выводится на экран диспетчеру*. Обычно диспетчер определяет аварию в конце переходного процесса, когда устанавливается давление ниже ожидаемого. Это происходит с опозданием и приводит к большим материальным потерям.
В работе предлагается автоматизировать процесс анализа нарастания давления, т. е. составить алгоритм, в результате работы которого на экран ЭВМ выходила бы информация об изменениях в процессе, например, «режим протекает нормально», «Вероятность аварии … %» или «в момент t =… произошла авария в районе датчика …”. Если считать, что процесс повышения давления подчиняется экспоненциальному закону, то можно оценить ожидаемые потери.
В данной работе нет процедуры опроса датчиков состояния (выхода в порт). Процесс получения конкретных значений давления осуществляется путем выбора чисел из открытого на жестком диске числового файла.
Задания на выполнение лабораторной работы
Задание 1.
Зарисовать приблизительный вид будущего процесса нарастания давления в трубопроводе. Открыть на жестком диске файлы (запись процедуры дана в приложении), в которые занести численные значения величин Pj(t), согласно нарисованным графикам. Значения давления расставить произвольно. Количество точек в массивах (для каждого датчика свой массив) должно быть не меньше 15.
Задание 2.
Разработать алгоритм анализа протекания процесса и передачи информации на верхний уровень.
Задание 3.
Промоделировать процесс контроля за состоянием датчиков системы.
Отчет должен содержать блок-схему и листинг протестированной на ЭВМ программы.
Таблица 1. Варианты заданий к лабораторной работе №1.
Параметры Номер варианта | Количество датчиков | Авария до или после n-го датчика. Тип аварии |
1 | 2 | Утечка 1-го типа (рис. 8а) до 1-го датчика |
2 | 3 | Утечка 1-го типа после 1-го датчика |
3 | 2 | Утечка 1-го типа после 2-го датчика |
4 | 3 | Утечка 1-го типа после 3-го датчика |
5 | 2 | Утечка 2-го типа (рис. 8б) до 1-го датчика |
6 | 3 | Утечка 2-го типа после 1-го датчика |
7 | 2 | Утечка 2-го типа после 2-го датчика |
8 | 3 | Утечка 2-го типа после 3-го датчика |
9 | 2 | Сбой в работе 3-го датчика (рис. 8) |
10 | 3 | Сбой 2-го датчика |
11 | 2 | Сбой 1-го датчика |
12 | 3 | Сбой 1-го и 2-го датчика |
13* | n | Развитие процесса по типу, представленному на рис. 7 без сбоя датчиков |
14* | n | Развитие процесса по типу, представленному на рис. 7, сбой при получении информации с датчиков |
15* | n | Развитие процесса по типу, представленному на рис. 7, отказ одного из датчиков. |
16* | n | Развитие процесса по типу, представленному на рис. 8б, к концу работы отказ всех датчиков. |
На рис. 9 представлен пример блок-схемы программы сбора, обработки и выдачи информации о протекании технологического процесса.
|
Рис. 9. Блок-схема системы управляющей программы |
2. Лабораторная работа №2
ЭВМ для управления технологической линией
Современный уровень вычислительной техники (высокое быстродействие, достаточная память, разнообразные порты для ввода и вывода сигналов) позволяет использовать машины для управления сложными технологическими процессами. Качество работы линии (быстродействие, точность позиционирования) зависит как от типа и характеристик элементов, входящих в систему, так и от программного обеспечения работы системы. На рис. 10, 11 представлены схема соединения объектов линии с ЭВМ и принципиальная схема технологического процесса.
|
Рис. 10. Схема соединения ЭВМ с объектами управления |
|
Рис. 11. Функциональная схема системы управления |
Задача системы управления: перенести деталь, расположенную из платформе П из одной точки пространства в другую. Заданное (исходное) положение детали – нулевое.
Двигатели 1, 2, 4, 5 и электромагнит 3 являются для ЭВМ объектами управления ОУ1, ОУ2 и т. д.
Объекты управления (ОУ) имеют датчики обратной связи (ДОС) или непрерывного типа (сельсины), когда выходной сигнал с датчика пропорционален измеряемой величине (углу поворота вала двигателя) или дискретного типа (контакторы), когда выходной сигнал принимает значение 0, если угол не отработан, или 1 при отработанном угле. Иногда линия не снабжена датчиками состояния объектов управления, то есть ЭВМ работает только на выдачу управляющего сигнала, входные каналы на ввод информации от датчиков отсутствуют. В этом случае управление каждым объект происходит строго по времени.
Принцип работы:
Двигатель Д1 (ОУ1) по сигналу управления с ЭВМ (U1=1, напряжение на 1-ой выходной линии повышается) поворачивает платформу до тех пор, пока очередная деталь не встанет в положение 0. Информация о наступлении этой ситуации поступает либо от датчика – уровень напряжения на 1-ой входной линии изменяется, либо от таймера, когда процесс жестко лимитируется во времени – на процедуру поворота отводится определенное количество секунд. После наступления необходимой ситуации ЭВМ снимает сигнал с линии управления ОУ1 (U1=0) и подаёт управляющий сигнал на второй объект – двигатель Д2 (U2= –1). Двигатель запускается. Червячная передача, преобразует угол поворота вала двигателя в линейное перемещение (φ2 => L2), электромагнит (ОУЗ) опускается на величину L2. После отработки двигателем Д2 величины φ2 (или опускание электромагнита на расстояние L2 ) ЭВМ снимает сигнал управления с двигателя (U2 = 0) и подает напряжение на линию 3 – на электромагнит (U3 = 1). Захват срабатывает, и через промежуток времени τ3 (время для прочного срабатывания зажима) двигатель Д2 (ОУ2) получает сигнал на подъём детали (U2 = +1). После подъема детали на высоту L ЭВМ останавливает Д2 и запускает двигатель Д4 (ОУ4) для поворота его на угол φ4. Блок (деталь, электромагнит, Д2) перемещается в новую точку пространства, где деталь опускается на транспортер, после чего пустой захват поднимается вверх. Далее запускают двигатели Д4, Д5, Д1. Д4 – возвращает зажим в первоначальное положение, Д5 – продвигает деталь на расстояние L5, освобождая место для новой детали, После чего цикл повторяется заново – Д1 подводит следующую деталь в 0 положение, Д2 опускает пустой зажим,….
Таким образом, в данном технологическом процессе ЭВМ в определенные моменты выставляет сигналы на выходные линии, а в промежутках между этим процессом опрашивает входные линии и таймер, для того чтобы не пропустить момент изменения сигнала на выходных линиях (момент останова одного двигателя и запуск другого).
Останов любого из двигателей может происходить по одному из трех признаков:
1. На валу двигателя поставлен датчик обратной связи (ДОС) непрерывного типа (сельсин), который вырабатывает напряжение, пропорциональное углу поворота вала Uoc = к·φ. ЭВМ периодически опрашивает ДОС, и при отработке двигателем заданной величины (φ=φ*) ЭВМ подает сигнал останова U = 0.
2. Останов двигателя происходит по сигналу с контактора: при повороте вала двигателя на заданный угол (φ*) срабатывает контактор, замыкающий электрическую цепь. В этом случае в ЭВМ с ДОС поступает сигнал 0 (контактор разомкнут), или 1 (контактор замкнут).
3. Останов объекта управления (сброс на ноль сигнала управления на выходной линии ЭВМ) происходит по истечению заданного интервала времени. При запуске объекта начинается опрос таймера и при увеличении показания таймера от начального значения на заданную величину τ ЭВМ подает сигнал останов двигателя – напряжение на соответствующей выходной линии сбрасывается на ноль.
Задания на выполнение лабораторной работы
Задание 1.
Представить осциллограммы работы всех объектов управления от начала поворота платформы с деталями на угол φ1 до возврата зажимов в исходное положение.
Исходное положение объектов управления:
Платформа с деталями неподвижна, деталь расположена на расстоянии φ1 от нулевого положения; зажим поднят; напряжение с электромагнита снято (U3 = 0); ОУ4 (двигатель 4), в положении φ4 = 0, напряжение снято (U4 = 0); транспортёр стоит (U5=0) в положении, когда деталь, поставленная в предыдущем такте, продвинута на расстояние L5.
Задание 2.
Составить блок-схему алгоритма управления технологическим процессом. Согласно варианту заданий некоторые объекты имеют дискретные датчики, некоторые работают по таймеру, аналоговых датчиков нет.
Задание 3.
Составить и отладить Basic-программу. Опрос входных линий моделировать опросом клавиатуры. При запросе «ввести переменную» вводить «0» или «1» в зависимости от того, сработал или нет опрашиваемый датчик.
Таблица 2. Варианты заданий к лабораторной работе №2.
Номер варианта | Количество дискретных входов – линий (датчиков) | Одновременно работающие двигатели |
1 | L1, L2, L4, L5 | D1, D2 (вниз) |
2 | L1, L2, L4 | D1, D5 |
3 | L1, L2, L5 | D2 (вверх), D4 |
4 | L1, L4, L5 | D4 (движение с деталью), D5 |
5* | L2, L4, L5 | D2 (вверх), D4, D5 |
6* | L1, L2 | D4, D2 (вниз), D5 |
7 | L1, L4 | D1, D2 |
8 | L1, L5 | D1, D5 |
9 | L2, L4 | D2, D5 |
10 | L2, L5 | D2(вверх), D4 |
11 | L4, L5 | D4 (движение с деталью), D5 |
12* | L1 | D2 (вверх), D4, D5 |
13* | L2 | D4, D2 (вниз), D5 |
14 | L4 | D1, D2 |
15 | L5 | D1, D5 |
16 | 0 | D2, D5 |
17 | 0 | 0 |
18 | L1, L2, L4, L5 | 0 |
Отчет должен содержать:
4. Временные осциллограммы работы линии.
5. Блок-схему программы.
6. Листинг программы.
3. Лабораторная работа №3
Использование дискретного
параллельного порта для автоматизации процесса контроля за техническими объектами
Целью работы является изучение принципа работы дискретного параллельного порта, его аппаратной реализации и программного обеспечения.
Порт предназначен для ввода/вывода цифровых сигналов уровня 0 или 5В на ТТЛ - линии. Сигналы на линии держат микросхемы, основанные на транзисторно-транзисторной логике (ТТЛ, TTL) — разновидности цифровых логических микросхем. Название транзисторно-транзисторный возникло из-за того, что транзисторы используются как для выполнения логических функций (например, И, ИЛИ) от входных сигналов, так и для усиления выходного сигнала (в отличие от резисторно-транзисторной и диодно-транзисторной логики). ТТЛ получила широкое распространение в компьютерах, электронных музыкальных инструментах, а также в контрольно-измерительной аппаратуре и автоматике. Благодаря широкому распространению ТТ-логике входные и выходные цепи электронного оборудования часто выполняются совместимыми по электрическим характеристикам с ТТЛ. Максимальное напряжение в схемах с ТТЛ может достигать 24В, однако это приводит к большому уровню паразитного сигнала. Достаточно малый уровень паразитного сигнала при сохранении достаточной эффективности достигается при напряжении 5В, поэтому данная цифра и вошла в технический регламент ТТЛ.
Плата используемого в работе цифрового параллельного порта L032 упрощенна и включает только цифровой дискретный порт. Порт принимает сигналы от 16-ти (максимальное количество входных линий для данной платы) дискретных датчиков – уровень сигнала на линии 0В÷5В. Дискретные датчики уровня, температуры, давления, задымленности, уровня какого-либо вещества в окружающей среде (утечки газа)... переключают напряжения на линиях с 0В до 5В в момент превышения контролируемой величины своего допустимого значения.
Кроме принимающих входных линий порт имеет 16 выходных линий, на которые по командам управляющей программы процессор может выставить сигналы уровня 0В или 5В, предназначенные для управления приводами, сигнализацией,... .
3.1. Описание команд обращения к регистрам порта. Чтение цифровых линий
Ввод (чтение) информации с входных линий и вывод (запись) на выходные линии осуществляется через два 8-разрядных регистра данных с адресами 300h и 301h.
Существуют схемы дискретного порта, где регистры мультиплексированы, то есть для записи (вывода управляющего сигнала на исполнительные устройства) и чтения (ввода информации от датчиков) используются одни и те же регистры, то устройство управления потоком информации на плате порта осуществляет переключение регистров на чтение или запись.
На внешнем разъёме платы имеются 16 цифровых входных линий, состояние которых может быть прочитано по указанным адресам.
|
Рис. 12. Входные линии порта |
Данные с датчиков D1-D8 соответствуют состояниям первых восьми входных ТТЛ линий (L1–L8). Информация с внешнего разъёма поступает в регистр 300h. Данные с датчиков D9-D16 через вторые восемь ( L9–L16) линий поступают в регистр 301h.
Нет необходимости сшивать эти коды, так как каждый бит регистров связан с конкретным датчиком. При каждом чтении цифровых линий генерируется цифровой строб на линии "Строб чтения цифрового порта" на внешнем разъёме платы. Этот строб заставляет управляющее устройство платы сбрасывать старую информацию в регистрах и записывать новую.
Команда для считывания информации с регистра и записи этого кода в ячейку ОЗУ, где она будет храниться под именем переменной, например, " kod", записывается следующим образом:
kod=INP(&HXXX)
rem ХХХ - адрес опрашиваемых линий, ХХХ = 300, если опрашиваются линии 1–8. ХХХ = 301, если опрашиваются линии 9 – 16.
При вводе информации с цифровых линий возникает необходимость определения состояния конкретных разрядов регистров, к которым подключены датчики.
Для определения состояния k-го разряда или k+1-го бита (например, k =3, т. е. 0000?000) необходимо наложить на полученный KOD маску: МASKA=2k (в данном случае МASKA=8). Для этого выполним команду
rezult = MASKA AND KOD
Например. Нас интересует ситуация, когда ОДНОВРЕМЕННО сработали 2 датчика, подсоединенных к линиям 2 и 5 (n и m). После опроса регистра 300h на полученный код накладываем маску 18, так как 1810=000100= 2n-1 +2m-1).
Если результат опроса равен 18, то интересующие нас датчики выставили на линию 1, в противном случае либо один из датчиков, либо оба находятся в нулевом состоянии.
МASKA = ,
KОД = ,
результат побитового умножения двух переменных
МASKA и KОД дает
result = =1810
Таким образом, процедура определения состояния датчика, например, подсоединенного к K-той линии реализуется следующими двумя командами:
1) Опрос регистра с адресом ХХХ
A = INP(&HXXX) (3)
A - имя переменной (ячейки ОЗУ), куда заносится результат опроса.
2) Наложение маски на k-1 разряд (k-й бит) полученного результата – процедура <AND> – побитное умножение.
Примечание. Не путать! К-я линия ® К бит ® К-1 разряд, т. е. сигналы с линий 1,2,3, …, записываются в разряды 0,1,2,… .
В =2 k-1 AND A (4)
B - результат наложение маски на k-1 разряд.
Если результат В=0, следовательно, k-1 разряд в регистре равен нулю и k-ый датчик не подавал сигнал, если В=2k-1, то в соответствующем разряде записана 1.
IF В=0 then Dk=0 ELSE Dk=1
Пример1. Нас интересует состояние двух датчиков, соединенных с линиями 9 и 10 (линии связаны с регистром 301h) . Для этого необходимо определить состояние первых двух битов регистра 301h.. Для этого выполним следующие команды:
a = INP(&H301)
Опрашиваем регистр с адресом 301h, в котором выделим первые два бита с помощью маски *21 + 1*20=3, 310= ).
b = a AND 3. Накладываем маску <3> на данные,
считанные из регистра.
По величине полученного числа b определяем состояние первых двух битов регистра 301: если b10 =0, то первые два бита - 002, если b10=1, то в опрошенном регистре состояние первых двух битов 012, если b10=2, то состояние битов 102 и если b10 =3, то в регистре имеем 112 ).
Пример 2. Нас интересует состояние двух датчиков, которые подсоединены к 1 и 9 линиям, т. е. к нулевым разрядам регистров 300h и 301h. В этом случае решается задача выделения нужной информации из кодов KOD1 и KOD2, полученных после опроса двух регистров 300h и 301h. Эта процедура выполняется наложением одной и той же маски на интересующие нас разряды. В данном примере маска: 000000= 20).
KOD1 = INP(&H300)
KOD2 = INP(&H301)
В1 =2 0 AND KOD1
В2 =2 0 AND KOD2
По значениям чисел В1 и В2 определяем состояние датчиков.
3.2. Установка цифровых ТТЛ линий
На внешнем разъёме платы имеются 16 цифровых ТТЛ выходов (рис. 13), состояние которых может быть изменено записью двоичной информации (0/1) в любые разряды регистров 300h или 301h. На выходных проводах порта держится напряжение 0В, если в соответствующем бите регистра записан 0 или 5В, если записана 1. Команда записи кода N в выходные регистры записывается следующим образом
|
Рис. 13. Выходные линии порта |
OUT &H300, N N – код, выставляемый на линии с 1 по 8, десятичное число, не превышающее 25510 =
OUT &H301, M M– код, выставляемый на линии
9 – 16, десятичное число, не превышающее 25510
При выводе сложного кода на линию (для запуска нескольких исполнительных устройств или сигнализации) возникает задача ″сшивания числа″.
Пример 1. Необходимо запустить три исполнительных устройства, подсоединенных к линиям 1,3,10.
Для этого в регистр 300h запишем KOD1=, а в регистр301h – KOD2=и выполним команду вывода информации из ЭВМ во внешнее устройство:
OUT &H300, 5
OUT &H301, 2
или
KOD1=5
KOD2=2
OUT &H300, KOD1
OUT &H301, KOD2
После этой процедуры на 13-ти выходных линиях будем иметь 0В и на 3-х (1, 3 и 10-ой) – 5В Такое состояние линий продлится до тех пор, пока программным путем в выходные регистры не будут записаны другие коды.
Пример 2. Задача усложняется, если после очередного опроса появилась необходимо запустить дополнительно исполнительное устройство, подсоединенное, например, к линии 2. Предыдущее состояние линии (пример выше) не должно измениться. Код, который на предыдущем цикле был выставлен на линии 1–8 находится в переменной " KOD1".
Изменение состояния второй линии – ХХХХХХ1Х (без изменения состояния других линий) осуществляется следующей процедурой
А=(KOD1) and (2)
OUT &H300, А
После этой процедуры 16-ть выходных линиях будут находится в состоянии 00000Такое состояние линий продлится до тех пор, пока программным путем в выходные регистры не будут записаны другие коды.
4.2. Задания на выполнение лабораторной работы
Во всех вариантах
1) частота мигания лампочек 5 раз за время опроса.
2) опрос линий проводится каждые 20-30 секунд.
3) считается, что ситуация улучшается, если количество сработанных датчиков на текущем опросе меньше, чем на предыдущем.
4) считается, что Л15 и Л16 находятся на удаленных постах контроля.
Как правило, для работы с портами требуется знание текущего времени или возможность в течении заданного промежутка времени держать выходную линию порта под напряжением.
Определение текущего значения времени осуществляется следующей кмандой
Ttek_sec = TIMER
Этой командой в переменную Ttek копируется число, равное количеству секунд, прошедших от начала отсчета – полночи/
Для выделения часов, выполним команду целочисленного деления (с отбрасыванием дробной части)
Ttek_hour = int(TIMER/3600)
Расчет остатка от деления (для дальнейшего определения минут и секунд)
y = mod (TIMER/3600)
Минимальное изменение времени, которое фиксируется в ТАЙМЕРЕ 0,05 сек. Если требуется задать время, в течение которого линия должна находится под напряжением, много меньше, чем 0,05сек, то это можно сделать следующим образом.
1. Определяем состояние таймера
t0 = TIMER
2. Заказываем в цикле какую-либо процедуру и выполняем её n раз.
n=1000
for i=1 to n
y=sin(0.1)
next i
3. Определяем время окончания цикла по таймеру.
tk=TIMER
4. Рассчитываем время одной процедуры.
dt=(tk-to)/10000
PRINT "время выполнения функции 1 раз равно ";
dt
После этого можно вычислить, сколько раз нужно выполнить цикл для получения нужной задержки.
3.3. Задания на выполнение лабораторной работы
1. Опрашиваются 4 дискретных датчика (с D6 по D9). Если сработал хотя бы 1 из них, то зажигается соответствующая лампочка (Л6-Л9). Если сработали 3 или более датчиков, то зажигаются соответствующие лампочки, и начинает мигать Л16. Если следующий опрос показывает, что ситуация с датчиками не улучшилась, то Л16 горит постоянно. При улучшении ситуации Л16 гаснет.
2. Опрашиваются 4 дискретных датчика (1,2,8,9). Если сработал один любой датчик, то соответствующая лампочка начинают мигать. Если сработали более 2-х датчиков, то мигают не только соответствующие лампочки, но и Л16. Если ситуация ухудшается, то Л16 горит постоянно. При улучшении ситуации Л16 мигает. Гаснет Л16, если сигнал держат не более 2-х датчиков.
3. Опрашиваются 3 дискретных датчика (3, 7, 13). Если сработал любой из датчиков, то соответствующая лампочка начинает мигать. Если ситуация по сработанным линиям не улучшится к следующему опросу, то соответствующие лампочки мигают в 2 раза чаще., если ситуация на линии не улучшается в последующих опросах, то лампочки горят постоянно.
4. Опрашиваются 3 датчика D7 - D9. Если сработал один или два датчика, то зажигается соответствующая лампочка L1 – L3. Если сработали 3 датчика, то зажигаются не только соответствующие лампочки, но начинает мигать Л4. Если ситуация с датчиками не улучшится к следующему опросу, то Л4 горит постоянно. При улучшении ситуации Л4 гаснет в том случае, если только один датчик держит сигнал.
5. Опрашиваются 4 дискретных датчика (D1–D4). Если сработал хотя бы 1 датчик, то начинает мигать соответствующая лампочка. Если ситуация не улучшится к следующему опросу, то начинает мигать Л15. Если ситуация не улучшится и в следующий опрос, то лампочки горят постоянно. При улучшении ситуации Л15 гаснет сразу.
6. Контролируется состояние 4 датчиков (D1-D4). Если сработал хотя бы 1 датчик, то загорается соответствующая лампочка. Если сработали более чем 2 датчика, то загораются Л15 и Л16. Если ситуация не улучшится к следующему опросу, то все лампочки начинают мигать. При улучшении ситуации Л15 гаснет в том случае, если не более 2-х датчиков держат сигнал, Л16 гаснет в том случае, если только один датчика держит сигнал.
7. Контролируется состояние 4 датчиков (2-5). Соответствующие сработанным датчикам лампочки начинают мигать только в том случае, если сработало более чем 2 датчика. Если ситуация не улучшится, к следующему опросу то лампочки должны гореть постоянно. Л16 загорается, если среди сработанных датчиков есть D3. Л16 гаснет, если среди сработанных датчиков нет датчика линии 3.
8. Опрашиваются 3 датчика (1,10,15). Если сработали 2 любых датчика, то мигают соответствующие им лампочки – Л1, Л2, Л3. Если сработали все датчики, то начинает мигать Л15. При улучшении ситуации, соответствующая лампочка гаснет, а через 5 секунд гаснет Л15.
9. Опрашиваются 8 датчиков (с9 по 16). При срабатывании любого из датчиков зажигаются соответствующие лампочки – Л1-Л8. Если ситуация с датчиками не улучшится к следующему опросу линий, то дополнительно загорается и горит постоянно Л16. При улучшении ситуации, соответствующие лампочки продолжают мигать в течение 10 сек, после чего гаснут и гаснет Л16.
10. Контролируется состояние 5 датчиков (1-5). Соответствующие сработанным датчикам лампочки начинают гореть только в том случае, если сработало более чем 3 датчика. Если ситуация не улучшится к следующему опросу, загорается Л16. Л16 гаснет, если ситуация остается критической менее, чем по 3 датчикам.
11. Опрашиваются 4 дискретных датчика (D1, D2, D8, D9). Если сработал любой датчик, то загорается соответствующие ему лампочка (Л3, Л4, Л8, Л9). Если сработали более чем 2 датчика, то дополнительно начинает мигать Л15. При улучшении ситуации по какому-нибудь датчику, соответствующая ему лампочка гаснет, а Л15 начинает мигать в 2 раза медленнее. Гаснет Л15, если ситуация остается критической только по одному датчику.
12. Контролируется состояние 2-х датчиков (4 и 14). Если сработал 1 любой датчика, то загорается соответствующая ему лампочка (Л1или Л2). Если сработали оба датчика, то дополнительно начинает мигать Л3. Если ситуация не улучшилась к следующему опросу, то дополнительно начинает мигать Л4. При улучшении ситуации лампочка Л4 гаснет. Если к следующему опросу ситуация повторно не ухудшилась, гаснет и Л3.
13. Опрашиваются 4 дискретных датчика (1, 2, 8, 9). Если сработали любые датчики, то загораются соответствующие им лампочки. Если сработали более чем 2 датчика, то дополнительно начинает мигать Л15, если ситуация не улучшится к следующему опросу, то начинает мигать Л16. При улучшении ситуации сначала гаснет Л16, после следующего улучшения гаснет Л15.
Отчет по заданиям должен содержать:
1. схему соединения датчиков и сигнализационных лампочек с битами входных и выходных регистров данных порта;
2. блок-схему программы контроля состояния входных линий;
3. листинг программы;
4. в качестве примера указать, какое значение будут принимать биты входных регистров при различном состоянии датчиков и, соответственно этим состояниям, указать значение принимаемых и выставляемых кодов в 2-ом и 10-ом исчислениях.
4. Некоторые команды, используемые
при работе с портами
1. Переписать данные из ОЗУ в файл.
В ОЗУ данные появляются после выполнения команд опроса датчиков, или после ввода с клавиатуры.
Датчик /клавиатура→ ОЗУ → ЖД (файл)
INPUT a$, kod
WRITE #1, a$, kod; rem в файл moj. txt будет скопирован текст (символьная переменная до 255 байт) из ячейки <a
Федеральное агентство морского и речного транспорта
Федеральное бюджетное образовательное учреждение
высшего профессионального образования
Волжская государственная академия водного транспорта
Кафедра информатики, систем управления
и телекоммуникаций
, ,
Автоматизация Технологических комплексов
Часть 2
Учебно-методическое пособие для выполнения лабораторных, курсовых, контрольных работ.
Нижний Новгород
Издательство ФГОУ ВПО «ВГАВТ»
2012
УДК 681.5
Поселенов, Е. Н.
Автоматизация технологических комплексов. Часть 2/ , , – Н. Новгород: Изд-во ФГОУ ВПО «ВГАВТ», 2012. – 37 с.
В пособие рассматриваются вопросы применения ЭВМ при автоматизации управления техническими и технологическими процессами. Рассмотрены различного типа прикладные задачи и способы их решения, которые излагаются в курсах лекций «Автоматизация технологических комплексов», «ЭВМ в системах автоматики».
Пособие предназначено для студентов дневного и заочного обучения специальностей 180404 «Эксплуатация судового электрооборудования и средств автоматики».
Рекомендовано к изданию кафедрой информатики, систем управления и телекоммуникаций ( , протокол ).
Ó ФГОУ ВПО «ВГАВТ», 2012
Введение
Интенсивное развитие вычислительной техники значительно расширило области применения электронных вычислительных машин. Если первые ЭВМ проектировались с целью автоматизации процесса математических вычислений, то на современном этапе их широко используют при автоматизации управления техническими и технологическими процессами.
В настоящее время практически все системы автоматического управления используют электронные вычислительные машины.
для различных целей: сбора, обработки, анализа и выдачи информации, для принятия решения об управляющем воздействии.
Задача автоматизации процессов разбивается на следующие этапы:
1. разработка технологической карты процесса (или временных диаграмм);
2. выбор оборудования;
3. выбор способа передачи информации между блоками системы;
4. разработка управляющих программ;
5. анализ качества работы системы.
На системы управления накладываются требования:
1. надежность;
2. экономичность;
3. высокие значения показателей качества работы системы.
Структура систем может быть:
1. последовательной – когда i-тая процедура начинается после выполнения i-1-ой процедуры;
2. параллельной – когда в одно и тоже время может выполняться несколько процедур;
3. последовательно-параллельной – когда на разных участках технического процесса комбинируются и последовательные и параллельные схемы;
4. иерархической – многоуровневые системы автоматического управления (судовая локальная сеть, реализующая информационно-управляющую систему).
Пример параллельно-последовательного исполнения процедур приведен на рис. 1.
|
Рис. 1. Параллельно-последовательное исполнение процедур |
Пример иерархической структуры автоматизированного комплекса приведен на рис. 2.
|
Рис. 2. Иерархическая структура системы |
При проектировании систем управления, использующих вычислительную технику, решаются следующие задачи: выбор датчиков для сбора информации о состоянии управляемого объекта (достаточно сложная проблема); выбор способа ввода/вывода информации в/из ЭВМ (выбор порта ввода/вывода определяется датчиком); подготовка сигнала с датчиков для ввода/вывода через выбранный порт (проектирование УСО - устройства сопряжения «датчики => порт» / «порт => исполнительное устройство»); составление алгоритма управления процессом, протекающим в объекте. Если процедура ввода и вывода информации в ЭВМ практически разработана и не представляет особых трудностей, то разработка управляющих программ, которые вырабатывают воздействие на исполнительные устройства, процесс достаточно сложный и трудоемкий.
В методическом пособии рассматривается интерфейс (посредник) между аппаратурой (hardware), прикладным программным обеспечением (application software) и пользователем компьютера (user), в частности:
1. устройство аналогового, параллельного портов ввода/вывода информации;
2. программное обеспечение работы портов: тестирование портов, прием и выдача информации через порт;
3. разработка информационных и управляющих программ для конкретных задач.
На рис. 3, 4 даны блок-схемы судовой информационно-управляющей сети.
|
Рис. 3. Схема судовой информационно-управляющей сети |
|
Рис. 4. Блок-схема системы управления первого уровня |
Упрощенная блок-схема управляющей программы дана на рис. 5.
|
Рис. 5. Блок-схема системы управляющей программы |
1. Лабораторная работа №1
Информационные системы. Разработка алгоритма обнаружения неисправностей в трубопроводе
Рассматривается система контроля передачи жидкого или газообразного вещества по трубопроводу, рис. 6.
|
Рис. 6. Функциональная схема системы контроля |
1 – трубопровод, 2 – насосные станции, 3 – датчики давления (Д1, Д2, …), 4 – управляющие (или информационные) ЭВМ, одна расположена вблизи места сбора информации, другая в диспетчерском пункте. Задача ЭВМ – собирать, обрабатывать и выдавать на экран информацию, как цифровую, так и графическую, о протекании процесса на всех участках контролируемой трассы и предавать её на дальнее расстояние.
Рассмотрим одну из проблем, возникающих на трубопроводе – прорыв трубы при возрастании давления после включения подкачивающего насоса. От того, как быстро диспетчер определит аварию на трубопроводе, зависит величина материальных потерь и уровень загрязнения среды в окрестностях прорыва. С другой стороны, ложная тревога также влечет за собой материальные затраты – ошибочный вызов техник, ремонтных бригад, … Задача программиста – составить алгоритм, с помощью которого можно быстро и с высокой степенью достоверности определить наличие аварии.
После включения насоса в момент t0 начинает подниматься давление в трубопроводе. На рис. 7, 8 показаны возможные виды переходных процессов, протекающих без аварии (рис. 7) и подчиняющихся закону (1), и с аварийными ситуациями (рис. 8).
| (1) |
|
Рис. 7. Динамика развития процесса без внештатных ситуаций |
|
Рис. 8. Возможные варианты развития ситуаций |
На рис.7, 8 и формуле (1):
Δt – интервал времени между опросами датчиков давления; Pt – ожидаемое (теоретическое); Рr – реальное, истинное значение давления в трубопроводе; t0 – момент включения насоса; t1 – момент начала изменения давления, зафиксированный первым датчиком; tj – момент изменения давления, зафиксированный j-ым датчиком; τ* – момент аварии; ti – текущий момент опроса датчиков; Pj(ti) – значение давления, зафиксированное j-ым датчиком в момент ti; Рj* – установившееся значение давления в j-ой точке рассматриваемого участка трубопровода; Т – постоянная времени, характеризующая инерцию (скорость) развития переходного процесса; τ1=t1-t0 – время задержки в развитии процесса в первой точке; τj – задержка в развитии процесса в j-ой точке.
Рассмотрим упрощенную ситуацию, когда используется информация только с одного датчика давления, расположенного посередине между насосными станциями. Допустим, что в момент t* произошел прорыв трубы. В этом случае вид переходного процесса (после момента аварии) начинает меняться. С точки зрения распознавания процесса возможны различные ситуации: от простейших – рис. 8, а, до сложных – рис. 8, б.
График зависимости Рr(t) выводится на экран диспетчеру*. Обычно диспетчер определяет аварию в конце переходного процесса, когда устанавливается давление ниже ожидаемого. Это происходит с опозданием и приводит к большим материальным потерям.
В работе предлагается автоматизировать процесс анализа нарастания давления, т. е. составить алгоритм, в результате работы которого на экран ЭВМ выходила бы информация об изменениях в процессе, например, «режим протекает нормально», «Вероятность аварии … %» или «в момент t =… произошла авария в районе датчика …”. Если считать, что процесс повышения давления подчиняется экспоненциальному закону, то можно оценить ожидаемые потери.
В данной работе нет процедуры опроса датчиков состояния (выхода в порт). Процесс получения конкретных значений давления осуществляется путем выбора чисел из открытого на жестком диске числового файла.
Задания на выполнение лабораторной работы
Задание 1.
Зарисовать приблизительный вид будущего процесса нарастания давления в трубопроводе. Открыть на жестком диске файлы (запись процедуры дана в приложении), в которые занести численные значения величин Pj(t), согласно нарисованным графикам. Значения давления расставить произвольно. Количество точек в массивах (для каждого датчика свой массив) должно быть не меньше 15.
Задание 2.
Разработать алгоритм анализа протекания процесса и передачи информации на верхний уровень.
Задание 3.
Промоделировать процесс контроля за состоянием датчиков системы.
Отчет должен содержать блок-схему и листинг протестированной на ЭВМ программы.
Таблица 1. Варианты заданий к лабораторной работе №1.
Параметры Номер варианта | Количество датчиков | Авария до или после n-го датчика. Тип аварии |
1 | 2 | Утечка 1-го типа (рис. 8а) до 1-го датчика |
2 | 3 | Утечка 1-го типа после 1-го датчика |
3 | 2 | Утечка 1-го типа после 2-го датчика |
4 | 3 | Утечка 1-го типа после 3-го датчика |
5 | 2 | Утечка 2-го типа (рис. 8б) до 1-го датчика |
6 | 3 | Утечка 2-го типа после 1-го датчика |
7 | 2 | Утечка 2-го типа после 2-го датчика |
8 | 3 | Утечка 2-го типа после 3-го датчика |
9 | 2 | Сбой в работе 3-го датчика (рис. 8) |
10 | 3 | Сбой 2-го датчика |
11 | 2 | Сбой 1-го датчика |
12 | 3 | Сбой 1-го и 2-го датчика |
13* | n | Развитие процесса по типу, представленному на рис. 7 без сбоя датчиков |
14* | n | Развитие процесса по типу, представленному на рис. 7, сбой при получении информации с датчиков |
15* | n | Развитие процесса по типу, представленному на рис. 7, отказ одного из датчиков. |
16* | n | Развитие процесса по типу, представленному на рис. 8б, к концу работы отказ всех датчиков. |
На рис. 9 представлен пример блок-схемы программы сбора, обработки и выдачи информации о протекании технологического процесса.
|
Рис. 9. Блок-схема системы управляющей программы |
2. Лабораторная работа №2
ЭВМ для управления технологической линией
Современный уровень вычислительной техники (высокое быстродействие, достаточная память, разнообразные порты для ввода и вывода сигналов) позволяет использовать машины для управления сложными технологическими процессами. Качество работы линии (быстродействие, точность позиционирования) зависит как от типа и характеристик элементов, входящих в систему, так и от программного обеспечения работы системы. На рис. 10, 11 представлены схема соединения объектов линии с ЭВМ и принципиальная схема технологического процесса.
|
Рис. 10. Схема соединения ЭВМ с объектами управления |
|
Рис. 11. Функциональная схема системы управления |
Задача системы управления: перенести деталь, расположенную из платформе П из одной точки пространства в другую. Заданное (исходное) положение детали – нулевое.
Двигатели 1, 2, 4, 5 и электромагнит 3 являются для ЭВМ объектами управления ОУ1, ОУ2 и т. д.
Объекты управления (ОУ) имеют датчики обратной связи (ДОС) или непрерывного типа (сельсины), когда выходной сигнал с датчика пропорционален измеряемой величине (углу поворота вала двигателя) или дискретного типа (контакторы), когда выходной сигнал принимает значение 0, если угол не отработан, или 1 при отработанном угле. Иногда линия не снабжена датчиками состояния объектов управления, то есть ЭВМ работает только на выдачу управляющего сигнала, входные каналы на ввод информации от датчиков отсутствуют. В этом случае управление каждым объект происходит строго по времени.
Принцип работы:
Двигатель Д1 (ОУ1) по сигналу управления с ЭВМ (U1=1, напряжение на 1-ой выходной линии повышается) поворачивает платформу до тех пор, пока очередная деталь не встанет в положение 0. Информация о наступлении этой ситуации поступает либо от датчика – уровень напряжения на 1-ой входной линии изменяется, либо от таймера, когда процесс жестко лимитируется во времени – на процедуру поворота отводится определенное количество секунд. После наступления необходимой ситуации ЭВМ снимает сигнал с линии управления ОУ1 (U1=0) и подаёт управляющий сигнал на второй объект – двигатель Д2 (U2= –1). Двигатель запускается. Червячная передача, преобразует угол поворота вала двигателя в линейное перемещение (φ2 => L2), электромагнит (ОУЗ) опускается на величину L2. После отработки двигателем Д2 величины φ2 (или опускание электромагнита на расстояние L2 ) ЭВМ снимает сигнал управления с двигателя (U2 = 0) и подает напряжение на линию 3 – на электромагнит (U3 = 1). Захват срабатывает, и через промежуток времени τ3 (время для прочного срабатывания зажима) двигатель Д2 (ОУ2) получает сигнал на подъём детали (U2 = +1). После подъема детали на высоту L ЭВМ останавливает Д2 и запускает двигатель Д4 (ОУ4) для поворота его на угол φ4. Блок (деталь, электромагнит, Д2) перемещается в новую точку пространства, где деталь опускается на транспортер, после чего пустой захват поднимается вверх. Далее запускают двигатели Д4, Д5, Д1. Д4 – возвращает зажим в первоначальное положение, Д5 – продвигает деталь на расстояние L5, освобождая место для новой детали, После чего цикл повторяется заново – Д1 подводит следующую деталь в 0 положение, Д2 опускает пустой зажим,….
Таким образом, в данном технологическом процессе ЭВМ в определенные моменты выставляет сигналы на выходные линии, а в промежутках между этим процессом опрашивает входные линии и таймер, для того чтобы не пропустить момент изменения сигнала на выходных линиях (момент останова одного двигателя и запуск другого).
Останов любого из двигателей может происходить по одному из трех признаков:
1. На валу двигателя поставлен датчик обратной связи (ДОС) непрерывного типа (сельсин), который вырабатывает напряжение, пропорциональное углу поворота вала Uoc = к·φ. ЭВМ периодически опрашивает ДОС, и при отработке двигателем заданной величины (φ=φ*) ЭВМ подает сигнал останова U = 0.
2. Останов двигателя происходит по сигналу с контактора: при повороте вала двигателя на заданный угол (φ*) срабатывает контактор, замыкающий электрическую цепь. В этом случае в ЭВМ с ДОС поступает сигнал 0 (контактор разомкнут), или 1 (контактор замкнут).
3. Останов объекта управления (сброс на ноль сигнала управления на выходной линии ЭВМ) происходит по истечению заданного интервала времени. При запуске объекта начинается опрос таймера и при увеличении показания таймера от начального значения на заданную величину τ ЭВМ подает сигнал останов двигателя – напряжение на соответствующей выходной линии сбрасывается на ноль.
Задания на выполнение лабораторной работы
Задание 1.
Представить осциллограммы работы всех объектов управления от начала поворота платформы с деталями на угол φ1 до возврата зажимов в исходное положение.
Исходное положение объектов управления:
Платформа с деталями неподвижна, деталь расположена на расстоянии φ1 от нулевого положения; зажим поднят; напряжение с электромагнита снято (U3 = 0); ОУ4 (двигатель 4), в положении φ4 = 0, напряжение снято (U4 = 0); транспортёр стоит (U5=0) в положении, когда деталь, поставленная в предыдущем такте, продвинута на расстояние L5.
Задание 2.
Составить блок-схему алгоритма управления технологическим процессом. Согласно варианту заданий некоторые объекты имеют дискретные датчики, некоторые работают по таймеру, аналоговых датчиков нет.
Задание 3.
Составить и отладить Basic-программу. Опрос входных линий моделировать опросом клавиатуры. При запросе «ввести переменную» вводить «0» или «1» в зависимости от того, сработал или нет опрашиваемый датчик.
Таблица 2. Варианты заданий к лабораторной работе №2.
Номер варианта | Количество дискретных входов – линий (датчиков) | Одновременно работающие двигатели |
1 | L1, L2, L4, L5 | D1, D2 (вниз) |
2 | L1, L2, L4 | D1, D5 |
3 | L1, L2, L5 | D2 (вверх), D4 |
4 | L1, L4, L5 | D4 (движение с деталью), D5 |
5* | L2, L4, L5 | D2 (вверх), D4, D5 |
6* | L1, L2 | D4, D2 (вниз), D5 |
7 | L1, L4 | D1, D2 |
8 | L1, L5 | D1, D5 |
9 | L2, L4 | D2, D5 |
10 | L2, L5 | D2(вверх), D4 |
11 | L4, L5 | D4 (движение с деталью), D5 |
12* | L1 | D2 (вверх), D4, D5 |
13* | L2 | D4, D2 (вниз), D5 |
14 | L4 | D1, D2 |
15 | L5 | D1, D5 |
16 | 0 | D2, D5 |
17 | 0 | 0 |
18 | L1, L2, L4, L5 | 0 |
Отчет должен содержать:
4. Временные осциллограммы работы линии.
5. Блок-схему программы.
6. Листинг программы.
3. Лабораторная работа №3
Использование дискретного
параллельного порта для автоматизации процесса контроля за техническими объектами
Целью работы является изучение принципа работы дискретного параллельного порта, его аппаратной реализации и программного обеспечения.
Порт предназначен для ввода/вывода цифровых сигналов уровня 0 или 5В на ТТЛ - линии. Сигналы на линии держат микросхемы, основанные на транзисторно-транзисторной логике (ТТЛ, TTL) — разновидности цифровых логических микросхем. Название транзисторно-транзисторный возникло из-за того, что транзисторы используются как для выполнения логических функций (например, И, ИЛИ) от входных сигналов, так и для усиления выходного сигнала (в отличие от резисторно-транзисторной и диодно-транзисторной логики). ТТЛ получила широкое распространение в компьютерах, электронных музыкальных инструментах, а также в контрольно-измерительной аппаратуре и автоматике. Благодаря широкому распространению ТТ-логике входные и выходные цепи электронного оборудования часто выполняются совместимыми по электрическим характеристикам с ТТЛ. Максимальное напряжение в схемах с ТТЛ может достигать 24В, однако это приводит к большому уровню паразитного сигнала. Достаточно малый уровень паразитного сигнала при сохранении достаточной эффективности достигается при напряжении 5В, поэтому данная цифра и вошла в технический регламент ТТЛ.
Плата используемого в работе цифрового параллельного порта L032 упрощенна и включает только цифровой дискретный порт. Порт принимает сигналы от 16-ти (максимальное количество входных линий для данной платы) дискретных датчиков – уровень сигнала на линии 0В÷5В. Дискретные датчики уровня, температуры, давления, задымленности, уровня какого-либо вещества в окружающей среде (утечки газа)... переключают напряжения на линиях с 0В до 5В в момент превышения контролируемой величины своего допустимого значения.
Кроме принимающих входных линий порт имеет 16 выходных линий, на которые по командам управляющей программы процессор может выставить сигналы уровня 0В или 5В, предназначенные для управления приводами, сигнализацией,... .
3.1. Описание команд обращения к регистрам порта. Чтение цифровых линий
Ввод (чтение) информации с входных линий и вывод (запись) на выходные линии осуществляется через два 8-разрядных регистра данных с адресами 300h и 301h.
Существуют схемы дискретного порта, где регистры мультиплексированы, то есть для записи (вывода управляющего сигнала на исполнительные устройства) и чтения (ввода информации от датчиков) используются одни и те же регистры, то устройство управления потоком информации на плате порта осуществляет переключение регистров на чтение или запись.
На внешнем разъёме платы имеются 16 цифровых входных линий, состояние которых может быть прочитано по указанным адресам.
|
Рис. 12. Входные линии порта |
Данные с датчиков D1-D8 соответствуют состояниям первых восьми входных ТТЛ линий (L1–L8). Информация с внешнего разъёма поступает в регистр 300h. Данные с датчиков D9-D16 через вторые восемь ( L9–L16) линий поступают в регистр 301h.
Нет необходимости сшивать эти коды, так как каждый бит регистров связан с конкретным датчиком. При каждом чтении цифровых линий генерируется цифровой строб на линии "Строб чтения цифрового порта" на внешнем разъёме платы. Этот строб заставляет управляющее устройство платы сбрасывать старую информацию в регистрах и записывать новую.
Команда для считывания информации с регистра и записи этого кода в ячейку ОЗУ, где она будет храниться под именем переменной, например, " kod", записывается следующим образом:
kod=INP(&HXXX)
rem ХХХ - адрес опрашиваемых линий, ХХХ = 300, если опрашиваются линии 1–8. ХХХ = 301, если опрашиваются линии 9 – 16.
При вводе информации с цифровых линий возникает необходимость определения состояния конкретных разрядов регистров, к которым подключены датчики.
Для определения состояния k-го разряда или k+1-го бита (например, k =3, т. е. 0000?000) необходимо наложить на полученный KOD маску: МASKA=2k (в данном случае МASKA=8). Для этого выполним команду
rezult = MASKA AND KOD
Например. Нас интересует ситуация, когда ОДНОВРЕМЕННО сработали 2 датчика, подсоединенных к линиям 2 и 5 (n и m). После опроса регистра 300h на полученный код накладываем маску 18, так как 1810=000100= 2n-1 +2m-1).
Если результат опроса равен 18, то интересующие нас датчики выставили на линию 1, в противном случае либо один из датчиков, либо оба находятся в нулевом состоянии.
МASKA = ,
KОД = ,
результат побитового умножения двух переменных
МASKA и KОД дает
result = =1810
Таким образом, процедура определения состояния датчика, например, подсоединенного к K-той линии реализуется следующими двумя командами:
1) Опрос регистра с адресом ХХХ
A = INP(&HXXX) (3)
A - имя переменной (ячейки ОЗУ), куда заносится результат опроса.
2) Наложение маски на k-1 разряд (k-й бит) полученного результата – процедура <AND> – побитное умножение.
Примечание. Не путать! К-я линия ® К бит ® К-1 разряд, т. е. сигналы с линий 1,2,3, …, записываются в разряды 0,1,2,… .
В =2 k-1 AND A (4)
B - результат наложение маски на k-1 разряд.
Если результат В=0, следовательно, k-1 разряд в регистре равен нулю и k-ый датчик не подавал сигнал, если В=2k-1, то в соответствующем разряде записана 1.
IF В=0 then Dk=0 ELSE Dk=1
Пример1. Нас интересует состояние двух датчиков, соединенных с линиями 9 и 10 (линии связаны с регистром 301h) . Для этого необходимо определить состояние первых двух битов регистра 301h.. Для этого выполним следующие команды:
a = INP(&H301)
Опрашиваем регистр с адресом 301h, в котором выделим первые два бита с помощью маски *21 + 1*20=3, 310= ).
b = a AND 3. Накладываем маску <3> на данные,
считанные из регистра.
По величине полученного числа b определяем состояние первых двух битов регистра 301: если b10 =0, то первые два бита - 002, если b10=1, то в опрошенном регистре состояние первых двух битов 012, если b10=2, то состояние битов 102 и если b10 =3, то в регистре имеем 112 ).
Пример 2. Нас интересует состояние двух датчиков, которые подсоединены к 1 и 9 линиям, т. е. к нулевым разрядам регистров 300h и 301h. В этом случае решается задача выделения нужной информации из кодов KOD1 и KOD2, полученных после опроса двух регистров 300h и 301h. Эта процедура выполняется наложением одной и той же маски на интересующие нас разряды. В данном примере маска: 000000= 20).
KOD1 = INP(&H300)
KOD2 = INP(&H301)
В1 =2 0 AND KOD1
В2 =2 0 AND KOD2
По значениям чисел В1 и В2 определяем состояние датчиков.
3.2. Установка цифровых ТТЛ линий
На внешнем разъёме платы имеются 16 цифровых ТТЛ выходов (рис. 13), состояние которых может быть изменено записью двоичной информации (0/1) в любые разряды регистров 300h или 301h. На выходных проводах порта держится напряжение 0В, если в соответствующем бите регистра записан 0 или 5В, если записана 1. Команда записи кода N в выходные регистры записывается следующим образом
|
Рис. 13. Выходные линии порта |
OUT &H300, N N – код, выставляемый на линии с 1 по 8, десятичное число, не превышающее 25510 =
OUT &H301, M M– код, выставляемый на линии
9 – 16, десятичное число, не превышающее 25510
При выводе сложного кода на линию (для запуска нескольких исполнительных устройств или сигнализации) возникает задача ″сшивания числа″.
Пример 1. Необходимо запустить три исполнительных устройства, подсоединенных к линиям 1,3,10.
Для этого в регистр 300h запишем KOD1=, а в регистр301h – KOD2=и выполним команду вывода информации из ЭВМ во внешнее устройство:
OUT &H300, 5
OUT &H301, 2
или
KOD1=5
KOD2=2
OUT &H300, KOD1
OUT &H301, KOD2
После этой процедуры на 13-ти выходных линиях будем иметь 0В и на 3-х (1, 3 и 10-ой) – 5В Такое состояние линий продлится до тех пор, пока программным путем в выходные регистры не будут записаны другие коды.
Пример 2. Задача усложняется, если после очередного опроса появилась необходимо запустить дополнительно исполнительное устройство, подсоединенное, например, к линии 2. Предыдущее состояние линии (пример выше) не должно измениться. Код, который на предыдущем цикле был выставлен на линии 1–8 находится в переменной " KOD1".
Изменение состояния второй линии – ХХХХХХ1Х (без изменения состояния других линий) осуществляется следующей процедурой
А=(KOD1) and (2)
OUT &H300, А
После этой процедуры 16-ть выходных линиях будут находится в состоянии 00000Такое состояние линий продлится до тех пор, пока программным путем в выходные регистры не будут записаны другие коды.
4.2. Задания на выполнение лабораторной работы
Во всех вариантах
1) частота мигания лампочек 5 раз за время опроса.
2) опрос линий проводится каждые 20-30 секунд.
3) считается, что ситуация улучшается, если количество сработанных датчиков на текущем опросе меньше, чем на предыдущем.
4) считается, что Л15 и Л16 находятся на удаленных постах контроля.
Как правило, для работы с портами требуется знание текущего времени или возможность в течении заданного промежутка времени держать выходную линию порта под напряжением.
Определение текущего значения времени осуществляется следующей кмандой
Ttek_sec = TIMER
Этой командой в переменную Ttek копируется число, равное количеству секунд, прошедших от начала отсчета – полночи/
Для выделения часов, выполним команду целочисленного деления (с отбрасыванием дробной части)
Ttek_hour = int(TIMER/3600)
Расчет остатка от деления (для дальнейшего определения минут и секунд)
y = mod (TIMER/3600)
Минимальное изменение времени, которое фиксируется в ТАЙМЕРЕ 0,05 сек. Если требуется задать время, в течение которого линия должна находится под напряжением, много меньше, чем 0,05сек, то это можно сделать следующим образом.
1. Определяем состояние таймера
t0 = TIMER
2. Заказываем в цикле какую-либо процедуру и выполняем её n раз.
n=1000
for i=1 to n
y=sin(0.1)
next i
3. Определяем время окончания цикла по таймеру.
tk=TIMER
4. Рассчитываем время одной процедуры.
dt=(tk-to)/10000
PRINT "время выполнения функции 1 раз равно ";
dt
После этого можно вычислить, сколько раз нужно выполнить цикл для получения нужной задержки.
3.3. Задания на выполнение лабораторной работы
1. Опрашиваются 4 дискретных датчика (с D6 по D9). Если сработал хотя бы 1 из них, то зажигается соответствующая лампочка (Л6-Л9). Если сработали 3 или более датчиков, то зажигаются соответствующие лампочки, и начинает мигать Л16. Если следующий опрос показывает, что ситуация с датчиками не улучшилась, то Л16 горит постоянно. При улучшении ситуации Л16 гаснет.
2. Опрашиваются 4 дискретных датчика (1,2,8,9). Если сработал один любой датчик, то соответствующая лампочка начинают мигать. Если сработали более 2-х датчиков, то мигают не только соответствующие лампочки, но и Л16. Если ситуация ухудшается, то Л16 горит постоянно. При улучшении ситуации Л16 мигает. Гаснет Л16, если сигнал держат не более 2-х датчиков.
3. Опрашиваются 3 дискретных датчика (3, 7, 13). Если сработал любой из датчиков, то соответствующая лампочка начинает мигать. Если ситуация по сработанным линиям не улучшится к следующему опросу, то соответствующие лампочки мигают в 2 раза чаще., если ситуация на линии не улучшается в последующих опросах, то лампочки горят постоянно.
4. Опрашиваются 3 датчика D7 - D9. Если сработал один или два датчика, то зажигается соответствующая лампочка L1 – L3. Если сработали 3 датчика, то зажигаются не только соответствующие лампочки, но начинает мигать Л4. Если ситуация с датчиками не улучшится к следующему опросу, то Л4 горит постоянно. При улучшении ситуации Л4 гаснет в том случае, если только один датчик держит сигнал.
5. Опрашиваются 4 дискретных датчика (D1–D4). Если сработал хотя бы 1 датчик, то начинает мигать соответствующая лампочка. Если ситуация не улучшится к следующему опросу, то начинает мигать Л15. Если ситуация не улучшится и в следующий опрос, то лампочки горят постоянно. При улучшении ситуации Л15 гаснет сразу.
6. Контролируется состояние 4 датчиков (D1-D4). Если сработал хотя бы 1 датчик, то загорается соответствующая лампочка. Если сработали более чем 2 датчика, то загораются Л15 и Л16. Если ситуация не улучшится к следующему опросу, то все лампочки начинают мигать. При улучшении ситуации Л15 гаснет в том случае, если не более 2-х датчиков держат сигнал, Л16 гаснет в том случае, если только один датчика держит сигнал.
7. Контролируется состояние 4 датчиков (2-5). Соответствующие сработанным датчикам лампочки начинают мигать только в том случае, если сработало более чем 2 датчика. Если ситуация не улучшится, к следующему опросу то лампочки должны гореть постоянно. Л16 загорается, если среди сработанных датчиков есть D3. Л16 гаснет, если среди сработанных датчиков нет датчика линии 3.
8. Опрашиваются 3 датчика (1,10,15). Если сработали 2 любых датчика, то мигают соответствующие им лампочки – Л1, Л2, Л3. Если сработали все датчики, то начинает мигать Л15. При улучшении ситуации, соответствующая лампочка гаснет, а через 5 секунд гаснет Л15.
9. Опрашиваются 8 датчиков (с9 по 16). При срабатывании любого из датчиков зажигаются соответствующие лампочки – Л1-Л8. Если ситуация с датчиками не улучшится к следующему опросу линий, то дополнительно загорается и горит постоянно Л16. При улучшении ситуации, соответствующие лампочки продолжают мигать в течение 10 сек, после чего гаснут и гаснет Л16.
10. Контролируется состояние 5 датчиков (1-5). Соответствующие сработанным датчикам лампочки начинают гореть только в том случае, если сработало более чем 3 датчика. Если ситуация не улучшится к следующему опросу, загорается Л16. Л16 гаснет, если ситуация остается критической менее, чем по 3 датчикам.
11. Опрашиваются 4 дискретных датчика (D1, D2, D8, D9). Если сработал любой датчик, то загорается соответствующие ему лампочка (Л3, Л4, Л8, Л9). Если сработали более чем 2 датчика, то дополнительно начинает мигать Л15. При улучшении ситуации по какому-нибудь датчику, соответствующая ему лампочка гаснет, а Л15 начинает мигать в 2 раза медленнее. Гаснет Л15, если ситуация остается критической только по одному датчику.
12. Контролируется состояние 2-х датчиков (4 и 14). Если сработал 1 любой датчика, то загорается соответствующая ему лампочка (Л1или Л2). Если сработали оба датчика, то дополнительно начинает мигать Л3. Если ситуация не улучшилась к следующему опросу, то дополнительно начинает мигать Л4. При улучшении ситуации лампочка Л4 гаснет. Если к следующему опросу ситуация повторно не ухудшилась, гаснет и Л3.
13. Опрашиваются 4 дискретных датчика (1, 2, 8, 9). Если сработали любые датчики, то загораются соответствующие им лампочки. Если сработали более чем 2 датчика, то дополнительно начинает мигать Л15, если ситуация не улучшится к следующему опросу, то начинает мигать Л16. При улучшении ситуации сначала гаснет Л16, после следующего улучшения гаснет Л15.
Отчет по заданиям должен содержать:
1. схему соединения датчиков и сигнализационных лампочек с битами входных и выходных регистров данных порта;
2. блок-схему программы контроля состояния входных линий;
3. листинг программы;
4. в качестве примера указать, какое значение будут принимать биты входных регистров при различном состоянии датчиков и, соответственно этим состояниям, указать значение принимаемых и выставляемых кодов в 2-ом и 10-ом исчислениях.
4. Некоторые команды, используемые
при работе с портами
1. Переписать данные из ОЗУ в файл.
В ОЗУ данные появляются после выполнения команд опроса датчиков, или после ввода с клавиатуры.
Датчик /клавиатура→ ОЗУ → ЖД (файл)
INPUT a$, kod
WRITE #1, a$, kod; rem в файл moj. txt будет скопирован текст (символьная переменная до 255 байт) из ячейки <a$>, и число из ячейки ОЗУ – переменная <kod>
или
PRINT #1, a$, kod rem в файл moy. txt будет скопированы данные подряд, без разделения их запятыми, символьные переменные не будут выделены кавычками.
2. Переписать данные из файл в ОЗУ (моделирование процедуры опроса. Предварительно необходимо открыть файлы на ввод (for input) ЖД → ОЗУ
INPUT #1, a$ rem из первого файла (с символьными переменными) один символ копируется в ОЗУ
INPUT #2, kod rem из файла 2 (с числовыми переменныи) одно число копируется в ОЗУ
Пример. Необходимо скопировать все числа из файла #1 на ЖД в ОЗУ.
Данные будут заноситься в массив Z(i).
i=0
DO WHILE NOT EOF(1) rem EOF – End Of File → выполняй процедуры пока файл не пуст
i=i+1: INPUT #1, Z(i) Перезапись из файла в массив
LOOP указатель в файле смещается вправо к следующей записи.
3. Выход из программы по нажатию клавиши <ESC>, код которой равен 27.
При отладке этот оператор можно ставить в любом месте программы.
K$=INKEY$
IF K$= CHR$(27) THEN END (или THEN GOTO < метка>)
Второй вариант, чтобы успеть нажать клавишу можно сделать задержку на n сек.
SLEEP 5
K$=INKEY$
IF K$= CHR$(27) THEN END
4. Копирование из файла в файл
SHELL “COPY C:\net\A. txt С:\B. txt” rem SHELL – команда, разрешающая программе, написанной на языке BASIC, выполнить команду COPY из библиотеки дисковой операционной системы.
5. Разрешить клиенту использовать сервер (ЭВМ с № 000.168.1.7) и общую для сети папку на сервере <net>.
Имя папки может быть любым, необходимо только, чтобы папка была доступна любой клиентской ЭВМ, входящей в сеть.
SHELL “net use g:\\190.168.1.7\net” rem Эта команда создает на клиентской машине виртуальный диск g:\, физически им является жесткий диск серверной машины, в частности, папка <net>. Клиент на своей машине может открыть на диске g:\ файл и работать с ним.
SHELL “net use g:\delete” rem Эта команда всегда работает в паре с верхней комаой. Она снимет разрешение использовать диск сервера.
6. Передать на сервер результаты опроса датчика (опрос проводится клиентской ЭВМ и записывается в файл, открытый на виртуальном диске).
OPEN “g:\A. txt” FOR OUTPUT AS #1 Rem далее идут команды опроса датчиков
KOD = …. KOD – это число ( результат
PRINT #1, KOD опроса датчика).
После выполнения этой команды на сервере на диске С:\ в папке <net> появляется файл под именем “A. txt”, в которую можно скопировать любую информацию с клиентской ЭВМ.
7. Вывод информации на экран в заданное “окно” .
Вывод пиксельной информации n– номер опрашиваемого датчика, KOD – код, полученный с датчика.
Головная программа: первые два оператор объявление подпрограмм
1 DECLARE SUB opros (n, KOD)
2 DECLARE SUB printing (n, KOD)
3 DIM SHARED a$(1): a$(3)=″Датчик″
Rem открытие окон
4 VIEW(10,10)-(630,225),,C
5 VIEW(700,335-(800,550),,C
Rem вывод пиксельной информации
6 LINE(0,25)-(620,25),C
7 LINE(750,25)-(750,600),C
8 …
9 … операторы головной
программы
n END
Rem Четвертая команда задает
размеры первого окна, 5-я – второго.
Все части фигур, не входящих в
указанные окна,
невидимы.
![]() |
Rem вывод символьной информации
SUB printing (n, KOD)
LOCATE 6,4
rem Расположение окна задается
командой типа 4,5
PRINT a$(3); n; “принятый код=“; KOD
END SUB
5. Вопросы для тестирования знаний
1) Как записать единицу в n-ый бит регистра данных?
2) Как записать единичную информацию в несколько бит?
3) Как считать информацию с n-ого бита?
4) Как считать информацию с нескольких бит?
5) Как наложить маску на n-ый бит?
6) Как наложить маску на несколько бит?
7) Как записать единицу в n-ый бит, не затрагивая старую информацию?
8) Как записать единицу в несколько бит, не затрагивая старую информацию?
9) Как записать ноль в n-ый бит, не затрагивая старую информацию?
10) Как записать ноль в несколько бит, не затрагивая старую информацию?
11) Какие регистры аналогового порта должны быть задействованы в пользовательской программе?
12) С какой целью используются регистры данных, статуса и управления?
14) При формировании напряжения на выходной линии аналогового порта необходимо получить достаточно большое напряжения. Для этого в регистры порта записываю код значительно больше 255. Как разбить код на два регистра?
15) Какие регистры используются в пользовательской программе при работе с дискретным параллельным портом?
16) Какие регистры используются в пользовательской программе при работе с дискретным последовательным портом?
17) Как зарезервировать файл на жестком диске?
18) Как записать символьную информацию в файл?
19) Как записать численную информацию в файл?
20) Как считать символьную информацию из файла?
21) Как считать численную информацию из файла?
22) Как скопировать информацию (числа) из файла в массив?
23) Можно ли в один файл записать численную и символьную информацию?
24) Какие порты ЭВМ можно использовать для управления объектами (лабораторная работа №2)?
25) Какие порты ЭВМ можно использовать для сбора информации о состоянии объектов (лабораторная работа №2)?
26) Возможна ли совместная работа объектов 1 и 5, 1 и 2, 1 и 3, 1 и 4, 2 и 4, 2 и 5, 3 и 5, 4 и 3, 4 и 5 (лабораторная работа №2)?
27) Что означает термин «управление процессом по таймеру» (лабораторная работа №2)?
28) Какие порты ЭВМ можно использовать для сбора информации о состоянии объектов (лабораторная работа №1)?
29) Может ли датчик Dj зафиксировать нарушения в протекании процесса раньше, чем датчик Dj-1 (лабораторная работа №1)?
30) Как определить, что давление не вышло на заданный уровень (лабораторная работа №1)?
6. Задания на курсовую работу
При программировании следующих задач в первом блоке (исходные данные) должны по запросу вводится следующие величины:
t1 – период времени, по истечению которого производят очередной опрос входных линий,
t2 – период времени, в течение которого лампочки находятся под напряжением, такое же время – без напряжения при реализации режима мигания.
L(16) – массив, в который заносится список контролируемых линий, L(i)=0 –датчик на i-линии отсутствует, L(i)=1– i-ая линия соединена с датчиком и должна находится под контролем,
k – количество датчиков, подключенных к входным линиям,
k1 – количество сработанных датчиков,
k2 – количество датчиков, на срабатывание которых реагирует L15,
k3 – количество датчиков, на срабатывание которых реагирует L16,
n – количество опросов входной i-ой линий, после которых начинает реагировать i-ая сигнализация:
n=1 – после очередного опроса,
n=2 – после второго опроса, подтверждающего наличие того же сработанного датчика,
n1 – количество опросов линий, в течение которых должно подтверждаться улучшение ситуации, после которых может реагировать сигнализация.
n2 – количество опросов линий, в течение которых подтверждается ухудшение ситуации, после чего может среагировать сигнализация.
Считается, что ситуация улучшается, если количество сработанных датчиков на текущем опросе меньше, чем на предыдущем.
Считается, что ситуация ухудшается, если количество сработанных датчиков на текущем опросе не изменилось или стало больше, чем на предыдущем.
Общая постановка задачи:
Ведется контроль над состоянием k датчиков. При срабатывании любого из датчиков, например, i-го, должна сработать соответствующая датчику световая сигнализация. Для этого на i-ой выходной линии ЭВМ выставляет управляющий сигнал, в результате чего лампочка начинает мигать. Напряжение управления состоянием сигнализации выставляется только в том случае, если в течении n опросов ситуация повторяется. Если сработало k2 или более датчиков, то дополнительно начинает мигать L15. Если сработало k3 или более датчиков, то дополнительно начинает мигать L16. Отключение сигнализации проводить согласно вариантам задачи.
1. Если ситуация с момента начала мигания L15 или L16 через n2 опроса не улучшилась, то постоянно горят L15, L16 и все i-ые лампочки. Если последующий опрос показал улучшение ситуации, то гаснут соответствующие i-ые лампочки и L15. L16 гаснет, если подтверждение об улучшении ситуации идет в течение n1 опросов.
2. Если ситуация на i-ой входной линии не улучшилась через n2 опросов, i-тая лампочка горит постоянно. Если i-тая лампочка мигала, то она гаснет, если на i-ой входной линии в течение n1 опросов подтвердилось улучшение ситуации. Если i-тая лампочка горела, то она гаснет, если n1+1 опрос подтвердил улучшение ситуации. L15 и L16 гаснут одновременно в том случае, если количество сработанных датчиков стало меньше, чем k2
3. Если ситуация на i-той входной линии не меняется через 3 опроса, то соответствующая лампочка горит постоянно. Если L15 и L16 мигали и ситуация на входных линиях непрерывно от опроса к опросу ухудшается, то L15 и L16 горят постоянно. При улучшении общей ситуации на входных линиях гаснут соответствующая i-ая лампочка и L15, а L16 гаснет, если улучшение ситуации подтверждается в течение n1 опросов.
4. L15 и L16 начинают гореть постоянно и зажигается L14 после n2 опросов, если в течение этих опросов идет непрерывное ухудшение ситуации. При улучшении ситуации L15 и L16 гаснут одновременно, если L14 не горела, в противном случае L14, L15, L16 гаснут одновременно, если в течение n1 опросов подтверждается непрерывное улучшение ситуации и количество сработанных датчиков k < k2.
5. L15 начинает мигать, если количество сработанных датчиков более 50%. Если после подачи напряжения на L15 ситуация не улучшилась за n2 опроса, то все лампочки горят постоянно и зажигается L14. Если в течение n1 опросов подтверждается улучшение ситуации хотя бы на одной входной линии, то L15 гаснет. L14 гаснет, если количество сработанных датчиков стало меньше 25%.
6. Если в течении n2 опросов идет непрерывное ухудшение ситуации, все мигающие лампочки начинают гореть постоянно. Если на i-той линии подтверждается улучшения ситуации, сигнализация на i-той линии отключается. При улучшении ситуации на линиях L16 гаснет сразу, а L15. гаснет, если в течение n1 опросов идет непрерывное улучшение ситуации и на текущем опросе
k1 < k2.
На рис. 13 представлена возможная реализация следующей задачи.
Контролируется состояние 2 датчиков. При срабатывании 1-го из 2-х датчиков начинает мигать соответствующая сработанному датчику лампочка. При срабатывании 2-х датчиков сигнализация горит постоянно. Интервал мигания – dt = 1 сек, опрос датчиков через время опроса DTOP = 10 c.
|
Рис. 13. |
|
Рис. 13 (продолжение). |
Библиографический список
1. Конспект лекций.
2. Чиркова интерфейсы управляющих ЭВМ. Часть 1. Архитектура ЭВМ. Дискретно-параллельный и аналоговый интерфейсы. –Н. Новгород: изд. ФГОУ ВПО «ВГАВТ», 2007.
3. , Тетюев автоматического управления движением судна по курсу. - Л.: Судостроение, 1990.
4. , Козьминых системы управления судовыми дизельными и газотурбинными установками. - М.: Транспорт, 1990.
5. Принципиальные схемы системы автоматического контроля дизель-генераторных установок судов проекта 302.
6. Описание системы автоматики судовой холодильной установки.
Содержание
Введение……………………………………..…………… | …….....….3 | |
1 | Лабораторная работа №1 Информационные системы. Разработка алгоритма обнаружения неисправностей в трубопроводе ………......................................................... | ….…...…..7 |
2 | Лабораторная работа №2 ЭВМ для управления технологической линией…………............................................. | 9…….….12 |
3 | Лабораторная работа №3 Использование дискретного параллельного порта для автоматизации процесса контроля за техническими объектами ……………………... | …..…..….17 |
4 | Некоторые команды, используемые при работе с портами……………...………………………………………... | …..….......26 |
5 | Вопросы для тестирования знаний…...….…….……….. | ……….....30 |
6 | Задания на курсовую работу…...….…….…………….... | ……….....32 |
Библиографический список…………………………….. | ………….36 |
или
PRINT #1, a$, kod rem в файл moy. txt будет скопированы данные подряд, без разделения их запятыми, символьные переменные не будут выделены кавычками.
2. Переписать данные из файл в ОЗУ (моделирование процедуры опроса. Предварительно необходимо открыть файлы на ввод (for input) ЖД → ОЗУ
INPUT #1, a
Федеральное агентство морского и речного транспорта
Федеральное бюджетное образовательное учреждение
высшего профессионального образования
Волжская государственная академия водного транспорта
Кафедра информатики, систем управления
и телекоммуникаций
, ,
Автоматизация Технологических комплексов
Часть 2
Учебно-методическое пособие для выполнения лабораторных, курсовых, контрольных работ.
Нижний Новгород
Издательство ФГОУ ВПО «ВГАВТ»
2012
УДК 681.5
Поселенов, Е. Н.
Автоматизация технологических комплексов. Часть 2/ , , – Н. Новгород: Изд-во ФГОУ ВПО «ВГАВТ», 2012. – 37 с.
В пособие рассматриваются вопросы применения ЭВМ при автоматизации управления техническими и технологическими процессами. Рассмотрены различного типа прикладные задачи и способы их решения, которые излагаются в курсах лекций «Автоматизация технологических комплексов», «ЭВМ в системах автоматики».
Пособие предназначено для студентов дневного и заочного обучения специальностей 180404 «Эксплуатация судового электрооборудования и средств автоматики».
Рекомендовано к изданию кафедрой информатики, систем управления и телекоммуникаций ( , протокол ).
Ó ФГОУ ВПО «ВГАВТ», 2012
Введение
Интенсивное развитие вычислительной техники значительно расширило области применения электронных вычислительных машин. Если первые ЭВМ проектировались с целью автоматизации процесса математических вычислений, то на современном этапе их широко используют при автоматизации управления техническими и технологическими процессами.
В настоящее время практически все системы автоматического управления используют электронные вычислительные машины.
для различных целей: сбора, обработки, анализа и выдачи информации, для принятия решения об управляющем воздействии.
Задача автоматизации процессов разбивается на следующие этапы:
1. разработка технологической карты процесса (или временных диаграмм);
2. выбор оборудования;
3. выбор способа передачи информации между блоками системы;
4. разработка управляющих программ;
5. анализ качества работы системы.
На системы управления накладываются требования:
1. надежность;
2. экономичность;
3. высокие значения показателей качества работы системы.
Структура систем может быть:
1. последовательной – когда i-тая процедура начинается после выполнения i-1-ой процедуры;
2. параллельной – когда в одно и тоже время может выполняться несколько процедур;
3. последовательно-параллельной – когда на разных участках технического процесса комбинируются и последовательные и параллельные схемы;
4. иерархической – многоуровневые системы автоматического управления (судовая локальная сеть, реализующая информационно-управляющую систему).
Пример параллельно-последовательного исполнения процедур приведен на рис. 1.
|
Рис. 1. Параллельно-последовательное исполнение процедур |
Пример иерархической структуры автоматизированного комплекса приведен на рис. 2.
|
Рис. 2. Иерархическая структура системы |
При проектировании систем управления, использующих вычислительную технику, решаются следующие задачи: выбор датчиков для сбора информации о состоянии управляемого объекта (достаточно сложная проблема); выбор способа ввода/вывода информации в/из ЭВМ (выбор порта ввода/вывода определяется датчиком); подготовка сигнала с датчиков для ввода/вывода через выбранный порт (проектирование УСО - устройства сопряжения «датчики => порт» / «порт => исполнительное устройство»); составление алгоритма управления процессом, протекающим в объекте. Если процедура ввода и вывода информации в ЭВМ практически разработана и не представляет особых трудностей, то разработка управляющих программ, которые вырабатывают воздействие на исполнительные устройства, процесс достаточно сложный и трудоемкий.
В методическом пособии рассматривается интерфейс (посредник) между аппаратурой (hardware), прикладным программным обеспечением (application software) и пользователем компьютера (user), в частности:
1. устройство аналогового, параллельного портов ввода/вывода информации;
2. программное обеспечение работы портов: тестирование портов, прием и выдача информации через порт;
3. разработка информационных и управляющих программ для конкретных задач.
На рис. 3, 4 даны блок-схемы судовой информационно-управляющей сети.
|
Рис. 3. Схема судовой информационно-управляющей сети |
|
Рис. 4. Блок-схема системы управления первого уровня |
Упрощенная блок-схема управляющей программы дана на рис. 5.
|
Рис. 5. Блок-схема системы управляющей программы |
1. Лабораторная работа №1
Информационные системы. Разработка алгоритма обнаружения неисправностей в трубопроводе
Рассматривается система контроля передачи жидкого или газообразного вещества по трубопроводу, рис. 6.
|
Рис. 6. Функциональная схема системы контроля |
1 – трубопровод, 2 – насосные станции, 3 – датчики давления (Д1, Д2, …), 4 – управляющие (или информационные) ЭВМ, одна расположена вблизи места сбора информации, другая в диспетчерском пункте. Задача ЭВМ – собирать, обрабатывать и выдавать на экран информацию, как цифровую, так и графическую, о протекании процесса на всех участках контролируемой трассы и предавать её на дальнее расстояние.
Рассмотрим одну из проблем, возникающих на трубопроводе – прорыв трубы при возрастании давления после включения подкачивающего насоса. От того, как быстро диспетчер определит аварию на трубопроводе, зависит величина материальных потерь и уровень загрязнения среды в окрестностях прорыва. С другой стороны, ложная тревога также влечет за собой материальные затраты – ошибочный вызов техник, ремонтных бригад, … Задача программиста – составить алгоритм, с помощью которого можно быстро и с высокой степенью достоверности определить наличие аварии.
После включения насоса в момент t0 начинает подниматься давление в трубопроводе. На рис. 7, 8 показаны возможные виды переходных процессов, протекающих без аварии (рис. 7) и подчиняющихся закону (1), и с аварийными ситуациями (рис. 8).
| (1) |
|
Рис. 7. Динамика развития процесса без внештатных ситуаций |
|
Рис. 8. Возможные варианты развития ситуаций |
На рис.7, 8 и формуле (1):
Δt – интервал времени между опросами датчиков давления; Pt – ожидаемое (теоретическое); Рr – реальное, истинное значение давления в трубопроводе; t0 – момент включения насоса; t1 – момент начала изменения давления, зафиксированный первым датчиком; tj – момент изменения давления, зафиксированный j-ым датчиком; τ* – момент аварии; ti – текущий момент опроса датчиков; Pj(ti) – значение давления, зафиксированное j-ым датчиком в момент ti; Рj* – установившееся значение давления в j-ой точке рассматриваемого участка трубопровода; Т – постоянная времени, характеризующая инерцию (скорость) развития переходного процесса; τ1=t1-t0 – время задержки в развитии процесса в первой точке; τj – задержка в развитии процесса в j-ой точке.
Рассмотрим упрощенную ситуацию, когда используется информация только с одного датчика давления, расположенного посередине между насосными станциями. Допустим, что в момент t* произошел прорыв трубы. В этом случае вид переходного процесса (после момента аварии) начинает меняться. С точки зрения распознавания процесса возможны различные ситуации: от простейших – рис. 8, а, до сложных – рис. 8, б.
График зависимости Рr(t) выводится на экран диспетчеру*. Обычно диспетчер определяет аварию в конце переходного процесса, когда устанавливается давление ниже ожидаемого. Это происходит с опозданием и приводит к большим материальным потерям.
В работе предлагается автоматизировать процесс анализа нарастания давления, т. е. составить алгоритм, в результате работы которого на экран ЭВМ выходила бы информация об изменениях в процессе, например, «режим протекает нормально», «Вероятность аварии … %» или «в момент t =… произошла авария в районе датчика …”. Если считать, что процесс повышения давления подчиняется экспоненциальному закону, то можно оценить ожидаемые потери.
В данной работе нет процедуры опроса датчиков состояния (выхода в порт). Процесс получения конкретных значений давления осуществляется путем выбора чисел из открытого на жестком диске числового файла.
Задания на выполнение лабораторной работы
Задание 1.
Зарисовать приблизительный вид будущего процесса нарастания давления в трубопроводе. Открыть на жестком диске файлы (запись процедуры дана в приложении), в которые занести численные значения величин Pj(t), согласно нарисованным графикам. Значения давления расставить произвольно. Количество точек в массивах (для каждого датчика свой массив) должно быть не меньше 15.
Задание 2.
Разработать алгоритм анализа протекания процесса и передачи информации на верхний уровень.
Задание 3.
Промоделировать процесс контроля за состоянием датчиков системы.
Отчет должен содержать блок-схему и листинг протестированной на ЭВМ программы.
Таблица 1. Варианты заданий к лабораторной работе №1.
Параметры Номер варианта | Количество датчиков | Авария до или после n-го датчика. Тип аварии |
1 | 2 | Утечка 1-го типа (рис. 8а) до 1-го датчика |
2 | 3 | Утечка 1-го типа после 1-го датчика |
3 | 2 | Утечка 1-го типа после 2-го датчика |
4 | 3 | Утечка 1-го типа после 3-го датчика |
5 | 2 | Утечка 2-го типа (рис. 8б) до 1-го датчика |
6 | 3 | Утечка 2-го типа после 1-го датчика |
7 | 2 | Утечка 2-го типа после 2-го датчика |
8 | 3 | Утечка 2-го типа после 3-го датчика |
9 | 2 | Сбой в работе 3-го датчика (рис. 8) |
10 | 3 | Сбой 2-го датчика |
11 | 2 | Сбой 1-го датчика |
12 | 3 | Сбой 1-го и 2-го датчика |
13* | n | Развитие процесса по типу, представленному на рис. 7 без сбоя датчиков |
14* | n | Развитие процесса по типу, представленному на рис. 7, сбой при получении информации с датчиков |
15* | n | Развитие процесса по типу, представленному на рис. 7, отказ одного из датчиков. |
16* | n | Развитие процесса по типу, представленному на рис. 8б, к концу работы отказ всех датчиков. |
На рис. 9 представлен пример блок-схемы программы сбора, обработки и выдачи информации о протекании технологического процесса.
|
Рис. 9. Блок-схема системы управляющей программы |
2. Лабораторная работа №2
ЭВМ для управления технологической линией
Современный уровень вычислительной техники (высокое быстродействие, достаточная память, разнообразные порты для ввода и вывода сигналов) позволяет использовать машины для управления сложными технологическими процессами. Качество работы линии (быстродействие, точность позиционирования) зависит как от типа и характеристик элементов, входящих в систему, так и от программного обеспечения работы системы. На рис. 10, 11 представлены схема соединения объектов линии с ЭВМ и принципиальная схема технологического процесса.
|
Рис. 10. Схема соединения ЭВМ с объектами управления |
|
Рис. 11. Функциональная схема системы управления |
Задача системы управления: перенести деталь, расположенную из платформе П из одной точки пространства в другую. Заданное (исходное) положение детали – нулевое.
Двигатели 1, 2, 4, 5 и электромагнит 3 являются для ЭВМ объектами управления ОУ1, ОУ2 и т. д.
Объекты управления (ОУ) имеют датчики обратной связи (ДОС) или непрерывного типа (сельсины), когда выходной сигнал с датчика пропорционален измеряемой величине (углу поворота вала двигателя) или дискретного типа (контакторы), когда выходной сигнал принимает значение 0, если угол не отработан, или 1 при отработанном угле. Иногда линия не снабжена датчиками состояния объектов управления, то есть ЭВМ работает только на выдачу управляющего сигнала, входные каналы на ввод информации от датчиков отсутствуют. В этом случае управление каждым объект происходит строго по времени.
Принцип работы:
Двигатель Д1 (ОУ1) по сигналу управления с ЭВМ (U1=1, напряжение на 1-ой выходной линии повышается) поворачивает платформу до тех пор, пока очередная деталь не встанет в положение 0. Информация о наступлении этой ситуации поступает либо от датчика – уровень напряжения на 1-ой входной линии изменяется, либо от таймера, когда процесс жестко лимитируется во времени – на процедуру поворота отводится определенное количество секунд. После наступления необходимой ситуации ЭВМ снимает сигнал с линии управления ОУ1 (U1=0) и подаёт управляющий сигнал на второй объект – двигатель Д2 (U2= –1). Двигатель запускается. Червячная передача, преобразует угол поворота вала двигателя в линейное перемещение (φ2 => L2), электромагнит (ОУЗ) опускается на величину L2. После отработки двигателем Д2 величины φ2 (или опускание электромагнита на расстояние L2 ) ЭВМ снимает сигнал управления с двигателя (U2 = 0) и подает напряжение на линию 3 – на электромагнит (U3 = 1). Захват срабатывает, и через промежуток времени τ3 (время для прочного срабатывания зажима) двигатель Д2 (ОУ2) получает сигнал на подъём детали (U2 = +1). После подъема детали на высоту L ЭВМ останавливает Д2 и запускает двигатель Д4 (ОУ4) для поворота его на угол φ4. Блок (деталь, электромагнит, Д2) перемещается в новую точку пространства, где деталь опускается на транспортер, после чего пустой захват поднимается вверх. Далее запускают двигатели Д4, Д5, Д1. Д4 – возвращает зажим в первоначальное положение, Д5 – продвигает деталь на расстояние L5, освобождая место для новой детали, После чего цикл повторяется заново – Д1 подводит следующую деталь в 0 положение, Д2 опускает пустой зажим,….
Таким образом, в данном технологическом процессе ЭВМ в определенные моменты выставляет сигналы на выходные линии, а в промежутках между этим процессом опрашивает входные линии и таймер, для того чтобы не пропустить момент изменения сигнала на выходных линиях (момент останова одного двигателя и запуск другого).
Останов любого из двигателей может происходить по одному из трех признаков:
1. На валу двигателя поставлен датчик обратной связи (ДОС) непрерывного типа (сельсин), который вырабатывает напряжение, пропорциональное углу поворота вала Uoc = к·φ. ЭВМ периодически опрашивает ДОС, и при отработке двигателем заданной величины (φ=φ*) ЭВМ подает сигнал останова U = 0.
2. Останов двигателя происходит по сигналу с контактора: при повороте вала двигателя на заданный угол (φ*) срабатывает контактор, замыкающий электрическую цепь. В этом случае в ЭВМ с ДОС поступает сигнал 0 (контактор разомкнут), или 1 (контактор замкнут).
3. Останов объекта управления (сброс на ноль сигнала управления на выходной линии ЭВМ) происходит по истечению заданного интервала времени. При запуске объекта начинается опрос таймера и при увеличении показания таймера от начального значения на заданную величину τ ЭВМ подает сигнал останов двигателя – напряжение на соответствующей выходной линии сбрасывается на ноль.
Задания на выполнение лабораторной работы
Задание 1.
Представить осциллограммы работы всех объектов управления от начала поворота платформы с деталями на угол φ1 до возврата зажимов в исходное положение.
Исходное положение объектов управления:
Платформа с деталями неподвижна, деталь расположена на расстоянии φ1 от нулевого положения; зажим поднят; напряжение с электромагнита снято (U3 = 0); ОУ4 (двигатель 4), в положении φ4 = 0, напряжение снято (U4 = 0); транспортёр стоит (U5=0) в положении, когда деталь, поставленная в предыдущем такте, продвинута на расстояние L5.
Задание 2.
Составить блок-схему алгоритма управления технологическим процессом. Согласно варианту заданий некоторые объекты имеют дискретные датчики, некоторые работают по таймеру, аналоговых датчиков нет.
Задание 3.
Составить и отладить Basic-программу. Опрос входных линий моделировать опросом клавиатуры. При запросе «ввести переменную» вводить «0» или «1» в зависимости от того, сработал или нет опрашиваемый датчик.
Таблица 2. Варианты заданий к лабораторной работе №2.
Номер варианта | Количество дискретных входов – линий (датчиков) | Одновременно работающие двигатели |
1 | L1, L2, L4, L5 | D1, D2 (вниз) |
2 | L1, L2, L4 | D1, D5 |
3 | L1, L2, L5 | D2 (вверх), D4 |
4 | L1, L4, L5 | D4 (движение с деталью), D5 |
5* | L2, L4, L5 | D2 (вверх), D4, D5 |
6* | L1, L2 | D4, D2 (вниз), D5 |
7 | L1, L4 | D1, D2 |
8 | L1, L5 | D1, D5 |
9 | L2, L4 | D2, D5 |
10 | L2, L5 | D2(вверх), D4 |
11 | L4, L5 | D4 (движение с деталью), D5 |
12* | L1 | D2 (вверх), D4, D5 |
13* | L2 | D4, D2 (вниз), D5 |
14 | L4 | D1, D2 |
15 | L5 | D1, D5 |
16 | 0 | D2, D5 |
17 | 0 | 0 |
18 | L1, L2, L4, L5 | 0 |
Отчет должен содержать:
4. Временные осциллограммы работы линии.
5. Блок-схему программы.
6. Листинг программы.
3. Лабораторная работа №3
Использование дискретного
параллельного порта для автоматизации процесса контроля за техническими объектами
Целью работы является изучение принципа работы дискретного параллельного порта, его аппаратной реализации и программного обеспечения.
Порт предназначен для ввода/вывода цифровых сигналов уровня 0 или 5В на ТТЛ - линии. Сигналы на линии держат микросхемы, основанные на транзисторно-транзисторной логике (ТТЛ, TTL) — разновидности цифровых логических микросхем. Название транзисторно-транзисторный возникло из-за того, что транзисторы используются как для выполнения логических функций (например, И, ИЛИ) от входных сигналов, так и для усиления выходного сигнала (в отличие от резисторно-транзисторной и диодно-транзисторной логики). ТТЛ получила широкое распространение в компьютерах, электронных музыкальных инструментах, а также в контрольно-измерительной аппаратуре и автоматике. Благодаря широкому распространению ТТ-логике входные и выходные цепи электронного оборудования часто выполняются совместимыми по электрическим характеристикам с ТТЛ. Максимальное напряжение в схемах с ТТЛ может достигать 24В, однако это приводит к большому уровню паразитного сигнала. Достаточно малый уровень паразитного сигнала при сохранении достаточной эффективности достигается при напряжении 5В, поэтому данная цифра и вошла в технический регламент ТТЛ.
Плата используемого в работе цифрового параллельного порта L032 упрощенна и включает только цифровой дискретный порт. Порт принимает сигналы от 16-ти (максимальное количество входных линий для данной платы) дискретных датчиков – уровень сигнала на линии 0В÷5В. Дискретные датчики уровня, температуры, давления, задымленности, уровня какого-либо вещества в окружающей среде (утечки газа)... переключают напряжения на линиях с 0В до 5В в момент превышения контролируемой величины своего допустимого значения.
Кроме принимающих входных линий порт имеет 16 выходных линий, на которые по командам управляющей программы процессор может выставить сигналы уровня 0В или 5В, предназначенные для управления приводами, сигнализацией,... .
3.1. Описание команд обращения к регистрам порта. Чтение цифровых линий
Ввод (чтение) информации с входных линий и вывод (запись) на выходные линии осуществляется через два 8-разрядных регистра данных с адресами 300h и 301h.
Существуют схемы дискретного порта, где регистры мультиплексированы, то есть для записи (вывода управляющего сигнала на исполнительные устройства) и чтения (ввода информации от датчиков) используются одни и те же регистры, то устройство управления потоком информации на плате порта осуществляет переключение регистров на чтение или запись.
На внешнем разъёме платы имеются 16 цифровых входных линий, состояние которых может быть прочитано по указанным адресам.
|
Рис. 12. Входные линии порта |
Данные с датчиков D1-D8 соответствуют состояниям первых восьми входных ТТЛ линий (L1–L8). Информация с внешнего разъёма поступает в регистр 300h. Данные с датчиков D9-D16 через вторые восемь ( L9–L16) линий поступают в регистр 301h.
Нет необходимости сшивать эти коды, так как каждый бит регистров связан с конкретным датчиком. При каждом чтении цифровых линий генерируется цифровой строб на линии "Строб чтения цифрового порта" на внешнем разъёме платы. Этот строб заставляет управляющее устройство платы сбрасывать старую информацию в регистрах и записывать новую.
Команда для считывания информации с регистра и записи этого кода в ячейку ОЗУ, где она будет храниться под именем переменной, например, " kod", записывается следующим образом:
kod=INP(&HXXX)
rem ХХХ - адрес опрашиваемых линий, ХХХ = 300, если опрашиваются линии 1–8. ХХХ = 301, если опрашиваются линии 9 – 16.
При вводе информации с цифровых линий возникает необходимость определения состояния конкретных разрядов регистров, к которым подключены датчики.
Для определения состояния k-го разряда или k+1-го бита (например, k =3, т. е. 0000?000) необходимо наложить на полученный KOD маску: МASKA=2k (в данном случае МASKA=8). Для этого выполним команду
rezult = MASKA AND KOD
Например. Нас интересует ситуация, когда ОДНОВРЕМЕННО сработали 2 датчика, подсоединенных к линиям 2 и 5 (n и m). После опроса регистра 300h на полученный код накладываем маску 18, так как 1810=000100= 2n-1 +2m-1).
Если результат опроса равен 18, то интересующие нас датчики выставили на линию 1, в противном случае либо один из датчиков, либо оба находятся в нулевом состоянии.
МASKA = ,
KОД = ,
результат побитового умножения двух переменных
МASKA и KОД дает
result = =1810
Таким образом, процедура определения состояния датчика, например, подсоединенного к K-той линии реализуется следующими двумя командами:
1) Опрос регистра с адресом ХХХ
A = INP(&HXXX) (3)
A - имя переменной (ячейки ОЗУ), куда заносится результат опроса.
2) Наложение маски на k-1 разряд (k-й бит) полученного результата – процедура <AND> – побитное умножение.
Примечание. Не путать! К-я линия ® К бит ® К-1 разряд, т. е. сигналы с линий 1,2,3, …, записываются в разряды 0,1,2,… .
В =2 k-1 AND A (4)
B - результат наложение маски на k-1 разряд.
Если результат В=0, следовательно, k-1 разряд в регистре равен нулю и k-ый датчик не подавал сигнал, если В=2k-1, то в соответствующем разряде записана 1.
IF В=0 then Dk=0 ELSE Dk=1
Пример1. Нас интересует состояние двух датчиков, соединенных с линиями 9 и 10 (линии связаны с регистром 301h) . Для этого необходимо определить состояние первых двух битов регистра 301h.. Для этого выполним следующие команды:
a = INP(&H301)
Опрашиваем регистр с адресом 301h, в котором выделим первые два бита с помощью маски *21 + 1*20=3, 310= ).
b = a AND 3. Накладываем маску <3> на данные,
считанные из регистра.
По величине полученного числа b определяем состояние первых двух битов регистра 301: если b10 =0, то первые два бита - 002, если b10=1, то в опрошенном регистре состояние первых двух битов 012, если b10=2, то состояние битов 102 и если b10 =3, то в регистре имеем 112 ).
Пример 2. Нас интересует состояние двух датчиков, которые подсоединены к 1 и 9 линиям, т. е. к нулевым разрядам регистров 300h и 301h. В этом случае решается задача выделения нужной информации из кодов KOD1 и KOD2, полученных после опроса двух регистров 300h и 301h. Эта процедура выполняется наложением одной и той же маски на интересующие нас разряды. В данном примере маска: 000000= 20).
KOD1 = INP(&H300)
KOD2 = INP(&H301)
В1 =2 0 AND KOD1
В2 =2 0 AND KOD2
По значениям чисел В1 и В2 определяем состояние датчиков.
3.2. Установка цифровых ТТЛ линий
На внешнем разъёме платы имеются 16 цифровых ТТЛ выходов (рис. 13), состояние которых может быть изменено записью двоичной информации (0/1) в любые разряды регистров 300h или 301h. На выходных проводах порта держится напряжение 0В, если в соответствующем бите регистра записан 0 или 5В, если записана 1. Команда записи кода N в выходные регистры записывается следующим образом
|
Рис. 13. Выходные линии порта |
OUT &H300, N N – код, выставляемый на линии с 1 по 8, десятичное число, не превышающее 25510 =
OUT &H301, M M– код, выставляемый на линии
9 – 16, десятичное число, не превышающее 25510
При выводе сложного кода на линию (для запуска нескольких исполнительных устройств или сигнализации) возникает задача ″сшивания числа″.
Пример 1. Необходимо запустить три исполнительных устройства, подсоединенных к линиям 1,3,10.
Для этого в регистр 300h запишем KOD1=, а в регистр301h – KOD2=и выполним команду вывода информации из ЭВМ во внешнее устройство:
OUT &H300, 5
OUT &H301, 2
или
KOD1=5
KOD2=2
OUT &H300, KOD1
OUT &H301, KOD2
После этой процедуры на 13-ти выходных линиях будем иметь 0В и на 3-х (1, 3 и 10-ой) – 5В Такое состояние линий продлится до тех пор, пока программным путем в выходные регистры не будут записаны другие коды.
Пример 2. Задача усложняется, если после очередного опроса появилась необходимо запустить дополнительно исполнительное устройство, подсоединенное, например, к линии 2. Предыдущее состояние линии (пример выше) не должно измениться. Код, который на предыдущем цикле был выставлен на линии 1–8 находится в переменной " KOD1".
Изменение состояния второй линии – ХХХХХХ1Х (без изменения состояния других линий) осуществляется следующей процедурой
А=(KOD1) and (2)
OUT &H300, А
После этой процедуры 16-ть выходных линиях будут находится в состоянии 00000Такое состояние линий продлится до тех пор, пока программным путем в выходные регистры не будут записаны другие коды.
4.2. Задания на выполнение лабораторной работы
Во всех вариантах
1) частота мигания лампочек 5 раз за время опроса.
2) опрос линий проводится каждые 20-30 секунд.
3) считается, что ситуация улучшается, если количество сработанных датчиков на текущем опросе меньше, чем на предыдущем.
4) считается, что Л15 и Л16 находятся на удаленных постах контроля.
Как правило, для работы с портами требуется знание текущего времени или возможность в течении заданного промежутка времени держать выходную линию порта под напряжением.
Определение текущего значения времени осуществляется следующей кмандой
Ttek_sec = TIMER
Этой командой в переменную Ttek копируется число, равное количеству секунд, прошедших от начала отсчета – полночи/
Для выделения часов, выполним команду целочисленного деления (с отбрасыванием дробной части)
Ttek_hour = int(TIMER/3600)
Расчет остатка от деления (для дальнейшего определения минут и секунд)
y = mod (TIMER/3600)
Минимальное изменение времени, которое фиксируется в ТАЙМЕРЕ 0,05 сек. Если требуется задать время, в течение которого линия должна находится под напряжением, много меньше, чем 0,05сек, то это можно сделать следующим образом.
1. Определяем состояние таймера
t0 = TIMER
2. Заказываем в цикле какую-либо процедуру и выполняем её n раз.
n=1000
for i=1 to n
y=sin(0.1)
next i
3. Определяем время окончания цикла по таймеру.
tk=TIMER
4. Рассчитываем время одной процедуры.
dt=(tk-to)/10000
PRINT "время выполнения функции 1 раз равно ";
dt
После этого можно вычислить, сколько раз нужно выполнить цикл для получения нужной задержки.
3.3. Задания на выполнение лабораторной работы
1. Опрашиваются 4 дискретных датчика (с D6 по D9). Если сработал хотя бы 1 из них, то зажигается соответствующая лампочка (Л6-Л9). Если сработали 3 или более датчиков, то зажигаются соответствующие лампочки, и начинает мигать Л16. Если следующий опрос показывает, что ситуация с датчиками не улучшилась, то Л16 горит постоянно. При улучшении ситуации Л16 гаснет.
2. Опрашиваются 4 дискретных датчика (1,2,8,9). Если сработал один любой датчик, то соответствующая лампочка начинают мигать. Если сработали более 2-х датчиков, то мигают не только соответствующие лампочки, но и Л16. Если ситуация ухудшается, то Л16 горит постоянно. При улучшении ситуации Л16 мигает. Гаснет Л16, если сигнал держат не более 2-х датчиков.
3. Опрашиваются 3 дискретных датчика (3, 7, 13). Если сработал любой из датчиков, то соответствующая лампочка начинает мигать. Если ситуация по сработанным линиям не улучшится к следующему опросу, то соответствующие лампочки мигают в 2 раза чаще., если ситуация на линии не улучшается в последующих опросах, то лампочки горят постоянно.
4. Опрашиваются 3 датчика D7 - D9. Если сработал один или два датчика, то зажигается соответствующая лампочка L1 – L3. Если сработали 3 датчика, то зажигаются не только соответствующие лампочки, но начинает мигать Л4. Если ситуация с датчиками не улучшится к следующему опросу, то Л4 горит постоянно. При улучшении ситуации Л4 гаснет в том случае, если только один датчик держит сигнал.
5. Опрашиваются 4 дискретных датчика (D1–D4). Если сработал хотя бы 1 датчик, то начинает мигать соответствующая лампочка. Если ситуация не улучшится к следующему опросу, то начинает мигать Л15. Если ситуация не улучшится и в следующий опрос, то лампочки горят постоянно. При улучшении ситуации Л15 гаснет сразу.
6. Контролируется состояние 4 датчиков (D1-D4). Если сработал хотя бы 1 датчик, то загорается соответствующая лампочка. Если сработали более чем 2 датчика, то загораются Л15 и Л16. Если ситуация не улучшится к следующему опросу, то все лампочки начинают мигать. При улучшении ситуации Л15 гаснет в том случае, если не более 2-х датчиков держат сигнал, Л16 гаснет в том случае, если только один датчика держит сигнал.
7. Контролируется состояние 4 датчиков (2-5). Соответствующие сработанным датчикам лампочки начинают мигать только в том случае, если сработало более чем 2 датчика. Если ситуация не улучшится, к следующему опросу то лампочки должны гореть постоянно. Л16 загорается, если среди сработанных датчиков есть D3. Л16 гаснет, если среди сработанных датчиков нет датчика линии 3.
8. Опрашиваются 3 датчика (1,10,15). Если сработали 2 любых датчика, то мигают соответствующие им лампочки – Л1, Л2, Л3. Если сработали все датчики, то начинает мигать Л15. При улучшении ситуации, соответствующая лампочка гаснет, а через 5 секунд гаснет Л15.
9. Опрашиваются 8 датчиков (с9 по 16). При срабатывании любого из датчиков зажигаются соответствующие лампочки – Л1-Л8. Если ситуация с датчиками не улучшится к следующему опросу линий, то дополнительно загорается и горит постоянно Л16. При улучшении ситуации, соответствующие лампочки продолжают мигать в течение 10 сек, после чего гаснут и гаснет Л16.
10. Контролируется состояние 5 датчиков (1-5). Соответствующие сработанным датчикам лампочки начинают гореть только в том случае, если сработало более чем 3 датчика. Если ситуация не улучшится к следующему опросу, загорается Л16. Л16 гаснет, если ситуация остается критической менее, чем по 3 датчикам.
11. Опрашиваются 4 дискретных датчика (D1, D2, D8, D9). Если сработал любой датчик, то загорается соответствующие ему лампочка (Л3, Л4, Л8, Л9). Если сработали более чем 2 датчика, то дополнительно начинает мигать Л15. При улучшении ситуации по какому-нибудь датчику, соответствующая ему лампочка гаснет, а Л15 начинает мигать в 2 раза медленнее. Гаснет Л15, если ситуация остается критической только по одному датчику.
12. Контролируется состояние 2-х датчиков (4 и 14). Если сработал 1 любой датчика, то загорается соответствующая ему лампочка (Л1или Л2). Если сработали оба датчика, то дополнительно начинает мигать Л3. Если ситуация не улучшилась к следующему опросу, то дополнительно начинает мигать Л4. При улучшении ситуации лампочка Л4 гаснет. Если к следующему опросу ситуация повторно не ухудшилась, гаснет и Л3.
13. Опрашиваются 4 дискретных датчика (1, 2, 8, 9). Если сработали любые датчики, то загораются соответствующие им лампочки. Если сработали более чем 2 датчика, то дополнительно начинает мигать Л15, если ситуация не улучшится к следующему опросу, то начинает мигать Л16. При улучшении ситуации сначала гаснет Л16, после следующего улучшения гаснет Л15.
Отчет по заданиям должен содержать:
1. схему соединения датчиков и сигнализационных лампочек с битами входных и выходных регистров данных порта;
2. блок-схему программы контроля состояния входных линий;
3. листинг программы;
4. в качестве примера указать, какое значение будут принимать биты входных регистров при различном состоянии датчиков и, соответственно этим состояниям, указать значение принимаемых и выставляемых кодов в 2-ом и 10-ом исчислениях.
4. Некоторые команды, используемые
при работе с портами
1. Переписать данные из ОЗУ в файл.
В ОЗУ данные появляются после выполнения команд опроса датчиков, или после ввода с клавиатуры.
Датчик /клавиатура→ ОЗУ → ЖД (файл)
INPUT a$, kod
WRITE #1, a$, kod; rem в файл moj. txt будет скопирован текст (символьная переменная до 255 байт) из ячейки <a$>, и число из ячейки ОЗУ – переменная <kod>
или
PRINT #1, a$, kod rem в файл moy. txt будет скопированы данные подряд, без разделения их запятыми, символьные переменные не будут выделены кавычками.
2. Переписать данные из файл в ОЗУ (моделирование процедуры опроса. Предварительно необходимо открыть файлы на ввод (for input) ЖД → ОЗУ
INPUT #1, a$ rem из первого файла (с символьными переменными) один символ копируется в ОЗУ
INPUT #2, kod rem из файла 2 (с числовыми переменныи) одно число копируется в ОЗУ
Пример. Необходимо скопировать все числа из файла #1 на ЖД в ОЗУ.
Данные будут заноситься в массив Z(i).
i=0
DO WHILE NOT EOF(1) rem EOF – End Of File → выполняй процедуры пока файл не пуст
i=i+1: INPUT #1, Z(i) Перезапись из файла в массив
LOOP указатель в файле смещается вправо к следующей записи.
3. Выход из программы по нажатию клавиши <ESC>, код которой равен 27.
При отладке этот оператор можно ставить в любом месте программы.
K$=INKEY$
IF K$= CHR$(27) THEN END (или THEN GOTO < метка>)
Второй вариант, чтобы успеть нажать клавишу можно сделать задержку на n сек.
SLEEP 5
K$=INKEY$
IF K$= CHR$(27) THEN END
4. Копирование из файла в файл
SHELL “COPY C:\net\A. txt С:\B. txt” rem SHELL – команда, разрешающая программе, написанной на языке BASIC, выполнить команду COPY из библиотеки дисковой операционной системы.
5. Разрешить клиенту использовать сервер (ЭВМ с № 000.168.1.7) и общую для сети папку на сервере <net>.
Имя папки может быть любым, необходимо только, чтобы папка была доступна любой клиентской ЭВМ, входящей в сеть.
SHELL “net use g:\\190.168.1.7\net” rem Эта команда создает на клиентской машине виртуальный диск g:\, физически им является жесткий диск серверной машины, в частности, папка <net>. Клиент на своей машине может открыть на диске g:\ файл и работать с ним.
SHELL “net use g:\delete” rem Эта команда всегда работает в паре с верхней комаой. Она снимет разрешение использовать диск сервера.
6. Передать на сервер результаты опроса датчика (опрос проводится клиентской ЭВМ и записывается в файл, открытый на виртуальном диске).
OPEN “g:\A. txt” FOR OUTPUT AS #1 Rem далее идут команды опроса датчиков
KOD = …. KOD – это число ( результат
PRINT #1, KOD опроса датчика).
После выполнения этой команды на сервере на диске С:\ в папке <net> появляется файл под именем “A. txt”, в которую можно скопировать любую информацию с клиентской ЭВМ.
7. Вывод информации на экран в заданное “окно” .
Вывод пиксельной информации n– номер опрашиваемого датчика, KOD – код, полученный с датчика.
Головная программа: первые два оператор объявление подпрограмм
1 DECLARE SUB opros (n, KOD)
2 DECLARE SUB printing (n, KOD)
3 DIM SHARED a$(1): a$(3)=″Датчик″
Rem открытие окон
4 VIEW(10,10)-(630,225),,C
5 VIEW(700,335-(800,550),,C
Rem вывод пиксельной информации
6 LINE(0,25)-(620,25),C
7 LINE(750,25)-(750,600),C
8 …
9 … операторы головной
программы
n END
Rem Четвертая команда задает
размеры первого окна, 5-я – второго.
Все части фигур, не входящих в
указанные окна,
невидимы.
![]() |
Rem вывод символьной информации
SUB printing (n, KOD)
LOCATE 6,4
rem Расположение окна задается
командой типа 4,5
PRINT a$(3); n; “принятый код=“; KOD
END SUB
5. Вопросы для тестирования знаний
1) Как записать единицу в n-ый бит регистра данных?
2) Как записать единичную информацию в несколько бит?
3) Как считать информацию с n-ого бита?
4) Как считать информацию с нескольких бит?
5) Как наложить маску на n-ый бит?
6) Как наложить маску на несколько бит?
7) Как записать единицу в n-ый бит, не затрагивая старую информацию?
8) Как записать единицу в несколько бит, не затрагивая старую информацию?
9) Как записать ноль в n-ый бит, не затрагивая старую информацию?
10) Как записать ноль в несколько бит, не затрагивая старую информацию?
11) Какие регистры аналогового порта должны быть задействованы в пользовательской программе?
12) С какой целью используются регистры данных, статуса и управления?
14) При формировании напряжения на выходной линии аналогового порта необходимо получить достаточно большое напряжения. Для этого в регистры порта записываю код значительно больше 255. Как разбить код на два регистра?
15) Какие регистры используются в пользовательской программе при работе с дискретным параллельным портом?
16) Какие регистры используются в пользовательской программе при работе с дискретным последовательным портом?
17) Как зарезервировать файл на жестком диске?
18) Как записать символьную информацию в файл?
19) Как записать численную информацию в файл?
20) Как считать символьную информацию из файла?
21) Как считать численную информацию из файла?
22) Как скопировать информацию (числа) из файла в массив?
23) Можно ли в один файл записать численную и символьную информацию?
24) Какие порты ЭВМ можно использовать для управления объектами (лабораторная работа №2)?
25) Какие порты ЭВМ можно использовать для сбора информации о состоянии объектов (лабораторная работа №2)?
26) Возможна ли совместная работа объектов 1 и 5, 1 и 2, 1 и 3, 1 и 4, 2 и 4, 2 и 5, 3 и 5, 4 и 3, 4 и 5 (лабораторная работа №2)?
27) Что означает термин «управление процессом по таймеру» (лабораторная работа №2)?
28) Какие порты ЭВМ можно использовать для сбора информации о состоянии объектов (лабораторная работа №1)?
29) Может ли датчик Dj зафиксировать нарушения в протекании процесса раньше, чем датчик Dj-1 (лабораторная работа №1)?
30) Как определить, что давление не вышло на заданный уровень (лабораторная работа №1)?
6. Задания на курсовую работу
При программировании следующих задач в первом блоке (исходные данные) должны по запросу вводится следующие величины:
t1 – период времени, по истечению которого производят очередной опрос входных линий,
t2 – период времени, в течение которого лампочки находятся под напряжением, такое же время – без напряжения при реализации режима мигания.
L(16) – массив, в который заносится список контролируемых линий, L(i)=0 –датчик на i-линии отсутствует, L(i)=1– i-ая линия соединена с датчиком и должна находится под контролем,
k – количество датчиков, подключенных к входным линиям,
k1 – количество сработанных датчиков,
k2 – количество датчиков, на срабатывание которых реагирует L15,
k3 – количество датчиков, на срабатывание которых реагирует L16,
n – количество опросов входной i-ой линий, после которых начинает реагировать i-ая сигнализация:
n=1 – после очередного опроса,
n=2 – после второго опроса, подтверждающего наличие того же сработанного датчика,
n1 – количество опросов линий, в течение которых должно подтверждаться улучшение ситуации, после которых может реагировать сигнализация.
n2 – количество опросов линий, в течение которых подтверждается ухудшение ситуации, после чего может среагировать сигнализация.
Считается, что ситуация улучшается, если количество сработанных датчиков на текущем опросе меньше, чем на предыдущем.
Считается, что ситуация ухудшается, если количество сработанных датчиков на текущем опросе не изменилось или стало больше, чем на предыдущем.
Общая постановка задачи:
Ведется контроль над состоянием k датчиков. При срабатывании любого из датчиков, например, i-го, должна сработать соответствующая датчику световая сигнализация. Для этого на i-ой выходной линии ЭВМ выставляет управляющий сигнал, в результате чего лампочка начинает мигать. Напряжение управления состоянием сигнализации выставляется только в том случае, если в течении n опросов ситуация повторяется. Если сработало k2 или более датчиков, то дополнительно начинает мигать L15. Если сработало k3 или более датчиков, то дополнительно начинает мигать L16. Отключение сигнализации проводить согласно вариантам задачи.
1. Если ситуация с момента начала мигания L15 или L16 через n2 опроса не улучшилась, то постоянно горят L15, L16 и все i-ые лампочки. Если последующий опрос показал улучшение ситуации, то гаснут соответствующие i-ые лампочки и L15. L16 гаснет, если подтверждение об улучшении ситуации идет в течение n1 опросов.
2. Если ситуация на i-ой входной линии не улучшилась через n2 опросов, i-тая лампочка горит постоянно. Если i-тая лампочка мигала, то она гаснет, если на i-ой входной линии в течение n1 опросов подтвердилось улучшение ситуации. Если i-тая лампочка горела, то она гаснет, если n1+1 опрос подтвердил улучшение ситуации. L15 и L16 гаснут одновременно в том случае, если количество сработанных датчиков стало меньше, чем k2
3. Если ситуация на i-той входной линии не меняется через 3 опроса, то соответствующая лампочка горит постоянно. Если L15 и L16 мигали и ситуация на входных линиях непрерывно от опроса к опросу ухудшается, то L15 и L16 горят постоянно. При улучшении общей ситуации на входных линиях гаснут соответствующая i-ая лампочка и L15, а L16 гаснет, если улучшение ситуации подтверждается в течение n1 опросов.
4. L15 и L16 начинают гореть постоянно и зажигается L14 после n2 опросов, если в течение этих опросов идет непрерывное ухудшение ситуации. При улучшении ситуации L15 и L16 гаснут одновременно, если L14 не горела, в противном случае L14, L15, L16 гаснут одновременно, если в течение n1 опросов подтверждается непрерывное улучшение ситуации и количество сработанных датчиков k < k2.
5. L15 начинает мигать, если количество сработанных датчиков более 50%. Если после подачи напряжения на L15 ситуация не улучшилась за n2 опроса, то все лампочки горят постоянно и зажигается L14. Если в течение n1 опросов подтверждается улучшение ситуации хотя бы на одной входной линии, то L15 гаснет. L14 гаснет, если количество сработанных датчиков стало меньше 25%.
6. Если в течении n2 опросов идет непрерывное ухудшение ситуации, все мигающие лампочки начинают гореть постоянно. Если на i-той линии подтверждается улучшения ситуации, сигнализация на i-той линии отключается. При улучшении ситуации на линиях L16 гаснет сразу, а L15. гаснет, если в течение n1 опросов идет непрерывное улучшение ситуации и на текущем опросе
k1 < k2.
На рис. 13 представлена возможная реализация следующей задачи.
Контролируется состояние 2 датчиков. При срабатывании 1-го из 2-х датчиков начинает мигать соответствующая сработанному датчику лампочка. При срабатывании 2-х датчиков сигнализация горит постоянно. Интервал мигания – dt = 1 сек, опрос датчиков через время опроса DTOP = 10 c.
|
Рис. 13. |
|
Рис. 13 (продолжение). |
Библиографический список
1. Конспект лекций.
2. Чиркова интерфейсы управляющих ЭВМ. Часть 1. Архитектура ЭВМ. Дискретно-параллельный и аналоговый интерфейсы. –Н. Новгород: изд. ФГОУ ВПО «ВГАВТ», 2007.
3. , Тетюев автоматического управления движением судна по курсу. - Л.: Судостроение, 1990.
4. , Козьминых системы управления судовыми дизельными и газотурбинными установками. - М.: Транспорт, 1990.
5. Принципиальные схемы системы автоматического контроля дизель-генераторных установок судов проекта 302.
6. Описание системы автоматики судовой холодильной установки.
Содержание
Введение……………………………………..…………… | …….....….3 | |
1 | Лабораторная работа №1 Информационные системы. Разработка алгоритма обнаружения неисправностей в трубопроводе ………......................................................... | ….…...…..7 |
2 | Лабораторная работа №2 ЭВМ для управления технологической линией…………............................................. | 9…….….12 |
3 | Лабораторная работа №3 Использование дискретного параллельного порта для автоматизации процесса контроля за техническими объектами ……………………... | …..…..….17 |
4 | Некоторые команды, используемые при работе с портами……………...………………………………………... | …..….......26 |
5 | Вопросы для тестирования знаний…...….…….……….. | ……….....30 |
6 | Задания на курсовую работу…...….…….…………….... | ……….....32 |
Библиографический список…………………………….. | ………….36 |
INPUT #2, kod rem из файла 2 (с числовыми переменныи) одно число копируется в ОЗУ
Пример. Необходимо скопировать все числа из файла #1 на ЖД в ОЗУ.
Данные будут заноситься в массив Z(i).
i=0
DO WHILE NOT EOF(1) rem EOF – End Of File → выполняй процедуры пока файл не пуст
i=i+1: INPUT #1, Z(i) Перезапись из файла в массив
LOOP указатель в файле смещается вправо к следующей записи.
3. Выход из программы по нажатию клавиши <ESC>, код которой равен 27.
При отладке этот оператор можно ставить в любом месте программы.
K$=INKEY$
IF K$= CHR$(27) THEN END (или THEN GOTO < метка>)
Второй вариант, чтобы успеть нажать клавишу можно сделать задержку на n сек.
SLEEP 5
K$=INKEY$
IF K$= CHR$(27) THEN END
4. Копирование из файла в файл
SHELL “COPY C:\net\A. txt С:\B. txt” rem SHELL – команда, разрешающая программе, написанной на языке BASIC, выполнить команду COPY из библиотеки дисковой операционной системы.
5. Разрешить клиенту использовать сервер (ЭВМ с № 000.168.1.7) и общую для сети папку на сервере <net>.
Имя папки может быть любым, необходимо только, чтобы папка была доступна любой клиентской ЭВМ, входящей в сеть.
SHELL “net use g:\\190.168.1.7\net” rem Эта команда создает на клиентской машине виртуальный диск g:\, физически им является жесткий диск серверной машины, в частности, папка <net>. Клиент на своей машине может открыть на диске g:\ файл и работать с ним.
SHELL “net use g:\delete” rem Эта команда всегда работает в паре с верхней комаой. Она снимет разрешение использовать диск сервера.
6. Передать на сервер результаты опроса датчика (опрос проводится клиентской ЭВМ и записывается в файл, открытый на виртуальном диске).
OPEN “g:\A. txt” FOR OUTPUT AS #1 Rem далее идут команды опроса датчиков
KOD = …. KOD – это число ( результат
PRINT #1, KOD опроса датчика).
После выполнения этой команды на сервере на диске С:\ в папке <net> появляется файл под именем “A. txt”, в которую можно скопировать любую информацию с клиентской ЭВМ.
7. Вывод информации на экран в заданное “окно” .
Вывод пиксельной информации n– номер опрашиваемого датчика, KOD – код, полученный с датчика.
Головная программа: первые два оператор объявление подпрограмм
1 DECLARE SUB opros (n, KOD)
2 DECLARE SUB printing (n, KOD)
3 DIM SHARED a$(1): a$(3)=″Датчик″
Rem открытие окон
4 VIEW(10,10)-(630,225),,C
5 VIEW(700,335-(800,550),,C
Rem вывод пиксельной информации
6 LINE(0,25)-(620,25),C
7 LINE(750,25)-(750,600),C
8 …
9 … операторы головной
программы
n END
Rem Четвертая команда задает
размеры первого окна, 5-я – второго.
Все части фигур, не входящих в
указанные окна,
невидимы.
![]() |
Rem вывод символьной информации
SUB printing (n, KOD)
LOCATE 6,4
rem Расположение окна задается
командой типа 4,5
PRINT a$(3); n; “принятый код=“; KOD
END SUB
5. Вопросы для тестирования знаний
1) Как записать единицу в n-ый бит регистра данных?
2) Как записать единичную информацию в несколько бит?
3) Как считать информацию с n-ого бита?
4) Как считать информацию с нескольких бит?
5) Как наложить маску на n-ый бит?
6) Как наложить маску на несколько бит?
7) Как записать единицу в n-ый бит, не затрагивая старую информацию?
8) Как записать единицу в несколько бит, не затрагивая старую информацию?
9) Как записать ноль в n-ый бит, не затрагивая старую информацию?
10) Как записать ноль в несколько бит, не затрагивая старую информацию?
11) Какие регистры аналогового порта должны быть задействованы в пользовательской программе?
12) С какой целью используются регистры данных, статуса и управления?
14) При формировании напряжения на выходной линии аналогового порта необходимо получить достаточно большое напряжения. Для этого в регистры порта записываю код значительно больше 255. Как разбить код на два регистра?
15) Какие регистры используются в пользовательской программе при работе с дискретным параллельным портом?
16) Какие регистры используются в пользовательской программе при работе с дискретным последовательным портом?
17) Как зарезервировать файл на жестком диске?
18) Как записать символьную информацию в файл?
19) Как записать численную информацию в файл?
20) Как считать символьную информацию из файла?
21) Как считать численную информацию из файла?
22) Как скопировать информацию (числа) из файла в массив?
23) Можно ли в один файл записать численную и символьную информацию?
24) Какие порты ЭВМ можно использовать для управления объектами (лабораторная работа №2)?
25) Какие порты ЭВМ можно использовать для сбора информации о состоянии объектов (лабораторная работа №2)?
26) Возможна ли совместная работа объектов 1 и 5, 1 и 2, 1 и 3, 1 и 4, 2 и 4, 2 и 5, 3 и 5, 4 и 3, 4 и 5 (лабораторная работа №2)?
27) Что означает термин «управление процессом по таймеру» (лабораторная работа №2)?
28) Какие порты ЭВМ можно использовать для сбора информации о состоянии объектов (лабораторная работа №1)?
29) Может ли датчик Dj зафиксировать нарушения в протекании процесса раньше, чем датчик Dj-1 (лабораторная работа №1)?
30) Как определить, что давление не вышло на заданный уровень (лабораторная работа №1)?
6. Задания на курсовую работу
При программировании следующих задач в первом блоке (исходные данные) должны по запросу вводится следующие величины:
t1 – период времени, по истечению которого производят очередной опрос входных линий,
t2 – период времени, в течение которого лампочки находятся под напряжением, такое же время – без напряжения при реализации режима мигания.
L(16) – массив, в который заносится список контролируемых линий, L(i)=0 –датчик на i-линии отсутствует, L(i)=1– i-ая линия соединена с датчиком и должна находится под контролем,
k – количество датчиков, подключенных к входным линиям,
k1 – количество сработанных датчиков,
k2 – количество датчиков, на срабатывание которых реагирует L15,
k3 – количество датчиков, на срабатывание которых реагирует L16,
n – количество опросов входной i-ой линий, после которых начинает реагировать i-ая сигнализация:
n=1 – после очередного опроса,
n=2 – после второго опроса, подтверждающего наличие того же сработанного датчика,
n1 – количество опросов линий, в течение которых должно подтверждаться улучшение ситуации, после которых может реагировать сигнализация.
n2 – количество опросов линий, в течение которых подтверждается ухудшение ситуации, после чего может среагировать сигнализация.
Считается, что ситуация улучшается, если количество сработанных датчиков на текущем опросе меньше, чем на предыдущем.
Считается, что ситуация ухудшается, если количество сработанных датчиков на текущем опросе не изменилось или стало больше, чем на предыдущем.
Общая постановка задачи:
Ведется контроль над состоянием k датчиков. При срабатывании любого из датчиков, например, i-го, должна сработать соответствующая датчику световая сигнализация. Для этого на i-ой выходной линии ЭВМ выставляет управляющий сигнал, в результате чего лампочка начинает мигать. Напряжение управления состоянием сигнализации выставляется только в том случае, если в течении n опросов ситуация повторяется. Если сработало k2 или более датчиков, то дополнительно начинает мигать L15. Если сработало k3 или более датчиков, то дополнительно начинает мигать L16. Отключение сигнализации проводить согласно вариантам задачи.
1. Если ситуация с момента начала мигания L15 или L16 через n2 опроса не улучшилась, то постоянно горят L15, L16 и все i-ые лампочки. Если последующий опрос показал улучшение ситуации, то гаснут соответствующие i-ые лампочки и L15. L16 гаснет, если подтверждение об улучшении ситуации идет в течение n1 опросов.
2. Если ситуация на i-ой входной линии не улучшилась через n2 опросов, i-тая лампочка горит постоянно. Если i-тая лампочка мигала, то она гаснет, если на i-ой входной линии в течение n1 опросов подтвердилось улучшение ситуации. Если i-тая лампочка горела, то она гаснет, если n1+1 опрос подтвердил улучшение ситуации. L15 и L16 гаснут одновременно в том случае, если количество сработанных датчиков стало меньше, чем k2
3. Если ситуация на i-той входной линии не меняется через 3 опроса, то соответствующая лампочка горит постоянно. Если L15 и L16 мигали и ситуация на входных линиях непрерывно от опроса к опросу ухудшается, то L15 и L16 горят постоянно. При улучшении общей ситуации на входных линиях гаснут соответствующая i-ая лампочка и L15, а L16 гаснет, если улучшение ситуации подтверждается в течение n1 опросов.
4. L15 и L16 начинают гореть постоянно и зажигается L14 после n2 опросов, если в течение этих опросов идет непрерывное ухудшение ситуации. При улучшении ситуации L15 и L16 гаснут одновременно, если L14 не горела, в противном случае L14, L15, L16 гаснут одновременно, если в течение n1 опросов подтверждается непрерывное улучшение ситуации и количество сработанных датчиков k < k2.
5. L15 начинает мигать, если количество сработанных датчиков более 50%. Если после подачи напряжения на L15 ситуация не улучшилась за n2 опроса, то все лампочки горят постоянно и зажигается L14. Если в течение n1 опросов подтверждается улучшение ситуации хотя бы на одной входной линии, то L15 гаснет. L14 гаснет, если количество сработанных датчиков стало меньше 25%.
6. Если в течении n2 опросов идет непрерывное ухудшение ситуации, все мигающие лампочки начинают гореть постоянно. Если на i-той линии подтверждается улучшения ситуации, сигнализация на i-той линии отключается. При улучшении ситуации на линиях L16 гаснет сразу, а L15. гаснет, если в течение n1 опросов идет непрерывное улучшение ситуации и на текущем опросе
k1 < k2.
На рис. 13 представлена возможная реализация следующей задачи.
Контролируется состояние 2 датчиков. При срабатывании 1-го из 2-х датчиков начинает мигать соответствующая сработанному датчику лампочка. При срабатывании 2-х датчиков сигнализация горит постоянно. Интервал мигания – dt = 1 сек, опрос датчиков через время опроса DTOP = 10 c.
|
Рис. 13. |
|
Рис. 13 (продолжение). |
Библиографический список
1. Конспект лекций.
2. Чиркова интерфейсы управляющих ЭВМ. Часть 1. Архитектура ЭВМ. Дискретно-параллельный и аналоговый интерфейсы. –Н. Новгород: изд. ФГОУ ВПО «ВГАВТ», 2007.
3. , Тетюев автоматического управления движением судна по курсу. - Л.: Судостроение, 1990.
4. , Козьминых системы управления судовыми дизельными и газотурбинными установками. - М.: Транспорт, 1990.
5. Принципиальные схемы системы автоматического контроля дизель-генераторных установок судов проекта 302.
6. Описание системы автоматики судовой холодильной установки.
Содержание
Введение……………………………………..…………… | …….....….3 | |
1 | Лабораторная работа №1 Информационные системы. Разработка алгоритма обнаружения неисправностей в трубопроводе ………......................................................... | ….…...…..7 |
2 | Лабораторная работа №2 ЭВМ для управления технологической линией…………............................................. | 9…….….12 |
3 | Лабораторная работа №3 Использование дискретного параллельного порта для автоматизации процесса контроля за техническими объектами ……………………... | …..…..….17 |
4 | Некоторые команды, используемые при работе с портами……………...………………………………………... | …..….......26 |
5 | Вопросы для тестирования знаний…...….…….……….. | ……….....30 |
6 | Задания на курсовую работу…...….…….…………….... | ……….....32 |
Библиографический список…………………………….. | ………….36 |


















