You are on page 1of 44

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

Article ID: 85
Last updated: 27 Mar, 2009
For those of you that arent 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
Ive 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. Isnt this what automation is all about? We do this because its 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 didnt 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 cant stress that point enough, just
because someone else wrote it already, doesnt 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 dont see how
youll 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 youre 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 companys IP structure.
Allen Bradley Technote ID = 45382
InView 2706-PENETM, PENETP and PENETK series A rev C modules have a default IP address.
Youll 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 youll 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 youll 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
InViews 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. Youll 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 thats 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.
Ill 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, youll need to download the new communication file to the InView. In order to do
this, youll 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, were 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 weve 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 youve mapped, or make sure the tags exist in the
PLC, even if they are blank or there is no logic written, just make sure youve created in the tag in
the PLC so the InView has something it can poll.

Ok so now lets talk about the application itself.


Lets 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 youll notice a trigger bit. That trigger bit runs a parallel of other trigger bits.

I ANDed 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. Thats 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. Lets go over that. There is a lot of
pre-prep work to do to build a string to send to the display. Lets 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.

Its 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 thatthats 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 InViews 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, youll
learn a lot more about the application and become an expert on how it works. Of course if youre in
a hurry and need to get it up and running, then I guess its 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.

You might also like