top of page

Project Date: 

November 3, 2017

Smart Singulator


A new type of package singulation technology


Using an advanced package detection technique coupled with hundreds of electrically driven activation zones, greater than 98% singulation of small packages can be achieved without an operator at a rate of 11,000 packages per hour.


Package Detection


Information about incoming packages is detected using an infrared through-beam style sensor that communicates individual beam states for all 240 beams.  The beams are spaced at 5mm.  The data are read over EtherCAT every 10 ms and buffered into a FIFO array.  Every 150 ms, the data from the sensor are combined with information about how much belt displacement has occurred (using an encoder).  Using several functions built into the Image Processing Toolbox from Mathworks, packages are detected in the raw data.  The Matlab functions are called using a Simulink model built using the Simulink coder to run as a TcCOM object in TwinCAT using TE1400.  This enables the image processing functions to execute in truly deterministic realtime.


Singulation


Once the packages are detected, they are tracked using basic physics (acceleration, deceleration) from one conveyor to the next.  The ideal singulation path is based on a "least time to exit" strategy.  Similar to package detection, the singulation planning code utilizes advanced Matlab based functions, built using the Simulink coder and running in TwinCAT.


My role in the project


Starting in late 2017, I was presented with a National Instruments CompactRIO controller that was controlling a stripped down prototype of the smart singulator.  I was tasked with converting the LabVIEW based controls into something more "industrial".


My first attempt was to modify the core Matlab code to run semi-deterministically within the Matlab development environment itself.  This was a quick failure.  Matlab does not do deterministic, especially not at the rate required!


My second attempt (which is largely as it is today) was to build the Matlab code as C using the Matlab Coder.  This turned out to be slightly more complex as it required a conversion to Simulink first.  Luckily it's quite easy to call custom Matlab functions from Simulink.  Building the Simulink model for realtime operation within the TwinCAT system has proven to be a very effective solution.


Along with getting the core algorithm into an industrial controller, I also designed and programmed a full PLC based system to handle all the controls outside the core algorithm.  This includes conveyor start/stop/speed controls, safety interlocking, sensors, etc.  This is based on a Rockwell Automation GuardLogix system.


Current Work


My current work now is focused on making the singulator faster (rates above 11,000 packages per hour), and more accurate even without a human operator.

bottom of page