Програма для керування верстатом з числовим програмним управлінням
Команди керування верстатом. Розробка зчитування слова стану та перевірки номеру блока. Переключення біта тривоги. Виконавчий механізм блоку керування. Перевірка помилки виконуючого механізму. Складання слів для перевірки роботоздатності усієї програми.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | украинский |
Дата добавления | 24.11.2014 |
Размер файла | 70,4 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru
Размещено на http://www.allbest.ru
Размещено на http://www.allbest.ru
ВСТУП
Курсова робота виконується з метою придбання студентами навичок моделювання фізичних процесів за допомогою персональної електронно-обчислювальної машини (ПЕОМ), засвоєння методології програмування алгоритмів на мові С++ та дослідження отриманих результатів.
Написання курсової роботи дозволяє привчити до самостійної роботи з навчальною та науково-технічною літературою; виробити навички користування ПЕОМ при моделюванні фізичних процесів; навчити оформляти науково-технічну документацію відповідно до вимог державних стандартів України.
команда керування верстат
1. ПОСТАНОВКА ЗАВДАННЯ
1.1 Загальна мета проведення курсової роботи
Метою проведення курсової роботи є придбання студентом навичок з самостійної роботи з довідковою та науково-технічною літературою, використовування персональної електронно-обчислювальної машини для моделювання різноманітних фізичних процесів, закріплення та поліпшення знань та практичних навичок з використання алгоритмічної мови програмування С++, а також, оформлення технічної документації відповідно до Державного стандарту України, стандартів єдиної конструкторської документації ЄСКД, єдиної системи програмної документації ЄСПД.
1.2 Описання приладу, який необхідно запрограмувати
Необхідно написати програми для керування верстатом з числовим програмним керуванням. Блок керування верстатом передає слово стану на комп'ютер через провідний або бездротовий канал зв'язку. Виконавчий механізм даного верстату має змогу переміщатися по горизонталі та вертикалі, у залежності від завданої команди.
1.3 Слово стану та його характеристика
Слово стану складається з трьох байтів та має у собі усю інформацію про стан робочого механізму та номер блоку керування. Деяка інформація у слові стану є надлишковою, деякі дані - дублюються. Формат, у якому буде наведено слова стану та номер блоку залежать від варіанту завдання. Згідно із моїм варіантом номер блока керування - 2, слово стану для мого варіанту наведено у табл. 1.1.
Таблиця 1.1 - Слово стану блока керування
Номер біту слова стану |
||||||||||||||||||||||||
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
3 байт |
2 байт |
1 байт |
||||||||||||||||||||||
E |
W |
V |
V |
V |
V |
B |
1 |
1 |
R |
A |
U |
U |
U |
U |
U |
H |
H |
H |
M |
M |
F |
F |
F |
Розглянемо, за що відповідають біти у слові стану:
біт «А» під номером 0 відповідає за увімкнення сигналу тривоги. Сигнал тривоги вмикається шляхом заміни значення біту на протилежне, у разі, якщо була знайдена помилка у каналі зв'язку або у блоці керування.
біт «Е», під номером 1, має дорівнювати 0, якщо немає помилок, у іншому випадку він буде дорівнювати 1, та вказувати на те, що помилка знайдена.
біти «1», які записані під 2 та 3 номерами, дорівнюють 1. Вони будуть використовуватися при знаходженні помилок у каналі зв'язку.
біти «М», які займають позиції від 4 до 6, зберігають у собі код операції керування, який є без знаковим, трьох розрядним та може приймати тільки цілі значення.
у біт «Н» під сьомим номером записується горизонтальна координата положення виконавчого механізму. Максимальне значення, яке вона може прийняти дорівнює 1.
залежно від значення біту «R», який у слові стану займає 8 позицію, визначається чи може верстат прийняти нову команду, чи воно виконує попередню команду.
у біти «V» записується вертикальна координата положення виконавчого механізму. Біти «V» займають позиції у слові стану від 9 до 14. Тобто вертикальна координат може дорівнювати від 1 до 63.
біт «W» під 15 номером, вказує на те, чи можна записати у пам'ять блока керування команду. Якщо у цьому біті записаний нуль, то записати нову команду неможливо. Для запису команди необхідно встановити його значення рівним 1. Після того, як буде виконаний запис команди у пам'ять блоку керування, значення цього біту необхідно змінити на 0.
біт «В» відображає те, чи зайнятий верстат у цей час виконанням минулої команди, чи вже завершив її виконання, та очікує наступної команди.
у біти «U», які займають позиції від 16 до 21 записується номер блока керування. Його максимальне значення дорівнює 32.
біти «F» під номерами 22 та 23 зберігають код помилки, у разі її виникнення.
1.4 Методи виявлення помилок
У слові стану маються біти, які призначені для того, щоб можна було визначити наявність помилки у блоці керування, у виконавчому механізмі та у каналі передачі даних. Знаючи, які біти відповідають за яку інформацію, можна сформулювати логічні вирази, за допомогою яких, можна буде перевірити наявність помилок у програмі.
Якщо біти «Е», «В» та усі біти «F» дорівнюють 0, а біт «R»=1, то прилад успішно завершив виконання минулої команди та знаходиться у очікуванні наступної команди.
Якщо біти «Е», «R» та усі біти «F» дорівнюють 0, а біт «В»=1, то це означає, що виконавчий механізм зайнятий виконанням останньої команди і не можу прийняти нову.
Також можливий варіант, коли біт «В»=0, біти «Е», «R» дорівнюють 1, та не всі біти «F» дорівнюють 0. Це повідомляє про те, що під час виконання минулої команди трапилася помилка, та вона не була вдало завершена.
1.5 Команди керування верстатом
Оскілки верстат має цифрове програмне керування, то для того щоб він виконав яку-небудь операцію необхідно ввести відповідний цифровий код - команду. Так, команда «00» виконує переміщення виконавчого механізму верстата на одну позицію уверх, а команда «01» виконує переміщення виконавчого механізму на один крок униз. Команди «10» та «11» виконують переміщення механізму верстату уліво та управо на один крок відповідно.
1.6 Задачі програм
Використовуючи вхідні дані для свого варіанту (слово стану та номер блоку) потрібно розробити програми, які будуть перевіряти стан верстату та при можливості виконувати спочатку переміщення виконавчого механізму до максимальної координати по горизонталі, а потім до максимальної координати по вертикалі. У випадку, якщо трапилася якась помилка у блоці керування або у каналі зв'язку, програма повинна видати повідомлення про помилку та увімкнути сигнал тривоги. Перевірку на наявність помилок у програмі провести на основі відомостей про слово стану та способи виявлення помилок.
Для того, щоб переконатися у правильності роботи програм провести їх тестування навести результати цього тестування у пояснювальній записці до курсової роботи.
У першій програмі необхідно реалізувати поставлену задачу за допомогою бітових операцій.
У другій програмі, для досягнення цієї ж мети, використати бітові поля.
Привести код написаних та працюючих програм у пункті «Додатки».
2. РОЗРОБКА ТА ОПИС ПРОГРАМИ
2.1 Аналіз даних таблиці
Слово стану блока керування №1 приладу приведено в табл. 1
Таблиця 1 - Слово стану блока керування
Номер біту слова стану |
||||||||||||||||||||||||
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
3 байт |
2 байт |
1 байт |
||||||||||||||||||||||
E |
W |
V |
V |
V |
V |
B |
1 |
1 |
R |
A |
U |
U |
U |
U |
U |
H |
H |
H |
M |
M |
F |
F |
F |
Програмі необхідно мати доступ до окремих біт та слів слова стану. Для доступу до окремих біт потрібно створити наступні маски :
EWVV VVB1 1RAU UUUU HHHM MFFF
- “R”
0000 0000 0100 0000 0000 0000= 0x000040 = 0x4000
- “W”
0100 0000 0000 0000 0000 0000 = 0x400000
- “A”
0000 0000 0010 0000 0000 0000 = 0x2000
- “B”
0000 0010 0000 0000 0000 0000 = 0x20000
- “E”
1000 0000 0000 0000 0000 0000 = 0x000080 = 0x800000
Для доступу до окремих слів потрібно створити наступні маски:
-Mask1 для окремого біту слова
0000 0000 0000 0000 0000 0001 = 0x000001 = 0x1
-Mask2 для слова «1…1», «M…M», «M…M» довжина 2 біт
0000 0000 0000 0000 0000 0011 = 0x000003 = 0x3
-Mask3 для слова «F…F», «H…H» довжина 3 біт
0000 0000 0000 0000 0000 1111 = 0x00000F = 0x7
-Mask4 для слова «V…V» довжина 4 біт
0000 0000 0000 0000 0000 1111 = 0x00000F = 0xF
-Mask5 для слова «U…U» довжина 5 біт
0000 0000 0000 0000 0001 1111 = 0х00001F = 0x1F
#include<iostream>
#include<cstdlib>
using namespace std;
int main()
{
//Псевдоним для типа данных
typedef const unsigned int UINT;
//Объявление и инициализация масок
UINT MaskR = 0x2000; // для R
UINT MaskW = 0x400000; // для W
UINT MaskA = 0x1000; // для A
UINT MaskB = 0x10000; // для B
UINT MaskE = 0x800000; // для E
UINT Mask1 = 0x1; // для бит
UINT Mask2 = 0x3; // для "1" и "M"
UINT Mask3 = 0x7; // для "F" и "H"
UINT Mask4 = 0xF; // для "V"
UINT Mask5 = 0x1F;// для "U"
usigned word;
// Слово состояние
}
2.2 Розробка зчитування слова стану
Текст, приведений у рис.2 необхідно ввести до програми одразу після коментарію «Слово состояния».
Рисунок - 2
2.3 Розробка перевірки номеру блока
Номер блоку у слові стану закодований п'ятьма бітами, тому для виділення цього слова потрібно використати Mask5 для виділення п'яти біт.
Спочатку виділимо слово « U. .. U » , яке починається з восьмого біта зрушенням в право ( word >> 9 )
0000 000E WVVV VVB1 1RAU UUUU
0000 0001 0000 0001 1011 1111 - word
Та накладанням маски ( (word >> 9) & Mask5)
0000 0001 0000 0000 0001 1111 - word
0000 0000 0000 0000 0001 1111 - Mask5
0000 0000 0000 0000 0001 1111 - результат
а потім порівняємо його з номером блоку ( номером варіанта завдання ), тобто числом 39.
У разі , якщо номер блоку не збігається програма повинна закінчити свою роботу. Для виходу з програми використовується функція exit ( 0 ) з кодом помилки 0 , а для її роботи в програму необхідно додати рядок
# include <cstdlib>
Для перевірки цієї частини програми , необхідно підготувати два вхідних значення слова стану : одне з правильним номером блоку , а інше з неправильним .
Який має вигляд ця частина програми можна подивитися на рис.3
// Проверка номера блока
if (((word >>8)& Mask5) !=9)
{
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
cout <<"Не верный номер блока!" <<endl;
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
exit(0); "Выход из программы"
Сформуємо слово стану яке відповідне заданому номеру блока 39=100111, для цього отримані біти необхідно занести в відповідні розряди слова стану, а далі перетворимо результат в десяткове число і запишемо
2.4 Розробка перевірки канала передачі даних
Нам необхідно перевірити значення біта «W» і двох біт "1". При цьому перевірка вважається успішною , якщо біт «W» = 0 і всі біти « 1 » = 1 .
Тестове слово стану без помилок виглядає наступним чином
EWVVVVB11RAUUUUUHHHMMFFF
0000 0001 1000 1001 0000 0000 = 100608
Можливі помилки каналу передачі даних :
-“W”=1, “1”=11 :
EWVVVVB11RAUUUUUHHHMMFFF
0100 0001 1000 1001 0000 0000 = 4294912
-“W”=0, “1”=01 :
EWVVVVB11RAUUUUUHHHMMFFF
0000 0000 1000 1001 0000 0000 = 35072
-“W”=0, “1”=10 :
EWVVVVB11RAUUUUUHHHMMFFF
0000 0001 0000 1001 0000 0000 = 67840
-“W”=1, “1”=01 :
EWVVVVB11RAUUUUUHHHMMFFF
0100 0000 1000 1001 0000 0000 = 4229376
-“W”=1, “1”=10 :
EWVVVVB11RAUUUUUHHHMMFFF
0100 0001 0000 1001 0000 0000 = 2132224
Для перевірки біта «W» ми належимо маску MaskW на слово стану і якщо біт «R» дорівнює нулю , то і все значення дорівнюватиме нулю , так як інші біти слова обнулились за рахунок накладення маски. А якщо біт «W» не дорівнює нулю , то і все значення не дорівнюватиме нулю. Дана перевірка виглядає наступним чином ( word & MaskW ) ! = 0 )
Для перевірки установки всіх бітів « 1» в одиницю в загальному випадку необхідно виконати ті ж дії , які ми здійснювали при перевірці номера блоку , але так як в нашому варіанті ці біти займають крайнє ліве положення , то зрушувати їх в ліво немає необхідності. Залишається тільки накласти маску , довжина якої відповідає довжині цього слова і порівняти отримане значення з числом , у якого всі ці біти встановлені , тобто рівні одиниці .
Дана перевірка виглядає наступним чином
(word & Mask2) !=3
Повна перевірка значень всіх біт здійснюється наступним чином
if ((( word & MaskW ) ! = 0 ) | | ( word & MaskH ) ! = 3 )
/ / Помилка каналу передачі даних
У випадку помилки каналу передачі даних ми повинні на екран вивести відповідне повідомлення про помилки і значення всіх біт.
Для вивода слова в двоїчній вигляді необхідно для кожного біта слова, почавши зі старшого, зробити наступні дії: зрушити відповідний біт в крайню праву позицію, накласти маску Mask1 і вивести результат на екран.
Для того щоб ввести в двоїчному вигляді все слово стані, необхідно виконати наступний оператор як вказано на рис.4
<< ((word >> 22)& Mask1)
<< ((word >> 21)& Mask1)
<< ((word >> 20)& Mask1)
<< ((word >> 19)& Mask1)
<< ((word >> 18)& Mask1)
<< ((word >> 17)& Mask1)
<< ((word >> 16)& Mask1)
<< ((word >> 15)& Mask1)
<< ((word >> 14)& Mask1)
<< ((word >> 13)& Mask1)
<< ((word >> 12)& Mask1)
<< ((word >> 11)& Mask1)
<< ((word >> 10)& Mask1)
<< ((word >> 09)& Mask1)
<< ((word >> 08)& Mask1)
<< ((word >> 07)& Mask1)
<< ((word >> 06)& Mask1)
<< ((word >> 05)& Mask1)
<< ((word >> 04)& Mask1)
<< ((word >> 03)& Mask1)
<< ((word >> 02)& Mask1)
<< ( ( word >> 01) & Mask1)
Слово стану виведеться на екран починаючи зі старшого біту і закінчуючи наймолодшим.
Переключення біта тривоги описано в теоретичній частині КР.
// Перевірка канала передачі даніх
if((word & MaskW) !=0) ||
(word & Mask2) !=3)
{//Вивід повідомлення про ошибку
cout << "Ошибка канала передачі даних!"
<< endl;
cout << "\"W\"="
<<((word >> 22) & Mask1)
<< ", \"1\"="
<<((word >> 16) & Mask1)
<< (word & Mask1) <<endl;
Перемікання біта тривоги
word^= MaskA;
cout << "Слово стану = "
<< word << endl;
exit (1);
}
2.5 Розробка перевірки виконуючого механізму
Спочатку визначимося з тестовими словами стану для перевірки правильності роботи програми .
Виконавчий механізм блоку керування не знаходиться ( «Е» = 0 ) у третьому стані
EWVVVVB11RAUUUUUHHHMMFFF
0000 0001 1100 1001 0000 0000 = 116992
Виконавчий механізм знаходиться в третьому стані (при виконанні попередньої команди сталася помилка виконавчого механізму , і команда не виконана )
EWVVVVB11RAUUUUUHHHMMFFF
1000 0001 1100 1001 0000 0000 = 8505600
Можливі помилки блоку управління
- «В» = 1 , «R» = 1 , «F» = 001 :
EWVVVVB11RAUUUUUHHHMMFFF
0000 0011 1100 1001 0000 00001= 496129
- «В» = 0 , «R» = 0 , «F» = 001 :
EWVVVVB11RAUUUUUHHHMMFFF
0000 0001 1000 1001 0000 00001= 201217
- «В» = 0 , «R» = 1 , «F» = 000 :
EWVVVVB11RAUUUUUHHHMMFFF
0000 0001 1100 1001 0000 00000= 233984
- «В» = 1 , «R» = 1 , «F» = 000 :
EWVVVVB11RAUUUUUHHHMMFFF
0000 0011 1100 1001 0000 00000= 496128
- «B» = 1 , «R» = 0 , «F» = 001 :
EWVVVVB11RAUUUUUHHHMMFFF
0000 0011 1000 1001 0000 00000= 462360
- «B» = 0 , «R» = 0 , «F» = 000 :
EWVVVVB11RAUUUUUHHHMMFFF
0000 0001 1000 0100 1000 0000 = 463360
Перевірка помилки виконуючого механізму
// Проверка ошибки исполнительного механизма
if (word & MaskE)
{
if (((word & MaskB) == 0) &&
((word & MaskR) == MaskR) &&
(((word >> 1) & Mask3) != 0))
{
cout << "Ошибка исполнительного"
<< "механизма!" << endl
<< "Код ошибки "
<< ((word >> 1) & Mask3)
<< endl;
// Переключение бита тревоги
word ^= MaskA;
cout << "Слово состояния = "
<< word << endl;
exit(2);
}
else
{
cout << "Ошибка блока управления!"
<< endl;
cout << "\"В\" = "
<< ((word >> 18) & Mask1)
<< ", \"R\" = "
<< ((word >> 15) & Mask1)
<< ", \"F\" = "
<< ((word >> 3) & Mask3)
<< ((word >> 2) & Mask3)
<< ((word >> 1) & Mask3)
<< endl;
// Переключение бита тревоги
word ^= MaskA;
cout << "Слово состояние = "
<< word << endl;
exit(3);
}
}
2.6 Розробка перевірки зайнятості приладу
Спочатку визначимося з тестовими словами стану для перевірки правильності роботи програми .
Виконавчий механізм блоку управління знаходиться в другому стані (пристрій зайнятий «В» = 1 , так як виконує попередню команду )
EWVVVVB11RAUUUUUHHHMMFFF
0000 0011 1000 1001 0000 0000 = 231680
Можливі помилки блоку управління ( перевіряти значення біта «Е» = 1 не потрібно , так як цю перевірку ми вже провели раніше при перевірці помилки виконавчого механізму)
- «Е» = 0 , «R» = 1 , «F» = 000 :
EWVVVVB11RAUUUUUHHHMMFFF
0000 0011 1100 1001 0000 0000= 248064
- «Е» = 0 , «R» = 0 , «F» = 001 :
EWVVVVB11RAUUUUUHHHMMFFF
0000 0011 1000 1001 0000 0001= 231681
- «E» = 0 , «R» = 1 , «F» = 001 :
EWVVVVB11RAUUUUUHHHMMFFF
0000 0011 1100 1001 0000 0001= 248064
Приведемо частину програми, яка зображена на рис.7яка цю справу реалізує :
// Проверка занятости устройства
if (word & MaskB)
{
if ((word & MaskE) == 0 &&
(word & MaskR) == 0 &&
(((word >> 1) & Mask3) == 0))
{
exit(0);
}
else
{
cout << "Ошибка блока управления!"
<< endl;
cout << "\"E\" = "
<< ((word >> 23) & Mask1)
<< ", \"R\" = "
<< ((word >> 15) & Mask1)
<< ", \"F\" = "
<< ((word >> 3) & Mask3)
<< ((word >> 2) & Mask3)
<< ((word >> 1) & Mask3)
<< endl;
// Переключение бита тревоги
word ^= MaskA;
cout << "Слово состояние = "
<< word << endl;
exit(4);
}
}
2.7 Обробка горизонтальної координати
Для перевірки правильності роботи цієї частини програми , в слові стану необхідно задати горизонтальну координату , яка не може бути нульовою . Таким чином , горизонтальна координата може мати значення від 1 до максимального числа , яке може поміститися у відповідну кількість розрядів слова стану .
Горизонтальна координата дорівнює максимальній
EWVVVVB11RAUUUUUHHHMMFFF
0000 0001 1100 1001 1110 0000= 117216
Горизонтальна координата не дорівнює максимальній
EWVVVVB11RAUUUUUHHHMMFFF
0000 0001 1000 0100 0110 0000 = 99 440
Код операції переміщення по горизонталі має вигляд «11» , а з урахуванням того , що в слові стану він складається з трьох біт , то необхідно старший біт коду скинути, а два молодших біта встановити. Таким чином код операції управління буде виглядати наступним чином «011».
// Обработка горизонтальной координаты
if (((word >> 3) & Mask4) != 15)
{
word |= MaskW; // Включение бита записи
cout << "Горизонтальное перемещение"
<< endl;
cout << "Код операции управления = 011"
<< endl;
// Запись кода операции управления
word |= 0xF0000; // Установка битов
word &= ~0x80000; // Сброс бита
word &= ~MaskW; // Выключение бита записи
cout << "Слово состояние = "
<< word << endl;
exit(0);
}
2.8 Обробка вертикальної координати
Для перевірки правильності роботи цієї частини програми, в слові стану необхідно задати вертикальну координату, яка не може бути нульовою. Таким чином, вертикальна координата може мати значення від 1 до максимального числа, яке може поміститися у відповідну кількість розрядів слова стану.
Вертикальна координата дорівнює максимальній
EWVVVVB11RAUUUUUHHHMMFFF
0011 1101 1100 1001 1111 0000= 4949392
Вертикальна координата не дорівнює максимальній
EWVVVVB11RAUUUUUHHHMMFFF
0001 1101 1100 1001 1111 0000= 1952240
Код операції переміщення по вертикаль має вигляд «00», а з урахуванням того, що в слові стану він складається з трьох біт, то - «000».
Наведемо цю частину програми на рис.9:
// Обработка вертикальной координаты
if (((word >> 19) & Mask4) != 3)
{
word |= MaskW; // Включение бита записи
cout << "Вертикальное перемещение"
<< endl;
cout << "Код операции управления = 000"
<< endl;
// Запись кода операции управления
word &= ~0x30000;
word &= ~MaskW; // Выключение бита записи
cout << "Слово состояние = "
<< word << endl;
exit(0);
}
2.9 Завершення програми
// Завершение программы
cout << "Устройство успешно закончило"
<< " свою работу." << endl;
На цьому етапі ми завершили створення програми.
3. ТЕСТУВАННЯ ПРОГРАМИ З ВИКОРИСТАННЯМ БІТОВИХ ОПЕРАЦІЙ
3.1 Складання слів для перевірки роботоздатності усієї програми
Після того, як була написана уся програма, та протестовані всі її частини по окремості необхідно розробити слова стану, які дадуть змогу протестувати усю програму. Для цього потрібно згадати, за що відповідають ті чи інші біти, та які значення вони отримують у разі виникнення тієї чи іншої помилки.
Для початку складемо слово стану, яке не матиме помилки. У цьому випадку у слові стану біти «F..F», «W», «A», «B», «E» будуть дорівнювати 0, біти «11», «R» мають бути рівними 1, у бітах «U..U» має бути записане значення номера блоку згідно із варіантом, у бітах «V..V» та «H» мають бути записані будь-які числа, що позначатимуть координату, окрім 0 та максимального числа, яке можна записати у наявній кількості розрядів. Але оскільки у моєму варіанті розрядність горизонтальної координати дорівнює 1, то я змушений записати у біт «H» одиницю, оскільки координата має бути відмінною від 0. Записавши слово стану із врахуванням цих вимог отримав результат, наведений у табл. 3.1.
Таблиця 3.1 - Слово стану без допущених помилок
Слово стану |
|||||||||||||||||||||||||
Бінарна форма |
Десят-кова форма |
||||||||||||||||||||||||
E |
W |
V |
V |
V |
V |
B |
1 |
1 |
R |
A |
U |
U |
U |
U |
U |
H |
H |
H |
M |
M |
F |
F |
F |
||
0 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
379272 |
Для перевірки номера блоку можна скласти багато варіантів слів стану, але для перевірки коректності роботи програми можна обмежитися одним словом стану, у якому, у біти, які відповідають за номер блоку, запишемо число 3, замість 2. Змінене слово стану із хибним номером блоку керування
Слово стану |
|||||||||||||||||||||||||
Бінарна форма |
Десят-кова форма |
||||||||||||||||||||||||
E |
W |
V |
V |
V |
V |
B |
1 |
1 |
R |
A |
U |
U |
U |
U |
U |
H |
H |
H |
M |
M |
F |
F |
F |
||
0 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
394648 |
наведемо у табл. 3.2.
Таблиця 3.2 - Слово стану з хибним номером блоку керування
Тепер розробимо набір слів стану для перевірки каналу передачі даних. Дізнатися, що відбулися помилки у каналі зв'язку, ми можемо перевірив значення бітів «W» та «11». Якщо ці значення будуть відмінними від 0 для біту «W» та двох одиниць для бітів «11». Для перевірки запишемо чотири слова стану із різними комбінаціями значень бітів. Слова стану, призначені для перевірки помилок у каналі зв'язку наведені у табл. 3.3.
Слово стану |
|||||||||||||||||||||||||
Бінарна форма |
Десяткова форма |
||||||||||||||||||||||||
E |
W |
V |
V |
V |
V |
B |
1 |
1 |
R |
A |
U |
U |
U |
U |
U |
H |
H |
H |
M |
M |
F |
F |
F |
||
0 |
1 |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
4573580 |
|
0 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
4508036 |
|
0 |
1 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
4540808 |
|
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
280964 |
|
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
313736 |
Таблиця 3.3 - Слово стану для перевірки помилок у каналі зв'язку
Наступним етапом перевірки буде тестування на різноманітні помилки у виконавчому механізмі та блоці керування. Складемо вісім слів стану, змінюючи значення бітів «E», «R», «B» та «F..F». Для того щоб перевірити, як програма реагує на помилки у виконавчому механізмі зробимо біти «E», «B» та «F..F» рівними 0, а біт «R», встановимо рівним одиниці. Для моделювання помилок у блоці керування встановимо біт «E» рівним одиниці для сімох слів, а значення інших бітів будемо змінювати так, щоб мати змогу змоделювати усі можливі варіанти помилок. Складені слова стану наведу у табл. 3.4.
Слово стану |
|||||||||||||||||||||||||
Бінарна форма |
Десяткова форма |
||||||||||||||||||||||||
E |
W |
V |
V |
V |
V |
B |
1 |
1 |
R |
A |
U |
U |
U |
U |
U |
H |
H |
H |
M |
M |
F |
F |
F |
||
1 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
8505738 |
|
1 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
8489100 |
|
1 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
8489099 |
|
1 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
8505742 |
|
1 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
8620172 |
|
1 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
8620171 |
|
1 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
8636812 |
|
1 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
8636810 |
Таблиця 3.4 - Слово стану з помилками виконавчого механізму та блоку керування
Слово стану |
|||||||||||||||||||||||||
Бінарна форма |
Десяткова форма |
||||||||||||||||||||||||
E |
W |
V |
V |
V |
V |
B |
1 |
1 |
R |
A |
U |
U |
U |
U |
U |
H |
H |
H |
M |
M |
F |
F |
F |
||
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
248205 |
|
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
231822 |
|
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
248205 |
Створимо ще 3 слова стану для тестування блоку керування. Тепер значення біту «E» будуть дорівнювати 0, біт «B» буде рівнятися 1, а значення бітів «R» та «F..F» будуть змінюватися. Складені тестові слова стану наведе у табл. 3.5.
Таблиця 3.5 - Слово стану з помилками блоку керування
Слово стану |
|||||||||||||||||||||||||
Бінарна форма |
Десят-кова форма |
||||||||||||||||||||||||
E |
W |
V |
V |
V |
V |
B |
1 |
1 |
R |
A |
U |
U |
U |
U |
U |
H |
H |
H |
M |
M |
F |
F |
F |
||
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
117120 |
|
0 |
0 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
4057472 |
Залишилося скласти слова стану для тестування того, як програма реагує на максимальні значення координат. Наведемо слова стану, у яких записані максимально припустимі координати виконавчого механізму у табл. 3.6.
3.2 Тестування програми
Перейдемо безпосередньо до тестування програми. Будемо почергово вводити слова стану у десятковій формі, та відмічати, як на них буде реагувати програма.
Введемо слово стану, яке записане без помилок, а саме: 263052. Програма виконається повністю.
Введите слово состояния блока управления в десятичном виде = 379272
Вы ввели следующее слово состояния 379272
Вертикальное перемещение
Код операции управления = 000
Слово состояния = 379272
Введемо слово стану із хибним номером блоку керування: 394124. Отримаємо наступний результат:
Введите слово состояния блока управления в десятичном виде = 379234
Вы ввели следующее слово состояния 379234
Неверный номер блока
Введемо почергово слова стану, які відповідають за перевірку каналу зв'язку: 4573580, 4508036, 4540808, 280964, 313736. При вводі цих слів отримаємо однаковий результат, відрізнятися будуть тільки значення біт із помилкою.
Введите слово состояния блока управления в десятичном виде = 295820
Вы ввели следующее слово состояния 295820
Ошибка канала передачи данных
"W" = 1, "1" = 00
Слово состояния = 4573580
Введемо слова стану для перевірки виконавчого механізму та блока керування. Для першого тестового слова: 4457358, отримаємо наступний результат
Введите слово состояния блока управления в десятичном виде = 4457358
Вы ввели следующее слово состояния 4457358
Ошибка исполнительного механизма
Код ошибки 1
Слово состояния = 8505738
Для тестових слів 262798, 4457102, 263054, 328334, 4522638, 328590, 4522894 отримаємо відповідь, зображену на рис. 3.5:
Введите слово состояния блока управления в десятичном виде = 262798
Вы ввели следующее слово состояния 262798
Ошибка блока управления
"B" = 0, "R" = 0, "F" = 00
Слово состояния 123 = 262799
Перевіримо ще 3 можливі помилки, які можуть статися у блоці керування. Для тестування цих помилок будемо використовувати наступні тестові слова: 248205, 231822, 248205.
Введите слово состояния блока управления в десятичном виде = 248205
Вы ввели следующее слово состояния 248205
Ошибка блока управления
"E" = 0, "R" = 1, "F" = 00
Слово состояния = 248206
При вводі у програму тестового слова із максимальною координатою по горизонталі отримав результат, який наведемо на рис. 3.7.
Введите слово состояния блока управления в десятичном виде = 263052
Вы ввели следующее слово состояния 263052
Вертикальное перемещение
Код операции управления = 000
Слово состояния = 263052
При вводі у програму тестового слова із максимальною координатою по вертикалі отримаємо результат, який можна побачити на рис. 3.8.
Введите слово состояния блока управления в дестячном виде = 294796
Вы ввели следующее слово состояния 294796
Устройство успешно завершило свою работу
Із отриманих результатів можна зробити висновок, що програма працює коректно, та може використовуватися для керування верстатом із числовим програмним керуванням.
4. РОЗРОБКА ПРОГРАМНОГО КОДА З ВИКОРИСТАННЯМ БІТОВИХ ПОЛІВ
Оскільки, згідно із завданням до курсової роботи, нам необхідно розробити дві програми, які будуть виконувати однакові функції, то в нас немає потреби повторно розробляти алгоритм для другої програми. Нам буде потрібно лише замінити змінні та команди, які ми будемо використовувати, для досягнення необхідного результату.
При написанні другої програми ми повинні використовувати бітові поля.
Бітові поля дозволяють використовувати пам'ять більш раціонально, ніж використання звичайних змінних, оскільки можна вручну вказати скільки біт для зберігання даних необхідно виділити. Звісно, що для того щоб раціонально використовувати бітові поля, необхідно заздалегідь знати, які значення будуть приймати окремі змінні у бітовому полі. У нашому випадку значення, які можуть приймати змінні відомі заздалегідь. Тому ми можемо приступати до написання програмного коду.
Написання програми розпочнемо з написання стандартного шаблону для головної функції, підключення бібліотек <iostream> та <cstdlib>, підключення стандартного простора імен. У головній функції додамо команди cin.get() та return 0. Шаблон програми наведений на рис. 4.1.
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
cin.get();
return 0;
}
Тепер створимо бітові поля для зберігання слів стану та об'єднання для слова стану та бітових полів. При створенні бітових полів, слід зауважити, що у процесорах, розроблених компанією Intel, мають бути розташовані у зворотньому порядку у порівнянні з їх розташуванням у слові стану. Для зберігання біт слова стану будемо використовувати без знакові змінні та виділяти під кожну змінну рівно стільки біт, скількома розрядами вона визначається у слові стану, відповідно до варіанту. Оголосити бітове поле та об'єднання необхідно перед головною функцією, для того щоб усі додаткові функції також мали доступ до них.
// Объявление битовых полей
struct word_type
{
unsigned A:1; // 1 бит - бит тревоги
unsigned E:1; // 1 бит - бит ошибки
unsigned One:2; // 2 бита - неиспользуемыe
unsigned M:3; // 3 бита - код операции управления
unsigned H:1; // 1 бит - горизонтальная координата
unsigned R:1; // 1 бит - разрешение чтения
unsigned V:6; // 6 бит - вертикальная координата
unsigned W:1; // 1 бит - бит разрешения записи
unsigned B:1; // 1 бит - признак занятости устройства
unsigned U:5; // 5 бит - номер блока
unsigned F:2; // 2 бита - код ощибки
};
// Объявление объединения
union
{
unsigned word; // слово состояние
word_type bits; // Битовые поля
} u;
Тепер створимо прототипи функцій. Прототипи функцій будемо створювати, спираючись на пункти алгоритму. У зв'язку з особливостями нашої програми доцільно використовувати функції типу void, які не повертають значень у функцію, яка її викликала чи у програму. Перед кожним прототипом функції будемо додавати коментар, який допоможе зробити програму більш зрозумілою для інших програмістів та полегшить процес її подальшого модифікування. Оголошення прототипів функції потрібно для того щоб, повідомити компілятору про наявність у програмі додаткових функцій. Оголосити їх потрібно перед головною функцією.
// Прототипы функцій
// Считать слово состояния с клавиатуры
void GetWord();
// Проверка номера блока
void BlockNumber();
// Проверка канала передачи данных
void VerificationChannel();
// Проверка ошибки исполнительного механизма
void ErrorCheckUnit();
// Проверка занятости устройства
void DeviceIsBusy();
// Обработка горизонтальной координаты исполнительного механизма
void HorizontalCoordinate();
// Обработка вертикальной координаты исполнительного механизма
void VerticalCoordinate();
Тепер у тілі головної функції викличемо усі функції із цього переліку. Для цього потрібно написати ім'я функції. Для більшої зручності продублюємо коментарі. На цьому написання головної функції буде завершено.
int main()
{
// Считать слово состояния с клавиатуры
GetWord();
// Проверка номера блока
BlockNumber();
// Проверка канала передачи данных
VerificationChannel();
// Проверка ошибки исполнительного механизма
ErrorCheckUnit();
// Проверка занятости устройства
DeviceIsBusy();
// Обработка горизонтальной координаты исполнительного механизма
HorizontalCoordinate();
// Обработка вертикальной координаты исполнительного механизма
VerticalCoordinate();
// Завершение выполнения программы
cout << " Устройство успешно завершило свою работу " << endl;
cin.get();
return 0;
}
Тепер перейдемо безпосередньо до програмування окремих функцій. Код функцій користувача приводиться після головної функції. Синтаксис для функцій користувача такий самий, як і для головної функції, а саме: вказується тип значень, які буде повертати функція (у нашому випадку усі функції матимуть тип void), потім - ім'я функції, у круглих дужках вказується, які змінні передаються у функцію, тіло функції розташовується у фігурних дужках.
Перша функція GetWord повинна отримати слово стану від користувача. Функція буде складатися усього з двох команд: cout та cin. За допомогою першої команди ми виведемо на екран повідомлення про те, що потрібно ввести слово стану у десятковій формі у програму. Друга команда має виконати зчитування слова стану із клавіатури у бітове поле. К
/*******************************************************/
/* Считать слово состояния с клавиатуры */
/*******************************************************/
void GetWord()
{
cout << " Введите слово состояния блока управления в десятичном виде=";
cin >> u.word;
}
Тепер перевіримо номер блоку керування. Для цього будемо використовувати функцію BlockNumber типа void.
У випадку, якщо він не буде збігатися із номером, який завданий варіантом, програма має припинити своє виконання. У функції запишемо умовний оператор, який буде виконуватися у тому випадку, якщо номер блоку не буде дорівнювати 2. Номер блоку керування, який записаний у слові стану ми дізнаємося звернувшись до бітів U, що розташовані у бітовому полі. У такому разі програма повинна припинити своє подальше виконання. Це буде реалізовано за допомогою команди exit, с параметром 1.
/*******************************************************/
/* Проверка номера блока */
/*******************************************************/
void BlockNumber()
{
if(u.bits.U !=39)
exit(1); // Выход из программы
}
У наступній функції необхідно реалізувати перевірку каналу зв'язку. Перевірка буде виконуватися функцією VerificationChanel типу void. У функції буде розташований умовний оператор, який буде приймати істинне значення у двох випадках: біт запису не дорівнює 0 або значення, записане в біти «11», не дорівнює 3. У такому випадку на екран виводиться повідомлення про помилку у каналі зв'язку та значення біта запису та бітів «11». Біту «А» присвоюється значення 1. На екран виводиться значення слова стану. Програма припиняє своє виконання.
/*******************************************************/
/* Проверка канала передачи данных */
/*******************************************************/
void VerificationChannel()
{
if((u.bits.W !=0)||(u.bits.One !=3))
{
cout << " Ошибка канала передачи данных " << endl;
cout << "\"W\" = " << u.bits.W << ", \"1\" = "
<< ((u.bits.One >> 1) & 0x1) << ((u.bits.One) & 0x1) << endl;
<< endl;
// Переключение бита тревоги
u.bits.A=1;
cout << "Слово состояния " << u.word << endl;
exit(1);
}
}
На наступному кроці ми перевіряємо наявність помилки виконавчого механізму за допомогою функції ErrorCheckUnit. Вона складається з двох умовних операторів. Перший оператор перевіряє значення біту «Е». Якщо цей біт дорівнює 1, то у верстаті сталася помилка.
У цьому випадку для діагностування типу помилки підключається наступний умовний оператор. У ньому перевіряються значення бітів «B», «R», «FF». Якщо їх значення задовольняє умові то програма виводить повідомлення про те, що помилка трапилася у виконавчому механізмі. На екран виводиться відповідне повідомлення, код помилки, записаний у біти «FF» та слово стану. Значення біту «А» перемикається на протилежне.
Якщо значення бітів «B», «R», «FF» не задовольнили умові, то помилка трапилася у блоці керування. Тому необхідно виконати дії, які перераховані після оператору else. Вивести повідомлення про помилку у блоці керування, значення бітів «B», «R», «FF». Після цього встановити біт тривоги у 1, та вивести слово стану на екран.
/*******************************************************/
/* Проверка ошибки исполнительного механизма */
/*******************************************************/
void ErrorCheckUnit()
{
if(u.bits.E)
{
if(!u.bits.B && u.bits.R && u.bits.F)
{
cout << "Ошибка исполнительного механизма" << endl
<< "Код ошибки " << u.bits.F << endl;
// Переключение бита тревоги
u.bits.A=1;
cout << "Слово состояния " << u.word << endl;
exit(2);
}
else
{
cout << " Ошибка блока управления" << endl;
cout << " \"B\" = " << u.bits.B << ", \"R\" = "
<< u.bits.R << ", \"F\" = " << ((u.bits.F >> 1) & 0x1)
<< (u.bits.F & 0x1) << endl;
// Переключение бита тревоги
u.bits.A=1;
cout << "Слово состояния " << u.word << endl;
exit(3);
}
}
}
У функції DeviceIsBusy ми маємо перевірити чи не знаходиться прилад у зайнятому стані і чи може він прийняти нове завдання. Щоб дізнатися це ми перевіряємо значення біту «В». Якщо воно дорівнює 1, то прилад зайнятий. Після цього підключається ще один умовний оператор. Якщо біти «B», «R», «FF» дорівнюють 0, то програма припиняє своє виконання без яких-небудь повідомлень. У іншому випадку на монітор виводяться повідомлення про те, що трапилася помилка у блоці керування, значення бітів «Е», «R», «FF», та слово стану. Перед тим як вивести слово стану на екран, необхідно увімкнути біт тривоги. Після виводу на екран усіх повідомлень, виконання програми припиняється.
/*******************************************************/
/* Проверка занятости устройства */
/*******************************************************/
void DeviceIsBusy()
{
if(u.bits.B)
{
if(!u.bits.Е && !u.bits.R && (u.bits.F==0))
{
exit (0);
}
else
{
cout << "Ошибка блока управления" << endl;
cout << " \"E\" = " << u.bits.E << ", \"R\" = " << u.bits.R
<< ", \"F\" = " << ((u.bits.F >> 1) & 0x1)
<< (u.bits.F & 0x1) << endl;
// Переключение бита тревоги
u.bits.A=1;
cout << " Слово состояния = " << u.word << endl;
exit(4);
}
}
}
У випадку, якщо усі попередні функції були вдало виконані та не були виявлені помилки у слові стану, то програма має викликати функцію HorizontalCoordinate, яка має проаналізувати та за необхідністю змінити горизонтальну координату. Умовний оператор у функції має перевірити чи не записано у біти, що відповідають за горизонтальну координату, максимально припустиме значення. Якщо максимально припустиме значення записано, то програма переходить до наступної функції. У іншому випадку значення горизонтальної координати необхідно збільшити на одиницю. Перед цим необхідно встановити біт запису у 1, та вивести повідомлення, про те що проводиться горизонтальне переміщення виконавчого механізму верстату та код операції керування. Коли значення горизонтальної координати збільшено, то біт запису вимикається. Функція припиняє виконання програми, перед цим вивівши слово стану на екран.
Так як у моєму варіанті горизонтальна координата записується у один біт, то максимальне значення, яке можна записати у неї буде також дорівнювати 1. Оскільки координата не може дорівнювати 0, то у будь-якому разі умовний оператор, який записаний у функції, ніколи не прийме значення «Істина». Виходячи із цього, дану функцію можна викинути з програми, збільшивши швидкість її виконання. Але для того, щоб програма була більш універсальною, ми залишимо цю функцію у програмі.
/*******************************************************/
/* Обработка горизонтальной координаты */
/*******************************************************/
void HorizontalCoordinate()
{
if(!u.bits.H)
{
u.bits.W = 1; // Включение бита записи
cout << "Горизонтальное перемещение" << endl;
cout << "Код операции управления = 11" << endl;
// Запись кода операции управления
u.bits.M=3; // Запись операции управления
u.bits.W = 0; // Выключение бит...
Подобные документы
Розробка програми, що надає користувачу можливості керування додатками Microsoft PowerPoint: запуск вказаного додатку, переключення слайдів, виведення інформації про слайд , коректне завершення і вивантаження з пам’яті презентації, що переглядається.
курсовая работа [2,1 M], добавлен 21.04.2011Загальна характеристика застосування верстатів з числовим програмним управлінням. Разгляд етапів та особливостей складання керуючої програми. Вимоги до алгоритму розв’язку задачі. Побудова блок-схеми алгоритму. Опис програмного забезпечення, вибір мови.
курсовая работа [1,4 M], добавлен 24.05.2015Аналіз областей застосування та технічних рішень до побудови систем керування маніпуляторами. Виведення рівнянь, які описують маніпулятор як виконавчий об’єкт керування. Зв’язок значень кутів акселерометра з формуванням сигналів управління маніпулятором.
дипломная работа [2,3 M], добавлен 26.07.2013Поняття арифметико-логічного пристрою. Правила формування прямого, оберненого та додаткового коду двійкових чисел. Побудова електрично-принципової схеми модулю блоку керування, який міг би виконувати не тільки операцію додавання, але й віднімання.
курсовая работа [1,6 M], добавлен 27.02.2012Контроль пожежної безпеки. Комфортне керування освітленням. Програми керування оповіщенням, системою доступу, освітленням, пожежною безпекою. Схема секторів для системи відеонагляду. Програма для логічного контролеру. Схема внутрішніх з'єднань.
курсовая работа [941,0 K], добавлен 20.02.2015Проектування програми керування мікропроцесорним пристроєм світлової індикації на мові С та Assembler. Розробка алгоритму роботи програми, структурної та електричної принципових схем. Здійснення комп’ютерного моделювання для перевірки розроблених програм.
курсовая работа [710,7 K], добавлен 04.12.2014Програми лінійної та розгалуженої структури. Програмна реалізація функцій для роботи з датою та часом. Робота з візуальними компонентами керування. Створення інтерфейсу користувача стандартними подіями. Глобальні ідентифікатори Screen, Mouse, Application.
отчет по практике [1,3 M], добавлен 24.02.2015Дискретизація задачі із закріпленим лівим і вільним правим кінцем. Необхідні умови оптимальності. Ітераційний метод розв’язання дискретної задачі оптимального керування з двійним перерахуванням. Оптимальне стохастичне керування. Мінімаксне керування.
контрольная работа [221,8 K], добавлен 19.12.2010Розгляд програми "Мотор-тест", призначеної для діагностики систем керування двигунів внутрішнього згорання. Вимоги до її інсталяції та особливості налаштування на об'єкт діагностування. Функціональні можливості режимів "Випробування" і "Таблиці".
контрольная работа [922,6 K], добавлен 03.10.2010Методи захисту програмного забезпечення та комп’ютера від несанкціонованого доступу. Метод створення програми перевірки доступу за методом Тюрінга. Розробка структури програми, вибір мови програмування, тестування. Інструкція по роботі з програмою.
курсовая работа [606,7 K], добавлен 06.08.2013Аналіз основних способів контролювання та керування контентом мережі Інтернет. Призначення, функції та принцип дії метапошукових машин, так званих інтелігентних агентів. Індексування, аналіз і категоризація. Документація інтранет і керування контентом.
реферат [19,0 K], добавлен 10.08.2011Алгоритмічна структура алгоритму керування. Вибір конфігурації контролера, схем підключення, технічних засобів автоматизації. Схеми підключення зовнішніх пристроїв. Розроблення прикладного програмного забезпечення для реалізації алгоритму керування.
курсовая работа [3,5 M], добавлен 22.01.2014Вибір первинних вимірювальних перетворювачів та виконавчих механізмів, мікропроцесорних засобів автоматизації. Розробка блок-схеми системи автоматичного керування, програми функціонування вибраних засобів, принципових електричних схем зовнішніх з’єднань.
курсовая работа [176,5 K], добавлен 08.03.2015Проектування і програмування обробки деталей на верстатах з числовим програмним управлінням. Проектування технологічної оперції обробки заготовки: вибір інструменту, ескізи наладок. Керуюча програма обробки деталей "кришка" та "вал". Верифікація програми.
курсовая работа [1,7 M], добавлен 29.11.2011Розробка програми перевірки логічного мислення людини на мові програмування С++, результатом якої є моделювання координатного переміщення. Визначення структури вхідних та вихідних даних, вибір мови програмування. Розгляд алгоритму рішення задачі.
курсовая работа [55,8 K], добавлен 28.04.2015Розробка проекту корпоративної комп'ютерної мережі, яка повинна забезпечити дистанційне керування філіями, контроль поточного стану фінансування, ведення корпоративних баз даних, контроль обсягу проведення ремонтних робіт автошляхів, стану мостів і труб.
дипломная работа [6,1 M], добавлен 20.05.2012Принципи роботи команд мікросхеми 24LC08: читання, запису даних. Опис і блок-схеми програми і підпрограм, що обслуговує пристрій. Вибір середовища програмування і розробка програми, яка забезпечує можливість демонстрації команд. Проведення тестування.
курсовая работа [114,2 K], добавлен 08.12.2011Розробка і описання програми перевірки гіпотези про розподіл Пуассона емпіричного ряду за допомогою критерію Пірсона. Розробка програми мовою Паскаль (середовище Turbo Pascal 6.0.). Програма розроблена із застосуванням методики процедурного програмування.
курсовая работа [51,0 K], добавлен 23.04.2010Розробка структурної схеми системи управління, головні вимоги до основних елементів. Обґрунтування та вибір елементної бази. Блок-схема алгоритму і програми реалізації закону управління (лістинг програми). Зміст програми керування мікроконтроллером.
курсовая работа [170,7 K], добавлен 28.08.2012Особливості удосконалення програми регулювання системного таймера комп'ютера. Специфіка розробки такої програми для роботи з мишею в текстовому й графічному режимах, що містить функції, пов'язані з її обслуговуванням. Робота з керуванням програмами.
курсовая работа [356,2 K], добавлен 05.03.2012