$Name ! Obj_Source ;Combined safety system for M-building, V-building, KC-building and test system #Include ! Id_Pluto_B42_ASi:3=000014732E6F ! Id_Pluto_B42_ASi:4=00001482CA46 ! Id_Pluto_B42_ASi:10=0000147245FA ! Id_Pluto_B42_ASi:11=00001473066A ! Id_Pluto_B42_ASi:12=0000147306B2 ! Can_Baud=400 ! GM3.0=P3_M_EStop ; Emergency stop triggered @P3 ! GM3.1=P3_M_ESall ; Emergency buttons released @P3 ! GM3.2=P3_M_CellA_Safe ; ! GM4.0=P4_M_EStop ; Emergency stop triggered @P4 ! GM4.1=P4_M_ESall ; Emergency buttons released @P4 ! GM4.2=P4_M_CellA_Safe ; ! GM4.3=P4_M_CellB_Safe ; ! GM4.4=P4_M_CellC_Safe ; ! GM10.0=P10_Off ; ! GM10.1=P10_MStop ; ! GM10.2=P10_Man ; ! GM10.3=P10_Man100 ; ! GM10.4=P10_Auto ; ! GM10.5=P10_at_Test_A ; ! GM10.6=P10_at_P4_C ; ! GM10.7=P10_at_Standalone ; ! GM11.0=P11_Off ; ! GM11.1=P11_MStop ; ! GM11.2=P11_Man ; ! GM11.3=P11_Man100 ; ! GM11.4=P11_Auto ; ! GM11.5=P11_at_P4_C ; ! GM11.6=P11_at_Test_A ; ! GM11.7=P11_at_Standalone ; ! GM12.0=P12_Off ; ! GM12.1=P12_MStop ; ! GM12.2=P12_Man ; ! GM12.3=P12_Man100 ; ! GM12.4=P12_Auto ; ! GM12.5=P12_at_P4_B ; ! GM12.6=P12_at_Test_A ; ! GM12.7=P12_at_Standalone ; ! Pgm_Pluto:3,Master ! Instruction_Set_3 ! ASi_Optimize=Stoptime ;Master Pluto for test system ! ASI3.1,1,S-7.B.0,0,Safe,1 ! ASI3.2,1,S-7.B.0,0,Safe,1 ! ASI3.10,4,S-7.B.E,F,Safe,1 ! ASI3.20,7,S-7.A.7,7,CombinedTransaction_A ! M3.0=P3_ESall ; ! M3.1=P3_EStop ; ! M3.2=P3_ESReset1 ; ! M3.3=P3_ESReset2 ; ! M3.4=P3_ESReset ; ! M3.5=P3_ESReset1Ind ; ! M3.6=P3_A_Man ; ! M3.7=P3_A_Auto ; ! ASI3.1=P3_ES1 ; ! ASI3.2=P3_ES2 ; ! ASI3.3=P3_ES3 ; ! ASI3.10=P3_LC1 ;Light Curtain 1 ! ASI3.10.2=P3_Urax1_2 ; ! ASI3.10.3=P3_Urax1_3 ; ! ASI3.10.4=P3_Urax1_4 ; ! ASI3.10.1=P3_Urax1_1 ; ! ASI3.20.1=P3_BihlI1_1 ; ! ASI3.20.2=P3_Reset_1 ; ! ASI3.20.4=P3_Reset_2 ; ! ASI3.20.3=P3_BihlI1_3 ; ! ASQ3.1.1=P3_Estop_1_red ; ! ASQ3.1.2=P3_Estop_1_green ; ! ASQ3.2.1=P3_Estop_2_red ; ! ASQ3.2.2=P3_Estop_2_green ; ! ASQ3.3.2=P3_EStop3_green ; ! ASQ3.3.1=P3_EStop3_red ; ! ASQ3.10.4=P3_UraxQ1_4 ; ! ASQ3.10.2=P3_UraxQ1_2 ; ! ASQ3.20.3=P3_Q_Test_A_Yellow ; ! ASQ3.20.4=P3_Q_Test_A_Green ; ! ASQ3.20.1=P3_Q_Test_A_Reset ; ! ASQ3.20.2=P3_Q_Test_A_Red ; S3.0_0 P3_M_ESall=P3_ES1*P3_ES2 ;All local emergency stop buttons P3_ESall=(P3_M_ESall+/SM_Pluto3_Present)*(P4_M_ESall+/SM_Pluto4_Present) ;All connected emergency stop buttons P3_M_EStop=Reset2T(P3_ESall,P3_ESReset,P3_ESall,0) ;Emergency stop for this master P3_EStop=(P3_M_EStop+/SM_Pluto3_Present)*(P4_M_EStop+/SM_Pluto4_Present) ;AUTO: P3_EStop=AND{P*_M_EStop,({0}+/SM_Pluto{pluto}_Present)} P3_ESReset=PreReset1(P3_ESReset1*P3_ESReset2,1s00,P3_ESall) ;Trigger when all reset buttons are pushed P3_ESReset1=Reset2T(P3_ESall,P3_Reset_1,P3_ESall,P3_Q_Test_A_Reset) ;Emergency stop resets P3_ESReset2=Reset2T(P3_ESall,P3_Reset_2,P3_ESall,P3_UraxQ1_2) P3_Estop_1_green=P3_EStop+P3_ESall*SM_Flash ;Emergency stop lights P3_Estop_1_red=P3_ES1*/P3_ESall+(/P3_ES1+/P3_EStop*P3_ESall)*/SM_Flash P3_Estop_2_green=P3_EStop+P3_ESall*SM_Flash P3_Estop_2_red=P3_ES2*/P3_ESall+(/P3_ES2+/P3_EStop*P3_ESall)*/SM_Flash P3_M_CellA_Safe=P3_LC1 ;Cell safety P3_A_Auto=P10_at_Test_A*P10_Auto P3_A_Man=P10_at_Test_A*(P10_Man+P10_Man100)*/P3_A_Auto P3_Q_Test_A_Yellow=P3_A_Man*(P3_EStop+/P3_EStop*SM_Flash) P3_Q_Test_A_Red=P3_A_Auto*(P3_EStop+/P3_EStop*SM_Flash) ; ; ! Pgm_Pluto:4,Master ! Instruction_Set_3 ! ASi_Optimize=Stoptime ;Old master Pluto for M-building ! Q4.27,Static ! ASI4.3,1,S-7.B.0,0,Safe,1 ! ASI4.4,1,S-7.B.0,0,Safe,1 ! ASI4.5,1,S-7.B.0,0,Safe,1 ! ASI4.6,4,S-7.B.E,F,Safe[Urax D1R],0 ! ASI4.7,4,S-7.B.E,F,Safe[Urax D1R],0 ! ASI4.8,4,S-7.B.E,F,Safe[Urax D1R],0 ! ASI4.9,1,S-7.B.E,F,Safe,1 ! ASI4.10,1,S-7.B.E,F,Safe,1 ! ASI4.11,1,S-7.B.E,F,Safe,1 ! ASI4.12,1,S-7.B.E,F,Safe,1 ! ASI4.13,1,S-7.B.E,F,Safe,1 ! ASI4.14,1,S-7.B.E,F,Safe,1 ! ASI4.15,15,S-7.B.E,F,Safe,1 ! ASI4.16,15,S-7.B.E,F,Safe,1 ! ASI4.17,15,S-7.B.E,F,Safe,1 ! ASI4.18,15,S-7.B.E,F,Safe,1 ! ASI4.30,7,S-7.A.7,7,CombinedTransaction_B ! ASI4.31,7,S-7.A.7,7,CombinedTransaction_A ! ASI4.31,7,S-7.A.7,7,CombinedTransaction_B ! Q4.27=P4_Extractorfan ; ! M4.0=P4_ESall ; ! M4.1=P4_EStop ; ! M4.2=P4_ESReset ; ! M4.3=P4_ESResetA ; ! M4.4=P4_ESResetA_Ind ; ! M4.5=P4_ESResetB ; ! M4.6=P4_ESResetB_Ind ; ! M4.7=P4_ESResetC ; ! M4.8=P4_ESResetC_Ind ; ! M4.9=P4_BeamA ; ! M4.10=P4_BeamA_Reset_Ind ; ! M4.11=P4_BeamB ; ! M4.12=P4_BeamB_Reset_Ind ; ! M4.13=P4_BeamC ; ! M4.14=P4_BeamC_Reset_Ind ; ! M4.15=P4_Wall_A ; ! M4.16=P4_Wall_AB ; ! M4.17=P4_Wall_BC ; ! M4.18=P4_Wall_C ; ! M4.19=P4_A_Auto ; ! M4.20=P4_B_Auto ; ! M4.21=P4_C_Auto ; ! ASI4.3=P4_ES1 ;Emergency stop button 1 ! ASI4.4=P4_ES2 ;Emergency stop button 2 ! ASI4.5=P4_ES3 ;Emergency stop button 3 ! ASI4.6=P4_I_BeamB ;Light grid Focus II cell B ! ASI4.7=P4_I_BeamC ;Light grid Focus II cell C ! ASI4.8=P4_I_BeamA ;Light grid Focus II cell A ! ASI4.9=P4_WBC1 ;Eden wall BC 1 ! ASI4.10=P4_WBC2 ;Eden wall BC 2 ! ASI4.11=P4_WBC3 ;Eden wall BC3 ! ASI4.12=P4_WAB1 ;Eden wall AB 1 ! ASI4.13=P4_WAB2 ;Eden wall AB 2 ! ASI4.14=P4_WAB3 ;Eden wall AB 3 ! ASI4.15=P4_WA1 ;Eden wall A 1 ! ASI4.16=P4_WA2 ;Eden wall A 2 ! ASI4.17=P4_WC1 ;Eden wall C 1 ! ASI4.18=P4_WC2 ;Eden wall C 2 ! ASI4.30B.3=P4_I_ResetA ; ! ASI4.31.3=P4_I_ResetB ; ! ASI4.31B.3=P4_I_ResetC ; ! ASQ4.3.1=P4_EStop_1_red ; ! ASQ4.3.2=P4_Estop_1_green ; ! ASQ4.4.1=P4_Estop_2_red ; ! ASQ4.4.2=P4_Estop_2_green ; ! ASQ4.5.1=P4_Estop_3_red ; ! ASQ4.5.2=P4_Estop_3_green ; ! ASQ4.30B.1=P4_Reset_lamp_A ; ! ASQ4.30B.2=P4_A_red ; ! ASQ4.30B.3=P4_A_orange ; ! ASQ4.30B.4=P4_A_green ; ! ASQ4.31.1=P4_Reset_lamp_B ; ! ASQ4.31.2=P4_B_red ; ! ASQ4.31.3=P4_B_orange ; ! ASQ4.31.4=P4_B_green ; ! ASQ4.31B.1=P4_Reset_lamp_C ; ! ASQ4.31B.2=P4_C_red ; ! ASQ4.31B.3=P4_C_orange ; ! ASQ4.31B.4=P4_C_green ; S4.0_0 P4_M_ESall=P4_ES1*P4_ES2*P4_ES3 ;All emergency stops P4_ESall=(P3_M_ESall+/SM_Pluto3_Present)*(P4_M_ESall+/SM_Pluto4_Present) ;AUTO: P4_ESall=AND{P*_M_ESall,({0}+/SM_Pluto{pluto}_Present)} P4_M_EStop=Reset2T(P4_ESall,P4_ESReset,P4_ESall,0) ;Emergency stop for this master P4_EStop=(P3_M_EStop+/SM_Pluto3_Present)*(P4_M_EStop+/SM_Pluto4_Present) ;AUTO: P4_EStop=AND{P*_M_EStop,({0}+/SM_Pluto{pluto}_Present)} P4_ESReset=PreReset1(P4_ESResetA*P4_ESResetB*P4_ESResetC,1s00,P4_ESall) ;Trigger when all reset buttons are pushed P4_ESResetA=Reset2T(P4_ESall,P4_I_ResetA,1,P4_ESResetA_Ind) ;Cell emergency resets P4_ESResetB=Reset2T(P4_ESall,P4_I_ResetB,1,P4_ESResetB_Ind) P4_ESResetC=Reset2T(P4_ESall,P4_I_ResetC,1,P4_ESResetC_Ind) P4_Estop_1_green=P4_EStop+P4_ESall*SM_Flash ;Emergency stop lights P4_Estop_1_red=P4_ES1*/P4_ESall+(/P4_ES1+/P4_EStop*P4_ESall)*/SM_Flash P4_Estop_2_green=P4_EStop+P4_ESall*SM_Flash P4_Estop_2_red=P4_ES2*/P4_ESall+(/P4_ES2+/P4_EStop*P4_ESall)*/SM_Flash P4_Estop_3_green=P4_EStop+P4_ESall*SM_Flash P4_Estop_3_red=P4_ES3*/P4_ESall+(/P4_ES3+/P4_EStop*P4_ESall)*/SM_Flash P4_B_Auto=P12_at_P4_B*/P12_Off*/P12_MStop*P12_Auto P4_C_Auto=P10_at_P4_C*/P10_Off*/P10_MStop*P10_Auto+P11_at_P4_C*/P11_Off*/P11_MStop*P11_Auto P4_BeamA=Reset2T(P4_EStop*P4_A_Auto*P4_I_BeamA,P4_I_ResetA,1,P4_BeamA_Reset_Ind) ;Lightbeams P4_Reset_lamp_A=P4_ESResetA_Ind+P4_EStop*P4_A_Auto*P4_BeamA_Reset_Ind P4_BeamB=Reset2T(P4_EStop*P4_B_Auto*P4_I_BeamB,P4_I_ResetB,1,P4_BeamB_Reset_Ind) P4_Reset_lamp_B=P4_ESResetB_Ind+P4_EStop*P4_B_Auto*P4_BeamB_Reset_Ind P4_BeamC=Reset2T(P4_EStop*P4_C_Auto*P4_I_BeamC,P4_I_ResetC,1,P4_BeamC_Reset_Ind) P4_Reset_lamp_C=P4_ESResetC_Ind+P4_EStop*P4_C_Auto*P4_BeamC_Reset_Ind P4_Wall_A=P4_WA1*P4_WA2 ;Safety walls P4_Wall_AB=P4_WAB1*P4_WAB2*P4_WAB3 P4_Wall_BC=P4_WBC1*P4_WBC2*P4_WBC3 P4_Wall_C=P4_WC1*P4_WC2 P4_M_CellA_Safe=P4_Wall_A*P4_BeamA*(P4_Wall_AB+P4_BeamB*(P4_Wall_BC+P4_BeamC*P4_Wall_C)) P4_M_CellB_Safe=(P4_Wall_AB+P4_Wall_A*P4_BeamA)*P4_BeamB*(P4_Wall_BC+P4_BeamC*P4_Wall_C) P4_M_CellC_Safe=(P4_Wall_BC+(P4_Wall_AB+P4_Wall_A*P4_BeamA)*P4_BeamB)*P4_BeamC*P4_Wall_C P4_B_green=P12_at_P4_B*/P12_Off*(P12_MStop+P12_Man) ;Lighttower B green (unsafe) P4_B_orange=P12_at_P4_B*/P12_Off*/P12_MStop*(P12_Man+P12_Man100) ;Lighttower B orange (unsafe) P4_B_red=P4_B_Auto*(P4_M_CellB_Safe+SM_Flash) ;Lighttower B red (unsafe) P4_C_green=P10_at_P4_C*/P10_Off*(P10_MStop+P10_Man)+P11_at_P4_C*/P11_Off*(P11_MStop+P11_Man) ;Lighttower C green (unsafe) P4_C_orange=P10_at_P4_C*/P10_Off*/P10_MStop*(P10_Man+P10_Man100)+P11_at_P4_C*/P11_Off*/P11_MStop*(P11_Man+P11_Man100) ;Lighttower C orange (unsafe) P4_C_red=P4_C_Auto*(P4_M_CellC_Safe+SM_Flash) ;Lighttower C red (unsafe) ! Pgm_Pluto:10,ASi_Not_Used ! Instruction_Set_3 ! ASi_Optimize=Stoptime ;IRB120 Pluto (currently in test system)) ! I10.30,A_Pulse ! I10.31,A_Pulse ! I10.42,A_Pulse,Non_Inv ! I10.43,B_Pulse,Non_Inv ! I10.44,A_Pulse,Non_Inv ! I10.45,B_Pulse,Non_Inv ! I10.46,A_Pulse,Non_Inv ! I10.47,B_Pulse,Non_Inv ! Q10.10,A_Pulse ! Q10.11,B_Pulse ! IQ10.12,Status_Bus,5ms,1..2 ! I10.30=P10_Location_1 ; ! I10.31=P10_Location_2 ; ! I10.36=P10_Estop_D3 ; ! I10.37=P10_Estop_D4 ; ! I10.40=P10_Estop_D1 ; ! I10.41=P10_Estop_D2 ; ! I10.42=P10_Auto_A ; ! I10.43=P10_Auto_B ; ! I10.44=P10_Man_A ; ! I10.45=P10_Man_B ; ! I10.46=P10_Man100_A ; ! I10.47=P10_Man100_B ; ! Q10.0=P10_ES1 ;Robot Emergency stop 1 ! Q10.1=P10_ES2 ;Robot Emergency stop 2 ! M10.0=P10_EStop ; ! M10.6=P10_ES ; S10.0_0 P10_Man=ModeSelect8(P10_Man_A*P10_Man_B,P10_Man100_A*P10_Man100_B,P10_Auto_A*P10_Auto_B,0,0,0,0,0,P10_Man100,P10_Auto,0,0,0,0,0,0) ;Sanity checked mode P10_at_Test_A=ModeSelect8(SM_Pluto3_Present*P10_Location_1*/P10_Location_2,SM_Pluto4_Present*/P10_Location_1*P10_Location_2,/SM_Pluto3_Present*/P10_Location_1*/P10_Location_2,0,0,0,0,0,P10_at_P4_C,P10_at_Standalone,0,0,0,0,0,0) ;Sanity checked location P10_EStop=(P3_M_EStop+/SM_Pluto3_Present)*(P4_M_EStop+/SM_Pluto4_Present) ;AUTO: P10_EStop=AND{P*_M_EStop,({0}+/SM_Pluto{pluto}_Present)} P10_ES=P10_at_Standalone*(P10_Man+P10_Man100)+P10_EStop*(P10_Man+P10_Man100+P10_Auto*(P10_at_Test_A*P3_M_CellA_Safe+P10_at_P4_C*P4_M_CellC_Safe)) ;IRB120 emergency stop P10_ES1=P10_ES ;Estop Propagation P10_ES2=P10_ES ! Pgm_Pluto:11,ASi_Not_Used ! Instruction_Set_3 ! ASi_Optimize=Stoptime ;IRB140 pluto ! I11.30,A_Pulse ! I11.31,A_Pulse ! I11.36,Static ! I11.37,Static ! I11.40,Static ! I11.41,Static ! I11.42,A_Pulse,Non_Inv ! I11.43,B_Pulse,Non_Inv ! I11.44,A_Pulse,Non_Inv ! I11.45,B_Pulse,Non_Inv ! I11.46,A_Pulse,Non_Inv ! I11.47,B_Pulse,Non_Inv ! Q11.10,A_Pulse ! Q11.11,B_Pulse ! IQ11.12,Status_Bus,5ms,1..2 ! I11.30=P11_Location_1 ; ! I11.31=P11_Location_2 ; ! I11.36=P11_Estop_D3 ; ! I11.37=P11_Estop_D4 ; ! I11.40=P11_Estop_D1 ; ! I11.41=P11_Estop_D2 ; ! I11.42=P11_Auto_A ; ! I11.43=P11_Auto_B ; ! I11.44=P11_Man_A ; ! I11.45=P11_Man_B ; ! I11.46=P11_Man100_A ; ! I11.47=P11_Man100_B ; ! Q11.0=P11_ES1 ;Robot Emergency stop 1 ! Q11.1=P11_ES2 ;Robot Emergency stop 2 ! M11.0=P11_EStop ; ! M11.6=P11_ES ; S11.0_0 P11_Off=/P11_Estop_D1*/P11_Estop_D2*/P11_Estop_D3*/P11_Estop_D4 P11_MStop=/P11_Estop_D1*P11_Estop_D2*(P11_Estop_D3+/P11_ES)*/P11_Estop_D4 P11_Man=P11_Man_A*P11_Man_B P11_Man100=P11_Man100_A*P11_Man100_B P11_Auto=P11_Auto_A*P11_Auto_B P11_at_Test_A=ModeSelect8(SM_Pluto3_Present*P11_Location_1*/P11_Location_2,SM_Pluto4_Present,0,0,0,0,0,0,P11_at_P4_C,0,0,0,0,0,0,0) ;Sanity checked location P11_EStop=(P3_M_EStop+/SM_Pluto3_Present)*(P4_M_EStop+/SM_Pluto4_Present) ;AUTO: P11_EStop=AND{P*_M_EStop,({0}+/SM_Pluto{pluto}_Present)} P11_ES=P11_EStop*(P11_Man+P11_Man100+P11_at_P4_C*P4_M_CellC_Safe*P11_Auto) ;IRB120 emergency stop P11_ES1=P11_ES ;Estop Propagation P11_ES2=P11_ES ! Pgm_Pluto:12,ASi_Not_Used ! Instruction_Set_3 ! ASi_Optimize=Stoptime ;IRB 2400 pluto ! I12.30,A_Pulse ! I12.31,A_Pulse ! I12.36,Static ! I12.37,Static ! I12.40,Static ! I12.41,Static ! I12.42,A_Pulse,Non_Inv ! I12.43,B_Pulse,Non_Inv ! I12.44,A_Pulse,Non_Inv ! I12.45,B_Pulse,Non_Inv ! I12.46,A_Pulse,Non_Inv ! I12.47,B_Pulse,Non_Inv ! Q12.10,A_Pulse ! Q12.11,B_Pulse ! IQ12.12,Status_Bus,5ms,1..2 ! I12.30=P12_Location_1 ; ! I12.31=P12_Location_2 ; ! I12.36=P12_Estop_D3 ; ! I12.37=P12_Estop_D4 ; ! I12.40=P12_Estop_D1 ; ! I12.41=P12_Estop_D2 ; ! I12.42=P12_Auto_A ; ! I12.43=P12_Auto_B ; ! I12.44=P12_Man_A ; ! I12.45=P12_Man_B ; ! I12.46=P12_Man100_A ; ! I12.47=P12_Man100_B ; ! Q12.0=P12_ES1 ;Robot Emergency stop 1 ! Q12.1=P12_ES2 ;Robot Emergency stop 2 ! M12.0=P12_EStop ; ! M12.6=P12_ES ; S12.0_0 P12_Off=/P12_Estop_D1*/P12_Estop_D2*/P12_Estop_D3*/P12_Estop_D4 P12_MStop=/P12_Estop_D1*P12_Estop_D2*(P12_Estop_D3+/P12_ES)*/P12_Estop_D4 P12_Man=P12_Man_A*P12_Man_B P12_Man100=P12_Man100_A*P12_Man100_B P12_Auto=P12_Auto_A*P12_Auto_B P12_at_Test_A=ModeSelect8(SM_Pluto3_Present*P12_Location_1*/P12_Location_2,SM_Pluto4_Present,0,0,0,0,0,0,P12_at_P4_B,0,0,0,0,0,0,0) ;Sanity checked location P12_EStop=(P3_M_EStop+/SM_Pluto3_Present)*(P4_M_EStop+/SM_Pluto4_Present) ;AUTO: P12_EStop=AND{P*_M_EStop,({0}+/SM_Pluto{pluto}_Present)} P12_ES=P12_EStop*(P12_Man+P12_Man100+P12_at_P4_B*P4_M_CellB_Safe*P12_Auto) ;IRB120 emergency stop P12_ES1=P12_ES ;Estop Propagation P12_ES2=P12_ES