Obsidean_VM/04-InLavoro/HENKEL/93040 - HENKEL - BowlingGreen/9.3976 - Interlock FormatCh.../9.3976 - Prohibit simultane...

8.7 KiB


The PLC supervisor waits for a request from Q2 to Q4 for permission to change the format. If there are no requests at that time, the permission is granted to the first Qx system that requests it. Subsequently, if more Qx systems request this permission, they are granted in order from TL21 to TL27, from Q2 to Q4. These permissions are sent through the Q1 systems, which then transmit the information from PLC Q2 to Q4. In the HMI of each Qx system, once the new format has been loaded (as is always done), a popup message will appear indicating that permission for the EMD format change has been requested and detailing which line has been granted permission in case another line is undergoing a format change at that moment. This popup message allows, with a TEC password, to bypass and start the format change without having to wait for permission from the PLC supervisor.

PLC Read Write
Q2 "FromQ1_D".STW_Q1.X12/X13/X14/X15 ->Q1 : "ToQ1_D".STW.QE.X16
Q3 "FromQ1_D".STW_Q1.X12/X13/X14/X15 ->Q1 : "ToQ1_D".STW.QE.X16
Q4 "FromQ1_D".STW_Q1.X12/X13/X14/X15 ->Q1 : "ToQ1_D".STW.QE.X16
SV "TL23_ReadData_D".FromQ1.ToSV.STW.QE2.X16 "TL23_WriteData_D".ToQ1.FromSV.STW.X06 / X07 / X08 / X09 the Line that is Changing
"TL23_ReadData_D".FromQ1.ToSV.STW.QE3.X16
"TL23_ReadData_D".FromQ1.ToSV.STW.QE4.X16
Q1 SV->"ComSV".TL23_ReadFromSv.FromSV.STW.X06 / X07 / X08 / X09 "ToQ2_D".STW_Q1.X12 / X13 / X14 / X15
Line Bits Communication Q1-Qx
TL21 X13-X16
TL22 ==X12-X15==
TL23 X13-X16
TL25 X13-X16
TL26 ==X12-X15==
TL27 X13-X16

The logic will be like this:


  • The SV will wait until one of the TL_2x_ReadData...QEx is set this indicates that this Q want to change Format
  • If the SV has no other Q changing at this moment then it will set the binary number of this Q on the X06,X07,X08,X09
  • Every Q1 will copy the bits from the SV to every Qx : X06 -> X12 , X07 -> X13 , X08 -> X14 , X09 -> X15
  • When a Qx wants to start the change it will set the bit "ToQ1_D".STW.QE.X16 then will wait until the combination of X12/X13/X14/X15 match to this Q when it match it will start the change if for any reason this number changes the change will be paused.
  • When the Qx finish it will reset the "ToQ1_D".STW.QE.X16 .
  • Every Q1 after some time will reset the "ToQ1_D".STW.QE.X16 bit
  • The SV after some timeout will ignore the TL_2x_ReadData...QEx and change to the next waiting
  • Every Qx will have a popup telling the status:
    • Actual change format is granted to: XX
    • Pushbutton to bypass and to start the change.

On the Supervisor PLC


Was created the FC1104 / DB1104

To monitor and administer the accepted line that can start the changeover

//
//If at the moment there are not EMD changeing in progress
// We check all lines that are requesting to start changeing
// if we found one this Line is assigned to the "DB_Monitoring_Interlock"."Q Line Acepted"
// This enable this line to start the changeover
// 
IF  "DB_Monitoring_Interlock"."Q Line Acepted" = #No_EMD_Change_Active THEN
    IF "DB_Monitoring_Interlock".EMD_Request["DB_Monitoring_Interlock"."Q Line Turn"] THEN
        // Check if this request is not in timeout
        IF NOT "DB_Monitoring_Interlock".TimeOut_EMD_Request["DB_Monitoring_Interlock"."Q Line Turn"] THEN
            // The Slot_Actual can start the changeover
            "DB_Monitoring_Interlock"."Q Line Acepted" := "DB_Monitoring_Interlock"."Q Line Turn";
        END_IF;
    ELSE
        // Clear timeouts after the Request goes to false
        "DB_Monitoring_Interlock".TimeOut_EMD_Request["DB_Monitoring_Interlock"."Q Line Turn"] := FALSE;
    END_IF;
ELSE
    IF NOT "DB_Monitoring_Interlock".EMD_Request["DB_Monitoring_Interlock"."Q Line Turn"] OR "DB_Monitoring_Interlock".TimeOut_EMD_Request["DB_Monitoring_Interlock"."Q Line Turn"] THEN
        "DB_Monitoring_Interlock"."Q Line Acepted" := #No_EMD_Change_Active;
    END_IF;
END_IF;

IF "DB_Monitoring_Interlock".Timers[0].Q THEN
    "DB_Monitoring_Interlock"."Q Line Acepted" := #No_EMD_Change_Active;
END_IF;

After made the selection we pass the accepted line to all lines:

"TL21_WriteData_D".ToQ1.FromSV.STW.X06 := "DB_Monitoring_Interlock"."Q Line Acepted".%X0;
"TL21_WriteData_D".ToQ1.FromSV.STW.X07 := "DB_Monitoring_Interlock"."Q Line Acepted".%X1;
"TL21_WriteData_D".ToQ1.FromSV.STW.X08 := "DB_Monitoring_Interlock"."Q Line Acepted".%X2;
"TL21_WriteData_D".ToQ1.FromSV.STW.X09 := "DB_Monitoring_Interlock"."Q Line Acepted".%X3;
"TL22_WriteData_D".ToQ1.FromSV.STW.X06 := "DB_Monitoring_Interlock"."Q Line Acepted".%X0;
"TL22_WriteData_D".ToQ1.FromSV.STW.X07 := "DB_Monitoring_Interlock"."Q Line Acepted".%X1;
"TL22_WriteData_D".ToQ1.FromSV.STW.X08 := "DB_Monitoring_Interlock"."Q Line Acepted".%X2;
"TL22_WriteData_D".ToQ1.FromSV.STW.X09 := "DB_Monitoring_Interlock"."Q Line Acepted".%X3;
"TL23_WriteData_D".ToQ1.FromSV.STW.X06 := "DB_Monitoring_Interlock"."Q Line Acepted".%X0;
"TL23_WriteData_D".ToQ1.FromSV.STW.X07 := "DB_Monitoring_Interlock"."Q Line Acepted".%X1;
"TL23_WriteData_D".ToQ1.FromSV.STW.X08 := "DB_Monitoring_Interlock"."Q Line Acepted".%X2;
"TL23_WriteData_D".ToQ1.FromSV.STW.X09 := "DB_Monitoring_Interlock"."Q Line Acepted".%X3;
"TL25_WriteData_D".ToQ1.FromSV.STW.X06 := "DB_Monitoring_Interlock"."Q Line Acepted".%X0;
"TL25_WriteData_D".ToQ1.FromSV.STW.X07 := "DB_Monitoring_Interlock"."Q Line Acepted".%X1;
"TL25_WriteData_D".ToQ1.FromSV.STW.X08 := "DB_Monitoring_Interlock"."Q Line Acepted".%X2;
"TL25_WriteData_D".ToQ1.FromSV.STW.X09 := "DB_Monitoring_Interlock"."Q Line Acepted".%X3;
"TL26_WriteData_D".ToQ1.FromSV.STW.X06 := "DB_Monitoring_Interlock"."Q Line Acepted".%X0;
"TL26_WriteData_D".ToQ1.FromSV.STW.X07 := "DB_Monitoring_Interlock"."Q Line Acepted".%X1;
"TL26_WriteData_D".ToQ1.FromSV.STW.X08 := "DB_Monitoring_Interlock"."Q Line Acepted".%X2;
"TL26_WriteData_D".ToQ1.FromSV.STW.X09 := "DB_Monitoring_Interlock"."Q Line Acepted".%X3;
"TL27_WriteData_D".ToQ1.FromSV.STW.X06 := "DB_Monitoring_Interlock"."Q Line Acepted".%X0;
"TL27_WriteData_D".ToQ1.FromSV.STW.X07 := "DB_Monitoring_Interlock"."Q Line Acepted".%X1;
"TL27_WriteData_D".ToQ1.FromSV.STW.X08 := "DB_Monitoring_Interlock"."Q Line Acepted".%X2;
"TL27_WriteData_D".ToQ1.FromSV.STW.X09 := "DB_Monitoring_Interlock"."Q Line Acepted".%X3;

Every Q1:


On FC380 we need to pass the actual line acepted:

"ToQ2_D".STW_Q1.X12 := "ComSV".TL21_ReadFromSv.FromSV.STW.X06;
"ToQ2_D".STW_Q1.X13 := "ComSV".TL21_ReadFromSv.FromSV.STW.X07;
"ToQ2_D".STW_Q1.X14 := "ComSV".TL21_ReadFromSv.FromSV.STW.X08;
"ToQ2_D".STW_Q1.X15 := "ComSV".TL21_ReadFromSv.FromSV.STW.X09;

"ToQ3_D".STW_Q1.X12 := "ComSV".TL21_ReadFromSv.FromSV.STW.X06;
"ToQ3_D".STW_Q1.X13 := "ComSV".TL21_ReadFromSv.FromSV.STW.X07;
"ToQ3_D".STW_Q1.X14 := "ComSV".TL21_ReadFromSv.FromSV.STW.X08;
"ToQ3_D".STW_Q1.X15 := "ComSV".TL21_ReadFromSv.FromSV.STW.X09;

"ToQ4_D".STW_Q1.X12 := "ComSV".TL21_ReadFromSv.FromSV.STW.X06;
"ToQ4_D".STW_Q1.X13 := "ComSV".TL21_ReadFromSv.FromSV.STW.X07;
"ToQ4_D".STW_Q1.X14 := "ComSV".TL21_ReadFromSv.FromSV.STW.X08;
"ToQ4_D".STW_Q1.X15 := "ComSV".TL21_ReadFromSv.FromSV.STW.X09;

On Q2/Q3/Q4:


  • Created FB EMD Interlock to manage the Request and the habilitation con change the EMD guides
FB222 / FB223 / FB224

!Pasted image 20240327135451.png

!Pasted image 20240327174825.png

On HMI Q2/Q3/Q4 :


New Tags: !Pasted image 20240328134031.png

New List text: !Pasted image 20240328134059.png

New PopUp:


!Pasted image 20240328134226.png

New Button:


!Pasted image 20240328142407.png

!Pasted image 20240328142651.png

!Pasted image 20240328142707.png