Joe E.

MrPLC Member
  • Content count

    1016
  • Joined

  • Last visited

Community Reputation

135 Excellent

3 Followers

About Joe E.

  • Rank
    Propeller Head

Contact Methods

  • Website URL http://

Profile Information

  • Gender Male
  • Location Blacksburg, VA
  • Country United States

Recent Profile Visitors

6381 profile views
  1. If we have an engineer or two who need training, we will probably send them to off-site training. When we wanted to train our electricians, we brought the trainer to the facility. The first time around (for Siemens PLCs), we brought in Siemens with their trainer and hardware. The second time around (for Rockwell), we brought in a local guy with a LOT of experience to train our guys. We had one of the electricians build trainers using spare hardware of the different platforms and used our laptops. So...bottom line...yes, it would be useful. And actually preferred to bring in someone local who knows what they're doing and is more likely to be able to customize the training to match our systems.
  2. Unconfigured I/O Address Used

    I looked at your program.  Open the data file I1. It will show you which input words are available. There are 4 words of inputs available at slot 0, 0.0-0.3. These should be the built-in inputs. The next input word is I:1.0, which is part of a 4-channel Thermocouple input module. Are you trying to get information out of the 1762-IT4?
  3. FactoryTalk Alarm Messages

    We all have gotchas like that. Thank you for posting the resolution!
  4. 2098-DSD-HV150-SE behaving as a 2098-DSD-HV150

    I found this in the drives integration manual: Edit to add: https://literature.rockwellautomation.com/idc/groups/literature/documents/in/2098-in005_-en-p.pdf Page 82
  5. FactoryTalk Alarm Messages

    This may seem stupid...but... Try rebooting your PC and re-compiling the .mer file. I've had multiple glitches with stuff like this that were fixed with a simple reboot and recompile.
  6. Allen Bradley HMI PVPlus 700 Number Pad

    I ended up creating my own number pad that interacts with code in the PLC to blank out the entry. It took a bunch of work to get it right, but it does work. At each button push, it checks the existing number to make sure it won't exceed the max value for the register (I originally wrote it for a MicroLogix, so 32767 is the max it will take). I tried to make it self contained within the HMI using macros but I had a hard time making it work.
  7. Student advice

    Sorry, I got caught up in work stuff and couldn't take a look yesterday. Today isn't looking good either.
  8. PLC5 and the new guy

    If you have a spare 5000 PLC (you do, don't you?), set it up on your desk or workbench and "play" with it. Try porting over a PLC-5 program. One of the things I really like about the 5000 platform is that you can inhibit all of the I/O and the PLC will sit there happily running the program without any issues. You can then add an extra program to simulate the I/O. For instance, I've written code in the simulation program that will turn on an input a certain time after its associated output turns on. That way, I can test and validate the logic. You can also adjust the response time of the devices to see how a cylinder that's wearing out would affect the overall machine's operation and find a good way to interlock it with other components and develop alarm messages to notify the operator. If you don't have a spare PLC, you should definitely get one. At least one. With all of the parts and pieces it needs to operate on your bench (chassis, power supply, network module, etc.).  
  9. Student advice

    I think I understand what you're trying to achieve. Based on what I see, if you see a part that is NOT an assembly, set the bit in the reject array. If it is, don't set the bit. Whether it's an assembly or not is determined solely by the status of IP3. So, if you see an item at IP4 without IP3 being on, set the reject bit. If I'm missing something or misunderstanding, I'm sorry. I have to leave now and will take another look in the morning.
  10. Student advice

    Do you really care about the rings per se? As I understand it, you only care if it's an assembly or not. If it's an assembly (latch/seal for IP3 = 1), don't reject it. Otherwise, track it and reject it. For that purpose, IP8 is redundant. It doesn't give you any information you need, at least to solve this particular problem. However... In my experience, "they" will always want to know more than good/bad; they will want to track why it's bad. To do that, you could set up a tracking array for each defect (2 in this case). Use one array to track pegs (easy, IP4 = 1 while the latch/seal for IP8 = 1) and the other to track rings (harder but not too bad, IP4 = 1 while the latches/seals for IP3 and IP8 are both 0). Then you'd reject if either array has a "1" at the reject position and you could also accumulate a count of each type of reject. Both arrays would shift at the same time. If you get many more defect reasons, you probably won't want to stay with bit shifts but use word shifts, where you have an array of integers. Each integer represents a "position" while each bit within each integer represents a defect cause. Also: will there ever be more than one part between IP4 and the reject station? If so, will the number of parts ever change? If so, you will likely need some sort of FIFO arrangement instead of a bit shift array. That will be a problem for another day...  
  11. Student advice

    Ok... With there being a lag between IP3/IP8 and IP4, that does complicate it somewhat but not unduly...as long as there's a gap between the parts. If there's sufficient gap between the parts, you can use a latch or seal-in to record IP3/IP8 when they come on. Generally, using a seal-in is preferred, but a latch will work. Then, when IP4 comes on, you check the status of the bits that IP3/IP8 set/sealed and make a decision at that point whether or not to set the bit in the shift array. So... In the instant that IP4 comes on...if IP3's latch/seal is OFF, the item is not an assembly, so you reject it. If IP3's latch/seal is ON, the part is an assembly so you don't reject it. In either case, you set the input bit status and shift the register, either when IP4 comes on or when it goes off. After you shift, you then clear the latches/seals from IP3/IP8 and you're ready for the next part. For just this purpose, where you're trying to reject everything except assemblies, you don't need IP8 at all. You just care that something's there (IP4) and it is/isn't an assembly (IP3). It may be useful at a later date to track pegs and rings separately, but that's beyond the scope of what you're asking here. My other question was merely curiosity about why there are two different instructions that appear to do the same thing: write 0 to a bit. In the AB world that I'm used to, the RES instruction is used to reset timers, counters, etc. while the U instruction unlatches a single bit.
  12. Student advice

    Sorry, I can't look at a youtube video right now. I'm really not just ignoring it... Do IP3, IP4, and IP8 operate simultaneously? In other words, if an assembly passes by, do all 3 inputs turn on and off at the same time? If the 3 inputs are synchronized, try changing rung 11 so that it only turns on R1.15 when IP4 is on AND IP3 is off. Eliminate rung 12. Then shift the data. You may need to use the other state of IP4 to shift it properly. I see an RES instruction and a "U" instruction. Both seem to be used on individual memory bits. What is the difference between them?  
  13. Student advice

    What is the device between IP3 and IP4? Is it a gate? Or a light barrier? How many parts could be in the system at a time?  
  14. Student advice

    I'm not sure how the shift register works in this software, so I didn't dig much into troubleshooting it. Are you tracking each of the 3 things (peg, ring, assembly) with its own register? If so: If IP3 = 1, track an assembly if IP8 = 1, track a peg If IP4 = 1 AND IP3 and IP8 are BOTH 0, track a ring. If you just need to track items to be rejected (lone pegs and lone rings, but not assemblies, right?) then it's even simpler. You would use IP4 AND NOT IP3 to set the reject bit in the register. This would set the bit to track anything that's not an assembly. You can still trigger the shift with IP4 since it turns on for all of the items. Just be careful that you set the bit and shift the bits in the right order.
  15. Student advice

    You're right, it's a lot easier to see in the screenshot. If rung 11 is intended to detect a ring, your conditions should be in series, not in parallel. That rung will be true if IP3 is OFF, OR IP8 is ON OR IP4 is OFF. I suspect that IP3 and IP4 will be off most of the time and only turn on when something shows up. Instead, to detect a ring, you need IP3 to be OFF, AND IP4 to be ON, AND IP8 to be off. IP8 is on only when a peg is present, so you can use it alone. Same with IP3 and assemblies. The only one you need all 3 sensors for is the ring.