Form Fill and Seal PLC Open

Introduction

This application module details a 5 axis form, fill, and seal machine (FFS) using the PLCopenClosed A vendor -and product- independent worldwide association active in Industrial Control and aiming at standardizing PLC file formats based on XML motion engine. The unwind axis maintains a desired tension on the film as the film transport; using registration marks on the film; positions the film. When in position the filling screw fills the bag, the sealing jaw will seal the bag, and the flying shear will cut on the seal to provide each individually formed, filled, and sealed bag.

  1. Filling Screw (via cam)
  2. Film transport unit to RM
  3. Unwinding
  4. Sealing jaw
  5. Flying Shear

Figure 7-259: Form Fill and Seal Machine Overview

Unwind Axis

The unwind axis is geared to the virtual master axis. As the film is being unwound from the parent roll a dancer roll is monitoring the desired tension. If the tension is outside the desired adjustable dead band the gear ratio between the virtual master axis and unwind is adjusted to maintain the desired tension. The tension (Regulation Tn), gain to control the tension (Regulation Kp), minimum and maximum dead band (Deadband Min & Deadband Max) is entered on the control panel.

Filling Axis

The filling axis is geared to the master virtual axis based on a profile (FillingScrew). The start position, speed, and quantity variables for the filling screw are entered on the operator panel. The start position is the position on the master axis that the filling axis profile (Filling Screw) will start. The speed is the time from the start position to a point in the master position that the filling screw profile follows the master. The quantity is the amount of the “FillingScrew” profile to be executed.

Figure 7-260: Filling Screw Base Profile

Film Transport Axis

The film transport axis monitors the registration marks on the film and adjusts the film based on the registration mark parameters, Open Window, Close Window, and Reference Position entered on the operator panel. If the registration mark is detected between the Open Window and Close Window the registration mark is considered a good mark and the Reference Position value will be used to calculate the necessary adjustment. If the registration mark is detected outside the Open Window and Close Window values then the registration mark is ignored. Adjustments are not made during the seal process to avoid destroying product.

Sealing Jaw

The sealing jaw axis is geared to the master virtual axis based on a profile (SealingJaw). The profile will start at the same starting position as the flying shear. The seal time is entered at the operator interface.

Figure 7-261: Sealing Jaw Base Profile

Flying Shear

The flying shear axis is geared to the master virtual axis based on a profile (FlyingShear). The profile will start at the starting position entered at the operator interface.

Figure 7-262: Flying Shear Base Profile

PLC Program Code

Key FunctionClosed A function calculates a result according to the current value of its inputs. A function has no internal data and is not linked to declared instances. Blocks and Kollmorgen UDFBs used in the application

Name How Used

MC_GearIn

Gears one axis to another

MC_CamIn

Gears one axis to another using a cam profile

MC_TouchProbe

Arms the fast inputClosed The inputs are taken into account at each cycle depending on the system periodicity (for example each millisecond). Under certain circumstances this can be insufficient when more accuracy is needed, or if a quick response is required from the system. To fill the gap, a drive may have some Fast Input connections (generally one or two). When an event happens that triggers a Fast Input (e.g. when a sensor sends a rising edge), the detection of a signal occurs faster (which can be 1000 times more accurate than the system periodicity). Then the timestamp associated with this input can be provided to the IPC to take corrective action and returns the latched position when the fast input occurs

The main section of the PLCClosed "Programmable Logic Controller" A Programmable Logic Controller, PLC, or Programmable Controller is a digital computer used for automation of industrial processes, such as control of machinery on factory assembly lines. Used to synchronize the flow of inputs from (physical) sensors and events with the flow of outputs to actuators and events code contains several If/Then statements. The program sets up gearing and cam profiles for the slave axis to a virtual master. The virtual master controls the machine speed. The slave axes are manipulated by either changing the operator panel inputs or profiles. The program is monitoring registration marks on the film and making correction to the film position based on the entries at the operator panel.

CASE StepCounter OF

0:

Inst_MC_GearIn( TRUE, VirtualMaster, Unwind, 1, 1, 10000, 10000, 0, 0 );

Inst_MC_GearIn1( TRUE, VirtualMaster, FilmTransport, 1, 1, 10000, 10000, 0, 0 );

Inst_MC_CamIn( TRUE, VirtualMaster, FillingScrew, 0, 0, 360, 360, 0, ProfileIDFillingScrew, 0 );

Inst_MC_CamIn1( TRUE, VirtualMaster, SealingJaw, 0, 0, 360, 360, 0, ProfileIDSealingScrew, 0 );

Inst_MC_CamIn2( TRUE, VirtualMaster, FlyingShear, 0, 0, 360, 360, 0, ProfileIDFlyingShear, 0 );

 

IF Inst_MC_GearIn.InGear AND Inst_MC_GearIn1.InGear AND Inst_MC_CamIn.InSync AND Inst_MC_CamIn1.InSync AND Inst_MC_CamIn2.InSync THEN

   StepCounter := 1;

END_IF;

 

1:

IF MachineStart THEN

IF MasterVelocity <> OldMasterVelocity THEN

      Inst_MC_MoveVelocity2( FALSE, VirtualMaster, MasterVelocity, 10000, 10000, 0, 0, 0 );

      Inst_MC_MoveVelocity2( TRUE, VirtualMaster, MasterVelocity, 10000, 10000, 0, 0, 0 );

      OldMasterVelocity := MasterVelocity;

END_IF;

ELSE

   OldMasterVelocity := 0;

END_IF;

 

(*********

Unwind Axis with Dancer Control

Monitor Dancer and change Gear Ratio between VirtualMaster and Unwind Axis to maintain desired tension

May also want to change gear ratio as the radius of feed material decreases due to web being used

Dancer range 0-10V, 5V mid, adjustable deadband, > deadband increase speed, < deadband decrease speed

**********)

IF MachineStart THEN

IF DancerAnalogSignal < DeadBandMin OR DancerAnalogSignal > DeadBandMax THEN

      UnwindGear := (DancerAnalogSignal - 5) * Kp;

IF Tn > 0 THEN

         UnwindGearI := OldUnwindGearI + (DancerAnalogSignal - 5) * Kp/Tn*1000;

         OldUnwindGearI := UnwindGearI;

ELSE

         UnwindGearI := 0;

         OldUnwindGearI := 0;

END_IF;

      UnwindGear := UnwindGear + UnwindGearI;

IF UnwindGear > 1 THEN

         UnwindGear := 1;

         OldUnwindGearI := 1;

ELSIF UnwindGear < -1 THEN

         UnwindGear := -1;

         OldUnwindGearI := -1;

END_IF;

 

      Inst_MC_GearIn( FALSE, VirtualMaster, Unwind, any_to_dint((UnwindGear + 1)*10000000), 10000000, 10000, 10000, 0, 0 );

      Inst_MC_GearIn( TRUE, VirtualMaster, Unwind, any_to_dint((UnwindGear + 1)*10000000), 10000000, 10000, 10000, 0, 0 );

END_IF;

END_IF;

 

 

//Filling Axis

ON ActPosVirtualMaster < 10 DO

   Inst_MC_CamIn( FALSE, VirtualMaster, FillingScrew, FillingStartPosition, 0, FillingSpeed, FillingQuantity, 0, ProfileIDFillingScrew, 0 );

END_DO;

 

Inst_MC_CamIn( TRUE, VirtualMaster, FillingScrew, FillingStartPosition, 0, FillingSpeed, FillingQuantity, 0, ProfileIDFillingScrew, 0 );

 

Inst_MC_Phasing( Test, VirtualMaster, FlyingShear, PhaseFillingScrew, MasterVelocity * 3, 10000, 10000, 0, 0 );

 

//Film Transport Axis

//Monitor registration marks and make adjustments to FilmTransport Axis

Inst_MC_TouchProbe( TRUE, VirtualMaster, TriggerRef, FALSE, 0, 0 );

IF Inst_MC_TouchProbe.Done THEN

   RegistrationMarkPos := Inst_MC_TouchProbe.RecordedPosition;

   Inst_MC_TouchProbe( FALSE, VirtualMaster, TriggerRef, FALSE, 0, 0 );

   Inst_MC_TouchProbe( TRUE, VirtualMaster, TriggerRef, FALSE, 0, 0 ); //Rearm for next registration mark

 

IF RegistrationMarkPos > OpenWindowPos AND RegistrationMarkPos < CloseWindowPos THEN //Check if mark was within good window

IF RegistrationMarkPos < ReferencePos THEN //Check if phase forward or backward is required

         Adjustment := ReferencePos-RegistrationMarkPos;

ELSE

         Adjustment := ReferencePos-RegistrationMarkPos;

END_IF;

      NewMarkHit := TRUE;

END_IF;

END_IF;

 

IF NewMarkHit AND ActPosVirtualMaster > 180 AND ActPosVirtualMaster < 250 THEN //Do not make adjustment during sealing process

   Inst_MC_MoveSuperimp( FALSE, FilmTransport, Adjustment, MasterVelocity*3, 10000, 10000, 0, 0 );

   Inst_MC_MoveSuperimp( TRUE, FilmTransport, Adjustment, MasterVelocity*3, 10000, 10000, 0, 0 );

   NewMarkHit := FALSE;

END_IF;

 

 

//Flying Shear

ON ActPosVirtualMaster < 10 DO

   Inst_MC_CamIn2( FALSE, VirtualMaster, FlyingShear, ShearStartPosition, 0, 360, 360, 0, ProfileIDFlyingShear, 0 );

END_DO;

 

Inst_MC_CamIn2( TRUE, VirtualMaster, FlyingShear, ShearStartPosition, 0, 360, 360, 0, ProfileIDFlyingShear, 0 );

 

 

//Sealing Bar

ON ActPosVirtualMaster < 10 DO

   Inst_MC_CamIn1( FALSE, VirtualMaster, SealingJaw, ShearStartPosition, 0, 360, 360, 0, ProfileIDSealingScrew, 0 );

END_DO;

 

Inst_MC_CamIn1( TRUE, VirtualMaster, SealingJaw, ShearStartPosition, 0, 360, 360, 0, ProfileIDSealingScrew, 0 );

 

ON ActPosVirtualMaster > (80 + ShearStartPosition) DO

   Inst_TON( FALSE, SealTime );

END_DO;

 

Inst_TON( TRUE, SealTime );

ON Inst_TON.Q DO

   Inst_MC_MoveSuperimp1( FALSE, SealingJaw, -180, MasterVelocity*4, 10000, 10000, 0, 0 );

   Inst_MC_MoveSuperimp1( TRUE, SealingJaw, -180, MasterVelocity*4, 10000, 10000, 0, 0 );

END_DO;

 

END_CASE;

Operator Panel

The Kollmorgen Automation Suite (KAS) program for this application module has an internal operator panel. The operator panel is used to set the desired values for each product and to start and stop the machine. The specific entries are described in the axis sections above. Below is a screen print of the operator panel.