Div_by_zero

MrPLC Member
  • Content count

    97
  • Joined

  • Last visited

Everything posted by Div_by_zero

  1. Thought this would be a fun, constructive topic: Age-old debate where I work. One side of the argument is that you can do a lot more with embedded c (or ++). There are almost no limitations. My side (the opposing side) is that while that *may* have been true 10+ years ago, it's really not anymore. I also believe that when working with PLC's, the programmer can focus much more on the MACHINE (i.e. what is being controlled), whereas with embedded c, so much focus must go into the CODE itself and the machine almost becomes an afterthought. Granted, this is a PLC forum and not a c forum so I am guessing there's gong to be a strong bias toward PLC's, but what are some thoughts on this?
  2. I'm getting to the point where I think I could take on some freelance PLC programming work. Problem is, I have absolutely no idea whatsoever how to go about getting it. How do you guys/girls get hooked-up with work? Thanks for any guidance!
  3. 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.
  4. 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  
  5. Thanks Steve, that definitely helps. Question: how do I identify and define the "most recent read command". Thanks again.  
  6. 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.  
  7. 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. 
  8. I need to log a relatively small (~3.0V) DC voltage on a PCB. I'm thinking about getting a Fluke 289 which would do the job, I think, except it's battery powered and it would die well before my test (up to a month) was over. I need to log the voltage 24 times a day. I was thinking about using a PLC, but wasn't really sure what type of input module would allow me to do this. Perhaps some other piece of plug-in standalone equipment? I have an energy logger, but it's line powered and really geared towards mains work, not this sort of thing. Please advise, thanks!
  9. Say I want to start 10 motors. I want there to be a X second (HMI input parameter) delay between the starts. There are a million ways of coding this, I've probably done about half of that million, but what's the best, smiliest, and most concise? Thanks.
  10. I want to make a small simulation / debug box. This box will have a PLC, an additional input card, output card, and an analog I/O card. It will have a touch screen and a way to interface with the outside world. The simplest job it could have is simulating one to say 16 discrete inputs on the panel PLC that I'm testing. The touch screen will allow me to easily label the individual test buttons, as well as give me a ton of other flexibility over physical buttons or switches. Beyond that, an analog I/O card would allow me to simulate continuous level sensors and other such devices and control them from the touch screen (a whole lot cheaper than purchasing several Fluke 705s!) This is all the easy part. Selecting the components and programming the simulator PLC code is cake work. What I'm trying to figure out is how I want to make the wiring connections to the outside world. What kind of terminals / termination points would be the most versatile and what would offer the "cleanest", most organized look and function, and be expandable. I've seen plenty of sim boxes that are a big spaghetti mess on the outside..no fun to deal with. Thoughts / comments / advice welcome. Thanks!
  11. 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.
  12. (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.  
  13. 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!
  14. 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!
  15. 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.
  16. Hi Guys, Looking for a good commercial Modbus data acquisition and logging software with a half decent customizable GUI. Looking at both an inexpensive solution and would also like to know what the mid and high end solutions would be as well. I would be polling data from say up to 30 processors, max. Thanks for any help!
  17. 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.    
  18. 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.  
  19. 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.    
  20. 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.    
  21. Wanting to buy my first oscilloscope. Need some help here, the choices are overwhelming. What bandwidth and what sampling rate would be appropriate for an "automation guy"? Also, what brands are good? I'm willing to send up to $1,000, but would like to explore the $500 region first. Also, what probes?  It is my understanding that probe quality is critical. Some things I would want to do with it, not limited to:   -0-10V and 4-20 mA analog signal voltage analysis (noise) -AC power waveform analysis (up to 480 VAC) -DC power supply quality analysis -inverter output waveform analysis   Thanks for any help!    
  22. Hi Jawolthuis, In your opinion, how does that Fluke compare to the benchtop models?    
  23. Hi Mendon, Yes, sort of figured it was going to heavily depend on whether or not I'll be using it for communications. I'd say at first, it will not be used for communications at all, but if it had the ability to do at least some of that, it wouldn't necessarily be a bad thing. I gather that the scopemeters, even the nice ones like the Flukes, are really only good for things like determining if you're feeding a $20,000 motor with garbage power or not while in the field...  
  24. Have a redundant PLC project. Two Automation Direct '06s, one EZ Automation SE 6" touch screen. Is there a way that I can send a value (a bit and/or a "V" numeric) to both PLCs simultaneously via one pushbutton or numeric entry? I have both PLC IP addresses configured in the HMI and know how to address the tags to one OR the other, but haven't figured out how to hit both yet. Any help would be greatly appreciated, thanks!
  25. Hi Mendon, I think that might work with a momentary or toggle pushbutton, but not sure how that would work with a numeric entry, something that pops up a dialogue box...