Dear Experts,
I need a little help with a project that involves an Omron Vision used for quality control of cylindrical products (arranged in 2 lanes) on a servo motor-driven conveyor belt. Each lane of the belt ends with an ejector rod (air solenoid vale) which should kick out the product that did not pass the QC. I'll try to provide as much details as possible and I hope someone would be able to give me some new ideas to try.
The details are as follows:
There is an Omron FH-5050-10 Vision system with 4 camera aligned in a 4x2 configuration. That is, 4 cameras placed sequentially and are looking at the product passing underneath them on the conveyor belt. The products are cylinders which are fed into the conveyor with a minimum distance of about half of its length (e.g. 170 mm long cylinders come in with at least 70~80 mm space between them). There are 2 optical sensors at the beginning at the end of the conveyor belt. The sensor at the end is followed by the ejector rod, which can be extended and retracted quite quickly. The ejector is controlled by a S7-1500 series PLC, linked to the Omron Vision system by a RS232 serial link. Obviously, the PLC gets an info about the product condition via this serial link. It checks the data, decides whether the product is OK or NG and activates the ejector based on that. The belt is driven by the servo motor with an encoder of 8000+ ppr. The PLC gets the encoder feedback (actual position) via a Profibus connection to the servo drive. The belt speed is controlled by the PLC and is constant, but can vary slightly depending on external factors. Normally, it takes about 500~600 ms for each product to pass through the entire conveyor belt. Finally, the belt has 2 identical lanes, left & right, so let me focus on the Left lane only. That's the basic setup.
Now, the tricky part is, the Omron Vision cameras are operated based on a
a fixed cycle of 280 ms. That cycle time gives all 4 cameras a chance to take 1-2 snapshots of the product. The PLC can measure this cycle time, but the cycle itself is not synced to the signal from the sensor at the beginning of the belt. That cycle runs as long as the belt is moving, regardless of whether the product is present on it or not. At the end of every cycle the RS232 interface on the PLC gets a 32-byte message containing coordinates (4x 32-bit integers in camera pixels x1000) of the defect found. If no product is present, or no defect found, there is 0 or another pre-defined number if sent. Also, as the product passed under each of 4 cameras, there is no way to tell which camera may spot the defect. Sometimes, it could be 2, 3 or even 4 cameras which spot the defect in the same product. The data (1D pixel coordinates of the defect) can be translated to the number of encoder pulses at a fixed ratio. The position of the object is always known from the moment its beginning passes the 1st (entry) sensor to the moment it passes the 2nd (exit) sensor and then (maybe) gets by the ejector rod.
Thanks for reading and considerations this far!
Now my ultimate questions are:
1. What would the best (100% error-proof) algorithm to track the be location of each product as it passes through the belt under the cameras, get the RS232 data from the Vision and activate the ejector at the time as the product marked as "bad" passes by it? (preferably, around the mid-point of its length).
2. How can I "attach" RS232 data messages (coming in at fixed intervals) to a specific product on the conveyor?
Please keep in mind that there could be any number (from 1 to 5) of products on the conveyor passing by cameras each of 4 camera at rapid succession. 1 or more of them could be marked "defective" by 1 or more cameras.
3. Would it help to increase the RS232 link speed between the Omron Vision and the PLC (from current 9600 bps to 38400 or even 115200)?
I would greatly appreciate any help you could provide! Feel free to ask me any questions or to request more details.
Thanks a lot in advance,
AK
I need a little help with a project that involves an Omron Vision used for quality control of cylindrical products (arranged in 2 lanes) on a servo motor-driven conveyor belt. Each lane of the belt ends with an ejector rod (air solenoid vale) which should kick out the product that did not pass the QC. I'll try to provide as much details as possible and I hope someone would be able to give me some new ideas to try.
The details are as follows:
There is an Omron FH-5050-10 Vision system with 4 camera aligned in a 4x2 configuration. That is, 4 cameras placed sequentially and are looking at the product passing underneath them on the conveyor belt. The products are cylinders which are fed into the conveyor with a minimum distance of about half of its length (e.g. 170 mm long cylinders come in with at least 70~80 mm space between them). There are 2 optical sensors at the beginning at the end of the conveyor belt. The sensor at the end is followed by the ejector rod, which can be extended and retracted quite quickly. The ejector is controlled by a S7-1500 series PLC, linked to the Omron Vision system by a RS232 serial link. Obviously, the PLC gets an info about the product condition via this serial link. It checks the data, decides whether the product is OK or NG and activates the ejector based on that. The belt is driven by the servo motor with an encoder of 8000+ ppr. The PLC gets the encoder feedback (actual position) via a Profibus connection to the servo drive. The belt speed is controlled by the PLC and is constant, but can vary slightly depending on external factors. Normally, it takes about 500~600 ms for each product to pass through the entire conveyor belt. Finally, the belt has 2 identical lanes, left & right, so let me focus on the Left lane only. That's the basic setup.
Now, the tricky part is, the Omron Vision cameras are operated based on a
a fixed cycle of 280 ms. That cycle time gives all 4 cameras a chance to take 1-2 snapshots of the product. The PLC can measure this cycle time, but the cycle itself is not synced to the signal from the sensor at the beginning of the belt. That cycle runs as long as the belt is moving, regardless of whether the product is present on it or not. At the end of every cycle the RS232 interface on the PLC gets a 32-byte message containing coordinates (4x 32-bit integers in camera pixels x1000) of the defect found. If no product is present, or no defect found, there is 0 or another pre-defined number if sent. Also, as the product passed under each of 4 cameras, there is no way to tell which camera may spot the defect. Sometimes, it could be 2, 3 or even 4 cameras which spot the defect in the same product. The data (1D pixel coordinates of the defect) can be translated to the number of encoder pulses at a fixed ratio. The position of the object is always known from the moment its beginning passes the 1st (entry) sensor to the moment it passes the 2nd (exit) sensor and then (maybe) gets by the ejector rod.
Thanks for reading and considerations this far!
Now my ultimate questions are:
1. What would the best (100% error-proof) algorithm to track the be location of each product as it passes through the belt under the cameras, get the RS232 data from the Vision and activate the ejector at the time as the product marked as "bad" passes by it? (preferably, around the mid-point of its length).
2. How can I "attach" RS232 data messages (coming in at fixed intervals) to a specific product on the conveyor?
Please keep in mind that there could be any number (from 1 to 5) of products on the conveyor passing by cameras each of 4 camera at rapid succession. 1 or more of them could be marked "defective" by 1 or more cameras.
3. Would it help to increase the RS232 link speed between the Omron Vision and the PLC (from current 9600 bps to 38400 or even 115200)?
I would greatly appreciate any help you could provide! Feel free to ask me any questions or to request more details.
Thanks a lot in advance,
AK