help with programming my elevator !

hlioua

Member
Join Date
Apr 2013
Location
wavre
Posts
4
Hi all
it's about an elevator for cars, i try to put the ladder diagram on Unity Pro MSV 6.0
the constraints are: how to memory the requests, how to serve the nearest floor first, when no request the elevator will remains at its current floor ??
if grafcet is needed, i can upload it.
 
Before you get to all that, don't you need to know how you want it to work first?

Homework or real problem?

Belgium? i think your teacher might be here.
 
thanks harry .it is for a project report! the electrical and mechanical sides are Ok,but i'm not a PLC specialist, so any help is invaluable
 
A good method that should work with any brand of PLC is to divide the Elevator functions into steps or stages:

1. Initialize program variables at startup (1st scan of PLC).
2. Search or look for elevator button floor requrests.
3. Perform the next floor request, or keep waiting for a request.
4. Close the elevator door (or gate) and Move Up or Move Down.
5. Track the car movement (using encoder and position limit switches).
6. Stop and Open the door (or gate).
 
thanks Lancie, all these steps are done.I wanna put the requests (if several) in queue, and serve the nearest one first, when no request the elevator will remain at its floor.I think i have to use the blocs functions : FIFO and move***. Now the problem is that I don't know how and where should i do it ?
 
Hlioua,

You can do an elevator for 2 to 10 floors without using a queue or FIFO. You could use those methods, if you really want to do the work to understand how they work.

For Step 2, for each floor, you have a relay. If there is a Car Request (button inside the car) for a floor (say the Car Floor 3 buttons has been pressed ). Then you simply look for the "Car 3" button, then Latch or Set the "Car Floor 3 Request" relay. Do that for all floors. Also you need one more set of "Floor Request" relays for the Floor Buttons (located beside the elvator shaft). For the bottom (1st) and top floors, you only need a "1st Floor UP" relay and a "Top Floor DOWN" relay (the only direction the elevator can go from each of those locations). For all other floors, you need a "Floor Request-xx UP" and "Floor REquest-xx DOWN" relays for each floor. These two sets of relays become your "pending" actions, to be done at some time in the future.

For Step 3, you set up Travel Direction relays, "Going UP" and "Going DOWN" relays. For the UP relay, look at all conditions where the Elevator needs to go UP, and for the Down relay, look at all conditions whre the Elevator needs to go DOWN. Now the NEXT direction of travel for the elevator is set.

For Step 4, you close the door and start either the UP motor or the Down motor, depending on the status of the "Going UP" and "Going Down" relays.

For Step 5, as the elevator moves up or down, you check each time to see at what floors it needs to stop. Look at the Car Location (as determined by an encoder position value, and/or position limit switches) AND the Floor Request relays. If any combination of Car Location and Travel Direction AND Floor Request is TRUE, then STOP and open the door (or gate). The check for a STOP position would look similar to the attached picture. The lowest and highest floors are simple, but all in-between floors needs logic similar to the 2nd and 3rd floors shown below.

Elevator STOP Determination.jpg
 
Last edited:
Hlioua,

You can do an elevator for 2 to 10 floors without using a queue or FIFO. You could use those methods, if you really want to do the work to understand how they work.

For Step 2, for each floor, you have a relay. If there is a Car Request (button inside the car) for a floor (say the Car Floor 3 buttons has been pressed ). Then you simply look for the "Car 3" button, then Latch or Set the "Car Floor 3 Request" relay. Do that for all floors. Also you need one more set of "Floor Request" relays for the Floor Buttons (located beside the elvator shaft). For the bottom (1st) and top floors, you only need a "1st Floor UP" relay and a "Top Floor DOWN" relay (the only direction the elevator can go from each of those locations). For all other floors, you need a "Floor Request-xx UP" and "Floor REquest-xx DOWN" relays for each floor. These two sets of relays become your "pending" actions, to be done at some time in the future.

For Step 3, you set up Travel Direction relays, "Going UP" and "Going DOWN" relays. For the UP relay, look at all conditions where the Elevator needs to go UP, and for the Down relay, look at all conditions whre the Elevator needs to go DOWN. Now the NEXT direction of travel for the elevator is set.

For Step 4, you close the door and start either the UP motor or the Down motor, depending on the status of the "Going UP" and "Going Down" relays.

For Step 5, as the elevator moves up or down, you check each time to see at what floors it needs to stop. Look at the Car Location (as determined by an encoder position value, and/or position limit switches) AND the Floor Request relays. If any combination of Car Location and Travel Direction AND Floor Request is TRUE, then STOP and open the door (or gate). The check for a STOP position would look similar to the attached picture. The lowest and highest floors are simple, but all in-between floors needs logic similar to the 2nd and 3rd floors shown below.
great, i'll try to do it this way !
i'll attached a file with the result when it's done !
 
Thanks, I will be watching for it. The reason you can get by without a FIFO or other data storage is that numerous requests for sending the car to a particular floor only have to be stored once. One request for a floor is as good as 100, because the elevator has to go for 1 person or for many going to the same floor. So you only need 2 bits for each floor, one for the Car Button Requests, and 1 for the Floor Button Requests.
 
OP said "it's about an elevator for cars,...". If he meant that it's a car-park elevator, then....

I reckon you could only get one car in at a time, so you will need to take into account "car loaded" status. There'd be no point stopping at a floor where a car is waiting to get into the elevator, if there is already one in there.

In a way it simplifies the task. A call request at any floor can only be serviced when the elevator is empty, since it will be from a car wishing to be moved from one floor to another. There will be no concept of stopping at intermediate floors to pick up additional "passengers".
 
There will be no concept of stopping at intermediate floors to pick up additional "passengers".
That would be one way to do it, and it would work okay. If the car elevator delivered a car and its passenger to the 10th floor, then on the way down it could not stop to pick up another car and passenger on floor 5 that was going to floor 1. It would have to go all the way down, get reset, then go back to 5 while the irate customer ranted and fumed as the car elevator passed by empty!

Would the owner of an upper-scale New York apartment building buy a car elevator with those characteristics?
 
Last edited:
That would be one way to do it, and it would work okay. If the car elevator delivered a car and its passenger to the 10th floor, then on the way down it could not stop to pick up another car and passenger on floor 5 that was going to floor 1. It would have to go all the way down, get reset, then go back to 5 while the irate customer ranted and fumed as the car elevator passed by empty!

Would the owner of an upper-scale New York apartment building buy a car elevator with those characteristics?

Perhaps my post was not clear - you quoted my comment There will be no concept of stopping at intermediate floors to pick up additional "passengers" was applicable to the "elevator loaded" condition I mentioned in the previous sentence, and I was careful to include the word "additional" - my meaning was that there would be no point stopping at a floor that had been called from outside the elevator if a car was inside it.

Once a car is loaded, the elevator should only go to the floor selected by the driver of the car in the elevator, he has priority, since the elevator is "full".

Only when the elevator is "empty" can it respond to a call request from a floor, otherwise the driver of the car loaded will be going up and down at busy times, stopping here there and everywhere, until eventually he hits his own floor, and can get out.

This is a single-use system, so the traditional "rules" of elevator control are almost reversed. A degree of "efficiency" in traditional elevators can be achieved simply because it is a vehicle that can accommodate multiple users.

But an elevator that can only take one car is different - the only efficiency you can get out of it is to deliver the loaded car to the requested floor without any delays, freeing up the elevator for the next user. To service a call request from a floor requires that the elevator is empty, there is zero point in making the elevator go there if a car is already loaded.

To be fair, user calls should be stored and serviced in the order they were received, not "nearest floor", other wise the guy in the penthouse could be waiting forever to get the elevator up to his floor.

I hope I've cleared up any misunderstanding of my previous ramblings...
 
I think you cleared it up. In short, a vehicle elevator will need to be designed to fit the situation, considering the number of vehicles (most still have rooom for only 1, a few have 2, and who knows what the future will bring?), the number of floors, whether the vehicle is parked in the customer dwelling, whether there is a valet that handles parking, whether there is a customer limit for the number of daily trips, and so on. The process seems to be similar to that for a passenger eleveator.
 
Hello to everyone,

I have a question related to my first program with S7-300 (3 level elevator). Can anybody help me?
I have almost finished it, but I have to control 2 elevators with the same program, and i dont know how to do it.
Teacher gave me a clue, saying that I have to treat all Inputs and outputs of my elevator on a configurable function block... but no idea of how to do it.
Considering that I have to create new inputs and outputs for the second elevator, how can I program this function block (FC) and use the main program?
I would appreciate it very much if you could reply to me with any information...
thank you very much.
 

Similar Topics

Hi all, i am the new controls guy at the plant and i have inherited a pc from the previous controls guy with Siemens tia portal version 16 and 17...
Replies
20
Views
919
Hi can you help, have a book stitching machine with collates pages in 8 stages. I have installed a camera system that will give an input to...
Replies
24
Views
1,907
I don't have much experience in programming. I can do simple configuration. it is like this. i want to add something to the existing ladder...
Replies
39
Views
6,222
Hello there, I'm practically new to the PLC world, I'm quite familiar with Siemens TIA Portal but I'm currently tasked to program Schneider PLCs...
Replies
5
Views
1,867
Hello All, As you can guess by the title I am a total noob to programming PLC's. So my problem is that I have an old Pallet wrapper that uses an...
Replies
21
Views
4,930
Back
Top Bottom