Help - Search - Members - Calendar
Full Version: Ultra 3000i with 9113 from Quartech
Forums.MrPLC.com > PLCs and Supporting Devices > Allen Bradley
crsgab
Hello:

We have two machines that will be upgraded using 9113 modules from quartech.

The supplier from the machines sent the new PLC code that will use the 9113 but I found some errors that I have fixed but I still have issues.

Our machine has a Micrologix 1100 with ethernet port and Panel View 600 plus

The purpose for this upgrade is to change the final depth position( index 3 ) and when this is applied automatically change the previous index ( 1 and 2 ) used for the relief of the tool ( index 2- 70% final depth position and index 1 - 80% final depth position)

At this point we are just trying to modify the index 3 and when is ready will try to modify the index 1 and 2 , as this machine makes drills the quality guys measure the depth for the holes , sometimes is necesary to add or substract by increments of 0.001" the final depth position from the Panel View , this is where the 9113 sends the position change to servo drive.

I have made some tests to the program, while the servo drive is turned on the changes are applied with no issues, the problem starts when the drive is turned off and turned on again , when the PLC code reads from the message instruction the position on index 3, it reads the previous position stored on index 3 ( the position stored before the last change) , I added a button that write on L125:3 ( retentive memory) the position but on the PLC where the message for read L125:3 is stored does not show the new value saved.

We also have one option to modify the dweel time on index 3 , this works great with no issues.

Does anyone have experience about this? I have attached the PLC code that I´m using.

Any help is welcome

Regards
paulengr
All files are normally "retentive" in PLC's (at least with AB PLC's). It doesn't matter if you use integer (N) or long word (L) or reals (F). User memory files are stored in battery-backed static RAM's (SRAM's, known for very low power). The very early PLC's used bubble memories or magnetic ring cores. Some models now use EEPROM or the flash equivalent and hold enough capacitive charge to write out the RAM before powering down to just a real time clock. This is "normal", expected operation.

You determine whether a particular memory location is "retentive" or "nonretentive" by how you program it. In your ladder, there are "nonretentive" and "retentive" instructions. OTE is an example of a nonretentive instruction...on prescan, the register pointed to by an OTE instruction will be reset. OTL/OTU are examples of "retentive" instructions...unless you change the input conditions to cause them to fire, the bit pointed to by an OTU or OTL remains in the same state.

With word (integer, long word, or floating point) files, there is no such thing as a "nonretentive" value because there aren't any nonretentive instructions for those memory files. You can only simulate the behavior by using the power up bit (S:2/15), programming a power up routine, or by some tricky programming using a nonretentive bit instruction as a trigger.

The only way I can see you easily breaking this is if you've installed a memory card and you have the processor set to load the program from the memory card on power up. In this case, it will always reset back to the original conditions of the program stored on the memory card, INCLUDING DATA, because that's what it's supposed to do. The only way to get around this is with creating a recipe (RCP) file and saving/loading this. Note that this will "wear out" your memory card over time (memory cards have limited number of writes that they can tolerate, but some are better than others and "wear levelling" can make this problem go away almost entirely).

I suggest looking at your code closely to make sure you are using long words correctly because what you've described is not a power up/power down problem, it's a code problem.

Start by using a single standalone controller and writing some very simple test programs on it on the bench. For what you are trying to do, you don't even need actual code to demonstrate "retentive" memory...just allocate some memory, change the values in Logix 500, turn it off, then on, and verify that everything has stayed the same.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Invision Power Board © 2001-2010 Invision Power Services, Inc.