Hallo,
following configuration:
1. PXI frame PXI1000B
2. Processor PXI8156B
3.Cards 6070E Multi IO
6711 Analog Out
6602 Timing IO
6527 Digital IO
8461 CAN
8460 CAN Low speed
LabVIEW 6.1RT
DAQ 6.9.3
We want tu use the 6602 for generation of three 120� phase-shifted
sinusoidal PWM. Sine frequency should be up to 100Hz. Duty cycle updates
should be every 50us, PWM frequency should be 40KHz. Now we try to find
out, what maximum duty cycle update rate we can achieve with that system.
Handling three channels, top score is approx 700us. We are dissapointed
of that result, we feel (just a feeling), that this could be much faster
but we didn't find the main "bottleneck" yet. What we did so far to
improve performance.
1. Download the PWM Core VI to PXI and start with VI-Server, so there is
no UI anymore. That did some substantial benefit.
2. We tried both approaches, build up an one period array with the duty
cycles and used auto indexing. And we tried to compute new values within
the update loop (with formula node), no big difference.
3. We use the DAQ VIs Set Attribute to control the On and Off time of the
6602. We stripped them off the VIs and used the library call nodes
directly to save overhead, no significant difference.
4. We tried different priorities and execution threads of the PWM core
VI, no big difference except that the system doesn't respond anymore.
5. We switched off Event logging on the RT machine, no difference.
We tried just one channel instead of three and the update rate was approx
three times faster, so it is mainly a question of communicating and
updating the counters, there is almost linear dependance.
Now the questions:
1. At the moment we don't use any of the inserted cards except the 6602.
Could it be worth to de-activate all the unused cards, do they eat up
processor time?
2. We found very little information on that topic, e.g. disabling USB on
the processor. Could that be the bottleneck?
3. It seems that the library calls eat up most of the time of the update
loop. Is there another way to communicate with the 6602 card, maybe with
direct memory or register based access?
4. Is LabVIEW not suitable for that task, maybe we should program the PXI
in C or even assembler (UUaahhgghh :-(( ).
5. Is there a better hardware solution to generate PWM than the 6602?
6. If question 3 or 4 are yes, where can we get really detailled
information, programming manuals and so on for that, cause that seems to
be really challenging!
Thank you for your hints and suggestions.
Oliver Friedrich