Алгоритм работы микропроцессора ПЛК100



 

 

ПРИЛОЖЕНИЕ В

Листинг программы ПЛК100

 

PROGRAM geleokalektor                 (*подпрограмма управление гелеоколлектор*)

VAR                                                                      (*Переменные*)

m1: BOOL;

m2: BOOL;

m3: BOOL;

m4: BOOL;

rs1: RS;

m5: BOOL;

m6: BOOL;

m7: BOOL;

m8: BOOL;

m9: BOOL;

m10: BOOL;

m11: BOOL;

m12: BOOL;

rs2: RS;

rs3: RS;

m13: BOOL;

END_VAR

VAR_OUTPUT

q1: BOOL;

END_VAR

VAR_INPUT

er:WORD;

d_t_nu: REAL;

dt_g: REAL;

set:BOOL;

END_VAR                                            (*конец переменных, начало родпрограммы*)

m1:= dt_g=d_t_nu+8;

m2:= dt_g>d_t_nu+8;

m3:=dt_g=d_t_nu-4;

m4:=dt_g<d_t_nu-4;

m5:=dt_g<-10;

m6:=dt_g=-10;

m7:=dt_g>-5;

m8:=dt_g=-5;

m9:=dt_g>130;

m10:=dt_g=130;

m11:=d_t_nu>110;

m12:=d_t_nu=110;

rs1(set:=m1 OR m2 , reset1:=m3 OR m4 OR m11 OR m12);

rs2(set:=m5 OR m6 , reset1:=m6 OR m8 );

rs3(set:=m9 OR m10, reset1:=m11 OR m12 );

IF er6=61440 OR er6=61446 OR er6=61447 OR er6=61448 OR er6=61449 OR er6=61450

OR er6=61451 OR er6=61452 OR er6=61454 OR er6=61455 THEN m13:=1;

ELSIF er6=0 THEN m13:=0;

END_IF;

q1:=rs1.Q1 OR rs2.Q1 OR rs3.Q1 OR set OR m13;

 

 

PROGRAM ru4_avto                         (*подпрограмма переключение ручной-автомат*)

VAR                                                       (*ввод переменных*)

m1: BOOL;

END_VAR

VAR_INPUT

set: BOOL;

ar_set: BOOL;

ar_ru4: BOOL;

ar_res:BOOL;

time_set:BOOL;

END_VAR

VAR_OUTPUT

ar_q1: BOOL;

ar_reset: BOOL;

END_VAR

(*Начало программы*)

IF set=1 THEN ar_q1:=ar_ru4;

ELSIF set=0 THEN ar_q1:=ar_set;

END_IF;

IF set=1 THEN ar_reset:=NOT ar_ru4 OR m1;

ELSIF set=0 THEN ar_reset:=ar_res OR m1 ;

END_IF;

(*îòîïëåíèå*)

IF er1=61440 OR er1=61446 OR er1=61447 OR er1=61448 OR er1=61449 OR er1=61450

OR er1=61451 OR er1=61452 OR er1=61454 OR er1=61455 THEN m1:=1;

ELSE m1:=0;

END_IF;

 

PROGRAM t_v_ariston (*Подпрограмма нагрева воды в емкости от парогенератора*)

VAR

m11: BOOL;

m12: BOOL;

m21: BOOL;

m22: BOOL;

m1: BOOL;

m2: BOOL;

rs1: RS;

m3: BOOL;

m31: BOOL;

m32: BOOL;

m33: BOOL;

rs3: RS;

END_VAR

VAR_INPUT

set: BOOL;

dt_39: REAL;

END_VAR

VAR_OUTPUT

q1: BOOL;

q2:BOOL;

END_VAR

m11:= dt_39>70;

m12:= dt_39=70;

 

m1:= m11 OR m12;

m21:= dt_39<65;

m22:= dt_39=65;

m2:= m21 OR m22;

rs1(set:=set AND m2, reset1:=m1 OR NOT set);

q1:=rs1.Q1;

m31:=dt_39=90;

m32:=dt_39>90;

m33:= dt_39<70;

rs3(set:=m31 OR m32, reset1:=m33);

q2:=rs3.Q1;

 

 

PROGRAM timeers             (*Подпрограмма даты и времени в плк*)

VAR

GetTime: CurTimeEx;

TimeAndDate: SystemTimeDate;

Sys_Time: SysTime64;

set_time: BOOL;

set_date: BOOL;

MM: UINT;

SS: UINT;

HH: UINT;

D: UINT;

M: UINT;

Y: UINT;

m1: BOOL;

m2: BOOL;

m3: BOOL;

m4: BOOL;

rs1: RS;

END_VAR

VAR_OUTPUT

q1: BOOL;

END_VAR

TimeAndDate.Day :=0;

TimeAndDate.DayOfWeek :=0;

TimeAndDate.dwHighMsec :=0;

TimeAndDate.dwLowMSecs :=0;

TimeAndDate.Milliseconds :=0;

TimeAndDate.Minute :=0;

TimeAndDate.Second :=0;

TimeAndDate.Hour :=0;

TimeAndDate.Year :=0;

TimeAndDate.Month :=0;

Sys_time.ulHigh :=0;

Sys_time.ulLow :=0;

GetTime (SystemTime:=Sys_Time , TimeDate:= TimeAndDate);

IF set_time THEN

TimeAndDate.Minute:=MM;

TimeAndDate.Second:=SS;

TimeAndDate.Hour:=HH;

GetTime (SystemTime:=Sys_Time , TimeDate:= TimeAndDate);

END_IF

IF set_date THEN

TimeAndDate.Day:=D;

TimeAndDate.Month:=M;

TimeAndDate.Year:=Y;

GetTime (SystemTime:=Sys_Time , TimeDate:= TimeAndDate);

END_IF

m1:=TimeAndDate.Hour>5;

m2:=TimeAndDate.Hour=5;

m3:=TimeAndDate.Hour=18;

m4:=TimeAndDate.Hour>18;

rs1(set:=m1 OR m2, reset1:=m3 OR m4);

q1:=rs1.Q1;

 

PROGRAM vkl_moloko_par                           (*Подпрограмма вывода пара*)

VAR

tof_1: TOF;

END_VAR

VAR_INPUT

set: BOOL;

END_VAR

VAR_OUTPUT

q1: BOOL;

END_VAR

tof_1(in:= set, pt:=t#600s);

q1:=tof_1.Q;

 

PROGRAM vkl_otoplenie (*Подпрограмма отопление*)

VAR

m1: BOOL;

m2: BOOL;

rs1: RS;

m3: BOOL;

m4: BOOL;

END_VAR

VAR_INPUT

dt58: REAL;

set: BOOL;

t_p: REAL;

set2: BOOL;

ul_d: REAL;

END_VAR

VAR_OUTPUT

q1: BOOL;

END_VAR

m1:=dt58>t_p-1;

m2:=dt58<t_p+1;

m4:=ul_d<10;

rs1(set:=set AND m2 AND m4, reset1:=m1 OR NOT set);

m3:=set2 AND NOT set;

q1:=rs1.Q1 OR m3;

 

 

PROGRAM vkl_parogenerator        (*Подпрограмма работы парогенератора*)

VAR

m1: BOOL;

m2: BOOL;

rs1: RS;

m3: BOOL;

m4: BOOL;

rs2: RS;

m5: BOOL;

m6: BOOL;

m7: BOOL;

END_VAR

VAR_OUTPUT

kl5: BOOL;

og: BOOL;

END_VAR

VAR_INPUT

set1: BOOL;

amper_g: REAL;

dt_dv: REAL;

reset1: BOOL;

END_VAR

m1:=amper_g>38+1;

m2:=amper_g<38-1;

rs1(set:=set1 AND m1, reset1:=m2);

kl5:=rs1.Q1;

m3:=dt_dv=1.6;

m4:=dt_dv>1.6;

m5:=dt_dv=1;

m6:=dt_dv<1;

m7:=m5 OR m6;

rs2(set:=set1 AND m7, reset1:=m3 OR m4 OR reset1);

og := rs2.Q1;

 

PROGRAM vkl_vsego

VAR_INPUT

dt14: BOOL;

dt13: BOOL;

error_stop:BOOL;

END_VAR

VAR_OUTPUT

q1:BOOL;

kl9: BOOL;

kl5: BOOL;

 

END_VAR

VAR

rs2: RS;

rs3: RS;

rs4: RS;

rs5: RS;

rs6: RS;

rs8: RS;

m1: BOOL;

m2: BOOL;

r_trig1:R_TRIG;

tp1: TP;

END_VAR

 

rs2(set:=error_stop, reset1:= NOT error_stop);(* îòêëþ÷èòü åñëè îøèáêà*)

rs3(set:=1, reset1:=rs2.Q1);(*âêëþ÷åíèå è îòêëþ÷åíèå*)

r_trig1(clk:=1);

rs4(set:=r_trig1.Q, reset1:= dt14 OR rs6.Q1);

m1:=NOT dt13 AND 1;

m2:=NOT 1;

rs6(set:=m1, reset1:=dt14 OR m2);

tp1(IN := rs6.Q1, PT:= T#30s);

kl9:=tp1.Q AND NOT dt13 ;

rs8(set:=rs6.Q1, reset1:=dt14 OR tp1.Q);

kl5:=rs4.Q1 OR rs8.Q1;

rs5(set:=rs3.Q1,reset1:=rs4.Q1 OR rs6.Q1);

q1:=rs5.Q1;

 

PROGRAM PLC_PRG       (*Основная программа*)

VAR

END_VAR

ru4_avto(set:=ru_avto, ar_set:= vkl_vsego.Q1 AND (vkl_moloko_par.q1 OR vkl_otoplenie.q1 OR t_v_ariston.q1) ,

                 ar_ru4:= strt_stp,

                 ar_res:= NOT vkl_vsego.Q1 OR NOT ( vkl_moloko_par.q1 OR vkl_otoplenie.q1 OR t_v_ariston.q1));

vkl_parogenerator(set1:=ru4_avto.ar_q1, reset1:=ru4_avto.ar_reset);

ogon:=vkl_parogenerator.og;

ind_og:=vkl_parogenerator.og;

kl_9:=vkl_vsego.kl9 ;

kl_5:=vkl_vsego.kl5 OR (vkl_vsego.Q1 AND vkl_parogenerator.kl5) AND NOT vkl_vsego.kl9 ;

k5:=vkl_vsego.kl5; k9:=vkl_vsego.kl9;

vkl_vsego(dt14:=dt_14, dt13:=dt_13); dt1_3:=dt_13; dt1_4:=dt_14;

t_v_ariston( set:= timeers.q1 ,dt_39:=dt39;

vkl_otoplenie(set:= z_r, dt58:=dt_58 ,t_p:=tp, set2:=otople, ul_d:=u_d);

 otopl:=vkl_otoplenie.q1;

vkl_moloko_par(set:=par);

 parr:=vkl_moloko_par.q1 ;

kl_22:=vkl_moloko_par.q1 OR t_v_ariston.q2; kl22:=vkl_moloko_par.q1 OR t_v_ariston.q2;

kl_18:=vkl_moloko_par.q1;

vkl_parogenerator(amper_g:= amperrrr,       dt_dv:=d_dv);

d_dvv:=d_dv;

d_t39:=dt39;

amperrrrs:=amperrrr;

d_t58:=dt_58;

v:=vv;

w:=ww;

tulis:=u_d;

d_t_g:=dtg;

geleokalektor(d_t_nu:=d_n_u , dt_g:=dtg, set:=gel_ru4_avt, );

nasos_geleo:=geleokalektor.q1;

geleo_nasos:=geleokalektor.q1;

 

ПРИЛОЖЕНИЕ Г


Дата добавления: 2018-05-31; просмотров: 506; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!