- необх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);