Learn how to use an EtherNet/IP Explicit Do-more client with Datalogic Matrix 210 Bar Code Imager in this brief hands-on live demo/tutorial.
The Datalogic Matrix210 is an awesome little bar code imager that can handle both 1D and 2D bar codes. Instead of the traditional red laser beam scanning the bar code, it actually grabs an image of the bar code with a camera and analyzes the captured image to decode it. And the best news is it is EtherNet/IP compatible, so you can monitor and control it from an AutomationDirect Do-more PLC. I have a Do-more PLC connected to a Stride Ethernet switch which is connected to the Matrix Imager. I am also using the Datalogic CBX500 breakout box as a simple way to connect power to the imager. Once you have the unit setup and calibrated, Get the Datalogic utility called VisiSet, connect to the Matrix210, and under Device, get the devices current configuration. Make sure EtherNet/IP is enabled here. Make sure the operating modes are setup as shown here. And make sure you enable the codes you plan to use. We’ll be using this Code128 in our examples. Send that to the unit and you are ready to use EtherNet/IP. If you have any questions about setting up the Matrix210, call the folks at Datalogic – I found them very friendly and helpful. Now that we have a configured imager, we just setup the Do-more like we always do. I have a new project open and I’m connected to the Do-more. We always start with the system configuration and work our way down this list. Under CPU we can make sure that the Do-more’s IP address is on the same subnet as the imager – if not we can change it here. And the Do-more is a Client controlling the Imager which is a server, so we don’t need to enable the Do-more as a server. We’re not adding any I/O to the Do-more so there is nothing to do here. We’re only using the built-in Ethernet port and not adding any new modules to the PLC so there is nothing to do here. Under Device configuration we could use the built-in EtherNet/IP device to talk to the Matrix210, but it it’s always better to create a new Do-more Device for each piece of hardware you want to talk to via EtherNet/IP. That way no Do-more Device has to manage multiple TCP/IP connections which would slow down your code. Let’s create a new device, we want an EtherNet/IP device, and we’ll call it Matrix210. Great we now have a Do-more Device that will handle all the low level details of dealing with the imager. Which means we don’t have to worry about buffer management, or handshaking, or memory allocation, or any of that stuff. The Do-more does all of that for us. We don’t have any new I/O and the EtherNet/IP device we created doesn’t create any heap structures for us to talk to so we’re done configuring the Do-more and we’re ready to talk to the Matrix210 imager. To do that, we just grab an EtherNet/IP instruction, drop it on the rung and fill in the blanks. We want to use our new Martix210 Device and he is at this IP address. This is where we put the codes we use to talk to the EtherNet/IP device. Where do you get the codes? Over on the Datalogic website search for the Matrix EtherNet/IP User Guide. I got this list here. They are all the same, just pick one. This user guide lists all the things you can do with the imager via EtherNet/IP. Let’s do something simple for our first example – let’s get the vendor ID which is always in the Identity object. And here it is. Looks like we need Class 1, Instance 1 and Attribute 1 to get the Vendor ID. We want to Get this information and we’ll do it on the leading edge of the ladder contact. We’ll use these status bits and we’ll put the Vendor ID in D1 and the number of bytes actually returned in D2. The Vendor ID is an Integer, so we expect a maximum of 2 bytes. Great. Accept that and add a contact to enable the instruction. Remember – we told the instruction to start on the rising edge of this contact – which is indicated by this triangle - so we don’t need a rising edge contact here. Looks good to me, so let’s accept all changes and write it out to the Do-more. Let’s bring up a dataview so we can control this and add the contact and the result. Make sure we’re running, enable status and enable editing for the dataview. If we toggle this contact we get this 850 which according to the manual is the Vendor ID. Perfect. Here’s the sequence of events we need to get the barcode: First we need to trigger the Image. Then we need to wait a little while for the imager to do its thing. Then we read this item sequence number and fragment sequence number and then we write those back to the imager to acknowledge that we actually got the barcode. I went ahead and created this little Get Bar Code program so you wouldn’t have to wait while I typed all this stuff in. Let’s take a look at that. In stage 0 we activate the message trigger. It’s just the one EtherNet/IP instruction talking to our Matrix210 Device at this IP Address, using these codes and issuing a write with bit 7 set in this variable. Bit 7 of this byte is what’s going to trigger the imager. If that’s successful we jump to stage 10, if not, we jump to stage 99 and increment an error counter. Stage 10 releases the trigger so it’s the exact same instruction except it sends this register which has a zero in it to clear the trigger bit and it jumps to stage 20 when done. In stage 20 we give the imager a little time to process the image. We start a timer and jump to stage 1 when the timer is done. Which also shows that Stages don’t have to be in numerical order. In Stage 1 we Get the data into this string using these EtherNet/IP attributes from the user guide and jump to stage 2 when we are successful. In stage 2 we get the Item Sequence number into this memory location and jump to stage 3 where we get the Fragment Sequence number into this memory location and jump to stage 4. In stage 4 we write the Item Sequence number back to the imager using a Set command and in stage 5 we write the Fragment Sequence number back to the imager. Again ,writing the Sequence numbers back to the Imager is what acknowledges the receipt of the data so the imager can process the next bar code. When done we exit the program. Stage programming makes sequencing things like this so easy because it takes care of all of the interlocking and transitions automatically. So all of these EtherNet/IP instructions we used are the pretty much the same aren’t they? We just look up the codes in the user guide for what we want to do and fill in the blanks. Back in the main program, we run that Get Bar Code program on a rising edge of a contact. Accept all of that and write it out to the Do-more. Let’s add the new contact that triggers that program and the Bar Code result to our dataview. Toggle the contact and we get our bar code. Change the bar code, trigger another read. And we get the new result. Perfect. This is by no means a complete example. There’s a lot more of information you can pull from the imager and use to your advantage all of which is in that EtherNet/IP manual. But for now, this ought to be enough to get you up and running. If you have any questions about using EtherNet/IP on the Do-more, contact AutomationDirect’s free award winning tech support during regular business hours. Don’t call them about Datalogic Imagers or any other device AutomationDirect doesn’t currently have – they will just send you to that vendors support. So save yourself a phone call. And check out the forums. That’s another great place to get information from experienced - and very helpful – Do-more users. Spend Less. Do more. With Automation Direct.