Search:     Advanced search

Advertisement

Discuss your PLC and automation problems for Allen Bradley, GE, Omron, Mitsubishi, Modicon, Panel Views, RS View, ABB, Adept Robots, Cognex etc. You can also submit and download sample PLC code.

If our forums and knowledge base still hasn't got your PLC operational, we recommend contacting PDF Supply and Electric for PLC repair and replacement parts.

First Experience - Allen Bradley InView LED Dsiplay with Ethernet-IP

Article ID: 85
Last updated: 27 Mar, 2009
For those of you that aren’t familiar with my writing style, this article is what I call my first experiences. This does not mean this product is brand new on the market, but rather the first time I’ve personally had an integration application using this product. I will also share my learning curve ratings at the end of my first experience articles.

I had some fun with this project. Isn’t this what automation is all about? We do this because it’s fun to us and a great challenge. I helped a company install a second Allen Bradley InView display in another area of the factory. The first display was already integrated by another contractor so I guess I got to “cheat” somewhat by looking what had been done before, but that never has stopped me in making sure I FULLY understand what I am doing and how it works. So even though I had another InView to copy from, I still didn’t write the ladder logic the same as the programmer before me because I wanted to write it in a way that made sense to me. I can’t stress that point enough, just because someone else wrote it already, doesn’t mean you have to copy it.

With each and every passing day of automation, I find myself so lucky that I have a great deal of understanding of computer hardware, software and more importantly networking. I don’t see how you’ll be able to integrate an Ethernet IP product without a basic understanding of networking. I believe this is where most people have problems. More and more if you’re a new Controls Engineer in the field, make sure you are taking a basic IT class at college if you are not already a natural born hack.

Ok so the premise of the project was to connect a new InView display via Ethernet IP to an existing Compact Logix L35 PLC. I just ran some Ethernet CAT5 cable from the display to the existing automation network switch. Here is what I purchased for the project:

2706-P42C
about $2600 list
42" Color LED Display

2706-PENETM
about $ 700 list
Ethernet IP communication Module

2706-PSW1
about $300 list
InView Programming Software

The first thing I did was connect to the display using the default IP address supplied. I saw a sticker on the Ethernet IP module and I also found a tech ID for this. Because what I needed to do was change the default IP address of the unit to an assigned IP address of the company’s IP structure.

Allen Bradley Technote ID = 45382
InView 2706-PENETM, PENETP and PENETK series A rev C modules have a default IP address.

You’ll need to change your programming laptop network card to the same IP subnet as the default display. In this case I picked 192.168.1.200 for the laptop. Just set an IP address manually for your laptop.



Next I connected the display and my laptop through a switch or hub and made sure I could PING the display. Whenever I am working with anything Ethernet related, I think you’ll save yourself a lot of hassle if you do this step. Make sure you can PING the device, if you can then chances are really good that you’ll be able to open whatever programming software you need to communicate with the device. Open up a DOS command prompt, and type:

ping 192.168.1.1
then hit enter.

You should get a response.



Ok so our computer is talking with the display via Ethernet or it at least sees it out there. This is good. Close the DOS box, and open the InView software. In my case, there was already an existing display on the network, so the way the InView software works is you need one project file for all the InView’s on the network. I opened the existing project from the other contractor, and I now need to add my new display to the network. To do this, right click on the root folder on the left and select ADD Display. You’ll get a prompt box. Call your new display a name and select the correct model number.



Next is to configure the communications of this InView. On the serial address, I found this information when the screen booted up. It flashes on the display what the current serial display address is; I just put in the serial address the same. This display was address 158. I had no need to change it, so I left it the default. I left the heartbeat disabled. I checked the box Industrial Network Comms, because I am using Ethernet IP instead of straight Ethernet TCP/IP. After I checked the Industrial box, I clicked on the “top button” Configure Communications. I got a new prompt box and filled in the information.

For IP address, I put in the NEW IP address that was assigned by the company IP structure.
So what I am doing is changing the default IP from 192.168.1.1 to 192.168.0.151.

I left the MAC address alone, I checked with AB and they said there would not be one or it would not broadcast a MAC address.

I filled in the gateway computer on the network, which happened to 192.168.0.10, and a subnet mask.



After clicking OK, now click on the “bottom button” Configure Communications. Choose Ethernet IP and I left the baud rate at 9600.



On the next window we need to define the target processor. In this case the target processor that will have the ladder logic to drive the display. Also note that the target processor is a Compactlogix L32E, but upon reading some tech notes, we are suppose to select ControlLogix. The node setting was a bit of mystery to me. So I looked it up.

Allen Bradley Technote ID = 25468
InView Ethernet comms modules and using 2706-PENETx modules (except 2706-PENET1) with the CompactLogix 1769-L35E processor..

In the above tech note it explains to set the "Node Path" to 1 0. So that’s what I did.



Then now again in the next window, set the IP address of the communication module.

192.168.0.151 is my example.



Finally we need to create some tags that will drive the LED display from the ladder logic. I made two arrays for each.

Bag_Display_Message[0] and Bag_Display_Message[1] for message triggering.

and

Bag_Display_Variables[0] and Bag_Display_Variables[1] for variable message triggering.

The message Array Size was left at 40.

I’ll explain these variables later in the article.



After clicking next, you can save the communication file. This is different than the project file. Save the communication setup file to your hard drive.



After clicking finish, you’ll need to download the new communication file to the InView. In order to do this, you’ll need to configure an RS Linx driver with the default configuration first. Select a new Ethernet device first because the default communication is Ethernet with an assigned IP address.



When prompted, enter the default IP address of the InView, in this case 192.168.1.1 in the station 0 spot.



Hopefully after configuring a driver, you can now browse and see the InView display.



Next is to download the communication file, select RS Linx as the download method and browse to the InView display that you just configured.



The communication file should start downloading to the target InView display.



After the InView downloads, you will more than likely loose communications if you changed the IP address of the display like I did. Remember in the above configuration we changed the IP to 192.168.0.151. This will cause a loss in communications. Also we enable Ethernet IP communication in the InView.



The final step in this configuration prompt is to associate a message file. Pick the InView that you are adding in the list.



Now that you have downloaded a new communication file, and we changed the default IP address of the InView, we need to reconfigure our network card on our computer to talk with the new communications settings in the InView. In this case, we’re back at the network properties of the laptop and we are setting a fixed IP address of 192.168.0.200, in the same sub net as the new InView IP address.



Again, ping the InView to validate you have connection from your laptop to the InView display. In this case type the command PING 192.168.0.151.



Open RS Linx again. We can now re-configure our Linx driver. When you open RS Linx, do not click on the PLUS “+”, just right click on the driver and delete it, then recreate it again. Or you can edit the driver and update the new IP address in Station 0.



Enter the new IP address for RS Linx.



You should now see the InView on the new IP address configured.



If you want, you can configure an Ethernet IP driver so you can see all devices on the network. Just delete the Ethernet driver and configure an Ethernet IP driver. There is no need to configure an IP address for Ethernet IP it scans across the subnet for all devices, PLC, HMIs, and InViews.



By now you should have created your application file for the InView.



Since I configured an Ethernet IP driver in RS Linx, I can now see all the devices on the network including the old and new InView displays.



I did find a glitch that sometimes, not all the time when trying to download the application file of the InView that the communications would fail. I found that if I tried again a second time the application would download.



And once again “Retry”. It finally downloads.



So we’ve walked through downloading the communications file and application file. Simple enough and pretty basic. One thing I forgot to cover was the Ethernet to RS-232 cable in the 2706-PENETM
module. Make sure you connect the DB-9 end shown here:



And the serial end into the InView junction box on the terminal box. The job of the PENETM module is serial over Ethernet.



After you have downloaded the communications file and the application file, look for the LED on the PENETM board. If you have done this correctly you should see LED2 light up steady. This indicates that you have established a connection with the PLC, and the InView is reading the tags or arrays you configured.



If your LED2 is blinking, then your InView is not communicating with your PLC target and you may either need to check your variables or arrays you’ve mapped, or make sure the tags exist in the PLC, even if they are blank or there is no logic written, just make sure you’ve created in the tag in the PLC so the InView has something it can poll.



Ok so now let’s talk about the application itself.

Let’s back up to this screen here where I skipped over the array mappings.



Here is how this works in a nut shell. One array is to display the message configured in the project, the second array is used to update variables in the message of the project.

Take a look at the project file screen shot.



What you see here is six messages configured. Message 2,3,4, and 5 are just text messages. Typed direct into the InView programming software. You type in the message and format the size and font of what the message looks like. There are no variables in these messages. However in order to make them display we need to send the correct ASCII string to the array variable we configured and trigger the display to read the message string.



What I have done is created a tag that is a 20 array string, and pre-stored the correct ASCII string in each message string I want to send. For example to make the display show me message 5, I would copy BAG_DISPLAY_STRING_MESSAGE[5] to the Message Variable, then strobe the message trigger. The display will read $145$r string from the PLC which means “Display Message 5”. $14 is the beginning characters, “5” is the message ID, and $r is the carriage return. So basically the ladder logic looks like this.



I created some basic logic to trigger the message, when either of the two fault bits come on, I start a timer timing for 750msec. This copies the string “$145$r” to the array I configured in the InView “Bag_Display_Message[1]". You always will write a new string to this same array. If you want to display message ID #2, write the string $142$r to the array Bag_Display_Message[1]. Now at the end of this rung you’ll notice a trigger bit. That trigger bit runs a parallel of other trigger bits.



I AND’ed all the trigger bits around the trigger to the display. The trigger bit is Bag_Display_Message[0].0. Once you toggle this bit, the display will read the string stored in Bag_Display_Message[1] and do the appropriate thing, which is change the display to the message ID you requested. That’s pretty much it to make the display rotate through and display a simple message that is text only.

Displaying variables inside a text message is a bit more tricky. Let’s go over that. There is a lot of pre-prep work to do to build a string to send to the display. Let’s do the message ID #1 I have configured.



As you can see the message is “P11 {None:1}:{None:2} P13 {None:5}:{None:6} P12 {None:3}:{None:4} VacTime”

If you look at the display, you can see that 0:0 actually takes the place of the {None:1}: {None:2}. This is a variable in the display. Variable #1 and Variable #2 to be exact. The display is suppose to display the minutes and seconds of each area called P11, P12 and P13, a count down display for the operator is the purpose. In order to populate these variables, we need to write ladder logic to convert the information from PLC to ASCII.



Preparing the variables is doing whatever calculation you need to do in your logic to get the correct variable data. In my example I need to create a minute variable and a second variable. I am sure there is a hundred gillion ways to write this same rung *hint you old timers simmer down*, but follow along with me on what I am doing. Basically I go get the variables I need and do some math on them to make them display what I want. In my example I want minutes and I want seconds. Once I get them in that format, I convert them to string using a DTOS function. I write this to some tags I created called BAG_DISPLAY_STRING_VAR[1]. Variable #1 of the display is stored in this tag. This rung keeps updating the strings for me. Actually all the strings are updated. My format is an array that is storing all my variables.



I am only using eight variables to the screen so here is a screen shot of the variables in string format. Variable #1 is 1 minute, Variable #2 is 48 seconds. Etc, etc, so forth. I seldom use array “0” for logic clarity and to help me keep my tags all the same. What I am trying to say is there is no variable #0 in the display so I started at array[1] for variable #1.



Next is to build a message string. Once again I have pre-stored ASCII strings stuffed into arrays so I can call up array messages and build a string kind of like an ASCII lego block I call it.



String “$16” is the first ASCII command followed by the value of the variable in this case I am storing a $161 and $1648 from our Variable #1 and Variable #2. I continue to build this with next CONCAT function that put the trailing 1$r. This is the variable designation. So $1611$r is saying write the value “1” into variable #1, then return carriage.



It’s confusing to keep track of, but come up with a system of where you are storing ASCII and the main goal here is I am building a BIG OLD BOY string I call it to send to the display all at once. As you can see above in the last visible CONCAT function, I have grabbed the strings required to update Variable #1,2,3, and 4 and I just keep going.



Variables to the display are handled differently, in basically what I mean is you can write the variable update anytime you want to the screen, even if it is not being displayed on the screen at the current time. I saw no issues with this so I created a timer that would basically write my BIG OLD BOY string to the display using a timer. I had two types of variables. Numeric and Alpha numeric variables. I wrote both of them to the screen using timed triggers. Once I wrote them to the Bag_Display_Variables[1] mapped array from PLC to InView, I triggered the “update” bit.



The Variable trigger bit is similar to the Message trigger bit in that you toggle the Bag_Display_Variables[0].0 bit to tell the display to read the ASCII you wrote and update it. You can continuously update variables then change the display to any message ID you want, and the display will then plug in all the correct variables and update them in according to the update timer that is set. I think in my case, I updated the variables once every second was fast enough. I kept the Ethernet traffic to the screen relativity low.

I found that if you wanted to use a decimal place that I had to configure an Alpha variable worked the best and if I had no decimal point, Numeric variables work great.

In summary for what I did with this unit, it worked great out of the box. I was really hoping I would not have to write any ASCII functions to interface with the screen. In other words I thought AB would have some registers / tags in the PLC I could configure and just update those registers / tags and viola! The display would update the variables magically in the InView, but I guess I was wrong, I still had to write parsing and concatenate functions which is nothing more than a serial display sitting on an Ethernet IP bus, imagine that…that’s exactly what I purchased... Could have just as well bought a cheap RS-232 display board and did the same thing using channel 0 on the front port of the processor. My expectations are a bit high for Allen Bradley. Last time I used a device similar to this was the old DataLiners. Some of the old DataLiners sat on DH+ and could read N7:0 integer variables directly, I miss that ease of use. I hope someday these InView’s act like a Panel View Plus, which would be what I desire. Heck! Why not even include the application development into Factory Talk Machine Edition 6.0? Map a tag, download the application and DONE no ladder logic required to drive your display….

Despite my desires, I had no problems interfacing with the unit. I found several examples in the knowledge base how to communicate with the PLC. Although all the examples I found where for a Control Logix, if you are using a Compact Logix like me, just pretend every where you read Control Logix, it says Compact Logix you should arrive at the same outcome. I had a little bit of an example code to follow from a fellow programmer Chris Wells of Advance Apps, he did the first display in this system, but really in the end I wrote my integration another way. I stressed this point earlier in my article that even though you have an example to follow does not mean you have to write the code the same way. If you think on your own and come up with the way you want to program it, you’ll learn a lot more about the application and become an expert on how it works. Of course if you’re in a hurry and need to get it up and running, then I guess it’s ok to copy something someone else wrote.

Learning curve rating:
Curve 0 = Walk in the park.
Curve 10 = Get out the scholastic cap and crash in the classroom.



Gave this device a 9 curve for all the CONCAT functions you need to make it work.

Download the sample source code here.
Article ID: 85
Last updated: 27 Mar, 2009
Revision: 1
Views: 25162
Comments: 5
This article was:   Helpful | Not helpful
Prev   Next
First Experience - Allen Bradley Point I/O 1734-232ASC Devicenet     Tutorials

Comments
Ronan Quinn | 28 May, 2009 12:00 AM
Replying to your tutorial on invews. I got as far as the ladder logic. having difficulty with creating the tag with the ascii string. Do i have to set up the string first or can I creat the tags and then the string.Its my first time ever using ascii strings so not sure if I actually understand what I have to do or what they are.
Posted: 8 years 6 months ago   | Permalink
Ronan Quinn | 29 May, 2009 12:00 AM
Can you advise me on how to setup an ascii string.Struggling to get past assigning tags and setting up strings.
Posted: 8 years 6 months ago   | Permalink
Vernon Viljoen | 25 Nov, 2010 12:00 AM
Hi i have used your example but with a 2706-pcnetp module I have come as far as getting the cnet configured and downloaded to the p22r inview via my clx via cnet comms module, i have created the tags, simmilar to the ones created for the comms module located on the clx (globaly) but i can't seem to get my led2 solid green it is still blinking.

I have tried your section on your article to correct this but with no success, can you help please.
The knowlagebase at Rockwell does not cover much and can't seen to find someone who knows more about this.

regards
Vernon
Posted: 7 years ago   | Permalink
Bolatov | 23 Aug, 2012 12:00 AM
Thank you very much for the tutorial i was really lost
Posted: 5 years 3 months ago   | Permalink
Jaime Velasquez | 11 Oct, 2012 12:00 AM
For the link you used the NET-ENI, or the native port driver. As I understand it must select contrologix5000 and 1 0. Please confirm.
Posted: 5 years 1 month ago   | Permalink

Prev   Next
First Experience - Allen Bradley Point I/O 1734-232ASC Devicenet     Tutorials