Michael Lloyd

MrPLC Member
  • Content count

    719
  • Joined

  • Last visited

Community Reputation

45 Excellent

1 Follower

About Michael Lloyd

  • Rank
    Expert
  • Birthday 06/01/58

Profile Information

  • Gender Male
  • Location Texas
  • Country United States
  • Interests Photography, Long Range Shooting, Reloading, Fishing, Hunting

Recent Profile Visitors

4075 profile views
  1. My Model Train Project

    I was wondering how the full scale controllers work and I came across these when I googled "supervised railroad interconnect circuit":  http://www.dot.state.mn.us/trafficeng/signals/worksheets/preemtionmanual2004.pdf https://static.tti.tamu.edu/tti.tamu.edu/documents/1439-9.pdf It might not be helpful or scale-able but I thought it was interesting, Starting around page 127 (first link) they get into calculating the amount of time it takes a vehicle to accelerate through an intersection after the signal starts to flash. I only skimmed it so there's probably more info (useful? Maybe. Maybe Not). The photo on page 50 of the first link is worth a look :) The old school switchers are made up of simple relays and switches (very robustly constructed though) so definitely something a PLC could do. Power supplies- If for some reason you find yourself needing a lot of DC power you can find used Astron power supplies online fairly cheap. Ham operators (NE5U) need a lot of 12VDC power , at least we think we do. I just picked up an Astron RS20A in what seems to be like new condition (I load tested it and it'll do the full 20A with no issues) for $50 including shipping. 12VDC / 20A . Powerwerx also sells power supplies but they'll set you back a bit:  https://powerwerx.com/power-supplies  I've been running their 30A supply for a few years.
  2. logix 5000 array

    There are a lot of ways to skin this cat (no offense to cats) but I'll offer mine, create a UDT (User Defined DataType), I called mine DateTime and it looks like this: Year    DINT    Decimal    Year    Read/Write Month    DINT    Decimal    Month (1-12)    Read/Write Day    DINT    Decimal    Day (1-31)    Read/Write Hour    DINT    Decimal    Hour (0-23)    Read/Write Minute    DINT    Decimal    Minute (0-59)    Read/Write Second    DINT    Decimal    Second (0-59)    Read/Write Microsecond    DINT    Decimal    Microsecond (0-999,999)    Read/Write GSV is running in a structured text program that does a few other things. The top line is relevant to this post and it's all you would need. *** GSV(WALLCLOCKTIME,,DateTime,CLOCK.Year ); GSV(FAULTLOG,,MinorFaultBits,Minor_Faults ); GSV(FAULTLOG,,MajorFaultBits,Major_Faults ); GSV(TASK,MainTask,LastScanTime,IO_Test_Info.Last_Scan ); GSV(TASK,MainTask,MaxScanTime,IO_Test_Info.Max_Scan ); GSV(TASK,MainTask,Watchdog,IO_Test_Info.Watchdog ); ITI.Last_Scan := IO_Test_Info.Last_Scan / 1000.0; ITI.Max_Scan := IO_Test_Info.Max_Scan / 1000.0; ITI.Watchdog := IO_Test_Info.Watchdog / 1000.0; Flash.S := CLOCK.Second.0; Flash.F := CLOCK.Microsecond.19; OFF := 0; ON := 1; ID := 0; (* PID Increase / Decrease Control Action *) II := 1; (* PID Increase / Increase Control Action *) *** If you don't have structured text available you can call GSV in ladder.  Then I create a tag called Clock and make it of the DataType DateTime In your case the data type would be DateTime[xx] where the xx is the number of times you need to log the parameters in the Clock tag I attached a screenshot of an example of what the tag would look like if it had an array size of 10  Now you just increment a pointer and move the  Clock tag to the Test(x) tag, where x is 0, 1, 2, etc ie the incremented pointer Tip: Don't get wordy with the Tagname. Ie don't make it TimestampCaptureArray or something like that. Use TSCA or something short and document it in the Description. Too many people try to describe the whole routine with the tagname :-/ That's what the description is. Long tagnames clutter up the program, make it a pita to troubleshoot, and make it look like you imported your program from a SLC or PLC5. I used to write novels with my tags. Then I started doing contract programming and it became clear that something had to change. Time is money, typing takes time.  
  3. PLC 5 to Compact Logix with a Message?

    That's going to be it. When I talked to him yesterday he said "I may need to make a new tag". I told him that he couldn't use the same tag but he wasn't sure if he did. I'll send him an email and see if he added a new tag and changed his message to use the new tag. I sent him a program that has 6 or 7 message routines going out to as many different CLX PLC's scattered all over south TX (from San Antonio to Laredo to Corpus Christi) but it was all CLX to CLX and I don't know if he ever looked at it.
  4. PLC 5 to Compact Logix with a Message?

    I was asking for a coworker. Apparently the PLC 5 and CLX machine are already exchanging messages via DH+. He needs to transfer more data. He has the perfect "go by" and has duplicated what is already there (apparently not duplicated well enough). I suspect that there's a typo and he'll eventually find it. Thanks for your help
  5. I have 0% experience with the PLC5 (and I'm not unhappy about that at this point). I've written 100-ish programs for the Control Logix, SLC, and Micrologix platforms and I'm comfortable in those systems.  I'd like to read values from a PLC5 using a Message in a CLX PLC. Is that doable?
  6. My Model Train Project

    I like the documentation that you did. To my way of thinking that's the heart of a good program and pre-planning is the soul.  Sad but true. I start every program with a spreadsheet that has an IO sheet tab, remote IO sheets in tabs after that, transmitter list tab, Shutdown and Alarm list tab, and last, the cause and effect which is linked to the Shutdown and Alarm list. My programming world centers around the oil and gas business so my spreadsheet and programming layout is a function of that business. I probably get 75% or more of the program documentation from the IO sheet (copy, paste, import) and the Cause and Effect keeps on track for when an output is supposed to be off.
  7. rs logix 5000 cross referencing

    I've rebuilt a lot of programs from electrical drawings and ladder logic but this one is the most daunting. It's a boiler burner management system and it's written for oil fired burner(s), gas fired burner(s) (mulitiple burners), and a myriad of different process configurations. There are an obscene qty of routines and tags. However the old joke "how do you eat an elephant / one bite at a time" applies. I've already documented the IO. I'll cross reference IO to aliases (more than one alias per IO point), pick the alias that applies and document it, then start weeding out the non-functioning routines. It'll eventually come together. In the end, once I figure out the program well enough to develop the cause and effect, I'll rewrite it to fit the application. Side note- I despise aliases. I wish I could go back and rewrite every program that I ever wrote that used an alias. I switched to User Defined Data Types a long time ago (with the old S7-300 and 400). They make the program easy to follow, the tagname database is easier to navigate, writing the HMI program is easier, and programming in general takes orders of  magnitude less time.
  8. Rockwell Training (CCV207 FTV SE)

    I like to think of it as the spawn of satan but poison works :)
  9. Is it safe to divide an INT to Real ?

    It looks like your PLC is a Control Logix not an SLC. If that is correct I would scale the Analog input on the card of it's an IF8 or IF16. You can scale it as a real and do a compare.  or Take a look at the example program. The IO is scaled on the card. Then a loop pulls the scaled data into an analog alarm block. You can set alarms and shutdown setpoints in the alarm block. Alarm bits for each tag are in the block. Deadband. Etc. All tags can be referenced by an HMI Example of a LACT.ACD
  10. Is it safe to divide an INT to Real ?

    As long as source B is never zero it should work. I'm not sure how a raw analog value can be divided by a constant and end up with a useful floating point value but that's not the question is it? :o)
  11. rs logix 5000 cross referencing

    I’ve got Studio. Since we are upgrading to Win 10 I probably have the version just below the one that works with 10. The program I’m trying to decipher is version 21.  I need to be able to cross reference the entire program not one tag. There are over 4000 tags, most are aliases, in the program I’m working with. Some are for routines that don’t have any function in service that the program is in but some are used in more than one routine. For instance, there are routines for oil fired burners but there is no oil fired burner. I’m trying to build an alarm and shutdown list then build a cause and effect. Cross referencing IO doesn't insure that I have all of the info I need to do that.
  12. rs logix 5000 cross referencing

    Dragging one up from the antique bin... If you are looking at fixing a fairly large program that someone imported from a SLC, that has a lot of routines programmed that aren't used, the cross reference feature would be very handy. It doesn't look like it has been revived from what I can see but I thought I would ask anyway. There are over 4000 tags in this program, most of which just occupy space, in this piece of SHcrap program. The vendor wrote it so they could turn on or off a few bits here and there and make the program fit a wide variety of equipment that they sell. Laziness passed on to the customer is not cool... yup... laziness. Being able to import an SLC program into CLX is one the worst idea AB ever had. I have a much longer rant but I'll just leave it at that. 
  13. Rockwell Training (CCV207 FTV SE)

    I guess it depends on how you learn. I tend to learn by looking at someone else’s work as well as using the manual and sites like this one to help me come up with ways to accomplish specific things.  Training is usually more about how to navigate the software than how to make it work for your application. 
  14. Ditto. I've got some info moving between a half dozen PLC's that are literally a hundred miles apart (maybe a bit more). Someone else takes care of that area now but as far as I know it's still working flawlessly. The application is to shut upstream pumps down if it sees a downstream valve open limit switch break (open).  Setting up a Message is easier for a tech to comprehend than produced / consumed and it's easier to change or add a Message than produced / consumed.
  15. WIFI Communication to RIO

    I think the link was for hardware that you could use to set up the WiFi network.  I probably work in a different industry than you do. We wouldn't use remote IO on a WiFi network unless failure of the link combined with failure mode of the card would absolutely never cause an unsafe condition. That said, I put some point IO on some water pumping stations. The IO was for monitoring and control of stations that were a couple of miles away from the controller. Comm was via an iNet radio and ethernet cards in the racks on each end. The remote IO looked like any other ethernet IO rack in the facility. It worked great with one little exception. When I put the system in it was fall. The trees didn't have leaves on them. When spring came the remote rack communication dropped out. We had to raise the antennas above the height of the trees. Apparently pine trees attenuate a 900MHz radio signal. :o) It was a good lesson. We picked an easy antenna height vs climbing to the top of the tower and putting it there. If anyone is interested, the field based water pumps filled a tank at the station and then high pressure (2,000 psi-ish discharge pressure) pumps took suction from the tank and pushed the water into storage caverns to displace ethane, propane, or butane (not mixed, there were individual caverns, out of the salt cavern and into a pipeline. Technically the field water wells were not required for safe operation so point IO worked.