Can't see "verify rung" data in RSLogix 5000

kf4sqb

Member
Join Date
Nov 2021
Location
South Georgia, USA
Posts
14
First off, I'm a hobbyist-level programmer, and this program isn't controlling anything anything that could even remotely be considered "life safety". I'm using RSLogix 5000 (full edition, version V20.01.00 (CPR 9 SR 5), with a 1768-L45 CompactLogix 5345 PLC. I've just added a couple of new rungs in on-line edit, and they continuously show an "e" beside the new rungs. I know that this means there is an error on the rung, but I don't see what the issue is, and I get nothing when I try to use the "verify rung" function by right-clicking on the rung number and selecting it from the context menu. When I hover the mouse cursor over the "verify rung" selection in the context menu, it shows "verify the rung the caret is on" in the lower left, but once I click on it, it simply shows "ready" in the lower left. What am I missing? Is there a setting I need to check to ensure this feature is supposed to be working? I am using the software in a virtual machine, so it could possibly be a settings issue with the VM simply not showing the portion of the "screen" the error details should be on, but I seem to recall it usually showing up in the lower left corner of the screen, where normally says "ready" if nothing is selected, or tells you what should be there if you select an instruction/part of an instruction ("enter source a operand or value"). Here's a screenshot of the rung in question:1712079684180.png

Here, "DOW_Output" is an interger representing the day of the week, and is a DINT data type, while "DOW_Tue" is a constant string tag, simply containing the word "Tuesday", and "Day_of_Week" is a string tag (NOT constant). I'm setting this up to be able to display the day of the week on an HMI. I know there are other ways to do this, but I'd really like to get this setup working, more as a learning experience than anything else. Also, this is my first time working with string tags, so it's very possible that I don't properly understand how to work with them. I'd really like to understand why the "verify" function isn't telling me anything, but does anyone see what's wrong with this rung?
 
Can the MOV instruction move string data on that model of PLC? You may need to use the COP instruction, or perhaps on of the string instructions?
 
You should be able to go to the view menu and select errors to bring up a window below the ladder editor. This can be pinned in place if you really want it to be, though I thought it brought itself up when it detected errors upon verifying. You are probably getting the error "Missing reference to array element."

Strings are finicky to work with. You have to address them to the array, it should be something like DOW_Tue.DATA[0]. It might be easier to use a COP instruction instead. Try
Code:
COP DOW_Tue.DATA[0] Day_of_Week.DATA[0] DOW_Tue.LEN
You may also have to move the length of DOW_Tue into the length Day_of_Week.
Code:
MOV DOW_Tue.LEN Day_of_Week.LEN
 
I don't have a PLC at v20 to get screenshots while online, but the sequence you're looking for is "accept" -> "test" -> "assemble" (as I recall...). I'm not sure which version added the ability to "assemble all" in one step.

Basically, the "e" rungs have not been accepted yet.

Also, per @drbitboy , there was a transition at one point from MOV to COP for STRING data types. In the newer programs/controllers, I've been using COP but I remember using MOV in earlier versions. Your rung may very well be perfectly fine.

Another thing: go to the "View" menu and make sure the "Errors" window is visible. That *should* tell you about anything the compiler has issues with.
 
Another thing: go to the "View" menu and make sure the "Errors" window is visible. That *should* tell you about anything the compiler has issues with.
Joseph, I've tried toggling that on and off, and don't see anything either way.

To all, thanks for the suggestions. I'll look into those items in a bit.
 
If that's toggled on, look at the bar at the bottom of the screen. The "Error" tab should be there. Click on it and you can pin it open if you want. (I think....it's been a while since I was in v20)
 
So on my L45 system (v20.05) I entered the logic offline as you have it, and I also have an error. Changed the MOV to COP and the error went away. No other changes.

Also, the Error window can be re-sized. I've seen people shrink it to the point where it isn't noticeable when it opens. With the ladder open, click on the View Menu and select Toolbars. Click Restore Factory Toolbar layout and the error window and toolbars will be reset to their default appearance.

OG
 
OG, that sounds like an excellent idea. I'm using a VM with the software in it, and have changed to a different host PC than I used to use (VM is on an external drive), plus the VM was given to me by someone else, so it's very possible that things have gone a bit wonky with all the changes.
 
You can also press and hold left-control-shift while opening the software from the shortcut. Hold the buttons until the software fully opens. That's supposed to restore default settings.
 
So on my L45 system (v20.05) I entered the logic offline as you have it, and I also have an error. Changed the MOV to COP and the error went away. No other changes.
OG, I tried that, and it worked for me as well. I'm just more used to the old-school MOV command. Guess I need to update my repertoire! I'll see about the error window later.

Everyone, thanks for the hand! As I said, I'm a hobbyist, and I learn a little more every time I add a new feature to my program. This PLC is controlling things on my roofed and screened front porch. Ceiling fans (including speed), lights, etc., with lots of time-of-day control (lights auto-on and off at certain times of the day depending on time of year, etc.). I'm adding rungs like the one I posted to make a "custom Screensaver" which will show time of day and day of week on the Panelview+6 700 I'm using to interface to the PLC. This is why I enjoy this as a hobby. It's usually a challenge and a learning experience, but the sky (and your imagination) is the limit for what can be done with a PLC!
 
OG, your recommendation to restore factory toolbar layout fixed my issue. No idea how it got hidden like that, unless it happened when moving the VM from one PC to another. Thanks again!
 
I think it's worth understanding why COP is necessary instead of MOV.

MOV only works on atomic datatypes (foundational datatypes, not built off other datatypes), and even then not all of them. It works on DINT, REAL, INT, etc. MOV is a lot smarter than COP and actually tries to understand what the programmer is doing, so it, for example, can handle a MOV between a REAL and a DINT, because the MOV knows that the programmer wants the two values to match as closely as possible (this is still bad practice - if you ever make money off PLC programming please don't do this).

Strings are not atomic datatypes. They are comprised of a single DINT (or similar) indicating how many characters are in the string and an array of SINTS (8 bit integers or similar) representing each character in the string using ASCII encoding.

Where MOVs have the benefit of being smart, COPs have the benefit of being able to operate on any datatype. In a string's case, the datatype is the length integer and the array of character integers. A COP instruction can do this because the COP instruction is dumb. It just takes the binary values in the source memory register and pushes them to the destination memory register. It does not care what is actually assigned at either register.

To test it out, try doing a MOV between a DINT and a REAL and then try the same but with a COP. Both a DINT and a REAL are 32 bits but you will see very different behavior. This is because the MOV knows what you want, the COP does not. The way the PLC stores a DINT and a REAL, while both 32 bits, are very different behind the scenes, and results in very strange behavior if you aren't aware of what is going on.
 
OG, your recommendation to restore factory toolbar layout fixed my issue. No idea how it got hidden like that, unless it happened when moving the VM from one PC to another. Thanks again!
This was a common bug before Rockwell went to the Visual Studio based Studio 5000. Very annoying. You'll also commonly see the same behavior and even restarting the editor will not fix it. Usually you either need to convert to an L5K and back or upload from the PLC.
 

Similar Topics

Hi, We are thinking of implementing a light to our safety system that indicates that a machine is in a ceratian more dangerous state then normal...
Replies
12
Views
1,984
Hi, I'm working on a project with an Allen-Bradley PLC, so we are using Studio5000. I have a bunch of things that communicate through ethernet/Ip...
Replies
2
Views
1,251
I've created an AOI in Studio 5000 for the first time. This is an AOI to do a bunch of math to calculate air properties. I don't have access to...
Replies
25
Views
5,494
Does anyone know what “DT Errors” mean when verifying a program after downloading in Ladder Logistixs software?
Replies
6
Views
2,531
I have an application where 2 hoses will be connected to a railcar for pneumatically transporting material into a building. Is there a device...
Replies
7
Views
2,388
Back
Top Bottom