MattReid Posted November 21, 2012 Share Posted November 21, 2012 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 More sharing options...
Sina.Sattari Posted November 28, 2012 Share Posted November 28, 2012 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 More sharing options...
MattReid Posted November 28, 2012 Author Share Posted November 28, 2012 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 More sharing options...
Sina.Sattari Posted November 29, 2012 Share Posted November 29, 2012 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 More sharing options...
MattReid Posted April 24, 2013 Author Share Posted April 24, 2013 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 More sharing options...
Richard Naddaf Posted April 24, 2013 Share Posted April 24, 2013 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 More sharing options...
MattReid Posted May 1, 2013 Author Share Posted May 1, 2013 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 More sharing options...
MattReid Posted May 28, 2013 Author Share Posted May 28, 2013 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 More sharing options...
Recommended Posts