Div_by_zero

MrPLC Member
  • Content count

    97
  • Joined

  • Last visited

Community Reputation

1 Neutral

About Div_by_zero

  • Rank
    Sparky

Profile Information

  • Country United States
  1. I'm almost embarrassed to ask this question as I'm sure the answer is going to be incredibly simple and obvious, but why is there no greater than (>) contact in DirectSoft? For what it's worth, I'm running 6.1a. Thanks for any replies.
  2. Thanks Steve, that definitely helps. Question: how do I identify and define the "most recent read command". Thanks again.  
  3. Working on a communications project where I will be continuously polling 4 different Modbus enabled devices.  By "continuous" I mean that every 25 ms (a parametric value) the PLC will be reading different coils, inputs, input registers, and holding registers.  There are approximately 10 reads per device, so 40 reads total in a single read cycle. On command (random operator intervention), writes to certain holding registers will occur. In order for a write to occur, the reading must temporarily stop, then, after a short delay (10 ms), a write may be attempted. I'm trying to figure out the best, cleanest way to pause the reads so that a write can occur. The "brute force" was would be to create, for each writable value, a pause bit, a write delay timer, and a break (unpause) bit. However, this would start to add up to a lot of tags quickly, and I feel there must be a better way to do what I need to do. Any ideas? Thanks!   edit: the PLC is an Automation Direct Productivity 2000  
  4. Thanks Mark. So it sounds like on my HMI, I will need a "Poll Parameters" button that will populate all the parameter values. Then, the user will be able to see what they are and change the ones that need to be changed with numeric entries.  A "Write All Changes" button will facilitate that. Sound about right? Again, forgive me, I've never done this before. Thanks again. 
  5. I have a Productivity 2000 PLC communicating with a 3rd party device (embedded C++) via Modbus. If I want to do, say, holding register writes... This may sound like a silly question, but how do I know what the value of a register is before I write a new value to it? Do I have to execute a read before I write, or are PLC write commands usually set up to do that for you? Agan, sorry for such a fundamental question.  
  6. I posted about a compressor sequencer a few weeks ago.  This is a more specific problem associated with that project. See below.  I have (3) 16 bit registers assigned to the 3 compressors.  Each register essentially contains 3 pieces of data:  1.  is the compressor operational or faulted (bit 0) 2.  is the compressor assigned to no pressure point, pressure point 1, 2, or 3 (bits 1, 2, and 3) 3.  is pressure point 1, 2, or 3 actively calling for a compressor (bits 4, 5, and 6) For compressor #1, for example, to run, one of three states has to be present: comp_1:0 and comp_1:1 and comp_1_4 are high comp_1:0 and comp_1:2 and comp_1_5 are high comp_1:0 and comp_1:3 and comp_1_6 are high What is the cleanest, most efficient way to do these three checks on the compressor coil rung? Yes, I could simply use N.O. contacts, but I feel like there's a "cooler" way to do it within the register. Thanks for any help.
  7. Need advice on motor selection logic

    Hey Kaiser, thanks for the reply.  Sorry for the very delayed response. OK I've worked up some logic, but hit a snag.  Here's my question, was actually going to make this a new post, but figured I'd drop it in here. Say I have three compressors, and each compressor kicks in at a different pressure point.  Each pressure point (PP1, PP2, PP3) can have 1 of 3 compressors (C1, C2, C3) assigned to it, but not always the same compressor, they rotate.   PP1 = C1 or C2 or C3 PP2 = C1 or C2 or C3 PP3 = C1 or C2 or C3   Compressors can also become disabled.   PP1, 2, and 3 are registers.  If PP1=0, no compressor is currently assigned to it.  If PP1=1, compressor #1 is assigned to it, and so forth.   Let's say that C2 becomes blocked.   What would be the cleanest, most concise way to check all pressure point registers for the blocked pump #2 and set that pressure point register to zero (when a pressure point is set to zero, other logic kicks in and assigns a working compressor, if available)?  This may sound easy, any maybe it is, but I'm not seeing at at the moment.  Thanks for any help!
  8. (Allen Bradley Micro 830) I have a project that entails the control of (3) of compressors. Either one, two, or all three compressors are run depending on a suction line pressure.  As the suction line pressure gets higher, more compressors come online.  A 4-20mA pressure trandsucer connected to the PLC provides this pressure data. Each compressor has an hourmeter in the code.  The compressor with the lowest amount of hours on it gets priority, it should be run first.  The compressor with the second most hours is brought online as #2 if necessary... Compressors motors can also fault, and that is detected by discrete inputs on the PLC. So, first of all, what is the cleanest, most efficient way to determine what the smallest of a set of numbers is if there is no MIN function (or in my case, a MIN function that can only handle two numbers)?   Or, better yet, in case I ever do a larger system, what is the best way to put a set of numbers in order, and associate that order with what those number are assigned to, in this case, compressors? Second, what is the cleanest way to select a compressor based on multiple criteria?  Some sort of 2 dimensional array? Maybe I' making too much of this, but when I try to write it, it gets complicated and bulky *very* quickly.   Thanks for any help!    Note: I was not sure if I should have put this in the AB forum.  It really has very little to do with the actual processor that I'm using.  
  9. Have a Micro 830 project coming up.   I did an 830 project back in 2013, and remember having to write a work-around to compensate for the fact that there was no accumulating timer. Has one been added?  I just downloaded and installed Connected Components Workbench 10.0, I didn't see one in there. Thanks for any help.
  10. Using ladder logic and standard PLC functions (in my case, an Automation Direct P2K), what is the cleanest way to convert a timer value that's in in milliseconds to hours : minutes : seconds? ETA: the "timer value" is actually coming in from an external microprocessor via Modbus in milliseconds.  It's not a P2K "TMR". Thanks.  
  11. Running a P2K that's connected via Ethernet to a proprietary greenboard (embedded C++ running on an ARM Cortex processor) that's equipped with Modbus comms. The C++ programmer provided me with a Modbus register document.  The read only inputs (Modbus command: 04) section shows blocks 1 and 4 being 6 byte ASCII registers.  Blocks 7-13 are 2 byte integers.  Blocks 14-22 are 4 byte integers.  Blocks 24-31 are 2 byte integers.  Blocks 32-46 are 4 byte integers.   Blocks 48-51 are 2 byte integers, and block 52 is 4 byte integer. If I do a single MRX and try to bring in all 52 blocks at once as a group, nothing looks right in a Data View.  I am assuming that MRX group reads have to be limited to like register sizes?  Meaning, I would need a group MRX for blocks 1-6, another one for blocks 7-13, another one for blocks 14-22.. Is this correct? Thanks for any help.    
  12. Running a PID loop on an FR-D700 inverter

    Thanks kray, good info. So what units will Pr.133 be entered in?  Will it be raw A/D counts, 4.000 - 20.000 ma, or something else? edit: OK, I see it's going to be 0-100 %. So if the 4-20 mA signal from my pressure transducer is 0-15 PSI, then setting Pr.133 to 50.0 will make the PID's SP=7.5 PSI.  Got it. Thanks again.    
  13. Hello, Currently running an FR-D700 inverter by feeding it a 4-20 mA speed reference and pulling the STF run forward signal low.  The VFD is running a ring compressor / regenerative blower. Would like to change the setup so that a pressure transducer on the low pressure side of the blower feeds the VFD a 4-20 mA signal, and the VFD's on board PID loop modulated the drive speed so that a certain pressure set-point is maintained. I'm assuming this is possible and a pretty standard setup?  Do I just change some parameters so that it will consider the 4-20 mA loop the PV?  How do I change the SP on the fly?  Is that done via a parameter change, or can a second analog loop be used as the SP? Thanks for any help!
  14. Well, turns out I went with a Rigol 1054Z.  I did the upgrade thing via a web site, it's now essentially an 1104Z.  Pretty cool. This is my first scope, have a couple very basic questions: 1.  The scope is rated for 300 V.  If I use a stock probe set to 10x attenuation, can I safely measure a 480V waveform?  I assume I need a high voltage probe for this?  Don't worry, I won't even try this until getting a solid answer. 2.  When trying to "zoom in" on part of a waveform by turning the volts/div down, I often find myself getting lost.  Also, when cranking the vertical position to try to get back to the trace, I'll often get a "parameter limited"  What am I doing wrong here? Thanks for any help.    
  15. Hi Jawolthuis, In your opinion, how does that Fluke compare to the benchtop models?