Jump to content
OMRON Forums

Use ACC24MA as IO Node due to multiple ACC85M modules


MattReid
 Share

Recommended Posts

Hi,

We are using a ACC24M2A as 4 analog output channels through MACRO communication. We currently putting together a system that is using 8 ACC85M modules, 1 ACC65M and 1 ACC24M2A and the MACRO master is a Geobrick controller. I just realized a problem.

1. MACRO ring can only support 8 servos nodes. Can ACC24M2A be used as an IO node if I am only using the DACs as an analog output and don't care about the encoders,flags. Would I need to do anything special to set this up?

2. If not, is there an io option for precise analog outputs?

 

[side note]

3. Why do I keep getting AEE0 error on the Yaskaws/ACC85M display. I have tried multiple different setups and they all end in this communication error between the yaskawa servopak and the acc85m module. Looking at the MACRO Status, the amp init fault bit is on, the node requested shutdown due to fault bit is on. Last attempt was with everything reset and only the Geobrick and 1 ACC85M attached and set it up with the 2kHz/10kHz default clock settings

ThanksMatt

Link to comment
Share on other sites

  • Replies 7
  • Created
  • Last Reply

Top Posters In This Topic

Matt,

 

1. you don't need to do anything special to use the DACs on ACC-24M2A. Enable 2 consecutive servo nodes on the master and on ACC-24M2A. Point two M-variables per servo nodes pointing to upper 16 bits of register 0 and register 1 of each servo nodes. Writing to these registers will change the DAC output on ACC-24M2A. Please make sure no motor servo is overwriting your values, since motor registers in Turbo PMAC2 Ultralite are pointing to servo registers by default and if the motor is activated (Ixx00=1 and/or Ixx01=1) then servo and phase routines will write zero command to these registers.

 

2. Since the answer for the first one was yes, I'll skip this one.

 

3. When using a Yaskawa Sigma II or Sigma V drive with ACC-82M or ACC-85M, the MACRO ring should be at a certain frequency.

If the Sigma II + ACC-82M is used, the phase clock should be a multiplication of 2kHz on all devices, including the ring controller. The servo loop should be a multiplication of 2kHz too. This means using I6802 on the Ultralite and MI998 on ACC-82M, a servo loop of 2kHz has to be setup on ACC-82M. Here are two examples:

 

// This code is suitable for systems where no Direct PWM Control drive is used or 5kHz PWM frequency is acceptable
// On Ultralite 
I6800=5895       // 5kHz PWM frequency and 10kHz MaxPhase frequency
I6801=0           // 10kHz phase (MACRO ring update period)
I6802=4           // 2 kHz phase for the whole system
I10 = 4193067   // time scale factor for CPU

MI992=5895      // 10 khz Maxphase clock
MI997=0           // 10 kHz Phase clock 
MI998=4           // 2 kHz Servo clock

 

// This code is suitable for systems where higher PWM frequency is required for Direct PWM Control drives
// On Ultralite 
I6800=2456       // 12kHz PWM frequency and 24kHz MaxPhase frequency
I6801=0           // 24kHz phase (MACRO ring update period)
I6802=4           // 4 kHz phase for the whole system
I10 = 1747556   // time scale factor for CPU

MI992=2456      // 24 khz Maxphase clock
MI997=0           // 24 kHz Phase clock 
MI998=11         // 2 kHz local Servo clock

Ixx60=1            // servo extension for Yaskawa Sigma II motors (servo calculation at 2kHz compared to 4kHz system servo rate)

 

If the Sigma V + ACC-85M is used, the phase clock should be a multiplication of 2kHz on all devices, including the ring controller. The servo loop should be a multiplication of 2kHz too. This means using I6802 on the Ultralite and MI998 on ACC-85M, a servo loop of 2, 4 or 8kHz has to be setup on ACC-85M. Here are two examples:

 

// This code is suitable for systems where no Direct PWM Control drive is used or 5kHz PWM frequency is acceptable
// On Ultralite 
I6800=5895       // 5kHz PWM frequency and 10kHz MaxPhase frequency
I6801=0           // 10kHz phase (MACRO ring update period)
I6802=4           // 2 kHz phase for the whole system
I10 = 4193067   // time scale factor for CPU

MI992=5000      // 10 khz Maxphase clock
MI997=0           // 10 kHz Phase clock 
MI998=4           // 2 kHz Servo clock

 

// This code is suitable for systems where higher PWM frequency is required for Direct PWM Control drives
// On Ultralite 
I6800=2456       // 12kHz PWM frequency and 24kHz MaxPhase frequency
I6801=0           // 24kHz phase (MACRO ring update period)
I6802=2           // 8 kHz phase for the whole system
I10 = 1747556   // time scale factor for CPU

MI992=2083      // 24 khz Maxphase clock
MI997=0           // 24 kHz Phase clock 
MI998=11         // 2 kHz local Servo clock

Ixx60=3            // servo extension for Yaskawa Sigma II motors (servo calculation at 2kHz compared to 4kHz system servo rate)

 

Also, make sure the MACRO ring error check settings are correct. You can double check your settings using the following spreadsheet: http://forums.deltatau.com/filedepot/download.php?f=Turbo%20PMAC/Tools/MACRO%20Ring%20Error%20Check%20Settings/MACRO%20Ring%20Error%20Check%20Settings.xls [FILE REMOVED]

Link to comment
Share on other sites

Thanks Sina,

 

1. My problem with this is that I am using a Geobrick with 8 ACC85Ms. Therefore I have 1 MACRO IC which can only control 8 Servo nodes but we wanted to use the DAC output from the ACC24M2A and we don't have any servo nodes available. Also, we need to enable 4 of the IO nodes on the ACC85Ms and we have a ACC65M on the ring.

 

Therefore we only have 1 IO node left for the ACC24M2A.

 

My current solution is that I have the ACC24M2A bound to Node 3

I6841=$FC008
MS3,MI996=$F4008
I70=$0 - Disable Aux Flags

I tried pointing

M5000->X:$079424,8,16,S
M5001->X:$079425,8,16,S
M5002->X:$079426,8,16,S
M5003->X:$079427,8,16,S

None of these control the DAC output so something is not lining up, but if I write directly to MS3,MI932=value, this seems to work.

 

I am about to connect everything together so I do not know if assigning the ACC24M2A to node 3 will mess up communication down stream.

 

2. My problem for the ACC85M setup was that I was using only the ACC85M manual and not looking at the Geobrick MACRO setup. The problem here seemed to be not setting up I6800=I7000=I7100 and having I19=7007 so the master clock was SERVO IC0 and I6800 was not a multiple of it. Setting all the clocks the same and setting I19=6807 fixed my problems.

 

MAtt

Link to comment
Share on other sites

Matt,

 

1. Unfortunately the automatic copy of data from node registers to DACs on ACC-24M2A is only possible on Servo Nodes and not IO nodes. We have the following solutions:

a. Use MS3,MI932=value approach to write data to the DAC.

b. Use the Analog output option on ACC-65M.

c. Use a custom firmware for ACC-24M2A which allows automatic data transfer from either servo or IO nodes. This solution requires additional time for firmware development and backward compatibility tests.

 

2. Good to know the problem was resolved.

Link to comment
Share on other sites

  • 4 months later...

Hi Sina,

Can you call the MACRO SLAVE WRITE command inside PLC0?

 

MSW3,MI932,P905

 

Thanks

Matt

 

Matt,

 

1. Unfortunately the automatic copy of data from node registers to DACs on ACC-24M2A is only possible on Servo Nodes and not IO nodes. We have the following solutions:

a. Use MS3,MI932=value approach to write data to the DAC.

b. Use the Analog output option on ACC-65M.

c. Use a custom firmware for ACC-24M2A which allows automatic data transfer from either servo or IO nodes. This solution requires additional time for firmware development and backward compatibility tests.

 

2. Good to know the problem was resolved.

Link to comment
Share on other sites

No, it does not seem to be allowed in foreground (PLC 0 and PLCC 0) or compiled (PLCC 1 .. 31) PLCs.

You should be able to call it from any background PLC (PLC 1 .. 31). This should be fast enough for a general purpose analog output. If not, let us know, and we will try to figure something out for you.

Link to comment
Share on other sites

Yeah, it does not seem to be fast enough. We would like to be able to pulse that analog output at 20Hz accurately. Therefore I probably need an update rate of 1msec which I can obtain easily with PLC0. With my current setup the background PLCs are only being executed every 25-30ms.

 

I also tried using the analog output off the ACC65M I have on the system but the slew between 2 set points is too slow for our application. We were measuring this to be about 3ms where we need 0.2-0.4ms.

 

Ideally the analog output off the ACC24M-2A is fine but I need to be able to update it in PLC0

 

Any other ideas?

 

Matt

Link to comment
Share on other sites

  • 4 weeks later...

This was resolved with the following solution:

Establish MACRO ASCII communication with the ACC-24M2A (e.g. issue MACSTA2 in the terminal window if MI11=2 assuming that your ACC-65M is station #1), and download the following:

I996=$FC040 ; Enable Node 6

MM1->Y:$C092,0,24,S ; Local DACA Register

MM2->X:$C0A8,0,24,S ; MACRO Node 6 Reg 1 Address

MP1=0

 

Open MACPLCC Clear

MM1=MM2 ; Write MM2 to DAC output

MP1=MP1+1 ; Debugging

Close

 

Issue CTRL^T to exit ASCII mode.

 

On the Ring controller (Geo Brick Drive) side:

I6841 = I6841&$40 ; Force Enable I/O Node 6

M1->X:$78428,0,24,S ; Ring Controller I/O node 6 Register 1

 

MS6,MI15=1 ; Enable MACRO Station PLC (need to initialize every power up or reset)

 

The DAC output data is in the upper 16 bits, so writing (from the ring controller) to M1 should result in the following:

M1 = 32767 * 256 ; +10V

M1 = -32767 * 256 ; -10V

 

This can be written in the RTI so I was able to get the performance I needed.

 

Thanks Richard

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share


×
×
  • Create New...