MrPLC Member
  • Content count

  • Joined

  • Last visited

Everything posted by arcotangente

  1. Structured text syntax error

    I'm writing a Function Block in Structured text language. I'm only testing, so the function doesn't do what it has to do. However, my first step is make a for loop inside a while loop, this is for increment the value of a index register while a condition is true.   My code so far:   WHILE X100 DO;          FOR ID_INDEX := 0 TO 99 BY 1 ID_INDEX;         ID_INDEX := ID_INDEX + 1;     END_FOR;                     END_WHILE;     X100 is my boolean for general start. ID_INDEX is the index for a array that I want to manipulate.   The errors that GXWORKS2 tells me are the following:   -  Cannot find 'END_WHILE' in a statement. Please check the error display statement or the preceding one.    C8006 -  Parser error.    C1200   This is the first time that I write code on Mitsubishi structured text, so I based on the examples that I saw on the structured text manual.   
  2. 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 ?
  3. Structured text syntax error

    Thank you !!
  4. Product ID tracking in a sorter machine

    I think I understand... for example I can track the position with my shift register + my encoder, when the package enters the conveyor I add 1 entry to my array of ID's. In every pulse I move my bit flag in the shift register and also the item of the array, till the flag gets to the exit address. Then I have to find the array entry that had move "n" slots, where "n" is the number of pulses of the encoder, that is also the memory addresses that my bit flag has shift. I understand it correctly ? I'm gonna try it now !