Смекни!
smekni.com

Навчальна модель аналогово-цифрового перетворювача (стр. 5 из 6)

- необхiдно слiдкувати, щоб на обслуговуваному обладнаннi було надiйне заземлення i не було вiдкритих ділянок пiд напругою;

- не залишати без нагляду працююче обладнання, при необхiдностi вiдлучитись обов’язково вiдключають обладнання вiд мережi;

- при наявностi враження електричним струмом здiйснити першу медичну допомогу потерпiлому, сповiстити про те, що сталося в медпункт та керiвнику робiт.

Освiтлення достатнє i повинно вiдповiдати СH i П II- 4 -79. Потрiбна освiтленiсть визначається характером виконуваної роботи i дiючими санiтарними нормами. При природньому i штучному освiтленi робочi мiсця розмiщенi таким чином, щоб свiтло падало злiва. Такi умови вважаються оптимальними.

Розмiщення для електроустаткування і електропроводки iзоляцiї забезпечують повну безпеку працюючого.

Шкiдливi речовини, якi видiляються при роботi, видаляються за допомогою мiсцевої вентиляцiї. Розмiщення пристроїв i трубопроводiв для вiдведення повiтря виключає можливiсть травматизму.

Зовнiшнє оформлення робочих мiсць в виробничих примiщеннях вiдповiдає вимогам виробничої естетики. Кольори для фарбування поверхонь виробничих примiщень i устаткування, які розмiщені в колi зору працюючого, повинні бути свiтло-голубими, що забезпечує кращу видимiсть деталей i сприятливо дiє на нервову систему людини.

В комплекс заходів по створенню високопродуктивної працi входять i психофiзiологiчнi заходи, якi забезпечують безперервний ріст продуктивностi працi при мiнiмальних витратах фiзичної i нервової енергiї працюючого, i направленi на створення оптимального режиму працi та вiдпочинку із врахуванням конкретного процесу виробництва.

Виробничий процес збирання, монтажу та регулювання приладу вiдноситься по ступеню пожежної небезпечностi до категорiї Д.

Причинами пожежi можуть бути: коротке замикання, перевантаження провiдникiв мережi, виникнення великих перехiдних опорiв, якi порушують нормальну роботу технологiчного обладнання. Тому передбачаються пристрої, що забезпечують вiд’єднання при короткому замиканнi як всiєї мережi, так i окремих її ділянок.

Електроосвiтлення створює пожежну небезпеку при перегрiванні провiдникiв та iзоляцiї.

Для захисту провiдникiв вiд механiчних та хiмiчних пошкоджень їх прокладають в гумових або металевих трубках, якi мають внутрiшню iзоляцiю.

При русi гумової стрiчки транспортеру можуть виникати електростатичнi заряди. При незначнiй вологостi повiтря можливий iскровий розряд мiж частинами обладнання, або розряд на землю.

Енергiя такої iскри незначна, але може бути достатньою для пiдпалення горючої або вибухонебезпечної сумiшi. Таким чином, виникаючi в виробничих умовах електростатичнi заряди, можуть бути джерелами пожежi.

Уникнути небезпеки виникнення електростатичних зарядiв можна наступними методами:

1) заземлення виробничого обладнання та ємностей для зберiгання вогненебезпечних рiдин;

2) збiльшення вологостi повiтря або використання антистатичних домішок до основного продукту.

Джерелами пожежi можуть бути легкозаймистi рiдини: спирт, бензин, ацетон та ін. тому їх запас на виробничій ділянці не повинен перевищувати потреби на одну робочу змiну. Для зберiгання цих рiдин та їх вiдходiв повинна бути передбачена спецiальна тара - алюмiнієвi бiдони з притертими кришками, з чiткою назвою рiдини та попереджувальним надписом "ВОГHЕHЕБЕЗПЕЧНО!".


СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ

1. Архангельський А.Я. Програмирование в Delphi 7. – М.: Бином, 2004. 1152 с.

2. Бобровский С. Delphi 6 и Kylix: Библиотека программиста. – СПб.: Питер, 2002. – 560 с.

3. Глинський Я.М., Анохін В.Є., Ряжська В.А. Паскаль. Turbo Pascal і Delphi. 4-те вид. – Львів: Деол, СПД Глинський, 2003. – 144 с.

4. Программирование портов в Delphi. - amberv.narod.ru/delphi1.html

5. Зубчук В.И. Справочник по цифровой схемотехнике. – К.: Техника, 1990. – 448 с.

6. Новиков Ю.В., Калашников О.А., Гуляэв С.Э. Разработка устройств сопряжения для персонального компьютера типа IBM PC. – М.: ЭКОМ, 1997. – 224 с.

7. Гук М. Аппаратные интерфейсы ПК. Энциклопедия. – СПб.: Питер, 2002. – 528 с.

8. Ковальчук В.М. Основи економічної теорії. – Тернопіль: 2003. – 203 с.


ДОДАТКИ

Додаток А

Текст програми

unit ADC_2007_U;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, ExtCtrls, TeeProcs, TeEngine, Chart, Series, Menus;

Type TF_ADC = class(TForm)

B_Write_DR: TButton;

B_Read_SR: TButton;

L_Driver_LPT: TLabel;

CheckBox_DR3: TCheckBox;

CheckBox_DR2: TCheckBox;

CheckBox_DR1: TCheckBox;

CheckBox_DR0: TCheckBox;

Bevel_DR: TBevel;

CheckBox_CR3: TCheckBox;

CheckBox_CR2: TCheckBox;

CheckBox_CR1: TCheckBox;

CheckBox_CR0: TCheckBox;

Bevel_CR: TBevel;

B_Write_CR: TButton;

CheckBox_SR3: TCheckBox;

Bevel_SR: TBevel;

B_In_U: TButton;

B_Out_U: TButton;

E_In_U: TEdit;

E_Out_U: TEdit;

B_Exit: TButton;

B_Diagram: TButton;

E_QI: TEdit;

L_QI: TLabel;

Chart1: TChart;

Series1: TFastLineSeries;

B_Stop: TButton;

E_Time_Discret: TEdit;

L_Time_Discret: TLabel;

B_Save: TButton;

SaveDialog1: TSaveDialog;

CheckBox_ADC_Proces_Show: TCheckBox;

RadioGroup_Language: TRadioGroup;

MainMenu1: TMainMenu;

File1: TMenuItem;

Save1: TMenuItem;

ADC1: TMenuItem;

InU1: TMenuItem;

OutU1: TMenuItem;

Port1: TMenuItem;

WriteDR1: TMenuItem;

Write_CR1: TMenuItem;

procedure B_Write_DRClick(Sender: TObject);

procedure B_Read_SRClick(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure B_Write_CRClick(Sender: TObject);

procedure B_Out_UClick(Sender: TObject);

procedure B_In_UClick(Sender: TObject);

procedure B_ExitClick(Sender: TObject);

procedure B_DiagramClick(Sender: TObject);

procedure B_StopClick(Sender: TObject);

procedure B_SaveClick(Sender: TObject);

procedure RadioGroup_LanguageClick(Sender: TObject);

procedure Save1Click(Sender: TObject);

procedure InU1Click(Sender: TObject);

procedure OutU1Click(Sender: TObject);

procedure WriteDR1Click(Sender: TObject);

procedure Write_CR1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

CONST

QI_Max=10000;

var

F_ADC: TF_ADC;

qDR,qSR,qCR:integer;

Adr_DR,Adr_CR,Adr_SR:word;

qB:integer;

U_Out,U_In:real;

U_A,U_min:real;

// U_Out_Max,U_In_Max:real;

RegStop:integer;

QI:integer;

Rdiod,Rz:real;

mR:array[0..8] of real;

mUr:array[0..16] of real;

mDR,mSR,mCR,mCR1:array[0..8] of byte;

mx,my:array[1..qI_Max] of real;

implementation

{$R *.dfm}

function IsDriverInstalled : Boolean; stdcall; external 'io.dll';

procedure PortOut(Port : Word; Data : Byte);stdcall; external 'io.dll';

function PortIn(Port : Word) : Byte;stdcall; external 'io.dll';

// CREATE FORM ============

Procedure Trans_bOut_mDR(bOut:byte);

{ Процедура перетворює байт bOut в набір з 8 бітів,

які записуються у масив mDR[0..7], де біт mDr[0] - молодший}

Var b1,b2,b3:byte;

i:integer;

Begin

b3:=bOut;

for i:=0 to 7 do

begin

b1:= b3 div 2;

b2:=b3 mod 2;

b3:=b1;

mDR[i]:=b2;

end;

// Примітка. Відображати біти на екрані наступним чином: D7 D6 D5 D4 D3 D2 D1 D0

End;

Procedure p_Init_U;

Var nDr,bOut:integer;

Rc1,Rc,Ur:real;

Begin

for bOut:=0 to qB do

begin

Trans_bOut_mDR(bOut);

Rc1:=0;

for nDR:=0 to qDR do

begin

Rc1:=Rc1+(1/(mR[nDr]+Rdiod))*mDR[nDr];

end;

rc:=0;

if Rc1>0 then Rc:=1/Rc1;

Ur:=(Rz/(Rz+Rc))*U_A;

if bOut=0 then Ur:=U_min;

mUr[bOut]:=Ur;

// ShowMessage(' bOut= '+IntToStr(bOut)+' Rc= '+FloatToStrF(Rc,ffFixed,6,2)+' Ur= '+FloatToStrF(Ur,ffFixed,6,2));

end; // bOut

End;

procedure TF_ADC.FormCreate(Sender: TObject);

begin

qDR:=3;

qCR:=3;

qSR:=1;

Adr_DR:=$378;

Adr_SR:=$379;

Adr_CR:=$37A;

qB:=15;

U_A:=3.7;

U_min:=0.14;

RDiod:=300;

mR[3]:=2200;

mR[2]:=4700;

mR[1]:=8200;

mR[0]:=15000;

Rz:=4600;

p_Init_U;

if IsDriverInstalled then

begin

L_Driver_LPT.Caption:='Driver Ok!';

end;

end;

// EXIT ================

procedure TF_ADC.B_ExitClick(Sender: TObject);

begin

Application.Terminate;

end;

// == DR ==== BEGIN ===================

Procedure p_Write_DR;

Var bOut:byte;

pDr,nDR:integer;

Begin

bout:=0;

pDr:=1;

for nDR:=0 to qDR do

begin

bout:=bOut+mDR[nDR]*pDr;

pDr:=pDr*2;

end;

PortOut(Adr_DR,bOut);

End;

procedure TF_ADC.B_Write_DRClick(Sender: TObject);

Var nDR:integer;

begin

for nDR:=0 to qDR do

begin

mDR[nDR]:=0;

end;

if CheckBox_DR0.Checked then mDR[0]:=1;

if CheckBox_DR1.Checked then mDR[1]:=1;

if CheckBox_DR2.Checked then mDR[2]:=1;

if CheckBox_DR3.Checked then mDR[3]:=1;

p_Write_DR;

end;

// == DR ==== END ===================

// === CR ==== BEGIN ===================

Procedure p_Write_CR;

Var bOut:byte;

pCr,nCR:integer;

Begin

// Invers

for nCR:=0 to qCR do

begin

if nCR<>2 then

begin

mCR1[nCR]:=0;

if mCR[nCR]=0 then mCR1[nCR]:=1;

end;

if nCR=2 then mCR1[nCR]:=mCR[nCR];

end;

bout:=0; pCr:=1;

for nCR:=0 to qCR do

begin

bout:=bOut+mCR1[nCR]*pCr;

pCr:=pCr*2;

end;

PortOut(Adr_CR,bOut);

End;

procedure TF_ADC.B_Write_CRClick(Sender: TObject);

Var nCR:integer;

begin

for nCR:=0 to qCR do

begin

mCR[nCR]:=0;

end;

if CheckBox_CR0.Checked then mCR[0]:=1;

if CheckBox_CR1.Checked then mCR[1]:=1;

if CheckBox_CR2.Checked then mCR[2]:=1;

if CheckBox_CR3.Checked then mCR[3]:=1;

p_Write_CR;

end;

// === CR ==== END ===================

// == SR == BEGIN ===============

Procedure p_Read_SR;

Var b,b1:byte;

Begin

b:=PortIn(Adr_SR);

asm

mov al,b

and al,00001000b

mov b1,al

end;

mSR[3]:=0;

if b1>0 then mSR[3]:=1;

End;

procedure TF_ADC.B_Read_SRClick(Sender: TObject);

begin

p_Read_SR;

if mSR[3]=0 then CheckBox_SR3.checked:=false;

if mSR[3]=1 then CheckBox_SR3.checked:=true;

end;

// == SR == END ===============

// Out_U BEGIN =============

Procedure Tran_bOut_mCR(bOut:byte);

{ Процедура перетворює байт bOut в набір з 8 бітів,

які записуються у масив mCR[0..7], де біт mCr[0] - молодший}

Var b1,b2,b3:byte;

i:integer;

Begin

b3:=bOut;

for i:=0 to 7 do

begin

b1:= b3 div 2;

b2:=b3 mod 2;

b3:=b1;

mCR[i]:=b2;

end;

// Примітка. Відображати біти на екрані наступним чином: D7 D6 D5 D4 D3 D2 D1 D0

End;

procedure TF_ADC.B_Out_UClick(Sender: TObject);

Var bOut:byte;

Ur:real;

begin

U_Out:=StrToFloat(E_Out_U.Text);

for bOut:=0 to qB do

begin

Ur:=mUr[bOut];

// ShowMessage(' bOut= '+IntToStr(bOut)+' Ur= '+FloatToStrF(Ur,ffFixed,6,2));

if Ur>U_Out then break;

end;

// bOut:=round(r1);

Tran_BOut_mCR(bOut);

p_Write_CR;

if mCR[0]=1 then CheckBox_CR0.Checked:=true

else CheckBox_CR0.Checked:=false;

if mCR[1]=1 then CheckBox_CR1.Checked:=true

else CheckBox_CR1.Checked:=false;

if mCR[2]=1 then CheckBox_CR2.Checked:=true

else CheckBox_CR2.Checked:=false;

if mCR[3]=1 then CheckBox_CR3.Checked:=true

else CheckBox_CR3.Checked:=false;

end;

// Out_U END =============

// In_U BEGIN ===================

procedure TF_ADC.B_In_UClick(Sender: TObject);

Var bOut:byte;

Ur:real;

begin

U_In:=0;

for bOut:=0 to qB do

begin

Trans_bOut_mDR(bOut);

PortOut(Adr_DR,bOut);

if mDR[0]=1 then CheckBox_DR0.Checked:=true

else CheckBox_DR0.Checked:=false;

if mDR[1]=1 then CheckBox_DR1.Checked:=true

else CheckBox_DR1.Checked:=false;

if mDR[2]=1 then CheckBox_DR2.Checked:=true

else CheckBox_DR2.Checked:=false;

if mDR[3]=1 then CheckBox_DR3.Checked:=true

else CheckBox_DR3.Checked:=false;

p_Read_SR;

Ur:=mUr[bOut]; // oporna for Dr3 - DR0

if mSR[3]=0 then

begin

U_In:=Ur;

break;

end;

if bOut=qB then

begin

if mSR[3]>0 then U_In:=U_A;

end;

if CheckBox_ADC_Proces_Show.checked then

ShowMessage(' bOut= '+IntToStr(bOut)+' Ur= '+FloatToStrF(Ur,ffFixed,6,2));

// Sleep(5);

end;

E_In_U.text:=FloatToStrF(U_In,ffFixed,4,2);

end;

// In_U END ===================

procedure TF_ADC.B_DiagramClick(Sender: TObject);

Var i:integer;

x,y:real;

Time_Discret:integer;

begin

RegStop:=0;

CheckBox_ADC_Proces_Show.Checked:=false;

QI:=StrToInt(E_QI.Text);

if QI>QI_Max then

begin

ShowMessage('QI>QI_Max= '+IntToStr(QI_Max));

QI:=QI_Max;

end;

Time_Discret:=StrToInt(E_Time_Discret.Text);

Chart1.Series[0].Clear;

for i:=1 to QI do

begin

B_In_UClick(Sender);