УТС Грудяева / 9091_Боброва_лаб_6
.docxМИНОБРНАУКИ РОССИИ
САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ ЭЛЕКТРОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
«ЛЭТИ» ИМ. В.И. УЛЬЯНОВА (ЛЕНИНА)
ОТЧЕТ
по лабораторной работе №6 по дисциплине «Проектирование распределенных систем управления»
Тема: «Разработка программы преобразования аналогового сигнала»
Студентка гр. 9091 Боброва Н.Ю.
Преподаватель Грудяева Е.С.
Санкт-Петербург
2024
Цель работы
Получение навыков разработки программного блока FB.
Содержание работы
Добавим в таблицу символов блок данных и функциональный блок:
Редактируем файл SCL
DATA_BLOCK DGI
STRUCT
N2_CRS : BOOL;
N3_ON : BOOL;
N3_CRS : BOOL;
N4_ON : BOOL;
N4_CRS : BOOL;
N1_AF : BOOL;
N2_AF : BOOL;
N3_AF : BOOL;
N3_F : BOOL;
MP1_ON : BOOL;
MP1_CRS : BOOL;
F3_ON : BOOL;
F4_ON : BOOL;
F3_F4_PR : BOOL;
F3_F4_CRS : BOOL;
ND2_CRS : BOOL;
END_STRUCT
BEGIN
END_DATA_BLOCK
DATA_BLOCK DGO
STRUCT
MP2_1_ST : BOOL;
MP2_2_ST : BOOL;
MP2_3_ST : BOOL;
KRL1_ST : BOOL;
KRL2_ST : BOOL;
KRL3_ST : BOOL;
N7_ST : BOOL;
N8_ST : BOOL;
N9_ST : BOOL;
N10_ST : BOOL;
Z4_1_OP : BOOL;
Z4_1_CL : BOOL;
Z4_2_OP : BOOL;
Z4_2_CL : BOOL;
Z4_3_OP : BOOL;
Z4_3_CL : BOOL;
END_STRUCT
BEGIN
END_DATA_BLOCK
DATA_BLOCK ANI
STRUCT
L_in_BR : INT;
P_af_N7 : INT;
P_af_N8 : INT;
P_af_N9 : INT;
P_af_N10 : INT;
END_STRUCT
BEGIN
END_DATA_BLOCK
DATA_BLOCK ANO
STRUCT
FC_N9 : INT;
FC_N10 : INT;
END_STRUCT
BEGIN
END_DATA_BLOCK
DATA_BLOCK SYS
STRUCT
Read_perm : BOOL;
Write_perm :BOOL;
END_STRUCT
BEGIN
END_DATA_BLOCK
FUNCTION Read_in : void
VAR_TEMP
END_VAR
IF SYS.Read_perm THEN
DGI.N2_CRS := I_N2_CRS;
DGI.N3_ON := I_N3_ON;
DGI.N3_CRS := I_N3_CRS;
DGI.N4_ON := I_N4_ON;
DGI.N4_CRS := I_N4_CRS;
DGI.N1_AF := I_N1_AF;
DGI.N2_AF := I_N2_AF;
DGI.N3_AF:=I_N3_AF;
DGI.N3_F := I_N3_F;
DGI.MP1_ON := I_MP1_ON;
DGI.MP1_CRS := I_MP1_CRS;
DGI.F3_ON := I_F3_ON;
DGI.F4_ON := I_F4_ON;
DGI.F3_F4_PR := I_F3_F4_PR;
DGI.F3_F4_CRS := I_F3_F4_CRS;
DGI.ND2_CRS := I_ND2_CRS;
ANI.L_in_BR:=I_L_in_BR;
ANI.P_af_N7:=I_P_af_N7;
ANI.P_af_N8:=I_P_af_N8;
ANI.P_af_N9:=I_P_af_N9;
ANI.P_af_N10:=I_P_af_N10;
END_IF;
END_FUNCTION
FUNCTION Write_out : VOID
VAR_TEMP
END_VAR
IF SYS.write_perm THEN
I_MP2_1_ST:=DGO.MP2_1_ST;
I_MP2_2_ST:=DGO.MP2_2_ST;
I_MP2_3_ST:=DGO.MP2_3_ST;
I_KRL1_ST:=DGO.KRL1_ST;
I_KRL2_ST:=DGO.KRL2_ST;
I_KRL3_ST:=DGO.KRL3_ST;
I_N7_ST:=DGO.N7_ST;
I_N8_ST:=DGO.N8_ST;
I_N9_ST:=DGO.N9_ST;
I_N10_ST:=DGO.N10_ST;
I_Z4_1_OP:=DGO.Z4_1_OP;
I_Z4_1_CL:=DGO.Z4_1_CL;
I_Z4_2_OP:=DGO.Z4_2_OP;
I_Z4_2_CL:=DGO.Z4_2_CL;
I_Z4_3_OP:=DGO.Z4_3_OP;
I_Z4_3_CL:=DGO.Z4_3_CL;
I_FC_N9:=ANO.FC_N9;
I_FC_N10:=ANO.FC_N10;
ELSE
I_MP2_1_ST:=0;
I_MP2_2_ST:=0;
I_MP2_3_ST:=0;
I_KRL1_ST:=0;
I_KRL2_ST:=0;
I_KRL3_ST:=0;
I_N7_ST:=0;
I_N8_ST:=0;
I_N9_ST:=0;
I_N10_ST:=0;
I_Z4_1_OP:=0;
I_Z4_1_CL:=0;
I_Z4_2_OP:=0;
I_Z4_2_CL:=0;
I_Z4_3_OP:=0;
I_Z4_3_CL:=0;
DGO.MP2_1_ST:=0;
DGO.MP2_2_ST:=0;
DGO.MP2_3_ST:=0;
DGO.KRL1_ST:=0;
DGO.KRL2_ST:=0;
DGO.KRL3_ST:=0;
DGO.N7_ST:=0;
DGO.N8_ST:=0;
DGO.N9_ST:=0;
DGO.N10_ST:=0;
DGO.Z4_1_OP:=0;
DGO.Z4_1_CL:=0;
DGO.Z4_2_OP:=0;
DGO.Z4_2_CL:=0;
DGO.Z4_3_OP:=0;
DGO.Z4_3_CL:=0;
END_IF;
END_FUNCTION
FUNCTION_BLOCK ConvaAI
VAR_TEMP
// Temporary Variables
END_VAR
VAR_INPUT
RawValue : INT;
minSens, maxSens : REAL;
minEl, maxEl : REAL;
END_VAR
VAR_OUTPUT
SensorValue : REAL;
EUValue : REAL
;
END_VAR
SensorValue := INT_TO_REAL(RawValue);
EUValue := ((SensorValue / 27648.0) * (maxSens-minSens)) + minSens;
END_FUNCTION_BLOCK
ORGANIZATION_BLOCK OB1
VAR_TEMP
// Reserved
info : ARRAY[0..19] OF BYTE;
// Temporary Variables
END_VAR
// Statement
Read_in();
Write_out();
ConvaAI.DB11(RawValue := "I_P_af_N10"
,minSens := 0.0
,maxSens := 100.0 );
ConvaAI.DB12(RawValue := "I_P_af_N9"
,minSens := 0.0
,maxSens := 100.0 );
ConvaAI.DB13(RawValue := "I_P_af_N8"
,minSens := 0.0
,maxSens := 100.0 );
ConvaAI.DB14(RawValue := "I_P_af_N7"
,minSens := 0.0
,maxSens := 100.0 );
ConvaAI.DB15(RawValue := "I_L_in_BR"
,minSens := 0.0
,maxSens := 100.0 );
END_ORGANIZATION_BLOCK
Запускаем симулятор, VAT-таблицу
Вывод:
В данной лабораторной работе были вызваны экземпляры этого блока для каждого из пяти сигналов с привязкой к отдельным блокам данных