MicroLogix 1500 data file corruption

kolyur

Lifetime Supporting Member + Moderator
Join Date
Oct 2004
Location
Wooster, Ohio
Posts
1,602
I have a Micrologix 1500 with LRP processor. My program has several floating point data files which are used to store machine settings, with about 140 elements in each. These files are only modified by the programmer (me) through RSLogix. There are no write instructions to the files in the ladder logic, I'm certain of that. Data is typically read from the files at various places in the program with indirect addressing, i.e. MOV F[N7:11]:30 F8:0.

The problem is that in one of the floating point files, data in two of the elements keeps getting inadvertently changed. It is always the same data file and the same two elements. These two values are normally whole numbers, like 6.0, but when I connect with RSLogix I sometimes find that they have changed to some crazy number like 9.764696e-40. (Which, by the way, is out of the range of valid floating point values. If I double-click on the number in the data table and hit enter, it won't accept it until I change it.)

I suspect the problem is related to RSLogix communications because I only notice the changes when I go online or do an upload. The machine function would totally go nuts if these values changed while it was running and that hasn't happened (yet). Is it possible for a memory location to get corrupted?

One more thing: There is a Panelview 300 Micro talking to Channel 0 of the PLC through a 1747-DPS1 port splitter. I added the splitter so that I could connect with RSLogix without disconnecting the HMI. (Channel 1 is dedicated to ASCII serial.) The Panelview does not read or write anything to the data files in question.
 
Is it possible for a memory location to get corrupted?
Yes, theoretically it is possible because at the lowest CPU memory level, the bits are either 1 or 0, and one or more memory bits could be malfunctioning. Can you move the data file that contains the two corrupted values to some other memory location? If that solved the problem, then it is probably a failing memory.

I once worked on an old Unimate robot that had a bad or failing memory. We called him Hal, the Crazy Robot. When his program got into the bad memory, he would go crazy, pushing his arm in and out so fast that it caused him to dance across the floor. That is a story for another day.
 
Last edited:
I have never seen spontaneous corruption in a running a/b PLC. I have seen weird chit happen due to craap on the 232 wires. I would suspect the splitter or the HMI/PC first.

Also, try hitting ESC when you double click on it and are forced to change it.
 
I seldom use the word "impossible". The Universe is a big place.

But it's very highly improbable that you're getting an undetected corruption in RAM or in a serial protocol that includes a checksum (like DF1 or DH485).

There is a higher probability that something is writing to the incorrect registers for another reason (a software bug), which I would expect to fault the controller, or something is reading the registers incorrectly and showing those incorrect values in RSLogix 500.

Are you going online and seeing these "wrong" values because something is malfunctioning on the machine ? Does the controller fault ?
 
The only time I see the weird values is if I go online, or do an upload, when the machine is not running. The values have never spontaneously changed while the machine is running which leads me to believe that the problem is not with the logic. I haven't tried starting the machine after observing the change, without correcting it first. I suppose that doing this would tell me if the value is stored correctly in the PLC but display wrong in RSLogix (for whatever reason).

The controller does not fault when this occurs.

Right now I'm testing data file protection on the affected files. It's too early to say if that will fix the problem, but it's not a preferred solution as I would like to be able to modify the data while online.
 
I think this is a PC hardware and/or OS messing up the display of the floating point value thing...

I didn't mean to imply earlier that I thought noise the wire was the likely issue, rather everything from your kb and screen to the other end of said wire is more suspect than the PLC.

Can you edit the PB32 app to display the suspicious value?
 

Similar Topics

Hi all. I am working on converting a PV300 to a PV C400. System is using a Micrologix 1500LRP with several expansion IO modules. Communication...
Replies
5
Views
2,145
Hi there: I use NI Lookout 6.0.2 with Micrologix 1500. In the PLC program, I have some data files like L9 (long integer - 2 words), F10 (real)...
Replies
0
Views
2,291
I am using a Micrologix 1500 ARD instruction, It says it read in 56 characters but they are not being displayed in the ST register where they are...
Replies
10
Views
4,409
I need to move some data from N7:20 to ST20:1 so I can send it as an ASCII String to a data logger. I used the mov command: Source: N7:20 51...
Replies
18
Views
5,007
I want to send data periodically from micrologix 1500 through serial port using AWA instruction. I could do this with SLC 5/03. I used the COP...
Replies
2
Views
6,264
Back
Top Bottom