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.


 

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

22542. Расчет гибких нитей 148.5 KB
  Это так называемые гибкие нити. Обычно провисание нити невелико по сравнению с ее пролетом и длина кривой АОВ мало отличается не более чем на 10 от длины хорды АВ. В этом случае с достаточной степенью точности можно считать что вес нити равно мерно распределен не по ее длине а по длине ее проекции на горизонтальную ось т. Расчетная схема гибкой нити.
22543. Моменты инерции относительно параллельных осей 119.5 KB
  Моменты инерции относительно параллельных осей. Задачу получить наиболее простые формулы для вычисления момента инерции любой фигуры относительно любой оси будем решать в несколько приемов. Если взять серию осей параллельных друг другу то оказывается что можно легко вычислить моменты инерции фигуры относительно любой из этих осей зная ее момент инерции относительно оси проходящей через центр тяжести фигуры параллельно выбранным осям. Расчетная модель определения моментов инерции для параллельных осей.
22544. Главные оси инерции и главные моменты инерции 157 KB
  Главные оси инерции и главные моменты инерции. Как уже известно зная для данной фигуры центральные моменты инерции и можно вычислить момент инерции и относительно любой другой оси. Именно можно найти систему координатных осей для которых центробежный момент инерции равен. В самом деле моменты инерции и всегда положительны как суммы положительных слагаемых центробежный же момент может быть и положительным и отрицательным так как слагаемые zydF могут быть разного знака в зависимости от знаков z и у для той или иной площадки.
22545. Прямой чистый изгиб стержня 99.5 KB
  Прямой чистый изгиб стержня При прямом чистом изгибе в поперечном сечении стержня возникает только один силовой фактор изгибающий момент Мх рис. Так как Qy=dMx dz=0 то Mx=const и чистый прямой изгиб может быть реализован при загружении стержня парами сил приложенными в торцевых сечениях стержня. Сформулируем предпосылки теории чистого прямого изгиба призматического стержня. Для этого проанализируем деформации модели стержня из низкомодульного материала на боковой поверхности которого нанесена сетка продольных и поперечных рисок...
22546. Прямой поперечный изгиб стержня 122 KB
  Прямой поперечный изгиб стержня При прямом поперечном изгибе в сечениях стержня возникает изгибающий момент Мх и поперечная сила Qy рис. 1 которые связаны с нормальными и касательными напряжениями Рис. Связь усилий и напряжений а сосредоточенная сила б распределеннаяРис. Однако для балок с высотой сечения h l 4 рис.
22547. Составные балки и перемещения при изгибе 77.5 KB
  Составные балки и перемещения при изгибе ПОНЯТИЕ О СОСТАВНЫХ БАЛКАХ Работу составных балок проиллюстрируем на простом примере трехслойной балки прямоугольного поперечного сечения. Это означает что моменты инерции и моменты сопротивления трех независимо друг от друга деформирующихся балок должны быть просуммированы Если скрепить балки сваркой болтами или другим способом рис. 1 б то с точностью до пренебрежения податливостью наложенных связей сечение балки будет работать как монолитное с моментом инерции и моментом сопротивления...
22548. Напряжения и деформации при кручении стержней кругового поперечного сечения 130.5 KB
  Напряжения и деформации при кручении стержней кругового поперечного сечения Кручением называется такой вид деформации при котором в поперечном сечении стержня возникает лишь один силовой фактор крутящий момент Мz. Крутящий момент по определению равен сумме моментов внутренних сил относительно продольной оси стержня Oz. С силами лежащими в плоскости поперечного сечения стержня интенсивности этих сил касательные напряжения и Мz связывает вытекающее из его определения уравнение равновесия статики рис. 1 Условимся считать Mz...
22549. Практические примеры расчета на сдвиг. Заклепочные соединения 58.5 KB
  Заклепки во многих случаях уже вытеснены сваркой; однако они имеют еще очень большое применение для соединения частей всякого рода металлических конструкций: стропил ферм мостов кранов для соединения листов в котлах судах резервуарах и т. В них закладывается нагретый до красного каления стержень' заклепки с одной головкой; другой конец заклепки расклепывается ударами специального молотка или давлением гидравлического пресса клепальной машины для образования второй головки. Мелкие заклепки малого диаметра меньше 8 мм ставятся в...
22550. Расчет заклепок на смятие и листов на разрыв 93.5 KB
  1 указана примерная схема передачи давлений на стержень заклепки. Принято считать что неравномерное давление передающееся на поверхность заклепки от листа распределяется равномерно по диаметральной плоскости сечения заклепки. При этом напряжение по этой диаметральной плоскости оказывается примерно равным наибольшему сминающему напряжению в точке А поверхности заклепки. Передача давлений на стержень заклепки.