发表于:2009/5/6 18:55:41
#0楼
//***************
//*** devices ***
//***************
FUNCTION "DieBlt_Device" : VOID
VAR_TEMP
pulseRun, pulseStp :BOOL;
END_VAR
BEGIN
// disable
ExtDieBlt.ClgFan.Dsa:=(ExtDieBlt.ClgFan.Dsa&1) OR
SHL(IN:=BOOL_TO_WORD(Prj.Ext.GlobalStop),N:=1) OR // global stop
SHL(IN:=BOOL_TO_WORD(Prj.Saf.Est),N:=2); // global e-stop
// input's
ExtDieBlt.ClgFan.CbrInp:=ExtDieBltClgFanCbr;
ExtDieBlt.ClgFan.PrsMinInp:=ExtDieBltClgFanPrsMin;
// start/stop
pulseRun:=(ExtDieBlt.TmpAll.RunSttCou>0) AND NOT DieBlt_DB.memoCtlRun;
pulseStp:=(ExtDieBlt.TmpAll.RunSttCou=0) AND DieBlt_DB.memoCtlRun;
DieBlt_DB.memoCtlRun:=(ExtDieBlt.TmpAll.RunSttCou>0);
ExtDieBlt.ClgFan.RunCmd:=ExtDieBlt.ClgFan.RunCmd OR pulseRun;
ExtDieBlt.ClgFan.StpCmd:=ExtDieBlt.ClgFan.StpCmd OR pulseStp;
// fan off while heating run
ExtDieBlt.ClgFanOff.Inp:=(ExtDieBlt.ClgFan.RunStt AND ExtDieBlt.Tmp001.RunStt) OR
NOT ExtDieBlt.Tmp001.RunStt;
libMISC_Alert(Structure:=ExtDieBlt.ClgFanOff, Number:= 1);
// lib-function
libDEVICES_Fan(Structur:=ExtDieBlt.ClgFan,Number:=1);
// outputs
ExtDieBltClgFanOut1:=ExtDieblt.ClgFan.Out001;
END_FUNCTION
//******************
//*** controller ***
//******************
FUNCTION "DieBlt_Ctl" : VOID
VAR_TEMP
dsa :WORD;
pulseRun,pulseStp :BOOL;
END_VAR
BEGIN
// heating supply fault
ExtDieBlt.HtgSup.Inp := TRUE;
libMISC_Alert(Structure:=ExtDieBlt.HtgSup, Number:= 1);
//disable
dsa:=SHL(IN:=BOOL_TO_WORD(Prj.Ext.GlobalStop),N:=1) OR // global stop
SHL(IN:=BOOL_TO_WORD(NOT Prj.Ext.DieHeaUpp),N:=2) OR // die not heated up
SHL(IN:=BOOL_TO_WORD(ExtDieBlt.TmpAll.AlaActMaxCou<>0),N:=3) OR // one or more die bolts --> alarm max
SHL(IN:=BOOL_TO_WORD(ExtDieBlt.HtgSup.Ala),N:=4); // heating supply fault
ExtDieBlt.Tmp001.Dsa:=(ExtDieBlt.Tmp001.Dsa&1) OR dsa;
ExtDieBlt.Tmp002.Dsa:=(ExtDieBlt.Tmp002.Dsa&1) OR dsa;
ExtDieBlt.Tmp003.Dsa:=(ExtDieBlt.Tmp003.Dsa&1) OR dsa;
ExtDieBlt.Tmp004.Dsa:=(ExtDieBlt.Tmp004.Dsa&1) OR dsa;
ExtDieBlt.Tmp005.Dsa:=(ExtDieBlt.Tmp005.Dsa&1) OR dsa;
ExtDieBlt.Tmp006.Dsa:=(ExtDieBlt.Tmp006.Dsa&1) OR dsa;
ExtDieBlt.Tmp007.Dsa:=(ExtDieBlt.Tmp007.Dsa&1) OR dsa;
ExtDieBlt.Tmp008.Dsa:=(ExtDieBlt.Tmp008.Dsa&1) OR dsa;
ExtDieBlt.Tmp009.Dsa:=(ExtDieBlt.Tmp009.Dsa&1) OR dsa;
ExtDieBlt.Tmp010.Dsa:=(ExtDieBlt.Tmp010.Dsa&1) OR dsa;
ExtDieBlt.Tmp011.Dsa:=(ExtDieBlt.Tmp011.Dsa&1) OR dsa;
ExtDieBlt.Tmp012.Dsa:=(ExtDieBlt.Tmp012.Dsa&1) OR dsa;
ExtDieBlt.Tmp013.Dsa:=(ExtDieBlt.Tmp013.Dsa&1) OR dsa;
ExtDieBlt.Tmp014.Dsa:=(ExtDieBlt.Tmp014.Dsa&1) OR dsa;
ExtDieBlt.Tmp015.Dsa:=(ExtDieBlt.Tmp015.Dsa&1) OR dsa;
ExtDieBlt.Tmp016.Dsa:=(ExtDieBlt.Tmp016.Dsa&1) OR dsa;
ExtDieBlt.Tmp017.Dsa:=(ExtDieBlt.Tmp017.Dsa&1) OR dsa;
ExtDieBlt.Tmp018.Dsa:=(ExtDieBlt.Tmp018.Dsa&1) OR dsa;
ExtDieBlt.Tmp019.Dsa:=(ExtDieBlt.Tmp019.Dsa&1) OR dsa;
ExtDieBlt.Tmp020.Dsa:=(ExtDieBlt.Tmp020.Dsa&1) OR dsa;
ExtDieBlt.Tmp021.Dsa:=(ExtDieBlt.Tmp021.Dsa&1) OR dsa;
ExtDieBlt.Tmp022.Dsa:=(ExtDieBlt.Tmp022.Dsa&1) OR dsa;
ExtDieBlt.Tmp023.Dsa:=(ExtDieBlt.Tmp023.Dsa&1) OR dsa;
ExtDieBlt.Tmp024.Dsa:=(ExtDieBlt.Tmp024.Dsa&1) OR dsa;
ExtDieBlt.Tmp025.Dsa:=(ExtDieBlt.Tmp025.Dsa&1) OR dsa;
ExtDieBlt.Tmp026.Dsa:=(ExtDieBlt.Tmp026.Dsa&1) OR dsa;
ExtDieBlt.Tmp027.Dsa:=(ExtDieBlt.Tmp027.Dsa&1) OR dsa;
ExtDieBlt.Tmp028.Dsa:=(ExtDieBlt.Tmp028.Dsa&1) OR dsa;
ExtDieBlt.Tmp029.Dsa:=(ExtDieBlt.Tmp029.Dsa&1) OR dsa;
ExtDieBlt.Tmp030.Dsa:=(ExtDieBlt.Tmp030.Dsa&1) OR dsa;
ExtDieBlt.Tmp031.Dsa:=(ExtDieBlt.Tmp031.Dsa&1) OR dsa;
ExtDieBlt.Tmp032.Dsa:=(ExtDieBlt.Tmp032.Dsa&1) OR dsa;
ExtDieBlt.Tmp033.Dsa:=(ExtDieBlt.Tmp033.Dsa&1) OR dsa;
ExtDieBlt.Tmp034.Dsa:=(ExtDieBlt.Tmp034.Dsa&1) OR dsa;
ExtDieBlt.Tmp035.Dsa:=(ExtDieBlt.Tmp035.Dsa&1) OR dsa;
ExtDieBlt.Tmp036.Dsa:=(ExtDieBlt.Tmp036.Dsa&1) OR dsa;
ExtDieBlt.Tmp037.Dsa:=(ExtDieBlt.Tmp037.Dsa&1) OR dsa;
ExtDieBlt.Tmp038.Dsa:=(ExtDieBlt.Tmp038.Dsa&1) OR dsa;
ExtDieBlt.Tmp039.Dsa:=(ExtDieBlt.Tmp039.Dsa&1) OR dsa;
ExtDieBlt.Tmp040.Dsa:=(ExtDieBlt.Tmp040.Dsa&1) OR dsa;
ExtDieBlt.Tmp041.Dsa:=(ExtDieBlt.Tmp041.Dsa&1) OR dsa;
// start/stop
pulseRun:=Prj.Str.ChrAknFanRun AND NOT DieBlt_DB.memoFanRun;
pulseStp:=NOT Prj.Str.ChrAknFanRun AND DieBlt_DB.memoFanRun;
DieBlt_DB.memoFanRun:=Prj.Str.ChrAknFanRun;
ExtDieBlt.TmpAll.RunCmd:=ExtDieBlt.TmpAll.RunCmd OR pulseRun;
ExtDieBlt.TmpAll.StpCmd:=ExtDieBlt.TmpAll.StpCmd OR pulseStp;
// lib function
libCTL2_CtlGenAll(Structur:=ExtDieBlt.TmpAll, StructurGen:=ExtDieBlt.Tmp001, Num:=DieBlt_DB.NumOf_Ctl);
libCTL2_CtlGen(Structur:=ExtDieBlt.Tmp001, Num:=DieBlt_DB.NumOf_Ctl);
libCTL2_CtlPsg(Structur:=ExtDieBlt.PmtTmp001, StructurGen:=ExtDieBlt.Tmp001, StructurPsg:=Psg.Dev, Num:=DieBlt_DB.NumOf_Psg001);
libCTL2_CtlPsg(Structur:=ExtDieBlt.PmtTmp033, StructurGen:=ExtDieBlt.Tmp033, StructurPsg:=Psg.Dev, Num:=DieBlt_DB.NumOf_Psg002);
// output's
ExtDieBltHtgSupRun:=(ExtDieBlt.TmpAll.RunSttCou>0);
END_FUNCTION
//*************************
//*** link to visualisation
//*************************
FUNCTION "DieBlt_Link" : VOID
libSYSTEM_Link( ID:=LinkID.DIEBLT, Addr_CP:=LinkID.CP443, RcvDB:=DieBlt_RcvDB, SndDB:=ExtDieBlt, Lnk:=ExtDieBlt.Lnk);
END_FUNCTION
//****************************
//*** main function cyclic ***
//****************************
FUNCTION "DieBlt_Main" : VOID
DieBlt_Link();
DieBlt_Device();
DieBlt_Ctl();
END_FUNCTION
//*******************************
//*** main function peridical ***
//*******************************
FUNCTION "DieBlt_Main_P" : VOID
END_FUNCTION
DATA_BLOCK "ExtDieBlt"
STRUCT
// link
Lnk :S7_LINK;
// devices
ClgFan :S7_FAN;
// controller
HtgSup :S7_ALERT;
TmpAll :CTL2_GENALL;
Tmp001 :CTL2_GEN;
Tmp002 :CTL2_GEN;
Tmp003 :CTL2_GEN;
Tmp004 :CTL2_GEN;
Tmp005 :CTL2_GEN;
Tmp006 :CTL2_GEN;
Tmp007 :CTL2_GEN;
Tmp008 :CTL2_GEN;
Tmp009 :CTL2_GEN;
Tmp010 :CTL2_GEN;
Tmp011 :CTL2_GEN;
Tmp012 :CTL2_GEN;
Tmp013 :CTL2_GEN;
Tmp014 :CTL2_GEN;
Tmp015 :CTL2_GEN;
Tmp016 :CTL2_GEN;
Tmp017 :CTL2_GEN;
Tmp018 :CTL2_GEN;
Tmp019 :CTL2_GEN;
Tmp020 :CTL2_GEN;
Tmp021 :CTL2_GEN;
Tmp022 :CTL2_GEN;
Tmp023 :CTL2_GEN;
Tmp024 :CTL2_GEN;
Tmp025 :CTL2_GEN;
Tmp026 :CTL2_GEN;
Tmp027 :CTL2_GEN;
Tmp028 :CTL2_GEN;
Tmp029 :CTL2_GEN;
Tmp030 :CTL2_GEN;
Tmp031 :CTL2_GEN;
Tmp032 :CTL2_GEN;
Tmp033 :CTL2_GEN;
Tmp034 :CTL2_GEN;
Tmp035 :CTL2_GEN;
Tmp036 :CTL2_GEN;
Tmp037 :CTL2_GEN;
Tmp038 :CTL2_GEN;
Tmp039 :CTL2_GEN;
Tmp040 :CTL2_GEN;
Tmp041 :CTL2_GEN;
PmtTmp001 :CTL2_PSG;
PmtTmp002 :CTL2_PSG;
PmtTmp003 :CTL2_PSG;
PmtTmp004 :CTL2_PSG;
PmtTmp005 :CTL2_PSG;
PmtTmp006 :CTL2_PSG;
PmtTmp007 :CTL2_PSG;
PmtTmp008 :CTL2_PSG;
PmtTmp009 :CTL2_PSG;
PmtTmp010 :CTL2_PSG;
PmtTmp011 :CTL2_PSG;
PmtTmp012 :CTL2_PSG;
PmtTmp013 :CTL2_PSG;
PmtTmp014 :CTL2_PSG;
PmtTmp015 :CTL2_PSG;
PmtTmp016 :CTL2_PSG;
PmtTmp017 :CTL2_PSG;
PmtTmp018 :CTL2_PSG;
PmtTmp019 :CTL2_PSG;
PmtTmp020 :CTL2_PSG;
PmtTmp021 :CTL2_PSG;
PmtTmp022 :CTL2_PSG;
PmtTmp023 :CTL2_PSG;
PmtTmp024 :CTL2_PSG;
PmtTmp025 :CTL2_PSG;
PmtTmp026 :CTL2_PSG;
PmtTmp027 :CTL2_PSG;
PmtTmp028 :CTL2_PSG;
PmtTmp029 :CTL2_PSG;
PmtTmp030 :CTL2_PSG;
PmtTmp031 :CTL2_PSG;
PmtTmp032 :CTL2_PSG;
PmtTmp033 :CTL2_PSG;
PmtTmp034 :CTL2_PSG;
PmtTmp035 :CTL2_PSG;
PmtTmp036 :CTL2_PSG;
PmtTmp037 :CTL2_PSG;
PmtTmp038 :CTL2_PSG;
PmtTmp039 :CTL2_PSG;
PmtTmp040 :CTL2_PSG;
PmtTmp041 :CTL2_PSG;
//alert for cooling fan off
ClgFanOff :S7_ALERT;
END_STRUCT
BEGIN
PmtTmp001.AdrPsg:=9; PmtTmp001.AdrZon:=1;
PmtTmp002.AdrPsg:=9; PmtTmp002.AdrZon:=2;
PmtTmp003.AdrPsg:=9; PmtTmp003.AdrZon:=3;
PmtTmp004.AdrPsg:=9; PmtTmp004.AdrZon:=4;
PmtTmp005.AdrPsg:=9; PmtTmp005.AdrZon:=5;
PmtTmp006.AdrPsg:=9; PmtTmp006.AdrZon:=6;
PmtTmp007.AdrPsg:=9; PmtTmp007.AdrZon:=7;
PmtTmp008.AdrPsg:=9; PmtTmp008.AdrZon:=8;
PmtTmp009.AdrPsg:=9; PmtTmp009.AdrZon:=9;
PmtTmp010.AdrPsg:=9; PmtTmp010.AdrZon:=10;
PmtTmp011.AdrPsg:=9; PmtTmp011.AdrZon:=11;
PmtTmp012.AdrPsg:=9; PmtTmp012.AdrZon:=12;
PmtTmp013.AdrPsg:=9; PmtTmp013.AdrZon:=13;
PmtTmp014.AdrPsg:=9; PmtTmp014.AdrZon:=14;
PmtTmp015.AdrPsg:=9; PmtTmp015.AdrZon:=15;
PmtTmp016.AdrPsg:=9; PmtTmp016.AdrZon:=16;
PmtTmp017.AdrPsg:=9; PmtTmp017.AdrZon:=17;
PmtTmp018.AdrPsg:=9; PmtTmp018.AdrZon:=18;
PmtTmp019.AdrPsg:=9; PmtTmp019.AdrZon:=19;
PmtTmp020.AdrPsg:=9; PmtTmp020.AdrZon:=20;
PmtTmp021.AdrPsg:=9; PmtTmp021.AdrZon:=21;
PmtTmp022.AdrPsg:=9; PmtTmp022.AdrZon:=22;
PmtTmp023.AdrPsg:=9; PmtTmp023.AdrZon:=23;
PmtTmp024.AdrPsg:=9; PmtTmp024.AdrZon:=24;
PmtTmp025.AdrPsg:=9; PmtTmp025.AdrZon:=25;
PmtTmp026.AdrPsg:=9; PmtTmp026.AdrZon:=26;
PmtTmp027.AdrPsg:=9; PmtTmp027.AdrZon:=27;
PmtTmp028.AdrPsg:=9; PmtTmp028.AdrZon:=28;
PmtTmp029.AdrPsg:=9; PmtTmp029.AdrZon:=29;
PmtTmp030.AdrPsg:=9; PmtTmp030.AdrZon:=30;
PmtTmp031.AdrPsg:=9; PmtTmp031.AdrZon:=31;
PmtTmp032.AdrPsg:=9; PmtTmp032.AdrZon:=32;
PmtTmp033.AdrPsg:=10; PmtTmp033.AdrZon:=1;
PmtTmp034.AdrPsg:=10; PmtTmp034.AdrZon:=2;
PmtTmp035.AdrPsg:=10; PmtTmp035.AdrZon:=3;
PmtTmp036.AdrPsg:=10; PmtTmp036.AdrZon:=4;
PmtTmp037.AdrPsg:=10; PmtTmp037.AdrZon:=5;
PmtTmp038.AdrPsg:=10; PmtTmp038.AdrZon:=6;
PmtTmp039.AdrPsg:=10; PmtTmp039.AdrZon:=7;
PmtTmp040.AdrPsg:=10; PmtTmp040.AdrZon:=8;
PmtTmp041.AdrPsg:=10; PmtTmp041.AdrZon:=9;
END_DATA_BLOCK
DATA_BLOCK "DieBlt_DB"
STRUCT
NumOf_Ctl :INT:=41;
NumOf_Psg001 :INT:=32;
NumOf_Psg002 :INT:=9;
memoFanRun :BOOL;
memoCtlRun :BOOL;
END_STRUCT
BEGIN
END_DATA_BLOCK
DATA_BLOCK "DieBlt_RcvDB"
STRUCT
BytArray : ARRAY [1 .. 512] OF BYTE ;
END_STRUCT
BEGIN
END_DATA_BLOCK
//*** devices ***
//***************
FUNCTION "DieBlt_Device" : VOID
VAR_TEMP
pulseRun, pulseStp :BOOL;
END_VAR
BEGIN
// disable
ExtDieBlt.ClgFan.Dsa:=(ExtDieBlt.ClgFan.Dsa&1) OR
SHL(IN:=BOOL_TO_WORD(Prj.Ext.GlobalStop),N:=1) OR // global stop
SHL(IN:=BOOL_TO_WORD(Prj.Saf.Est),N:=2); // global e-stop
// input's
ExtDieBlt.ClgFan.CbrInp:=ExtDieBltClgFanCbr;
ExtDieBlt.ClgFan.PrsMinInp:=ExtDieBltClgFanPrsMin;
// start/stop
pulseRun:=(ExtDieBlt.TmpAll.RunSttCou>0) AND NOT DieBlt_DB.memoCtlRun;
pulseStp:=(ExtDieBlt.TmpAll.RunSttCou=0) AND DieBlt_DB.memoCtlRun;
DieBlt_DB.memoCtlRun:=(ExtDieBlt.TmpAll.RunSttCou>0);
ExtDieBlt.ClgFan.RunCmd:=ExtDieBlt.ClgFan.RunCmd OR pulseRun;
ExtDieBlt.ClgFan.StpCmd:=ExtDieBlt.ClgFan.StpCmd OR pulseStp;
// fan off while heating run
ExtDieBlt.ClgFanOff.Inp:=(ExtDieBlt.ClgFan.RunStt AND ExtDieBlt.Tmp001.RunStt) OR
NOT ExtDieBlt.Tmp001.RunStt;
libMISC_Alert(Structure:=ExtDieBlt.ClgFanOff, Number:= 1);
// lib-function
libDEVICES_Fan(Structur:=ExtDieBlt.ClgFan,Number:=1);
// outputs
ExtDieBltClgFanOut1:=ExtDieblt.ClgFan.Out001;
END_FUNCTION
//******************
//*** controller ***
//******************
FUNCTION "DieBlt_Ctl" : VOID
VAR_TEMP
dsa :WORD;
pulseRun,pulseStp :BOOL;
END_VAR
BEGIN
// heating supply fault
ExtDieBlt.HtgSup.Inp := TRUE;
libMISC_Alert(Structure:=ExtDieBlt.HtgSup, Number:= 1);
//disable
dsa:=SHL(IN:=BOOL_TO_WORD(Prj.Ext.GlobalStop),N:=1) OR // global stop
SHL(IN:=BOOL_TO_WORD(NOT Prj.Ext.DieHeaUpp),N:=2) OR // die not heated up
SHL(IN:=BOOL_TO_WORD(ExtDieBlt.TmpAll.AlaActMaxCou<>0),N:=3) OR // one or more die bolts --> alarm max
SHL(IN:=BOOL_TO_WORD(ExtDieBlt.HtgSup.Ala),N:=4); // heating supply fault
ExtDieBlt.Tmp001.Dsa:=(ExtDieBlt.Tmp001.Dsa&1) OR dsa;
ExtDieBlt.Tmp002.Dsa:=(ExtDieBlt.Tmp002.Dsa&1) OR dsa;
ExtDieBlt.Tmp003.Dsa:=(ExtDieBlt.Tmp003.Dsa&1) OR dsa;
ExtDieBlt.Tmp004.Dsa:=(ExtDieBlt.Tmp004.Dsa&1) OR dsa;
ExtDieBlt.Tmp005.Dsa:=(ExtDieBlt.Tmp005.Dsa&1) OR dsa;
ExtDieBlt.Tmp006.Dsa:=(ExtDieBlt.Tmp006.Dsa&1) OR dsa;
ExtDieBlt.Tmp007.Dsa:=(ExtDieBlt.Tmp007.Dsa&1) OR dsa;
ExtDieBlt.Tmp008.Dsa:=(ExtDieBlt.Tmp008.Dsa&1) OR dsa;
ExtDieBlt.Tmp009.Dsa:=(ExtDieBlt.Tmp009.Dsa&1) OR dsa;
ExtDieBlt.Tmp010.Dsa:=(ExtDieBlt.Tmp010.Dsa&1) OR dsa;
ExtDieBlt.Tmp011.Dsa:=(ExtDieBlt.Tmp011.Dsa&1) OR dsa;
ExtDieBlt.Tmp012.Dsa:=(ExtDieBlt.Tmp012.Dsa&1) OR dsa;
ExtDieBlt.Tmp013.Dsa:=(ExtDieBlt.Tmp013.Dsa&1) OR dsa;
ExtDieBlt.Tmp014.Dsa:=(ExtDieBlt.Tmp014.Dsa&1) OR dsa;
ExtDieBlt.Tmp015.Dsa:=(ExtDieBlt.Tmp015.Dsa&1) OR dsa;
ExtDieBlt.Tmp016.Dsa:=(ExtDieBlt.Tmp016.Dsa&1) OR dsa;
ExtDieBlt.Tmp017.Dsa:=(ExtDieBlt.Tmp017.Dsa&1) OR dsa;
ExtDieBlt.Tmp018.Dsa:=(ExtDieBlt.Tmp018.Dsa&1) OR dsa;
ExtDieBlt.Tmp019.Dsa:=(ExtDieBlt.Tmp019.Dsa&1) OR dsa;
ExtDieBlt.Tmp020.Dsa:=(ExtDieBlt.Tmp020.Dsa&1) OR dsa;
ExtDieBlt.Tmp021.Dsa:=(ExtDieBlt.Tmp021.Dsa&1) OR dsa;
ExtDieBlt.Tmp022.Dsa:=(ExtDieBlt.Tmp022.Dsa&1) OR dsa;
ExtDieBlt.Tmp023.Dsa:=(ExtDieBlt.Tmp023.Dsa&1) OR dsa;
ExtDieBlt.Tmp024.Dsa:=(ExtDieBlt.Tmp024.Dsa&1) OR dsa;
ExtDieBlt.Tmp025.Dsa:=(ExtDieBlt.Tmp025.Dsa&1) OR dsa;
ExtDieBlt.Tmp026.Dsa:=(ExtDieBlt.Tmp026.Dsa&1) OR dsa;
ExtDieBlt.Tmp027.Dsa:=(ExtDieBlt.Tmp027.Dsa&1) OR dsa;
ExtDieBlt.Tmp028.Dsa:=(ExtDieBlt.Tmp028.Dsa&1) OR dsa;
ExtDieBlt.Tmp029.Dsa:=(ExtDieBlt.Tmp029.Dsa&1) OR dsa;
ExtDieBlt.Tmp030.Dsa:=(ExtDieBlt.Tmp030.Dsa&1) OR dsa;
ExtDieBlt.Tmp031.Dsa:=(ExtDieBlt.Tmp031.Dsa&1) OR dsa;
ExtDieBlt.Tmp032.Dsa:=(ExtDieBlt.Tmp032.Dsa&1) OR dsa;
ExtDieBlt.Tmp033.Dsa:=(ExtDieBlt.Tmp033.Dsa&1) OR dsa;
ExtDieBlt.Tmp034.Dsa:=(ExtDieBlt.Tmp034.Dsa&1) OR dsa;
ExtDieBlt.Tmp035.Dsa:=(ExtDieBlt.Tmp035.Dsa&1) OR dsa;
ExtDieBlt.Tmp036.Dsa:=(ExtDieBlt.Tmp036.Dsa&1) OR dsa;
ExtDieBlt.Tmp037.Dsa:=(ExtDieBlt.Tmp037.Dsa&1) OR dsa;
ExtDieBlt.Tmp038.Dsa:=(ExtDieBlt.Tmp038.Dsa&1) OR dsa;
ExtDieBlt.Tmp039.Dsa:=(ExtDieBlt.Tmp039.Dsa&1) OR dsa;
ExtDieBlt.Tmp040.Dsa:=(ExtDieBlt.Tmp040.Dsa&1) OR dsa;
ExtDieBlt.Tmp041.Dsa:=(ExtDieBlt.Tmp041.Dsa&1) OR dsa;
// start/stop
pulseRun:=Prj.Str.ChrAknFanRun AND NOT DieBlt_DB.memoFanRun;
pulseStp:=NOT Prj.Str.ChrAknFanRun AND DieBlt_DB.memoFanRun;
DieBlt_DB.memoFanRun:=Prj.Str.ChrAknFanRun;
ExtDieBlt.TmpAll.RunCmd:=ExtDieBlt.TmpAll.RunCmd OR pulseRun;
ExtDieBlt.TmpAll.StpCmd:=ExtDieBlt.TmpAll.StpCmd OR pulseStp;
// lib function
libCTL2_CtlGenAll(Structur:=ExtDieBlt.TmpAll, StructurGen:=ExtDieBlt.Tmp001, Num:=DieBlt_DB.NumOf_Ctl);
libCTL2_CtlGen(Structur:=ExtDieBlt.Tmp001, Num:=DieBlt_DB.NumOf_Ctl);
libCTL2_CtlPsg(Structur:=ExtDieBlt.PmtTmp001, StructurGen:=ExtDieBlt.Tmp001, StructurPsg:=Psg.Dev, Num:=DieBlt_DB.NumOf_Psg001);
libCTL2_CtlPsg(Structur:=ExtDieBlt.PmtTmp033, StructurGen:=ExtDieBlt.Tmp033, StructurPsg:=Psg.Dev, Num:=DieBlt_DB.NumOf_Psg002);
// output's
ExtDieBltHtgSupRun:=(ExtDieBlt.TmpAll.RunSttCou>0);
END_FUNCTION
//*************************
//*** link to visualisation
//*************************
FUNCTION "DieBlt_Link" : VOID
libSYSTEM_Link( ID:=LinkID.DIEBLT, Addr_CP:=LinkID.CP443, RcvDB:=DieBlt_RcvDB, SndDB:=ExtDieBlt, Lnk:=ExtDieBlt.Lnk);
END_FUNCTION
//****************************
//*** main function cyclic ***
//****************************
FUNCTION "DieBlt_Main" : VOID
DieBlt_Link();
DieBlt_Device();
DieBlt_Ctl();
END_FUNCTION
//*******************************
//*** main function peridical ***
//*******************************
FUNCTION "DieBlt_Main_P" : VOID
END_FUNCTION
DATA_BLOCK "ExtDieBlt"
STRUCT
// link
Lnk :S7_LINK;
// devices
ClgFan :S7_FAN;
// controller
HtgSup :S7_ALERT;
TmpAll :CTL2_GENALL;
Tmp001 :CTL2_GEN;
Tmp002 :CTL2_GEN;
Tmp003 :CTL2_GEN;
Tmp004 :CTL2_GEN;
Tmp005 :CTL2_GEN;
Tmp006 :CTL2_GEN;
Tmp007 :CTL2_GEN;
Tmp008 :CTL2_GEN;
Tmp009 :CTL2_GEN;
Tmp010 :CTL2_GEN;
Tmp011 :CTL2_GEN;
Tmp012 :CTL2_GEN;
Tmp013 :CTL2_GEN;
Tmp014 :CTL2_GEN;
Tmp015 :CTL2_GEN;
Tmp016 :CTL2_GEN;
Tmp017 :CTL2_GEN;
Tmp018 :CTL2_GEN;
Tmp019 :CTL2_GEN;
Tmp020 :CTL2_GEN;
Tmp021 :CTL2_GEN;
Tmp022 :CTL2_GEN;
Tmp023 :CTL2_GEN;
Tmp024 :CTL2_GEN;
Tmp025 :CTL2_GEN;
Tmp026 :CTL2_GEN;
Tmp027 :CTL2_GEN;
Tmp028 :CTL2_GEN;
Tmp029 :CTL2_GEN;
Tmp030 :CTL2_GEN;
Tmp031 :CTL2_GEN;
Tmp032 :CTL2_GEN;
Tmp033 :CTL2_GEN;
Tmp034 :CTL2_GEN;
Tmp035 :CTL2_GEN;
Tmp036 :CTL2_GEN;
Tmp037 :CTL2_GEN;
Tmp038 :CTL2_GEN;
Tmp039 :CTL2_GEN;
Tmp040 :CTL2_GEN;
Tmp041 :CTL2_GEN;
PmtTmp001 :CTL2_PSG;
PmtTmp002 :CTL2_PSG;
PmtTmp003 :CTL2_PSG;
PmtTmp004 :CTL2_PSG;
PmtTmp005 :CTL2_PSG;
PmtTmp006 :CTL2_PSG;
PmtTmp007 :CTL2_PSG;
PmtTmp008 :CTL2_PSG;
PmtTmp009 :CTL2_PSG;
PmtTmp010 :CTL2_PSG;
PmtTmp011 :CTL2_PSG;
PmtTmp012 :CTL2_PSG;
PmtTmp013 :CTL2_PSG;
PmtTmp014 :CTL2_PSG;
PmtTmp015 :CTL2_PSG;
PmtTmp016 :CTL2_PSG;
PmtTmp017 :CTL2_PSG;
PmtTmp018 :CTL2_PSG;
PmtTmp019 :CTL2_PSG;
PmtTmp020 :CTL2_PSG;
PmtTmp021 :CTL2_PSG;
PmtTmp022 :CTL2_PSG;
PmtTmp023 :CTL2_PSG;
PmtTmp024 :CTL2_PSG;
PmtTmp025 :CTL2_PSG;
PmtTmp026 :CTL2_PSG;
PmtTmp027 :CTL2_PSG;
PmtTmp028 :CTL2_PSG;
PmtTmp029 :CTL2_PSG;
PmtTmp030 :CTL2_PSG;
PmtTmp031 :CTL2_PSG;
PmtTmp032 :CTL2_PSG;
PmtTmp033 :CTL2_PSG;
PmtTmp034 :CTL2_PSG;
PmtTmp035 :CTL2_PSG;
PmtTmp036 :CTL2_PSG;
PmtTmp037 :CTL2_PSG;
PmtTmp038 :CTL2_PSG;
PmtTmp039 :CTL2_PSG;
PmtTmp040 :CTL2_PSG;
PmtTmp041 :CTL2_PSG;
//alert for cooling fan off
ClgFanOff :S7_ALERT;
END_STRUCT
BEGIN
PmtTmp001.AdrPsg:=9; PmtTmp001.AdrZon:=1;
PmtTmp002.AdrPsg:=9; PmtTmp002.AdrZon:=2;
PmtTmp003.AdrPsg:=9; PmtTmp003.AdrZon:=3;
PmtTmp004.AdrPsg:=9; PmtTmp004.AdrZon:=4;
PmtTmp005.AdrPsg:=9; PmtTmp005.AdrZon:=5;
PmtTmp006.AdrPsg:=9; PmtTmp006.AdrZon:=6;
PmtTmp007.AdrPsg:=9; PmtTmp007.AdrZon:=7;
PmtTmp008.AdrPsg:=9; PmtTmp008.AdrZon:=8;
PmtTmp009.AdrPsg:=9; PmtTmp009.AdrZon:=9;
PmtTmp010.AdrPsg:=9; PmtTmp010.AdrZon:=10;
PmtTmp011.AdrPsg:=9; PmtTmp011.AdrZon:=11;
PmtTmp012.AdrPsg:=9; PmtTmp012.AdrZon:=12;
PmtTmp013.AdrPsg:=9; PmtTmp013.AdrZon:=13;
PmtTmp014.AdrPsg:=9; PmtTmp014.AdrZon:=14;
PmtTmp015.AdrPsg:=9; PmtTmp015.AdrZon:=15;
PmtTmp016.AdrPsg:=9; PmtTmp016.AdrZon:=16;
PmtTmp017.AdrPsg:=9; PmtTmp017.AdrZon:=17;
PmtTmp018.AdrPsg:=9; PmtTmp018.AdrZon:=18;
PmtTmp019.AdrPsg:=9; PmtTmp019.AdrZon:=19;
PmtTmp020.AdrPsg:=9; PmtTmp020.AdrZon:=20;
PmtTmp021.AdrPsg:=9; PmtTmp021.AdrZon:=21;
PmtTmp022.AdrPsg:=9; PmtTmp022.AdrZon:=22;
PmtTmp023.AdrPsg:=9; PmtTmp023.AdrZon:=23;
PmtTmp024.AdrPsg:=9; PmtTmp024.AdrZon:=24;
PmtTmp025.AdrPsg:=9; PmtTmp025.AdrZon:=25;
PmtTmp026.AdrPsg:=9; PmtTmp026.AdrZon:=26;
PmtTmp027.AdrPsg:=9; PmtTmp027.AdrZon:=27;
PmtTmp028.AdrPsg:=9; PmtTmp028.AdrZon:=28;
PmtTmp029.AdrPsg:=9; PmtTmp029.AdrZon:=29;
PmtTmp030.AdrPsg:=9; PmtTmp030.AdrZon:=30;
PmtTmp031.AdrPsg:=9; PmtTmp031.AdrZon:=31;
PmtTmp032.AdrPsg:=9; PmtTmp032.AdrZon:=32;
PmtTmp033.AdrPsg:=10; PmtTmp033.AdrZon:=1;
PmtTmp034.AdrPsg:=10; PmtTmp034.AdrZon:=2;
PmtTmp035.AdrPsg:=10; PmtTmp035.AdrZon:=3;
PmtTmp036.AdrPsg:=10; PmtTmp036.AdrZon:=4;
PmtTmp037.AdrPsg:=10; PmtTmp037.AdrZon:=5;
PmtTmp038.AdrPsg:=10; PmtTmp038.AdrZon:=6;
PmtTmp039.AdrPsg:=10; PmtTmp039.AdrZon:=7;
PmtTmp040.AdrPsg:=10; PmtTmp040.AdrZon:=8;
PmtTmp041.AdrPsg:=10; PmtTmp041.AdrZon:=9;
END_DATA_BLOCK
DATA_BLOCK "DieBlt_DB"
STRUCT
NumOf_Ctl :INT:=41;
NumOf_Psg001 :INT:=32;
NumOf_Psg002 :INT:=9;
memoFanRun :BOOL;
memoCtlRun :BOOL;
END_STRUCT
BEGIN
END_DATA_BLOCK
DATA_BLOCK "DieBlt_RcvDB"
STRUCT
BytArray : ARRAY [1 .. 512] OF BYTE ;
END_STRUCT
BEGIN
END_DATA_BLOCK