Search the Community

Showing results for tags '#shift'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Found 5 results

  1. I'm writing a PLC program (Q Series Mitsubishi PLC, GXWORKS 2 Software) for a package sorting machine. The logic of the machine is the following:   Packages are induced in the conveyor. A barcode reader scanner gets the package barcode. Barcode is send to our SMS (sorting management system), it calcules the exit and send it back to the PLC. Package travels to the calculed exit, then is derived into the chute.   The tracking of the products is done by an encoder and a shift register. This means that every memory address represents a physical position in the conveyor. Then, the shift register move the bits representing the packages along the memory buffer, till the bit arrives to an address that represents an exit, so the package can be derived.   My problem is not the tracking of the product, but the product ID tracking:   When a package enters in the conveyor, an ID is set for that product (1,2,...,n). The idea is that this ID is used to track the state of that package, for example if the package was derived in the correct exit, if it has a damaged barcode, etc.   My question is, how can I track this ID along in an efficient way. I was thinking in use the same shift register not moving a sole bit, but moving a larger number for example |1|0000011|, where the first bit acts like a flag that represents the existence of a product and the rest of the numbers is the product ID. When the flag gets to the exit address I can substract 10000011 - 10000000 = 00000011, to get the product ID.   Is any more efficient way to do this ?
  2. Is it possible shift data array. I have Array_ret: ARRAY[0..10] OF test; and TYPE tests : STRUCT TinFoil: BOOL; InFrame: BOOL; END_STRUCT END_TYPE I want shift all one time time Array_rest[0] information to Array_rest[1]. Array_rest[1] to Array_rest[2] and... Is it possible?
  3. floating point shift register

    hi all, i'm currently trying to shift register some data in the floating point (double word) format, just for an example i,m using a 0-20mA 0-40 bar pressure sensor to gather information from a can filler and want to log the data for lets say the previous 20 cans. i understand how the shift register works and can get it to work with single word just fine, im using floating point to make my life a bit easier by using sleepy wombat's scaling function block, i need decimal points as i will be expecting reading around 4.5 or so bar and expected to be within .2 tolerence this will then have to displayed on a HMI, which i assume will be easy enough
  4. bit shift register

    Hello everyone. I m new on site. I need to an example program (done and running properly) that bit shift register. I will design a bottle filling machine. I dont know how to use these logics.  hardware dosent matter.   thanks for your interest
  5. Encoder Interrupt Help

    Hey guys, I am working on an application that tracks irregularly spaced PET bottles on a conveyor line and then blows them into boxes waiting on the side of the conveyor. I believe I have working logic, but I am having issues with the encoder at operating conveyor speeds. I believe the best logic for my project is to use a photoeye to detect the presence of a bottle (a one-shot makes sure it is only detected once), and then "store" the "presence" of the bottle in a binary file using an encoder pulse to trigger a BSL function. Using this logic, the bits in the file are analogous to a real, physical location on the conveyor, and I can just monitor specific addresses in the file where my real-world air nozzles are located. My current problem is that as my conveyor speeds increase, the PLC begins to miss pulses from the encoder. During my initial set-up, I took data at very slow speeds to experimentally determine how many pulses were between the photoeye and each air valve, but when I run at full speed, I only detect about 70% of the pulses detected at slow speeds. Not good. Althought the "skipped pulses" seem to be proportional to the detected pulses at slow speeds. I am using an encoder that only runs at 60ppr, so I would think that my PLC (MicroLogix 1200) can handle this...I did the math before I purchased the encoder and thought I found the pulses to be infrequent enough that the PLC wouldn't miss any. My 2 trains of thought: 1) I need to use an interrupt for each encoder pulse since they occur so quickly (utilizing an EII), which I am not fluent in. I can find instructions to intitially configure the EII file, but I am unsure of how you are supposed to correctly set up the ladder logic to utilize the interrupt. 2) There is an electrical issue. The encoder I bought uses pull-up resistors. The resistor value I selected only drops the detected voltage to 14V from 24V. Is it possible that the encoder does not spend enough time in the "off" state at high speeds because of this high voltage value? OR does the usage of a resistor introduce a time-lag into the system which further complicates the issue? Any help would be appreciated, Thanks!