CoDeSys+ dHVAR_GLOBAL END_VAR 'Globale_VariablendH dHVAR_GLOBAL END_VAR  3 FC610_OUT&H &HHTYPE FC610_OUT : STRUCT BCDW:WORD; SBCD:BOOL; END_STRUCT END_TYPE . FC706_OUTdH dHTTYPE FC706_OUT : STRUCT BCDW:WORD; SBCD:BOOL; FEH:BOOL; END_STRUCT END_TYPE ',qFC73_OUTdH dHGTYPE FC73_OUT : STRUCT STG1:BOOL; STG2:BOOL; END_STRUCT END_TYPE",XtQ FB100}H vHFUNCTION_BLOCK FB100 VAR_INPUT EIN: BOOL; Puls_Zeit: TIME; END_VAR VAR_OUTPUT TAKT: BOOL; END_VAR VAR Zeit1: TON; TIO: BOOL; HO: BOOL; END_VAR LD EIN ANDN TIO ST Zeit1.IN CAL Zeit1(PT := Puls_Zeit) LD Zeit1.Q ST TIO LD TIO S HO LD TAKT AND TIO R HO LD HO ST TAKT $,;/FB101dH dHFUNCTION_BLOCK FB101 VAR_INPUT EN: BOOL; Puls_Zeit: TIME; Pause_Zeit: TIME; END_VAR VAR_OUTPUT TAKT: BOOL; END_VAR VAR Zeit1: TP; Zeit2: TP; END_VAR LD Zeit2.Q NOT AND EN ST Zeit1.IN CAL Zeit1(PT := Puls_Zeit) LD Zeit1.Q ST TAKT LD Zeit1.Q NOT ST Zeit2.IN CAL Zeit2(PT := Pause_Zeit) ,9FB15dH dHFUNCTION_BLOCK FB15 VAR_INPUT T1_2:BOOL; T2_3,T3_4,T4_5,T5_6,T6_7,T7_8,T8_9,T9_10,T10_1:BOOL:=TRUE; RESET:BOOL; END_VAR VAR_OUTPUT SCHRITT: INT; END_VAR VAR SRO_1:BOOL:=TRUE; SRO_2,SRO_3,SRO_4,SRO_5,SRO_6,SRO_7,SRO_8,SRO_9,SRO_10:BOOL; END_VARRESETBT10_1ASRO_10ANDORSRO_1SRO_2SRO_1SRO_1SCHRITTA1SELSCHRITTT1_2ASRO_1ANDSRO_2SRO_3ARESETORSRO_2SRO_2SCHRITTA2SELSCHRITTT2_3ASRO_2ANDSRO_3SRO_4ARESETORSRO_3SRO_3SCHRITTA3SELSCHRITTT3_4ASRO_3ANDSRO_4SRO_5ARESETORSRO_4SRO_4SCHRITTA4SELSCHRITTT4_5ASRO_4ANDSRO_5SRO_6ARESETORSRO_5SRO_5SCHRITTA5SELSCHRITTT5_6ASRO_5ANDSRO_6SRO_7ARESETORSRO_6SRO_6SCHRITTA6SELSCHRITTT6_7ASRO_6ANDSRO_7SRO_8ARESETORSRO_7SRO_7SCHRITTA7SELSCHRITTT7_8ASRO_7ANDSRO_8SRO_9ARESETORSRO_8SRO_8SCHRITTA8SELSCHRITTT8_9ASRO_8ANDSRO_9SRO_10ARESETORSRO_9SRO_9SCHRITTA9SELSCHRITTT9_10ASRO_9ANDSRO_10SRO_1ARESETORSRO_10SRO_10SCHRITTA10SELSCHRITTd*,FB24dH dH?FUNCTION_BLOCK FB24 VAR_INPUT STG_AUS: BOOL; STG_EIN: BOOL; START: BOOL; AUTO: BOOL; EmB: BOOL; EoB: BOOL; EINR: BOOL; Zyklus: BOOL; NOT_AUS:BOOL; AKTOR_FR: BOOL; GST_ANL: BOOL; SCHRITT: INT; END_VAR VAR_OUTPUT ANZ_STG: BOOL; ANZ_AUTO: BOOL; ANZ_EmB: BOOL; ANZ_EoB: BOOL; ANZ_EINR: BOOL; ANZ_Zyk_E: BOOL; ANZ_Zyk_A: BOOL; RESET: BOOL; FR_K_MB: BOOL; FR_K_oB: BOOL; FR_Aktion: BOOL; END_VAR VAR STEU_EIN: RS; AUTO_BE: BOOL; AUTO_EIN: RS; FO1: R_TRIG; FO2: R_TRIG; Start_SP: RS; IO_Weiter: BOOL; END_VAR STEU_EINSTG_EINBSTG_AUSNOT_AUSORRSANZ_STGZyklusBSCHRITTA1EQANDAUTO_BEAUTO_EINAUTOASTARTANDB STEU_EIN.Q1AUTOEFO1AAUTO_BER_TRIGORRSANZ_AUTO STEU_EIN.Q1AEmBANDANZ_EmB STEU_EIN.Q1AEoBANDANZ_EoB STEU_EIN.Q1ZYKLUSA AUTO_EIN.Q1AND ANZ_Zyk_E STEU_EIN.Q1ZYKLUSA AUTO_EIN.Q1AND ANZ_Zyk_A STEU_EIN.Q1AEINRANDANZ_EINRFO2ASTARTR_TRIG STEU_EIN.Q1AUTOAND IO_Weiter AUTO_EIN.Q1BANZ_EMBA IO_WeiterANDORFR_K_MBAUTOANZ_EoBA IO_WeiterANDFR_K_oB AUTO_EIN.Q1ANZ_EmBESTART_SPSTARTA STEU_EIN.Q1RSANDBANZ_EoBAAKTOR_FRANDORA STEU_EIN.Q1AND FR_AktionSTART STEU_EIN.Q1GST_ANLNOT_AUSANDRESETd)FB25dH dHFUNCTION_BLOCK FB25 VAR_INPUT RESET: BOOL; Weiter_mB: BOOL; Weiter_oB: BOOL; T1_2: BOOL; T2_3: BOOL := TRUE; T3_4: BOOL := TRUE; T4_5: BOOL := TRUE; T5_6: BOOL := TRUE; T6_7: BOOL := TRUE; T7_8: BOOL := TRUE; T8_9: BOOL := TRUE; T9_10: BOOL := TRUE; T10_1: BOOL:=TRUE; END_VAR VAR_OUTPUT SCHRITT: INT; END_VAR VAR SRO_1: SR; SRO_10: SR; SRO_2: SR; SRO_3: SR; SRO_4: SR; SRO_5: SR; SRO_6: SR; SRO_7: SR; SRO_8: SR; SRO_9: SR; FO1: R_TRIG; HO1: SR; END_VAR SRO_1RESETFO1EHO1HO1.Q1ASRR_TRIGB SRO_10.Q1SRO_9.Q1BT10_1A Weiter_mBANDA Weiter_oBORANDORASRO_2.Q1SRSCHRITTA1SELSCHRITTSRO_2SRO_1.Q1 SRO_10.Q1BT1_2A Weiter_mBANDA Weiter_oBORANDBRESETASRO_3.Q1ORSRSCHRITTA2SELSCHRITTSRO_3SRO_2.Q1SRO_1.Q1BT2_3A Weiter_mBANDA Weiter_oBORANDBRESETASRO_4.Q1ORSRSCHRITTA3SELSCHRITTSRO_4SRO_3.Q1SRO_2.Q1BT3_4A Weiter_mBANDA Weiter_oBORANDBRESETASRO_5.Q1ORSRSCHRITTA4SELSCHRITTSRO_5SRO_4.Q1SRO_3.Q1BT4_5A Weiter_mBANDA Weiter_oBORANDBRESETASRO_6.Q1ORSRSCHRITTA5SELSCHRITTSRO_6SRO_5.Q1SRO_4.Q1BT5_6A Weiter_mBANDA Weiter_oBORANDBRESETASRO_7.Q1ORSRSCHRITTA6SELSCHRITTSRO_7SRO_6.Q1SRO_5.Q1BT6_7A Weiter_mBANDA Weiter_oBORANDBRESETASRO_8.Q1ORSRSCHRITTA7SELSCHRITTSRO_8SRO_7.Q1SRO_6.Q1BT7_8A Weiter_mBANDA Weiter_oBORANDBRESETASRO_9.Q1ORSRSCHRITTA8SELSCHRITTSRO_9SRO_8.Q1SRO_7.Q1BT8_9A Weiter_mBANDA Weiter_oBORANDBRESETA SRO_10.Q1ORSRSCHRITTA9SELSCHRITTSRO_10SRO_9.Q1SRO_8.Q1BT9_10A Weiter_mBANDA Weiter_oBORANDBRESETASRO_1.Q1ORSRSCHRITTA10SELSCHRITTdE,FB70dH dHFUNCTION_BLOCK FB70 VAR_INPUT EIN: BOOL; SW:REAL; IW:REAL; KP, TN, TV:REAL:=1.0; TA:REAL:=0.1; P_SEL, I_SEL, D_SEL:BOOL; END_VAR VAR_OUTPUT STG:REAL; END_VAR VAR EK1 : REAL; ESUM:REAL; EK: REAL; STGI: REAL; STGD: REAL; END_VAR IF EIN = FALSE THEN STG:=0.0; EK1:=0.0; ESUM:=0.0; RETURN; END_IF; STG:= 0.0; EK:= KP*(SW-IW); ESUM:= ESUM + EK; STGI:= (ESUM*TA)/TN; STGD:= TV*(EK-EK1)/TA; EK1:=EK; IF P_SEL = TRUE THEN STG:=STG+EK; END_IF; IF I_SEL = TRUE THEN STG:=STG+STGI; END_IF; IF D_SEL = TRUE THEN STG:=STG+STGD; END_IF; IF STG < 0.0 THEN STG:= 0.0; ELSIF STG > 100.0 THEN STG:= 100.0; END_IF;0,J FB72H H{FUNCTION_BLOCK FB72 VAR_INPUT EIN : BOOL ; SW, IW : REAL ; KP, TN : REAL:= 1.000E+00; TA, TOTZ: REAL:= 1.000E-01; STGO, STGU: BOOL ; STGL: REAL ; PMIN: REAL:= 1.000000E-001; END_VAR VAR_OUTPUT STGA : BOOL ; STGZ : BOOL ; END_VAR VAR EK1 : REAL ; PSP : REAL ; PAU : INT ; EK : REAL ; DY : REAL ; DYI: REAL ; PZ : REAL ; END_VARIF EIN = FALSE THEN STGA:=FALSE; STGZ:= NOT STGU; EK1:=0.0; PSP:=0.0; RETURN; END_IF; EK:= SW - IW; IF ABS(EK) > TOTZ THEN DY:= KP*(EK-EK1)+(KP*TA*EK)/TN; EK1:=EK; IF DY < -100.0 THEN DY:=-100.0; ELSIF DY > 100.0 THEN DY:= 100.0; END_IF; PZ:=(STGL*DY)/(PMIN*100.0); PSP:=PSP + PZ; END_IF; IF (STGO = TRUE)AND(PSP>0.0) OR (STGU = TRUE)AND(PSP<0.0) THEN STGA:=FALSE; STGZ:=FALSE; PAU:=0; ELSE IF PAU = 0 THEN PAU:=REAL_TO_INT(PMIN/TA)-1; STGA:=FALSE; STGZ:=FALSE; IF ABS(PSP)>1 THEN IF PSP>0 THEN STGA:=TRUE; PSP:=PSP-1.0; ELSE STGZ:=TRUE; PSP:=PSP+1.0; END_IF; END_IF; ELSE PAU:=PAU-1; END_IF; END_IF;  ,BW FC48dH dHFUNCTION FC48 :REAL VAR_INPUT AE: WORD; OGREB:INT; UGREB:INT; OGRNB:REAL; UGRNB:REAL; END_VAR VAR AER: REAL; OGREBR: REAL; UGREBR: REAL; D1: REAL; D2: REAL; END_VARBAAE WORD_TO_INT INT_TO_REALAERAOGREB INT_TO_REALOGREBRAUGREB INT_TO_REALUGREBROGRNBAUGRNBSUBD1OGREBRAUGREBRSUBD2AERAUGREBRSUBAD1MULAD2DIVAUGRNBADDFC48d+,_GFC49dH dHFUNCTION FC49 :INT VAR_INPUT REAW: REAL; OGRNB:REAL; UGRNB:REAL; OGRAB:INT; UGRAB:INT; END_VAR VAR D1: REAL; D2: REAL; END_VAR LD OGRAB INT_TO_REAL SUB( UGRAB INT_TO_REAL ) ST D1 LD OGRNB SUB UGRNB ST D2 LD REAW SUB UGRNB MUL D1 DIV D2 REAL_TO_INT ADD UGRAB ST FC49 1FC609H HRFUNCTION FC609 : INT VAR_INPUT BCDW: WORD; SBCD: BOOL; END_VAR VAR END_VARBCDWA15ANDA10LEBCDWA4SHRA15ANDA10LEBCDWA8SHRA15ANDA10LEBBCDWA12SHRA15ANDA10LEANDBCDWA15ANDBCDWA4SHRA15ANDA10MULBCDWA8SHRA15ANDA100MULBBCDWA12SHRA15ANDA1000MULADDFC609SBCDFC609A-1MULFC609d2FC610&H &HFUNCTION FC610 : FC610_OUT VAR_INPUT INTW: INT; END_VAR VAR ST4: WORD; ST3: WORD; ST2: WORD; ST1: WORD; END_VAR  65535 FC610.BCDWINTWA9999GTBINTWA-9999LTORINTWA0LT FC610.SBCD FC610.SBCDINTWBINTWA-1MULSELINTWINTWA1000DIVST4INTWBST4A1000MULSUBINTWINTWA100DIVST3INTWBST3A100MULSUBINTWINTWA10DIVST2INTWBST2A10MULSUBST1ST1ST2A4SHLST3A8SHLBST4A12SHLOR FC610.BCDWd,,wFC705&H dHjFUNCTION FC705 : REAL VAR_INPUT BCDW: WORD; SBCD: BOOL; EAF:INT; END_VAR VAR INTW:INT; END_VAR  LD BCDW AND 15 LE 10 AND( BCDW SHR 4 AND 15 LE 10 ) AND ( BCDW SHR 8 AND 15 LE 10 ) AND( BCDW SHR 12 AND 15 LE 10 ) NOT RETC LD BCDW AND 15 ADD ( BCDW SHR 4 AND 15 MUL 10 ) ADD( BCDW SHR 8 AND 15 MUL 100 ) ADD( BCDW SHR 12 AND 15 MUL 1000 ) ST INTW LDN SBCD JMPC M001 LD INTW MUL -1 ST INTW M001: LD INTW INT_TO_REAL ST FC705 LD 10 EXPT EAF MUL FC705 ST FC705 -,,:{FC706 H HFUNCTION FC706 : FC706_OUT VAR_INPUT REAW:REAL; EAF: INT; END_VAR VAR INTW:INT; ST4: WORD; ST3: WORD; ST2: WORD; ST1: WORD; LREAW: REAL; END_VAR 16#0 FC706.BCDWFALSE FC706.FEHREAWA0.0EQREAWA0.0LT FC706.SBCDREAWB10AEAFEXPTMULLREAWLREAWA1.0LTBLREAWA9999.0GTOR FC706.FEHALREAWTRUNCINTW FC706.SBCDINTWBINTWA-1MULSELINTWINTWA1000DIVST4INTWBST4A1000MULSUBINTWINTWA100DIVST3INTWBST3A100MULSUBINTWINTWA10DIVST2INTWBST2A10MULSUBST1ST1ST2A4SHLST3A8SHLBST4A12SHLOR FC706.BCDWd8,FC72dH dHbFUNCTION FC72 :BOOL VAR_INPUT EIN:BOOL; SW:REAL; IW:REAL; END_VAR VAR ER:REAL; END_VAR V LDN EIN R FC72 RETC LD SW SUB IW ST ER LD ER GT 0.0 ST FC72 7,'FC72_STdH dHeFUNCTION FC72_ST :BOOL VAR_INPUT EIN:BOOL; SW:REAL; IW:REAL; END_VAR VAR ER:REAL; END_VARIF EIN = FALSE THEN FC72_ST:=FALSE; RETURN; END_IF; ER:= SW - IW; IF ER >0 THEN FC72_ST:=TRUE; ELSE FC72_ST:=FALSE; END_IF;5,BW;FC73dH dHuFUNCTION FC73 :FC73_OUT VAR_INPUT EIN:BOOL; SW:REAL; IW:REAL; XTO:REAL; END_VAR VAR ER: REAL; END_VAR LDN EIN R FC73.STG1 R FC73.STG2 RETC LD SW SUB IW ST ER LD ER LT( XTO MUL -0.5 ) R FC73.STG1 S FC73.STG2 RETC LD TRUE R FC73.STG2 LD ER LT( XTO MUL 0.5 ) R FC73.STG1 RETC LD TRUE S FC73.STG1 6,XtQFC73_STdH dHvFUNCTION FC73_ST :FC73_OUT VAR_INPUT EIN:BOOL; SW:REAL; IW:REAL; XTO:REAL; END_VAR VAR ER: REAL; END_VAR"IF EIN = FALSE THEN FC73_ST.STG1:=FALSE; FC73_ST.STG1:=FALSE; RETURN; END_IF; ER:= SW - IW; IF ER < -0.5*XTO THEN FC73_ST.STG1:=FALSE; FC73_ST.STG2:=TRUE; ELSIF ER <0.5*XTO THEN FC73_ST.STG1:=FALSE; FC73_ST.STG2:=FALSE; ELSE FC73_ST.STG1:=TRUE; FC73_ST.STG2:=FALSE; END_IF;:,GPFC74dH dHFUNCTION FC74 :BOOL VAR_INPUT EIN:BOOL; SW:REAL; IW:REAL; SH:REAL; END_VAR VAR_IN_OUT STG:BOOL; END_VAR VAR ER:REAL; SP:REAL; END_VAREINSTGSWAIWSUBER0.005SHASWMULSPERBSPA-1.0MULLTSTGERASPGTSTGd9,XtFC74_STdH dHFUNCTION FC74_ST :BOOL VAR_INPUT EIN:BOOL; SW:REAL; IW:REAL; SH:REAL; END_VAR VAR_IN_OUT STG:BOOL; END_VAR VAR ER:REAL; SP:REAL; END_VARIF EIN = FALSE THEN STG:=FALSE; RETURN; END_IF; ER:= SW - IW; SP:=0.005*SH*SW; IF ER < -1*SP THEN STG:=FALSE; ELSIF ER > SP THEN STG:=TRUE; END_IF;C,XtFC75dH dHFUNCTION FC75 :BOOL VAR_INPUT EIN:BOOL; SW:REAL; IW:REAL; XTO:REAL; SH:REAL; END_VAR VAR_IN_OUT STG1:BOOL; STG2:BOOL; END_VAR VAR ER:REAL; SP1:REAL; SP2:REAL; END_VAR  LDN EIN R STG1 R STG2 RETC LD SW SUB IW ST ER LD SH DIV 100.0 ADD 1.0 MUL XTO MUL 0.5 ST SP1 LD 1.0 SUB( SH DIV 100.0 ) MUL XTO MUL 0.5 ST SP2 LD ER LT( SP1 MUL -1.0 ) R STG1 S STG2 RETC LD ER LT( SP2 MUL -1.0 ) R STG1 RETC LD TRUE R STG2 LD ER LT SP2 R STG1 RETC LD ER LT SP1 RETC LD TRUE S STG1 D,n 0FC75_STdH dHFUNCTION FC75_ST :BOOL VAR_INPUT EIN:BOOL; SW:REAL; IW:REAL; XTO:REAL; SH:REAL; END_VAR VAR_IN_OUT STG1:BOOL; STG2:BOOL; END_VAR VAR ER:REAL; SP1:REAL; SP2:REAL; END_VARUIF EIN = FALSE THEN STG1:=FALSE; STG1:=FALSE; RETURN; END_IF; ER:= SW - IW; SP1:=0.5*XTO*(1+SH/100); SP1:=0.5*XTO*(1-SH/100); IF ER < -SP1 THEN STG1:=FALSE; STG2:=TRUE; ELSIF ER < -SP2 THEN STG1:=FALSE; ELSIF ER < SP2 THEN STG1:=FALSE; STG2:=FALSE; ELSIF ER < SP1 THEN STG2:=FALSE; ELSE STG1:=TRUE; STG2:=FALSE; END_IF /,FC804xH DHhFUNCTION FC804 :REAL VAR_INPUT IN_FC804:REAL; INW: REAL; TZ: REAL; END_VAR VAR END_VAR IN_FC804FC804BINWAFC804SUBABSATZLTINWFC804d,BWQ#Standard.LIB 4.10.05 11:14:46@HBCCONCAT@ CTD@ CTU@ CTUD@ DELETE@ F_TRIG@ FIND@ INSERT@ LEFT@ LEN@ MID@ R_TRIG@ REPLACE@ RIGHT@RS@ RTC@ SEMA@SR@ TOF@ TON@TP@ Bausteine1_Umwa_NormierFC48 FC49+FC6091FC6102FC705,FC706-2_TaktbausteineFB100"FB101$3_AblaufsteuerungenFB15FB24*FB25) 5_Regelung FB70EFB720FC728FC72_ST7FC735FC73_ST6FC74:FC74_ST9FC75CFC75_STDFC804/ Datentypen FC610_OUT3 FC706_OUT.FC73_OUT'Globale VariablenGlobale_VariablenVisualisierungen8H!T