// LICENSE : GPLv2+ BEGIN // Run the main FUP block. CALL "FB_main", "DB_main" BE END_ORGANIZATION_BLOCK ]]> // LICENSE : GPLv2+ VAR_INPUT PERIOD : S5TIME; // Timer period T : TIMER; // Timer cell MINVAL : DWORD; // Minimal #REG value MAXVAL : DWORD; // Maximal #REG value END_VAR VAR_IN_OUT REG : DWORD; // Shift register STATE : BOOL; // Timer state DIR : BOOL; // Shift direction END_VAR BEGIN // Self re-arming timer U #STATE L #PERIOD SV #T UN #T = #STATE // Select sweep direction L #MINVAL L #REG ==D // #MINVAL reached? S #DIR // reverse direction L #MAXVAL ==D // #MAXVAL reached? R #DIR // reverse direction // Shift #REG, if required L #REG UD L#-1 L #MINVAL // Initial #REG value SPZ _001 // #REG is uninitialized? TAK U #STATE // Next state? SPBN _001 U #DIR // Left or right? SPBN _000 RLD 2 // Next state (left) _000: RRD 1 // Next state (right) _001: T #REG BE END_FUNCTION ]]> ]]>