Robocoaster
Member
Hi everyone, I'm newbie at here.I need to help.Can you share your experience to me?
The scheme is as at picture.
The robot is palletizing at conveyor 1 and then send to me palletcompletedbit. After, ı must move this pallet to conveyor 2 with plc code. Also my customer want to run conveyors manually via buttons.
My code is :
[/ladder][/code]
timer_conv2empty(in:=,pt:=t#20s);
CASE MachineMode OF
Man:
StateAuto:=0;
StateConv1:=0;
StateConv2:=0;
IF AlarmStatus THEN
StateMan:=99;
END_IF
IF StateMan=0 AND bttnMode_RTRIG.Q THEN
MachineMode:=Auto;
END_IF
CASE StateMan OF
0: (*Manual control*)
IF bttnConveyor1 THEN
IF NOT in_Sensor1 THEN
out_Conveyor1:=TRUE;
ELSE
out_Conveyor1:=FALSE;
END_IF
END_IF
IF bttnConveyor2 THEN
IF NOT in_Sensor2 THEN
out_Conveyor2:=TRUE;
ELSE
out_Conveyor2:=FALSE;
END_IF
END_IF
IF bttnConveyorTransfer THEN
IF NOT in_Sensor2 THEN
out_Conveyor1:=TRUE;
out_Conveyor2:=TRUE;
ELSE
out_Conveyor1:=FALSE;
out_Conveyor2:=FALSE;
END_IF
END_IF
IF NOT bttnConveyor1 AND NOT bttnConveyorTransfer THEN
out_Conveyor1:=FALSE;
END_IF
IF NOT bttnConveyor2 AND NOT bttnConveyorTransfer THEN
out_Conveyor2:=FALSE;
END_IF
99: (*Alarm*)
out_Conveyor1:=FALSE;
out_Conveyor2:=FALSE;
IF NOT AlarmStatus THEN
StateMan:=0;
END_IF
END_IF
END_CASE;
Auto:
StateMan:=0;
IF AlarmStatus THEN
StateMan:=99;
END_IF
IF (StateAuto=0 OR StateAuto=99) AND bttnMode_RTRIG.Q THEN
MachineMode:=Man;
END_IF
CASE StateAuto OF
0: (*Stop*)
out_Conveyor1:=FALSE;
out_Conveyor2:=FALSE;
IF in_StartButton_RTRIG.Q THEN
StateAuto:=1;
END_IF
1: (*Running*)
IF in_StopButton_RTRIG.Q THEN
StateAuto:=0;
END_IF
CASE StateConv1 OF
0: (*initial*)
out_Conveyor1:=FALSE;
IF NOT in_Sensor1 THEN
StateConv1:=1;
ELSE
StateConv1:=2;
END_IF
1: (*conveyor empty*)
IF palletcompletedbit THEN
out_Conveyor1:=TRUE;
ELSE
out_Conveyor1:=FALSE;
END_IF
IF out_Conveyor1 AND in_Sensor1 THEN
StateConv1:=2;
END_IF
2: (*conveyor loaded*)
IF StateConv2=1 THEN
out_Conveyor1:=TRUE;
ELSE
out_Conveyor1:=FALSE;
END_IF
IF NOT in_Sensor1 AND in_Sensor2 THEN
StateConv1:=1;
END_IF
END_CASE;
CASE StateConv2 OF
0: (*initial*)
out_Conveyor2:=FALSE;
IF NOT in_Sensor2 THEN
StateConv2:=1;
ELSE
StateConv2:=2;
END_IF
1: (*conveyor empty*)
IF StateConv2=2 THEN
out_Conveyor2:=TRUE;
ELSE
out_Conveyor2:=FALSE;
END_IF
IF out_Conveyor2 AND in_Sensor2 THEN
StateConv2:=2;
END_IF
2: (*conveyor loaded*)
timer_conv2empty.IN:=NOT in_Sensor2 ;
IF timer_conv2empty.Q THEN
StateConv2:=1;
END_IF
END_CASE;
99: (*Alarm*)
out_Conveyor1:=FALSE;
out_Conveyor2:=FALSE;
IF NOT AlarmStatus THEN
StateAuto:=0;
END_IF
END_CASE;
END_CASE;
The scheme is as at picture.
The robot is palletizing at conveyor 1 and then send to me palletcompletedbit. After, ı must move this pallet to conveyor 2 with plc code. Also my customer want to run conveyors manually via buttons.
My code is :
[/ladder][/code]
timer_conv2empty(in:=,pt:=t#20s);
CASE MachineMode OF
Man:
StateAuto:=0;
StateConv1:=0;
StateConv2:=0;
IF AlarmStatus THEN
StateMan:=99;
END_IF
IF StateMan=0 AND bttnMode_RTRIG.Q THEN
MachineMode:=Auto;
END_IF
CASE StateMan OF
0: (*Manual control*)
IF bttnConveyor1 THEN
IF NOT in_Sensor1 THEN
out_Conveyor1:=TRUE;
ELSE
out_Conveyor1:=FALSE;
END_IF
END_IF
IF bttnConveyor2 THEN
IF NOT in_Sensor2 THEN
out_Conveyor2:=TRUE;
ELSE
out_Conveyor2:=FALSE;
END_IF
END_IF
IF bttnConveyorTransfer THEN
IF NOT in_Sensor2 THEN
out_Conveyor1:=TRUE;
out_Conveyor2:=TRUE;
ELSE
out_Conveyor1:=FALSE;
out_Conveyor2:=FALSE;
END_IF
END_IF
IF NOT bttnConveyor1 AND NOT bttnConveyorTransfer THEN
out_Conveyor1:=FALSE;
END_IF
IF NOT bttnConveyor2 AND NOT bttnConveyorTransfer THEN
out_Conveyor2:=FALSE;
END_IF
99: (*Alarm*)
out_Conveyor1:=FALSE;
out_Conveyor2:=FALSE;
IF NOT AlarmStatus THEN
StateMan:=0;
END_IF
END_IF
END_CASE;
Auto:
StateMan:=0;
IF AlarmStatus THEN
StateMan:=99;
END_IF
IF (StateAuto=0 OR StateAuto=99) AND bttnMode_RTRIG.Q THEN
MachineMode:=Man;
END_IF
CASE StateAuto OF
0: (*Stop*)
out_Conveyor1:=FALSE;
out_Conveyor2:=FALSE;
IF in_StartButton_RTRIG.Q THEN
StateAuto:=1;
END_IF
1: (*Running*)
IF in_StopButton_RTRIG.Q THEN
StateAuto:=0;
END_IF
CASE StateConv1 OF
0: (*initial*)
out_Conveyor1:=FALSE;
IF NOT in_Sensor1 THEN
StateConv1:=1;
ELSE
StateConv1:=2;
END_IF
1: (*conveyor empty*)
IF palletcompletedbit THEN
out_Conveyor1:=TRUE;
ELSE
out_Conveyor1:=FALSE;
END_IF
IF out_Conveyor1 AND in_Sensor1 THEN
StateConv1:=2;
END_IF
2: (*conveyor loaded*)
IF StateConv2=1 THEN
out_Conveyor1:=TRUE;
ELSE
out_Conveyor1:=FALSE;
END_IF
IF NOT in_Sensor1 AND in_Sensor2 THEN
StateConv1:=1;
END_IF
END_CASE;
CASE StateConv2 OF
0: (*initial*)
out_Conveyor2:=FALSE;
IF NOT in_Sensor2 THEN
StateConv2:=1;
ELSE
StateConv2:=2;
END_IF
1: (*conveyor empty*)
IF StateConv2=2 THEN
out_Conveyor2:=TRUE;
ELSE
out_Conveyor2:=FALSE;
END_IF
IF out_Conveyor2 AND in_Sensor2 THEN
StateConv2:=2;
END_IF
2: (*conveyor loaded*)
timer_conv2empty.IN:=NOT in_Sensor2 ;
IF timer_conv2empty.Q THEN
StateConv2:=1;
END_IF
END_CASE;
99: (*Alarm*)
out_Conveyor1:=FALSE;
out_Conveyor2:=FALSE;
IF NOT AlarmStatus THEN
StateAuto:=0;
END_IF
END_CASE;
END_CASE;
Code:
[ladder]
What should I do if the pallet stays between the sensors?
What should I do if the sensors are triggered incorrectly?
thank you for reply
Last edited: