Програма для керування верстатом з числовим програмним управлінням
Команди керування верстатом. Розробка зчитування слова стану та перевірки номеру блока. Переключення біта тривоги. Виконавчий механізм блоку керування. Перевірка помилки виконуючого механізму. Складання слів для перевірки роботоздатності усієї програми.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | украинский |
Дата добавления | 24.11.2014 |
Размер файла | 70,4 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Знання та практичні навики, отримані під час виконання курсової роботи, знадобляться мені у майбутньому при оформлені звітів до курсових робіт та проектів з цього та інших предметів, дипломної роботи та інших науково-технічних документів. Крім цього здобуті знання з програмування будуть використовуватися при навчанні у подальшому та при подальшій професійній діяльності.
СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ
1. Методичні вказівки до разрахунково-графічної роботи з дисципліни «Технології програмування» / В.Я. Чечельницький. - Одеса: ОНПУ, 2014. - 60 с.
2. Visual C++ 2005: Базовий курс / А. Хортон. - Москва, Санкт- Пітербург, Київ: Діалектика, 2007. - 1152 с.
3. Технологія програмування на С++ / Н.А. Літвіненко. - Санкт-Пітербург: БХВ-Пітербург, 2010. - 251 с.
ДОДАТОК А
Код розроблених програм
/***********************************************/
/* Курсовая работа */
/* по дисциплине "Технологии программирования" */
/* на тему: "Операции с битами" */
/* Вариант 39 */
/* Программа 1 */
/* Выполнил студент РТ-131 */
/* Нитинський Иван Семеновыч */
/***********************************************/
}
#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"
unsigned word;
// Слово состояние
cout << "Введите слово состояние блока"
<< "управление в десятичном виде равно";
cin >>word;
cout << " Вы ввели следующее слово состояние ="
<< word << endl;
// Проверка номера блока
if (((word >> 8) & Mask5) != 9)
{
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
cout <<"Не верный номер блока!" <<endl;
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
exit(0); //"Выход из программы"
}
// Перевірка канала передачі даніх
if ((( word & MaskW) != 0) ||
(word & Mask3) != 3)
{
//Вивід повідомлення про ошибку
cout << "Ошибка канала передачі даних!";
cout << "\"W\"="
<<((word >> 23) & Mask1)
<< ", \"1\"="
<<((word >> 16) & Mask2)
<< (word & Mask1) <<endl;
//Перемікання біта тривоги
word ^= MaskA;
cout << "Слово стану = "
<< word << endl;
exit (1);
}
// Проверка ошибки исполнительного механизма
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);
}
}
// Проверка занятости устройства
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);
}
}
// Обработка горизонтальной координаты
if (((word >> 3) & Mask4) !=3)
{
word |= MaskW; // Включение бита записи
cout << "Горизонтальное перемещение"
<< endl;
cout << "Код операции управления = 011"
<< endl;
// Запись кода операции управления
word |= 0xF0000; // Установка битов
word &= ~0x80000; // Сброс бита
word &= ~MaskW; // Выключение бита записи
cout << "Слово состояние = "
<< word << endl;
exit(0);
}
// Обработка вертикальной координаты
if (((word >> 19) & Mask4) != 3)
{
word |= MaskW; // Включение бита записи
cout << "Вертикальное перемещение"
<< endl;
cout << "Код операции управления = 000"
<< endl;
// Запись кода операции управления
word &= ~0x30000;
word &= ~MaskW; // Выключение бита записи
cout << "Слово состояние = "
<< word << endl;
exit(0);
}
//Завершение программы
cout << "Устройство успешно закончило"
<< " свою работу." << endl;
cin.get();
return 0;
}
/***********************************************/
/* Курсовая работа */
/* по дисциплине "Технологии программирования" */
/* на тему: "Операции с битами" */
/* Вариант 39 */
/* Программа 2 */
/* Выполнил студент РТ-131 */
/* Нитинський Иван Семенович */
/***********************************************/
#include <iostream>
#include <cstdlib>
using namespace std;
// Прототипы функций
// Считать слово состояния с клавиатуры
void GetWord();
// Проверка номера блока
void BlockNumber();
// Проверка канала передачи данных
void VerificationChannel();
// Проверка ошибки исполнительного механизма
void ErrorCheckUnit();
// Проверка занятости устройства
void DeviceIsBusy();
// Обработка горизонтальной координаты исполнительного механизма
void HorizontalCoordinate();
// Обработка вертикальной координаты исполнительного механизма
void VerticalCoordinate();
// Объявление битовых полей
struct word_type
{
unsigned F:3; // 3 бита - код ощибки
unsigned M:2; // 2 бита - код операции управления
unsigned H:3; // 3 битa - горизонтальная координата
unsigned U:5; // 5 бит - номер блока
unsigned A:1; // 1 бит - бит тревоги
unsigned R:1; // 1 бит - разрешение чтения
unsigned One:2; // 2 бита - неиспользуемыe
unsigned B:1; // 1 бит - признак занятости устройства
unsigned V:4; // 4 битa - вертикальная координата
unsigned W:1; // 1 бит - бит разрешения записи
unsigned E:1; // 1 бит - бит ошибки
};
// Объявление объединения
union
{
unsigned word; // слово состояние
word_type bits; // Битовые поля
} u;
int main()
{
// Считать слово состояния с клавиатуры
GetWord();
// Проверка номера блока
BlockNumber();
// Проверка канала передачи данных
VerificationChannel();
// Проверка ошибки исполнительного механизма
ErrorCheckUnit();
// Проверка занятости устройства
DeviceIsBusy();
// Обработка горизонтальной координаты исполнительного механизма
HorizontalCoordinate();
// Обработка вертикальной координаты исполнительного механизма
VerticalCoordinate();
// Завершение выполнения программы
cout << " Устройство успешно завершило свою работу " << endl;
cin.get();
return 0;
}
/*******************************************************/
/* Считать слово состояния с клавиатуры */
/*******************************************************/
void GetWord()
{
cout << " Введите слово состояния блока управления в десятичном виде = " ;
cin >> u.word;
}
/*******************************************************/
/* Проверка номера блока */
/*******************************************************/
void BlockNumber()
{
if(u.bits.U !=9)
exit(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;
// Переключение бита тревоги
u.bits.A=1;
cout << "Слово состояния " << u.word << endl;
exit(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);
}
}
}
/*******************************************************/
/* Проверка занятости устройства */
/*******************************************************/
void DeviceIsBusy()
{
if(u.bits.B)
{
if(!u.bits.E && !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);
}
}
}
/*******************************************************/
/* Обработка горизонтальной координаты */
/*******************************************************/
void HorizontalCoordinate()
{
if(u.bits.H != 7)
{
u.bits.W = 1; // Включение бита записи
cout << "Горизонтальное перемещение" << endl;
cout << "Код операции управления = 11" << endl;
// Запись кода операции управления
u.bits.M=3; // Запись операции управления
u.bits.W = 0; // Выключение бита записи
cout << " Слово состояния = " << u.word << endl;
exit(0);
}
}
/*******************************************************/
/* Обработка вертикальной кооординаты */
/*******************************************************/
void VerticalCoordinate()
{
if(u.bits.V != 15)
{
u.bits.W = 1; // Включение бита записи
cout << "Вертикальное перемещение" << endl;
cout << "Код операции управления = 000" << endl;
// Запись кода операции управления
u.bits.M=0;
u.bits.W = 0; // Выключение бита записи
cout << " Слово состояния = " << u.word << endl;
}
}
Размещено на Allbest.ru
...Подобные документы
Розробка програми, що надає користувачу можливості керування додатками 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