vierlagig
Level-1
- Beiträge
- 9.882
- Reaktionspunkte
- 2.021
-> Hier kostenlos registrieren
mach ichs nicht über die pulsanzahl, rechnen kann doch jeder selber, sondern einfach über vier zeiten
nein, ich hab keine langeweile nur unruhige nächte ...
Code:
*
FUNCTION_BLOCK FB 1692
TITLE =PULSE_GENERATOR_2_VARI
//DATE: 31.07.2008
//AUTHOR: 4lagig
//VERSION: V0.1 BasicVer
AUTHOR : '4lagig'
FAMILY : BoolGF
VERSION : 0.1
VAR_INPUT
xPlcPulse : BOOL ;
xOn : BOOL ;
dOnTimePulse : DINT ;
dOffTimePulse : DINT ;
dOnTimeAll : DINT ;
dOffTimeAll : DINT ;
END_VAR
VAR_OUTPUT
xOut : BOOL ;
END_VAR
VAR
dOnDelayPulse : DINT ;
dOffDelayPulse : DINT ;
dOnDelayAll : DINT ;
dOffDelayAll : DINT ;
xHelpFlagPlcPulse : BOOL ;
xHelpFlagAll : BOOL ;
xHelpFlagOn : BOOL ;
END_VAR
BEGIN
NETWORK
TITLE =
NOP 0;
//----------- init ------------//
U #xOn; //if enable
FP #xHelpFlagOn; //new
SPBN none;
S #xHelpFlagAll; //init
S #xOut; //all
L L#0; //functions
T #dOnDelayPulse; //of
T #dOffDelayPulse; //the
T #dOnDelayAll; //pulse generator
T #dOffDelayAll; //2 vari
none: UN #xOn; //if enable false
R #xOut; //reset output
SPB end; //and leave
//---------- pulse ------------//
U #xPlcPulse; //with every pulse
FP #xHelpFlagPlcPulse; //the function will be worked
SPBN end;
//---------- on all -----------//
U #xHelpFlagAll; //if "all" on
SPBN off1;
L #dOnDelayAll; //increment
+ 1;
T #dOnDelayAll; //the time
L #dOnDelayAll; //until
L #dOnTimeAll; //on_delay equal time
>=I ;
SPBN new;
R #xHelpFlagAll; //then "all" off
R #xOut;
L L#0; //and reset
T #dOnDelayAll; //the timer
T #dOnDelayPulse;
T #dOffDelayPulse;
SPA end;
//---------- off all ----------//
off1: L #dOffDelayAll; //"all" is off
+ 1; //increment
T #dOffDelayAll; //the delay
L #dOffDelayAll; //until
L #dOffTimeAll; //off_delay equal time
>=I ;
SPBN end;
S #xHelpFlagAll; //then "all" on
S #xOut;
L L#0; //and reset
T #dOffDelayAll; //the timer
//--- pulse on while all on ---//
new: U #xHelpFlagAll; //if "all" on
SPBN end;
U #xOut; //and out also on
SPBN off;
L #dOnDelayPulse; //increment
+ 1;
T #dOnDelayPulse; //the delay
L #dOnDelayPulse;
L #dOnTimePulse;
>=I ;
SPBN end;
R #xOut;
L L#0;
T #dOnDelayPulse;
SPA end;
//--- pulse off while all on ---//
off: L #dOffDelayPulse; //out is off
+ 1; //increment
T #dOffDelayPulse; //the delay
L #dOffDelayPulse;
L #dOffTimePulse;
>=I ;
SPBN end;
S #xOut; //to set the out
L L#0;
T #dOffDelayPulse;
//-------- EN0 handling --------//
end: SET ;
SAVE ;
BEA ;
END_FUNCTION_BLOCK
Zuletzt bearbeitet: