登录
首页 PLC论坛 PLC论坛
回帖 发帖
正文

主题:一段程序不理解,请大侠帮忙把每个函数的功能注释一下,感激不尽。

点击:580 回复: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
09-05-06 18:55

工控新闻

更多新闻资讯