Text: |
ФІО = 7gvagai
Запитання:Лабораторна робота № 7
Програмування задачі керування з зворотнім зв'язком
4.03.2013
Робота
Студентів 3 курсу
Гайдар Вікторія
Горбаченко Василь
Завдання.
1. Сформувати установку для керування хімічним реактором.
2. Написати програму, яка забезпечує вимірювання концентрації і рівня розчину в реакторі і забезпечує стабільність початкових значень рівня і концентрації. Вважати важливішим параметром концентрацію..
3. Написати програму стабілізації рівня та концентрації розчину у реакторі. Сподіваємось, що в результаті роботи Вашої програми національна хімічна промисловість не буде знищена повністю
4. (Додаткове завдання) Додати запис у файл даних для побудови графіку залежності від часу рівня рідини у реакторі і концентрації розчину.
5. Запустити програму і перевірити її стійкість на протязі 20-30 хвилин
Код програми:
using System;
using System.Collections.Generic;
using System.Text;
namespace EXP
{
partial class user
//class user
{
static int Do(int N, int A, int F, int D_In) { return C.Do(N, A, F, D_In); }
public static void UserStendInit()
{
//---------Students code----------------BEGIN
C.SetStend3(); //підключаємо стенд для роботи
//---------Students code----------------END
}
public static void UserCrateInit()
{
// C.SetDAC(3); //example
//---------Students code----------------BEGIN
C.SetStep(1); // в роботі використовуємо кроковий двигун
C.SetDAC(2);
C.SetADC(3);
C.SetDAC(4);
C.SetADC(5);
//---------Students code----------------END
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++
public static void UserConnect()
{
// Connect.Set(3, 1, 0, 3); //example
//---------Students code----------------BEGIN
Connect.Set(1, 1, 0, 10); // підключаємо кроковий двигун для керування вентилями
Connect.Set(1, 2, 0, 11);
Connect.Set(2, 1, 0, 1);
Connect.Set(3, 1, 0, 2);
Connect.Set(4, 1, 0, 3);
Connect.Set(5, 1, 0, 4);
//---------Students code----------------END
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++
public static void Experiment()
{
//---------Students code----------------BEGIN
int U = 2047; // напруга
int m, n;
double dk = 0, dr = 0;
// запис нового значення У і розпочати рух крокового двигуна
Do(1, 1, 16, 65);
// запис нового значення Х і розпочати рух крокового двигуна
Do(1, 0, 16, -35);
Time.Pause(2);
// подаємо напругу 5 В
Do(2, 0, 16, U);
// зчитую данні з першого опору, для визначення концентрації
int U10 = Do(3, 0, 0, 0);
// подаємо напругу 5 В
Do(4, 0, 16, U);
// зчитую данні з другого опору, для визначення рівня
int U20 = Do(5, 0, 0, 0);
double koncent0 = (5000.0 * U10) / ((U - U10) * 1.0);
double riven0 = (1000.0 * U20) / ((U - U20) * 1.0);
m = 65; n = -35; // запамятаємо початкові координати крокового двигуна,
// тобто початкові положення вентелів для більш менш стабільного рівня
for (; ; )
{
int U1 = Do(3, 0, 0, 0); // зчитуємо поточні значення напруги з першого опору
int U2 = Do(5, 0, 0, 0); // зчитуємо поточні значення напруги з другого опору
// обчислюємо концентрацію
double koncent = (5000.0 * U1) / ((U - U1) * 1.0);
// обчислюємо рівень, використовуючи друге коло
double riven = (1000.0 * U2) / ((U - U2) * 1.0);
if (koncent >= koncent0)
{// якщо концентрація завищена
if (dk < Math.Abs(koncent - koncent0)) m += 9; // порівнюємо порівнюємо попередню і поточну різниці концентрацій
// зменшуємо концентрацію, подаючи більше води
Do(1, 1, 16, m);
if (riven >= riven0)
{// якщо рівень завищений, при цьому концентрація також завищена
if (dr < Math.Abs(riven0 - riven)) n += 9;
Do(1, 0, 16, n); // зменшуємо подачу для зменшення рівня
}
else
{
if (dr < Math.Abs(riven0 - riven)) n -= 9;
Do(1, 0, 16, n); // якщо рівень занижений, то збільшуємо подачу води, тобто збільшуємо рівень
}
}
else
{ // якщо концентрація не перевищує потрібного рівня
if (dk < Math.Abs(koncent - koncent0)) m -= 9;
Do(1, 1, 16, m); //збільшуємо закачку кислоти
if (riven >= riven0) //аналогічно до попередніх пунктів викоритсовуємо програму
{
if (dr < Math.Abs(riven0 - riven)) n += 9;
Do(1, 0, 16, n);
}
else
{
if (dr < Math.Abs(riven0 - riven)) n -= 9;
//зменшуємо подачу води
Do(1, 0, 16, n);
}
}
//запамятовуємо поточні значення різниць рівня та концентрації
dr = Math.Abs(riven0 - riven); dk = Math.Abs(koncent - koncent0);
}
//---------Students code----------------END
}
}
}
Контрольне питання
2. Яким чином можна вимірювати потік рідини? Чи буде це корисним для виконаної в цій роботі задачі?
Датчики потоку застосовуються для контролю потоків рідин і газів в різних галузях промисловості. Саме поняття потоку може бути визначене по-різному, наприклад масовий потік або об'ємний, ламінарний або турбулентний. Зазвичай хочуть з'ясувати кількість речовини в потоці і, якщо рідина має постійну щільність, то зазвичай вимірюється об'ємний потік, оскільки його легше виміряти. Розглянемо найбільш використовувані технології і пристрої для виміру потоку рідин і газів.
1. Калориметричні датчики потоку.
Калориметричні датчики потоку працюють за принципом виміру перенесення тепла потоком рідини від нагрівача до температурного датчика. Перенесене тепло пропорційно швидкості потоку. Такі датчики зазвичай мають другий температурний датчик для компенсації змін температури рідини. Калориметричні датчики потоку краще працюють при малих швидкостях потоку рідини або газу близько 30 - 3000 см/сек(для газів), замінюючи датчики, працюючі на принципі перепаду тиску.
Особливістю калориметричних датчиків виміру тиску є компактне виконання, що дозволяє проводити вимір в найменших діаметрах трубопроводах, відсутність рухливих частин і великий динамічний діапазон. До основних недоліків можна віднести залежність свідчень від різких стрибків температури вимірюваної рідини і у разі різких змін властивостей рідини - наприклад зміні щільності або теплопровідності.
2. Витратоміри диференціального тиску.
Витратоміри, працюючі на принципі виміру диференціального тиску найбільш застосовні для виміру витрати рідин. Принцип їх роботи оснований на тому, що падіння тиску в потоці рідини на вимірюваній ділянці пропорційно квадрату швидкості потоку рідини. Тим самим, вимірюючи диференціальний тиск в потоці рідини і обчислюючи квадратний корінь, отримуємо значення витрати. Ці пристрої, як і багато витратомірів, складаються з двох частин.
Перша частина змінює кінетичну енергію рідини, створюючи диференціальний тиск в трубі. Ця деталь, як правило, вставляється в трубопровід, в якому вимірюється потік рідини, так само вона повинна забезпечувати необхідну точність в усьому діапазоні вимірів. Друга частина витратоміру вимірює диференціальний тиск і конвертує отриманий сигнал в значення витрати рідини.
Для виміру потоку повітря або газу методом диференціального тиску використовуються трубки Піто. Трубка Піто складається з двох трубок, які вимірюють тиск в різних частинах трубопроводу. Одна трубка, те, що вимірює статичний тиск розташовується зазвичай в стінці трубопроводу.Інша трубка вимірює набігаючий тиск(статичний тиск, плюс тиск набігаючого потоку повітря). Чим більше швидкості потоку повітря, тим більше набігаючий тиск.
Для виміру потоку рідин у витратомірах диференціального тиску використовуються різні сітки, звуження отворів, вставки. Вставка, що звужує отвір трубопроводу, найбільш простий і дешевий пристрій для виміру диференціального тиску. Такий звужуючий отвір створює перешкоду потоку рідини і в результаті виходить різниця тисків до і після звужуючого отвору.
Трубка Вентури має великі розміри і більш високу вартість, серед інших облаштувань створення диференціального тиску.
Трубка Вентури поступово звужує діаметр трубопроводу і тиск вимірюється в різних точках - зазвичай на початку звуження і в найвужчій частині. Далі діаметр трубки Вентури розширюється до початкового, тим самим відновлюючи початковий тиск в трубопроводі. Трубки Вентури зазвичай використовуються в трубопроводах великих діаметрів, завдяки низькому падінню тиску і більш високої точності свідчень.
Основним недоліком витратомірів диференціального тиску є порівняно вузький динамічний діапазон вимірів.
3. Вихрові витратоміри.
Вихрові витратоміри працюють на принципі: коли потік рідини обтікає перешкоду - тіло обтікання, то в потоці, що відходить, по краях цього тіла виникають завихрення рідини. Частота цих завихрень пропорційна швидкості рідини. Вихрові витратоміри найбільш проявляють себе за швидкостей потоку 2 - 40 м/сек., проте вимірювати витрату в'язких рідин ними не рекомендується.
4. Масові витратоміри.
Багато хімічних реакцій вимагають точнішого виміру витрати речовини. Це привело до розробки масових витратомірів. Існує велика кількість моделей, але найбільш поширені витратоміри Коріоліса. Принцип яких оснований на існуванні Коріолісової сили. Коріолісові витратоміри вимірюють безпосередньо масові витрати, тоді як інші витратоміри вимірюють в основному об'ємні витрати речовини.
Оскільки маса речовини незмінна, то в таких витратомірах немає необхідності його підстроювання залежно від зміни властивостей вимірюваної речовини. Більше того, кориолисовый витратомір не вимагає підстроювання при зміні температури або тиску. Ці витратоміри застосовуються для виміру витрати рідин, в'язкість яких міняється залежно від температури і тиску.
Отже, датчики для вимірювання потоку речовини були б доречні в цій лабораторній роботі, оскільки вони дозволили б нам керувати концентрацією речовини і також зміною рівнем сумішшю.
====================================
|