12403

Моделювання роботи мікропроцесорного прибору ІТМ-11 в середовищі С++Builder

Лабораторная работа

Информатика, кибернетика и программирование

Лабораторна робота № 8 Моделювання роботи мікропроцесорного прибору ІТМ11 в середовищі СBuilder Мета: навчитися створювати компютерну імітаційну модель роботи мікропроцесорного приладу ІТМ11 використовуючи стандартні компоненти С Builder. 1. Відомості по приладу ...

Украинкский

2013-04-27

203 KB

5 чел.

Лабораторна робота 8

Моделювання роботи мікропроцесорного прибору ІТМ-11

в середовищі С++Builder

Мета: навчитися створювати комп’ютерну імітаційну модель роботи мікропроцесорного приладу ІТМ-11, використовуючи стандартні компоненти С++ Builder.

1. Відомості по приладу ІТМ-11

У технологічних процесах для реєстрації параметрів використовуються

ІТМ-11(рис. 1). Ці пристрої обладнані також функцією сигналізації.

Рис 1. Передня панель ІТМ-11

Індикатор технологічний мікропроцесорний ІТМ-11:

- Універсальні багатофункціональні одноканальні індикатори;

- Модифікації індикаторів ІТМ-11 - горизонтальне виконання, шкального індикатора 31 сегмент, ІТМ-11В - вертикальне виконання, шкального індикатора 21 сегмент.

Область застосування:

- Системи цифрового і лінійної індикації технологічних параметрів;

- Двопозиційний, трипозиційний і багатопозиційне регулювання температури, тиску, витрат, рівня й інших фізичних величин;

- Дистанційні пристрої зв'язку з об'єктом з індикацією;

- Територіально розподілені і локальні системи управління;

- Місцеві щити та пульти керування, мнемощити, мнемосхеми і т.п.

Функціональні можливості:

- Робота з уніфікованими сигналами, термоперетворювачами опору, термопарами

- Кожен аналоговий вхід може бути налаштований на підключення будь-якого типу датчика

- Індикація параметрів в технологічних одиницях на цифрових і лінійних (0-100%) індикаторах

- Цифрове калібрування (автоматичне і ручне) початку шкали і діапазону вимірювання

- Вибір методу лінійної індикації (сегмент, гістограма)

- Завдання та сигналізація відхилення від установок мінімум і максимум на передній панелі

- Тип технологічної сигналізації: без запам'ятовування спрацьовування, із запам'ятовуванням спрацьовування і квітируванням

- Вхідний цифровий фільтр аналогових входів

- Витяг квадратного кореня (вимірювання витрати по перепаду тиску)

- Функція вимірювання інтегральної витрати

- Лінеаризація вхідного сигналу (по 16 точкам)

- 2 конфігурованих дискретних виходи - транзистор ОК, реле, оптосімістор, твердотільне реле

- Програмована логіка роботи вихідних пристроїв: більше MAX, менше MIN, в зоні MIN-MAX, поза зоною MIN-MAX

- Аналоговий вихід для ретрансміссії вхідних аналогових сигналів

- Архівація даних в енергонезалежну пам'ять (планується модернізація)

- Збереження параметрів при відключенні живлення

- Захист від несанкціонованої зміни параметрів

- Гальванічно розділений інтерфейс RS-485, протокол ModBus RTU (збір інформації, конфігурація)

Перелічимо необхідні компоненти С++ для створення програми.

Image – компонента із вкладки Additional для завантаження рисунків і відображення на формі.

Timerкомпонента із вкладки System, необхідна для створення анімованого зображення.

Label – компонента із вкладки  Standard , необхідна для відображення тексту.

TrackBarкомпонента із вкладки Win32, необхідна для завдання параметру.

Edit - компонента із вкладки  Standard, для забезпечення введення мінімального та максимального значення контрольованого параметру.

Chart - компонента із вкладки Additional для графічного відображення значення контрольованого параметру.

Хід роботи

Крок 1. Створюємо новий проект С++, перейменовуємо назву форми проекту через властивість Caption. Змінюємо назву Form1 на Емулятор ІТМ-11. Зберігаємо зміни. Папку з картинками із назвою ІТМ-11 поміщаємо в ту ж папку де знаходяться файли збереженого проекту.

Крок 2. Розміщуємо на формі програми необхідні компоненти:

Timer1 – Interval=100; Timer2 -  Interval=100; Timer3 - Interval=100.

Image1,Image2,Image3,Image4,Image5,Image6,Image7,Image8.(Для кожного з Image підбираємо необхідні розміри і позиції, усі зміни параметрів робимо через Object Inspector - Properties).

Image1 – AutoSize – true; Picture – завантажуємо  ITM-11.bmp; Left =0;Top=0;

Image2 - Left =62;Top=88; Height=28; Width=20; Picture –завантажуємо  ITM-11\Digits\0.bmp

Image3 - Left =84;Top=88; Height=28; Width=20; Picture –завантажуємо  ITM-11\Digits\0d.bmp

Image4 - Left =106;Top=88; Height=28; Width=20; Picture –завантажуємо  ITM-11\Digits\0.bmp

Image5 – Stretch=true; Left =22;Top=28; Height=23; Width=251; Picture –завантажуємо  ITM-11\Linear\0.bmp

Image6 – Transparent=true; Left =133;Top=106; Height=17; Width=17; Picture –завантажуємо  ITM-11\at.bmp

Image7 – Transparent=true; Left =133;Top=87; Height=17; Width=17; Picture –завантажуємо  ITM-11\at2.bmp

Image8 - Left =38;Top=88; Height=28; Width=20; Picture –завантажуємо  ITM-11\Digits\0.bmp

TrackBar1 – Min=0,Max=100; SelStart=30; SelEnd=70;

Label1 – змінюємо параметр Font, настроюємо бажаний шрифт і розмір шрифту.

Label2 – змінюємо параметр Caption на Контроль параметру

Розміщуємо на формі компоненти Edit1 та Edit2, Змінюємо параметри для них:

Edit1Text – min;

Edit2Text – max;

Додаємо компоненту Chart, бачимо на формі область для побудови графіку, двічі клікаємо по ній ЛКМ, обираємо Add… із вкладки Series, з’являється Series1. Переходимо на вкладку Titles і називаємо графік «Контрольований параметр»

Після того як усі компоненти розставлені, змінюємо властивості форми Form1 – AutoSize=true;

Форма з усіма необхідними компонентами повинна мати вигляд, як на рисунку 2.

Рисунок 2. Форма із розміщеними на ній компонентами

Крок 3. Заповняємо лістинг програми, створюючи необхідні події і додаючи вказівки препроцесорів. Усі події створюємо або подвійним кліком миші по компоненті, або через Object InspectorEvents.

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include <math.h>

#include "Unit1.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

float k,P[100],x1,ch;

int x,c,c2,c3,c4,i,min=0,max=10,i2,j,l;

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

       : TForm(Owner)

{

Form1->DoubleBuffered=true;

Image6->Visible=false;

Image7->Visible=false;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Timer1Timer(TObject *Sender)

{

  k=(max-min)*0.01;

  x1=min+(TrackBar1->Position)*k;

  x=min+(TrackBar1->Position)*k;

  c=(x-x%100)/100;                        //перша цифра числа

  c2=((x-x%10)-(x-x%100))/10;  //друга цифра

  c3=x%10;                                      //третя цифра

  ch=ceil((x1-x)*10);

  c4=ch;                       //цифра після коми

  l=(TrackBar1->Position*31)/100; //відповідає за заповнення сегментів

  if (max<10)

 {Image8->Picture->LoadFromFile("ITM-11/Digits/0.bmp") ;

  Image2->Picture->LoadFromFile("ITM-11/Digits/0.bmp") ;

  Image3->Picture->LoadFromFile("ITM-11/Digits/"+IntToStr(c3)+"d.bmp") ;

  Image4->Picture->LoadFromFile("ITM-11/Digits/"+IntToStr(c4)+".bmp");

  Image5->Picture->LoadFromFile("ITM-11/Linear/"+IntToStr(l)+".bmp");

 }

 if (max<=99 )

{

 Image8->Picture->LoadFromFile("ITM-11/Digits/0.bmp") ;

 Image2->Picture->LoadFromFile("ITM-11/Digits/"+IntToStr(c2)+".bmp") ;

 Image3->Picture->LoadFromFile("ITM-11/Digits/"+IntToStr(c3)+"d.bmp") ;

 Image4->Picture->LoadFromFile("ITM-11/Digits/"+IntToStr(c4)+".bmp");

 Image5->Picture->LoadFromFile("ITM-11/Linear/"+IntToStr(l)+".bmp");

 }

   if (max<1000 )

{

 Image8->Picture->LoadFromFile("ITM-11/Digits/"+IntToStr(c)+".bmp") ;

 Image2->Picture->LoadFromFile("ITM-11/Digits/"+IntToStr(c2)+".bmp") ;

 Image3->Picture->LoadFromFile("ITM-11/Digits/"+IntToStr(c3)+"d.bmp") ;

 Image4->Picture->LoadFromFile("ITM-11/Digits/"+IntToStr(c4)+".bmp");

 Image5->Picture->LoadFromFile("ITM-11/Linear/"+IntToStr(l)+".bmp");

}

if (TrackBar1->Position<=30)

{ Timer2->Enabled=true;Timer3->Enabled=false; Image7->Visible=false;

 Label1->Caption="  Мінімальне навантаження ";

 Label1->Font->Color=clGreen;}

if (TrackBar1->Position>=70)

{Timer3->Enabled=true;Timer2->Enabled=false; Image6->Visible=false;

 Label1->Caption="  Максимальне навантаження ";

 Label1->Font->Color=clRed;}

if (TrackBar1->Position>30 && TrackBar1->Position<70)

{i=0;

 Label1->Caption="  Робочий режим ";

 Image6->Visible=false;

 Image7->Visible=false;

 Timer2->Enabled=false;

 Timer3->Enabled=false;

 Label1->Font->Color=clBlue;}

 //*** Рисування графіка функції***//

  P[100]= x+ch/10;

  for (i2=0;i2<100;i2++)

 {P[i2]=P[i2+1];}

  Series1->Clear();

  for (j=0;j<100;j++)

  {

    Series1->AddY(P[j]);

  }

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Timer2Timer(TObject *Sender)

{

 i++;

 if (i==1)

 {Image6->Visible=true;}

 if(i==2)

 {Image6->Visible=false;i=0;}

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Timer3Timer(TObject *Sender)

{

 i++;

 if (i==1)

 {Image7->Visible=true;}

 if(i==2)

 {Image7->Visible=false;i=0;}

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Edit1Change(TObject *Sender)

{

min=StrToInt(Edit1->Text);

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Edit2Change(TObject *Sender)

{

max=StrToInt(Edit2->Text);

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Edit2Click(TObject *Sender)

{

Edit2->Text=IntToStr(max);

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Edit1Click(TObject *Sender)

{

Edit1->Text=IntToStr(min);

}

//---------------------------------------------------------------------------

Готова робоча програма повинна мати вигляд як на рисунку 3.

Рисунок 3. С++ програма для демонстрації роботи ІТМ-11.


 

А также другие работы, которые могут Вас заинтересовать

34762. Синергетика как новое мировоззрение 26.5 KB
  Даже если бы новацией было только название появление синергетики было бы оправдано. Предложенное Хакеном выразительное название нового междисциплинарного направления привлекало к этому новому направлению гораздо больше внимания чем любое правильное но скучное и понятное лишь узкому кругу специалистов название. Предложенное им название сочтенное пуристами чрезмерно зазывным и рекламным оказалось особенно для нематематиков намного более привлекательным чем существовавший до Тома вариант теория особенностей дифференцируемых...
34763. Диалектика случайности и необходимости, содержания и формы, единичного и общего, возможности и действительности 52.5 KB
  вещь явление в их всеобщей закономерной связи; отражение преимущественно внутренних устойчивых повторяющихся всеобщих отношений действительности основных направлений её развития: выражение такой ступени движения познания в глубь объекта когда вскрываются его сущность закон; способ превращения возможности в действительность при котором в определенном объекте при данных условиях имеется только одна возможность превращающаяся в действительность. отражение в основном внешних несущественных неустойчивых единичных связей...
34764. Причинные связи. Категории причины и следствия. Проблема причинности в медицине 47.5 KB
  Категории причины и следствия. в схеме показано что причинноследственная связь направлена от причины к порожденному ею следствию. Имеется в виду что причины вызывают не любые а определенные соответствующие им следствия. Графическая модель такого соотношения выглядит следующим образом: Некоторые причины вызывают многочисленные долго развивающиеся следствия например катастрофические стихийные бедствия такие как ураганы землетрясения или взрыв атомной бомбы над Хиросимой в 1945 году.
34765. Теория познания, ее предмет и основные принципы. Критика агностицизма 37.5 KB
  Критика агностицизма Теория познания есть общая теория уясняющая саму природу познавательной деятельности человека в какой бы области науки искусства или житейской практики она ни осуществлялась. Агностицизм от греческого ágnōstos недоступный познанию философское учение согласно которому не может быть окончательно решен вопрос об истинности познания получена объективная характеристика окружающей человека действительности. Позиция Агностицизм разделялась в истории философии представителями идеализма в особенности субъективного а в...
34766. Знание как гносеологический таксон. Условие адекватности, обоснованности, убежденности. Мнение. Вера знание 24 KB
  Условие адекватности обоснованности убежденности. Стандартная трактовка того что ктото знает чтото включает в себя следующие три условия: условие истинности адекватности условие убежденности условие обоснованности. Условие убежденности веры приемлемости если S знает Р то S убежден верит в Р Когда я говорю например что знаю что в России есть президент то я верю что он действительно существует. Условие обоснованности S знает Р когда может обосновать свое убеждение в Р Это условие позволяет отграничить знание от...
34767. Научное познание и его специфические признаки. Методы научного познания 46 KB
  Методы научного познания. Так в зависимости от роли и места в процессе научного познания можно выделить методы формальные и содержательные эмпирические и теоретические методы исследования и изложения и т. Выделяют также качественные и количественные методы методы непосредственного и опосредованного познания оригинальные и производные и т. В этом плане все методы научного познания по степени общности и сфере действия могут быть разделены на пять основных групп: Философские методы среди которых наиболее древними являются диалектический и...
34768. Здоровье как ценность, философия здоровья человека 28.5 KB
  В большинстве стран был принят целый ряд юридических документов государственных масштабов по экологическому контролю за деятельностью промышленных и других предприятий по охране окружающей среды и здоровья человека. сформировался культ здоровья и здорового образа жизни как поощряемого и престижного способа существования. Культ здоровья и здорового образа жизни является жизненно важным делом лишь для очень небольшого количества людей в основном энтузиастов.
34769. Проблема жизни и смерти в духовном опыте человека. Философия о смысле жизни, смерти и бессмертии. Право на смерть 67.5 KB
  Философия о смысле жизни смерти и бессмертии. В чем смысл жизни Постановка проблемы В жизни каждого нормального человека рано или поздно наступит момент когда он задается вопросом о конечности своего индивидуального существования. Наличием такого знания в духовном опыте человека в значительной степени и объясняется острота с которой перед ним встает вопрос о смысле и цели жизни.
34770. Понятие истины. Объективность истины. Принципы: корреспонденции, когеренции и прагматизма. Гносеологическая, логическая и онтологическая формы истины 42.5 KB
  Объективность истины. Гносеологическая логическая и онтологическая формы истины. Абсолютные истины складываются на основе относительных.