Hey Bruno, thank you for your very detailed answer!
I understand now where you all were coming from with the 10 V signals. I like the three different methods you described there, especially the PLCOpen version.
One thing though, you brought up the example of using the digital encoded positions as something you’d use with a drive. Usually you wouldn’t put all these positions in a drive, as you would want to be able to dynamically adjust the positions sometimes or you want to in other ways change the position of a specific rack.
Usually we’d do the abstraction like this:
- Have a function that determines, which column, row, side (and depth for two-stroke cranes or even ACV cranes) a pallet should be loaded
- Row, column, depth and side get translated into actual setpoint values by means of a lookup table. Usually the y-axis values can depend on the x-axis values (as there could be sagging over the span of the whole length of the rack) and the z-values can depend on the y-values (as the racks could be not perfectly vertically aligned) and thus you’d usually have a big table that has the values for every single position of the rack. So for any combination of column, row and side/depth you’d get three values for x, y and z respectively
- Send those values to the drives in sequence (x and y can move at the same time, but z can only move once x and y are in position) and wait for confirmation that all 3 axis are in position
In regards to the speed control based approach, I agree. It’s one way to kind of position an axis if you don’t have a drive that has a built-in positioning system, but it usually doesn’t really allow you millimeter-level accuracy positioning. It does work for easier positioning, like for example a turntable! I regularly use just a simple drive and position turntables using just speed control where I have 2 or 3 different speeds I switch between and use the slowest speed for the final positioning. I can get positioning accuracy of 1 degrees with a good repeatability with this method. The key here is that you need to really use slow speeds for the final positioning and you need to allow for a certain delta to your target position. But it works just fine!
For the sensors, see the image attached as an example of a little older machine I worked on before.
B1 - Fork Left/Right Obstructed (is something in the rack in this position or also to detect the girder when positioning the y-axis to make sure your vertical position aligns with the position of the girder of the rack. Can also use cameras for this)
B2 - Sensor Left/Right to detect if the pallet is hanging over the fork
B3 - Diagonal Sensor (level, but diagonally across the fork) to detect if Fork is loaded. For example if we put down a pallet into the rack the state before we put it down has to be: logically the fork is loaded (we have some data for the pallet), the sensor for the fork says there is something there and the sensor for the rack says this rack position is empty. We then try to set down the pallet into the rack. Afterwards we check again if the fork is empty and if the position in the rack is now obstructed. If the fork is still not empty or the rack is not obstructed, something went wrong. Maybe our y-Axis was positioned wrong and we didn’t go down far enough to set the pallet down on the girder.
B4/6/7 - Sensors Left/Right to check the height class of the pallet. Sometimes, not all rows of a rack allow for the same height of load, because the customer knows that a certain percentage of their pallets will at maximum be a certain height one or height two or height three. If they make the rows of the racks less high, they can fit more rows into the same height of the total rack. But we usually check the pallet once we load it from the conveyors onto the crane to make sure the height class the pallet has according to the data we get from the warehouse system matches what we measure. If they do not match, something might be wrong. And we have to make sure we do not try to push a pallet that is too high into a rack row that is not high enough. If the warehouse system tells us to put a pallet into a row that is not of the correct size, something else might have gone wrong.
B5 - Sensor Left/Right to check if the
load is hanging over. If the load get unbalanced during movement of the crane and starts to tip, we can detect this with these sensors and stop the crane before we rip apart the whole rack and cause further damage.