- •Дипломный Проект
- •Содержание
- •Введение
- •1 Постановка задачи
- •1.1 Анализ исходных данных, цели и задачи проекта
- •1.2 Анализ требований к проекту
- •1.3 Анализ предметной области
- •2 Обзор имеющихся средств реализации
- •2.1 Критерии выбора имеющихся средств реализации
- •2.2 Характеристика выбранных средств реализации
- •3 Анализ возможных проблем и пути их решения
- •4 Моделирование предметной области
- •5 Описание разработки проекта, алгоритмов и программного обеспечения
- •6 Реализация аппаратных средств
- •7 Реализация программных средств
- •8 Инструкции пользователя
- •9 Экономическое обоснование
- •10 Требования охраны труда и пожарной безопасности с компьютерной техникой
- •Заключение
- •Список использованных источников
- •Приложение а
6 Реализация аппаратных средств
Важным элементом системы является центральный блок управления. Компьютер обеспечивает универсальность, гибкость, расширяемость, простоту в использовании. С помощью компьютера можно решать огромное количество совершенно различных задач в рамках одной системы. Большое количество доступного программного обеспечения, библиотек, Фреймворков, позволяют наделить систему обширнейшей функциональностью. В компьютере есть практически все для аппаратного и программного объединения различных элементов в единую систему. Современное движение производителей оборудования к использованию широко распространенных протоколов и стандартов (RS232, USB, Ethernet, TCP/IP, Wi-Fi), принятых в компьютерном мире, значительно облегчает интеграцию блоков и создание системы Умного Дома. Умный Дом нужно понимать не только как управление коммуникациями, климатом и оборудованием, сколько средой для обмена и трансформации данных, медиа-сервером, контент-сервером, чем-то таким, что не только помогает экономить энергоресурсы и повысить комфорт, но и средством развлечения и общения, позволяющим качественно изменить уровень жизни. Создание на базе ПК Умного Дома из программно-аппаратных средств, оснащенных Web-интерфейсом, является перспективным и интересным занятием, в котором может участвовать не один разработчик-пользователь. Web-сервер домашней автоматизации - это всего лишь интерфейс, а не основное ядро системы. Ядром системы является комплекс скриптов, работающих постоянно или запускаемых по расписанию, через cron, которые записывают результаты своей работы в базу данных. Например, каждые 5 минут запускается PHP-скрипт, который опрашивает все датчики температуры и записывает полученные данные в соответствующие таблицы БД. Программы, которые запущенны постоянно - это, например, скрипт-сервер дискретных датчиков 1-wire, скрипт управления отоплением, скрипт управления аэрацией, программа для видеонаблюдения, сервер 1-wire сети owfs, сервер синтеза речи и т.д. Скрипты, написанные для Web нужны для отображения состояния систем, модулей и управления "ядерными" программами и процессами.
Самая сложность часть проекта это реализация и установка аппаратных средств. Потому что в данном этапе необходимо знать всё о помещении, в которое будет внедряться проект. Так как могут возникнуть такие проблемы как нехватка длин шин сложность их прокладки через стены, ведь в стенах проходит, и обычная проводка, которая может помешать установке шин. Все шины и остальную необходимую проводку необходимо прокладывать в дали от силовых проводов, так как они могут сильно повлиять на сигнал, либо использовать экранированные провода.
7 Реализация программных средств
Для того чтобы писать программы для контроллера необходимо скачать с сайта BECKHOFF систему TwinCat. Установка ее не представляет какого-либо труда, так как при инсталляции единственно, что она спросит - лицензионный номер для установки TwinCat runtime на локальном компьютере. Он не понадобится, так как использовать компьютер в качестве контроллера использоваться не будет, а данный runtime зашит в имеющемся контроллере. Среда разработки поставляется абсолютно бесплатно. Запускаем программу PLC CONTROL - это и есть среда разработки. Необходимо создать новый проект. При создании требуется выбрать необходимый контроллер. Далее выбирается желаемый язык программирования выбранного контроллера. После этого появится чистое поле ввода для программирования. Сверху окно объявления переменных, снизу окно для кода, сбоку слева навигатор. Запутаться невозможно. Далее объявляются переменные для портов входа-выхода. Это можно сделать автоматически с помощью не очень дружелюбных утилит. После чего переходим в раздел глобальных переменных, где пишем следующий код:
VAR_GLOBAL
IN_H2_R1 AT %IX0.0: BOOL; (*ГОСТЕВОЙ ДОМ - ВЫКЛЮЧАТЕЛЬ - СПАЛЬНЯ*)
IN_H2_R2 AT %IX0.1: BOOL; (*ГОСТЕВОЙ ДОМ - ВЫКЛЮЧАТЕЛЬ - ВАННАЯ*)
OUT_H2_R1_L AT %QX0.0: BOOL; (*ГОСТЕВОЙ ДОМ - ЛАМПА - СПАЛЬНЯ*)
OUT_H2_R2_L AT %QX0.1: BOOL; (*ГОСТЕВОЙ ДОМ - ЛАМПА - ВАННАЯ*)
OUT_H2_R2_M AT %QX0.2: BOOL; (*ГОСТЕВОЙ ДОМ - ВЕНТИЛЯТОР - ВАННАЯ*)
END_VAR
Вся информация о состоянии всех входов и выходов хранится в памяти контроллера в строго отведенной области памяти. У всех дискретных значений, которые есть всего два состояния 0 и 1, для экономии места пакуются в байты. Сначала мы объявляются два дискретных входа как логические переменные и привязываем их к области памяти, где у контроллера хранится состояние входов. Конструкция %IX0.0 означает, что мы привязываем переменную к области памяти входов к самому первому дискретному входу (байт 0, бит 0). Все тоже самое и для выходов, только область памяти для выходов обозначается конструкцией %QX0.0. Таким образом, имеется два выключателя из спальни и из ванной комнаты, подключенные соответственно к первому и второму входу, а также два светильника и мотор вентилятора, подключенные к трем первым выходам. Теперь необходимо написать программу для включения и выключения освещения.
OUT_H2_R1_L := IN_H2_R1;
OUT_H2_R2_L := IN_H2_R2;
OUT_H2_R2_M := IN_H2_R2;
Ниже приведён фрагмент программы на языке программирования ST реализующий алгоритм работы системы освещения.
IF NOT write. misc. bManualLand THEN
*****************************
write. kl2408_13 [3]: = TRUE;
***********************;
write. kl2408_13 [5]: = TRUE;
***********************;
write. kl2408_13 [7]: = TRUE;
write. kl2408_13 [8]: = TRUE;
***********************;
ELSE
write. kl2408_13 [3]: = FALSE;
************************;
write. kl2408_13 [5]: = FALSE;
************************;
write. kl2408_13 [7]: = FALSE;
************************;
write. kl2408_14 [1]: = FALSE;
END_IF;
Ниже приведён фрагмент программы на языке программирования ST реализующий алгоритм работы системы обогрева ливнестоков.
IF NOT write. misc. bManualLandObogrev THEN
**************************************************** read. kl1408_10 [1]) THEN
timerLivStockOn (IN: = TRUE, PT: = t#10s);
*******************************
write. kl2408_12 [3]: = TRUE;
END_IF;
ELSE
**************************;
END_IF;
IF timerLivStockOn. Q THEN
write. kl2408_12 [3]: = FALSE;
*****************************;
END_IF;
IF timerLivStockOff. Q THEN
*************************;
timerLivStockOn (IN: = FALSE);
END_IF;
ELSE
timerLivStockOff (IN: = FALSE);
**************************;
END_IF;
Ниже приведён фрагмент программы на языке программирования ST реализующий алгоритм работы системы отопления:
IF NOT read. kl3204_16. error [2] THEN
********************************************************
write. kl2408_11 [1]: = FALSE;
**********************************************************
write. kl2408_11 [1]: = TRUE;
**********;_IF;
************************************
IF read. kl3204_16. temp [4] <= (write. predTemp. tempDush - 2.5) THEN. kl2408_11 [4]: = FALSE;
*********************************************************
write. kl2408_11 [4]: = TRUE;_IF;
Фрагмент программы на языке программирования ST реализующий алгоритм работы системы вентиляции.
IF NOT read. kl3204_22. error [1] THEN
************************************************************* K: =_K, T0: = _T0, Ti: = _Ti, Td: = _Td);NOT fb_pidCtrl [10]. bErr THEN
***********************************;_IF;_IF;NOT read. kl3204_22. error [2] THEN
*************************************************************, K: =_K, T0: = _T0, Ti: = _Ti, Td: = _Td);NOT fb_pidCtrl [11]. bErr THEN
**************************************;_IF;_IF;. kl4404_5. data [1]: = write. misc. polarBeer;
