Engine Hours for PM Reminders RS5000

Logix_User

Member
Join Date
Jan 2010
Location
Louisiana
Posts
4
I am working on trying to logic to remind us of pm work due on our engines based on engine hours. I thought about it today and can only come up with using LIM, GRT, etc.. The only problem is this will be a pretty large routine. I don't mind doing the work, but if there is cleaner way I would like to use it. I have pm's that will need to be done between x to x hours, only problem the hours vary and the pm list is around 200 items. I can handle the old school way of LIM-OTE, just looking for something cleaner. If I understood the user defined tags a little better, I could use a few rungs for all pm's. (I think)? This may not make sense and I don't have logix on this computer to post a screen shot of what I stared on this afternoon. Any advise would be greatly appreciated.

A little background I am an RS 5 / RS 500 guy, I am decent with the RS 5000.
 
Why not put your PMs in an array with a timestamp of the last time that the machine was PM'ed and then index through the array comparing the current time to the timestamp of the last PM to find the devices that have a PM coming up?

The nice thing about this approach is that it is scalable, you can keep on adding PMs to the system without having to change your code.
 
Use a totalizer function block for each engine. Totalizers are easy to set up to accumulate hours. The totalizer block has a preset target where you would enter the time between PMs for the engine. When the time is up, the TargetFlag bit will go high. When the PM is complete, reset the totalizer.
 
rootboy said:
Why not put your PMs in an array with a timestamp of the last time that the machine was PM'ed and then index through the array comparing the current time to the timestamp of the last PM to find the devices that have a PM coming up?

Cycling through an array of data like that makes for program code that is hard to read and understand.

Logix-User, If you have V16 or greater, then I would go for an add-on instruction which you devise yourself to accumulate hours.
Then place an instance instruction for each engine.

If you want help on this post back.
 
I don't fully understand how to build the array. Everything I have is ver 15, I will check on this to be sure though. Also, I do not have the function block editor license. Thanks for the replies. I am interested in building the array or the add-on instruction if I have a newer version than I'm thinking I do. The array will scan though a set number of similar tags right?
 
This sounds like a great application for an array and indexed addressing. With a list of around 200 engines, using an indexing routine will keep the amount of code to a minimum. You can create your own data type, with all of the registers and bit status information needed for each engine. Then create an array, with a length of 200, of that user defined data type. Using an indexing routine you'll only need to write the PM code once, and use the indexer to loop through the logic 200 times, increasing the index by one each scan. When the index reaches 200 (or the maximum), reset the index to 0 and it will loop back through. Hope this makes sense.
 
Use a totalizer function block for each engine. Totalizers are easy to set up to accumulate hours. The totalizer block has a preset target where you would enter the time between PMs for the engine. When the time is up, the TargetFlag bit will go high. When the PM is complete, reset the totalizer.

I'll second Danny's suggestion. There is no need to re-invent the wheel here, RSLogix already has an instruction to do exactly what you describe. The TOT is perfect for this application, and best of all its built in, making it super simple. But you need the FB exensions to use it. However, if you want to keep a running hours total then instead of resetting the totalizer just add the maintenance interval to .Target - eg for monthly maintenance .target := .target + 720 hours.

See the link below to another thread for info on how to set TOT up as a time totalizer and using the targets and target flags for maintenance.

http://www.plctalk.net/qanda/showpost.php?p=348694&postcount=7
 
Last edited:
By any chance would you have this data previously recorded in a Historian? A "report" could be written to publish an update.

One of the troubles with doing this within a PLC is the potential for really getting the times skewed when you download code. You (or someone) would have to remember to manually update the datatables to previous values.
 

Similar Topics

Anyone have links to Siemens libraries for S88 state engine? I assume they have this for download somewhere...
Replies
0
Views
598
Hello all, Some of you may be familiar with the RAM searching program for Windows computers, Cheat Engine. You can search RAM directly for...
Replies
0
Views
737
Hey there, I would like to communicate to Unreal Engine (PC), to/from an AB PLC. Could someone, please, guide me through the process. Thank...
Replies
15
Views
3,951
I would like to build a gas engine pull start test machine. I envision a electric motor with a large cam or pulley. Pulley diameter would be...
Replies
10
Views
2,659
Hi I have a AB Compact logix connected with a HMI x-way Ethernet/IP to CAN J1939 Converter that is connected to a CAT engine. I have an Input and...
Replies
5
Views
2,769
Back
Top Bottom