waterboy

MrPLC Member
  • Content count

    417
  • Joined

  • Last visited

Everything posted by waterboy

  1. I have used submersed probe ultrasonics on clarifiers to detect the "blanket" level. They work great as long as the sensor stays submerged and there is a big difference in density at the material interface. If you need a model number I can get that tomorrow.
  2. Copy tag descriptions?

    I see that CR/LF are replaced with a Dollar sign N($N) Does that import as a CR/LF again? I also dont see my arrays beyond the top level.
  3. Using CLX I tried to capture the state of a bunch of bits using a single ONS and branches like this ONS XIC1 OTE1 XIO1 OTU1 XIC2 OTE2 XIO2 OTU2 When in a continiously scanned ladder this will hold the OTE's in whatever state they are captured in. I thought the ONS would prevent this but . . . So I put the above in a routine and then used ONS JSR1 And that worked like a charm. I can manipulate OTE1 and OTE2 without a problem after the initial scan. Why the difference? Shouldn't the ONS have done the same job as the ONS to JSR?
  4. ONS against bits vs JSR

    I had considered the power up problem, I will be using the power-up ladder ( I might have that name wrong) to home everything and leave it in a known state and you are (of course) right that the unconditional ONS may not be reset when something goes wonky even after the first scan. I saw very quickly that issue simply taking a ladder off scan ! I tried solving that by reseting the bits I used for the ONS, but than saw how silly that was, tossed that idea and got rid of them (and Timers) in any ladder that can be put off scan. I can see the potential of what might happen should the power fail in mid transit, PLC not knowing where the device is or even which way it is going. In this particular case I am safe, the devices all simply get out of the way upon restart, Operators put things right and then start up again, But I will look into the "underbrush" just to improve my techniques. The stuff I usually design from the ground up is very slow moving and generally sequential so I can get away with quite a lot of. . . less than optimal . . . code. But I am aware that I can do better and I do appreciate it when a better technique gets pointed out. I will look at the prescan. I never gave it much thought before. And of course I will turn it over to a real operator to see if he can break it before it goes live.
  5. ONS against bits vs JSR

    Fair question, In this specification I need to capture the current commanded position of several devices just as the system is switched from an automatic sequence into a manual control mode. Essentially freezing the process right where it is and then allowing manual control from that point in the sequence. This requires that I disable a set of control bits (xic) and use different ones. I do this by jumping (JSR) out of the current ladder set and into a specific ladder, running only that one. This abandons the automatic recipe driven control bits that were in play and instead uses a different set used only for manual control. Switching back to automatic likewise abandons the manual bits and uses the automatic ones again. In this case exiting manual mode will home everything. Manual mode here is just to allow the operator to get the machine out of a problem that some failure or the material has created. It wont be used frequently but had to be predictable. Homing everything on error was not desired.
  6. ONS against bits vs JSR

    Well, thats gonna change my thinking.
  7. ONS against bits vs JSR

    I could then manipulate those bits in another part of the program without them being affected by the OTL?
  8. ONS against bits vs JSR

    THAT... is a great answer. Makes complete sense. Thank you Thank you both.
  9. ONS against bits vs JSR

    Thats the piece I missed. I was assuming a ONS simpley ignored stuff after it had executed, but I got it now. Heres something interesting too, Dont leave a timer in an unscanned ladder. the .ACC winds up with all sorts of crazy numbers. I know there is a KB article about scanning a timer at least every 90 minutes or something like that, but this craziness was immediate.
  10. Using Compactlogix... I have a Tag of String[50] that timestamps a series of events. I need to create a 20 element history of these Arrays so I created a tag like StringHistory[50,20] The FFL/FFU instructions look more like a stack, pushed and popped as needed. I just need to push, never pop. Using that analogy, what I need is to push stuff in the top and let it fall out the bottom i.e. push something into element 0 and the previous contents get pushed to element 1 etc. This will give me a 20 event history of these timestamps. Is there a command I am not seeing that will do this or will i need to do this in a for/next type of loop ?.
  11. String Array History

    I got this done with a loop and COP. it works well enough for my needs. Thanks for the feedback guys.
  12. I am trying an experiment. I have this FLL working in ladder but wanted to try ST because I want things to go in a certain sequence. This is practically verbatim from the example text, yet it returns the error" Assignment to Tag of specified type invalid " SIZE(TimeStamp[0],0,Length); FOR Position2 := 0 TO Length-1 DO TimeStamp[Position2] := 0; END_FOR; Variables are DINTS TimeStamp[x] is a String Array I get the same error when I replace the "0" (Zero) with a string Tag
  13. ST Syntax Error

    I agree with that. These will likely ONLY be seen by me during development and troubleshooting. I do have an FLL that clears the single array. I just need to first copy that array to a 2 dimesional array for a 20 sequence history. Seems that rather than POPing onto a stack, using a pointer is the cleanest way to accomplish this. I went to ST because I wanted to make sure the "Copy" occurred before the "clear". The serial nature of TS lended itself to that end. IF a COP provided a "done" bit, that would be a great help...
  14. String Array History

    A Circular Queue sounds like what I am after. Its a lot of data moving around, This might wind up being a bad idea because of all the processing involved, but it only happens once every couple days. I need to give it a shot.
  15. String Array History

    Thanks, doesn't have to work, I just need to see the idea.
  16. ST Syntax Error

    That is what I came away thinking, but since (ST docs are sparse and...) the ladder FLL successfully used a 0 with the proper result in the destination, and further reinforced by the the source and destination being the same data type, I assumed that the ST version would work fine also. Silly me. I'll be back into this in about 2 hours. I'll give both solutions a try. Someday I'll stop trying to use ST. :) Thanks
  17. String Array History

    Can you show me that?
  18. String Array History

    MOVW ? Can't locate that instruction. Not in Compactlogix (v17) perhaps?
  19. Not that this helps your original problem, but as a side note, the install goes MUCH faster if you copy the installation disk to the hard drive first and install from there. It's more than just the speed of the reader, the dvd install takes WAY longer than it should as you well know.
  20. Allen Bradley Training Workstations

    Chris, What model L1 has the same I/O as a 1400 BXBA for the same cost? I have a design started with 3 1400's because the price per IO point is better with the 1400... or at least thats what I thought. You disagree? I would prefer to use Logix 5K all around so if you are right I will certainly revisit them.
  21. I have done this myself over a serial connection but not over ethernet. How did you do this over ethernet? It was ugly under serial comms so I can only imagine . . .
  22. Arrays

    Have you ever seen an application that used a 3D array? I would really like to see an application that uses the third dimension.
  23. How does a POINT I / O?

    Would you consider these point I/O an economical alternative to another rack of modules or just a smaller package which is just as costly?
  24. How To Clear Boolean Array?

    If it makes you feel better, a bool and a DINT both use 32 bits of memory. So you are being more efficient !
  25. How To Clear Boolean Array?

    Would it not be possible to convert the 32 bit bool array into a single DINT and change the address of the bits to DINT.X ? Then you could just write a zero to the DINT and be done.