Jump to content
OMRON Forums

TheTruth

Members
  • Posts

    8
  • Joined

  • Last visited

Everything posted by TheTruth

  1. The proper way to add a time delay in a plc is to use our "countdown registers" and scale them into msec intervals. The countdown decrement every servo cycle. So if you have 2.25KHz servo rate then you would set the register to 2250 to add a one second delay. Using this method allows the uner to add delays in the plc without jumping back and forth from motion programs and plc programs. It also keeps you program logic readable for anyone who has to look or modify your code. Further below, I have added an example of using the plc countdown timers. But your main issue to use the IO mirror word technique that we show in the manual. This allows you to build your output word based on your logic and then in one shot, you write to the MACRO output word. If your wanted to process the examples you gave earlier (M3300, M3301,M3302) you would need the mirror word to point to the equivalent bits. M4300->Y:$10F0,8,16 M4330->Y:$10F0,16 M4331->Y:$10F1,17 M4332->Y:$10F2,16 So, in you code, you would process the individual outs as need by your logic, and since they are a subset of M4300, then the code will handle the state of the outputs whether they are on or off when it sets M981=M4300. PMAC PLC TIMER DELAYS Since DWELL and DELAY commands can only be used in motion programs, PMAC countdown timer registers can be used to issue time delays in a PLC program. The units of these count-down timer registers are in servo cycles. These registers are continuously decremented each servo cycle. At the factory default servo cycle rate of 2258.65 Hz, I10 is set to 3713991. Servo Cycles/msec = 8388608/I10 = 2.25865 cycles/msec = 2258.65 Hz TURBO PMAC Countdown Timers Turbo PMAC’s have 32 countdown timers which are defined by coordinate system I-variables (each coordinate system has two, Isx11 and Isx12) Variable Timer C.S. Variable Timer C.S. I5111 1 1 I5911 17 9 I5112 2 1 I5912 18 9 I5211 3 2 I6011 18 10 I5212 4 2 I6012 20 10 I5311 5 3 I6111 21 11 I5312 6 3 I6112 22 11 I5411 7 4 I6211 23 12 I5412 8 4 I6212 24 12 I5511 9 5 I6311 25 13 I5512 10 5 I6312 26 13 I5611 11 6 I6411 27 14 I5612 12 6 I6412 28 14 I5711 13 7 I6511 29 15 I5712 14 7 I6512 30 15 I5811 15 8 I6611 31 16 I5812 16 8 I6612 32 16 Example: If you wanted a 1 second delay in a PLC program for Turbo PMAC open plc 1 clear . I5111=(1000)*8388608/(I10) ;use C.S. 1 countdown timer while (I5111>0) endwhile . close
  2. This will occur if customer is writing to outputs individually as opposed to writing once to the entire 24-bit word or 16-bit word in once shot. Example: M10->X:$78420,0 M11->X:$78420,1 M12->X:$78420,2, if all set to zero intially. If you write M10=1, M11=1, M12=1 in sequence, you might get M10=0 M11=1 m12=1. The problem is that m10 did not get set correctly. The reason it occurs is because the MACRO CPU firmware will perform an entire read/modify write to the entire 24 or16 bit word for each output bit. For example, if you write M10=1, you are really writing to the entire 24 or 16 bit word and it takes time for the MACRO CPU to perform this task. The proper way to do this is to write to the output with one write statement instead of 16 or 24 (or 3 for that matter) simultaneously. The reason you put the delay in between each output in your example is to allow the outputs to be processed properly on a bit by bit basis... the example in the manual builds the output word bit by bit and then with one write statement, you will write to the entire node address instead of 24 individual writes. #define Inputs M4000 ; M-Variable pointer to hold 24-bit inputs #define Outputs M4001 ; M-Variable pointer to hold 24-bit outputs Inputs->X:$78420,0,24,U ; I/O Node 2 24-bit register (inputs) Outputs->X:$78424,0,24,U ; I/O Node 3 24-bit register (outputs) #define InMirror M4002 ; M-Variable pointer to hold inputs mirror word #define OutMirror M4003 ; M-Variable pointer to hold outputs mirror word #define OutState M4004 ; M-Variable pointer to latch current outputs state InMirror->X:$10F0,0,24,U ; Reserve unused memory register (to hold inputs) OutMirror->Y:$10F0,0,24,U ; Reserve unused memory register (to hold outputs) OutState->* ; Self referenced OutState=0 ; Initialize =0 on download Open plc 1 clear If (InMirror!=Inputs) ; Inputs state changed? InMirror=Inputs ; Update inputs mirror word to match current state EndIf ; If (OutState!=OutMirror) ; Outputs state changed? OutState=OutMirror ; Update state of outputs mirror word Outputs=OutMirror ; Update outputs EndIf Close
  3. It may be too late in your development but there is a Serial Port option for the Turbo Brick Controller. If you had that option you could send commands from the PMAC to your host device...
  4. Big mistake... Turbo has 8192 P and Q vars so that buys you alittle more time...about 45.51 minutes not 5.68... Sorry.
  5. Like anything with PMAC there are many ways to perform data logging. For you application it seems we need to know how much time is required between when you machine is running and when you can plug a laptop or pc into the pmac to upload the data. So far, you have not specified that. You can store data into variables but you are limited to 1024 P and 1024 Q variables. If you are storing 6 registers at once per second that limits you to about 5.68 minutes of data assuming you are not using any P or Q variables. You can also define user memory and store to those locations. You can then use simple GetResponses to load the data into data arrays using vb.net. Another way to store data is to use the PMAC Data gather feature. The data gather feature using the unused user memory and is gathered in real time. The amount of user memory can be found by using the SIZE command. Lets say you have 30000 PMAC memory locations available in user memory. That means you have enough memory for 1.38 hours (6samples/sec). The data can then be uploaded using PMAC Plot or you can write your own routines to place the data into arrays to be processed later. PMAC Plot will also export the data tab delimited text files. The more user memory available the more data you can store. CPU End of User memory *Size Command CPU Command 5C0 $107FF 26623 56303 5E0 $1C000 73727 56311 5F0 $23FFF 106495 56321 5x3 $3FFFF 221183 56303, 56311 or 56321 (5DC3, 5E3, or 5F3) * Data shown at factory defaults with no programs. Data represents one X/Y memory location (48-bit or 6 bytes). Example for 5E0: SIZE =$1C000-$A000 = $11FFF = 73727 decimal I hope this helps.
  6. Gigi, The ACC-U8 (or any Umac Backplane card) would be covered as a CE certified product covered by the certificate found in the UMAC Sytem manual. The ACC-66E does not have a certifcate but its circuitry is identical to the ACC-65E so I do not see any problems with it causing any issues when you certify your machine. I believe the ACC-66E was released after we performed our official CE certification tests. The Geo MACRO drive has not been CE certified by Delta Tau. Use standard CE machine wiring techniques (CE filters, shielding to GND, etc..) for power and motor/encoder/IO wiring and you should be AOK.
×
×
  • Create New...