Proximity switches and possible issue

backendcode

Member
Join Date
Aug 2017
Location
brampton
Posts
249
Hello My PLC experts,

You guys have no idea, How comfortable I feel because of this forum! Currently, I am working as a Junior PLC and robotics programmer and I am the only person at my plant to take care of PLC or started taking care of PLC project because my company was outsourcing PLC project to automation company.

Anyways, I have a quick question.

You may know I am working on conveyor project and there are 6 conveyors with 6 individual motor for each conveyor. Part move from one conveyor to another conveyor and check the state of next conveyor and if there is part on next conveyor, part on current conveyor will stay until next conveyor will clear.

For example, conveyor 1 has part on it and conveyor 2 also have a part on it. Conveyor 1 will wait until conveyor 2 is clear. now imagine, someone came and lift up a part from conveyor 2 for a couple of secs and put it back. for those couple of second, conveyor 1 may think conveyor 2 is clear and start moving the part to conveyor 2. How can I by pass this condition? Should I use a timer? Currently, What I am doing is when there will be no part of next conveyor, don't start the current conveyor right away, wait for 5 seconds.

I attached my code pic and also external link to the PLC code!

https://ibb.co/hAVKm5


Thank you everyone!

TGIF

debounce_time.jpg
 
I would start by questioning the mode of operation.

so, why would someone want to take the part off conveyor 2 and then put it
back?

Is it an inspection point? if so, then give the operator a pushbutton to start the conveyor when/if he is finished, or a physical guard to say that if the operator is by the conveyor, do not start it.

If you put a timer on to say that conveyor 2 is empty, then start conveyor 1, that is fine, but you are making an assumption. Should parts move from Conv1 to Conv2 to Conv3 etc etc, or can they be offloaded at any point?
 
I would start by questioning the mode of operation.

so, why would someone want to take the part off conveyor 2 and then put it
back?

Is it an inspection point? if so, then give the operator a pushbutton to start the conveyor when/if he is finished, or a physical guard to say that if the operator is by the conveyor, do not start it.

If you put a timer on to say that conveyor 2 is empty, then start conveyor 1, that is fine, but you are making an assumption. Should parts move from Conv1 to Conv2 to Conv3 etc etc, or can they be offloaded at any point?

JohnCALDERWOOD,

This conveyor is for inspection team and 1 part will be on each conveyor. The guy who finishes the product will feed the part on this line and part will move from conveyor 1 to 2 to 3 until next conveyor is clear and 1 guy at the end of the conveyor line will inspect the part and take off on the skid but they might have to move on the line to do visual inspect of each part and they may lift up the part (You never know) and I don't want the situation where they lift up the part for 2 seconds and put it back and by that time part from the previous conveyor already comes in and now he or she got no space to put the part back to conveyor.

This can be possible to lift up the part on every conveyor (6 conveyors) and I don't think it is a good idea to put 6 push button on the individual conveyor!

Any other idea?

Thanks
 
This is just me being a curmudgeon, but I find myself annoyed when data is examined redundantly. There is no need to examine the .dn bit of a TON that is triggered only by the part present sensor and then examine the part present sensor. The .dn bit can't be true if the sensor isn't made. Don't get me wrong, your concept is fine, it just makes you look like a rookie.

EDIT: This does NOT apply to a retentive timer, of course.
 
Last edited:
This is just me being a curmudgeon, but I find myself annoyed when data is examined redundantly. There is no need to examine the .dn bit of a TON that is triggered only by the part present prox and then examine the part present prox. The .dn bit can't be true if the prox isn't made. Don't get me wrong, your concept is fine, it just makes you look like a rookie.

Hey AutoMax,
I really appreciate your time and advice.

You got me right and I am a rookie like everyone on this forum or earth as they were at one point in their career and I guess this is how you learn by having a conversation with expert people like you and some good advice make them pro and of course hands on experience.

Would you like to give some of your time to do it more professional and accurate way? I am not asking you to write a PLC program for me but what another way can be used to get the same result.

Thanks
 
This is just me being a curmudgeon, but I find myself annoyed when data is examined redundantly. There is no need to examine the .dn bit of a TON that is triggered only by the part present sensor and then examine the part present sensor. The .dn bit can't be true if the sensor isn't made. Don't get me wrong, your concept is fine, it just makes you look like a rookie.

EDIT: This does NOT apply to a retentive timer, of course.

I examine the .DN bit and then part present on sensor because let's say, at first conveyor where guy put the part and he placed the part on sensor and time get started and done bit is one after timer timed and a point where conveyor or motor was going to start he pick up the part to do something lets say he forget something and in that situation I don't want to keep the motor ON.
 
I examine the .DN bit and then part present on sensor because let's say, at first conveyor where guy put the part and he placed the part on sensor and time get started and done bit is one after timer timed and a point where conveyor or motor was going to start he pick up the part to do something lets say he forget something and in that situation I don't want to keep the motor ON.

I understand you're just learning, I was trying to help. Sorry if I came off as a jerk;)
My point is that the .dn bit will clear when the sensor is inactive, so there's no need to XIC both in the motor run rung.
 
This is going to seem like I'm contradicting myself, but if you want the conveyor to stop when the start sensor is not made, you do have to XIC it, but it needs to be outside of your sealing branch. Do you follow the difference? As the rung was originally written the two XIC instructions were redundant. If you want to break your latch by the sensor going low, it needs to be outside the branch, then it serves a purpose. Your latch is sealed in by the timer, and unsealed by instructions external to the latching branch.

Hope that wasn't too convoluted...
 
According to this link below
https://ibb.co/hAVKm5

If I will put my conveyor1. start_sensor out of the latch, when that sensor will go low/no part present, it will turn off the motor (conveyor1.motor_control) and my part will never reach to conveyor 2.
I want to stop the motor for conveyor 1 when conveyor1_stop_sensor (sensor on conveyor 2) made.

Can you please look into my question which I asked in this thread? I think we are going on different track in this conversation.

Thanks again
 
Ok, so you have entry and exit sensor? In an application like this, I typically assign four possible states for each conveyor- empty, part entering, part present, part exiting. You can just use 0-3 to represent the states. Then our state machine for each conveyor runs through states 0-3 in order and starts over at 0 (empty.) If an operator removes a part that is present (state two) without triggering state three (part leaving) the previous conveyor still thinks there is a part present and won't index.
The downside to this is the possibility of "ghosts." These can occur when a part is removed without properly cycling through the modes. Are you using an HMI? If so you can put status indicators and inputs to modify conveyor states on a maintenance screen.
 
Hello My PLC experts,

Should I use a timer? Currently, What I am doing is when there will be no part of next conveyor, don't start the current conveyor right away, wait for 5 seconds.

I attached my code pic and also external link to the PLC code!

Your code doesn't wait on the 2nd part. Instead of waiting five seconds after the first part is there, wait five second after the second part isn't there to start the conveyor.
 
Last edited:
Ok, so you have entry and exit sensor? In an application like this, I typically assign four possible states for each conveyor- empty, part entering, part present, part exiting. You can just use 0-3 to represent the states. Then our state machine for each conveyor runs through states 0-3 in order and starts over at 0 (empty.) If an operator removes a part that is present (state two) without triggering state three (part leaving) the previous conveyor still thinks there is a part present and won't index.
The downside to this is the possibility of "ghosts." These can occur when a part is removed without properly cycling through the modes. Are you using an HMI? If so you can put status indicators and inputs to modify conveyor states on a maintenance screen.

Holy!! you sound so realistic! I really like the idea of using 4 parameters of each conveyor (empty, entry, part_present, part exit) and if the condition doesn't match or follow the sequence, it won't index.

Awesome!

But the problem is I can't think of doing it by myself because I have no freakin idea where to start. I may think more about it and see if i can come with anything.

I do have entry sensor and entry sensor of next conveyor is exit sensor of the previous conveyor which means conveyor 2 entry sensor will be exit sensor of conveyor 1

Do you have any previous PLC code I can look into and get an idea about such application and how you mentioned about different parameters of each conveyor? I would be great help and eventually, I want to do it myself and I am not asking you to write code for me ( Inside me, I wish someone can do project for me hahaha joking)


Thanks again!
 
Your code does wait on the 2nd part. Instead of waiting five seconds after the first part is there, wait five second after the second part isn't there to start the conveyor.

I got your point! but I have 5 more conveyors in series and I just posted code for the 1st conveyor.
Conveyor 3 will make the part to wait for 5 seconds on the conveyor 2 and so on

Thanks
 
Create a DINT tag for each conveyor as an indexer.

Conveyor1_INDEX
Conveyor2_INDEX
Conveyor3_INDEX
Conveyor4_INDEX
Conveyor5_INDEX

When the machine first starts up (no product on any of the conveyors), MOV a 0 into all the indexers. When your prox is made on conveyor 1, MOV a 1 into the Conveyor1_INDEX. As the state of each prox changes, along with your timers giving additional control, you can use each conveyor's index DINT to keep a running state of the entire machine, MOVing 0-3 into each of them at the proper time. But you don't actually have an entry and exit prox for each conveyor, you only have an entry prox for each conveyor. USING the entry prox of the next conveyor as an exit prox is not the same as actually having an exit prox.

Hope that helps!
 

Similar Topics

Settle an argument, Application hoist lifting a heavy load + 300-500kgs If the hoist over travels substantial damage could be done, not...
Replies
11
Views
3,175
Hello all, I am not terribly experienced with all this stuff so forgive me if I am asking a silly question. Hopefully there is some simple answer...
Replies
2
Views
1,495
I found a Turck proximity switch for my trainer, I just want to make sure its gonna work on my system. Such a device is a input right! And if my...
Replies
9
Views
2,644
I have a problem with this sensor. How do I know if they still work or is damaged. led does not light up when he moved to the proper place. Please...
Replies
5
Views
2,363
I've got a question about the Banking Screw accessory for Balluff Switches. I have a 12 MM Banking Screw (BALLUFF BESA-12-50-12-BANKING-SCREW)...
Replies
0
Views
3,276
Back
Top Bottom